@a-cube-io/ereceipts-js-sdk 2.0.8 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -7
- package/dist/index.cjs.js +218 -2654
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +24 -250
- package/dist/index.esm.js +219 -2650
- package/dist/index.esm.js.map +1 -1
- package/dist/index.native.js +219 -2650
- package/dist/index.native.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../node_modules/rxjs/dist/esm5/internal/Subscription.js","../node_modules/rxjs/dist/esm5/internal/config.js","../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../node_modules/rxjs/dist/esm5/internal/util/noop.js","../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../node_modules/rxjs/dist/esm5/internal/util/identity.js","../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../node_modules/rxjs/dist/esm5/internal/Observable.js","../node_modules/rxjs/dist/esm5/internal/util/lift.js","../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../node_modules/rxjs/dist/esm5/internal/Subject.js","../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../node_modules/rxjs/dist/esm5/internal/Scheduler.js","../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../node_modules/rxjs/dist/esm5/internal/observable/empty.js","../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../node_modules/rxjs/dist/esm5/internal/util/args.js","../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../node_modules/rxjs/dist/esm5/internal/observable/from.js","../node_modules/rxjs/dist/esm5/internal/util/isDate.js","../node_modules/rxjs/dist/esm5/internal/operators/map.js","../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js","../node_modules/rxjs/dist/esm5/internal/util/createObject.js","../node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../node_modules/rxjs/dist/esm5/internal/observable/concat.js","../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../node_modules/rxjs/dist/esm5/internal/observable/timer.js","../node_modules/rxjs/dist/esm5/internal/observable/interval.js","../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","../node_modules/rxjs/dist/esm5/internal/operators/startWith.js","../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","../src/domain/services/jwt-parser.service.ts","../src/shared/utils/object.ts","../src/shared/utils/platform-detector.ts","../node_modules/picocolors/picocolors.browser.js","../src/shared/utils/logger.ts","../src/shared/utils/formatters.ts","../src/application/services/authentication.service.ts","../src/application/services/certificate.service.ts","../src/domain/value-objects/vat-code.vo.ts","../src/domain/value-objects/role.vo.ts","../src/shared/config/config-manager.ts","../src/shared/validation/api/receipts.ts","../src/shared/validation/api/cashiers.ts","../src/shared/validation/api/point-of-sales.ts","../src/shared/validation/api/cash-registers.ts","../src/shared/validation/api/merchants.ts","../src/shared/validation/api/pems.ts","../src/shared/validation/api/suppliers.ts","../src/shared/validation/api/journals.ts","../src/shared/validation/api/daily-reports.ts","../src/shared/validation/api/notifications.ts","../src/shared/validation/api/telemetry.ts","../src/shared/validation/api/index.ts","../src/shared/types/sdk.types.ts","../src/infrastructure/driven/http/auth-strategy.ts","../src/infrastructure/driven/http/jwt-auth.handler.ts","../src/infrastructure/driven/http/mtls-auth.handler.ts","../src/domain/entities/offline.entity.ts","../src/infrastructure/driven/offline/queue.ts","../src/infrastructure/driven/offline/sync-manager.ts","../src/infrastructure/driven/offline/offline-manager.ts","../src/infrastructure/driven/cache/compression.adapter.ts","../src/infrastructure/driven/platforms/react-native/cache.ts","../node_modules/idb/build/index.js","../src/infrastructure/driven/platforms/web/cache.ts","../src/infrastructure/loaders/cache-loader.ts","../src/infrastructure/driven/platforms/shared/base-storage.mixin.ts","../src/infrastructure/driven/platforms/shared/network-base.ts","../src/infrastructure/driven/platforms/node/storage.ts","../src/infrastructure/driven/platforms/react-native/storage.ts","../src/infrastructure/driven/platforms/web/storage.ts","../src/infrastructure/loaders/storage-loader.ts","../src/infrastructure/driven/platforms/node/network.ts","../src/infrastructure/driven/platforms/react-native/network.ts","../src/infrastructure/driven/platforms/web/network.ts","../src/infrastructure/loaders/network-loader.ts","../src/domain/errors/mtls.error.ts","../src/domain/services/certificate-validator.service.ts","../src/infrastructure/driven/platforms/react-native/mtls.ts","../src/infrastructure/driven/platforms/web/mtls.ts","../src/infrastructure/loaders/mtls-loader.ts","../src/infrastructure/loaders/adapter-loader.ts","../src/infrastructure/driving/sdk/di-container.ts","../src/application/dto/receipt.dto.ts","../src/infrastructure/driven/api/receipt.repository.impl.ts","../src/application/dto/merchant.dto.ts","../src/infrastructure/driven/api/merchant.repository.impl.ts","../src/application/dto/cashier.dto.ts","../src/infrastructure/driven/api/cashier.repository.impl.ts","../src/application/dto/cash-register.dto.ts","../src/infrastructure/driven/api/cash-register.repository.impl.ts","../src/application/dto/point-of-sale.dto.ts","../src/infrastructure/driven/api/point-of-sale.repository.impl.ts","../src/application/dto/supplier.dto.ts","../src/infrastructure/driven/api/supplier.repository.impl.ts","../src/application/dto/pem.dto.ts","../src/infrastructure/driven/api/pem.repository.impl.ts","../src/application/dto/daily-report.dto.ts","../src/infrastructure/driven/api/daily-report.repository.impl.ts","../src/application/dto/journal.dto.ts","../src/infrastructure/driven/api/journal.repository.impl.ts","../src/domain/entities/notification.entity.ts","../src/application/dto/notification.dto.ts","../src/infrastructure/driven/api/notification.repository.impl.ts","../src/application/dto/telemetry.dto.ts","../src/infrastructure/driven/api/telemetry.repository.impl.ts","../src/infrastructure/driven/cache/cache-key-generator.ts","../src/infrastructure/driven/cache/caching-http-decorator.ts","../src/infrastructure/driven/http/axios-http.adapter.ts","../src/infrastructure/driven/storage/token-storage.adapter.ts","../src/infrastructure/driving/sdk/sdk-factory.ts","../src/infrastructure/driving/sdk/acube-sdk.ts","../src/application/services/app-state.service.ts","../src/application/services/notification.service.ts","../src/application/services/telemetry.service.ts","../src/infrastructure/driving/sdk/sdk-manager.ts","../src/domain/entities/receipt.entity.ts","../src/infrastructure/driven/http/cache-handler.ts","../src/infrastructure/driven/http/error-transformer.ts","../src/infrastructure/driven/http/error-classifier.ts","../src/application/ports/driven/mtls.port.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","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","var isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n if (isArray(first_1)) {\n return { args: first_1, keys: null };\n }\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) { return first_1[key]; }),\n keys: keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","export function createObject(keys, values) {\n return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\n//# sourceMappingURL=createObject.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var resultSelector = popResultSelector(args);\n var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n if (observables.length === 0) {\n return from([], scheduler);\n }\n var result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n function (values) { return createObject(keys, values); }\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) { valueTransform = identity; }\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n//# sourceMappingURL=combineLatest.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period, scheduler) {\n if (period === void 0) { period = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n//# sourceMappingURL=interval.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n//# sourceMappingURL=debounceTime.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n//# sourceMappingURL=pairwise.js.map","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var scheduler = popScheduler(values);\n return operate(function (source, subscriber) {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=startWith.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate(function (source, subscriber) {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=takeUntil.js.map","import { UserRole } from '@/domain/value-objects';\n\nexport interface JwtPayload {\n uid: number;\n username: string;\n roles: Record<string, string[]>;\n fid: string;\n pid: string | null;\n exp: number;\n iat: number;\n}\n\nexport function parseJwt(token: string): JwtPayload {\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw new Error('Invalid JWT format');\n }\n const payload = parts[1];\n if (!payload) {\n throw new Error('JWT missing payload');\n }\n const padded = payload + '==='.slice(0, (4 - (payload.length % 4)) % 4);\n return JSON.parse(atob(padded));\n}\n\nexport function isTokenExpired(payload: JwtPayload): boolean {\n return Date.now() >= payload.exp * 1000 - 300000;\n}\n\nexport function extractRoles(jwtRoles: Record<string, string[]>): UserRole[] {\n const allRoles: UserRole[] = [];\n for (const context of Object.values(jwtRoles)) {\n for (const role of context) {\n if (role === 'ROLE_SUPPLIER' || role === 'ROLE_CASHIER' || role === 'ROLE_MERCHANT') {\n if (!allRoles.includes(role)) {\n allRoles.push(role);\n }\n }\n }\n }\n return allRoles;\n}\n","export type Cleaned<T> = T extends (infer U)[]\n ? Cleaned<U>[]\n : T extends object\n ? {\n [K in keyof T as T[K] extends null | undefined | '' ? never : K]: Cleaned<T[K]>;\n }\n : T;\n\nexport function clearObject<T>(input: T): Cleaned<T> {\n if (input === null || input === undefined || input === '') {\n return undefined as unknown as Cleaned<T>;\n }\n\n if (Array.isArray(input)) {\n const cleanedArray = input\n .map((item) => clearObject(item))\n .filter((item): item is NonNullable<typeof item> => item !== undefined);\n return cleanedArray as unknown as Cleaned<T>;\n }\n\n if (typeof input === 'object' && input.constructor === Object) {\n const cleaned: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(input)) {\n const cleanedValue = clearObject(value);\n if (cleanedValue !== undefined) {\n cleaned[key] = cleanedValue;\n }\n }\n return cleaned as Cleaned<T>;\n }\n\n return input as Cleaned<T>;\n}\n\nexport type CleanedShallow<T> = {\n [K in keyof T as T[K] extends null | undefined | '' ? never : K]: T[K];\n};\n\nexport function clearObjectShallow<T extends Record<string, unknown>>(obj: T): CleanedShallow<T> {\n if (!obj || typeof obj !== 'object') {\n return {} as CleanedShallow<T>;\n }\n\n const cleaned: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (value !== null && value !== undefined && value !== '') {\n cleaned[key] = value;\n }\n }\n\n return cleaned as CleanedShallow<T>;\n}\n\nexport function isEmpty(value: unknown): boolean {\n return value === null || value === undefined || value === '';\n}\n\nexport function hasNonEmptyValues<T extends Record<string, unknown>>(obj: T): boolean {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return Object.values(obj).some((value) => !isEmpty(value));\n}\n","/**\n * Platform detection utilities\n */\n\nexport type Platform = 'web' | 'react-native' | 'node' | 'unknown';\n\nexport interface PlatformInfo {\n platform: Platform;\n isReactNative: boolean;\n isWeb: boolean;\n isNode: boolean;\n isExpo: boolean;\n}\n\n// Type declarations for global variables that may not be available\ndeclare const global: typeof globalThis & {\n __DEV__?: boolean;\n navigator?: { product?: string };\n Expo?: unknown;\n expo?: unknown;\n};\ndeclare const process: { versions?: { node?: string } } | undefined;\ndeclare const window: { document?: unknown; navigator?: unknown } | undefined;\n\n/**\n * Detect the current platform\n */\nexport function detectPlatform(): PlatformInfo {\n // Check for React Native\n if (\n typeof global !== 'undefined' &&\n global.__DEV__ !== undefined &&\n typeof global.navigator !== 'undefined' &&\n global.navigator.product === 'ReactNative'\n ) {\n return {\n platform: 'react-native',\n isReactNative: true,\n isWeb: false,\n isNode: false,\n isExpo: checkExpo(),\n };\n }\n\n // Check for Web/Browser\n if (\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.navigator !== 'undefined'\n ) {\n return {\n platform: 'web',\n isReactNative: false,\n isWeb: true,\n isNode: false,\n isExpo: false,\n };\n }\n\n // Check for Node.js\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n return {\n platform: 'node',\n isReactNative: false,\n isWeb: false,\n isNode: true,\n isExpo: false,\n };\n }\n\n // Unknown platform\n return {\n platform: 'unknown',\n isReactNative: false,\n isWeb: false,\n isNode: false,\n isExpo: false,\n };\n}\n\n/**\n * Check if running in Expo\n */\nfunction checkExpo(): boolean {\n try {\n return (\n typeof global !== 'undefined' &&\n (typeof global.Expo !== 'undefined' || typeof global.expo !== 'undefined')\n );\n } catch {\n return false;\n }\n}\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x,blackBright:x,redBright:x,greenBright:x,yellowBright:x,blueBright:x,magentaBright:x,cyanBright:x,whiteBright:x,bgBlackBright:x,bgRedBright:x,bgGreenBright:x,bgYellowBright:x,bgBlueBright:x,bgMagentaBright:x,bgCyanBright:x,bgWhiteBright:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","import pc from 'picocolors';\n\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\ninterface LogColors {\n prefix: (s: string) => string;\n message: (s: string) => string;\n data: (s: string) => string;\n}\n\nconst levelColors: Record<LogLevel, LogColors> = {\n debug: {\n prefix: pc.gray,\n message: pc.gray,\n data: pc.dim,\n },\n info: {\n prefix: pc.cyan,\n message: pc.white,\n data: pc.dim,\n },\n warn: {\n prefix: pc.yellow,\n message: pc.yellow,\n data: pc.dim,\n },\n error: {\n prefix: pc.red,\n message: pc.red,\n data: pc.dim,\n },\n};\n\nconst levelIcons: Record<LogLevel, string> = {\n debug: '🔍',\n info: 'ℹ️ ',\n warn: '⚠️ ',\n error: '❌',\n};\n\n/**\n * Format data for pretty display in logs\n */\nfunction formatData(data: unknown, level: LogLevel): string {\n if (data === undefined || data === null) {\n return String(data);\n }\n\n // For primitive types, just return as string\n if (typeof data !== 'object') {\n return String(data);\n }\n\n // For Error objects, format nicely\n if (data instanceof Error) {\n return `${data.name}: ${data.message}${data.stack ? `\\n${pc.dim(data.stack)}` : ''}`;\n }\n\n try {\n // Apply level-specific coloring\n const colors = levelColors[level];\n return colors.data(JSON.stringify(data, null, 2));\n } catch {\n // Fallback to JSON.stringify if pretty-format fails\n try {\n return JSON.stringify(data, null, 2);\n } catch {\n return String(data);\n }\n }\n}\n\nclass Logger {\n private enabled = false;\n\n setEnabled(enabled: boolean): void {\n this.enabled = enabled;\n }\n\n isEnabled(): boolean {\n return this.enabled;\n }\n\n debug(prefix: string, message: string, data?: unknown): void {\n if (!this.enabled) return;\n this.log('debug', prefix, message, data);\n }\n\n info(prefix: string, message: string, data?: unknown): void {\n if (!this.enabled) return;\n this.log('info', prefix, message, data);\n }\n\n warn(prefix: string, message: string, data?: unknown): void {\n this.log('warn', prefix, message, data);\n }\n\n error(prefix: string, message: string, data?: unknown): void {\n this.log('error', prefix, message, data);\n }\n\n private log(level: LogLevel, prefix: string, message: string, data?: unknown): void {\n const colors = levelColors[level];\n const icon = levelIcons[level];\n const isoTime = new Date().toISOString().split('T')[1] ?? '';\n const timestamp = pc.dim(isoTime.slice(0, 12));\n const formattedPrefix = colors.prefix(`[${prefix}]`);\n const formattedMessage = colors.message(message);\n\n const consoleMethod =\n level === 'debug'\n ? console.debug\n : level === 'info'\n ? console.info\n : level === 'warn'\n ? console.warn\n : console.error;\n\n const header = `${timestamp} ${icon} ${formattedPrefix} ${formattedMessage}`;\n\n if (data !== undefined) {\n const formattedData = formatData(data, level);\n // Check if data is an object (multi-line) or primitive (single-line)\n const isMultiLine = typeof data === 'object' && data !== null;\n if (isMultiLine) {\n consoleMethod(`${header}\\n${formattedData}`);\n } else {\n consoleMethod(`${header}`, formattedData);\n }\n } else {\n consoleMethod(header);\n }\n }\n}\n\nexport const logger = new Logger();\n\nexport function createPrefixedLogger(prefix: string) {\n return {\n debug: (message: string, data?: unknown) => logger.debug(prefix, message, data),\n info: (message: string, data?: unknown) => logger.info(prefix, message, data),\n warn: (message: string, data?: unknown) => logger.warn(prefix, message, data),\n error: (message: string, data?: unknown) => logger.error(prefix, message, data),\n };\n}\n","/**\n * Formats a numeric string value to have exactly the specified number of decimal places.\n * E.g., \"1\" → \"1.00\", \"10\" → \"10.00\", \"1.5\" → \"1.50\"\n * Returns undefined for undefined input (preserves optional fields).\n *\n * @param value - The string value to format\n * @param decimals - Number of decimal places (default: 2)\n * @returns Formatted string or undefined if input is undefined\n */\nexport function formatDecimal(value: string | undefined, decimals: number = 2): string | undefined {\n if (value === undefined) return undefined;\n const num = parseFloat(value);\n if (isNaN(num)) return value;\n return num.toFixed(decimals);\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\n\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { ITokenStoragePort } from '@/application/ports/driven/token-storage.port';\nimport { JwtPayload, isTokenExpired, parseJwt } from '@/domain/services/jwt-parser.service';\nimport { UserRoles } from '@/domain/value-objects';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('AUTH-SERVICE');\n\nexport interface User {\n id: string;\n email: string;\n username: string;\n roles: UserRoles;\n fid: string;\n pid: string | null;\n expiresAt: number;\n}\n\nexport interface AuthCredentials {\n email: string;\n password: string;\n}\n\nexport interface TokenResponse {\n token: string;\n}\n\nexport interface AuthEvents {\n onAuthError?: (error: Error) => void;\n onUserChanged?: (user: User | null) => void;\n}\n\nexport interface AuthServiceConfig {\n authUrl: string;\n timeout?: number;\n}\n\nexport type AuthState = 'idle' | 'authenticating' | 'authenticated' | 'error';\n\nexport class AuthenticationService {\n private readonly userSubject = new BehaviorSubject<User | null>(null);\n private readonly authStateSubject = new BehaviorSubject<AuthState>('idle');\n private readonly destroy$ = new Subject<void>();\n\n get user$(): Observable<User | null> {\n return this.userSubject.asObservable();\n }\n\n get isAuthenticated$(): Observable<boolean> {\n return this.userSubject.pipe(\n map((user) => user !== null),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n );\n }\n\n get authState$(): Observable<AuthState> {\n return this.authStateSubject.asObservable();\n }\n\n constructor(\n private readonly httpPort: IHttpPort,\n private readonly tokenStorage: ITokenStoragePort,\n private readonly config: AuthServiceConfig,\n private readonly events: AuthEvents = {}\n ) {}\n\n async login(credentials: AuthCredentials): Promise<User> {\n this.authStateSubject.next('authenticating');\n\n log.info('Login attempt', {\n authUrl: this.config.authUrl,\n email: credentials.email,\n });\n\n try {\n const response = await this.httpPort.post<TokenResponse>(`${this.config.authUrl}/login`, {\n email: credentials.email,\n password: credentials.password,\n });\n\n const jwtPayload = parseJwt(response.data.token);\n const expiresAt = jwtPayload.exp * 1000;\n\n log.info('Login successful', {\n authUrl: this.config.authUrl,\n tokenPrefix: response.data.token.substring(0, 30) + '...',\n expiresAt: new Date(expiresAt).toISOString(),\n });\n\n await this.tokenStorage.saveAccessToken(response.data.token, expiresAt);\n\n const user = this.createUserFromPayload(jwtPayload);\n await this.tokenStorage.saveUser(user);\n\n this.userSubject.next(user);\n this.authStateSubject.next('authenticated');\n this.events.onUserChanged?.(user);\n\n return user;\n } catch (error) {\n this.authStateSubject.next('error');\n throw error;\n }\n }\n\n async logout(): Promise<void> {\n await this.tokenStorage.clearTokens();\n this.userSubject.next(null);\n this.authStateSubject.next('idle');\n this.events.onUserChanged?.(null);\n }\n\n async getCurrentUser(): Promise<User | null> {\n // Always verify token is valid before returning user\n const token = await this.tokenStorage.getAccessToken();\n if (!token) {\n // No token - clear any stale user state\n log.debug('getCurrentUser: No token in storage');\n if (this.userSubject.value) {\n this.userSubject.next(null);\n this.authStateSubject.next('idle');\n }\n return null;\n }\n\n log.debug('getCurrentUser: Token found', {\n tokenPrefix: token.substring(0, 30) + '...',\n tokenLength: token.length,\n });\n\n const jwtPayload = parseJwt(token);\n if (isTokenExpired(jwtPayload)) {\n // Token expired - clear everything\n log.warn('getCurrentUser: Token expired');\n await this.tokenStorage.clearTokens();\n this.userSubject.next(null);\n this.authStateSubject.next('idle');\n this.events.onUserChanged?.(null);\n return null;\n }\n\n // Token is valid - return cached user if available\n const currentUser = this.userSubject.value;\n if (currentUser) {\n log.debug('getCurrentUser: Returning cached user', {\n email: currentUser.email,\n roles: currentUser.roles,\n });\n return currentUser;\n }\n\n // Check stored user\n const storedUser = await this.tokenStorage.getUser<User>();\n if (storedUser) {\n this.userSubject.next(storedUser);\n this.authStateSubject.next('authenticated');\n return storedUser;\n }\n\n // Create user from token\n const user = this.createUserFromPayload(jwtPayload);\n await this.tokenStorage.saveUser(user);\n this.userSubject.next(user);\n this.authStateSubject.next('authenticated');\n\n return user;\n }\n\n async isAuthenticated(): Promise<boolean> {\n const token = await this.tokenStorage.getAccessToken();\n if (!token) {\n log.debug('isAuthenticated: No token in storage');\n return false;\n }\n\n const jwtPayload = parseJwt(token);\n const expired = isTokenExpired(jwtPayload);\n log.debug('isAuthenticated: Token check', {\n hasToken: true,\n expired,\n expiresAt: new Date(jwtPayload.exp * 1000).toISOString(),\n });\n return !expired;\n }\n\n async getAccessToken(): Promise<string | null> {\n const token = await this.tokenStorage.getAccessToken();\n if (!token) {\n return null;\n }\n\n const jwtPayload = parseJwt(token);\n if (isTokenExpired(jwtPayload)) {\n await this.tokenStorage.clearTokens();\n this.userSubject.next(null);\n this.authStateSubject.next('idle');\n this.events.onUserChanged?.(null);\n return null;\n }\n\n return token;\n }\n\n private createUserFromPayload(jwtPayload: JwtPayload): User {\n return {\n id: jwtPayload.uid.toString(),\n email: jwtPayload.username,\n username: jwtPayload.username,\n roles: jwtPayload.roles as UserRoles,\n fid: jwtPayload.fid,\n pid: jwtPayload.pid,\n expiresAt: jwtPayload.exp * 1000,\n };\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\n\nimport { ICertificatePort, StoredCertificate } from '@/application/ports/driven/certificate.port';\nimport { ISecureStoragePort } from '@/application/ports/driven/storage.port';\n\nconst CERTIFICATE_KEY = 'acube_certificate';\n\nexport type CertificateState = 'idle' | 'loading' | 'stored' | 'error';\n\nexport class CertificateService implements ICertificatePort {\n private readonly certificateSubject = new BehaviorSubject<StoredCertificate | null>(null);\n private readonly stateSubject = new BehaviorSubject<CertificateState>('idle');\n private readonly destroy$ = new Subject<void>();\n\n get certificate$(): Observable<StoredCertificate | null> {\n return this.certificateSubject.asObservable();\n }\n\n get hasCertificate$(): Observable<boolean> {\n return this.certificateSubject.pipe(\n map((cert) => cert !== null),\n distinctUntilChanged()\n );\n }\n\n get state$(): Observable<CertificateState> {\n return this.stateSubject.asObservable();\n }\n\n constructor(private readonly secureStorage: ISecureStoragePort) {}\n\n async hasCertificate(): Promise<boolean> {\n const cert = await this.getCertificate();\n return cert !== null;\n }\n\n async getCertificate(): Promise<StoredCertificate | null> {\n this.stateSubject.next('loading');\n\n const stored = await this.secureStorage.get(CERTIFICATE_KEY);\n if (!stored) {\n this.stateSubject.next('idle');\n return null;\n }\n\n const certData = JSON.parse(stored) as StoredCertificate;\n if (!certData.certificate || !certData.privateKey) {\n this.stateSubject.next('idle');\n return null;\n }\n\n this.certificateSubject.next(certData);\n this.stateSubject.next('stored');\n return certData;\n }\n\n async storeCertificate(cert: string, key: string, format: 'pem' | 'p12'): Promise<void> {\n if (!cert?.trim()) {\n throw new Error('Certificate content is required');\n }\n if (!key?.trim()) {\n throw new Error('Private key is required');\n }\n\n const certData: StoredCertificate = {\n certificate: cert.trim(),\n privateKey: key.trim(),\n format,\n storedAt: Date.now(),\n };\n\n await this.secureStorage.set(CERTIFICATE_KEY, JSON.stringify(certData));\n this.certificateSubject.next(certData);\n this.stateSubject.next('stored');\n }\n\n async clearCertificate(): Promise<void> {\n await this.secureStorage.remove(CERTIFICATE_KEY);\n this.certificateSubject.next(null);\n this.stateSubject.next('idle');\n }\n\n async getCertificateInfo(): Promise<{ format: string } | null> {\n const cert = await this.getCertificate();\n if (!cert) {\n return null;\n }\n return { format: cert.format };\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","export type GoodOrService = 'goods' | 'service';\n\nexport type VatRateCode =\n | '4.00'\n | '5.00'\n | '10.00'\n | '22.00'\n | '2.00'\n | '6.40'\n | '7.00'\n | '7.30'\n | '7.50'\n | '7.65'\n | '7.95'\n | '8.30'\n | '8.50'\n | '8.80'\n | '9.50'\n | '12.30'\n | 'N1'\n | 'N2'\n | 'N3'\n | 'N4'\n | 'N5'\n | 'N6';\n\nexport const VAT_RATE_CODES: VatRateCode[] = [\n '4.00',\n '5.00',\n '10.00',\n '22.00',\n '2.00',\n '6.40',\n '7.00',\n '7.30',\n '7.50',\n '7.65',\n '7.95',\n '8.30',\n '8.50',\n '8.80',\n '9.50',\n '12.30',\n 'N1',\n 'N2',\n 'N3',\n 'N4',\n 'N5',\n 'N6',\n];\n\nexport const STANDARD_VAT_RATES: VatRateCode[] = ['4.00', '5.00', '10.00', '22.00'];\nexport const EXEMPT_VAT_CODES: VatRateCode[] = ['N1', 'N2', 'N3', 'N4', 'N5', 'N6'];\n","export type Domain = 'ereceipts-it.acubeapi.com';\n\nexport type UserRole = 'ROLE_SUPPLIER' | 'ROLE_CASHIER' | 'ROLE_MERCHANT';\n\nexport type UserRoles = Record<Domain, UserRole[]>;\n\nexport function hasRole(userRoles: UserRoles, required: UserRole): boolean {\n return Object.values(userRoles).some((roles) => roles.includes(required));\n}\n\nexport function hasAnyRole(userRoles: UserRoles, required: UserRole[]): boolean {\n return Object.values(userRoles).some((roles) => required.some((role) => roles.includes(role)));\n}\n","import { Environment, SDKConfig } from '@/shared/types';\n\ninterface InternalConfig {\n environment: Environment;\n apiUrl: string;\n authUrl: string;\n timeout: number;\n retryAttempts: number;\n debug: boolean;\n customHeaders: Record<string, string>;\n}\n\nexport class ConfigManager {\n private config: InternalConfig;\n\n constructor(userConfig: SDKConfig) {\n this.config = this.buildConfig(userConfig);\n }\n\n private buildConfig(userConfig: SDKConfig): InternalConfig {\n return {\n environment: userConfig.environment,\n apiUrl: this.getDefaultApiUrl(userConfig.environment),\n authUrl: this.getDefaultAuthUrl(userConfig.environment),\n timeout: 30000,\n retryAttempts: 3,\n debug: userConfig.debug ?? false,\n customHeaders: {},\n };\n }\n\n private getDefaultApiUrl(environment: Environment): string {\n switch (environment) {\n case 'production':\n return 'https://ereceipts-it.acubeapi.com';\n case 'development':\n return 'https://ereceipts-it.dev.acubeapi.com';\n case 'sandbox':\n default:\n return 'https://ereceipts-it-sandbox.acubeapi.com';\n }\n }\n\n private getDefaultAuthUrl(environment: Environment): string {\n switch (environment) {\n case 'production':\n return 'https://common.api.acubeapi.com';\n case 'development':\n case 'sandbox':\n default:\n return 'https://common-sandbox.api.acubeapi.com';\n }\n }\n\n getConfig(): SDKConfig {\n return {\n environment: this.config.environment,\n debug: this.config.debug,\n };\n }\n\n getApiUrl(): string {\n return this.config.apiUrl;\n }\n\n getAuthUrl(): string {\n return this.config.authUrl;\n }\n\n getEnvironment(): Environment {\n return this.config.environment;\n }\n\n isDebugEnabled(): boolean {\n return this.config.debug;\n }\n\n getTimeout(): number {\n return this.config.timeout;\n }\n\n getRetryAttempts(): number {\n return this.config.retryAttempts;\n }\n\n getCustomHeaders(): Record<string, string> {\n return { ...this.config.customHeaders };\n }\n\n updateConfig(updates: Partial<SDKConfig>): void {\n if (updates.environment) {\n this.config.environment = updates.environment;\n this.config.apiUrl = this.getDefaultApiUrl(updates.environment);\n this.config.authUrl = this.getDefaultAuthUrl(updates.environment);\n }\n if (updates.debug !== undefined) {\n this.config.debug = updates.debug;\n }\n }\n}\n","import * as z from 'zod';\n\n// Enum options arrays\nexport const VAT_RATE_CODE_OPTIONS = [\n '4.00',\n '5.00',\n '10.00',\n '22.00',\n '2.00',\n '6.40',\n '7.00',\n '7.30',\n '7.50',\n '7.65',\n '7.95',\n '8.30',\n '8.50',\n '8.80',\n '9.50',\n '12.30',\n 'N1',\n 'N2',\n 'N3',\n 'N4',\n 'N5',\n 'N6',\n] as const;\n\nexport const GOOD_OR_SERVICE_OPTIONS = ['goods', 'service'] as const;\n\nexport const RECEIPT_PROOF_TYPE_OPTIONS = ['POS', 'VR', 'ND'] as const;\n\n// Enum types for receipt validation\nexport const VatRateCodeSchema = z.enum(VAT_RATE_CODE_OPTIONS);\n\nexport const GoodOrServiceSchema = z.enum(GOOD_OR_SERVICE_OPTIONS);\n\nexport const ReceiptProofTypeSchema = z.enum(RECEIPT_PROOF_TYPE_OPTIONS);\n\n// Receipt Item Schema\nexport const ReceiptItemSchema = z.object({\n type: GoodOrServiceSchema.optional(),\n quantity: z.string().min(1, { error: 'fieldIsRequired' }),\n description: z.string().min(1, { error: 'fieldIsRequired' }),\n unit_price: z.string().min(1, { error: 'fieldIsRequired' }),\n vat_rate_code: VatRateCodeSchema.optional(),\n simplified_vat_allocation: z.boolean().optional(),\n discount: z.string().nullable().optional(),\n is_down_payment_or_voucher_redemption: z.boolean().optional(),\n complimentary: z.boolean().optional(),\n});\n\n// Main Receipt Input Schema\nexport const ReceiptInputSchema = z\n .object({\n items: z.array(ReceiptItemSchema).min(1, { error: 'arrayMin1' }),\n customer_tax_code: z.string().optional(),\n customer_lottery_code: z.string().optional(),\n discount: z.string().nullable().optional(),\n invoice_issuing: z.boolean().optional(),\n uncollected_dcr_to_ssn: z.boolean().optional(),\n services_uncollected_amount: z.string().nullable().optional(),\n goods_uncollected_amount: z.string().nullable().optional(),\n cash_payment_amount: z.string().nullable().optional(),\n electronic_payment_amount: z.string().nullable().optional(),\n ticket_restaurant_payment_amount: z.string().nullable().optional(),\n ticket_restaurant_quantity: z.number().optional(),\n })\n .refine(\n (data) => {\n // At least one payment method should be provided\n const hasCashPayment = data.cash_payment_amount && parseFloat(data.cash_payment_amount) > 0;\n const hasElectronicPayment =\n data.electronic_payment_amount && parseFloat(data.electronic_payment_amount) > 0;\n const hasTicketPayment =\n data.ticket_restaurant_payment_amount &&\n parseFloat(data.ticket_restaurant_payment_amount) > 0;\n\n return hasCashPayment || hasElectronicPayment || hasTicketPayment;\n },\n {\n error: 'At least one payment method is required',\n path: ['payment_methods'],\n }\n )\n .refine(\n (data) => {\n // only one between customer_tax_code and customer_lottery_code can be provided\n return !data.customer_tax_code || !data.customer_lottery_code;\n },\n {\n error: 'Only one between customer_tax_code and customer_lottery_code can be provided',\n path: ['customer_tax_code', 'customer_lottery_code'],\n }\n );\n\n// Receipt Return or Void via PEM Schema\nexport const ReceiptReturnOrVoidViaPEMInputSchema = z.object({\n device_id: z.string().optional(),\n items: z.array(ReceiptItemSchema).min(1, { error: 'arrayMin1' }),\n document_number: z.string().min(1, { error: 'fieldIsRequired' }),\n document_datetime: z.string().optional(),\n lottery_code: z.string().optional(),\n});\n\n// Receipt Return or Void with Proof Schema\nexport const ReceiptReturnOrVoidWithProofInputSchema = z.object({\n items: z.array(ReceiptItemSchema).min(1, { error: 'arrayMin1' }),\n proof: ReceiptProofTypeSchema,\n document_datetime: z.string().min(1, { error: 'fieldIsRequired' }),\n});\n\n// Void Receipt Schema\nexport const VoidReceiptInputSchema = z.object({\n document_number: z.string().min(1, { error: 'fieldIsRequired' }),\n});\n\nexport const ReceiptReturnItemSchema = z\n .array(\n z.object({\n id: z.number(),\n quantity: z.string().min(1, { error: 'fieldIsRequired' }),\n })\n )\n .min(1, { error: 'arrayMin1' });\n\n// Receipt Return Schema\nexport const ReceiptReturnInputSchema = z.object({\n items: z.array(ReceiptReturnItemSchema).min(1, { error: 'arrayMin1' }),\n document_number: z.string().min(1, { error: 'fieldIsRequired' }),\n});\n\n// Type exports\nexport type ReceiptItemType = z.infer<typeof ReceiptItemSchema>;\nexport type ReceiptInputType = z.infer<typeof ReceiptInputSchema>;\nexport type ReceiptReturnOrVoidViaPEMInputType = z.infer<\n typeof ReceiptReturnOrVoidViaPEMInputSchema\n>;\nexport type ReceiptReturnOrVoidWithProofInputType = z.infer<\n typeof ReceiptReturnOrVoidWithProofInputSchema\n>;\nexport type VatRateCodeType = z.infer<typeof VatRateCodeSchema>;\nexport type GoodOrServiceType = z.infer<typeof GoodOrServiceSchema>;\nexport type ReceiptProofTypeType = z.infer<typeof ReceiptProofTypeSchema>;\nexport type ReceiptReturnType = z.infer<typeof ReceiptReturnInputSchema>;\nexport type ReceiptReturnItemType = z.infer<typeof ReceiptReturnItemSchema>;\nexport type VoidReceiptInputType = z.infer<typeof VoidReceiptInputSchema>;\n","import * as z from 'zod';\n\n// Cashier Create Input Schema (MF1)\nexport const CashierCreateInputSchema = z.object({\n email: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .max(255, { error: 'emailMaxLength' })\n .email({ error: 'invalidEmail' }),\n password: z\n .string()\n .min(8, { error: 'passwordMinLength' })\n .max(40, { error: 'passwordMaxLength' }),\n name: z.string().min(1, { error: 'fieldIsRequired' }).max(255, { error: 'nameMaxLength' }),\n display_name: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .max(255, { error: 'displayNameMaxLength' }),\n});\n\n// Type exports\nexport type CashierCreateInputType = z.infer<typeof CashierCreateInputSchema>;\n","import * as z from 'zod';\n\n// Enum options arrays\nexport const PEM_STATUS_OPTIONS = [\n 'NEW',\n 'REGISTERED',\n 'ACTIVATED',\n 'ONLINE',\n 'OFFLINE',\n 'DISCARDED',\n] as const;\n\n// Address Schema (reusable)\nexport const AddressSchema = z.object({\n street_address: z.string().min(1, { error: 'fieldIsRequired' }),\n street_number: z.string().min(1, { error: 'fieldIsRequired' }),\n zip_code: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .regex(/^\\d{5}$/, { error: 'invalidZipCode' }),\n city: z.string().min(1, { error: 'fieldIsRequired' }),\n province: z\n .string()\n .min(2, { error: 'provinceMinLength' })\n .max(2, { error: 'provinceMaxLength' })\n .toUpperCase(),\n});\n\n// PEM Status Schema\nexport const PEMStatusSchema = z.enum(PEM_STATUS_OPTIONS);\n\n// Activation Request Schema\nexport const ActivationRequestSchema = z.object({\n registration_key: z.string().min(1, { error: 'fieldIsRequired' }),\n});\n\n// PEM Status Offline Request Schema\nexport const PEMStatusOfflineRequestSchema = z.object({\n timestamp: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .refine((val) => !isNaN(Date.parse(val)), {\n error: 'invalidDateFormat',\n }),\n reason: z.string().min(1, { error: 'fieldIsRequired' }),\n});\n\n// Type exports\nexport type AddressType = z.infer<typeof AddressSchema>;\nexport type PEMStatusType = z.infer<typeof PEMStatusSchema>;\nexport type ActivationRequestType = z.infer<typeof ActivationRequestSchema>;\nexport type PEMStatusOfflineRequestType = z.infer<typeof PEMStatusOfflineRequestSchema>;\n","import * as z from 'zod';\n\n// Cash Register Create Schema\nexport const CashRegisterCreateSchema = z.object({\n pem_serial_number: z.string().min(1, { error: 'fieldIsRequired' }),\n name: z.string().min(1, { error: 'fieldIsRequired' }).max(100, { error: 'nameMaxLength' }),\n});\n\n// Type exports\nexport type CashRegisterCreateType = z.infer<typeof CashRegisterCreateSchema>;\n","import * as z from 'zod';\n\nimport { AddressSchema } from './point-of-sales';\n\n// VAT number validation regex (Partita IVA - 11 digits)\nconst VAT_NUMBER_REGEX = /^\\d{11}$/;\n\n// Fiscal code validation regex (Codice Fiscale - 11 digits only for merchants)\nconst FISCAL_CODE_REGEX = /^\\d{11}$/;\n\n// Password validation regex (from OpenAPI spec)\nconst PASSWORD_REGEX = /^((?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{10,}).*)$/;\n\n// Merchant Create Input Schema\nexport const MerchantCreateInputSchema = z\n .object({\n vat_number: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .regex(VAT_NUMBER_REGEX, { error: 'invalidVatNumber' }),\n fiscal_code: z.string().regex(FISCAL_CODE_REGEX, { error: 'invalidFiscalCode' }).optional(),\n business_name: z.string().max(200, { error: 'businessNameMaxLength' }).optional().nullable(),\n first_name: z.string().max(100, { error: 'firstNameMaxLength' }).optional().nullable(),\n last_name: z.string().max(100, { error: 'lastNameMaxLength' }).optional().nullable(),\n email: z.string().min(1, { error: 'fieldIsRequired' }).email({ error: 'invalidEmail' }),\n password: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .regex(PASSWORD_REGEX, { error: 'passwordComplexity' }),\n address: AddressSchema.optional(),\n })\n .refine(\n (data) => {\n const hasBusinessName = data.business_name && data.business_name.trim() !== '';\n const hasPersonalNames =\n (data.first_name && data.first_name.trim() !== '') ||\n (data.last_name && data.last_name.trim() !== '');\n\n // If business name is set, first/last name must not be provided\n if (hasBusinessName && hasPersonalNames) {\n return false;\n }\n\n // At least one naming method must be provided\n if (!hasBusinessName && !hasPersonalNames) {\n return false;\n }\n\n return true;\n },\n {\n error: 'businessNameOrPersonalNamesRequired',\n path: ['business_name'],\n }\n );\n\n// Merchant Update Input Schema\nexport const MerchantUpdateInputSchema = z.object({\n business_name: z.string().max(200, { error: 'businessNameMaxLength' }).optional().nullable(),\n first_name: z.string().max(100, { error: 'firstNameMaxLength' }).optional().nullable(),\n last_name: z.string().max(100, { error: 'lastNameMaxLength' }).optional().nullable(),\n address: AddressSchema.optional().nullable(),\n});\n\n// Type exports\nexport type MerchantCreateInputType = z.infer<typeof MerchantCreateInputSchema>;\nexport type MerchantUpdateInputType = z.infer<typeof MerchantUpdateInputSchema>;\n","import * as z from 'zod';\n\nimport { AddressSchema } from './point-of-sales';\n\n// Enum options arrays\nexport const PEM_TYPE_OPTIONS = ['AP', 'SP', 'TM', 'PV'] as const;\n\n// PEM Data Schema\nexport const PemDataSchema = z.object({\n version: z.string().min(1, { error: 'fieldIsRequired' }),\n type: z.enum(PEM_TYPE_OPTIONS, {\n error: 'invalidPemType',\n }),\n});\n\n// PEM Create Input Schema\nexport const PemCreateInputSchema = z.object({\n merchant_uuid: z.string().min(1, { error: 'fieldIsRequired' }).uuid({ error: 'invalidUuid' }),\n address: AddressSchema.optional(),\n /* external_pem_data: PemDataSchema.optional(), */\n});\n\n// Type exports\nexport type PemDataType = z.infer<typeof PemDataSchema>;\nexport type PemCreateInputType = z.infer<typeof PemCreateInputSchema>;\n","import * as z from 'zod';\n\nimport { AddressSchema } from './point-of-sales';\n\n// Italian Fiscal ID validation regex (Codice Fiscale for individuals or Partita IVA for companies)\nconst FISCAL_ID_REGEX =\n /^([A-Z]{6}[0-9LMNPQRSTUV]{2}[ABCDEHLMPRST][0-9LMNPQRSTUV]{2}[A-Z][0-9LMNPQRSTUV]{3}[A-Z]|[0-9]{11})$/;\n\n// Supplier Create Input Schema\nexport const SupplierCreateInputSchema = z.object({\n fiscal_id: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .regex(FISCAL_ID_REGEX, { error: 'invalidFiscalId' })\n .toUpperCase(),\n name: z.string().min(1, { error: 'fieldIsRequired' }).max(200, { error: 'nameMaxLength' }),\n address: AddressSchema.optional(),\n});\n\n// Supplier Update Input Schema\nexport const SupplierUpdateInputSchema = z.object({\n name: z.string().min(1, { error: 'fieldIsRequired' }).max(200, { error: 'nameMaxLength' }),\n address: AddressSchema.optional(),\n});\n\n// Type exports\nexport type SupplierCreateInputType = z.infer<typeof SupplierCreateInputSchema>;\nexport type SupplierUpdateInputType = z.infer<typeof SupplierUpdateInputSchema>;\n","import * as z from 'zod';\n\n// Journal Close Input Schema\nexport const JournalCloseInputSchema = z.object({\n closing_timestamp: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .refine((val) => !isNaN(Date.parse(val)), {\n error: 'invalidDateFormat',\n }),\n reason: z.string().max(255, { error: 'reasonMaxLength' }).optional(),\n});\n\n// Type exports\nexport type JournalCloseInputType = z.infer<typeof JournalCloseInputSchema>;\n","import * as z from 'zod';\n\n// Daily Report Status Options\nexport const DAILY_REPORT_STATUS_OPTIONS = ['pending', 'sent', 'error'] as const;\n\n// Daily Report Status Schema\nexport const DailyReportStatusSchema = z.enum(DAILY_REPORT_STATUS_OPTIONS, {\n error: 'invalidDailyReportStatus',\n});\n\n// Daily Reports List Parameters Schema\nexport const DailyReportsParamsSchema = z.object({\n pem_serial_number: z.string().min(1, { error: 'fieldIsRequired' }).optional(),\n date_from: z\n .string()\n .refine((val) => !isNaN(Date.parse(val)), {\n error: 'invalidDateFormat',\n })\n .optional(),\n date_to: z\n .string()\n .refine((val) => !isNaN(Date.parse(val)), {\n error: 'invalidDateFormat',\n })\n .optional(),\n status: DailyReportStatusSchema.optional(),\n page: z.number().min(1, { error: 'pageMinValue' }).optional(),\n});\n\n// Type exports\nexport type DailyReportStatusType = z.infer<typeof DailyReportStatusSchema>;\nexport type DailyReportsParamsType = z.infer<typeof DailyReportsParamsSchema>;\n","import * as z from 'zod';\n\nexport const NotificationScopeSchema = z.object({\n type: z.literal('global'),\n});\n\nexport const PemStatusSchema = z.enum(['ONLINE', 'OFFLINE']);\n\nexport const NotificationDataBlockAtSchema = z.object({\n block_at: z.string(),\n});\n\nexport const NotificationDataPemStatusSchema = z.object({\n from: PemStatusSchema,\n to: PemStatusSchema,\n});\n\nconst NotificationBaseSchema = z.object({\n uuid: z.string().uuid({ error: 'invalidUuid' }),\n scope: NotificationScopeSchema,\n source: z.enum(['system', 'Italian Tax Authority']),\n level: z.enum(['info', 'warning', 'error', 'critical']),\n created_at: z.string(),\n});\n\nexport const NotificationMf2UnreachableSchema = NotificationBaseSchema.extend({\n type: z.literal('INTERNAL_COMMUNICATION_FAILURE'),\n code: z.literal('SYS-W-01'),\n data: NotificationDataBlockAtSchema,\n});\n\nexport const NotificationPemsBlockedSchema = NotificationBaseSchema.extend({\n type: z.literal('PEM_STATUS_CHANGED'),\n code: z.literal('SYS-C-01'),\n data: NotificationDataPemStatusSchema,\n});\n\nexport const NotificationPemBackOnlineSchema = NotificationBaseSchema.extend({\n type: z.literal('PEM_STATUS_CHANGED'),\n code: z.literal('SYS-I-01'),\n data: NotificationDataPemStatusSchema,\n});\n\nexport const NotificationSchema = z.discriminatedUnion('code', [\n NotificationMf2UnreachableSchema,\n NotificationPemsBlockedSchema,\n NotificationPemBackOnlineSchema,\n]);\n\nexport const NotificationListResponseSchema = z.object({\n members: z.array(NotificationSchema),\n});\n\nexport type NotificationSchemaType = z.infer<typeof NotificationSchema>;\nexport type NotificationListResponseSchemaType = z.infer<typeof NotificationListResponseSchema>;\n","import * as z from 'zod';\n\nexport const TelemetryMerchantSchema = z.object({\n vat_number: z.string(),\n fiscal_code: z.string().nullable(),\n business_name: z.string(),\n});\n\nexport const TelemetrySupplierSchema = z.object({\n vat_number: z.string(),\n fiscal_code: z.string().nullable(),\n business_name: z.string(),\n});\n\nexport const TelemetrySoftwareVersionSchema = z.object({\n version: z.string(),\n swid: z.string(),\n installed_at: z.string(),\n status: z.enum(['active', 'inactive', 'archived']),\n});\n\nexport const TelemetrySoftwareSchema = z.object({\n code: z.string(),\n name: z.string(),\n approval_reference: z.string(),\n version_info: TelemetrySoftwareVersionSchema,\n});\n\nexport const PendingReceiptsSchema = z.object({\n count: z.number().int().nonnegative(),\n total_amount: z.string(),\n});\n\nexport const TransmissionSchema = z.object({\n attempted_at: z.string(),\n outcome: z.enum(['success', 'failed', 'pending']),\n});\n\nexport const MessageSchema = z.object({\n received_at: z.string(),\n content: z.string(),\n});\n\nexport const LotterySecretRequestSchema = z.object({\n requested_at: z.string(),\n outcome: z.enum(['success', 'failed', 'pending']),\n});\n\nexport const LotterySchema = z.object({\n last_transmission: TransmissionSchema,\n secret_request: LotterySecretRequestSchema,\n});\n\nexport const TelemetrySchema = z.object({\n pem_id: z.string(),\n pem_status: z.enum(['ONLINE', 'OFFLINE', 'ERROR']),\n pem_status_changed_at: z.string(),\n merchant: TelemetryMerchantSchema,\n supplier: TelemetrySupplierSchema,\n software: TelemetrySoftwareSchema,\n last_communication_at: z.string(),\n pending_receipts: PendingReceiptsSchema,\n last_receipt_transmission: TransmissionSchema,\n last_message_from_mf2: MessageSchema,\n ade_corrispettivi_transmission: TransmissionSchema,\n last_message_from_ade: MessageSchema,\n lottery: LotterySchema,\n});\n\nexport type TelemetrySchemaType = z.infer<typeof TelemetrySchema>;\n","/**\n * Zod validation schemas for ACube E-Receipt API\n *\n * This module exports all validation schemas and types for API input DTOs.\n * Use these schemas to validate user input before sending requests to the API.\n *\n * @example\n * ```typescript\n * import { ReceiptInputSchema, ReceiptInputType } from '@/validations/api';\n *\n * // Validate input data\n * const result = ReceiptInputSchema.safeParse(userInput);\n * if (!result.success) {\n * console.error('Validation errors:', result.error.errors);\n * } else {\n * // Use validated data\n * const validatedData: ReceiptInputType = result.data;\n * }\n * ```\n */\nimport * as z from 'zod';\n\n// Receipt schemas and types\nexport {\n ReceiptItemSchema,\n ReceiptInputSchema,\n ReceiptReturnOrVoidViaPEMInputSchema,\n ReceiptReturnOrVoidWithProofInputSchema,\n ReceiptReturnInputSchema,\n VoidReceiptInputSchema,\n ReceiptReturnItemSchema,\n VatRateCodeSchema,\n GoodOrServiceSchema,\n ReceiptProofTypeSchema,\n VAT_RATE_CODE_OPTIONS,\n GOOD_OR_SERVICE_OPTIONS,\n RECEIPT_PROOF_TYPE_OPTIONS,\n type ReceiptItemType,\n type ReceiptInputType,\n type ReceiptReturnOrVoidViaPEMInputType,\n type ReceiptReturnOrVoidWithProofInputType,\n type VatRateCodeType,\n type GoodOrServiceType,\n type ReceiptProofTypeType,\n type ReceiptReturnType,\n type ReceiptReturnItemType,\n type VoidReceiptInputType,\n} from './receipts';\n\n// Cashier schemas and types\nexport { CashierCreateInputSchema, type CashierCreateInputType } from './cashiers';\n\n// Point of Sales schemas and types\nexport {\n AddressSchema,\n PEMStatusSchema,\n ActivationRequestSchema,\n PEMStatusOfflineRequestSchema,\n PEM_STATUS_OPTIONS,\n type AddressType,\n type PEMStatusType,\n type ActivationRequestType,\n type PEMStatusOfflineRequestType,\n} from './point-of-sales';\n\n// Cash Register schemas and types\nexport { CashRegisterCreateSchema, type CashRegisterCreateType } from './cash-registers';\n\n// Merchant schemas and types\nexport {\n MerchantCreateInputSchema,\n MerchantUpdateInputSchema,\n type MerchantCreateInputType,\n type MerchantUpdateInputType,\n} from './merchants';\n\n// PEM schemas and types\nexport {\n PemDataSchema,\n PemCreateInputSchema,\n PEM_TYPE_OPTIONS,\n type PemDataType,\n type PemCreateInputType,\n} from './pems';\n\n// Supplier schemas and types\nexport {\n SupplierCreateInputSchema,\n SupplierUpdateInputSchema,\n type SupplierCreateInputType,\n type SupplierUpdateInputType,\n} from './suppliers';\n\n// Journal schemas and types\nexport { JournalCloseInputSchema, type JournalCloseInputType } from './journals';\n\n// Daily Reports schemas and types\nexport {\n DailyReportStatusSchema,\n DailyReportsParamsSchema,\n DAILY_REPORT_STATUS_OPTIONS,\n type DailyReportStatusType,\n type DailyReportsParamsType,\n} from './daily-reports';\n\n// Notification schemas and types\nexport {\n NotificationSchema,\n NotificationScopeSchema,\n NotificationListResponseSchema,\n NotificationMf2UnreachableSchema,\n NotificationPemsBlockedSchema,\n NotificationPemBackOnlineSchema,\n NotificationDataBlockAtSchema,\n NotificationDataPemStatusSchema,\n PemStatusSchema,\n type NotificationSchemaType,\n type NotificationListResponseSchemaType,\n} from './notifications';\n\n// Telemetry schemas and types\nexport {\n TelemetrySchema,\n TelemetryMerchantSchema,\n TelemetrySupplierSchema,\n TelemetrySoftwareSchema,\n TelemetrySoftwareVersionSchema,\n PendingReceiptsSchema,\n TransmissionSchema,\n MessageSchema,\n LotterySchema,\n LotterySecretRequestSchema,\n type TelemetrySchemaType,\n} from './telemetry';\n\n// Common validation utilities\nexport const ValidationMessages = {\n fieldIsRequired: 'This field is required',\n arrayMin1: 'At least one item is required',\n paymentMethodRequired: 'At least one payment method is required',\n invalidEmail: 'Please enter a valid email address',\n passwordMinLength: 'Password must be at least 8 characters long',\n passwordComplexity:\n 'Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character',\n invalidZipCode: 'Please enter a valid 5-digit zip code',\n provinceMinLength: 'Province code must be 2 characters',\n provinceMaxLength: 'Province code must be 2 characters',\n invalidDateFormat: 'Please enter a valid date',\n nameMaxLength: 'Name is too long',\n invalidFiscalId: 'Please enter a valid Italian fiscal ID (Codice Fiscale or Partita IVA)',\n invalidVatNumber: 'Please enter a valid VAT number (11 digits)',\n invalidFiscalCode: 'Please enter a valid fiscal code (11 digits)',\n businessNameMaxLength: 'Business name is too long (max 200 characters)',\n businessNameOrPersonalNamesRequired:\n 'Please provide either a business name or first/last name, but not both',\n firstNameMaxLength: 'First name is too long (max 100 characters)',\n lastNameMaxLength: 'Last name is too long (max 100 characters)',\n invalidUuid: 'Please enter a valid UUID',\n invalidPemType: 'PEM type must be one of: AP, SP, TM, PV',\n reasonMaxLength: 'Reason is too long (max 255 characters)',\n pageMinValue: 'Page number must be at least 1',\n invalidDailyReportStatus: 'Daily report status must be one of: pending, sent, error',\n displayNameMaxLength: 'Display name is too long (max 255 characters)',\n} as const;\n\n// Validation helper functions\nexport const validateInput = <T>(schema: z.ZodSchema<T>, data: unknown) => {\n const result = schema.safeParse(data);\n\n if (!result.success) {\n const errors = result.error.issues.map((error) => ({\n field: error.path.join('.'),\n message: error.message,\n code: error.code,\n }));\n\n return {\n success: false,\n errors,\n data: null,\n };\n }\n\n return {\n success: true,\n errors: [],\n data: result.data,\n };\n};\n\n// Type-safe validation result\nexport interface ValidationResult<T> {\n success: boolean;\n errors: Array<{\n field: string;\n message: string;\n code: string;\n }>;\n data: T | null;\n}\n","import type { UserRoles } from '@/domain/value-objects';\n\nexport type Environment = 'production' | 'development' | 'sandbox';\n\nexport interface CertificateConfig {\n storagePrefix?: string;\n metadataKey?: string;\n}\n\nexport interface SDKConfig {\n environment: Environment;\n debug?: boolean;\n}\n\nexport interface AuthCredentials {\n email: string;\n password: string;\n}\n\nexport interface TokenResponse {\n token: string;\n}\n\nexport interface JWTPayload {\n iat: number;\n exp: number;\n roles: Record<string, string[]>;\n username: string;\n uid: number;\n fid: string;\n pid: string | null;\n}\n\nexport interface StoredTokenData {\n accessToken: string;\n expiresAt: number;\n}\n\nexport interface User {\n id: string;\n email: string;\n username: string;\n roles: UserRoles;\n fid: string;\n pid: string | null;\n expiresAt: number;\n}\n\nexport interface IUserProvider {\n getCurrentUser(): Promise<User | null>;\n isAuthenticated(): Promise<boolean>;\n getAccessToken(): Promise<string | null>;\n}\n\nexport interface APIViolation {\n propertyPath: string;\n message: string;\n}\n\nexport interface APIError {\n type: string;\n title: string;\n status: number;\n detail: string;\n instance?: string;\n violations?: APIViolation[];\n}\n\nexport type SDKError =\n | 'NETWORK_ERROR'\n | 'AUTH_ERROR'\n | 'VALIDATION_ERROR'\n | 'NOT_FOUND_ERROR'\n | 'FORBIDDEN_ERROR'\n | 'UNKNOWN_ERROR'\n | 'STORAGE_CERTIFICATE_ERROR'\n | 'CERTIFICATE_MANAGER_NOT_INITIALIZED'\n | 'SDK_INITIALIZATION_ERROR'\n | 'SDK_NOT_INITIALIZED'\n | 'SDK_ALREADY_CONFIGURED'\n | 'SDK_NOT_CONFIGURED'\n | 'ADAPTERS_NOT_AVAILABLE'\n | 'API_CLIENT_NOT_INITIALIZED'\n | 'MTLS_ADAPTER_NOT_AVAILABLE'\n | 'CERTIFICATE_INFO_ERROR';\n\nexport class ACubeSDKError extends Error {\n public violations?: APIViolation[];\n\n constructor(\n public type: SDKError,\n message: string,\n public originalError?: unknown,\n public statusCode?: number,\n violations?: APIViolation[]\n ) {\n super(message);\n this.name = 'ACubeSDKError';\n this.violations = violations;\n }\n}\n","import { AuthConfig, AuthMode } from '@/application/ports/driven/auth-handler.port';\nimport { IMTLSPort } from '@/application/ports/driven/mtls.port';\nimport { UserRoles, hasRole } from '@/domain/value-objects';\nimport { createPrefixedLogger } from '@/shared';\n\nimport { JwtAuthHandler } from './jwt-auth.handler';\nimport { MtlsAuthHandler } from './mtls-auth.handler';\n\nconst log = createPrefixedLogger('AUTH-STRATEGY');\n\nexport interface IUserProvider {\n getCurrentUser(): Promise<{ roles: UserRoles } | null>;\n getAccessToken(): Promise<string | null>;\n}\n\nexport class AuthStrategy {\n constructor(\n private readonly jwtHandler: JwtAuthHandler,\n private readonly mtlsHandler: MtlsAuthHandler,\n private readonly userProvider: IUserProvider | null,\n private readonly mtlsAdapter: IMTLSPort | null\n ) {}\n\n async determineAuthConfig(\n url: string,\n method: string,\n explicitMode?: AuthMode\n ): Promise<AuthConfig> {\n if (this.isNotificationEndpoint(url) || this.isTelemetryEndpoint(url)) {\n return { mode: 'mtls', usePort444: true };\n }\n\n const platform = this.detectPlatform();\n const userRole = await this.getUserRole();\n const isReceiptEndpoint = this.isReceiptEndpoint(url);\n\n log.debug('Determining auth config', {\n url,\n method,\n platform,\n userRole,\n isReceiptEndpoint,\n explicitMode,\n });\n\n if (userRole === 'SUPPLIER') {\n return { mode: 'jwt', usePort444: false };\n }\n\n if (userRole === 'CASHIER') {\n if (!isReceiptEndpoint) {\n return { mode: 'jwt', usePort444: false };\n }\n if (platform === 'mobile') {\n return { mode: 'mtls', usePort444: true };\n }\n return { mode: 'jwt', usePort444: true };\n }\n\n if (userRole === 'MERCHANT') {\n if (!isReceiptEndpoint) {\n return { mode: 'jwt', usePort444: false };\n }\n\n if (this.isReturnableItemsEndpoint(url)) {\n return { mode: 'mtls', usePort444: true };\n }\n\n if (method === 'GET') {\n if (this.isDetailedReceiptEndpoint(url)) {\n if (platform === 'mobile') {\n return { mode: 'mtls', usePort444: true };\n }\n return { mode: 'jwt', usePort444: true };\n }\n return { mode: 'jwt', usePort444: false };\n }\n\n if (['POST', 'PUT', 'PATCH', 'DELETE'].includes(method)) {\n if (platform === 'mobile') {\n return { mode: 'mtls', usePort444: true };\n }\n return { mode: 'jwt', usePort444: true };\n }\n\n return { mode: 'jwt', usePort444: false };\n }\n\n if (explicitMode) {\n if (userRole === 'SUPPLIER' && explicitMode === 'mtls') {\n return { mode: 'jwt', usePort444: false };\n }\n return {\n mode: explicitMode,\n usePort444: explicitMode === 'mtls' || (platform === 'web' && isReceiptEndpoint),\n };\n }\n\n if (platform === 'web') {\n return { mode: 'jwt', usePort444: isReceiptEndpoint };\n }\n\n if (isReceiptEndpoint && platform === 'mobile') {\n return { mode: 'mtls', usePort444: true };\n }\n\n return { mode: 'jwt', usePort444: false };\n }\n\n async getAuthHeaders(): Promise<Record<string, string>> {\n return this.jwtHandler.getAuthHeaders();\n }\n\n getMtlsHandler(): MtlsAuthHandler {\n return this.mtlsHandler;\n }\n\n getJwtHandler(): JwtAuthHandler {\n return this.jwtHandler;\n }\n\n private detectPlatform(): 'web' | 'mobile' {\n if (!this.mtlsAdapter) {\n return 'web';\n }\n const platformInfo = this.mtlsAdapter.getPlatformInfo();\n return platformInfo.platform === 'web' ? 'web' : 'mobile';\n }\n\n private async getUserRole(): Promise<'SUPPLIER' | 'MERCHANT' | 'CASHIER' | null> {\n if (!this.userProvider) {\n return null;\n }\n const user = await this.userProvider.getCurrentUser();\n if (!user || !user.roles) {\n return null;\n }\n if (hasRole(user.roles, 'ROLE_SUPPLIER')) {\n return 'SUPPLIER';\n }\n if (hasRole(user.roles, 'ROLE_MERCHANT')) {\n return 'MERCHANT';\n }\n if (hasRole(user.roles, 'ROLE_CASHIER')) {\n return 'CASHIER';\n }\n return null;\n }\n\n private isReceiptEndpoint(url: string): boolean {\n return url.includes('/receipts') || url.includes('/mf1/receipts');\n }\n\n private isReturnableItemsEndpoint(url: string): boolean {\n return !!(\n url.match(/\\/receipts\\/[a-f0-9-]+\\/returnable-items$/) ||\n url.match(/\\/mf1\\/receipts\\/[a-f0-9-]+\\/returnable-items$/)\n );\n }\n\n private isDetailedReceiptEndpoint(url: string): boolean {\n return !!(\n url.match(/\\/receipts\\/[a-f0-9-]+\\/details$/) ||\n url.match(/\\/mf1\\/receipts\\/[a-f0-9-]+\\/details$/)\n );\n }\n\n private isNotificationEndpoint(url: string): boolean {\n return url.includes('/mf1/notifications');\n }\n\n private isTelemetryEndpoint(url: string): boolean {\n return !!url.match(/\\/mf1\\/pems\\/[^/]+\\/telemetry/);\n }\n}\n","import { AuthConfig, IAuthHandler } from '@/application/ports/driven/auth-handler.port';\nimport { ITokenStoragePort } from '@/application/ports/driven/token-storage.port';\n\nexport class JwtAuthHandler implements IAuthHandler {\n constructor(private readonly tokenStorage: ITokenStoragePort) {}\n\n async getAuthConfig(_url: string, _method: string): Promise<AuthConfig> {\n return { mode: 'jwt', usePort444: false };\n }\n\n async getAuthHeaders(): Promise<Record<string, string>> {\n const token = await this.tokenStorage.getAccessToken();\n if (!token) {\n return {};\n }\n return { Authorization: `Bearer ${token}` };\n }\n}\n","import { AuthConfig, IAuthHandler } from '@/application/ports/driven/auth-handler.port';\nimport { ICertificatePort, StoredCertificate } from '@/application/ports/driven/certificate.port';\nimport {\n CertificateData,\n IMTLSPort,\n MTLSRequestConfig,\n MTLSResponse,\n} from '@/application/ports/driven/mtls.port';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('MTLS-HANDLER');\n\nexport class MtlsAuthHandler implements IAuthHandler {\n private pendingRequests = new Map<string, Promise<unknown>>();\n\n constructor(\n private readonly mtlsAdapter: IMTLSPort | null,\n private readonly certificatePort: ICertificatePort | null\n ) {}\n\n async getAuthConfig(_url: string, _method: string): Promise<AuthConfig> {\n return { mode: 'mtls', usePort444: true };\n }\n\n async getAuthHeaders(): Promise<Record<string, string>> {\n return {};\n }\n\n async isMtlsReady(): Promise<boolean> {\n if (!this.mtlsAdapter || !this.certificatePort) {\n return false;\n }\n return this.certificatePort.hasCertificate();\n }\n\n async getCertificate(): Promise<StoredCertificate | null> {\n if (!this.certificatePort) {\n return null;\n }\n return this.certificatePort.getCertificate();\n }\n\n private generateRequestKey(\n url: string,\n config: { method?: string; data?: unknown },\n jwtToken?: string\n ): string {\n const method = config.method || 'GET';\n const dataHash = config.data ? JSON.stringify(config.data) : '';\n const authHash = jwtToken ? jwtToken.substring(0, 10) : 'no-auth';\n return `${method}:${url}:${dataHash}:${authHash}`;\n }\n\n private constructMtlsUrl(relativePath: string): string {\n const baseUrl = this.getBaseUrl();\n if (!baseUrl) {\n throw new Error('mTLS adapter base URL not configured');\n }\n const cleanPath = relativePath.startsWith('/') ? relativePath.substring(1) : relativePath;\n return baseUrl.endsWith('/') ? `${baseUrl}${cleanPath}` : `${baseUrl}/${cleanPath}`;\n }\n\n async makeRequest<T>(\n url: string,\n config: {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n data?: unknown;\n headers?: Record<string, string>;\n timeout?: number;\n responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';\n },\n jwtToken?: string\n ): Promise<T> {\n const requestKey = this.generateRequestKey(url, config, jwtToken);\n\n if (this.pendingRequests.has(requestKey)) {\n log.debug('Deduplicating concurrent request:', url);\n return this.pendingRequests.get(requestKey) as Promise<T>;\n }\n\n const requestPromise = this.executeRequest<T>(url, config, jwtToken, false);\n this.pendingRequests.set(requestKey, requestPromise);\n\n requestPromise.finally(() => {\n this.pendingRequests.delete(requestKey);\n });\n\n return requestPromise;\n }\n\n private async executeRequest<T>(\n url: string,\n config: {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n data?: unknown;\n headers?: Record<string, string>;\n timeout?: number;\n responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';\n },\n jwtToken?: string,\n isRetryAttempt: boolean = false\n ): Promise<T> {\n if (!this.mtlsAdapter) {\n throw new Error('mTLS adapter not available');\n }\n\n const certificate = await this.getCertificate();\n if (!certificate) {\n throw new Error('No certificate available for mTLS request');\n }\n\n const headers: Record<string, string> = {\n ...(config.method !== 'GET' && config.data ? { 'Content-Type': 'application/json' } : {}),\n ...(config.headers || {}),\n };\n\n if (jwtToken) {\n headers['Authorization'] = `Bearer ${jwtToken}`;\n log.debug('JWT token present:', jwtToken.substring(0, 20) + '...');\n } else {\n log.warn('No JWT token provided for mTLS request');\n }\n\n const fullUrl = this.constructMtlsUrl(url);\n\n const mtlsConfig: MTLSRequestConfig = {\n url: fullUrl,\n method: config.method,\n headers,\n data: config.data,\n timeout: config.timeout,\n responseType: config.responseType,\n };\n\n log.debug('header-mtls', headers);\n log.debug(`${config.method} ${fullUrl}`);\n if (config.data) {\n log.debug('Request body:', config.data);\n }\n\n try {\n const response: MTLSResponse<T> = await this.mtlsAdapter.request<T>(mtlsConfig);\n log.debug(`Response ${response.status} from ${fullUrl}`);\n if (response.data) {\n log.debug('Response body:', response.data);\n }\n return response.data;\n } catch (error) {\n log.error(`Response error from ${fullUrl}:`, error);\n if (error && typeof error === 'object' && 'response' in error) {\n const axiosError = error as { response?: { data?: unknown; status?: number } };\n if (axiosError.response?.data) {\n log.error('Response body:', axiosError.response.data);\n }\n }\n\n if (isRetryAttempt) {\n throw error;\n }\n\n const shouldRetry = this.shouldRetryRequest(error);\n if (!shouldRetry) {\n throw error;\n }\n\n log.debug('Request failed, reconfiguring certificate and retrying...');\n\n try {\n await this.configureCertificate(certificate);\n return await this.executeRequest<T>(url, config, jwtToken, true);\n } catch {\n throw error;\n }\n }\n }\n\n private shouldRetryRequest(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return (\n message.includes('certificate') ||\n message.includes('ssl') ||\n message.includes('tls') ||\n message.includes('handshake')\n );\n }\n return false;\n }\n\n async configureCertificate(certificate: StoredCertificate): Promise<void> {\n if (!this.mtlsAdapter) {\n throw new Error('mTLS adapter not available');\n }\n\n const certificateData: CertificateData = {\n certificate: certificate.certificate,\n privateKey: certificate.privateKey,\n format: certificate.format.toUpperCase() as 'PEM' | 'P12',\n };\n\n await this.mtlsAdapter.configureCertificate(certificateData);\n }\n\n async storeCertificate(\n certificate: string,\n privateKey: string,\n options: { format?: 'pem' | 'p12' | 'pkcs12' } = {}\n ): Promise<void> {\n if (!this.certificatePort) {\n throw new Error('Certificate port not available');\n }\n\n if (this.mtlsAdapter) {\n try {\n await this.mtlsAdapter.removeCertificate();\n } catch {\n // No existing certificate to remove\n }\n }\n\n const format = (options.format || 'pem') as 'pem' | 'p12';\n await this.certificatePort.storeCertificate(certificate, privateKey, format);\n\n if (this.mtlsAdapter) {\n const certificateData: CertificateData = {\n certificate,\n privateKey,\n format: format.toUpperCase() as 'PEM' | 'P12',\n };\n await this.mtlsAdapter.configureCertificate(certificateData);\n }\n }\n\n async clearCertificate(): Promise<void> {\n if (this.mtlsAdapter) {\n try {\n await this.mtlsAdapter.removeCertificate();\n } catch {\n // No certificate to remove\n }\n }\n\n if (this.certificatePort) {\n await this.certificatePort.clearCertificate();\n }\n }\n\n async testConnection(): Promise<boolean> {\n if (!this.mtlsAdapter) {\n return false;\n }\n return this.mtlsAdapter.testConnection();\n }\n\n getBaseUrl(): string | null {\n if (!this.mtlsAdapter) {\n return null;\n }\n return this.mtlsAdapter.getBaseUrl();\n }\n\n async getStatus() {\n const status = {\n adapterAvailable: !!this.mtlsAdapter,\n certificatePortAvailable: !!this.certificatePort,\n isReady: false,\n hasCertificate: false,\n certificateInfo: null as { format: string } | null,\n platformInfo: this.mtlsAdapter?.getPlatformInfo() || null,\n pendingRequestsCount: this.pendingRequests.size,\n };\n\n if (this.certificatePort) {\n try {\n status.hasCertificate = await this.certificatePort.hasCertificate();\n if (status.hasCertificate) {\n status.certificateInfo = await this.certificatePort.getCertificateInfo();\n }\n } catch {\n // Ignore errors\n }\n }\n\n status.isReady = await this.isMtlsReady();\n return status;\n }\n\n clearPendingRequests(): void {\n this.pendingRequests.clear();\n }\n}\n","export type OperationType = 'CREATE' | 'UPDATE' | 'DELETE';\n\nexport type ResourceType =\n | 'receipt'\n | 'cashier'\n | 'point-of-sale'\n | 'cash-register'\n | 'merchant'\n | 'pem';\n\nexport type OperationStatus = 'pending' | 'processing' | 'completed' | 'failed';\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport interface QueuedOperation {\n id: string;\n type: OperationType;\n resource: ResourceType;\n endpoint: string;\n method: HttpMethod;\n data?: unknown;\n headers?: Record<string, string>;\n status: OperationStatus;\n createdAt: number;\n updatedAt: number;\n retryCount: number;\n maxRetries: number;\n error?: string;\n priority: number;\n}\n\nexport interface SyncResult {\n operation: QueuedOperation;\n success: boolean;\n error?: string;\n response?: unknown;\n}\n\nexport interface BatchSyncResult {\n totalOperations: number;\n successCount: number;\n failureCount: number;\n results: SyncResult[];\n}\n\nexport interface QueueConfig {\n maxRetries: number;\n retryDelay: number;\n maxRetryDelay: number;\n backoffMultiplier: number;\n maxQueueSize: number;\n batchSize: number;\n syncInterval: number;\n}\n\nexport interface QueueEvents {\n onOperationAdded?: (operation: QueuedOperation) => void;\n onOperationCompleted?: (result: SyncResult) => void;\n onOperationFailed?: (result: SyncResult) => void;\n onBatchSyncCompleted?: (result: BatchSyncResult) => void;\n onQueueEmpty?: () => void;\n onError?: (error: Error) => void;\n}\n\nexport interface QueueStats {\n total: number;\n pending: number;\n processing: number;\n completed: number;\n failed: number;\n}\n\nexport interface SyncStatus {\n isOnline: boolean;\n isProcessing: boolean;\n queueStats: QueueStats;\n}\n\nexport const DEFAULT_QUEUE_CONFIG: QueueConfig = {\n maxRetries: 3,\n retryDelay: 1000,\n maxRetryDelay: 30000,\n backoffMultiplier: 2,\n maxQueueSize: 1000,\n batchSize: 10,\n syncInterval: 30000,\n};\n","import { IStoragePort as IStorage } from '@/application/ports/driven';\nimport {\n DEFAULT_QUEUE_CONFIG,\n HttpMethod,\n OperationType,\n QueueConfig,\n QueueEvents,\n QueueStats,\n QueuedOperation,\n ResourceType,\n} from '@/domain/entities/offline.entity';\n\nexport class OperationQueue {\n private static readonly QUEUE_KEY = 'acube_operation_queue';\n private queue: QueuedOperation[] = [];\n private processing = false;\n private syncIntervalId?: ReturnType<typeof setInterval>;\n\n constructor(\n private storage: IStorage,\n private config: QueueConfig = DEFAULT_QUEUE_CONFIG,\n private events: QueueEvents = {}\n ) {\n this.config = { ...DEFAULT_QUEUE_CONFIG, ...config };\n this.loadQueue();\n\n if (this.config.syncInterval > 0) {\n this.startAutoSync();\n }\n }\n\n async addOperation(\n type: OperationType,\n resource: ResourceType,\n endpoint: string,\n method: HttpMethod,\n data?: unknown,\n priority: number = 1\n ): Promise<string> {\n if (this.queue.length >= this.config.maxQueueSize) {\n const lowPriorityIndex = this.queue.findIndex((op) => op.priority === 1);\n if (lowPriorityIndex !== -1) {\n this.queue.splice(lowPriorityIndex, 1);\n } else {\n throw new Error('Queue is full');\n }\n }\n\n const operation: QueuedOperation = {\n id: this.generateId(),\n type,\n resource,\n endpoint,\n method,\n data,\n status: 'pending',\n createdAt: Date.now(),\n updatedAt: Date.now(),\n retryCount: 0,\n maxRetries: this.config.maxRetries,\n priority,\n };\n\n const insertIndex = this.queue.findIndex((op) => op.priority < priority);\n if (insertIndex === -1) {\n this.queue.push(operation);\n } else {\n this.queue.splice(insertIndex, 0, operation);\n }\n\n await this.saveQueue();\n this.events.onOperationAdded?.(operation);\n\n return operation.id;\n }\n\n getPendingOperations(): QueuedOperation[] {\n return this.queue.filter((op) => op.status === 'pending' || op.status === 'failed');\n }\n\n getOperation(id: string): QueuedOperation | undefined {\n return this.queue.find((op) => op.id === id);\n }\n\n async removeOperation(id: string): Promise<boolean> {\n const index = this.queue.findIndex((op) => op.id === id);\n if (index === -1) return false;\n\n this.queue.splice(index, 1);\n await this.saveQueue();\n return true;\n }\n\n async updateOperation(id: string, updates: Partial<QueuedOperation>): Promise<boolean> {\n const operation = this.queue.find((op) => op.id === id);\n if (!operation) return false;\n\n Object.assign(operation, { ...updates, updatedAt: Date.now() });\n await this.saveQueue();\n return true;\n }\n\n getStats(): QueueStats {\n return {\n total: this.queue.length,\n pending: this.queue.filter((op) => op.status === 'pending').length,\n processing: this.queue.filter((op) => op.status === 'processing').length,\n completed: this.queue.filter((op) => op.status === 'completed').length,\n failed: this.queue.filter((op) => op.status === 'failed').length,\n };\n }\n\n async clearQueue(): Promise<void> {\n this.queue = [];\n await this.saveQueue();\n }\n\n async clearCompleted(): Promise<void> {\n this.queue = this.queue.filter((op) => op.status !== 'completed');\n await this.saveQueue();\n }\n\n async clearFailed(): Promise<void> {\n this.queue = this.queue.filter((op) => op.status !== 'failed');\n await this.saveQueue();\n }\n\n async retryFailed(): Promise<void> {\n for (const operation of this.queue.filter((op) => op.status === 'failed')) {\n if (operation.retryCount < operation.maxRetries) {\n operation.status = 'pending';\n operation.retryCount++;\n operation.updatedAt = Date.now();\n delete operation.error;\n }\n }\n await this.saveQueue();\n }\n\n getNextBatch(): QueuedOperation[] {\n return this.queue\n .filter((op) => op.status === 'pending')\n .sort((a, b) => b.priority - a.priority || a.createdAt - b.createdAt)\n .slice(0, this.config.batchSize);\n }\n\n isEmpty(): boolean {\n return this.getPendingOperations().length === 0;\n }\n\n startAutoSync(): void {\n if (this.syncIntervalId) return;\n\n this.syncIntervalId = setInterval(() => {\n if (!this.isEmpty() && !this.processing) {\n this.events.onQueueEmpty?.();\n }\n }, this.config.syncInterval);\n }\n\n stopAutoSync(): void {\n if (this.syncIntervalId) {\n clearInterval(this.syncIntervalId);\n this.syncIntervalId = undefined;\n }\n }\n\n setProcessing(value: boolean): void {\n this.processing = value;\n }\n\n isCurrentlyProcessing(): boolean {\n return this.processing;\n }\n\n private async loadQueue(): Promise<void> {\n try {\n const queueData = await this.storage.get(OperationQueue.QUEUE_KEY);\n if (queueData) {\n this.queue = JSON.parse(queueData);\n this.queue.forEach((op) => {\n if (op.status === 'processing') {\n op.status = 'pending';\n }\n });\n }\n } catch {\n this.queue = [];\n }\n }\n\n private async saveQueue(): Promise<void> {\n try {\n await this.storage.set(OperationQueue.QUEUE_KEY, JSON.stringify(this.queue));\n } catch (error) {\n this.events.onError?.(new Error(`Failed to save queue: ${error}`));\n }\n }\n\n private generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n }\n\n destroy(): void {\n this.stopAutoSync();\n }\n}\n","import { Subject, Subscription } from 'rxjs';\nimport { filter, pairwise, startWith, takeUntil } from 'rxjs/operators';\n\nimport { INetworkPort as INetworkMonitor } from '@/application/ports/driven';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport {\n BatchSyncResult,\n QueueConfig,\n QueueEvents,\n QueuedOperation,\n SyncResult,\n SyncStatus,\n} from '@/domain/entities/offline.entity';\n\nimport { OperationQueue } from './queue';\n\nexport class SyncManager {\n private isOnline = true;\n private readonly destroy$ = new Subject<void>();\n private networkSubscription?: Subscription;\n\n constructor(\n private queue: OperationQueue,\n private httpPort: IHttpPort,\n private networkMonitor: INetworkMonitor,\n private config: QueueConfig,\n private events: QueueEvents = {}\n ) {\n this.setupNetworkMonitoring();\n }\n\n private setupNetworkMonitoring(): void {\n // Subscribe to online$ to track current state\n this.networkSubscription = this.networkMonitor.online$\n .pipe(\n startWith(true), // Assume online initially\n pairwise(),\n filter(([wasOnline, isNowOnline]) => !wasOnline && isNowOnline),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n // Offline → Online transition detected\n this.syncPendingOperations();\n });\n\n // Track current online state\n this.networkMonitor.online$.pipe(takeUntil(this.destroy$)).subscribe((online) => {\n this.isOnline = online;\n });\n }\n\n async syncPendingOperations(): Promise<BatchSyncResult> {\n if (!this.isOnline) {\n throw new Error('Cannot sync while offline');\n }\n\n if (this.queue.isCurrentlyProcessing()) {\n throw new Error('Sync already in progress');\n }\n\n this.queue.setProcessing(true);\n\n try {\n const results: SyncResult[] = [];\n let successCount = 0;\n let failureCount = 0;\n\n while (!this.queue.isEmpty()) {\n const batch = this.queue.getNextBatch();\n if (batch.length === 0) break;\n\n const batchPromises = batch.map((operation) => this.processOperation(operation));\n const batchResults = await Promise.allSettled(batchPromises);\n\n batchResults.forEach((result, index) => {\n const operation = batch[index];\n if (!operation) return;\n\n if (result.status === 'fulfilled') {\n const syncResult = result.value;\n results.push(syncResult);\n\n if (syncResult.success) {\n successCount++;\n this.events.onOperationCompleted?.(syncResult);\n } else {\n failureCount++;\n this.events.onOperationFailed?.(syncResult);\n }\n } else {\n const syncResult: SyncResult = {\n operation,\n success: false,\n error: result.reason?.message || 'Unknown error',\n };\n\n results.push(syncResult);\n failureCount++;\n this.events.onOperationFailed?.(syncResult);\n\n this.queue.updateOperation(operation.id, {\n status: 'failed',\n error: syncResult.error,\n });\n }\n });\n\n if (!this.queue.isEmpty()) {\n await this.delay(500);\n }\n }\n\n const batchResult: BatchSyncResult = {\n totalOperations: results.length,\n successCount,\n failureCount,\n results,\n };\n\n this.events.onBatchSyncCompleted?.(batchResult);\n\n if (this.queue.isEmpty()) {\n this.events.onQueueEmpty?.();\n }\n\n return batchResult;\n } finally {\n this.queue.setProcessing(false);\n }\n }\n\n private async processOperation(operation: QueuedOperation): Promise<SyncResult> {\n await this.queue.updateOperation(operation.id, { status: 'processing' });\n\n try {\n const response = await this.executeOperation(operation);\n\n await this.queue.updateOperation(operation.id, { status: 'completed' });\n\n return { operation, success: true, response };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n\n if (operation.retryCount < operation.maxRetries && this.isRetryableError(error)) {\n const delay = this.calculateRetryDelay(operation.retryCount);\n\n await this.queue.updateOperation(operation.id, {\n status: 'pending',\n retryCount: operation.retryCount + 1,\n error: errorMessage,\n });\n\n setTimeout(() => {\n if (this.isOnline && !this.queue.isCurrentlyProcessing()) {\n this.syncPendingOperations();\n }\n }, delay);\n\n return { operation, success: false, error: `Retrying: ${errorMessage}` };\n } else {\n await this.queue.updateOperation(operation.id, {\n status: 'failed',\n error: errorMessage,\n });\n\n return { operation, success: false, error: errorMessage };\n }\n }\n }\n\n private async executeOperation(operation: QueuedOperation): Promise<unknown> {\n const { method, endpoint, data, headers } = operation;\n const config = headers ? { headers } : undefined;\n\n switch (method) {\n case 'GET':\n return (await this.httpPort.get(endpoint, config)).data;\n case 'POST':\n return (await this.httpPort.post(endpoint, data, config)).data;\n case 'PUT':\n return (await this.httpPort.put(endpoint, data, config)).data;\n case 'PATCH':\n return (await this.httpPort.patch(endpoint, data, config)).data;\n case 'DELETE':\n return (await this.httpPort.delete(endpoint, config)).data;\n default:\n throw new Error(`Unsupported HTTP method: ${method}`);\n }\n }\n\n private isRetryableError(error: unknown): boolean {\n const errorObj = error as { code?: string; statusCode?: number };\n\n if (errorObj.code === 'NETWORK_ERROR') return true;\n if (errorObj.statusCode && errorObj.statusCode >= 500) return true;\n if (errorObj.statusCode === 429) return true;\n\n const errorMessage = (error as Error)?.message;\n if (errorObj.code === 'ECONNABORTED' || errorMessage?.includes('timeout')) return true;\n\n return false;\n }\n\n private calculateRetryDelay(retryCount: number): number {\n const delay = this.config.retryDelay * Math.pow(this.config.backoffMultiplier, retryCount);\n return Math.min(delay, this.config.maxRetryDelay);\n }\n\n private delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n isCurrentlyOnline(): boolean {\n return this.isOnline;\n }\n\n async triggerSync(): Promise<BatchSyncResult | null> {\n if (!this.isOnline) return null;\n\n if (this.queue.isEmpty()) {\n return { totalOperations: 0, successCount: 0, failureCount: 0, results: [] };\n }\n\n return await this.syncPendingOperations();\n }\n\n getSyncStatus(): SyncStatus {\n return {\n isOnline: this.isOnline,\n isProcessing: this.queue.isCurrentlyProcessing(),\n queueStats: this.queue.getStats(),\n };\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.networkSubscription?.unsubscribe();\n }\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport {\n ICachePort as ICacheAdapter,\n INetworkPort as INetworkMonitor,\n IStoragePort as IStorage,\n} from '@/application/ports/driven';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport {\n BatchSyncResult,\n DEFAULT_QUEUE_CONFIG,\n OperationType,\n QueueConfig,\n QueueEvents,\n QueuedOperation,\n ResourceType,\n SyncStatus,\n} from '@/domain/entities/offline.entity';\n\nimport { OperationQueue } from './queue';\nimport { SyncManager } from './sync-manager';\n\nexport class OfflineManager {\n private queue: OperationQueue;\n private syncManager: SyncManager;\n private readonly queueSubject = new BehaviorSubject<QueuedOperation[]>([]);\n private readonly syncStatusSubject = new BehaviorSubject<SyncStatus>({\n isOnline: true,\n isProcessing: false,\n queueStats: { total: 0, pending: 0, processing: 0, completed: 0, failed: 0 },\n });\n private readonly destroy$ = new Subject<void>();\n\n get queue$(): Observable<QueuedOperation[]> {\n return this.queueSubject.asObservable();\n }\n\n get syncStatus$(): Observable<SyncStatus> {\n return this.syncStatusSubject.asObservable();\n }\n\n constructor(\n storage: IStorage,\n httpPort: IHttpPort,\n networkMonitor: INetworkMonitor,\n config: Partial<QueueConfig> = {},\n events: QueueEvents = {},\n _cache?: ICacheAdapter\n ) {\n const finalConfig = { ...DEFAULT_QUEUE_CONFIG, ...config };\n\n const wrappedEvents: QueueEvents = {\n ...events,\n onOperationAdded: (op) => {\n this.updateQueueState();\n events.onOperationAdded?.(op);\n },\n onOperationCompleted: (result) => {\n this.updateQueueState();\n events.onOperationCompleted?.(result);\n },\n onOperationFailed: (result) => {\n this.updateQueueState();\n events.onOperationFailed?.(result);\n },\n onBatchSyncCompleted: (result) => {\n this.updateQueueState();\n events.onBatchSyncCompleted?.(result);\n },\n };\n\n this.queue = new OperationQueue(storage, finalConfig, wrappedEvents);\n this.syncManager = new SyncManager(\n this.queue,\n httpPort,\n networkMonitor,\n finalConfig,\n wrappedEvents\n );\n\n this.updateQueueState();\n }\n\n private updateQueueState(): void {\n this.queueSubject.next(this.queue.getPendingOperations());\n this.syncStatusSubject.next(this.syncManager.getSyncStatus());\n }\n\n async queueOperation(\n type: OperationType,\n resource: ResourceType,\n endpoint: string,\n method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE',\n data?: unknown,\n priority: number = 1\n ): Promise<string> {\n const id = await this.queue.addOperation(type, resource, endpoint, method, data, priority);\n this.updateQueueState();\n return id;\n }\n\n async queueReceiptCreation(receiptData: unknown, priority: number = 2): Promise<string> {\n return await this.queueOperation(\n 'CREATE',\n 'receipt',\n '/mf1/receipts',\n 'POST',\n receiptData,\n priority\n );\n }\n\n async queueReceiptVoid(voidData: unknown, priority: number = 3): Promise<string> {\n return await this.queueOperation(\n 'DELETE',\n 'receipt',\n '/mf1/receipts',\n 'DELETE',\n voidData,\n priority\n );\n }\n\n async queueReceiptReturn(returnData: unknown, priority: number = 3): Promise<string> {\n return await this.queueOperation(\n 'CREATE',\n 'receipt',\n '/mf1/receipts/return',\n 'POST',\n returnData,\n priority\n );\n }\n\n async queueCashierCreation(cashierData: unknown, priority: number = 1): Promise<string> {\n return await this.queueOperation(\n 'CREATE',\n 'cashier',\n '/mf1/cashiers',\n 'POST',\n cashierData,\n priority\n );\n }\n\n isOnline(): boolean {\n return this.syncManager.isCurrentlyOnline();\n }\n\n getStatus() {\n return this.syncManager.getSyncStatus();\n }\n\n getPendingCount(): number {\n return this.queue.getPendingOperations().length;\n }\n\n isEmpty(): boolean {\n return this.queue.isEmpty();\n }\n\n async sync(): Promise<BatchSyncResult | null> {\n const result = await this.syncManager.triggerSync();\n this.updateQueueState();\n return result;\n }\n\n async retryFailed(): Promise<void> {\n await this.queue.retryFailed();\n this.updateQueueState();\n if (this.isOnline()) {\n await this.sync();\n }\n }\n\n async clearCompleted(): Promise<void> {\n await this.queue.clearCompleted();\n this.updateQueueState();\n }\n\n async clearFailed(): Promise<void> {\n await this.queue.clearFailed();\n this.updateQueueState();\n }\n\n async clearAll(): Promise<void> {\n await this.queue.clearQueue();\n this.updateQueueState();\n }\n\n getOperation(id: string) {\n return this.queue.getOperation(id);\n }\n\n async removeOperation(id: string): Promise<boolean> {\n const result = await this.queue.removeOperation(id);\n this.updateQueueState();\n return result;\n }\n\n getQueueStats() {\n return this.queue.getStats();\n }\n\n startAutoSync(): void {\n this.queue.startAutoSync();\n }\n\n stopAutoSync(): void {\n this.queue.stopAutoSync();\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.queue.destroy();\n this.syncManager.destroy();\n }\n}\n","import {\n CompressionResult,\n DecompressionResult,\n ICompressionPort,\n} from '@/application/ports/driven/compression.port';\n\nexport class CompressionAdapter implements ICompressionPort {\n compress(data: string, threshold: number = 1024): CompressionResult {\n const originalSize = data.length * 2;\n\n if (originalSize < threshold) {\n return {\n data,\n compressed: false,\n originalSize,\n compressedSize: originalSize,\n };\n }\n\n try {\n const compressed = this.compressString(data);\n const compressedSize = compressed.length * 2;\n\n if (compressedSize < originalSize) {\n return {\n data: compressed,\n compressed: true,\n originalSize,\n compressedSize,\n };\n }\n\n return {\n data,\n compressed: false,\n originalSize,\n compressedSize: originalSize,\n };\n } catch {\n return {\n data,\n compressed: false,\n originalSize,\n compressedSize: originalSize,\n };\n }\n }\n\n decompress(data: string, compressed: boolean): DecompressionResult {\n if (!compressed) {\n return { data, wasCompressed: false };\n }\n\n try {\n const decompressed = this.decompressString(data);\n return { data: decompressed, wasCompressed: true };\n } catch {\n return { data, wasCompressed: false };\n }\n }\n\n estimateSavings(data: string): number {\n const repeated = data.match(/(.)\\1{3,}/g);\n if (!repeated) return 0;\n\n let savings = 0;\n for (const match of repeated) {\n const originalBytes = match.length * 2;\n const compressedBytes = 6;\n if (originalBytes > compressedBytes) {\n savings += originalBytes - compressedBytes;\n }\n }\n\n return Math.min(savings, data.length * 2 * 0.5);\n }\n\n private compressString(input: string): string {\n let compressed = '';\n let i = 0;\n\n while (i < input.length) {\n let count = 1;\n const char = input[i];\n\n while (i + count < input.length && input[i + count] === char && count < 255) {\n count++;\n }\n\n if (count > 3) {\n compressed += `~${count}${char}`;\n } else {\n for (let j = 0; j < count; j++) {\n compressed += char;\n }\n }\n\n i += count;\n }\n\n return `COMP:${btoa(compressed)}`;\n }\n\n private decompressString(input: string): string {\n if (!input.startsWith('COMP:')) {\n return input;\n }\n\n const encodedData = input.substring(5);\n if (!encodedData) {\n return input;\n }\n\n const compressed = atob(encodedData);\n let decompressed = '';\n let i = 0;\n\n while (i < compressed.length) {\n if (compressed[i] === '~' && i + 2 < compressed.length) {\n let countStr = '';\n i++;\n\n while (i < compressed.length) {\n const char = compressed[i];\n if (char && /\\d/.test(char)) {\n countStr += char;\n i++;\n } else {\n break;\n }\n }\n\n if (countStr && i < compressed.length) {\n const count = parseInt(countStr, 10);\n const char = compressed[i];\n\n for (let j = 0; j < count; j++) {\n decompressed += char;\n }\n i++;\n }\n } else {\n decompressed += compressed[i];\n i++;\n }\n }\n\n return decompressed;\n }\n}\n\nexport function compressData(data: string, threshold: number = 1024): CompressionResult {\n return new CompressionAdapter().compress(data, threshold);\n}\n\nexport function decompressData(data: string, compressed: boolean): DecompressionResult {\n return new CompressionAdapter().decompress(data, compressed);\n}\n\nexport function estimateCompressionSavings(data: string): number {\n return new CompressionAdapter().estimateSavings(data);\n}\n","import {\n CacheOptions,\n CacheSize,\n CachedItem,\n ICachePort as ICacheAdapter,\n} from '@/application/ports/driven';\nimport { compressData, decompressData } from '@/infrastructure/driven/cache/compression.adapter';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nimport {\n CacheRow,\n ExpoSQLiteDatabase,\n RNSQLiteDatabase,\n SQLiteColumnInfo,\n SQLiteExecuteResult,\n SQLiteParams,\n SQLiteTransaction,\n} from './types';\n\nconst log = createPrefixedLogger('CACHE-RN');\n\n/**\n * React Native cache adapter using SQLite (Expo or react-native-sqlite-storage)\n * Cache never expires - data persists until explicitly invalidated\n */\nexport class ReactNativeCacheAdapter implements ICacheAdapter {\n private static readonly DB_NAME = 'acube_cache.db';\n private static readonly TABLE_NAME = 'cache_entries';\n\n private db: ExpoSQLiteDatabase | RNSQLiteDatabase | null = null;\n private initPromise: Promise<void> | null = null;\n private options: CacheOptions;\n private isExpo = false;\n private hasCompressedColumn = false;\n\n constructor(options: CacheOptions = {}) {\n this.options = {\n maxSize: 50 * 1024 * 1024, // 50MB\n maxEntries: 10000,\n compression: false,\n compressionThreshold: 1024,\n ...options,\n };\n this.initPromise = this.initialize();\n }\n\n private normalizeResults<T = CacheRow>(results: SQLiteExecuteResult): T[] {\n if (this.isExpo) {\n const expoResults = results as { results?: T[] } | T[];\n if (Array.isArray(expoResults)) {\n return expoResults;\n }\n return expoResults.results || [];\n } else {\n const rnResults = results as { rows?: { length: number; item(i: number): T } };\n const rows = rnResults.rows;\n if (!rows || rows.length === 0) return [];\n\n const normalizedRows: T[] = [];\n for (let i = 0; i < rows.length; i++) {\n normalizedRows.push(rows.item(i));\n }\n return normalizedRows;\n }\n }\n\n private async initialize(): Promise<void> {\n if (this.db) return;\n\n try {\n // Try Expo SQLite first\n const ExpoSQLite = require('expo-sqlite');\n this.db = await ExpoSQLite.openDatabaseAsync(ReactNativeCacheAdapter.DB_NAME);\n this.isExpo = true;\n await this.createTables();\n } catch (expoError) {\n try {\n // Fallback to react-native-sqlite-storage\n const SQLite = require('react-native-sqlite-storage');\n\n this.db = await new Promise<RNSQLiteDatabase>((resolve, reject) => {\n SQLite.openDatabase(\n {\n name: ReactNativeCacheAdapter.DB_NAME,\n location: 'default',\n },\n resolve,\n reject\n );\n });\n\n this.isExpo = false;\n await this.createTables();\n } catch (rnError) {\n throw new Error(\n `Failed to initialize SQLite: Expo error: ${expoError}, RN error: ${rnError}`\n );\n }\n }\n }\n\n private async createTables(): Promise<void> {\n // Create table with simplified schema (no TTL)\n const createTableSQL = `\n CREATE TABLE IF NOT EXISTS ${ReactNativeCacheAdapter.TABLE_NAME} (\n cache_key TEXT PRIMARY KEY,\n data TEXT NOT NULL,\n timestamp INTEGER NOT NULL\n );\n\n CREATE INDEX IF NOT EXISTS idx_timestamp ON ${ReactNativeCacheAdapter.TABLE_NAME}(timestamp);\n `;\n\n await this.executeSql(createTableSQL);\n\n // Then, run migrations to add new columns if they don't exist\n await this.runMigrations();\n }\n\n private async runMigrations(): Promise<void> {\n log.debug('Running database migrations...');\n\n try {\n // Check if compressed column exists\n this.hasCompressedColumn = await this.checkColumnExists('compressed');\n\n if (!this.hasCompressedColumn) {\n log.debug('Adding compressed column to cache table');\n const addColumnSQL = `ALTER TABLE ${ReactNativeCacheAdapter.TABLE_NAME} ADD COLUMN compressed INTEGER DEFAULT 0`;\n await this.executeSql(addColumnSQL);\n this.hasCompressedColumn = true;\n log.debug('Successfully added compressed column');\n } else {\n log.debug('Compressed column already exists');\n }\n\n log.debug('Database migrations completed', {\n hasCompressedColumn: this.hasCompressedColumn,\n });\n } catch (error) {\n log.debug('Migration failed, disabling compression features', error);\n this.hasCompressedColumn = false;\n // Don't throw - allow the app to continue even if migration fails\n // The compressed feature will just be disabled\n }\n }\n\n private async checkColumnExists(columnName: string): Promise<boolean> {\n try {\n const pragmaSQL = `PRAGMA table_info(${ReactNativeCacheAdapter.TABLE_NAME})`;\n const results = await this.executeSql(pragmaSQL);\n const columns = this.normalizeResults<SQLiteColumnInfo>(results);\n\n log.debug('Table columns found', { columns: columns.map((c) => c.name) });\n\n return columns.some((column) => column.name === columnName);\n } catch (error) {\n log.debug('Error checking column existence', error);\n return false;\n }\n }\n\n async get<T>(key: string): Promise<CachedItem<T> | null> {\n await this.ensureInitialized();\n\n const sql = `SELECT * FROM ${ReactNativeCacheAdapter.TABLE_NAME} WHERE cache_key = ?`;\n log.debug('Executing get query', { sql, key });\n const results = await this.executeSql(sql, [key]);\n log.debug('Get query results', { key, hasResults: !!results });\n\n // Normalize results from different SQLite implementations\n const rows = this.normalizeResults(results);\n\n if (!rows || rows.length === 0) {\n return null;\n }\n\n const row = rows[0];\n if (!row) {\n return null;\n }\n\n const isCompressed = this.hasCompressedColumn ? !!row.compressed : false;\n const rawData = isCompressed ? decompressData(row.data, true).data : row.data;\n\n return {\n data: JSON.parse(rawData),\n timestamp: row.timestamp,\n compressed: isCompressed,\n };\n }\n\n async set<T>(key: string, data: T): Promise<void> {\n const item: CachedItem<T> = {\n data,\n timestamp: Date.now(),\n };\n\n log.debug('Setting cache item', { key });\n\n return this.setItem(key, item);\n }\n\n async setItem<T>(key: string, item: CachedItem<T>): Promise<void> {\n await this.ensureInitialized();\n\n // Handle compression if enabled and compressed column is available\n const serializedData = JSON.stringify(item.data);\n let finalData = serializedData;\n let isCompressed = false;\n\n if (this.options.compression && this.options.compressionThreshold && this.hasCompressedColumn) {\n const compressionResult = compressData(serializedData, this.options.compressionThreshold);\n finalData = compressionResult.data;\n isCompressed = compressionResult.compressed;\n\n log.debug('Compression result', {\n key,\n originalSize: compressionResult.originalSize,\n compressedSize: compressionResult.compressedSize,\n compressed: isCompressed,\n savings: compressionResult.originalSize - compressionResult.compressedSize,\n });\n }\n\n log.debug('Setting item with metadata', {\n key,\n timestamp: item.timestamp,\n compressed: isCompressed,\n hasCompressedColumn: this.hasCompressedColumn,\n });\n\n // Build SQL and parameters based on available columns\n let sql: string;\n let params: SQLiteParams;\n\n if (this.hasCompressedColumn) {\n sql = `\n INSERT OR REPLACE INTO ${ReactNativeCacheAdapter.TABLE_NAME}\n (cache_key, data, timestamp, compressed)\n VALUES (?, ?, ?, ?)\n `;\n params = [key, finalData, item.timestamp, isCompressed ? 1 : 0];\n } else {\n // Fallback for databases without compressed column\n sql = `\n INSERT OR REPLACE INTO ${ReactNativeCacheAdapter.TABLE_NAME}\n (cache_key, data, timestamp)\n VALUES (?, ?, ?)\n `;\n params = [key, finalData, item.timestamp];\n }\n\n log.debug('Executing setItem SQL', { key, paramsCount: params.length });\n\n await this.executeSql(sql, params);\n }\n\n async setBatch<T>(items: Array<[string, CachedItem<T>]>): Promise<void> {\n if (items.length === 0) return;\n\n await this.ensureInitialized();\n\n log.debug('Batch setting items', { count: items.length });\n\n if (this.isExpo) {\n await (this.db as ExpoSQLiteDatabase).withTransactionAsync(async () => {\n for (const [key, item] of items) {\n await this.setBatchItem(key, item);\n }\n });\n } else {\n return new Promise<void>((resolve, reject) => {\n (this.db as RNSQLiteDatabase).transaction(\n (tx: SQLiteTransaction) => {\n const promises = items.map(([key, item]) => this.setBatchItemRN(tx, key, item));\n Promise.all(promises)\n .then(() => resolve())\n .catch(reject);\n },\n reject,\n () => resolve()\n );\n });\n }\n\n log.debug('Batch operation completed', { count: items.length });\n }\n\n private async setBatchItem<T>(key: string, item: CachedItem<T>): Promise<void> {\n // Handle compression if enabled and compressed column is available\n const serializedData = JSON.stringify(item.data);\n let finalData = serializedData;\n let isCompressed = false;\n\n if (this.options.compression && this.options.compressionThreshold && this.hasCompressedColumn) {\n const compressionResult = compressData(serializedData, this.options.compressionThreshold);\n finalData = compressionResult.data;\n isCompressed = compressionResult.compressed;\n }\n\n // Build SQL and parameters based on available columns\n let sql: string;\n let params: SQLiteParams;\n\n if (this.hasCompressedColumn) {\n sql = `\n INSERT OR REPLACE INTO ${ReactNativeCacheAdapter.TABLE_NAME}\n (cache_key, data, timestamp, compressed)\n VALUES (?, ?, ?, ?)\n `;\n params = [key, finalData, item.timestamp, isCompressed ? 1 : 0];\n } else {\n sql = `\n INSERT OR REPLACE INTO ${ReactNativeCacheAdapter.TABLE_NAME}\n (cache_key, data, timestamp)\n VALUES (?, ?, ?)\n `;\n params = [key, finalData, item.timestamp];\n }\n\n await (this.db as ExpoSQLiteDatabase).runAsync(sql, params);\n }\n\n private async setBatchItemRN<T>(\n tx: SQLiteTransaction,\n key: string,\n item: CachedItem<T>\n ): Promise<void> {\n // Handle compression if enabled and compressed column is available\n const serializedData = JSON.stringify(item.data);\n let finalData = serializedData;\n let isCompressed = false;\n\n if (this.options.compression && this.options.compressionThreshold && this.hasCompressedColumn) {\n const compressionResult = compressData(serializedData, this.options.compressionThreshold);\n finalData = compressionResult.data;\n isCompressed = compressionResult.compressed;\n }\n\n // Build SQL and parameters based on available columns\n let sql: string;\n let params: SQLiteParams;\n\n if (this.hasCompressedColumn) {\n sql = `\n INSERT OR REPLACE INTO ${ReactNativeCacheAdapter.TABLE_NAME}\n (cache_key, data, timestamp, compressed)\n VALUES (?, ?, ?, ?)\n `;\n params = [key, finalData, item.timestamp, isCompressed ? 1 : 0];\n } else {\n sql = `\n INSERT OR REPLACE INTO ${ReactNativeCacheAdapter.TABLE_NAME}\n (cache_key, data, timestamp)\n VALUES (?, ?, ?)\n `;\n params = [key, finalData, item.timestamp];\n }\n\n return new Promise<void>((resolve, reject) => {\n tx.executeSql(\n sql,\n params,\n () => resolve(),\n (_: SQLiteTransaction, error: Error) => {\n reject(error);\n return false;\n }\n );\n });\n }\n\n async invalidate(pattern: string): Promise<void> {\n await this.ensureInitialized();\n\n const keys = await this.getKeys(pattern);\n if (keys.length === 0) return;\n\n const placeholders = keys.map(() => '?').join(',');\n const sql = `DELETE FROM ${ReactNativeCacheAdapter.TABLE_NAME} WHERE cache_key IN (${placeholders})`;\n\n await this.executeSql(sql, keys);\n }\n\n async clear(): Promise<void> {\n await this.ensureInitialized();\n\n const sql = `DELETE FROM ${ReactNativeCacheAdapter.TABLE_NAME}`;\n await this.executeSql(sql);\n }\n\n async getSize(): Promise<CacheSize> {\n await this.ensureInitialized();\n\n const sql = `\n SELECT\n COUNT(*) as entries,\n SUM(LENGTH(data)) as bytes\n FROM ${ReactNativeCacheAdapter.TABLE_NAME}\n `;\n\n const results = await this.executeSql(sql);\n const rows = this.normalizeResults<{ entries: number; bytes: number }>(results);\n const row = rows[0] || { entries: 0, bytes: 0 };\n\n return {\n entries: row.entries || 0,\n bytes: (row.bytes || 0) * 2,\n lastCleanup: Date.now(),\n };\n }\n\n async cleanup(): Promise<number> {\n // No cleanup needed - cache never expires\n return 0;\n }\n\n async getKeys(pattern?: string): Promise<string[]> {\n await this.ensureInitialized();\n\n let sql = `SELECT cache_key FROM ${ReactNativeCacheAdapter.TABLE_NAME}`;\n const params: SQLiteParams = [];\n\n if (pattern) {\n // Simple pattern matching with LIKE\n const likePattern = pattern.replace(/\\*/g, '%').replace(/\\?/g, '_');\n sql += ' WHERE cache_key LIKE ?';\n params.push(likePattern);\n }\n\n const results = await this.executeSql(sql, params);\n const keys: string[] = [];\n\n const rows = this.normalizeResults(results);\n for (const row of rows) {\n keys.push(row.cache_key);\n }\n\n return keys;\n }\n\n private async executeSql(sql: string, params: SQLiteParams = []): Promise<SQLiteExecuteResult> {\n if (this.isExpo) {\n const expoDB = this.db as ExpoSQLiteDatabase;\n if (sql.toLowerCase().includes('select') || sql.toLowerCase().includes('pragma')) {\n const result = await expoDB.getAllAsync(sql, params);\n return Array.isArray(result) ? { results: result } : result;\n } else {\n return await expoDB.runAsync(sql, params);\n }\n } else {\n // react-native-sqlite-storage\n return new Promise((resolve, reject) => {\n (this.db as RNSQLiteDatabase).transaction((tx: SQLiteTransaction) => {\n tx.executeSql(\n sql,\n params,\n (_: SQLiteTransaction, results: SQLiteExecuteResult) => resolve(results),\n (_: SQLiteTransaction, error: Error) => {\n reject(error);\n return false;\n }\n );\n });\n });\n }\n }\n\n private async ensureInitialized(): Promise<void> {\n if (!this.initPromise) {\n this.initPromise = this.initialize();\n }\n await this.initPromise;\n }\n}\n\n/**\n * Memory-based fallback cache adapter for environments without SQLite\n * Cache never expires - data persists until explicitly invalidated\n */\nexport class MemoryCacheAdapter implements ICacheAdapter {\n private cache = new Map<string, CachedItem<unknown>>();\n private options: CacheOptions;\n private totalBytes = 0;\n\n constructor(options: CacheOptions = {}) {\n this.options = {\n maxEntries: 1000,\n ...options,\n };\n }\n\n private calculateItemSize(key: string, item: CachedItem<unknown>): number {\n // Calculate rough size estimation for memory usage\n const keySize = key.length * 2; // UTF-16 estimation\n const itemSize = JSON.stringify(item).length * 2; // UTF-16 estimation\n return keySize + itemSize;\n }\n\n async get<T>(key: string): Promise<CachedItem<T> | null> {\n log.debug('Getting cache item', { key });\n const item = this.cache.get(key);\n if (!item) {\n log.debug('Cache miss', { key });\n return null;\n }\n\n // Handle decompression if needed\n const isCompressed = !!item.compressed;\n let finalData = item.data;\n\n if (isCompressed) {\n const decompressed = decompressData(item.data as string, true);\n finalData = JSON.parse(decompressed.data);\n }\n\n log.debug('Cache hit', { key, compressed: isCompressed });\n\n return {\n ...item,\n data: finalData as T,\n compressed: isCompressed,\n };\n }\n\n async set<T>(key: string, data: T): Promise<void> {\n log.debug('Setting cache item', { key });\n\n // Handle compression if enabled\n let finalData: T | string = data;\n let isCompressed = false;\n\n if (this.options.compression && this.options.compressionThreshold) {\n const serializedData = JSON.stringify(data);\n const compressionResult = compressData(serializedData, this.options.compressionThreshold);\n\n if (compressionResult.compressed) {\n finalData = compressionResult.data;\n isCompressed = true;\n\n log.debug('Compression result', {\n key,\n originalSize: compressionResult.originalSize,\n compressedSize: compressionResult.compressedSize,\n savings: compressionResult.originalSize - compressionResult.compressedSize,\n });\n }\n }\n\n const item: CachedItem<T | string> = {\n data: finalData,\n timestamp: Date.now(),\n compressed: isCompressed,\n };\n\n return this.setItem(key, item);\n }\n\n async setItem<T>(key: string, item: CachedItem<T>): Promise<void> {\n // Calculate size of new item\n const newItemSize = this.calculateItemSize(key, item);\n\n // If item already exists, subtract old size\n if (this.cache.has(key)) {\n const oldItem = this.cache.get(key)!;\n const oldItemSize = this.calculateItemSize(key, oldItem);\n this.totalBytes -= oldItemSize;\n }\n\n // Enforce max entries limit\n if (this.cache.size >= (this.options.maxEntries || 1000) && !this.cache.has(key)) {\n const oldestKey = this.cache.keys().next().value;\n if (oldestKey) {\n const oldestItem = this.cache.get(oldestKey)!;\n const oldestItemSize = this.calculateItemSize(oldestKey, oldestItem);\n this.totalBytes -= oldestItemSize;\n this.cache.delete(oldestKey);\n log.debug('Removed oldest item for capacity', { oldestKey, freedBytes: oldestItemSize });\n }\n }\n\n // Set new item and update total size\n this.cache.set(key, item);\n this.totalBytes += newItemSize;\n\n log.debug('Updated cache size', {\n entries: this.cache.size,\n totalBytes: this.totalBytes,\n newItemSize,\n });\n }\n\n async setBatch<T>(items: Array<[string, CachedItem<T>]>): Promise<void> {\n if (items.length === 0) return;\n\n log.debug('Batch setting items', { count: items.length });\n\n let totalNewBytes = 0;\n let totalOldBytes = 0;\n const itemsToRemove: string[] = [];\n\n // First pass: calculate size changes and identify capacity issues\n for (const [key, item] of items) {\n const newItemSize = this.calculateItemSize(key, item);\n totalNewBytes += newItemSize;\n\n // If item already exists, track old size for removal\n if (this.cache.has(key)) {\n const oldItem = this.cache.get(key)!;\n const oldItemSize = this.calculateItemSize(key, oldItem);\n totalOldBytes += oldItemSize;\n }\n }\n\n // Handle capacity limits - remove oldest items if needed\n const projectedEntries = this.cache.size + items.filter(([key]) => !this.cache.has(key)).length;\n const maxEntries = this.options.maxEntries || 1000;\n\n if (projectedEntries > maxEntries) {\n const entriesToRemove = projectedEntries - maxEntries;\n const oldestKeys = Array.from(this.cache.keys()).slice(0, entriesToRemove);\n\n for (const oldKey of oldestKeys) {\n const oldItem = this.cache.get(oldKey)!;\n const oldItemSize = this.calculateItemSize(oldKey, oldItem);\n this.totalBytes -= oldItemSize;\n this.cache.delete(oldKey);\n itemsToRemove.push(oldKey);\n }\n\n if (itemsToRemove.length > 0) {\n log.debug('Removed items for batch capacity', {\n removedCount: itemsToRemove.length,\n removedKeys: itemsToRemove,\n });\n }\n }\n\n // Update total bytes accounting\n this.totalBytes = this.totalBytes - totalOldBytes + totalNewBytes;\n\n // Second pass: set all items\n for (const [key, item] of items) {\n this.cache.set(key, item);\n }\n\n log.debug('Batch operation completed', {\n count: items.length,\n totalBytes: this.totalBytes,\n entries: this.cache.size,\n bytesAdded: totalNewBytes - totalOldBytes,\n });\n }\n\n async invalidate(pattern: string): Promise<void> {\n const regex = this.patternToRegex(pattern);\n let removed = 0;\n let bytesFreed = 0;\n\n for (const key of this.cache.keys()) {\n if (regex.test(key)) {\n const item = this.cache.get(key)!;\n const itemSize = this.calculateItemSize(key, item);\n this.cache.delete(key);\n this.totalBytes -= itemSize;\n bytesFreed += itemSize;\n removed++;\n }\n }\n\n if (removed > 0) {\n log.debug('Invalidation completed', {\n pattern,\n entriesRemoved: removed,\n bytesFreed,\n remainingEntries: this.cache.size,\n remainingBytes: this.totalBytes,\n });\n }\n }\n\n async clear(): Promise<void> {\n this.cache.clear();\n this.totalBytes = 0;\n log.debug('Cache cleared', { entries: 0, bytes: 0 });\n }\n\n async getSize(): Promise<CacheSize> {\n return {\n entries: this.cache.size,\n bytes: this.totalBytes,\n lastCleanup: Date.now(),\n };\n }\n\n async cleanup(): Promise<number> {\n // No cleanup needed - cache never expires\n return 0;\n }\n\n async getKeys(pattern?: string): Promise<string[]> {\n const keys = Array.from(this.cache.keys());\n if (!pattern) return keys;\n\n const regex = this.patternToRegex(pattern);\n return keys.filter((key) => regex.test(key));\n }\n\n private patternToRegex(pattern: string): RegExp {\n const escaped = pattern.replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&');\n const regexPattern = escaped.replace(/\\\\\\*/g, '.*').replace(/\\\\\\?/g, '.');\n return new RegExp(`^${regexPattern}$`);\n }\n}\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst transactionDoneMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n // This mapping exists in reverseTransformCache but doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(this.request);\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n\nexport { deleteDB, openDB, unwrap, wrap };\n","import { IDBPDatabase, IDBPTransaction, deleteDB, openDB } from 'idb';\n\nimport {\n CacheOptions,\n CacheSize,\n CachedItem,\n ICachePort as ICacheAdapter,\n} from '@/application/ports/driven';\nimport { compressData, decompressData } from '@/infrastructure/driven/cache/compression.adapter';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('CACHE-WEB');\n\n/**\n * Web cache adapter using IndexedDB with automatic error recovery\n * Cache never expires - data persists until explicitly invalidated\n */\nexport class WebCacheAdapter implements ICacheAdapter {\n private static readonly DB_NAME = 'acube_cache';\n private static readonly DB_VERSION = 2;\n private static readonly STORE_NAME = 'cache_entries';\n\n private db: IDBPDatabase | null = null;\n private initPromise: Promise<void> | null = null;\n private options: CacheOptions;\n private retryCount = 0;\n private maxRetries = 3;\n\n constructor(options: CacheOptions = {}) {\n this.options = {\n maxSize: 50 * 1024 * 1024, // 50MB\n maxEntries: 10000,\n compression: false,\n compressionThreshold: 1024,\n ...options,\n };\n this.initPromise = this.initialize();\n }\n\n private async initialize(): Promise<void> {\n if (this.db) return;\n\n log.debug('Initializing IndexedDB cache', {\n dbName: WebCacheAdapter.DB_NAME,\n version: WebCacheAdapter.DB_VERSION,\n });\n\n try {\n this.db = await this.openDatabase();\n log.debug('IndexedDB cache initialized successfully');\n this.retryCount = 0; // Reset retry count on success\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n log.debug('Failed to initialize IndexedDB', { error: errorMessage });\n\n // Check if this is a version conflict error\n if (this.isVersionConflictError(errorMessage)) {\n await this.handleVersionConflict();\n } else {\n throw new Error(`Failed to initialize IndexedDB: ${errorMessage}`);\n }\n }\n }\n\n private async openDatabase(): Promise<IDBPDatabase> {\n return await openDB(WebCacheAdapter.DB_NAME, WebCacheAdapter.DB_VERSION, {\n upgrade: (db, oldVersion, newVersion, transaction) => {\n log.debug('Database upgrade needed', { oldVersion, newVersion });\n this.handleUpgrade(db, oldVersion, newVersion, transaction);\n },\n blocked: () => {\n log.debug('Database blocked - another tab may be open');\n },\n blocking: () => {\n log.debug('Database blocking - will close connection');\n if (this.db) {\n this.db.close();\n this.db = null;\n }\n },\n terminated: () => {\n log.debug('Database connection terminated unexpectedly');\n this.db = null;\n },\n });\n }\n\n private handleUpgrade(\n db: IDBPDatabase,\n oldVersion: number,\n newVersion: number | null,\n transaction: IDBPTransaction<unknown, string[], 'versionchange'>\n ): void {\n log.debug('Handling database upgrade', { oldVersion, newVersion });\n\n // Create cache store if it doesn't exist (initial setup)\n if (!db.objectStoreNames.contains(WebCacheAdapter.STORE_NAME)) {\n const store = db.createObjectStore(WebCacheAdapter.STORE_NAME, { keyPath: 'key' });\n store.createIndex('timestamp', 'timestamp', { unique: false });\n log.debug('Created cache store and timestamp index');\n }\n\n // Handle migration from version 1 to 2\n if (oldVersion < 2) {\n const store = transaction.objectStore(WebCacheAdapter.STORE_NAME);\n\n // Remove unused indexes from simplified cache structure\n const indexesToRemove = ['tags', 'source', 'syncStatus'];\n\n indexesToRemove.forEach((indexName) => {\n try {\n if (store.indexNames.contains(indexName)) {\n store.deleteIndex(indexName);\n log.debug(`Removed unused index: ${indexName}`);\n }\n } catch (error) {\n // Ignore errors if indexes don't exist\n log.debug(`Warning: Could not remove index ${indexName}`, error);\n }\n });\n }\n\n log.debug('Database upgrade completed');\n }\n\n private isVersionConflictError(errorMessage: string): boolean {\n return (\n errorMessage.includes('less than the existing version') ||\n errorMessage.includes('version conflict') ||\n errorMessage.includes('VersionError')\n );\n }\n\n private async handleVersionConflict(): Promise<void> {\n log.debug('Handling version conflict, attempting recovery...');\n\n if (this.retryCount >= this.maxRetries) {\n throw new Error('Failed to resolve IndexedDB version conflict after multiple attempts');\n }\n\n this.retryCount++;\n\n try {\n // Close any existing connection\n if (this.db) {\n this.db.close();\n this.db = null;\n }\n\n // Delete the problematic database\n log.debug('Deleting problematic database to resolve version conflict');\n await deleteDB(WebCacheAdapter.DB_NAME);\n\n // Wait a bit for the deletion to complete\n await new Promise((resolve) => setTimeout(resolve, 200));\n\n // Try to open the database again\n log.debug(`Retrying database initialization (attempt ${this.retryCount}/${this.maxRetries})`);\n this.db = await this.openDatabase();\n\n log.debug('Successfully recovered from version conflict');\n this.retryCount = 0; // Reset retry count on success\n } catch (retryError) {\n const retryErrorMessage = retryError instanceof Error ? retryError.message : 'Unknown error';\n log.debug('Recovery attempt failed', { attempt: this.retryCount, error: retryErrorMessage });\n\n if (this.retryCount < this.maxRetries) {\n // Try again\n await this.handleVersionConflict();\n } else {\n throw new Error(`Failed to recover from IndexedDB version conflict: ${retryErrorMessage}`);\n }\n }\n }\n\n async get<T>(key: string): Promise<CachedItem<T> | null> {\n await this.ensureInitialized();\n\n log.debug('Getting cache item', { key });\n\n try {\n const transaction = this.db!.transaction([WebCacheAdapter.STORE_NAME], 'readonly');\n const store = transaction.objectStore(WebCacheAdapter.STORE_NAME);\n const result = await store.get(key);\n\n if (!result) {\n return null;\n }\n\n const item = result as StoredCacheItem<T>;\n\n // Handle decompression if needed\n const isCompressed = !!item.compressed;\n let finalData: T;\n\n if (isCompressed) {\n const decompressed = decompressData(item.data as string, true);\n finalData = JSON.parse(decompressed.data) as T;\n } else {\n finalData = item.data as T;\n }\n\n return {\n data: finalData,\n timestamp: item.timestamp,\n compressed: isCompressed,\n };\n } catch (error) {\n log.debug('Error getting cache item', { key, error });\n return null; // Return null on error instead of throwing\n }\n }\n\n async set<T>(key: string, data: T): Promise<void> {\n const item: CachedItem<T> = {\n data,\n timestamp: Date.now(),\n };\n\n return this.setItem(key, item);\n }\n\n async setItem<T>(key: string, item: CachedItem<T>): Promise<void> {\n await this.ensureInitialized();\n\n // Handle compression if enabled\n let finalData: T | string = item.data;\n let isCompressed = false;\n\n if (this.options.compression && this.options.compressionThreshold) {\n const serializedData = JSON.stringify(item.data);\n const compressionResult = compressData(serializedData, this.options.compressionThreshold);\n\n if (compressionResult.compressed) {\n finalData = compressionResult.data;\n isCompressed = true;\n\n log.debug('Compression result', {\n key,\n originalSize: compressionResult.originalSize,\n compressedSize: compressionResult.compressedSize,\n compressed: isCompressed,\n savings: compressionResult.originalSize - compressionResult.compressedSize,\n });\n }\n }\n\n log.debug('Setting cache item', { key, timestamp: item.timestamp, compressed: isCompressed });\n\n const storedItem: StoredCacheItem<T | string> = {\n key,\n data: finalData,\n timestamp: item.timestamp,\n compressed: isCompressed,\n };\n\n try {\n const transaction = this.db!.transaction([WebCacheAdapter.STORE_NAME], 'readwrite');\n const store = transaction.objectStore(WebCacheAdapter.STORE_NAME);\n await store.put(storedItem);\n } catch (error) {\n log.debug('Error setting cache item', { key, error });\n // Silently fail for cache writes\n }\n }\n\n async setBatch<T>(items: Array<[string, CachedItem<T>]>): Promise<void> {\n if (items.length === 0) return;\n\n await this.ensureInitialized();\n\n log.debug('Batch setting items', { count: items.length });\n\n try {\n const transaction = this.db!.transaction([WebCacheAdapter.STORE_NAME], 'readwrite');\n const store = transaction.objectStore(WebCacheAdapter.STORE_NAME);\n\n // Process all items in the transaction\n const promises = items.map(([key, item]) => {\n const storedItem = this.prepareBatchItem(key, item);\n return store.put(storedItem);\n });\n\n await Promise.all(promises);\n log.debug('Batch operation completed', { count: items.length });\n } catch (error) {\n log.debug('Error in batch operation', { count: items.length, error });\n // Silently fail for batch writes\n }\n }\n\n private prepareBatchItem<T>(key: string, item: CachedItem<T>): StoredCacheItem<T | string> {\n // Handle compression if enabled (same logic as setItem)\n let finalData: T | string = item.data;\n let isCompressed = false;\n\n if (this.options.compression && this.options.compressionThreshold) {\n const serializedData = JSON.stringify(item.data);\n const compressionResult = compressData(serializedData, this.options.compressionThreshold);\n\n if (compressionResult.compressed) {\n finalData = compressionResult.data;\n isCompressed = true;\n }\n }\n\n return {\n key,\n data: finalData,\n timestamp: item.timestamp,\n compressed: isCompressed,\n };\n }\n\n async invalidate(pattern: string): Promise<void> {\n await this.ensureInitialized();\n\n const keys = await this.getKeys(pattern);\n const deletePromises = keys.map((key) => this.delete(key));\n await Promise.all(deletePromises);\n }\n\n async clear(): Promise<void> {\n await this.ensureInitialized();\n\n try {\n const transaction = this.db!.transaction([WebCacheAdapter.STORE_NAME], 'readwrite');\n const store = transaction.objectStore(WebCacheAdapter.STORE_NAME);\n await store.clear();\n log.debug('Cache cleared successfully');\n } catch (error) {\n log.debug('Error clearing cache', error);\n // Silently fail for cache clear\n }\n }\n\n async getSize(): Promise<CacheSize> {\n await this.ensureInitialized();\n\n try {\n const transaction = this.db!.transaction([WebCacheAdapter.STORE_NAME], 'readonly');\n const store = transaction.objectStore(WebCacheAdapter.STORE_NAME);\n\n let entries = 0;\n let bytes = 0;\n\n // Use cursor for efficient iteration\n let cursor = await store.openCursor();\n\n while (cursor) {\n entries++;\n // Rough estimation of size\n bytes += JSON.stringify(cursor.value).length * 2; // UTF-16 encoding\n cursor = await cursor.continue();\n }\n\n return {\n entries,\n bytes,\n lastCleanup: Date.now(),\n };\n } catch (error) {\n log.debug('Error getting cache size', error);\n return {\n entries: 0,\n bytes: 0,\n lastCleanup: Date.now(),\n };\n }\n }\n\n async cleanup(): Promise<number> {\n // No cleanup needed - cache never expires\n return 0;\n }\n\n async getKeys(pattern?: string): Promise<string[]> {\n await this.ensureInitialized();\n\n try {\n const transaction = this.db!.transaction([WebCacheAdapter.STORE_NAME], 'readonly');\n const store = transaction.objectStore(WebCacheAdapter.STORE_NAME);\n const allKeys = (await store.getAllKeys()) as string[];\n\n if (!pattern) {\n return allKeys;\n }\n\n const regex = this.patternToRegex(pattern);\n return allKeys.filter((key) => regex.test(key));\n } catch (error) {\n log.debug('Error getting cache keys', error);\n return [];\n }\n }\n\n private async delete(key: string): Promise<boolean> {\n await this.ensureInitialized();\n\n try {\n const transaction = this.db!.transaction([WebCacheAdapter.STORE_NAME], 'readwrite');\n const store = transaction.objectStore(WebCacheAdapter.STORE_NAME);\n await store.delete(key);\n return true;\n } catch (error) {\n log.debug('Error deleting cache item', { key, error });\n return false;\n }\n }\n\n private async ensureInitialized(): Promise<void> {\n if (!this.initPromise) {\n this.initPromise = this.initialize();\n }\n\n try {\n await this.initPromise;\n } catch (error) {\n log.debug('Failed to ensure initialization', error);\n // Reset and try once more\n this.initPromise = null;\n this.db = null;\n this.initPromise = this.initialize();\n await this.initPromise;\n }\n }\n\n private patternToRegex(pattern: string): RegExp {\n // Convert simple glob patterns to regex\n const escaped = pattern.replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&');\n const regexPattern = escaped.replace(/\\\\\\*/g, '.*').replace(/\\\\\\?/g, '.');\n return new RegExp(`^${regexPattern}$`);\n }\n}\n\n/**\n * Internal storage format for IndexedDB (no expiration)\n */\ninterface StoredCacheItem<T> {\n key: string;\n data: T;\n timestamp: number;\n compressed?: boolean;\n}\n","import { ICachePort as ICacheAdapter } from '@/application/ports/driven';\nimport {\n MemoryCacheAdapter,\n ReactNativeCacheAdapter,\n} from '@/infrastructure/driven/platforms/react-native/cache';\nimport { WebCacheAdapter } from '@/infrastructure/driven/platforms/web/cache';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('CACHE-LOADER');\n\nexport function loadCacheAdapter(platform: string): ICacheAdapter | undefined {\n try {\n switch (platform) {\n case 'web':\n return new WebCacheAdapter({\n maxSize: 50 * 1024 * 1024,\n maxEntries: 10000,\n compression: false,\n });\n case 'react-native':\n try {\n return new ReactNativeCacheAdapter({\n maxSize: 100 * 1024 * 1024,\n maxEntries: 15000,\n });\n } catch {\n return new MemoryCacheAdapter({\n maxSize: 10 * 1024 * 1024,\n maxEntries: 5000,\n });\n }\n case 'node':\n default:\n return new MemoryCacheAdapter({\n maxSize: 10 * 1024 * 1024,\n maxEntries: 5000,\n });\n }\n } catch (error) {\n log.warn(`Cache adapter not available for platform ${platform}:`, error);\n return undefined;\n }\n}\n\nexport const CACHE_CONFIG_BY_PLATFORM = {\n web: { maxSize: 50 * 1024 * 1024, maxEntries: 10000, compression: false },\n 'react-native': { maxSize: 100 * 1024 * 1024, maxEntries: 15000 },\n node: { maxSize: 10 * 1024 * 1024, maxEntries: 5000 },\n memory: { maxSize: 10 * 1024 * 1024, maxEntries: 5000 },\n} as const;\n","import { ISecureStoragePort, IStoragePort } from '@/application/ports/driven';\n\n/**\n * Base interface for storage adapters that implement get/set/remove\n */\ninterface StorageBase {\n get(key: string): Promise<string | null>;\n set(key: string, value: string): Promise<void>;\n remove(key: string): Promise<void>;\n}\n\n/**\n * Mixin that adds multiGet, multiSet, multiRemove to any storage adapter\n * Eliminates duplicate code across Node, Web, and React Native adapters\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withMultiOperations<T extends new (...args: any[]) => StorageBase>(Base: T) {\n return class extends Base {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(...args: any[]) {\n super(...args);\n }\n\n async multiGet(keys: string[]): Promise<Record<string, string | null>> {\n const result: Record<string, string | null> = {};\n for (const key of keys) {\n result[key] = await this.get(key);\n }\n return result;\n }\n\n async multiSet(items: Record<string, string>): Promise<void> {\n for (const [key, value] of Object.entries(items)) {\n await this.set(key, value);\n }\n }\n\n async multiRemove(keys: string[]): Promise<void> {\n for (const key of keys) {\n await this.remove(key);\n }\n }\n };\n}\n\n/**\n * Abstract base class for standard storage adapters\n * Implements multi-operations, subclasses implement core operations\n */\nexport abstract class BaseStorageAdapter implements IStoragePort {\n abstract get(key: string): Promise<string | null>;\n abstract set(key: string, value: string): Promise<void>;\n abstract remove(key: string): Promise<void>;\n abstract clear(): Promise<void>;\n abstract getAllKeys(): Promise<string[]>;\n\n async multiGet(keys: string[]): Promise<Record<string, string | null>> {\n const result: Record<string, string | null> = {};\n for (const key of keys) {\n result[key] = await this.get(key);\n }\n return result;\n }\n\n async multiSet(items: Record<string, string>): Promise<void> {\n for (const [key, value] of Object.entries(items)) {\n await this.set(key, value);\n }\n }\n\n async multiRemove(keys: string[]): Promise<void> {\n for (const key of keys) {\n await this.remove(key);\n }\n }\n}\n\n/**\n * Abstract base class for secure storage adapters\n * Implements multi-operations, subclasses implement core operations\n */\nexport abstract class BaseSecureStorageAdapter implements ISecureStoragePort {\n abstract get(key: string): Promise<string | null>;\n abstract set(key: string, value: string): Promise<void>;\n abstract remove(key: string): Promise<void>;\n abstract clear(): Promise<void>;\n abstract getAllKeys(): Promise<string[]>;\n abstract isAvailable(): Promise<boolean>;\n abstract getSecurityLevel(): Promise<string>;\n\n async multiGet(keys: string[]): Promise<Record<string, string | null>> {\n const result: Record<string, string | null> = {};\n for (const key of keys) {\n result[key] = await this.get(key);\n }\n return result;\n }\n\n async multiSet(items: Record<string, string>): Promise<void> {\n for (const [key, value] of Object.entries(items)) {\n await this.set(key, value);\n }\n }\n\n async multiRemove(keys: string[]): Promise<void> {\n for (const key of keys) {\n await this.remove(key);\n }\n }\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\n\nimport { INetworkPort, NetworkInfo, NetworkStatus } from '@/application/ports/driven';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('NETWORK-BASE');\n\nexport abstract class NetworkBase implements INetworkPort {\n protected readonly statusSubject: BehaviorSubject<NetworkStatus>;\n protected readonly destroy$ = new Subject<void>();\n protected readonly debounceMs: number;\n\n constructor(initialOnline: boolean = true, debounceMs: number = 300) {\n this.debounceMs = debounceMs;\n this.statusSubject = new BehaviorSubject<NetworkStatus>({\n online: initialOnline,\n timestamp: Date.now(),\n });\n }\n\n get status$(): Observable<NetworkStatus> {\n return this.statusSubject.asObservable().pipe(\n debounceTime(this.debounceMs),\n distinctUntilChanged((prev, curr) => prev.online === curr.online),\n takeUntil(this.destroy$)\n );\n }\n\n get online$(): Observable<boolean> {\n return this.status$.pipe(\n map((status) => status.online),\n distinctUntilChanged()\n );\n }\n\n abstract getNetworkInfo(): Promise<NetworkInfo | null>;\n\n protected updateStatus(online: boolean): void {\n const current = this.statusSubject.getValue();\n if (current.online !== online) {\n this.statusSubject.next({ online, timestamp: Date.now() });\n log.debug(`Network status changed: ${online ? 'online' : 'offline'}`);\n }\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.statusSubject.complete();\n log.debug('Network monitor destroyed');\n }\n}\n","import { BaseSecureStorageAdapter, BaseStorageAdapter } from '../shared';\n\n/**\n * Node.js storage adapter using in-memory storage (for testing)\n */\nexport class NodeStorageAdapter extends BaseStorageAdapter {\n private storage: Map<string, string> = new Map();\n\n async get(key: string): Promise<string | null> {\n return this.storage.get(key) || null;\n }\n\n async set(key: string, value: string): Promise<void> {\n this.storage.set(key, value);\n }\n\n async remove(key: string): Promise<void> {\n this.storage.delete(key);\n }\n\n async clear(): Promise<void> {\n this.storage.clear();\n }\n\n async getAllKeys(): Promise<string[]> {\n return Array.from(this.storage.keys());\n }\n}\n\n/**\n * Node.js secure storage adapter using in-memory storage (for testing)\n * In production, this should use OS-specific secure storage\n */\nexport class NodeSecureStorageAdapter extends BaseSecureStorageAdapter {\n private secureStorage: Map<string, string> = new Map();\n\n async get(key: string): Promise<string | null> {\n return this.secureStorage.get(key) || null;\n }\n\n async set(key: string, value: string): Promise<void> {\n this.secureStorage.set(key, value);\n }\n\n async remove(key: string): Promise<void> {\n this.secureStorage.delete(key);\n }\n\n async clear(): Promise<void> {\n this.secureStorage.clear();\n }\n\n async getAllKeys(): Promise<string[]> {\n return Array.from(this.secureStorage.keys());\n }\n\n async isAvailable(): Promise<boolean> {\n return true;\n }\n\n async getSecurityLevel(): Promise<string> {\n return 'In-memory storage (testing only - not secure)';\n }\n}\n","import { IStoragePort as IStorage } from '@/application/ports/driven';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nimport { BaseSecureStorageAdapter } from '../shared';\n\nconst log = createPrefixedLogger('RN-STORAGE');\n\n/**\n * Interfaces for React Native storage dependencies\n */\ninterface AsyncStorageInterface {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n clear(): Promise<void>;\n getAllKeys(): Promise<string[]>;\n multiGet(keys: string[]): Promise<[string, string | null][]>;\n multiSet(pairs: [string, string][]): Promise<void>;\n multiRemove(keys: string[]): Promise<void>;\n}\n\ninterface ExpoSecureStoreInterface {\n getItemAsync(key: string): Promise<string | null>;\n setItemAsync(key: string, value: string): Promise<void>;\n deleteItemAsync(key: string): Promise<void>;\n}\n\ninterface KeychainCredentials {\n password: string;\n username: string;\n service: string;\n}\n\ninterface KeychainInterface {\n getInternetCredentials(server: string): Promise<KeychainCredentials | false>;\n setInternetCredentials(server: string, username: string, password: string): Promise<void>;\n resetInternetCredentials(server: string): Promise<void>;\n}\n\n/**\n * React Native storage adapter using AsyncStorage\n * Note: Uses native batch operations for better performance (not base class)\n */\nexport class ReactNativeStorageAdapter implements IStorage {\n private AsyncStorage: AsyncStorageInterface | null = null;\n\n constructor() {\n this.initializeAsyncStorage();\n }\n\n private async initializeAsyncStorage() {\n try {\n const AsyncStorageModule = require('@react-native-async-storage/async-storage');\n this.AsyncStorage = AsyncStorageModule.default || AsyncStorageModule;\n } catch {\n try {\n const ReactNative = require('react-native');\n this.AsyncStorage = ReactNative.AsyncStorage;\n } catch {\n throw new Error(\n 'AsyncStorage not available. Please install @react-native-async-storage/async-storage'\n );\n }\n }\n }\n\n async get(key: string): Promise<string | null> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n return await this.AsyncStorage!.getItem(key);\n } catch (error) {\n log.error('Failed to get item from AsyncStorage:', error);\n return null;\n }\n }\n\n async set(key: string, value: string): Promise<void> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n await this.AsyncStorage!.setItem(key, value);\n } catch (error) {\n throw new Error(`Failed to store item: ${error}`);\n }\n }\n\n async remove(key: string): Promise<void> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n await this.AsyncStorage!.removeItem(key);\n } catch (error) {\n throw new Error(`Failed to remove item: ${error}`);\n }\n }\n\n async clear(): Promise<void> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n await this.AsyncStorage!.clear();\n } catch (error) {\n throw new Error(`Failed to clear storage: ${error}`);\n }\n }\n\n async getAllKeys(): Promise<string[]> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n return await this.AsyncStorage!.getAllKeys();\n } catch (error) {\n log.error('Failed to get all keys:', error);\n return [];\n }\n }\n\n // Uses native AsyncStorage batch operations for better performance\n async multiGet(keys: string[]): Promise<Record<string, string | null>> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n const pairs = await this.AsyncStorage!.multiGet(keys);\n const result: Record<string, string | null> = {};\n pairs.forEach(([key, value]: [string, string | null]) => {\n result[key] = value;\n });\n return result;\n } catch (error) {\n log.error('Failed to get multiple items:', error);\n const result: Record<string, string | null> = {};\n keys.forEach((key) => {\n result[key] = null;\n });\n return result;\n }\n }\n\n async multiSet(items: Record<string, string>): Promise<void> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n const pairs = Object.entries(items);\n await this.AsyncStorage!.multiSet(pairs);\n } catch (error) {\n throw new Error(`Failed to store multiple items: ${error}`);\n }\n }\n\n async multiRemove(keys: string[]): Promise<void> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n await this.AsyncStorage!.multiRemove(keys);\n } catch (error) {\n throw new Error(`Failed to remove multiple items: ${error}`);\n }\n }\n}\n\n/**\n * React Native secure storage adapter using expo-secure-store or react-native-keychain\n * Uses BaseSecureStorageAdapter for multi operations (no native batch support)\n */\nexport class ReactNativeSecureStorageAdapter extends BaseSecureStorageAdapter {\n private secureStore: ExpoSecureStoreInterface | null = null;\n private keychain: KeychainInterface | null = null;\n private isExpo: boolean = false;\n\n constructor() {\n super();\n this.initializeSecureStorage();\n }\n\n private async initializeSecureStorage() {\n try {\n const SecureStore = require('expo-secure-store');\n this.secureStore = SecureStore;\n this.isExpo = true;\n return;\n } catch {\n log.debug('expo-secure-store not available, trying react-native-keychain');\n }\n\n try {\n const Keychain = require('react-native-keychain');\n this.keychain = Keychain;\n this.isExpo = false;\n return;\n } catch {\n log.error('react-native-keychain not available');\n }\n\n throw new Error(\n 'No secure storage available. Please install expo-secure-store or react-native-keychain'\n );\n }\n\n async get(key: string): Promise<string | null> {\n if (!this.secureStore && !this.keychain) {\n await this.initializeSecureStorage();\n }\n\n try {\n if (this.isExpo && this.secureStore) {\n return await this.secureStore.getItemAsync(key);\n } else if (this.keychain) {\n const credentials = await this.keychain.getInternetCredentials(key);\n return credentials ? credentials.password : null;\n }\n } catch (error) {\n log.error('Failed to get secure item:', error);\n }\n\n return null;\n }\n\n async set(key: string, value: string): Promise<void> {\n if (!this.secureStore && !this.keychain) {\n await this.initializeSecureStorage();\n }\n\n try {\n if (this.isExpo && this.secureStore) {\n await this.secureStore.setItemAsync(key, value);\n } else if (this.keychain) {\n await this.keychain.setInternetCredentials(key, key, value);\n }\n } catch (error) {\n throw new Error(`Failed to store secure item: ${error}`);\n }\n }\n\n async remove(key: string): Promise<void> {\n if (!this.secureStore && !this.keychain) {\n await this.initializeSecureStorage();\n }\n\n try {\n if (this.isExpo && this.secureStore) {\n await this.secureStore.deleteItemAsync(key);\n } else if (this.keychain) {\n await this.keychain.resetInternetCredentials(key);\n }\n } catch (error) {\n throw new Error(`Failed to remove secure item: ${error}`);\n }\n }\n\n async clear(): Promise<void> {\n log.warn('Clear all secure items not fully implemented for React Native');\n }\n\n async getAllKeys(): Promise<string[]> {\n log.warn('Get all secure keys not implemented for React Native');\n return [];\n }\n\n async isAvailable(): Promise<boolean> {\n try {\n await this.initializeSecureStorage();\n return true;\n } catch {\n return false;\n }\n }\n\n async getSecurityLevel(): Promise<string> {\n if (this.isExpo) {\n return 'Expo SecureStore (iOS Keychain / Android EncryptedSharedPreferences)';\n } else {\n return 'React Native Keychain (iOS Keychain / Android Keystore)';\n }\n }\n}\n","import { BaseSecureStorageAdapter, BaseStorageAdapter } from '../shared';\n\n/**\n * Web storage adapter using localStorage\n */\nexport class WebStorageAdapter extends BaseStorageAdapter {\n async get(key: string): Promise<string | null> {\n try {\n return localStorage.getItem(key);\n } catch {\n return null;\n }\n }\n\n async set(key: string, value: string): Promise<void> {\n try {\n localStorage.setItem(key, value);\n } catch (error) {\n throw new Error(`Failed to store item: ${error}`);\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n localStorage.removeItem(key);\n } catch (error) {\n throw new Error(`Failed to remove item: ${error}`);\n }\n }\n\n async clear(): Promise<void> {\n try {\n localStorage.clear();\n } catch (error) {\n throw new Error(`Failed to clear storage: ${error}`);\n }\n }\n\n async getAllKeys(): Promise<string[]> {\n try {\n return Object.keys(localStorage);\n } catch {\n return [];\n }\n }\n}\n\n/**\n * Web secure storage adapter using encrypted localStorage\n */\nexport class WebSecureStorageAdapter extends BaseSecureStorageAdapter {\n private static readonly ENCRYPTION_KEY = 'acube_secure_key';\n private encryptionKey: string;\n\n constructor() {\n super();\n this.encryptionKey = this.getOrCreateEncryptionKey();\n }\n\n async get(key: string): Promise<string | null> {\n try {\n const encrypted = localStorage.getItem(this.getSecureKey(key));\n if (!encrypted) return null;\n\n return this.decrypt(encrypted);\n } catch {\n return null;\n }\n }\n\n async set(key: string, value: string): Promise<void> {\n try {\n const encrypted = this.encrypt(value);\n localStorage.setItem(this.getSecureKey(key), encrypted);\n } catch (error) {\n throw new Error(`Failed to store secure item: ${error}`);\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n localStorage.removeItem(this.getSecureKey(key));\n } catch (error) {\n throw new Error(`Failed to remove secure item: ${error}`);\n }\n }\n\n async clear(): Promise<void> {\n try {\n const keys = Object.keys(localStorage);\n const secureKeys = keys.filter((key) => key.startsWith('secure_'));\n secureKeys.forEach((key) => localStorage.removeItem(key));\n } catch (error) {\n throw new Error(`Failed to clear secure storage: ${error}`);\n }\n }\n\n async getAllKeys(): Promise<string[]> {\n try {\n const keys = Object.keys(localStorage);\n return keys\n .filter((key) => key.startsWith('secure_'))\n .map((key) => key.replace('secure_', ''));\n } catch {\n return [];\n }\n }\n\n async isAvailable(): Promise<boolean> {\n try {\n const test = 'test';\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch {\n return false;\n }\n }\n\n async getSecurityLevel(): Promise<string> {\n return 'Basic encryption using Web Crypto API';\n }\n\n private getSecureKey(key: string): string {\n return `secure_${key}`;\n }\n\n private getOrCreateEncryptionKey(): string {\n let key = localStorage.getItem(WebSecureStorageAdapter.ENCRYPTION_KEY);\n if (!key) {\n key = this.generateKey();\n localStorage.setItem(WebSecureStorageAdapter.ENCRYPTION_KEY, key);\n }\n return key;\n }\n\n private generateKey(): string {\n return Array.from(crypto.getRandomValues(new Uint8Array(32)))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n }\n\n private encrypt(text: string): string {\n let result = '';\n for (let i = 0; i < text.length; i++) {\n const keyChar = this.encryptionKey.charCodeAt(i % this.encryptionKey.length);\n const textChar = text.charCodeAt(i);\n result += String.fromCharCode(textChar ^ keyChar);\n }\n return btoa(result);\n }\n\n private decrypt(encrypted: string): string {\n const text = atob(encrypted);\n let result = '';\n for (let i = 0; i < text.length; i++) {\n const keyChar = this.encryptionKey.charCodeAt(i % this.encryptionKey.length);\n const textChar = text.charCodeAt(i);\n result += String.fromCharCode(textChar ^ keyChar);\n }\n return result;\n }\n}\n","import {\n ISecureStoragePort as ISecureStorage,\n IStoragePort as IStorage,\n} from '@/application/ports/driven';\nimport {\n NodeSecureStorageAdapter,\n NodeStorageAdapter,\n} from '@/infrastructure/driven/platforms/node/storage';\nimport {\n ReactNativeSecureStorageAdapter,\n ReactNativeStorageAdapter,\n} from '@/infrastructure/driven/platforms/react-native/storage';\nimport {\n WebSecureStorageAdapter,\n WebStorageAdapter,\n} from '@/infrastructure/driven/platforms/web/storage';\n\nexport interface StorageAdapters {\n storage: IStorage;\n secureStorage: ISecureStorage;\n}\n\nexport function loadStorageAdapters(platform: string): StorageAdapters {\n switch (platform) {\n case 'web':\n return {\n storage: new WebStorageAdapter(),\n secureStorage: new WebSecureStorageAdapter(),\n };\n case 'react-native':\n return {\n storage: new ReactNativeStorageAdapter(),\n secureStorage: new ReactNativeSecureStorageAdapter(),\n };\n case 'node':\n default:\n return {\n storage: new NodeStorageAdapter(),\n secureStorage: new NodeSecureStorageAdapter(),\n };\n }\n}\n","import { NetworkInfo } from '@/application/ports/driven';\n\nimport { NetworkBase } from '../shared/network-base';\n\n/**\n * Node.js network monitor using RxJS\n * Assumes always online by default (server environment)\n */\nexport class NodeNetworkMonitor extends NetworkBase {\n constructor() {\n super(true, 300);\n }\n\n async getNetworkInfo(): Promise<NetworkInfo | null> {\n return {\n type: 'ethernet',\n };\n }\n\n /**\n * Manually set network status (for testing)\n */\n setNetworkStatus(online: boolean): void {\n this.updateStatus(online);\n }\n}\n","import { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NetworkInfo } from '@/application/ports/driven';\nimport { createPrefixedLogger, detectPlatform } from '@/shared/utils';\n\nimport { NetworkBase } from '../shared/network-base';\n\nconst log = createPrefixedLogger('RN-NETWORK');\n\ninterface NetworkState {\n isConnected: boolean;\n isInternetReachable: boolean | null;\n type?: string;\n details?: {\n cellularGeneration?: string;\n downlink?: number;\n rtt?: number;\n };\n}\n\ninterface NetInfoModule {\n fetch(): Promise<NetworkState>;\n getNetworkStateAsync(): Promise<NetworkState>;\n addEventListener(callback: (state: NetworkState) => void): () => void;\n addNetworkStateListener(callback: (state: NetworkState) => void): () => void;\n}\n\n/**\n * React Native network monitor using RxJS\n * Supports both @react-native-community/netinfo and expo-network\n */\nexport class ReactNativeNetworkMonitor extends NetworkBase {\n private netInfoModule: NetInfoModule | null = null;\n private nativeUnsubscribe: (() => void) | null = null;\n private readonly isExpo: boolean;\n private readonly moduleReady$ = new Subject<void>();\n\n constructor() {\n super(true, 500); // Higher debounce for mobile networks\n this.isExpo = detectPlatform().isExpo;\n\n this.init().catch((error) => {\n log.error('Network monitor initialization failed:', error);\n });\n }\n\n private async init(): Promise<void> {\n if (this.isExpo) {\n await this.loadExpoModule();\n } else {\n await this.loadRNModule();\n }\n\n await this.fetchInitialState();\n this.subscribeToStateChanges();\n\n this.moduleReady$.next();\n this.moduleReady$.complete();\n }\n\n private async loadRNModule(): Promise<void> {\n try {\n const module = require('@react-native-community/netinfo');\n this.netInfoModule = module.default || module;\n log.debug('Loaded @react-native-community/netinfo module');\n } catch (error) {\n log.error('Failed to load React Native NetInfo module:', error);\n this.netInfoModule = null;\n }\n }\n\n private async loadExpoModule(): Promise<void> {\n try {\n const module = require('expo-network');\n this.netInfoModule = module.default || module;\n log.debug('Loaded expo-network module');\n } catch (error) {\n log.error('Failed to load Expo Network module:', error);\n this.netInfoModule = null;\n }\n }\n\n private async fetchInitialState(): Promise<void> {\n if (!this.netInfoModule) return;\n\n try {\n let state: NetworkState;\n if (this.isExpo) {\n state = await this.netInfoModule.getNetworkStateAsync();\n } else {\n state = await this.netInfoModule.fetch();\n }\n\n const online = !!(state.isConnected && state.isInternetReachable !== false);\n this.updateStatus(online);\n log.debug('Initial network state:', online ? 'online' : 'offline');\n } catch (error) {\n log.warn('Could not fetch initial network state:', error);\n }\n }\n\n private subscribeToStateChanges(): void {\n if (!this.netInfoModule) return;\n\n log.debug('Subscribing to network state changes');\n\n const handleState = (state: NetworkState): void => {\n const online = !!(state.isConnected && (state.isInternetReachable ?? true));\n this.updateStatus(online);\n };\n\n if (this.isExpo) {\n this.nativeUnsubscribe = this.netInfoModule.addNetworkStateListener(handleState);\n } else {\n this.nativeUnsubscribe = this.netInfoModule.addEventListener(handleState);\n }\n\n // Cleanup native listener when destroy$ emits\n this.destroy$.pipe(takeUntil(this.destroy$)).subscribe({\n complete: () => {\n if (this.nativeUnsubscribe) {\n this.nativeUnsubscribe();\n this.nativeUnsubscribe = null;\n }\n },\n });\n }\n\n async getNetworkInfo(): Promise<NetworkInfo | null> {\n // Wait for module initialization if not ready\n if (!this.netInfoModule) {\n await new Promise<void>((resolve) => {\n this.moduleReady$.subscribe({ complete: () => resolve() });\n });\n\n if (!this.netInfoModule) return null;\n }\n\n try {\n const state = this.isExpo\n ? await this.netInfoModule.getNetworkStateAsync()\n : await this.netInfoModule.fetch();\n\n return {\n type: this.mapConnectionType(state.type),\n effectiveType: this.mapEffectiveType(state.details?.cellularGeneration),\n downlink: state.details?.downlink,\n rtt: state.details?.rtt,\n };\n } catch (error) {\n log.error('Failed to fetch detailed network info:', error);\n return null;\n }\n }\n\n override destroy(): void {\n if (this.nativeUnsubscribe) {\n this.nativeUnsubscribe();\n this.nativeUnsubscribe = null;\n }\n super.destroy();\n }\n\n private mapConnectionType(\n type: string | null | undefined\n ): 'wifi' | 'cellular' | 'ethernet' | 'unknown' {\n switch (type) {\n case 'wifi':\n return 'wifi';\n case 'cellular':\n return 'cellular';\n case 'ethernet':\n return 'ethernet';\n default:\n return 'unknown';\n }\n }\n\n private mapEffectiveType(gen: string | null | undefined): '2g' | '3g' | '4g' | '5g' | undefined {\n switch (gen) {\n case '2g':\n return '2g';\n case '3g':\n return '3g';\n case '4g':\n return '4g';\n case '5g':\n return '5g';\n default:\n return undefined;\n }\n }\n}\n","import { fromEvent, merge } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { NetworkInfo } from '@/application/ports/driven';\n\nimport { NetworkBase } from '../shared/network-base';\n\ninterface NetworkInformationConnection {\n type?: string;\n effectiveType?: '2g' | '3g' | '4g' | '5g';\n downlink?: number;\n rtt?: number;\n}\n\ninterface NavigatorWithConnection extends Navigator {\n connection?: NetworkInformationConnection;\n}\n\n/**\n * Web network monitor using RxJS with browser events\n * Uses fromEvent to create observables from online/offline events\n */\nexport class WebNetworkMonitor extends NetworkBase {\n constructor() {\n const initialOnline = typeof navigator !== 'undefined' ? navigator.onLine : true;\n super(initialOnline, 300);\n this.setupListeners();\n }\n\n private setupListeners(): void {\n if (typeof window === 'undefined') return;\n\n merge(\n fromEvent(window, 'online').pipe(map(() => true)),\n fromEvent(window, 'offline').pipe(map(() => false))\n )\n .pipe(takeUntil(this.destroy$))\n .subscribe((online) => this.updateStatus(online));\n }\n\n async getNetworkInfo(): Promise<NetworkInfo | null> {\n if ('connection' in navigator) {\n const connection = (navigator as NavigatorWithConnection).connection;\n\n return {\n type: this.mapConnectionType(connection?.type ?? 'unknown'),\n effectiveType: connection?.effectiveType,\n downlink: connection?.downlink,\n rtt: connection?.rtt,\n };\n }\n\n return {\n type: 'unknown',\n };\n }\n\n private mapConnectionType(type: string): 'wifi' | 'cellular' | 'ethernet' | 'unknown' {\n switch (type) {\n case 'wifi':\n return 'wifi';\n case 'cellular':\n case '2g':\n case '3g':\n case '4g':\n case '5g':\n return 'cellular';\n case 'ethernet':\n return 'ethernet';\n default:\n return 'unknown';\n }\n }\n}\n","import { INetworkPort as INetworkMonitor } from '@/application/ports/driven';\nimport { NodeNetworkMonitor } from '@/infrastructure/driven/platforms/node/network';\nimport { ReactNativeNetworkMonitor } from '@/infrastructure/driven/platforms/react-native/network';\nimport { WebNetworkMonitor } from '@/infrastructure/driven/platforms/web/network';\n\nexport function loadNetworkMonitor(platform: string): INetworkMonitor {\n switch (platform) {\n case 'web':\n return new WebNetworkMonitor();\n case 'react-native':\n return new ReactNativeNetworkMonitor();\n case 'node':\n default:\n return new NodeNetworkMonitor();\n }\n}\n","export enum MTLSErrorType {\n NOT_SUPPORTED = 'MTLS_NOT_SUPPORTED',\n CERTIFICATE_NOT_FOUND = 'MTLS_CERTIFICATE_NOT_FOUND',\n CERTIFICATE_EXPIRED = 'MTLS_CERTIFICATE_EXPIRED',\n CERTIFICATE_INVALID = 'MTLS_CERTIFICATE_INVALID',\n CONNECTION_FAILED = 'MTLS_CONNECTION_FAILED',\n AUTHENTICATION_FAILED = 'MTLS_AUTHENTICATION_FAILED',\n CONFIGURATION_ERROR = 'MTLS_CONFIGURATION_ERROR',\n}\n\nexport class MTLSError extends Error {\n constructor(\n public type: MTLSErrorType,\n message: string,\n public originalError?: Error,\n public statusCode?: number\n ) {\n super(message);\n this.name = 'MTLSError';\n }\n}\n","export class CertificateValidator {\n static validatePEMFormat(certificate: string, privateKey: string): boolean {\n const certRegex = /-----BEGIN CERTIFICATE-----[\\s\\S]*-----END CERTIFICATE-----/;\n const keyRegex = /-----BEGIN (RSA )?PRIVATE KEY-----[\\s\\S]*-----END (RSA )?PRIVATE KEY-----/;\n return certRegex.test(certificate) && keyRegex.test(privateKey);\n }\n\n static isCertificateExpired(validTo: Date): boolean {\n return new Date() > validTo;\n }\n\n static getDaysUntilExpiry(validTo: Date): number {\n const now = new Date();\n const diffTime = validTo.getTime() - now.getTime();\n return Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n }\n}\n","/**\n * React Native mTLS Adapter Implementation\n * Uses @a-cube-io/expo-mutual-tls for production-ready mTLS authentication\n */\nimport {\n CertificateData,\n CertificateInfo,\n IMTLSPort as IMTLSAdapter,\n MTLSConnectionConfig,\n MTLSRequestConfig,\n MTLSResponse,\n} from '@/application/ports/driven';\nimport { MTLSError, MTLSErrorType } from '@/domain/errors';\nimport { CertificateValidator } from '@/domain/services';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nimport {\n MTLSCertificateExpiryEvent,\n MTLSDebugLogEvent,\n MTLSErrorEvent,\n MTLSEventSubscription,\n} from './types';\n\nconst log = createPrefixedLogger('RN-MTLS');\n\n// Import actual types from expo-mutual-tls\ninterface CertificateSubject {\n commonName?: string;\n organization?: string;\n organizationalUnit?: string;\n country?: string;\n state?: string;\n locality?: string;\n emailAddress?: string;\n}\n\ninterface CertificateFingerprints {\n sha1: string;\n sha256: string;\n}\n\ninterface CertificateInfoDetailed {\n subject: CertificateSubject;\n issuer: CertificateSubject;\n serialNumber: string;\n version: number;\n validFrom: number;\n validTo: number;\n fingerprints: CertificateFingerprints;\n publicKeyAlgorithm: string;\n publicKeySize?: number;\n signatureAlgorithm: string;\n keyUsage?: string[];\n extendedKeyUsage?: string[];\n subjectAlternativeNames?: string[];\n}\n\ninterface ParseCertificateResult {\n certificates: CertificateInfoDetailed[];\n}\n\ntype P12CertificateData = {\n p12Data: string;\n password: string;\n};\n\ntype PemCertificateData = {\n certificate: string;\n privateKey: string;\n passphrase?: string;\n};\n\ntype CertificateDataUnion = P12CertificateData | PemCertificateData;\n\ninterface ExpoMutualTLSClass {\n // Configuration methods (static)\n configurePEM(\n certService?: string,\n keyService?: string,\n enableLogging?: boolean\n ): Promise<{\n success: boolean;\n state: string;\n hasCertificate: boolean;\n }>;\n\n configureP12(\n keychainService?: string,\n enableLogging?: boolean\n ): Promise<{\n success: boolean;\n state: string;\n hasCertificate: boolean;\n }>;\n\n // Certificate storage methods (static)\n storePEM(certificate: string, privateKey: string, passphrase?: string): Promise<boolean>;\n storeP12(p12Base64: string, password: string): Promise<boolean>;\n\n // Certificate management (static)\n hasCertificate(): Promise<boolean>;\n removeCertificate(): Promise<void>;\n\n // Certificate parsing methods (static)\n parseCertificate(certificateData: CertificateDataUnion): Promise<ParseCertificateResult>;\n parseCertificateP12(p12Base64: string, password: string): Promise<ParseCertificateResult>;\n parseCertificatePEM(certificate: string): Promise<ParseCertificateResult>;\n getCertificatesInfo(): Promise<ParseCertificateResult>;\n\n // Network operations (static)\n request(\n url: string,\n options?: {\n method?: string;\n headers?: Record<string, string>;\n body?: string;\n responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';\n }\n ): Promise<{\n success: boolean;\n statusCode: number;\n statusMessage: string;\n headers: Record<string, string[]>;\n body: string;\n tlsVersion: string;\n cipherSuite: string;\n }>;\n\n testConnection(url: string): Promise<{\n success: boolean;\n statusCode: number;\n statusMessage: string;\n headers: Record<string, string[]>;\n body: string;\n tlsVersion: string;\n cipherSuite: string;\n }>;\n\n // Properties (static getters)\n isConfigured: boolean;\n currentState: string;\n\n // Event handlers (static)\n onDebugLog(\n callback: (event: {\n type: string;\n message?: string;\n method?: string;\n url?: string;\n statusCode?: number;\n duration?: number;\n }) => void\n ): () => void;\n onError(callback: (event: { message: string; code?: string }) => void): () => void;\n onCertificateExpiry(\n callback: (event: {\n alias?: string;\n subject: string;\n expiry: number;\n warning?: boolean;\n }) => void\n ): () => void;\n removeAllListeners(): void;\n}\n\n/**\n * React Native mTLS Adapter using @a-cube-io/expo-mutual-tls\n */\nexport class ReactNativeMTLSAdapter implements IMTLSAdapter {\n private expoMTLS: ExpoMutualTLSClass | null = null;\n private config: MTLSConnectionConfig | null = null;\n private isConfigured = false;\n private eventListeners: MTLSEventSubscription[] = [];\n\n constructor() {\n this.initializeEventHandlers();\n }\n\n /**\n * Initialize event handlers for debugging and monitoring\n */\n private initializeEventHandlers(): void {\n try {\n // Import the default export from @a-cube-io/expo-mutual-tls\n const ExpoMutualTls =\n require('@a-cube-io/expo-mutual-tls').default || require('@a-cube-io/expo-mutual-tls');\n this.expoMTLS = ExpoMutualTls;\n\n // Set up debug logging with the correct event signature\n const debugListener = ExpoMutualTls.onDebugLog((event: MTLSDebugLogEvent) => {\n log.debug(`${event.type}: ${event.message}`, {\n method: event.method,\n url: event.url,\n statusCode: event.statusCode,\n duration: event.duration,\n });\n });\n this.eventListeners.push(debugListener);\n\n // Set up error logging with the correct event signature\n const errorListener = ExpoMutualTls.onError((event: MTLSErrorEvent) => {\n log.error(event.message, {\n code: event.code,\n });\n });\n this.eventListeners.push(errorListener);\n\n // Set up certificate expiry monitoring with the correct event signature\n const expiryListener = ExpoMutualTls.onCertificateExpiry(\n (event: MTLSCertificateExpiryEvent) => {\n log.warn(`Certificate ${event.subject} expires at ${new Date(event.expiry)}`, {\n alias: event.alias,\n warning: event.warning,\n });\n }\n );\n this.eventListeners.push(expiryListener);\n\n log.debug('Expo mTLS module loaded successfully');\n } catch (error) {\n log.warn('@a-cube-io/expo-mutual-tls not available:', error);\n }\n }\n\n async isMTLSSupported(): Promise<boolean> {\n const supported = this.expoMTLS !== null;\n\n log.debug('mTLS support check:', {\n supported,\n platform: this.getPlatformInfo().platform,\n moduleAvailable: !!this.expoMTLS,\n });\n\n return supported;\n }\n\n async initialize(config: MTLSConnectionConfig): Promise<void> {\n if (!this.expoMTLS) {\n throw new MTLSError(MTLSErrorType.NOT_SUPPORTED, 'Expo mTLS module not available');\n }\n\n this.config = config;\n\n log.debug('Initialized with config:', {\n baseUrl: config.baseUrl,\n port: config.port,\n timeout: config.timeout,\n validateCertificate: config.validateCertificate,\n });\n }\n\n async configureCertificate(certificateData: CertificateData): Promise<void> {\n if (!this.expoMTLS) {\n throw new MTLSError(MTLSErrorType.NOT_SUPPORTED, 'Expo mTLS module not available');\n }\n\n if (!this.config) {\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n 'Adapter not initialized. Call initialize() first.'\n );\n }\n\n log.debug('Configuring certificate:', {\n format: certificateData.format,\n hasPassword: !!certificateData.password,\n certificateLength: certificateData.certificate.length,\n privateKeyLength: certificateData.privateKey.length,\n });\n\n try {\n if (certificateData.format === 'PEM') {\n // Validate PEM format\n if (\n !CertificateValidator.validatePEMFormat(\n certificateData.certificate,\n certificateData.privateKey\n )\n ) {\n throw new MTLSError(MTLSErrorType.CERTIFICATE_INVALID, 'Invalid PEM certificate format');\n }\n\n // Step 1: Configure PEM services (optional parameters for keychain services)\n const configResult = await this.expoMTLS.configurePEM(\n 'client-cert-service', // certService\n 'client-key-service', // keyService\n true // enableLogging - let the native module handle its own debug logging\n );\n\n log.debug('PEM services configured:', configResult);\n\n if (!configResult.success) {\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n `PEM configuration failed: ${configResult.state}`\n );\n }\n\n // Step 2: Store the actual PEM certificate and private key\n const storeResult = await this.expoMTLS.storePEM(\n certificateData.certificate,\n certificateData.privateKey,\n certificateData.password // passphrase (optional)\n );\n\n log.debug('PEM certificate store result:', storeResult);\n\n if (!storeResult) {\n throw new MTLSError(MTLSErrorType.CERTIFICATE_INVALID, 'Failed to store PEM certificate');\n }\n } else if (certificateData.format === 'P12') {\n if (!certificateData.password) {\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n 'P12 certificate requires password'\n );\n }\n\n // Step 1: Configure P12 keychain service\n const configResult = await this.expoMTLS.configureP12(\n 'client-p12-service', // keychainService\n true // enableLogging - let the native module handle its own debug logging\n );\n\n log.debug('P12 service configured:', configResult);\n\n if (!configResult.success) {\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n `P12 configuration failed: ${configResult.state}`\n );\n }\n\n // Step 2: Store the P12 certificate data\n const storeResult = await this.expoMTLS.storeP12(\n certificateData.certificate, // P12 data in certificate field\n certificateData.password\n );\n\n log.debug('P12 certificate store result:', storeResult);\n\n if (!storeResult) {\n throw new MTLSError(MTLSErrorType.CERTIFICATE_INVALID, 'Failed to store P12 certificate');\n }\n } else {\n throw new MTLSError(\n MTLSErrorType.CERTIFICATE_INVALID,\n `Unsupported certificate format: ${certificateData.format}`\n );\n }\n\n this.isConfigured = true;\n } catch (error) {\n if (error instanceof MTLSError) {\n throw error;\n }\n\n log.error('Certificate configuration failed:', error);\n\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n 'Failed to configure certificate',\n error as Error\n );\n }\n }\n\n async hasCertificate(): Promise<boolean> {\n if (!this.expoMTLS) {\n return false;\n }\n\n try {\n // Use static method call\n const hasCert = await this.expoMTLS.hasCertificate();\n\n log.debug('Certificate availability check:', hasCert);\n\n return hasCert;\n } catch (error) {\n log.error('Certificate check failed:', error);\n return false;\n }\n }\n\n async getCertificateInfo(): Promise<CertificateInfo | null> {\n if (!this.expoMTLS) {\n log.debug('Certificate info requested but module not available');\n return null;\n }\n\n try {\n const hasCert = await this.hasCertificate();\n if (!hasCert) {\n log.debug('No certificate stored');\n return null;\n }\n\n // Use getCertificatesInfo to retrieve information about stored certificates\n const result = await this.expoMTLS.getCertificatesInfo();\n\n if (!result || !result.certificates || result.certificates.length === 0) {\n log.debug('No certificate information available');\n return null;\n }\n\n // Get the first certificate (primary client certificate)\n const cert = result.certificates[0];\n\n if (!cert) {\n log.debug('Certificate data is empty');\n return null;\n }\n\n log.debug('Retrieved certificate info:', {\n subject: cert.subject.commonName,\n issuer: cert.issuer.commonName,\n validFrom: new Date(cert.validFrom),\n validTo: new Date(cert.validTo),\n });\n\n // Map to our CertificateInfo format\n return {\n subject: cert.subject.commonName || 'Unknown',\n issuer: cert.issuer.commonName || 'Unknown',\n validFrom: new Date(cert.validFrom),\n validTo: new Date(cert.validTo),\n serialNumber: cert.serialNumber,\n fingerprint: cert.fingerprints.sha256,\n pemId: cert.subject.commonName?.split(':')[1] || '', // PEM ID is part[1] (divide by : ) of commonName if available\n cashRegisterUUID: cert.subject.commonName?.split(':')[0] || '', // Cash Register UUID is part[0] (divide by : ) of commonName if available\n };\n } catch (error) {\n log.error('Failed to get certificate info:', error);\n return null;\n }\n }\n\n /**\n * Parse certificate and extract detailed information\n * @param certificateData Certificate data in P12 or PEM format\n * @returns Detailed certificate information including subject, issuer, validity, etc.\n */\n async parseCertificateData(\n certificateData: CertificateData\n ): Promise<ParseCertificateResult | null> {\n if (!this.expoMTLS) {\n log.debug('Parse certificate: Module not available');\n return null;\n }\n\n try {\n let result: ParseCertificateResult;\n\n if (certificateData.format === 'P12') {\n if (!certificateData.password) {\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n 'P12 certificate requires password for parsing'\n );\n }\n\n result = await this.expoMTLS.parseCertificateP12(\n certificateData.certificate,\n certificateData.password\n );\n } else if (certificateData.format === 'PEM') {\n result = await this.expoMTLS.parseCertificatePEM(certificateData.certificate);\n } else {\n throw new MTLSError(\n MTLSErrorType.CERTIFICATE_INVALID,\n `Unsupported certificate format: ${certificateData.format}`\n );\n }\n\n log.debug('Certificate parsed successfully:', {\n certificateCount: result.certificates.length,\n subjects: result.certificates.map((cert) => cert.subject.commonName),\n });\n\n return result;\n } catch (error) {\n log.error('Failed to parse certificate:', error);\n\n if (error instanceof MTLSError) {\n throw error;\n }\n\n throw new MTLSError(\n MTLSErrorType.CERTIFICATE_INVALID,\n 'Failed to parse certificate data',\n error as Error\n );\n }\n }\n\n async request<T>(requestConfig: MTLSRequestConfig): Promise<MTLSResponse<T>> {\n if (!this.expoMTLS) {\n throw new MTLSError(MTLSErrorType.NOT_SUPPORTED, 'Expo mTLS module not available');\n }\n\n const hasCert = await this.hasCertificate();\n if (!hasCert) {\n throw new MTLSError(MTLSErrorType.CERTIFICATE_NOT_FOUND, 'No certificate configured');\n }\n\n log.debug('Making mTLS request:', {\n method: requestConfig.method || 'GET',\n url: requestConfig.url,\n headers: requestConfig.headers,\n hasData: !!requestConfig.data,\n responseType: requestConfig.responseType,\n });\n\n if (requestConfig.data) {\n log.debug('mTLS request body:', requestConfig.data);\n }\n\n try {\n const response = await this.expoMTLS.request(requestConfig.url, {\n method: requestConfig.method || 'GET',\n headers: requestConfig.headers,\n body: requestConfig.data ? JSON.stringify(requestConfig.data) : undefined,\n responseType: requestConfig.responseType,\n });\n\n log.debug('mTLS request successful:', response);\n\n if (!response.success) {\n throw new MTLSError(\n MTLSErrorType.CONNECTION_FAILED,\n `mTLS request failed: ${response.statusMessage} (${response.statusCode})`,\n undefined,\n response.statusCode\n );\n }\n\n let data: string | Record<string, unknown> = response.body;\n // only parse if responseType is 'json' or if Content-Type header indicates JSON\n const contentType =\n response.headers['Content-Type'] || response.headers['content-type'] || '';\n if (requestConfig.responseType === 'json' || contentType.includes('application/json')) {\n try {\n data = JSON.parse(response.body);\n } catch (parseError) {\n log.warn('Failed to parse JSON response:', parseError);\n // If parsing fails, keep raw body\n }\n }\n\n // Convert headers from string[] to string format\n const normalizedHeaders: Record<string, string> = {};\n Object.entries(response.headers).forEach(([key, value]) => {\n normalizedHeaders[key] = Array.isArray(value) ? value.join(', ') : value;\n });\n\n return {\n data: data as T,\n status: response.statusCode,\n statusText: response.statusMessage,\n headers: normalizedHeaders,\n };\n } catch (error) {\n log.error('mTLS request failed:', error);\n\n throw new MTLSError(MTLSErrorType.CONNECTION_FAILED, 'mTLS request failed', error as Error);\n }\n }\n\n /**\n * Test mTLS connection (DIAGNOSTIC ONLY - not used for validation)\n *\n * WARNING: This method calls a test endpoint that may return 500 errors\n * even when actual mTLS requests work perfectly. It should only be used\n * for diagnostic purposes, not for determining if mTLS is ready.\n */\n async testConnection(): Promise<boolean> {\n if (!this.expoMTLS || !this.config) {\n log.debug('Diagnostic test: No mTLS module or config available');\n return false;\n }\n\n try {\n const hasCert = await this.hasCertificate();\n if (!hasCert) {\n log.debug('Diagnostic test: No certificate configured');\n return false;\n }\n\n log.debug('Running diagnostic test (may fail even if mTLS works):', this.config.baseUrl);\n\n const result = await this.expoMTLS.testConnection(this.config.baseUrl);\n\n log.debug('Diagnostic test result (NOT validation):', {\n success: result.success,\n statusCode: result.statusCode,\n statusMessage: result.statusMessage,\n tlsVersion: result.tlsVersion,\n cipherSuite: result.cipherSuite,\n note: 'Test endpoint may return 500 while actual requests work',\n });\n\n return result.success;\n } catch (error) {\n log.warn('Diagnostic test failed (this is expected):', error);\n return false;\n }\n }\n\n async removeCertificate(): Promise<void> {\n if (!this.expoMTLS) {\n log.debug('Remove certificate: Module not available');\n return;\n }\n\n try {\n // Use static method call\n await this.expoMTLS.removeCertificate();\n this.isConfigured = false;\n\n // Cleanup event listeners\n this.cleanupEventListeners();\n\n log.debug('Certificate removed successfully');\n } catch (error) {\n log.error('Failed to remove certificate:', error);\n\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n 'Failed to remove certificate',\n error as Error\n );\n }\n }\n\n /**\n * Cleanup event listeners\n */\n private cleanupEventListeners(): void {\n if (this.eventListeners.length > 0) {\n log.debug(`Cleaning up ${this.eventListeners.length} event listeners`);\n }\n\n // Remove individual listeners if they have remove methods\n this.eventListeners.forEach((listener) => {\n if (listener && typeof listener.remove === 'function') {\n listener.remove();\n }\n });\n\n // Also call removeAllListeners on the module\n if (this.expoMTLS) {\n this.expoMTLS.removeAllListeners();\n }\n\n this.eventListeners.length = 0;\n }\n\n /**\n * Manually remove all event listeners\n */\n removeAllListeners(): void {\n this.cleanupEventListeners();\n }\n\n /**\n * Get the configured mTLS base URL\n */\n getBaseUrl(): string | null {\n return this.config?.baseUrl || null;\n }\n\n getPlatformInfo() {\n return {\n platform: 'react-native' as const,\n mtlsSupported: this.expoMTLS !== null,\n certificateStorage: 'keychain' as const,\n fallbackToJWT: true,\n configured: this.isConfigured,\n };\n }\n}\n","/**\n * Web mTLS Adapter Implementation\n * Web browsers do not support client certificate configuration via JavaScript\n * This adapter provides graceful fallback with clear error messages\n */\nimport {\n CertificateData,\n CertificateInfo,\n IMTLSPort as IMTLSAdapter,\n MTLSConnectionConfig,\n MTLSRequestConfig,\n MTLSResponse,\n} from '@/application/ports/driven';\nimport { MTLSError, MTLSErrorType } from '@/domain/errors';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('WEB-MTLS');\n\n/**\n * Web mTLS Adapter - Graceful fallback for web browsers\n *\n * Web browsers handle client certificates through:\n * 1. Browser certificate store (managed by user)\n * 2. TLS handshake (automatic, not script-controlled)\n * 3. User prompts for certificate selection\n *\n * JavaScript cannot programmatically configure client certificates\n * due to security restrictions in the browser sandbox.\n */\nexport class WebMTLSAdapter implements IMTLSAdapter {\n constructor() {\n log.warn('Web browsers do not support programmatic mTLS configuration');\n log.info('Use JWT authentication or configure client certificates in browser settings');\n }\n\n async isMTLSSupported(): Promise<boolean> {\n // mTLS is not supported programmatically in web browsers\n const supported = false;\n\n log.debug('mTLS support check:', {\n supported,\n platform: this.getPlatformInfo().platform,\n reason: 'Browser security model prevents programmatic certificate configuration',\n alternatives: ['JWT authentication', 'Browser-managed certificates', 'Server-side proxy'],\n });\n\n return supported;\n }\n\n async initialize(config: MTLSConnectionConfig): Promise<void> {\n log.warn('Initialized but mTLS not available in web browsers:', {\n baseUrl: config.baseUrl,\n port: config.port,\n recommendation: 'Use standard HTTPS with JWT authentication',\n });\n }\n\n async configureCertificate(certificateData: CertificateData): Promise<void> {\n log.error('Certificate configuration attempted:', {\n format: certificateData.format,\n reason: 'Not supported in web browsers',\n alternatives: [\n 'Import certificate into browser certificate store',\n 'Use JWT authentication instead',\n 'Configure server-side proxy for certificate handling',\n ],\n });\n\n throw new MTLSError(\n MTLSErrorType.NOT_SUPPORTED,\n 'mTLS client certificate configuration is not supported in web browsers. ' +\n 'Web browsers manage client certificates through the browser certificate store. ' +\n 'Please use JWT authentication or import certificates manually into your browser.'\n );\n }\n\n async hasCertificate(): Promise<boolean> {\n // We cannot detect if the browser has certificates configured\n log.debug(\n 'Certificate availability check: Cannot detect browser certificates programmatically'\n );\n\n return false;\n }\n\n async getCertificateInfo(): Promise<CertificateInfo | null> {\n log.debug('Certificate info requested: Not accessible in web browsers');\n\n return null;\n }\n\n async request<T>(requestConfig: MTLSRequestConfig): Promise<MTLSResponse<T>> {\n log.error('mTLS request attempted:', {\n method: requestConfig.method,\n url: requestConfig.url,\n reason: 'Not supported in web browsers',\n alternatives: [\n 'Use standard fetch() or XMLHttpRequest',\n 'Configure JWT authentication',\n 'Rely on browser-managed certificates (if configured by user)',\n ],\n });\n\n throw new MTLSError(\n MTLSErrorType.NOT_SUPPORTED,\n 'mTLS requests are not supported in web browsers via JavaScript. ' +\n 'Use standard HTTP client with JWT authentication, or ensure client certificates ' +\n 'are properly configured in the browser certificate store.'\n );\n }\n\n async testConnection(): Promise<boolean> {\n log.debug('Connection test: mTLS not available in web browsers');\n\n return false;\n }\n\n async removeCertificate(): Promise<void> {\n log.debug('Remove certificate: No certificates to remove (not supported in web browsers)');\n\n // No-op - cannot remove certificates programmatically in browsers\n }\n\n /**\n * Get the configured mTLS base URL\n * Always returns null for web browsers as mTLS is not supported\n */\n getBaseUrl(): string | null {\n log.debug('Base URL requested: Not supported in web browsers');\n return null;\n }\n\n getPlatformInfo() {\n return {\n platform: 'web' as const,\n mtlsSupported: false,\n certificateStorage: 'browser-managed' as const,\n fallbackToJWT: true,\n limitations: [\n 'Browser security model prevents programmatic certificate access',\n 'Client certificates managed through browser UI only',\n 'TLS handshake handled automatically by browser',\n 'Certificate selection prompts managed by browser',\n ],\n recommendations: [\n 'Use JWT authentication for API access',\n 'Configure client certificates in browser settings if required',\n 'Consider server-side proxy for certificate handling',\n 'Use standard fetch API with browser-managed certificates',\n ],\n };\n }\n\n /**\n * Check if running in web browser environment\n */\n static isWebEnvironment(): boolean {\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined' &&\n typeof navigator !== 'undefined'\n );\n }\n}\n","import { IMTLSPort as IMTLSAdapter, MTLSConnectionConfig } from '@/application/ports/driven';\nimport { ReactNativeMTLSAdapter } from '@/infrastructure/driven/platforms/react-native/mtls';\nimport { WebMTLSAdapter } from '@/infrastructure/driven/platforms/web/mtls';\nimport { Platform, createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('MTLS-LOADER');\n\nexport function loadMTLSAdapter(\n platform: Platform,\n config?: {\n baseUrl?: string;\n port?: number;\n timeout?: number;\n validateCertificate?: boolean;\n autoInitialize?: boolean;\n }\n): IMTLSAdapter | null {\n try {\n let adapter: IMTLSAdapter;\n\n switch (platform) {\n case 'react-native':\n adapter = new ReactNativeMTLSAdapter();\n break;\n case 'node':\n try {\n const { NodeMTLSAdapter } = require('@/infrastructure/driven/platforms/node/mtls');\n adapter = new NodeMTLSAdapter();\n } catch {\n adapter = new WebMTLSAdapter();\n }\n break;\n case 'web':\n default:\n adapter = new WebMTLSAdapter();\n break;\n }\n\n if (config?.autoInitialize && config.baseUrl) {\n const mtlsConfig: MTLSConnectionConfig = {\n baseUrl: config.baseUrl,\n port: config.port || 444,\n timeout: config.timeout || 30000,\n validateCertificate: config.validateCertificate ?? true,\n };\n\n void initializeAdapterAsync(adapter, mtlsConfig);\n }\n\n return adapter;\n } catch (error) {\n log.warn(`mTLS adapter not available for platform ${platform}:`, error);\n return null;\n }\n}\n\nasync function initializeAdapterAsync(\n adapter: IMTLSAdapter,\n config: MTLSConnectionConfig\n): Promise<void> {\n try {\n const isSupported = await adapter.isMTLSSupported();\n\n if (isSupported) {\n await adapter.initialize(config);\n\n const platformInfo = adapter.getPlatformInfo();\n log.debug('mTLS adapter initialized:', {\n platform: platformInfo.platform,\n mtlsSupported: platformInfo.mtlsSupported,\n certificateStorage: platformInfo.certificateStorage,\n baseUrl: config.baseUrl,\n });\n }\n } catch (error) {\n log.warn('Failed to initialize mTLS adapter:', error);\n }\n}\n\nexport function isMTLSSupported(platform: string): boolean {\n const config = MTLS_CONFIG_BY_PLATFORM[platform as keyof typeof MTLS_CONFIG_BY_PLATFORM];\n return config?.mtlsSupported || false;\n}\n\nexport function getMTLSConfig(platform: string) {\n return MTLS_CONFIG_BY_PLATFORM[platform as keyof typeof MTLS_CONFIG_BY_PLATFORM];\n}\n\nexport const MTLS_CONFIG_BY_PLATFORM = {\n 'react-native': {\n mtlsSupported: true,\n certificateStorage: 'keychain',\n fallbackToJWT: true,\n defaultTimeout: 30000,\n },\n node: {\n mtlsSupported: true,\n certificateStorage: 'filesystem',\n fallbackToJWT: true,\n defaultTimeout: 30000,\n },\n web: {\n mtlsSupported: false,\n certificateStorage: 'browser-managed',\n fallbackToJWT: true,\n defaultTimeout: 30000,\n },\n} as const;\n","import { PlatformAdapters } from '@/application/ports/driven';\nimport { createPrefixedLogger, detectPlatform } from '@/shared/utils';\n\nimport { loadCacheAdapter } from './cache-loader';\nimport { loadMTLSAdapter } from './mtls-loader';\nimport { loadNetworkMonitor } from './network-loader';\nimport { loadStorageAdapters } from './storage-loader';\n\nconst log = createPrefixedLogger('ADAPTER-LOADER');\n\nexport interface MTLSAdapterConfig {\n baseUrl?: string;\n port?: number;\n timeout?: number;\n validateCertificate?: boolean;\n autoInitialize?: boolean;\n}\n\nexport interface PlatformAdapterOptions {\n mtlsConfig?: MTLSAdapterConfig;\n}\n\nexport function loadPlatformAdapters(options: PlatformAdapterOptions = {}): PlatformAdapters {\n const { mtlsConfig } = options;\n const { platform } = detectPlatform();\n\n log.debug('Loading adapters for platform:', platform);\n\n const storageAdapters = loadStorageAdapters(platform);\n const networkMonitor = loadNetworkMonitor(platform);\n const cache = loadCacheAdapter(platform);\n const mtls = loadMTLSAdapter(platform, mtlsConfig);\n\n log.debug('Adapters loaded:', {\n platform,\n hasStorage: !!storageAdapters.storage,\n hasSecureStorage: !!storageAdapters.secureStorage,\n hasNetworkMonitor: !!networkMonitor,\n hasCache: !!cache,\n hasMTLS: !!mtls,\n });\n\n return {\n ...storageAdapters,\n networkMonitor,\n cache,\n mtls: mtls || undefined,\n };\n}\n\nexport function createACubeMTLSConfig(\n baseUrl: string,\n timeout?: number,\n autoInitialize = true,\n forcePort444 = true\n): MTLSAdapterConfig {\n const mtlsBaseUrl =\n forcePort444 && !baseUrl.includes(':444') ? baseUrl.replace(/:\\d+$/, '') + ':444' : baseUrl;\n\n return {\n baseUrl: mtlsBaseUrl,\n port: 444,\n timeout: timeout || 30000,\n validateCertificate: true,\n autoInitialize,\n };\n}\n","export const DI_TOKENS = {\n HTTP_PORT: Symbol('HTTP_PORT'),\n BASE_HTTP_PORT: Symbol('BASE_HTTP_PORT'),\n STORAGE_PORT: Symbol('STORAGE_PORT'),\n SECURE_STORAGE_PORT: Symbol('SECURE_STORAGE_PORT'),\n NETWORK_PORT: Symbol('NETWORK_PORT'),\n CACHE_PORT: Symbol('CACHE_PORT'),\n CACHE_KEY_GENERATOR: Symbol('CACHE_KEY_GENERATOR'),\n MTLS_PORT: Symbol('MTLS_PORT'),\n TOKEN_STORAGE_PORT: Symbol('TOKEN_STORAGE_PORT'),\n\n RECEIPT_REPOSITORY: Symbol('RECEIPT_REPOSITORY'),\n MERCHANT_REPOSITORY: Symbol('MERCHANT_REPOSITORY'),\n CASHIER_REPOSITORY: Symbol('CASHIER_REPOSITORY'),\n CASH_REGISTER_REPOSITORY: Symbol('CASH_REGISTER_REPOSITORY'),\n POINT_OF_SALE_REPOSITORY: Symbol('POINT_OF_SALE_REPOSITORY'),\n SUPPLIER_REPOSITORY: Symbol('SUPPLIER_REPOSITORY'),\n PEM_REPOSITORY: Symbol('PEM_REPOSITORY'),\n DAILY_REPORT_REPOSITORY: Symbol('DAILY_REPORT_REPOSITORY'),\n JOURNAL_REPOSITORY: Symbol('JOURNAL_REPOSITORY'),\n NOTIFICATION_REPOSITORY: Symbol('NOTIFICATION_REPOSITORY'),\n TELEMETRY_REPOSITORY: Symbol('TELEMETRY_REPOSITORY'),\n\n RECEIPT_SERVICE: Symbol('RECEIPT_SERVICE'),\n AUTH_SERVICE: Symbol('AUTH_SERVICE'),\n AUTHENTICATION_SERVICE: Symbol('AUTHENTICATION_SERVICE'),\n CERTIFICATE_SERVICE: Symbol('CERTIFICATE_SERVICE'),\n OFFLINE_SERVICE: Symbol('OFFLINE_SERVICE'),\n NOTIFICATION_SERVICE: Symbol('NOTIFICATION_SERVICE'),\n TELEMETRY_SERVICE: Symbol('TELEMETRY_SERVICE'),\n} as const;\n\nexport class DIContainer {\n private services = new Map<symbol, unknown>();\n private factories = new Map<symbol, () => unknown>();\n\n register<T>(token: symbol, instance: T): void {\n this.services.set(token, instance);\n }\n\n registerFactory<T>(token: symbol, factory: () => T): void {\n this.factories.set(token, factory);\n }\n\n get<T>(token: symbol): T {\n if (this.services.has(token)) {\n return this.services.get(token) as T;\n }\n\n if (this.factories.has(token)) {\n const factory = this.factories.get(token)!;\n const instance = factory() as T;\n this.services.set(token, instance);\n return instance;\n }\n\n throw new Error(`Service not registered: ${token.toString()}`);\n }\n\n has(token: symbol): boolean {\n return this.services.has(token) || this.factories.has(token);\n }\n\n clear(): void {\n this.services.clear();\n this.factories.clear();\n }\n}\n","import {\n Receipt,\n ReceiptDetails,\n ReceiptInput,\n ReceiptItem,\n ReceiptListParams,\n ReceiptProofType,\n ReceiptReturnInput,\n ReceiptReturnItem,\n ReturnViaDifferentDeviceInput,\n ReturnWithProofInput,\n ReturnableReceiptItem,\n VoidReceiptInput,\n VoidViaDifferentDeviceInput,\n VoidWithProofInput,\n} from '@/domain/entities/receipt.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\nimport { GoodOrService, VatRateCode } from '@/domain/value-objects/vat-code.vo';\nimport { formatDecimal } from '@/shared/utils';\n\nexport interface ReceiptItemApiInput {\n type?: GoodOrService;\n quantity: string;\n description: string;\n unit_price: string;\n vat_rate_code?: VatRateCode;\n simplified_vat_allocation?: boolean;\n discount?: string;\n is_down_payment_or_voucher_redemption?: boolean;\n complimentary?: boolean;\n}\n\nexport interface ReceiptApiInput {\n items: ReceiptItemApiInput[];\n customer_tax_code?: string;\n customer_lottery_code?: string;\n discount?: string;\n invoice_issuing?: boolean;\n uncollected_dcr_to_ssn?: boolean;\n services_uncollected_amount?: string;\n goods_uncollected_amount?: string;\n cash_payment_amount?: string;\n electronic_payment_amount?: string;\n ticket_restaurant_payment_amount?: string;\n ticket_restaurant_quantity?: number;\n}\n\nexport interface ReceiptApiOutput {\n uuid: string;\n type: 'sale' | 'return' | 'void';\n created_at: string;\n total_amount: string;\n document_number: string;\n document_datetime?: string;\n is_returnable: boolean;\n is_voidable: boolean;\n pdf_url?: string;\n parent_receipt_uuid?: string;\n}\n\nexport interface ReceiptDetailsApiOutput extends ReceiptApiOutput {\n customer_lottery_code?: string;\n vat_number: string;\n total_taxable_amount: string;\n total_uncollected_amount: string;\n deductible_amount: string;\n total_vat_amount: string;\n total_discount: string;\n total_gross_discount: string;\n discount: string;\n items?: ReceiptItemApiInput[];\n}\n\nexport interface ReceiptReturnApiInput {\n items: Array<{ id: number; quantity: string }>;\n document_number: string;\n}\n\nexport interface VoidReceiptApiInput {\n document_number: string;\n}\n\nexport interface VoidViaDifferentDeviceApiInput {\n device_id: string;\n items: ReceiptItemApiInput[];\n document_number: string;\n document_datetime: string;\n lottery_code?: string;\n}\n\nexport interface VoidWithProofApiInput {\n items: ReceiptItemApiInput[];\n proof: ReceiptProofType;\n document_datetime: string;\n}\n\nexport interface ReturnViaDifferentDeviceApiInput {\n device_id: string;\n items: ReceiptItemApiInput[];\n document_number: string;\n document_datetime: string;\n lottery_code?: string;\n}\n\nexport interface ReturnWithProofApiInput {\n items: ReceiptItemApiInput[];\n proof: ReceiptProofType;\n document_datetime: string;\n}\n\nexport interface ReturnableReceiptItemApiOutput {\n id: number;\n type?: GoodOrService;\n quantity: string;\n returned_quantity: string;\n description: string;\n unit_price: string;\n vat_rate_code?: VatRateCode;\n}\n\nexport class ReceiptMapper {\n static toApiInput(input: ReceiptInput): ReceiptApiInput {\n return {\n items: input.items.map((item) => this.itemToApiInput(item)),\n customer_tax_code: input.customerTaxCode,\n customer_lottery_code: input.customerLotteryCode,\n discount: formatDecimal(input.discount),\n invoice_issuing: input.invoiceIssuing,\n uncollected_dcr_to_ssn: input.uncollectedDcrToSsn,\n services_uncollected_amount: formatDecimal(input.servicesUncollectedAmount),\n goods_uncollected_amount: formatDecimal(input.goodsUncollectedAmount),\n cash_payment_amount: formatDecimal(input.cashPaymentAmount),\n electronic_payment_amount: formatDecimal(input.electronicPaymentAmount),\n ticket_restaurant_payment_amount: formatDecimal(input.ticketRestaurantPaymentAmount),\n ticket_restaurant_quantity: input.ticketRestaurantQuantity,\n };\n }\n\n static itemToApiInput(item: ReceiptItem): ReceiptItemApiInput {\n return {\n type: item.type,\n quantity: formatDecimal(item.quantity) as string,\n description: item.description,\n unit_price: formatDecimal(item.unitPrice) as string,\n vat_rate_code: item.vatRateCode,\n simplified_vat_allocation: item.simplifiedVatAllocation,\n discount: formatDecimal(item.discount),\n is_down_payment_or_voucher_redemption: item.isDownPaymentOrVoucherRedemption,\n complimentary: item.complimentary,\n };\n }\n\n static fromApiOutput(output: ReceiptApiOutput): Receipt {\n return {\n uuid: output.uuid,\n type: output.type,\n createdAt: output.created_at,\n totalAmount: output.total_amount,\n documentNumber: output.document_number,\n documentDatetime: output.document_datetime,\n isReturnable: output.is_returnable,\n isVoidable: output.is_voidable,\n pdfUrl: output.pdf_url,\n parentReceiptUuid: output.parent_receipt_uuid,\n };\n }\n\n static fromApiDetailsOutput(output: ReceiptDetailsApiOutput): ReceiptDetails {\n return {\n ...this.fromApiOutput(output),\n customerLotteryCode: output.customer_lottery_code,\n vatNumber: output.vat_number,\n totalTaxableAmount: output.total_taxable_amount,\n totalUncollectedAmount: output.total_uncollected_amount,\n deductibleAmount: output.deductible_amount,\n totalVatAmount: output.total_vat_amount,\n totalDiscount: output.total_discount,\n totalGrossDiscount: output.total_gross_discount,\n discount: output.discount,\n items: output.items?.map((item) => this.itemFromApiOutput(item)),\n };\n }\n\n static itemFromApiOutput(item: ReceiptItemApiInput): ReceiptItem {\n return {\n type: item.type,\n quantity: item.quantity,\n description: item.description,\n unitPrice: item.unit_price,\n vatRateCode: item.vat_rate_code,\n simplifiedVatAllocation: item.simplified_vat_allocation,\n discount: item.discount,\n isDownPaymentOrVoucherRedemption: item.is_down_payment_or_voucher_redemption,\n complimentary: item.complimentary,\n };\n }\n\n static returnItemToApiInput(item: ReceiptReturnItem): { id: number; quantity: string } {\n return {\n id: item.id,\n quantity: formatDecimal(item.quantity) as string,\n };\n }\n\n static returnInputToApi(input: ReceiptReturnInput): ReceiptReturnApiInput {\n return {\n items: input.items.map((item) => this.returnItemToApiInput(item)),\n document_number: input.documentNumber,\n };\n }\n\n static voidInputToApi(input: VoidReceiptInput): VoidReceiptApiInput {\n return {\n document_number: input.documentNumber,\n };\n }\n\n static returnableItemFromApi(item: ReturnableReceiptItemApiOutput): ReturnableReceiptItem {\n return {\n id: item.id,\n type: item.type,\n quantity: item.quantity,\n returnedQuantity: item.returned_quantity,\n description: item.description,\n unitPrice: item.unit_price,\n vatRateCode: item.vat_rate_code,\n };\n }\n\n static toListParams(params: ReceiptListParams): Record<string, string | number | undefined> {\n return {\n page: params.page,\n size: params.size,\n status: params.status,\n sort: params.sort,\n document_number: params.documentNumber,\n 'document_datetime[before]': params.documentDatetimeBefore,\n 'document_datetime[after]': params.documentDatetimeAfter ?? undefined,\n };\n }\n\n static pageFromApi(response: {\n members: ReceiptApiOutput[];\n total?: number;\n page?: number;\n size?: number;\n pages?: number;\n }): Page<Receipt> {\n return {\n members: response.members.map((r) => this.fromApiOutput(r)),\n total: response.total,\n page: response.page,\n size: response.size,\n pages: response.pages,\n };\n }\n\n static voidViaDifferentDeviceToApi(\n input: VoidViaDifferentDeviceInput\n ): VoidViaDifferentDeviceApiInput {\n return {\n device_id: input.deviceId,\n items: input.items.map((item) => this.itemToApiInput(item)),\n document_number: input.documentNumber,\n document_datetime: input.documentDatetime,\n lottery_code: input.lotteryCode,\n };\n }\n\n static voidWithProofToApi(input: VoidWithProofInput): VoidWithProofApiInput {\n return {\n items: input.items.map((item) => this.itemToApiInput(item)),\n proof: input.proof,\n document_datetime: input.documentDatetime,\n };\n }\n\n static returnViaDifferentDeviceToApi(\n input: ReturnViaDifferentDeviceInput\n ): ReturnViaDifferentDeviceApiInput {\n return {\n device_id: input.deviceId,\n items: input.items.map((item) => this.itemToApiInput(item)),\n document_number: input.documentNumber,\n document_datetime: input.documentDatetime,\n lottery_code: input.lotteryCode,\n };\n }\n\n static returnWithProofToApi(input: ReturnWithProofInput): ReturnWithProofApiInput {\n return {\n items: input.items.map((item) => this.itemToApiInput(item)),\n proof: input.proof,\n document_datetime: input.documentDatetime,\n };\n }\n}\n","import {\n ReceiptApiOutput,\n ReceiptDetailsApiOutput,\n ReceiptMapper,\n ReturnableReceiptItemApiOutput,\n} from '@/application/dto/receipt.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport {\n Receipt,\n ReceiptDetails,\n ReceiptInput,\n ReceiptListParams,\n ReceiptReturnInput,\n ReturnViaDifferentDeviceInput,\n ReturnWithProofInput,\n ReturnableReceiptItem,\n VoidReceiptInput,\n VoidViaDifferentDeviceInput,\n VoidWithProofInput,\n} from '@/domain/entities/receipt.entity';\nimport { IReceiptRepository } from '@/domain/repositories/receipt.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class ReceiptRepositoryImpl implements IReceiptRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async create(input: ReceiptInput): Promise<Receipt> {\n const apiInput = ReceiptMapper.toApiInput(input);\n const response = await this.http.post<ReceiptApiOutput>('/mf1/receipts', apiInput);\n return ReceiptMapper.fromApiOutput(response.data);\n }\n\n async findById(receiptUuid: string): Promise<Receipt> {\n const response = await this.http.get<ReceiptApiOutput>(`/mf1/receipts/${receiptUuid}`);\n return ReceiptMapper.fromApiOutput(response.data);\n }\n\n async findAll(params: ReceiptListParams): Promise<Page<Receipt>> {\n const queryParams = ReceiptMapper.toListParams(params);\n const response = await this.http.get<Page<ReceiptApiOutput>>(\n `/mf1/pems/${params.serialNumber}/receipts`,\n { params: queryParams }\n );\n return ReceiptMapper.pageFromApi(response.data);\n }\n\n async getDetails(receiptUuid: string, format: 'json'): Promise<ReceiptDetails>;\n async getDetails(receiptUuid: string, format: 'pdf'): Promise<string>;\n async getDetails(receiptUuid: string, format: 'json' | 'pdf'): Promise<ReceiptDetails | string> {\n if (format === 'pdf') {\n const response = await this.http.get<string>(`/mf1/receipts/${receiptUuid}/details`, {\n headers: { Accept: 'application/pdf' },\n responseType: 'arraybuffer',\n });\n return response.data;\n }\n const response = await this.http.get<ReceiptDetailsApiOutput>(\n `/mf1/receipts/${receiptUuid}/details`,\n { headers: { Accept: 'application/json' } }\n );\n return ReceiptMapper.fromApiDetailsOutput(response.data);\n }\n\n async getReturnableItems(receiptUuid: string): Promise<ReturnableReceiptItem[]> {\n const response = await this.http.get<ReturnableReceiptItemApiOutput[]>(\n `/mf1/receipts/${receiptUuid}/returnable-items`\n );\n return response.data.map((item) => ReceiptMapper.returnableItemFromApi(item));\n }\n\n async voidReceipt(input: VoidReceiptInput): Promise<void> {\n const apiInput = ReceiptMapper.voidInputToApi(input);\n await this.http.delete('/mf1/receipts', { data: apiInput });\n }\n\n async voidViaDifferentDevice(input: VoidViaDifferentDeviceInput): Promise<void> {\n const apiInput = ReceiptMapper.voidViaDifferentDeviceToApi(input);\n await this.http.delete('/mf1/receipts/void-via-different-device', { data: apiInput });\n }\n\n async voidWithProof(input: VoidWithProofInput): Promise<void> {\n const apiInput = ReceiptMapper.voidWithProofToApi(input);\n await this.http.delete('/mf1/receipts/void-with-proof', { data: apiInput });\n }\n\n async returnItems(input: ReceiptReturnInput): Promise<Receipt> {\n const apiInput = ReceiptMapper.returnInputToApi(input);\n const response = await this.http.post<ReceiptApiOutput>('/mf1/receipts/return', apiInput);\n return ReceiptMapper.fromApiOutput(response.data);\n }\n\n async returnViaDifferentDevice(input: ReturnViaDifferentDeviceInput): Promise<Receipt> {\n const apiInput = ReceiptMapper.returnViaDifferentDeviceToApi(input);\n const response = await this.http.post<ReceiptApiOutput>(\n '/mf1/receipts/return-via-different-device',\n apiInput\n );\n return ReceiptMapper.fromApiOutput(response.data);\n }\n\n async returnWithProof(input: ReturnWithProofInput): Promise<Receipt> {\n const apiInput = ReceiptMapper.returnWithProofToApi(input);\n const response = await this.http.post<ReceiptApiOutput>(\n '/mf1/receipts/return-with-proof',\n apiInput\n );\n return ReceiptMapper.fromApiOutput(response.data);\n }\n}\n","import {\n Merchant,\n MerchantCreateInput,\n MerchantUpdateInput,\n} from '@/domain/entities/merchant.entity';\nimport { Address } from '@/domain/value-objects/address.vo';\n\nexport interface AddressApiOutput {\n street_address: string;\n street_number: string;\n zip_code: string;\n city: string;\n province: string;\n}\n\nexport interface MerchantApiOutput {\n uuid: string;\n vat_number: string;\n fiscal_code?: string | null;\n email: string;\n business_name?: string | null;\n first_name?: string | null;\n last_name?: string | null;\n address?: AddressApiOutput;\n}\n\nexport interface MerchantCreateApiInput {\n vat_number: string;\n fiscal_code?: string;\n business_name?: string | null;\n first_name?: string | null;\n last_name?: string | null;\n email: string;\n password: string;\n address?: AddressApiOutput;\n}\n\nexport interface MerchantUpdateApiInput {\n business_name?: string | null;\n first_name?: string | null;\n last_name?: string | null;\n address?: AddressApiOutput | null;\n}\n\nexport class AddressMapper {\n static toApi(address: Address): AddressApiOutput {\n return {\n street_address: address.streetAddress,\n street_number: address.streetNumber,\n zip_code: address.zipCode,\n city: address.city,\n province: address.province,\n };\n }\n\n static fromApi(address: AddressApiOutput): Address {\n return {\n streetAddress: address.street_address,\n streetNumber: address.street_number,\n zipCode: address.zip_code,\n city: address.city,\n province: address.province,\n };\n }\n}\n\nexport class MerchantMapper {\n static toCreateApiInput(input: MerchantCreateInput): MerchantCreateApiInput {\n return {\n vat_number: input.vatNumber,\n fiscal_code: input.fiscalCode,\n business_name: input.businessName,\n first_name: input.firstName,\n last_name: input.lastName,\n email: input.email,\n password: input.password,\n address: input.address ? AddressMapper.toApi(input.address) : undefined,\n };\n }\n\n static toUpdateApiInput(input: MerchantUpdateInput): MerchantUpdateApiInput {\n return {\n business_name: input.businessName,\n first_name: input.firstName,\n last_name: input.lastName,\n address: input.address ? AddressMapper.toApi(input.address) : input.address,\n };\n }\n\n static fromApiOutput(output: MerchantApiOutput): Merchant {\n return {\n uuid: output.uuid,\n vatNumber: output.vat_number,\n fiscalCode: output.fiscal_code,\n email: output.email,\n businessName: output.business_name,\n firstName: output.first_name,\n lastName: output.last_name,\n address: output.address ? AddressMapper.fromApi(output.address) : undefined,\n };\n }\n\n static pageFromApi(response: MerchantApiOutput[]): Merchant[] {\n return response.map((m) => this.fromApiOutput(m));\n }\n}\n","import { MerchantApiOutput, MerchantMapper } from '@/application/dto/merchant.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport {\n Merchant,\n MerchantCreateInput,\n MerchantUpdateInput,\n MerchantsParams,\n} from '@/domain/entities/merchant.entity';\nimport { IMerchantRepository } from '@/domain/repositories/merchant.repository';\n\nexport class MerchantRepositoryImpl implements IMerchantRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async create(input: MerchantCreateInput): Promise<Merchant> {\n const apiInput = MerchantMapper.toCreateApiInput(input);\n const response = await this.http.post<MerchantApiOutput>('/mf2/merchants', apiInput);\n return MerchantMapper.fromApiOutput(response.data);\n }\n\n async findById(uuid: string): Promise<Merchant> {\n const response = await this.http.get<MerchantApiOutput>(`/mf2/merchants/${uuid}`);\n return MerchantMapper.fromApiOutput(response.data);\n }\n\n async findAll(params?: MerchantsParams): Promise<Merchant[]> {\n const response = await this.http.get<MerchantApiOutput[]>('/mf2/merchants', {\n params: { page: params?.page },\n });\n return MerchantMapper.pageFromApi(response.data);\n }\n\n async update(uuid: string, input: MerchantUpdateInput): Promise<Merchant> {\n const apiInput = MerchantMapper.toUpdateApiInput(input);\n const response = await this.http.put<MerchantApiOutput>(`/mf2/merchants/${uuid}`, apiInput);\n return MerchantMapper.fromApiOutput(response.data);\n }\n}\n","import { Cashier, CashierCreateInput, CashierStatus } from '@/domain/entities/cashier.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport interface CashierApiOutput {\n uuid: string;\n merchant_uuid: string;\n display_name: string | null;\n email: string;\n name: string;\n status: CashierStatus;\n}\n\nexport interface CashierCreateApiInput {\n email: string;\n password: string;\n name: string;\n display_name: string | null;\n}\n\nexport class CashierMapper {\n static toCreateApiInput(input: CashierCreateInput): CashierCreateApiInput {\n return {\n email: input.email,\n password: input.password,\n name: input.name,\n display_name: input.displayName ?? null,\n };\n }\n\n static fromApiOutput(output: CashierApiOutput): Cashier {\n return {\n uuid: output.uuid,\n merchantUuid: output.merchant_uuid,\n displayName: output.display_name,\n email: output.email,\n name: output.name,\n status: output.status,\n };\n }\n\n static pageFromApi(response: Page<CashierApiOutput>): Page<Cashier> {\n return {\n members: response.members.map((c) => this.fromApiOutput(c)),\n total: response.total,\n page: response.page,\n size: response.size,\n pages: response.pages,\n };\n }\n}\n","import { CashierApiOutput, CashierMapper } from '@/application/dto/cashier.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { Cashier, CashierCreateInput, CashierListParams } from '@/domain/entities/cashier.entity';\nimport { ICashierRepository } from '@/domain/repositories/cashier.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class CashierRepositoryImpl implements ICashierRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async create(input: CashierCreateInput): Promise<Cashier> {\n const apiInput = CashierMapper.toCreateApiInput(input);\n const response = await this.http.post<CashierApiOutput>('/mf1/cashiers', apiInput);\n return CashierMapper.fromApiOutput(response.data);\n }\n\n async findMe(): Promise<Cashier> {\n const response = await this.http.get<CashierApiOutput>('/mf1/cashiers/me');\n return CashierMapper.fromApiOutput(response.data);\n }\n\n async findById(uuid: string): Promise<Cashier> {\n const response = await this.http.get<CashierApiOutput>(`/mf1/cashiers/${uuid}`);\n return CashierMapper.fromApiOutput(response.data);\n }\n\n async findAll(params?: CashierListParams): Promise<Page<Cashier>> {\n const response = await this.http.get<Page<CashierApiOutput>>('/mf1/cashiers', {\n params: { page: params?.page, size: params?.size, status: params?.status },\n });\n return CashierMapper.pageFromApi(response.data);\n }\n\n async delete(uuid: string): Promise<void> {\n await this.http.delete(`/mf1/cashiers/${uuid}`);\n }\n}\n","import {\n CashRegister,\n CashRegisterCreateInput,\n CashRegisterDetailed,\n CashRegisterUpdateInput,\n} from '@/domain/entities/cash-register.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport interface CashRegisterApiOutput {\n uuid: string;\n pem_serial_number: string;\n name: string;\n}\n\nexport interface CashRegisterDetailedApiOutput extends CashRegisterApiOutput {\n mtls_certificate: string;\n private_key: string;\n}\n\nexport interface CashRegisterCreateApiInput {\n pem_serial_number: string;\n name: string;\n}\n\nexport interface CashRegisterUpdateApiInput {\n name: string;\n}\n\nexport class CashRegisterMapper {\n static toCreateApiInput(input: CashRegisterCreateInput): CashRegisterCreateApiInput {\n return {\n pem_serial_number: input.pemSerialNumber,\n name: input.name,\n };\n }\n\n static toUpdateApiInput(input: CashRegisterUpdateInput): CashRegisterUpdateApiInput {\n return {\n name: input.name,\n };\n }\n\n static fromApiOutput(output: CashRegisterApiOutput): CashRegister {\n return {\n uuid: output.uuid,\n pemSerialNumber: output.pem_serial_number,\n name: output.name,\n };\n }\n\n static fromDetailedApiOutput(output: CashRegisterDetailedApiOutput): CashRegisterDetailed {\n return {\n ...this.fromApiOutput(output),\n mtlsCertificate: output.mtls_certificate,\n privateKey: output.private_key,\n };\n }\n\n static pageFromApi(response: Page<CashRegisterApiOutput>): Page<CashRegister> {\n return {\n members: response.members.map((c) => this.fromApiOutput(c)),\n total: response.total,\n page: response.page,\n size: response.size,\n pages: response.pages,\n };\n }\n}\n","import {\n CashRegisterApiOutput,\n CashRegisterDetailedApiOutput,\n CashRegisterMapper,\n} from '@/application/dto/cash-register.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport {\n CashRegister,\n CashRegisterCreateInput,\n CashRegisterDetailed,\n CashRegisterListParams,\n CashRegisterUpdateInput,\n} from '@/domain/entities/cash-register.entity';\nimport { ICashRegisterRepository } from '@/domain/repositories/cash-register.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class CashRegisterRepositoryImpl implements ICashRegisterRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async create(input: CashRegisterCreateInput): Promise<CashRegisterDetailed> {\n const apiInput = CashRegisterMapper.toCreateApiInput(input);\n const response = await this.http.post<CashRegisterDetailedApiOutput>(\n '/mf1/cash-registers',\n apiInput\n );\n return CashRegisterMapper.fromDetailedApiOutput(response.data);\n }\n\n async findById(uuid: string): Promise<CashRegister> {\n const response = await this.http.get<CashRegisterApiOutput>(`/mf1/cash-registers/${uuid}`);\n return CashRegisterMapper.fromApiOutput(response.data);\n }\n\n async findAll(params?: CashRegisterListParams): Promise<Page<CashRegister>> {\n const response = await this.http.get<Page<CashRegisterApiOutput>>('/mf1/cash-registers', {\n params: {\n page: params?.page,\n size: params?.size,\n pem_id: params?.pemId,\n },\n });\n return CashRegisterMapper.pageFromApi(response.data);\n }\n\n async update(uuid: string, input: CashRegisterUpdateInput): Promise<CashRegister> {\n const apiInput = CashRegisterMapper.toUpdateApiInput(input);\n const response = await this.http.patch<CashRegisterApiOutput>(\n `/mf1/cash-registers/${uuid}`,\n apiInput\n );\n return CashRegisterMapper.fromApiOutput(response.data);\n }\n}\n","import {\n ActivationRequest,\n PEMStatus,\n PEMStatusOfflineRequest,\n PointOfSale,\n PointOfSaleDetailed,\n} from '@/domain/entities/point-of-sale.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nimport { AddressApiOutput, AddressMapper } from './merchant.dto';\n\nexport interface PointOfSaleApiOutput {\n serial_number: string;\n status: PEMStatus;\n address: AddressApiOutput;\n operational_status: string;\n}\n\nexport interface PointOfSaleDetailedApiOutput extends PointOfSaleApiOutput {\n registration_key?: string;\n}\n\nexport interface ActivationRequestApiInput {\n registration_key: string;\n}\n\nexport interface PEMStatusOfflineRequestApiInput {\n timestamp: string;\n reason: string;\n}\n\nexport class PointOfSaleMapper {\n static toActivationApiInput(input: ActivationRequest): ActivationRequestApiInput {\n return {\n registration_key: input.registrationKey,\n };\n }\n\n static toOfflineApiInput(input: PEMStatusOfflineRequest): PEMStatusOfflineRequestApiInput {\n return {\n timestamp: input.timestamp,\n reason: input.reason,\n };\n }\n\n static fromApiOutput(output: PointOfSaleApiOutput): PointOfSale {\n return {\n serialNumber: output.serial_number,\n status: output.status,\n address: AddressMapper.fromApi(output.address),\n operationalStatus: output.operational_status,\n };\n }\n\n static fromDetailedApiOutput(output: PointOfSaleDetailedApiOutput): PointOfSaleDetailed {\n return {\n ...this.fromApiOutput(output),\n registrationKey: output.registration_key,\n };\n }\n\n static pageFromApi(response: Page<PointOfSaleApiOutput>): Page<PointOfSale> {\n return {\n members: response.members.map((p) => this.fromApiOutput(p)),\n total: response.total,\n page: response.page,\n size: response.size,\n pages: response.pages,\n };\n }\n}\n","import {\n PointOfSaleApiOutput,\n PointOfSaleDetailedApiOutput,\n PointOfSaleMapper,\n} from '@/application/dto/point-of-sale.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport {\n ActivationRequest,\n PEMStatusOfflineRequest,\n PointOfSale,\n PointOfSaleDetailed,\n PointOfSaleListParams,\n} from '@/domain/entities/point-of-sale.entity';\nimport { IPointOfSaleRepository } from '@/domain/repositories/point-of-sale.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class PointOfSaleRepositoryImpl implements IPointOfSaleRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async findById(serialNumber: string): Promise<PointOfSaleDetailed> {\n const response = await this.http.get<PointOfSaleDetailedApiOutput>(`/mf1/pems/${serialNumber}`);\n return PointOfSaleMapper.fromDetailedApiOutput(response.data);\n }\n\n async findAll(params?: PointOfSaleListParams): Promise<Page<PointOfSale>> {\n const response = await this.http.get<Page<PointOfSaleApiOutput>>('/mf1/pems', {\n params: {\n status: params?.status,\n page: params?.page,\n size: params?.size,\n },\n });\n return PointOfSaleMapper.pageFromApi(response.data);\n }\n\n async activate(serialNumber: string, input: ActivationRequest): Promise<void> {\n const apiInput = PointOfSaleMapper.toActivationApiInput(input);\n await this.http.post(`/mf1/pems/${serialNumber}/activation`, apiInput);\n }\n\n async closeJournal(serialNumber: string): Promise<void> {\n await this.http.post(`/mf1/pems/${serialNumber}/close`);\n }\n\n async createInactivity(serialNumber: string): Promise<void> {\n await this.http.post(`/mf1/pems/${serialNumber}/inactivity`);\n }\n\n async communicateOffline(serialNumber: string, input: PEMStatusOfflineRequest): Promise<void> {\n const apiInput = PointOfSaleMapper.toOfflineApiInput(input);\n await this.http.post(`/mf1/pems/${serialNumber}/communicate-offline`, apiInput);\n }\n}\n","import {\n Supplier,\n SupplierCreateInput,\n SupplierUpdateInput,\n} from '@/domain/entities/supplier.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nimport { AddressApiOutput, AddressMapper } from './merchant.dto';\n\nexport interface SupplierApiOutput {\n uuid: string;\n fiscal_id: string;\n name: string;\n address?: AddressApiOutput;\n}\n\nexport interface SupplierCreateApiInput {\n fiscal_id: string;\n name: string;\n address?: AddressApiOutput;\n}\n\nexport interface SupplierUpdateApiInput {\n name: string;\n address?: AddressApiOutput;\n}\n\nexport class SupplierMapper {\n static toCreateApiInput(input: SupplierCreateInput): SupplierCreateApiInput {\n return {\n fiscal_id: input.fiscalId,\n name: input.name,\n address: input.address ? AddressMapper.toApi(input.address) : undefined,\n };\n }\n\n static toUpdateApiInput(input: SupplierUpdateInput): SupplierUpdateApiInput {\n return {\n name: input.name,\n address: input.address ? AddressMapper.toApi(input.address) : undefined,\n };\n }\n\n static fromApiOutput(output: SupplierApiOutput): Supplier {\n return {\n uuid: output.uuid,\n fiscalId: output.fiscal_id,\n name: output.name,\n address: output.address ? AddressMapper.fromApi(output.address) : undefined,\n };\n }\n\n static pageFromApi(response: {\n members: SupplierApiOutput[];\n total?: number;\n page?: number;\n size?: number;\n pages?: number;\n }): Page<Supplier> {\n return {\n members: response.members.map((s) => this.fromApiOutput(s)),\n total: response.total,\n page: response.page,\n size: response.size,\n pages: response.pages,\n };\n }\n}\n","import { SupplierApiOutput, SupplierMapper } from '@/application/dto/supplier.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport {\n Supplier,\n SupplierCreateInput,\n SupplierUpdateInput,\n SuppliersParams,\n} from '@/domain/entities/supplier.entity';\nimport { ISupplierRepository } from '@/domain/repositories/supplier.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class SupplierRepositoryImpl implements ISupplierRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async create(merchantUuid: string, input: SupplierCreateInput): Promise<Supplier> {\n const apiInput = SupplierMapper.toCreateApiInput(input);\n const response = await this.http.post<SupplierApiOutput>(\n `/mf2/merchants/${merchantUuid}/suppliers`,\n apiInput\n );\n return SupplierMapper.fromApiOutput(response.data);\n }\n\n async findById(merchantUuid: string, supplierUuid: string): Promise<Supplier> {\n const response = await this.http.get<SupplierApiOutput>(\n `/mf2/merchants/${merchantUuid}/suppliers/${supplierUuid}`\n );\n return SupplierMapper.fromApiOutput(response.data);\n }\n\n async findAll(merchantUuid: string, params?: SuppliersParams): Promise<Page<Supplier>> {\n const response = await this.http.get<Page<SupplierApiOutput>>(\n `/mf2/merchants/${merchantUuid}/suppliers`,\n { params: { page: params?.page } }\n );\n return SupplierMapper.pageFromApi(response.data);\n }\n\n async update(\n merchantUuid: string,\n supplierUuid: string,\n input: SupplierUpdateInput\n ): Promise<Supplier> {\n const apiInput = SupplierMapper.toUpdateApiInput(input);\n const response = await this.http.patch<SupplierApiOutput>(\n `/mf2/merchants/${merchantUuid}/suppliers/${supplierUuid}`,\n apiInput\n );\n return SupplierMapper.fromApiOutput(response.data);\n }\n\n async delete(merchantUuid: string, supplierUuid: string): Promise<void> {\n await this.http.delete(`/mf2/merchants/${merchantUuid}/suppliers/${supplierUuid}`);\n }\n}\n","import { PemCertificates, PemCreateInput, PemCreateOutput } from '@/domain/entities/pem.entity';\nimport { PointOfSaleMf2 } from '@/domain/entities/point-of-sale.entity';\n\nimport { AddressApiOutput } from './merchant.dto';\n\nexport interface PemCreateApiInput {\n merchant_uuid: string;\n address?: {\n street_address: string;\n street_number: string;\n zip_code: string;\n city: string;\n province: string;\n };\n}\n\nexport interface PemCreateApiOutput {\n serial_number: string;\n registration_key: string;\n}\n\nexport interface PemCertificatesApiOutput {\n mtls_certificate: string;\n activation_xml_response?: string;\n}\n\nexport interface PointOfSaleMf2ApiOutput {\n serial_number: string;\n status: 'NEW' | 'REGISTERED' | 'ACTIVATED' | 'ONLINE' | 'OFFLINE' | 'DISCARDED';\n type: 'AP' | 'SP' | 'TM' | 'PV';\n address?: AddressApiOutput;\n}\n\nexport class PemMapper {\n static toCreateApiInput(input: PemCreateInput): PemCreateApiInput {\n const apiInput: PemCreateApiInput = {\n merchant_uuid: input.merchantUuid,\n };\n\n if (input.address) {\n apiInput.address = {\n street_address: input.address.streetAddress,\n street_number: input.address.streetNumber,\n zip_code: input.address.zipCode,\n city: input.address.city,\n province: input.address.province,\n };\n }\n\n return apiInput;\n }\n\n static fromCreateApiOutput(output: PemCreateApiOutput): PemCreateOutput {\n return {\n serialNumber: output.serial_number,\n registrationKey: output.registration_key,\n };\n }\n\n static fromCertificatesApiOutput(output: PemCertificatesApiOutput): PemCertificates {\n return {\n mtlsCertificate: output.mtls_certificate,\n activationXmlResponse: output.activation_xml_response,\n };\n }\n\n static fromPointOfSaleMf2ApiOutput(output: PointOfSaleMf2ApiOutput): PointOfSaleMf2 {\n return {\n serialNumber: output.serial_number,\n status: output.status,\n type: output.type,\n address: output.address\n ? {\n streetAddress: output.address.street_address,\n streetNumber: output.address.street_number ?? '',\n zipCode: output.address.zip_code,\n city: output.address.city,\n province: output.address.province,\n }\n : undefined,\n };\n }\n\n static pageFromApi(data: PointOfSaleMf2ApiOutput[]): PointOfSaleMf2[] {\n return data.map((item) => PemMapper.fromPointOfSaleMf2ApiOutput(item));\n }\n}\n","import {\n PemCertificatesApiOutput,\n PemCreateApiOutput,\n PemMapper,\n PointOfSaleMf2ApiOutput,\n} from '@/application/dto/pem.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { PemCertificates, PemCreateInput, PemCreateOutput } from '@/domain/entities/pem.entity';\nimport { PointOfSaleMf2 } from '@/domain/entities/point-of-sale.entity';\nimport { IPemRepository } from '@/domain/repositories/pem.repository';\n\nexport class PemRepositoryImpl implements IPemRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async create(input: PemCreateInput): Promise<PemCreateOutput> {\n const apiInput = PemMapper.toCreateApiInput(input);\n const response = await this.http.post<PemCreateApiOutput>('/mf2/pems', apiInput);\n return PemMapper.fromCreateApiOutput(response.data);\n }\n\n async findBySerialNumber(serialNumber: string): Promise<PointOfSaleMf2> {\n const response = await this.http.get<PointOfSaleMf2ApiOutput>(`/mf2/pems/${serialNumber}`);\n return PemMapper.fromPointOfSaleMf2ApiOutput(response.data);\n }\n\n async findAllByMerchant(merchantUuid: string, page?: number): Promise<PointOfSaleMf2[]> {\n const response = await this.http.get<PointOfSaleMf2ApiOutput[]>(\n `/mf2/merchants/${merchantUuid}/pems`,\n { params: { page } }\n );\n return PemMapper.pageFromApi(response.data);\n }\n\n async getCertificates(serialNumber: string): Promise<PemCertificates> {\n const response = await this.http.get<PemCertificatesApiOutput>(\n `/mf2/pems/${serialNumber}/certificates`\n );\n return PemMapper.fromCertificatesApiOutput(response.data);\n }\n}\n","import {\n DailyReport,\n DailyReportStatus,\n DailyReportsParams,\n} from '@/domain/entities/daily-report.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport interface DailyReportApiOutput {\n uuid: string;\n pem_serial_number: string;\n date: string;\n total_receipts: number;\n total_amount: string;\n status: 'pending' | 'sent' | 'error';\n}\n\nexport class DailyReportMapper {\n static fromApiOutput(output: DailyReportApiOutput): DailyReport {\n return {\n uuid: output.uuid,\n pemSerialNumber: output.pem_serial_number,\n date: output.date,\n totalReceipts: output.total_receipts,\n totalAmount: output.total_amount,\n status: output.status as DailyReportStatus,\n };\n }\n\n static toListParams(params?: DailyReportsParams): Record<string, string | number | undefined> {\n if (!params) return {};\n\n return {\n pem_serial_number: params.pemSerialNumber,\n date_from: params.dateFrom,\n date_to: params.dateTo,\n status: params.status,\n page: params.page,\n };\n }\n\n static pageFromApi(data: {\n members: DailyReportApiOutput[];\n total?: number;\n page?: number;\n size?: number;\n pages?: number;\n }): Page<DailyReport> {\n return {\n members: data.members.map((item) => DailyReportMapper.fromApiOutput(item)),\n total: data.total,\n page: data.page,\n size: data.size,\n pages: data.pages,\n };\n }\n}\n","import { DailyReportApiOutput, DailyReportMapper } from '@/application/dto/daily-report.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { DailyReport, DailyReportsParams } from '@/domain/entities/daily-report.entity';\nimport { IDailyReportRepository } from '@/domain/repositories/daily-report.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class DailyReportRepositoryImpl implements IDailyReportRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async findById(merchantUuid: string, reportUuid: string): Promise<DailyReport> {\n const response = await this.http.get<DailyReportApiOutput>(\n `/mf2/merchants/${merchantUuid}/daily-reports/${reportUuid}`\n );\n return DailyReportMapper.fromApiOutput(response.data);\n }\n\n async findAll(merchantUuid: string, params?: DailyReportsParams): Promise<Page<DailyReport>> {\n const queryParams = DailyReportMapper.toListParams(params);\n const response = await this.http.get<Page<DailyReportApiOutput>>(\n `/mf2/merchants/${merchantUuid}/daily-reports`,\n { params: queryParams }\n );\n return DailyReportMapper.pageFromApi(response.data);\n }\n}\n","import {\n Journal,\n JournalCloseInput,\n JournalStatus,\n JournalsParams,\n} from '@/domain/entities/journal.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport interface JournalApiOutput {\n uuid: string;\n pem_serial_number: string;\n date: string;\n sequence_number: number;\n total_receipts: number;\n total_amount: string;\n status: 'open' | 'closed';\n}\n\nexport class JournalMapper {\n static fromApiOutput(output: JournalApiOutput): Journal {\n return {\n uuid: output.uuid,\n pemSerialNumber: output.pem_serial_number,\n date: output.date,\n sequenceNumber: output.sequence_number,\n totalReceipts: output.total_receipts,\n totalAmount: output.total_amount,\n status: output.status as JournalStatus,\n };\n }\n\n static toListParams(params?: JournalsParams): Record<string, string | number | undefined> {\n if (!params) return {};\n\n return {\n pem_serial_number: params.pemSerialNumber,\n status: params.status,\n date_from: params.dateFrom,\n date_to: params.dateTo,\n page: params.page,\n };\n }\n\n static toCloseApiInput(input: JournalCloseInput): { journal_uuid: string } {\n return {\n journal_uuid: input.journalUuid,\n };\n }\n\n static pageFromApi(data: {\n members: JournalApiOutput[];\n total?: number;\n page?: number;\n size?: number;\n pages?: number;\n }): Page<Journal> {\n return {\n members: data.members.map((item) => JournalMapper.fromApiOutput(item)),\n total: data.total,\n page: data.page,\n size: data.size,\n pages: data.pages,\n };\n }\n}\n","import { JournalApiOutput, JournalMapper } from '@/application/dto/journal.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { Journal, JournalCloseInput, JournalsParams } from '@/domain/entities/journal.entity';\nimport { IJournalRepository } from '@/domain/repositories/journal.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class JournalRepositoryImpl implements IJournalRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async findById(merchantUuid: string, journalUuid: string): Promise<Journal> {\n const response = await this.http.get<JournalApiOutput>(\n `/mf2/merchants/${merchantUuid}/journals/${journalUuid}`\n );\n return JournalMapper.fromApiOutput(response.data);\n }\n\n async findAll(merchantUuid: string, params?: JournalsParams): Promise<Page<Journal>> {\n const queryParams = JournalMapper.toListParams(params);\n const response = await this.http.get<Page<JournalApiOutput>>(\n `/mf2/merchants/${merchantUuid}/journals`,\n { params: queryParams }\n );\n return JournalMapper.pageFromApi(response.data);\n }\n\n async close(merchantUuid: string, input: JournalCloseInput): Promise<Journal> {\n const apiInput = JournalMapper.toCloseApiInput(input);\n const response = await this.http.post<JournalApiOutput>(\n `/mf2/merchants/${merchantUuid}/journals/close`,\n apiInput\n );\n return JournalMapper.fromApiOutput(response.data);\n }\n}\n","export const NOTIFICATION_CODES = {\n MF2_UNREACHABLE: 'SYS-W-01',\n STATUS_OFFLINE: 'SYS-C-01',\n STATUS_ONLINE: 'SYS-I-01',\n COMMUNICATION_RESTORED: 'SYS-I-02',\n} as const;\n\nexport type NotificationCode = (typeof NOTIFICATION_CODES)[keyof typeof NOTIFICATION_CODES];\n\nexport const NOTIFICATION_SOURCES = {\n SYSTEM: 'system',\n ITALIAN_TAX_AUTHORITY: 'Italian Tax Authority',\n} as const;\n\nexport type NotificationSource = (typeof NOTIFICATION_SOURCES)[keyof typeof NOTIFICATION_SOURCES];\n\nexport const NOTIFICATION_LEVELS = {\n INFO: 'info',\n WARNING: 'warning',\n ERROR: 'error',\n CRITICAL: 'critical',\n} as const;\n\nexport type NotificationLevel = (typeof NOTIFICATION_LEVELS)[keyof typeof NOTIFICATION_LEVELS];\n\nexport const NOTIFICATION_TYPES = {\n MF2_UNREACHABLE: 'INTERNAL_COMMUNICATION_FAILURE',\n STATUS_OFFLINE: 'STATUS_OFFLINE',\n STATUS_ONLINE: 'STATUS_ONLINE',\n COMMUNICATION_RESTORED: 'INTERNAL_COMMUNICATION_RESTORED',\n} as const;\n\nexport type NotificationType = (typeof NOTIFICATION_TYPES)[keyof typeof NOTIFICATION_TYPES];\n\nexport const NOTIFICATION_SCOPES = {\n GLOBAL: 'global',\n MERCHANT: 'merchant',\n PEM: 'pem',\n} as const;\n\nexport type NotificationScope = (typeof NOTIFICATION_SCOPES)[keyof typeof NOTIFICATION_SCOPES];\n\nexport interface NotificationPayloadBlockAt {\n block_at: string;\n}\n\ninterface NotificationBase {\n uuid: string;\n message: string;\n scope: NotificationScope;\n source: NotificationSource;\n level: NotificationLevel;\n createdAt: string;\n}\n\nexport interface NotificationMf2Unreachable extends NotificationBase {\n type: typeof NOTIFICATION_TYPES.MF2_UNREACHABLE;\n code: typeof NOTIFICATION_CODES.MF2_UNREACHABLE;\n payload: NotificationPayloadBlockAt;\n}\n\nexport interface NotificationStatusOffline extends NotificationBase {\n type: typeof NOTIFICATION_TYPES.STATUS_OFFLINE;\n code: typeof NOTIFICATION_CODES.STATUS_OFFLINE;\n payload: null;\n}\n\nexport interface NotificationStatusOnline extends NotificationBase {\n type: typeof NOTIFICATION_TYPES.STATUS_ONLINE;\n code: typeof NOTIFICATION_CODES.STATUS_ONLINE;\n payload: null;\n}\n\nexport interface NotificationCommunicationRestored extends NotificationBase {\n type: typeof NOTIFICATION_TYPES.COMMUNICATION_RESTORED;\n code: typeof NOTIFICATION_CODES.COMMUNICATION_RESTORED;\n payload: null;\n}\n\nexport type Notification =\n | NotificationMf2Unreachable\n | NotificationStatusOffline\n | NotificationStatusOnline\n | NotificationCommunicationRestored;\n\nexport interface NotificationListParams {\n page?: number;\n size?: number;\n}\n","import {\n NOTIFICATION_CODES,\n NOTIFICATION_TYPES,\n Notification,\n NotificationCommunicationRestored,\n NotificationLevel,\n NotificationMf2Unreachable,\n NotificationPayloadBlockAt,\n NotificationScope,\n NotificationSource,\n NotificationStatusOffline,\n NotificationStatusOnline,\n} from '@/domain/entities/notification.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\ninterface NotificationApiOutputBase {\n uuid: string;\n message: string;\n scope: NotificationScope;\n source: NotificationSource;\n level: NotificationLevel;\n created_at: string;\n}\n\nexport interface NotificationMf2UnreachableApiOutput extends NotificationApiOutputBase {\n type: typeof NOTIFICATION_TYPES.MF2_UNREACHABLE;\n code: typeof NOTIFICATION_CODES.MF2_UNREACHABLE;\n payload: NotificationPayloadBlockAt;\n}\n\nexport interface NotificationStatusOfflineApiOutput extends NotificationApiOutputBase {\n type: typeof NOTIFICATION_TYPES.STATUS_OFFLINE;\n code: typeof NOTIFICATION_CODES.STATUS_OFFLINE;\n payload?: null;\n}\n\nexport interface NotificationStatusOnlineApiOutput extends NotificationApiOutputBase {\n type: typeof NOTIFICATION_TYPES.STATUS_ONLINE;\n code: typeof NOTIFICATION_CODES.STATUS_ONLINE;\n payload?: null;\n}\n\nexport interface NotificationCommunicationRestoredApiOutput extends NotificationApiOutputBase {\n type: typeof NOTIFICATION_TYPES.COMMUNICATION_RESTORED;\n code: typeof NOTIFICATION_CODES.COMMUNICATION_RESTORED;\n payload?: null;\n}\n\nexport type NotificationApiOutput =\n | NotificationMf2UnreachableApiOutput\n | NotificationStatusOfflineApiOutput\n | NotificationStatusOnlineApiOutput\n | NotificationCommunicationRestoredApiOutput;\n\nexport interface NotificationPageApiOutput {\n members: NotificationApiOutput[];\n total?: number;\n page?: number;\n size?: number;\n pages?: number;\n}\n\nexport class NotificationMapper {\n static fromApiOutput(output: NotificationApiOutput): Notification {\n const base = {\n uuid: output.uuid,\n message: output.message,\n scope: output.scope,\n source: output.source,\n level: output.level,\n createdAt: output.created_at,\n };\n\n switch (output.code) {\n case NOTIFICATION_CODES.MF2_UNREACHABLE:\n return {\n ...base,\n type: output.type,\n code: output.code,\n payload: output.payload,\n } as NotificationMf2Unreachable;\n case NOTIFICATION_CODES.STATUS_OFFLINE:\n return {\n ...base,\n type: output.type,\n code: output.code,\n payload: null,\n } as NotificationStatusOffline;\n case NOTIFICATION_CODES.STATUS_ONLINE:\n return {\n ...base,\n type: output.type,\n code: output.code,\n payload: null,\n } as NotificationStatusOnline;\n case NOTIFICATION_CODES.COMMUNICATION_RESTORED:\n return {\n ...base,\n type: output.type,\n code: output.code,\n payload: null,\n } as NotificationCommunicationRestored;\n }\n }\n\n static listFromApi(outputs: NotificationApiOutput[]): Notification[] {\n return outputs.map((o) => this.fromApiOutput(o));\n }\n\n static pageFromApiResponse(response: NotificationPageApiOutput): Page<Notification> {\n return {\n members: this.listFromApi(response.members),\n total: response.total,\n page: response.page,\n size: response.size,\n pages: response.pages,\n };\n }\n}\n","import { NotificationMapper, NotificationPageApiOutput } from '@/application/dto/notification.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { Notification, NotificationListParams } from '@/domain/entities/notification.entity';\nimport { INotificationRepository } from '@/domain/repositories/notification.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class NotificationRepositoryImpl implements INotificationRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async fetchNotifications(_params?: NotificationListParams): Promise<Page<Notification>> {\n const queryParams = new URLSearchParams();\n if (_params?.page !== undefined) queryParams.set('page', String(_params.page));\n if (_params?.size !== undefined) queryParams.set('size', String(_params.size));\n const queryString = queryParams.toString();\n const url = queryString ? `/mf1/notifications?${queryString}` : '/mf1/notifications';\n const response = await this.http.get<NotificationPageApiOutput>(url);\n return NotificationMapper.pageFromApiResponse(response.data);\n }\n}\n","import {\n LotterySecretRequestInfo,\n LotteryTelemetry,\n MessageInfo,\n PendingReceipts,\n SoftwareVersionStatus,\n Telemetry,\n TelemetryMerchant,\n TelemetrySoftware,\n TelemetrySoftwareVersion,\n TelemetrySupplier,\n TransmissionAttemptInfo,\n} from '@/domain/entities/telemetry.entity';\n\nexport interface TelemetryMerchantApiOutput {\n vat_number: string | null;\n fiscal_code: string | null;\n business_name: string | null;\n}\n\nexport interface TelemetrySupplierApiOutput {\n vat_number: string | null;\n fiscal_code: string | null;\n business_name: string | null;\n}\n\nexport interface TelemetrySoftwareVersionApiOutput {\n version: string | null;\n swid: string | null;\n installed_at: string | null;\n status: string;\n}\n\nexport interface TelemetrySoftwareApiOutput {\n code: string | null;\n name: string | null;\n approval_reference: string | null;\n version_info: TelemetrySoftwareVersionApiOutput | null;\n}\n\nexport interface PendingReceiptsApiOutput {\n count: number;\n total_amount: string;\n}\n\nexport interface TransmissionAttemptApiOutput {\n attempted_at: string | null;\n outcome: string | null;\n}\n\nexport interface MessageApiOutput {\n received_at: string | null;\n content: string | null;\n}\n\nexport interface LotterySecretRequestApiOutput {\n requested_at: string | null;\n outcome: string | null;\n}\n\nexport interface LotteryApiOutput {\n last_transmission: TransmissionAttemptApiOutput | null;\n secret_request: LotterySecretRequestApiOutput | null;\n}\n\nexport interface TelemetryApiOutput {\n pem_id: string;\n pem_status: string;\n pem_status_changed_at: string | null;\n merchant: TelemetryMerchantApiOutput;\n supplier: TelemetrySupplierApiOutput;\n software: TelemetrySoftwareApiOutput;\n last_communication_at: string | null;\n pending_receipts: PendingReceiptsApiOutput | null;\n last_receipt_transmission: TransmissionAttemptApiOutput | null;\n last_message_from_mf2: MessageApiOutput | null;\n ade_corrispettivi_transmission: TransmissionAttemptApiOutput | null;\n last_message_from_ade: MessageApiOutput | null;\n lottery: LotteryApiOutput;\n}\n\nexport class TelemetryMapper {\n static fromApiOutput(output: TelemetryApiOutput): Telemetry {\n return {\n pemId: output.pem_id,\n pemStatus: output.pem_status,\n pemStatusChangedAt: output.pem_status_changed_at,\n merchant: this.merchantFromApi(output.merchant),\n supplier: this.supplierFromApi(output.supplier),\n software: this.softwareFromApi(output.software),\n lastCommunicationAt: output.last_communication_at,\n pendingReceipts: output.pending_receipts\n ? this.pendingReceiptsFromApi(output.pending_receipts)\n : null,\n lastReceiptTransmission: output.last_receipt_transmission\n ? this.transmissionFromApi(output.last_receipt_transmission)\n : null,\n lastMessageFromMf2: output.last_message_from_mf2\n ? this.messageFromApi(output.last_message_from_mf2)\n : null,\n adeCorrispettiviTransmission: output.ade_corrispettivi_transmission\n ? this.transmissionFromApi(output.ade_corrispettivi_transmission)\n : null,\n lastMessageFromAde: output.last_message_from_ade\n ? this.messageFromApi(output.last_message_from_ade)\n : null,\n lottery: this.lotteryFromApi(output.lottery),\n };\n }\n\n private static merchantFromApi(output: TelemetryMerchantApiOutput): TelemetryMerchant {\n return {\n vatNumber: output.vat_number,\n fiscalCode: output.fiscal_code,\n businessName: output.business_name,\n };\n }\n\n private static supplierFromApi(output: TelemetrySupplierApiOutput): TelemetrySupplier {\n return {\n vatNumber: output.vat_number,\n fiscalCode: output.fiscal_code,\n businessName: output.business_name,\n };\n }\n\n private static softwareVersionFromApi(\n output: TelemetrySoftwareVersionApiOutput\n ): TelemetrySoftwareVersion {\n return {\n version: output.version,\n swid: output.swid,\n installedAt: output.installed_at,\n status: output.status as SoftwareVersionStatus,\n };\n }\n\n private static softwareFromApi(output: TelemetrySoftwareApiOutput): TelemetrySoftware {\n return {\n code: output.code,\n name: output.name,\n approvalReference: output.approval_reference,\n versionInfo: output.version_info ? this.softwareVersionFromApi(output.version_info) : null,\n };\n }\n\n private static pendingReceiptsFromApi(output: PendingReceiptsApiOutput): PendingReceipts {\n return {\n count: output.count,\n totalAmount: output.total_amount,\n };\n }\n\n private static transmissionFromApi(\n output: TransmissionAttemptApiOutput\n ): TransmissionAttemptInfo {\n return {\n attemptedAt: output.attempted_at,\n outcome: output.outcome,\n };\n }\n\n private static messageFromApi(output: MessageApiOutput): MessageInfo {\n return {\n receivedAt: output.received_at,\n content: output.content,\n };\n }\n\n private static secretRequestFromApi(\n output: LotterySecretRequestApiOutput\n ): LotterySecretRequestInfo {\n return {\n requestedAt: output.requested_at,\n outcome: output.outcome,\n };\n }\n\n private static lotteryFromApi(output: LotteryApiOutput): LotteryTelemetry {\n return {\n lastTransmission: output.last_transmission\n ? this.transmissionFromApi(output.last_transmission)\n : null,\n secretRequest: output.secret_request\n ? this.secretRequestFromApi(output.secret_request)\n : null,\n };\n }\n}\n","import { TelemetryApiOutput, TelemetryMapper } from '@/application/dto/telemetry.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { Telemetry } from '@/domain/entities/telemetry.entity';\nimport { ITelemetryRepository } from '@/domain/repositories/telemetry.repository';\n\nexport class TelemetryRepositoryImpl implements ITelemetryRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async getTelemetry(pemId: string): Promise<Telemetry> {\n const response = await this.http.get<TelemetryApiOutput>(`/mf1/pems/${pemId}/telemetry`);\n return TelemetryMapper.fromApiOutput(response.data);\n }\n}\n","import {\n CacheResource,\n CacheResourceConfig,\n ICacheKeyGenerator,\n} from '@/application/ports/driven/cache-key.port';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('CACHE-KEY');\n\ninterface UrlPattern {\n pattern: RegExp;\n resource: CacheResource;\n action?: string;\n parent?: string;\n isList?: boolean;\n}\n\nconst URL_PATTERNS: UrlPattern[] = [\n // Receipt (mf1) - specific patterns first\n {\n pattern: /^\\/mf1\\/receipts\\/([^/]+)\\/returnable-items$/,\n resource: 'receipt',\n action: 'returnable',\n },\n {\n pattern: /^\\/mf1\\/receipts\\/([^/]+)\\/details$/,\n resource: 'receipt',\n action: 'details',\n },\n { pattern: /^\\/mf1\\/receipts\\/([^/]+)$/, resource: 'receipt' },\n {\n pattern: /^\\/mf1\\/pems\\/([^/]+)\\/receipts$/,\n resource: 'receipt',\n parent: 'point-of-sale',\n isList: true,\n },\n { pattern: /^\\/mf1\\/receipts$/, resource: 'receipt', isList: true },\n\n // Merchant (mf2)\n { pattern: /^\\/mf2\\/merchants\\/([^/]+)$/, resource: 'merchant' },\n { pattern: /^\\/mf2\\/merchants$/, resource: 'merchant', isList: true },\n\n // Cashier (mf1)\n { pattern: /^\\/mf1\\/cashiers\\/me$/, resource: 'cashier', action: 'me' },\n { pattern: /^\\/mf1\\/cashiers\\/([^/]+)$/, resource: 'cashier' },\n { pattern: /^\\/mf1\\/cashiers$/, resource: 'cashier', isList: true },\n\n // Cash Register (mf1)\n { pattern: /^\\/mf1\\/cash-registers\\/([^/]+)$/, resource: 'cash-register' },\n { pattern: /^\\/mf1\\/cash-registers$/, resource: 'cash-register', isList: true },\n\n // Point of Sale (mf1)\n { pattern: /^\\/mf1\\/pems\\/([^/]+)$/, resource: 'point-of-sale' },\n { pattern: /^\\/mf1\\/pems$/, resource: 'point-of-sale', isList: true },\n\n // Nested resources under merchant (mf2)\n {\n pattern: /^\\/mf2\\/merchants\\/([^/]+)\\/suppliers\\/([^/]+)$/,\n resource: 'supplier',\n parent: 'merchant',\n },\n {\n pattern: /^\\/mf2\\/merchants\\/([^/]+)\\/suppliers$/,\n resource: 'supplier',\n parent: 'merchant',\n isList: true,\n },\n {\n pattern: /^\\/mf2\\/merchants\\/([^/]+)\\/daily-reports/,\n resource: 'daily-report',\n parent: 'merchant',\n isList: true,\n },\n {\n pattern: /^\\/mf2\\/merchants\\/([^/]+)\\/journals/,\n resource: 'journal',\n parent: 'merchant',\n isList: true,\n },\n\n // PEM (mf2)\n {\n pattern: /^\\/mf2\\/pems\\/([^/]+)\\/certificates$/,\n resource: 'pem',\n action: 'certificates',\n },\n { pattern: /^\\/mf2\\/pems\\/([^/]+)$/, resource: 'pem' },\n\n // Others\n { pattern: /^\\/mf1\\/notifications/, resource: 'notification', isList: true },\n {\n pattern: /^\\/mf1\\/pems\\/([^/]+)\\/telemetry$/,\n resource: 'telemetry',\n },\n];\n\nconst DEFAULT_TTL_CONFIG: Record<CacheResource, CacheResourceConfig> = {\n // Data that rarely changes - 30 min TTL for items only\n merchant: { ttlMs: 30 * 60 * 1000, cacheList: false, cacheItem: true },\n 'point-of-sale': { ttlMs: 30 * 60 * 1000, cacheList: false, cacheItem: true },\n 'cash-register': { ttlMs: 30 * 60 * 1000, cacheList: false, cacheItem: true },\n pem: { ttlMs: 30 * 60 * 1000, cacheList: false, cacheItem: false },\n\n // Data that changes moderately - 10 min TTL for items only\n cashier: { ttlMs: 10 * 60 * 1000, cacheList: false, cacheItem: true },\n supplier: { ttlMs: 10 * 60 * 1000, cacheList: false, cacheItem: true },\n\n // Data that can change - 5 min TTL for items only\n receipt: { ttlMs: 5 * 60 * 1000, cacheList: false, cacheItem: true },\n 'daily-report': { ttlMs: 5 * 60 * 1000, cacheList: false, cacheItem: true },\n journal: { ttlMs: 5 * 60 * 1000, cacheList: false, cacheItem: true },\n\n // Real-time data - 1 min TTL\n notification: { ttlMs: 1 * 60 * 1000, cacheList: false, cacheItem: false },\n telemetry: { ttlMs: 1 * 60 * 1000, cacheList: false, cacheItem: false },\n};\n\nconst DEFAULT_TTL = 5 * 60 * 1000; // 5 minutes\n\nexport class CacheKeyGenerator implements ICacheKeyGenerator {\n private config: Record<CacheResource, CacheResourceConfig>;\n\n constructor(customConfig?: Partial<Record<CacheResource, CacheResourceConfig>>) {\n this.config = { ...DEFAULT_TTL_CONFIG, ...customConfig };\n log.info('CacheKeyGenerator initialized with config:', {\n resources: Object.keys(this.config),\n });\n }\n\n generate(url: string, params?: Record<string, unknown>): string {\n const parsed = this.parseUrl(url);\n\n if (!parsed) {\n // Fallback: use URL as key\n const paramStr = params ? this.serializeParams(params) : '';\n const key = paramStr ? `${url}?${paramStr}` : url;\n log.debug('URL not matched, using fallback key:', { url, key });\n return key;\n }\n\n const { resource, ids, action, isList, parent } = parsed;\n\n if (isList) {\n const paramStr = params ? this.serializeParams(params) : '';\n const parentPart = parent && ids.length > 0 ? `${parent}=${ids[0]}&` : '';\n const key = `${resource}:list:${parentPart}${paramStr}`;\n log.debug('Generated list cache key:', { url, key, resource });\n return key;\n }\n\n // Single item\n if (ids.length === 0 && action) {\n // Special case for endpoints like /cashiers/me\n const key = `${resource}:${action}`;\n log.debug('Generated special action cache key:', { url, key, resource, action });\n return key;\n }\n\n let key = `${resource}:${ids.join(':')}`;\n if (action) {\n key += `:${action}`;\n }\n\n log.debug('Generated item cache key:', { url, key, resource, ids, action });\n return key;\n }\n\n parseResource(url: string): CacheResource | undefined {\n const parsed = this.parseUrl(url);\n return parsed?.resource;\n }\n\n getTTL(url: string): number {\n const resource = this.parseResource(url);\n if (!resource) {\n log.debug('No resource found for URL, using default TTL:', { url, ttl: DEFAULT_TTL });\n return DEFAULT_TTL;\n }\n const ttl = this.config[resource].ttlMs;\n log.debug('TTL for resource:', { url, resource, ttlMs: ttl, ttlMin: ttl / 60000 });\n return ttl;\n }\n\n shouldCache(url: string): boolean {\n const parsed = this.parseUrl(url);\n if (!parsed) {\n log.debug('URL not recognized, should not cache:', { url });\n return false;\n }\n\n const { resource, isList } = parsed;\n const config = this.config[resource];\n\n if (isList) {\n log.debug('List endpoint cache decision:', {\n url,\n resource,\n isList: true,\n shouldCache: config.cacheList,\n });\n return config.cacheList;\n }\n\n log.debug('Item endpoint cache decision:', {\n url,\n resource,\n isList: false,\n shouldCache: config.cacheItem,\n });\n return config.cacheItem;\n }\n\n getInvalidationPatterns(url: string, method: string): string[] {\n const parsed = this.parseUrl(url);\n if (!parsed) {\n log.debug('No patterns to invalidate for URL:', { url, method });\n return [];\n }\n\n const { resource, ids, parent } = parsed;\n const patterns: string[] = [];\n\n // Always invalidate list on mutations\n if (method === 'POST' || method === 'PUT' || method === 'PATCH' || method === 'DELETE') {\n if (parent && ids.length > 0) {\n patterns.push(`${resource}:list:${parent}=${ids[0]}*`);\n }\n patterns.push(`${resource}:list:*`);\n }\n\n // Invalidate specific item on PUT/PATCH/DELETE\n if (method === 'PUT' || method === 'PATCH' || method === 'DELETE') {\n if (ids.length > 0) {\n patterns.push(`${resource}:${ids.join(':')}*`);\n }\n }\n\n // Special cases\n if (resource === 'cashier' && (method === 'PUT' || method === 'DELETE')) {\n patterns.push('cashier:me');\n }\n\n log.debug('Invalidation patterns:', { url, method, patterns });\n return patterns;\n }\n\n private parseUrl(url: string): {\n resource: CacheResource;\n ids: string[];\n action?: string;\n isList?: boolean;\n parent?: string;\n } | null {\n // Remove query string for pattern matching\n const urlPath = url.split('?')[0];\n\n for (const pattern of URL_PATTERNS) {\n const match = urlPath?.match(pattern.pattern);\n if (match) {\n // Extract IDs from capture groups\n const ids = match.slice(1).filter(Boolean);\n\n return {\n resource: pattern.resource,\n ids,\n action: pattern.action,\n isList: pattern.isList,\n parent: pattern.parent,\n };\n }\n }\n\n return null;\n }\n\n private serializeParams(params: Record<string, unknown>): string {\n const sortedKeys = Object.keys(params).sort();\n const parts: string[] = [];\n\n for (const key of sortedKeys) {\n const value = params[key];\n if (value !== undefined && value !== null) {\n parts.push(`${key}=${String(value)}`);\n }\n }\n\n return parts.join('&');\n }\n}\n","import { Subscription } from 'rxjs';\n\nimport { ICachePort, INetworkPort } from '@/application/ports/driven';\nimport { ICacheKeyGenerator } from '@/application/ports/driven/cache-key.port';\nimport { HttpRequestConfig, HttpResponse, IHttpPort } from '@/application/ports/driven/http.port';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('CACHE');\n\nexport interface CachingHttpDecoratorConfig {\n enabled?: boolean;\n}\n\nexport class CachingHttpDecorator implements IHttpPort {\n private currentOnlineState = true;\n private networkSubscription?: Subscription;\n private authToken: string | null = null;\n\n constructor(\n private readonly http: IHttpPort,\n private readonly cache: ICachePort,\n private readonly keyGenerator: ICacheKeyGenerator,\n private readonly networkMonitor?: INetworkPort,\n private readonly config: CachingHttpDecoratorConfig = {}\n ) {\n log.info('CachingHttpDecorator initialized', {\n enabled: config.enabled !== false,\n hasNetworkMonitor: !!networkMonitor,\n });\n this.setupNetworkMonitoring();\n }\n\n private setupNetworkMonitoring(): void {\n if (this.networkMonitor) {\n this.networkSubscription = this.networkMonitor.online$.subscribe((online) => {\n if (this.currentOnlineState !== online) {\n log.info('Network state changed:', { online });\n }\n this.currentOnlineState = online;\n });\n }\n }\n\n private isOnline(): boolean {\n if (this.networkMonitor) {\n return this.currentOnlineState;\n }\n\n if (typeof navigator !== 'undefined' && 'onLine' in navigator) {\n return navigator.onLine;\n }\n\n return true;\n }\n\n async get<T>(url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>> {\n const startTime = Date.now();\n\n // Check if caching is disabled globally\n if (this.config.enabled === false) {\n log.debug('GET (cache disabled globally):', { url });\n return this.http.get<T>(url, config);\n }\n\n // Check if this URL should be cached\n const shouldCache = this.keyGenerator.shouldCache(url);\n if (!shouldCache) {\n log.debug('GET (not cacheable - likely a list endpoint):', { url });\n return this.http.get<T>(url, config);\n }\n\n const cacheKey = this.keyGenerator.generate(url, config?.params);\n const ttl = this.keyGenerator.getTTL(url);\n const resource = this.keyGenerator.parseResource(url);\n\n log.info('GET request starting:', {\n url,\n resource,\n cacheKey,\n ttlMs: ttl,\n ttlMin: Math.round(ttl / 60000),\n params: config?.params,\n });\n\n // Check cache\n let cached: { data: T; timestamp: number } | null = null;\n try {\n cached = await this.cache.get<T>(cacheKey);\n if (cached) {\n log.debug('Cache entry found:', {\n cacheKey,\n timestamp: new Date(cached.timestamp).toISOString(),\n ageMs: Date.now() - cached.timestamp,\n });\n } else {\n log.debug('Cache entry not found:', { cacheKey });\n }\n } catch (error) {\n log.warn('Cache lookup failed:', {\n cacheKey,\n error: error instanceof Error ? error.message : error,\n });\n }\n\n if (cached) {\n const age = Date.now() - cached.timestamp;\n const isExpired = age >= ttl;\n\n log.debug('Cache analysis:', {\n cacheKey,\n ageMs: age,\n ageSec: Math.round(age / 1000),\n ttlMs: ttl,\n isExpired,\n isOnline: this.isOnline(),\n });\n\n // If within TTL, return cached data\n if (!isExpired) {\n const duration = Date.now() - startTime;\n log.info('CACHE HIT:', {\n url,\n cacheKey,\n ageMs: age,\n durationMs: duration,\n });\n return {\n data: cached.data,\n status: 200,\n headers: { 'x-cache': 'HIT' },\n };\n }\n\n // If offline and cache is stale, return stale data\n if (!this.isOnline()) {\n const duration = Date.now() - startTime;\n log.info('CACHE STALE (offline):', {\n url,\n cacheKey,\n ageMs: age,\n durationMs: duration,\n });\n return {\n data: cached.data,\n status: 200,\n headers: { 'x-cache': 'STALE' },\n };\n }\n\n log.debug('Cache expired, fetching fresh data:', { cacheKey, ageMs: age, ttlMs: ttl });\n }\n\n // Fetch fresh data\n try {\n log.debug('Fetching from network:', { url });\n const response = await this.http.get<T>(url, config);\n\n // Cache the response\n try {\n await this.cache.set(cacheKey, response.data);\n log.debug('Response cached successfully:', { cacheKey });\n } catch (error) {\n log.error('Failed to cache response:', {\n cacheKey,\n error: error instanceof Error ? error.message : error,\n });\n }\n\n const duration = Date.now() - startTime;\n log.info('CACHE MISS (fetched fresh):', {\n url,\n cacheKey,\n status: response.status,\n durationMs: duration,\n });\n\n return {\n ...response,\n headers: { ...response.headers, 'x-cache': 'MISS' },\n };\n } catch (error) {\n // On error, return stale cache if available\n if (cached) {\n const duration = Date.now() - startTime;\n log.warn('CACHE STALE (network error):', {\n url,\n cacheKey,\n error: error instanceof Error ? error.message : 'Unknown error',\n durationMs: duration,\n });\n return {\n data: cached.data,\n status: 200,\n headers: { 'x-cache': 'STALE' },\n };\n }\n\n log.error('Network error with no cache fallback:', {\n url,\n error: error instanceof Error ? error.message : error,\n });\n throw error;\n }\n }\n\n async post<T>(url: string, data?: unknown, config?: HttpRequestConfig): Promise<HttpResponse<T>> {\n log.info('POST request:', { url });\n const response = await this.http.post<T>(url, data, config);\n await this.invalidateRelated(url, 'POST');\n return response;\n }\n\n async put<T>(url: string, data?: unknown, config?: HttpRequestConfig): Promise<HttpResponse<T>> {\n log.info('PUT request:', { url });\n const response = await this.http.put<T>(url, data, config);\n await this.invalidateRelated(url, 'PUT');\n return response;\n }\n\n async patch<T>(\n url: string,\n data?: unknown,\n config?: HttpRequestConfig\n ): Promise<HttpResponse<T>> {\n log.info('PATCH request:', { url });\n const response = await this.http.patch<T>(url, data, config);\n await this.invalidateRelated(url, 'PATCH');\n return response;\n }\n\n async delete<T>(url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>> {\n log.info('DELETE request:', { url });\n const response = await this.http.delete<T>(url, config);\n await this.invalidateRelated(url, 'DELETE');\n return response;\n }\n\n setAuthToken(token: string | null): void {\n log.debug('CachingHttpDecorator.setAuthToken called:', {\n hasToken: !!token,\n tokenPrefix: token?.substring(0, 20),\n underlyingHttpType: this.http.constructor.name,\n });\n this.authToken = token;\n this.http.setAuthToken(token);\n }\n\n getAuthToken(): string | null {\n return this.authToken;\n }\n\n private async invalidateRelated(url: string, method: string): Promise<void> {\n const patterns = this.keyGenerator.getInvalidationPatterns(url, method);\n\n if (patterns.length === 0) {\n log.debug('No cache patterns to invalidate:', { url, method });\n return;\n }\n\n log.info('Invalidating cache patterns:', { url, method, patterns });\n\n for (const pattern of patterns) {\n try {\n await this.cache.invalidate(pattern);\n log.debug('Cache pattern invalidated:', { pattern });\n } catch (error) {\n log.error('Failed to invalidate pattern:', {\n pattern,\n error: error instanceof Error ? error.message : error,\n });\n }\n }\n }\n\n destroy(): void {\n log.debug('CachingHttpDecorator destroyed');\n this.networkSubscription?.unsubscribe();\n }\n}\n","import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\n\nimport { HttpRequestConfig, HttpResponse, IHttpPort } from '@/application/ports/driven/http.port';\nimport { IMTLSPort, MTLSRequestConfig, MTLSResponse } from '@/application/ports/driven/mtls.port';\nimport { clearObject, createPrefixedLogger } from '@/shared/utils';\n\nimport { AuthStrategy } from './auth-strategy';\n\nconst logJwt = createPrefixedLogger('HTTP-JWT');\nconst logMtls = createPrefixedLogger('HTTP-MTLS');\n\nexport interface AxiosHttpAdapterConfig {\n baseUrl: string;\n timeout?: number;\n}\n\nexport class AxiosHttpAdapter implements IHttpPort {\n private client: AxiosInstance;\n private authToken: string | null = null;\n private mtlsAdapter: IMTLSPort | null = null;\n private authStrategy: AuthStrategy | null = null;\n private baseUrl: string;\n\n constructor(config: AxiosHttpAdapterConfig) {\n this.baseUrl = config.baseUrl;\n this.client = axios.create({\n baseURL: config.baseUrl,\n timeout: config.timeout ?? 30000,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n this.setupInterceptors();\n }\n\n setMTLSAdapter(adapter: IMTLSPort | null): void {\n this.mtlsAdapter = adapter;\n logMtls.debug('mTLS adapter configured:', !!adapter);\n }\n\n setAuthStrategy(strategy: AuthStrategy | null): void {\n this.authStrategy = strategy;\n logJwt.debug('Auth strategy configured:', !!strategy);\n }\n\n private async shouldUseMTLS(url: string, method: string): Promise<boolean> {\n if (!this.mtlsAdapter) {\n logJwt.debug(`No mTLS adapter, using JWT for ${method} ${url}`);\n return false;\n }\n\n if (this.authStrategy) {\n const config = await this.authStrategy.determineAuthConfig(url, method);\n const logger = config.mode === 'mtls' ? logMtls : logJwt;\n logger.debug(`Auth config for ${method} ${url}:`, config);\n return config.mode === 'mtls';\n }\n\n // Fallback: use mTLS for mf1/mf2 endpoints if no strategy\n // This should rarely happen - only before SDK is fully initialized\n const useMtls = url.startsWith('/mf1') || url.startsWith('/mf2');\n if (useMtls) {\n logMtls.warn(`No auth strategy set, falling back to mTLS for ${method} ${url}`);\n }\n return useMtls;\n }\n\n private async makeMTLSRequest<T>(\n url: string,\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH',\n data?: unknown,\n config?: HttpRequestConfig\n ): Promise<HttpResponse<T>> {\n if (!this.mtlsAdapter) {\n throw new Error('mTLS adapter not available');\n }\n\n const fullUrl = this.constructMtlsUrl(url);\n\n const headers: Record<string, string> = {\n ...(method !== 'GET' && data ? { 'Content-Type': 'application/json' } : {}),\n ...(config?.headers || {}),\n };\n\n if (this.authToken) {\n headers['Authorization'] = `Bearer ${this.authToken}`;\n logMtls.debug('JWT token present for mTLS request');\n } else {\n logMtls.warn('No JWT token for mTLS request');\n }\n\n const mtlsConfig: MTLSRequestConfig = {\n url: fullUrl,\n method,\n headers,\n data,\n timeout: config?.timeout,\n };\n\n logMtls.debug(`mTLS ${method} ${fullUrl}`);\n if (data) {\n logMtls.debug('Request body:', data);\n }\n\n try {\n const response: MTLSResponse<T> = await this.mtlsAdapter.request<T>(mtlsConfig);\n logMtls.debug(`mTLS Response ${response.status} from ${fullUrl}`);\n if (response.data) {\n logMtls.debug('Response body:', response.data);\n }\n return {\n data: response.data,\n status: response.status,\n headers: response.headers,\n };\n } catch (error) {\n logMtls.error(`mTLS Response error from ${fullUrl}:`, error);\n if (error && typeof error === 'object' && 'response' in error) {\n const axiosError = error as { response?: { data?: unknown; status?: number } };\n if (axiosError.response?.data) {\n logMtls.error('Response body:', axiosError.response.data);\n }\n }\n throw error;\n }\n }\n\n private constructMtlsUrl(relativePath: string): string {\n const mtlsBaseUrl = this.mtlsAdapter?.getBaseUrl() || this.baseUrl;\n const cleanPath = relativePath.startsWith('/') ? relativePath.substring(1) : relativePath;\n return mtlsBaseUrl.endsWith('/') ? `${mtlsBaseUrl}${cleanPath}` : `${mtlsBaseUrl}/${cleanPath}`;\n }\n\n private setupInterceptors(): void {\n this.client.interceptors.request.use(\n (config) => {\n if (this.authToken) {\n config.headers.Authorization = `Bearer ${this.authToken}`;\n logJwt.debug('Adding JWT token to request', {\n tokenPrefix: this.authToken.substring(0, 30) + '...',\n tokenLength: this.authToken.length,\n });\n } else {\n logJwt.warn('No JWT token available for request:', { url: config.url });\n }\n\n const method = config.method?.toUpperCase() ?? 'UNKNOWN';\n const authHeader = config.headers.Authorization;\n\n // Log full request details for debugging\n logJwt.info(`→ ${method} ${config.url}`, {\n baseURL: config.baseURL,\n fullURL: `${config.baseURL}${config.url}`,\n hasAuthHeader: !!authHeader,\n authHeaderValue: authHeader ? `${String(authHeader).substring(0, 50)}...` : 'MISSING',\n });\n\n if (config.params && Object.keys(config.params as object).length > 0) {\n logJwt.debug('Request params:', config.params);\n }\n\n if (config.data) {\n logJwt.debug('Request body:', config.data);\n }\n\n return config;\n },\n (error) => {\n logJwt.error('Request error:', error);\n return Promise.reject(error);\n }\n );\n\n this.client.interceptors.response.use(\n (response) => {\n const method = response.config.method?.toUpperCase() ?? 'UNKNOWN';\n logJwt.debug(`← ${method} ${response.status} ${response.config.url}`);\n\n if (response.data) {\n logJwt.debug('Response body:', response.data);\n }\n\n return response;\n },\n (error) => {\n const method = error.config?.method?.toUpperCase() ?? 'UNKNOWN';\n logJwt.error(\n `← ${method} ${error.response?.status ?? 'ERR'} ${error.config?.url ?? 'unknown'}`\n );\n\n if (error.response?.data) {\n logJwt.error('Response body:', error.response.data);\n }\n\n return Promise.reject(error);\n }\n );\n }\n\n private mapConfig(config?: HttpRequestConfig): AxiosRequestConfig {\n if (!config) return {};\n\n return {\n headers: config.headers,\n params: config.params,\n timeout: config.timeout,\n responseType: config.responseType,\n data: config.data,\n };\n }\n\n private mapResponse<T>(response: AxiosResponse<T>): HttpResponse<T> {\n const headers: Record<string, string> = {};\n Object.entries(response.headers).forEach(([key, value]) => {\n if (typeof value === 'string') {\n headers[key] = value;\n }\n });\n\n return {\n data: response.data,\n status: response.status,\n headers,\n };\n }\n\n async get<T>(url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>> {\n if (await this.shouldUseMTLS(url, 'GET')) {\n return this.makeMTLSRequest<T>(url, 'GET', undefined, config);\n }\n const response = await this.client.get<T>(url, this.mapConfig(config));\n return this.mapResponse(response);\n }\n\n async post<T>(url: string, data?: unknown, config?: HttpRequestConfig): Promise<HttpResponse<T>> {\n const cleanedData = data ? clearObject(data) : data;\n if (await this.shouldUseMTLS(url, 'POST')) {\n return this.makeMTLSRequest<T>(url, 'POST', cleanedData, config);\n }\n const response = await this.client.post<T>(url, cleanedData, this.mapConfig(config));\n return this.mapResponse(response);\n }\n\n async put<T>(url: string, data?: unknown, config?: HttpRequestConfig): Promise<HttpResponse<T>> {\n const cleanedData = data && typeof data === 'object' ? clearObject(data) : data;\n if (await this.shouldUseMTLS(url, 'PUT')) {\n return this.makeMTLSRequest<T>(url, 'PUT', cleanedData, config);\n }\n const response = await this.client.put<T>(url, cleanedData, this.mapConfig(config));\n return this.mapResponse(response);\n }\n\n async patch<T>(\n url: string,\n data?: unknown,\n config?: HttpRequestConfig\n ): Promise<HttpResponse<T>> {\n const cleanedData = data && typeof data === 'object' ? clearObject(data) : data;\n if (await this.shouldUseMTLS(url, 'PATCH')) {\n return this.makeMTLSRequest<T>(url, 'PATCH', cleanedData, config);\n }\n const response = await this.client.patch<T>(url, cleanedData, this.mapConfig(config));\n return this.mapResponse(response);\n }\n\n async delete<T>(url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>> {\n const data = config?.data;\n const cleanedData = data && typeof data === 'object' ? clearObject(data) : data;\n if (await this.shouldUseMTLS(url, 'DELETE')) {\n return this.makeMTLSRequest<T>(url, 'DELETE', cleanedData, config);\n }\n const response = await this.client.delete<T>(url, this.mapConfig(config));\n return this.mapResponse(response);\n }\n\n setAuthToken(token: string | null): void {\n logJwt.info('setAuthToken called:', {\n hasToken: !!token,\n tokenPrefix: token?.substring(0, 20),\n });\n this.authToken = token;\n }\n\n getAuthToken(): string | null {\n return this.authToken;\n }\n\n getAxiosInstance(): AxiosInstance {\n return this.client;\n }\n}\n","import { ISecureStoragePort } from '@/application/ports/driven/storage.port';\nimport { ITokenStoragePort } from '@/application/ports/driven/token-storage.port';\n\nconst TOKEN_KEY = 'acube_tokens';\nconst USER_KEY = 'acube_user';\n\ninterface StoredTokenData {\n accessToken: string;\n expiresAt: number;\n}\n\nexport class TokenStorageAdapter implements ITokenStoragePort {\n constructor(private readonly secureStorage: ISecureStoragePort) {}\n\n async getAccessToken(): Promise<string | null> {\n const tokenJson = await this.secureStorage.get(TOKEN_KEY);\n if (!tokenJson) {\n return null;\n }\n const tokenData: StoredTokenData = JSON.parse(tokenJson);\n return tokenData.accessToken;\n }\n\n async saveAccessToken(token: string, expiresAt: number): Promise<void> {\n const tokenData: StoredTokenData = {\n accessToken: token,\n expiresAt,\n };\n await this.secureStorage.set(TOKEN_KEY, JSON.stringify(tokenData));\n }\n\n async clearTokens(): Promise<void> {\n await Promise.all([this.secureStorage.remove(TOKEN_KEY), this.secureStorage.remove(USER_KEY)]);\n }\n\n async getUser<T>(): Promise<T | null> {\n const userJson = await this.secureStorage.get(USER_KEY);\n if (!userJson) {\n return null;\n }\n return JSON.parse(userJson) as T;\n }\n\n async saveUser<T>(user: T): Promise<void> {\n await this.secureStorage.set(USER_KEY, JSON.stringify(user));\n }\n}\n","import { ICachePort, INetworkPort } from '@/application/ports/driven';\nimport { ICacheKeyGenerator } from '@/application/ports/driven/cache-key.port';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { ISecureStoragePort } from '@/application/ports/driven/storage.port';\nimport { ITokenStoragePort } from '@/application/ports/driven/token-storage.port';\nimport { AuthenticationService } from '@/application/services/authentication.service';\nimport { ICashRegisterRepository } from '@/domain/repositories/cash-register.repository';\nimport { ICashierRepository } from '@/domain/repositories/cashier.repository';\nimport { IDailyReportRepository } from '@/domain/repositories/daily-report.repository';\nimport { IJournalRepository } from '@/domain/repositories/journal.repository';\nimport { IMerchantRepository } from '@/domain/repositories/merchant.repository';\nimport { INotificationRepository } from '@/domain/repositories/notification.repository';\nimport { IPemRepository } from '@/domain/repositories/pem.repository';\nimport { IPointOfSaleRepository } from '@/domain/repositories/point-of-sale.repository';\nimport { IReceiptRepository } from '@/domain/repositories/receipt.repository';\nimport { ISupplierRepository } from '@/domain/repositories/supplier.repository';\nimport { ITelemetryRepository } from '@/domain/repositories/telemetry.repository';\nimport {\n CashRegisterRepositoryImpl,\n CashierRepositoryImpl,\n DailyReportRepositoryImpl,\n JournalRepositoryImpl,\n MerchantRepositoryImpl,\n NotificationRepositoryImpl,\n PemRepositoryImpl,\n PointOfSaleRepositoryImpl,\n ReceiptRepositoryImpl,\n SupplierRepositoryImpl,\n TelemetryRepositoryImpl,\n} from '@/infrastructure/driven/api';\nimport { CacheKeyGenerator } from '@/infrastructure/driven/cache/cache-key-generator';\nimport { CachingHttpDecorator } from '@/infrastructure/driven/cache/caching-http-decorator';\nimport { AxiosHttpAdapter } from '@/infrastructure/driven/http/axios-http.adapter';\nimport { TokenStorageAdapter } from '@/infrastructure/driven/storage/token-storage.adapter';\n\nimport { DIContainer, DI_TOKENS } from './di-container';\n\nexport interface SDKFactoryConfig {\n baseUrl: string;\n authUrl?: string;\n timeout?: number;\n debugEnabled?: boolean;\n}\n\nexport interface SDKServices {\n http: IHttpPort;\n tokenStorage?: ITokenStoragePort;\n authService?: AuthenticationService;\n receipts: IReceiptRepository;\n merchants: IMerchantRepository;\n cashiers: ICashierRepository;\n cashRegisters: ICashRegisterRepository;\n pointOfSales: IPointOfSaleRepository;\n suppliers: ISupplierRepository;\n pems: IPemRepository;\n dailyReports: IDailyReportRepository;\n journals: IJournalRepository;\n notifications: INotificationRepository;\n telemetry: ITelemetryRepository;\n}\n\nexport class SDKFactory {\n static createContainer(config: SDKFactoryConfig): DIContainer {\n const container = new DIContainer();\n\n const httpAdapter = new AxiosHttpAdapter({\n baseUrl: config.baseUrl,\n timeout: config.timeout,\n });\n\n container.register(DI_TOKENS.BASE_HTTP_PORT, httpAdapter);\n container.register(DI_TOKENS.HTTP_PORT, httpAdapter);\n\n container.registerFactory(DI_TOKENS.RECEIPT_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new ReceiptRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.MERCHANT_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new MerchantRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.CASHIER_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new CashierRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.CASH_REGISTER_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new CashRegisterRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.POINT_OF_SALE_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new PointOfSaleRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.SUPPLIER_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new SupplierRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.PEM_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new PemRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.DAILY_REPORT_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new DailyReportRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.JOURNAL_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new JournalRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.NOTIFICATION_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new NotificationRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.TELEMETRY_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new TelemetryRepositoryImpl(http);\n });\n\n return container;\n }\n\n static registerCacheServices(\n container: DIContainer,\n cache: ICachePort,\n network?: INetworkPort\n ): void {\n container.register(DI_TOKENS.CACHE_PORT, cache);\n\n if (network) {\n container.register(DI_TOKENS.NETWORK_PORT, network);\n }\n\n const keyGenerator = new CacheKeyGenerator();\n container.register(DI_TOKENS.CACHE_KEY_GENERATOR, keyGenerator);\n\n const baseHttp = container.get<IHttpPort>(DI_TOKENS.BASE_HTTP_PORT);\n const cachingHttp = new CachingHttpDecorator(baseHttp, cache, keyGenerator, network);\n\n container.register(DI_TOKENS.HTTP_PORT, cachingHttp);\n }\n\n static getCacheKeyGenerator(container: DIContainer): ICacheKeyGenerator | undefined {\n if (container.has(DI_TOKENS.CACHE_KEY_GENERATOR)) {\n return container.get<ICacheKeyGenerator>(DI_TOKENS.CACHE_KEY_GENERATOR);\n }\n return undefined;\n }\n\n static registerAuthServices(\n container: DIContainer,\n secureStorage: ISecureStoragePort,\n config: SDKFactoryConfig\n ): void {\n const tokenStorage = new TokenStorageAdapter(secureStorage);\n container.register(DI_TOKENS.TOKEN_STORAGE_PORT, tokenStorage);\n\n container.registerFactory(DI_TOKENS.AUTHENTICATION_SERVICE, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n const storage = container.get<ITokenStoragePort>(DI_TOKENS.TOKEN_STORAGE_PORT);\n return new AuthenticationService(http, storage, {\n authUrl: config.authUrl || config.baseUrl,\n timeout: config.timeout,\n });\n });\n }\n\n static getServices(container: DIContainer): SDKServices {\n const services: SDKServices = {\n http: container.get<IHttpPort>(DI_TOKENS.HTTP_PORT),\n receipts: container.get<IReceiptRepository>(DI_TOKENS.RECEIPT_REPOSITORY),\n merchants: container.get<IMerchantRepository>(DI_TOKENS.MERCHANT_REPOSITORY),\n cashiers: container.get<ICashierRepository>(DI_TOKENS.CASHIER_REPOSITORY),\n cashRegisters: container.get<ICashRegisterRepository>(DI_TOKENS.CASH_REGISTER_REPOSITORY),\n pointOfSales: container.get<IPointOfSaleRepository>(DI_TOKENS.POINT_OF_SALE_REPOSITORY),\n suppliers: container.get<ISupplierRepository>(DI_TOKENS.SUPPLIER_REPOSITORY),\n pems: container.get<IPemRepository>(DI_TOKENS.PEM_REPOSITORY),\n dailyReports: container.get<IDailyReportRepository>(DI_TOKENS.DAILY_REPORT_REPOSITORY),\n journals: container.get<IJournalRepository>(DI_TOKENS.JOURNAL_REPOSITORY),\n notifications: container.get<INotificationRepository>(DI_TOKENS.NOTIFICATION_REPOSITORY),\n telemetry: container.get<ITelemetryRepository>(DI_TOKENS.TELEMETRY_REPOSITORY),\n };\n\n if (container.has(DI_TOKENS.TOKEN_STORAGE_PORT)) {\n services.tokenStorage = container.get<ITokenStoragePort>(DI_TOKENS.TOKEN_STORAGE_PORT);\n }\n\n if (container.has(DI_TOKENS.AUTHENTICATION_SERVICE)) {\n services.authService = container.get<AuthenticationService>(DI_TOKENS.AUTHENTICATION_SERVICE);\n }\n\n return services;\n }\n}\n","import {\n CertificateInfo,\n ICertificatePort,\n IMTLSPort,\n PlatformAdapters,\n} from '@/application/ports/driven';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { ITokenStoragePort } from '@/application/ports/driven/token-storage.port';\nimport { AuthenticationService } from '@/application/services/authentication.service';\nimport { CertificateService } from '@/application/services/certificate.service';\nimport { ICashRegisterRepository } from '@/domain/repositories/cash-register.repository';\nimport { ICashierRepository } from '@/domain/repositories/cashier.repository';\nimport { IDailyReportRepository } from '@/domain/repositories/daily-report.repository';\nimport { IJournalRepository } from '@/domain/repositories/journal.repository';\nimport { IMerchantRepository } from '@/domain/repositories/merchant.repository';\nimport { INotificationRepository } from '@/domain/repositories/notification.repository';\nimport { IPemRepository } from '@/domain/repositories/pem.repository';\nimport { IPointOfSaleRepository } from '@/domain/repositories/point-of-sale.repository';\nimport { IReceiptRepository } from '@/domain/repositories/receipt.repository';\nimport { ISupplierRepository } from '@/domain/repositories/supplier.repository';\nimport { ITelemetryRepository } from '@/domain/repositories/telemetry.repository';\nimport { AuthStrategy, IUserProvider } from '@/infrastructure/driven/http/auth-strategy';\nimport { JwtAuthHandler } from '@/infrastructure/driven/http/jwt-auth.handler';\nimport { MtlsAuthHandler } from '@/infrastructure/driven/http/mtls-auth.handler';\nimport { OfflineManager, QueueEvents } from '@/infrastructure/driven/offline';\nimport { createACubeMTLSConfig, loadPlatformAdapters } from '@/infrastructure/loaders';\nimport { ConfigManager } from '@/shared/config';\nimport { ACubeSDKError, AuthCredentials, SDKConfig, User } from '@/shared/types';\nimport { createPrefixedLogger, logger } from '@/shared/utils';\n\nimport { DIContainer, DI_TOKENS } from './di-container';\nimport { SDKFactory, SDKFactoryConfig } from './sdk-factory';\n\nconst log = createPrefixedLogger('SDK');\n\nexport interface SDKEvents {\n onUserChanged?: (user: User | null) => void;\n onAuthError?: (error: ACubeSDKError) => void;\n onNetworkStatusChanged?: (online: boolean) => void;\n onOfflineOperationAdded?: (operationId: string) => void;\n onOfflineOperationCompleted?: (operationId: string, success: boolean) => void;\n}\n\nexport class ACubeSDK {\n private config: ConfigManager;\n private adapters?: PlatformAdapters;\n private authService?: AuthenticationService;\n private offlineManager?: OfflineManager;\n private certificateService?: CertificateService;\n private container?: DIContainer;\n private isInitialized = false;\n private currentOnlineState = true;\n private networkSubscription?: { unsubscribe: () => void };\n\n constructor(\n config: SDKConfig,\n customAdapters?: PlatformAdapters,\n private events: SDKEvents = {}\n ) {\n this.config = new ConfigManager(config);\n logger.setEnabled(this.config.isDebugEnabled());\n\n if (customAdapters) {\n this.adapters = customAdapters;\n }\n }\n\n async initialize(): Promise<void> {\n if (this.isInitialized) {\n log.debug('SDK already initialized, skipping');\n return;\n }\n\n log.info('Initializing SDK', {\n apiUrl: this.config.getApiUrl(),\n authUrl: this.config.getAuthUrl(),\n debugEnabled: this.config.isDebugEnabled(),\n });\n\n try {\n if (!this.adapters) {\n log.debug('Loading platform adapters');\n const mtlsConfig = createACubeMTLSConfig(\n this.config.getApiUrl(),\n this.config.getTimeout(),\n true\n );\n\n this.adapters = loadPlatformAdapters({\n mtlsConfig,\n });\n log.info('Platform adapters loaded', {\n hasCache: !!this.adapters.cache,\n hasNetworkMonitor: !!this.adapters.networkMonitor,\n hasMtls: !!this.adapters.mtls,\n hasSecureStorage: !!this.adapters.secureStorage,\n });\n }\n\n const factoryConfig: SDKFactoryConfig = {\n baseUrl: this.config.getApiUrl(),\n authUrl: this.config.getAuthUrl(),\n timeout: this.config.getTimeout(),\n debugEnabled: this.config.isDebugEnabled(),\n };\n\n log.debug('Creating DI container');\n this.container = SDKFactory.createContainer(factoryConfig);\n\n log.debug('Registering auth services');\n SDKFactory.registerAuthServices(this.container, this.adapters.secureStorage, factoryConfig);\n\n if (this.adapters.cache) {\n log.info('Registering cache services', {\n hasNetworkMonitor: !!this.adapters.networkMonitor,\n });\n SDKFactory.registerCacheServices(\n this.container,\n this.adapters.cache,\n this.adapters.networkMonitor\n );\n } else {\n log.debug('No cache adapter available, caching disabled');\n }\n\n log.debug('Initializing certificate service');\n this.certificateService = new CertificateService(this.adapters.secureStorage);\n\n const tokenStorage = this.container.get<ITokenStoragePort>(DI_TOKENS.TOKEN_STORAGE_PORT);\n const httpPort = this.container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n const baseHttpPort = this.container.get<IHttpPort>(DI_TOKENS.BASE_HTTP_PORT);\n\n log.debug('HTTP ports initialized', {\n httpPortType: httpPort.constructor.name,\n baseHttpPortType: baseHttpPort.constructor.name,\n areSameInstance: httpPort === baseHttpPort,\n });\n\n log.debug('Initializing authentication service');\n this.authService = new AuthenticationService(\n httpPort,\n tokenStorage,\n {\n authUrl: this.config.getAuthUrl(),\n timeout: this.config.getTimeout(),\n },\n {\n onUserChanged: this.events.onUserChanged,\n onAuthError: (error) => {\n this.events.onAuthError?.(new ACubeSDKError('AUTH_ERROR', error.message, error));\n },\n }\n );\n\n log.debug('Initializing offline manager');\n const queueEvents: QueueEvents = {\n onOperationAdded: (operation) => {\n this.events.onOfflineOperationAdded?.(operation.id);\n },\n onOperationCompleted: (result) => {\n this.events.onOfflineOperationCompleted?.(result.operation.id, result.success);\n },\n onOperationFailed: (result) => {\n this.events.onOfflineOperationCompleted?.(result.operation.id, false);\n },\n };\n\n this.offlineManager = new OfflineManager(\n this.adapters.storage,\n httpPort,\n this.adapters.networkMonitor,\n {\n syncInterval: 30000,\n },\n queueEvents\n );\n\n this.networkSubscription = this.adapters.networkMonitor.online$.subscribe((online) => {\n this.currentOnlineState = online;\n this.events.onNetworkStatusChanged?.(online);\n\n if (online && this.offlineManager) {\n this.offlineManager.sync().catch(() => {});\n }\n });\n\n const isAuth = await this.authService.isAuthenticated();\n log.debug('Checking authentication status during init', { isAuthenticated: isAuth });\n\n if (isAuth) {\n const token = await this.authService.getAccessToken();\n log.debug('Token retrieved during init', {\n hasToken: !!token,\n tokenPrefix: token?.substring(0, 20),\n });\n if (token) {\n httpPort.setAuthToken(token);\n log.info('Auth token set on HTTP port during initialization');\n }\n } else {\n log.warn('User not authenticated during SDK init - token will be set after login');\n }\n\n if (this.adapters?.mtls && 'setMTLSAdapter' in baseHttpPort) {\n log.debug('Connecting mTLS adapter to HTTP port');\n const httpWithMtls = baseHttpPort as { setMTLSAdapter: (adapter: IMTLSPort) => void };\n httpWithMtls.setMTLSAdapter(this.adapters.mtls);\n }\n\n if ('setAuthStrategy' in baseHttpPort) {\n log.debug('Configuring auth strategy');\n const jwtHandler = new JwtAuthHandler(tokenStorage);\n const certificatePort: ICertificatePort | null = this.certificateService\n ? {\n storeCertificate: this.certificateService.storeCertificate.bind(\n this.certificateService\n ),\n getCertificate: this.certificateService.getCertificate.bind(this.certificateService),\n getCertificateInfo: this.certificateService.getCertificateInfo.bind(\n this.certificateService\n ),\n hasCertificate: this.certificateService.hasCertificate.bind(this.certificateService),\n clearCertificate: this.certificateService.clearCertificate.bind(\n this.certificateService\n ),\n }\n : null;\n const mtlsHandler = new MtlsAuthHandler(this.adapters?.mtls || null, certificatePort);\n\n const userProvider: IUserProvider = {\n getCurrentUser: async () => {\n try {\n return await this.authService!.getCurrentUser();\n } catch {\n return null;\n }\n },\n getAccessToken: async () => {\n try {\n return await this.authService!.getAccessToken();\n } catch {\n return null;\n }\n },\n };\n\n const authStrategy = new AuthStrategy(\n jwtHandler,\n mtlsHandler,\n userProvider,\n this.adapters?.mtls || null\n );\n\n const httpWithStrategy = baseHttpPort as {\n setAuthStrategy: (strategy: AuthStrategy) => void;\n };\n httpWithStrategy.setAuthStrategy(authStrategy);\n }\n\n if (this.adapters?.mtls && this.certificateService) {\n try {\n const hasCert = await this.certificateService.hasCertificate();\n\n if (hasCert) {\n const storedCert = await this.certificateService.getCertificate();\n\n if (storedCert) {\n await this.adapters.mtls.configureCertificate({\n certificate: storedCert.certificate,\n privateKey: storedCert.privateKey,\n format: storedCert.format.toUpperCase() as 'PEM' | 'P12',\n });\n }\n }\n } catch (certError) {\n log.warn('Certificate auto-configuration failed, will retry on demand', {\n error: certError instanceof Error ? certError.message : certError,\n });\n }\n }\n\n this.isInitialized = true;\n log.info('SDK initialized successfully', {\n hasCache: !!this.adapters.cache,\n hasMtls: !!this.adapters.mtls,\n });\n } catch (error) {\n log.error('SDK initialization failed', {\n error: error instanceof Error ? error.message : error,\n });\n throw new ACubeSDKError(\n 'SDK_INITIALIZATION_ERROR',\n `Failed to initialize SDK: ${error instanceof Error ? error.message : 'Unknown error'}`,\n error\n );\n }\n }\n\n get httpPort(): IHttpPort {\n this.ensureInitialized();\n return this.container!.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n }\n\n get receipts(): IReceiptRepository {\n this.ensureInitialized();\n return this.container!.get<IReceiptRepository>(DI_TOKENS.RECEIPT_REPOSITORY);\n }\n\n get merchants(): IMerchantRepository {\n this.ensureInitialized();\n return this.container!.get<IMerchantRepository>(DI_TOKENS.MERCHANT_REPOSITORY);\n }\n\n get cashiers(): ICashierRepository {\n this.ensureInitialized();\n return this.container!.get<ICashierRepository>(DI_TOKENS.CASHIER_REPOSITORY);\n }\n\n get cashRegisters(): ICashRegisterRepository {\n this.ensureInitialized();\n return this.container!.get<ICashRegisterRepository>(DI_TOKENS.CASH_REGISTER_REPOSITORY);\n }\n\n get pointOfSales(): IPointOfSaleRepository {\n this.ensureInitialized();\n return this.container!.get<IPointOfSaleRepository>(DI_TOKENS.POINT_OF_SALE_REPOSITORY);\n }\n\n get suppliers(): ISupplierRepository {\n this.ensureInitialized();\n return this.container!.get<ISupplierRepository>(DI_TOKENS.SUPPLIER_REPOSITORY);\n }\n\n get pems(): IPemRepository {\n this.ensureInitialized();\n return this.container!.get<IPemRepository>(DI_TOKENS.PEM_REPOSITORY);\n }\n\n get dailyReports(): IDailyReportRepository {\n this.ensureInitialized();\n return this.container!.get<IDailyReportRepository>(DI_TOKENS.DAILY_REPORT_REPOSITORY);\n }\n\n get journals(): IJournalRepository {\n this.ensureInitialized();\n return this.container!.get<IJournalRepository>(DI_TOKENS.JOURNAL_REPOSITORY);\n }\n\n get notifications(): INotificationRepository {\n this.ensureInitialized();\n return this.container!.get<INotificationRepository>(DI_TOKENS.NOTIFICATION_REPOSITORY);\n }\n\n get telemetry(): ITelemetryRepository {\n this.ensureInitialized();\n return this.container!.get<ITelemetryRepository>(DI_TOKENS.TELEMETRY_REPOSITORY);\n }\n\n async login(credentials: AuthCredentials): Promise<User> {\n this.ensureInitialized();\n log.info('Login attempt', { email: credentials.email });\n\n const user = await this.authService!.login(credentials);\n log.info('Login successful', { roles: user.roles });\n\n const token = await this.authService!.getAccessToken();\n if (token) {\n this.httpPort.setAuthToken(token);\n log.debug('Auth token set on HTTP port');\n }\n\n return user as User;\n }\n\n async logout(): Promise<void> {\n this.ensureInitialized();\n log.info('Logout');\n\n await this.authService!.logout();\n this.httpPort.setAuthToken(null);\n }\n\n async getCurrentUser(): Promise<User | null> {\n this.ensureInitialized();\n\n try {\n const user = await this.authService!.getCurrentUser();\n return user as User | null;\n } catch {\n return null;\n }\n }\n\n async isAuthenticated(): Promise<boolean> {\n this.ensureInitialized();\n return await this.authService!.isAuthenticated();\n }\n\n getOfflineManager(): OfflineManager {\n this.ensureInitialized();\n return this.offlineManager!;\n }\n\n isOnline(): boolean {\n this.ensureInitialized();\n return this.currentOnlineState;\n }\n\n getConfig(): SDKConfig {\n return this.config.getConfig();\n }\n\n updateConfig(updates: Partial<SDKConfig>): void {\n this.config.updateConfig(updates);\n }\n\n getAdapters(): PlatformAdapters | undefined {\n return this.adapters;\n }\n\n async storeCertificate(\n certificate: string,\n privateKey: string,\n options: {\n name?: string;\n format?: 'pem' | 'p12' | 'pkcs12';\n password?: string;\n } = {}\n ): Promise<void> {\n this.ensureInitialized();\n\n if (!this.certificateService) {\n throw new ACubeSDKError(\n 'CERTIFICATE_MANAGER_NOT_INITIALIZED',\n 'Certificate service not initialized'\n );\n }\n\n const format = (options.format || 'pem') as 'pem' | 'p12';\n await this.certificateService.storeCertificate(certificate, privateKey, format);\n\n if (this.adapters?.mtls) {\n await this.adapters.mtls.configureCertificate({\n certificate,\n privateKey,\n format: format.toUpperCase() as 'PEM' | 'P12',\n });\n }\n }\n\n async getMTLSStatus() {\n this.ensureInitialized();\n\n if (!this.adapters?.mtls) {\n return {\n adapterAvailable: false,\n isReady: false,\n hasCertificate: false,\n certificateInfo: null,\n platformInfo: null,\n };\n }\n\n const hasCertificate = (await this.certificateService?.hasCertificate()) || false;\n const certificateInfo = (await this.certificateService?.getCertificateInfo()) || null;\n\n return {\n adapterAvailable: true,\n isReady: hasCertificate,\n hasCertificate,\n certificateInfo,\n platformInfo: this.adapters.mtls.getPlatformInfo(),\n };\n }\n\n async testMTLSConnection(): Promise<boolean> {\n this.ensureInitialized();\n\n if (!this.adapters?.mtls) {\n return false;\n }\n\n return this.adapters.mtls.testConnection();\n }\n\n async clearCertificate(): Promise<void> {\n this.ensureInitialized();\n\n if (this.adapters?.mtls) {\n await this.adapters.mtls.removeCertificate().catch(() => {});\n }\n\n if (this.certificateService) {\n await this.certificateService.clearCertificate();\n }\n }\n\n getCertificateManager() {\n this.ensureInitialized();\n return this.certificateService;\n }\n\n async getCertificate() {\n this.ensureInitialized();\n\n if (!this.certificateService) {\n throw new ACubeSDKError(\n 'CERTIFICATE_MANAGER_NOT_INITIALIZED',\n 'Certificate service not initialized'\n );\n }\n\n return await this.certificateService.getCertificate();\n }\n\n async getCertificateInfo() {\n this.ensureInitialized();\n\n if (!this.certificateService) {\n throw new ACubeSDKError(\n 'CERTIFICATE_MANAGER_NOT_INITIALIZED',\n 'Certificate service not initialized'\n );\n }\n\n return await this.certificateService.getCertificateInfo();\n }\n\n async hasCertificate() {\n this.ensureInitialized();\n\n if (!this.certificateService) {\n throw new ACubeSDKError(\n 'CERTIFICATE_MANAGER_NOT_INITIALIZED',\n 'Certificate service not initialized'\n );\n }\n\n return await this.certificateService.hasCertificate();\n }\n\n async getCertificatesInfo(isRetryAttempt: boolean = false): Promise<CertificateInfo | null> {\n this.ensureInitialized();\n\n if (!this.adapters?.mtls) {\n throw new ACubeSDKError('MTLS_ADAPTER_NOT_AVAILABLE', 'mTLS adapter not available');\n }\n\n try {\n const hasCert = await this.adapters.mtls.hasCertificate();\n if (!hasCert) {\n return null;\n }\n\n const certInfo = await this.adapters.mtls.getCertificateInfo();\n\n if (certInfo) {\n return certInfo;\n }\n\n if (isRetryAttempt) {\n return null;\n }\n\n if (!this.certificateService) {\n return null;\n }\n\n const storedCert = await this.certificateService.getCertificate();\n if (!storedCert) {\n return null;\n }\n\n await this.adapters.mtls.configureCertificate({\n certificate: storedCert.certificate,\n privateKey: storedCert.privateKey,\n format: storedCert.format.toUpperCase() as 'PEM' | 'P12',\n });\n\n return await this.getCertificatesInfo(true);\n } catch (error) {\n throw new ACubeSDKError(\n 'CERTIFICATE_INFO_ERROR',\n `Failed to retrieve certificate information: ${error instanceof Error ? error.message : 'Unknown error'}`,\n error\n );\n }\n }\n\n destroy(): void {\n this.networkSubscription?.unsubscribe();\n this.offlineManager?.destroy();\n this.container?.clear();\n this.isInitialized = false;\n }\n\n private ensureInitialized(): void {\n if (!this.isInitialized) {\n throw new ACubeSDKError(\n 'SDK_NOT_INITIALIZED',\n 'SDK not initialized. Call initialize() first.'\n );\n }\n }\n}\n\nexport async function createACubeSDK(\n config: SDKConfig,\n customAdapters?: PlatformAdapters,\n events?: SDKEvents\n): Promise<ACubeSDK> {\n const sdk = new ACubeSDK(config, customAdapters, events);\n await sdk.initialize();\n return sdk;\n}\n","import { BehaviorSubject, Observable, Subject, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\n\nimport { INetworkPort } from '@/application/ports/driven/network.port';\nimport { NOTIFICATION_CODES, Notification } from '@/domain/entities/notification.entity';\n\nexport type AppMode = 'NORMAL' | 'WARNING' | 'BLOCKED' | 'OFFLINE';\n\nexport interface WarningState {\n active: boolean;\n blockAt: Date | null;\n remainingMs: number;\n}\n\nexport interface AppState {\n mode: AppMode;\n isOnline: boolean;\n warning: WarningState;\n lastNotification: Notification | null;\n}\n\nconst INITIAL_STATE: AppState = {\n mode: 'NORMAL',\n isOnline: true,\n warning: {\n active: false,\n blockAt: null,\n remainingMs: 0,\n },\n lastNotification: null,\n};\n\nexport class AppStateService {\n private readonly stateSubject = new BehaviorSubject<AppState>(INITIAL_STATE);\n private readonly destroy$ = new Subject<void>();\n private warningTimerId: ReturnType<typeof setInterval> | null = null;\n\n get state$(): Observable<AppState> {\n return this.stateSubject.asObservable();\n }\n\n get mode$(): Observable<AppMode> {\n return this.state$.pipe(\n map((s) => s.mode),\n distinctUntilChanged()\n );\n }\n\n get isBlocked$(): Observable<boolean> {\n return this.mode$.pipe(map((m) => m === 'BLOCKED'));\n }\n\n get warning$(): Observable<WarningState> {\n return this.state$.pipe(\n map((s) => s.warning),\n distinctUntilChanged((a, b) => a.active === b.active && a.remainingMs === b.remainingMs)\n );\n }\n\n constructor(\n private readonly notifications$: Observable<Notification[]>,\n private readonly networkPort: INetworkPort\n ) {\n this.setupSubscriptions();\n }\n\n private setupSubscriptions(): void {\n combineLatest([this.notifications$, this.networkPort.online$])\n .pipe(takeUntil(this.destroy$))\n .subscribe(([notifications, isOnline]) => {\n this.processState(notifications, isOnline);\n });\n }\n\n private processState(notifications: Notification[], isOnline: boolean): void {\n if (!isOnline) {\n this.updateState({\n mode: 'OFFLINE',\n isOnline: false,\n warning: { active: false, blockAt: null, remainingMs: 0 },\n lastNotification: null,\n });\n this.stopWarningTimer();\n return;\n }\n\n const latestByCode = this.getLatestNotificationByCode(notifications);\n\n const statusOffline = latestByCode.get(NOTIFICATION_CODES.STATUS_OFFLINE);\n const statusOnline = latestByCode.get(NOTIFICATION_CODES.STATUS_ONLINE);\n const mf2Unreachable = latestByCode.get(NOTIFICATION_CODES.MF2_UNREACHABLE);\n const commRestored = latestByCode.get(NOTIFICATION_CODES.COMMUNICATION_RESTORED);\n\n let newMode: AppMode = 'NORMAL';\n let warningState: WarningState = { active: false, blockAt: null, remainingMs: 0 };\n\n // Determine BLOCKED state based on STATUS_OFFLINE vs STATUS_ONLINE\n if (statusOffline && statusOnline) {\n const offlineTime = new Date(statusOffline.createdAt).getTime();\n const onlineTime = new Date(statusOnline.createdAt).getTime();\n newMode = offlineTime > onlineTime ? 'BLOCKED' : 'NORMAL';\n } else if (statusOffline) {\n newMode = 'BLOCKED';\n }\n\n // Determine WARNING state based on MF2_UNREACHABLE vs COMMUNICATION_RESTORED/STATUS_ONLINE\n if (newMode !== 'BLOCKED' && mf2Unreachable) {\n const warningTime = new Date(mf2Unreachable.createdAt).getTime();\n const restoredTime = commRestored ? new Date(commRestored.createdAt).getTime() : 0;\n const onlineTime = statusOnline ? new Date(statusOnline.createdAt).getTime() : 0;\n\n // Only show warning if MF2_UNREACHABLE is more recent than both COMMUNICATION_RESTORED and STATUS_ONLINE\n // STATUS_ONLINE invalidates old MF2_UNREACHABLE (PEM went offline then back online)\n if (warningTime > restoredTime && warningTime > onlineTime && mf2Unreachable.payload) {\n const blockAtStr = mf2Unreachable.payload.block_at;\n const blockAt = new Date(blockAtStr);\n const now = Date.now();\n const remainingMs = blockAt.getTime() - now;\n\n if (remainingMs > 0) {\n newMode = 'WARNING';\n warningState = {\n active: true,\n blockAt,\n remainingMs,\n };\n this.startWarningTimer(blockAt);\n } else {\n // Warning countdown expired → transition to BLOCKED\n newMode = 'BLOCKED';\n this.stopWarningTimer();\n }\n } else {\n // Communication restored, clear warning\n this.stopWarningTimer();\n }\n } else {\n this.stopWarningTimer();\n }\n\n const lastNotification = this.getMostRecentNotification(notifications);\n\n this.updateState({\n mode: newMode,\n isOnline: true,\n warning: warningState,\n lastNotification,\n });\n }\n\n private getLatestNotificationByCode(notifications: Notification[]): Map<string, Notification> {\n const map = new Map<string, Notification>();\n\n const sorted = [...notifications].sort(\n (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()\n );\n\n for (const notif of sorted) {\n if (!map.has(notif.code)) {\n map.set(notif.code, notif);\n }\n }\n\n return map;\n }\n\n private getMostRecentNotification(notifications: Notification[]): Notification | null {\n if (notifications.length === 0) return null;\n\n return (\n [...notifications].sort(\n (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()\n )[0] ?? null\n );\n }\n\n private startWarningTimer(blockAt: Date): void {\n this.stopWarningTimer();\n\n this.warningTimerId = setInterval(() => {\n const remainingMs = blockAt.getTime() - Date.now();\n\n if (remainingMs <= 0) {\n this.stopWarningTimer();\n return;\n }\n\n const current = this.stateSubject.value;\n if (current.warning.active) {\n this.updateState({\n ...current,\n warning: {\n ...current.warning,\n remainingMs,\n },\n });\n }\n }, 1000);\n }\n\n private stopWarningTimer(): void {\n if (this.warningTimerId) {\n clearInterval(this.warningTimerId);\n this.warningTimerId = null;\n }\n }\n\n private updateState(newState: AppState): void {\n this.stateSubject.next(newState);\n }\n\n destroy(): void {\n this.stopWarningTimer();\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { BehaviorSubject, Observable, Subject, Subscription, interval } from 'rxjs';\nimport { filter, pairwise, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { INetworkPort } from '@/application/ports/driven/network.port';\nimport { Notification, NotificationListParams } from '@/domain/entities/notification.entity';\nimport { INotificationRepository } from '@/domain/repositories/notification.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport interface NotificationServiceConfig {\n pollIntervalMs: number;\n defaultPageSize: number;\n}\n\nexport interface NotificationSyncState {\n status: 'idle' | 'syncing' | 'error';\n lastSyncAt: number | null;\n error?: string;\n}\n\nexport interface NotificationEvents {\n onNewNotifications?: (notifications: Notification[]) => void;\n onSyncError?: (error: Error) => void;\n}\n\nconst DEFAULT_CONFIG: NotificationServiceConfig = {\n pollIntervalMs: 30000,\n defaultPageSize: 30,\n};\n\nexport class NotificationService {\n private readonly notificationsSubject = new BehaviorSubject<Notification[]>([]);\n private readonly syncStateSubject = new BehaviorSubject<NotificationSyncState>({\n status: 'idle',\n lastSyncAt: null,\n });\n private readonly destroy$ = new Subject<void>();\n private pollingSubscription?: Subscription;\n private networkSubscription?: Subscription;\n private readonly config: NotificationServiceConfig;\n\n get notifications$(): Observable<Notification[]> {\n return this.notificationsSubject.asObservable();\n }\n\n get syncState$(): Observable<NotificationSyncState> {\n return this.syncStateSubject.asObservable();\n }\n\n constructor(\n private readonly repository: INotificationRepository,\n private readonly networkPort: INetworkPort,\n config?: Partial<NotificationServiceConfig>,\n private readonly events?: NotificationEvents\n ) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.setupNetworkMonitoring();\n }\n\n private setupNetworkMonitoring(): void {\n this.networkSubscription = this.networkPort.online$\n .pipe(\n startWith(true),\n pairwise(),\n filter(([wasOnline, isNowOnline]) => !wasOnline && isNowOnline),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.triggerSync();\n });\n }\n\n startPolling(): void {\n if (this.pollingSubscription) {\n return;\n }\n\n this.pollingSubscription = interval(this.config.pollIntervalMs)\n .pipe(\n startWith(0),\n switchMap(() => this.fetchNotifications()),\n takeUntil(this.destroy$)\n )\n .subscribe();\n }\n\n stopPolling(): void {\n this.pollingSubscription?.unsubscribe();\n this.pollingSubscription = undefined;\n }\n\n async triggerSync(): Promise<Page<Notification>> {\n return this.fetchNotifications();\n }\n\n async fetchNotifications(params?: NotificationListParams): Promise<Page<Notification>> {\n this.syncStateSubject.next({\n ...this.syncStateSubject.value,\n status: 'syncing',\n });\n\n try {\n const fetchParams: NotificationListParams = {\n page: params?.page ?? 1,\n size: params?.size ?? this.config.defaultPageSize,\n };\n\n const page = await this.repository.fetchNotifications(fetchParams);\n\n this.notificationsSubject.next(page.members);\n\n if (page.members.length > 0) {\n this.events?.onNewNotifications?.(page.members);\n }\n\n this.syncStateSubject.next({\n status: 'idle',\n lastSyncAt: Date.now(),\n });\n\n return page;\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n\n this.syncStateSubject.next({\n status: 'error',\n lastSyncAt: this.syncStateSubject.value.lastSyncAt,\n error: errorMessage,\n });\n\n if (error instanceof Error) {\n this.events?.onSyncError?.(error);\n }\n\n return { members: [] };\n }\n }\n\n clearNotifications(): void {\n this.notificationsSubject.next([]);\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.pollingSubscription?.unsubscribe();\n this.networkSubscription?.unsubscribe();\n }\n}\n","import { BehaviorSubject, Observable, Subject, Subscription, interval } from 'rxjs';\nimport { filter, pairwise, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { INetworkPort } from '@/application/ports/driven/network.port';\nimport { Telemetry } from '@/domain/entities/telemetry.entity';\nimport { ITelemetryRepository } from '@/domain/repositories/telemetry.repository';\n\nexport interface TelemetryState {\n data: Telemetry | null;\n isCached: boolean;\n isLoading: boolean;\n lastFetchedAt: number | null;\n error?: string;\n}\n\nexport interface TelemetryServiceConfig {\n pollIntervalMs: number;\n}\n\nexport interface TelemetryEvents {\n onTelemetryUpdate?: (telemetry: Telemetry) => void;\n onSyncError?: (error: Error) => void;\n}\n\nconst DEFAULT_CONFIG: TelemetryServiceConfig = {\n pollIntervalMs: 60000, // 1 minute default for telemetry\n};\n\nexport class TelemetryService {\n private readonly stateSubject = new BehaviorSubject<TelemetryState>({\n data: null,\n isCached: false,\n isLoading: false,\n lastFetchedAt: null,\n });\n private readonly destroy$ = new Subject<void>();\n private pollingSubscription?: Subscription;\n private networkSubscription?: Subscription;\n private readonly config: TelemetryServiceConfig;\n private currentPemId?: string;\n\n get state$(): Observable<TelemetryState> {\n return this.stateSubject.asObservable();\n }\n\n constructor(\n private readonly repository: ITelemetryRepository,\n private readonly networkPort: INetworkPort,\n config?: Partial<TelemetryServiceConfig>,\n private readonly events?: TelemetryEvents\n ) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.setupNetworkMonitoring();\n }\n\n private setupNetworkMonitoring(): void {\n this.networkSubscription = this.networkPort.online$\n .pipe(\n startWith(true),\n pairwise(),\n filter(([wasOnline, isNowOnline]) => !wasOnline && isNowOnline),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.triggerSync();\n });\n }\n\n startPolling(pemId: string): void {\n if (this.pollingSubscription) {\n // If already polling for same pemId, do nothing\n if (this.currentPemId === pemId) {\n return;\n }\n // If polling for different pemId, stop and restart\n this.stopPolling();\n }\n\n this.currentPemId = pemId;\n\n this.pollingSubscription = interval(this.config.pollIntervalMs)\n .pipe(\n startWith(0),\n switchMap(() => this.fetchTelemetry()),\n takeUntil(this.destroy$)\n )\n .subscribe();\n }\n\n stopPolling(): void {\n this.pollingSubscription?.unsubscribe();\n this.pollingSubscription = undefined;\n this.currentPemId = undefined;\n }\n\n async triggerSync(): Promise<TelemetryState> {\n if (!this.currentPemId) {\n return this.stateSubject.value;\n }\n return this.fetchTelemetry();\n }\n\n async getTelemetry(pemId: string): Promise<TelemetryState> {\n // Start polling if not already polling for this pemId\n if (this.currentPemId !== pemId) {\n this.startPolling(pemId);\n }\n return this.stateSubject.value;\n }\n\n async refreshTelemetry(pemId: string): Promise<TelemetryState> {\n // Update pemId and fetch immediately\n if (this.currentPemId !== pemId) {\n this.startPolling(pemId);\n } else {\n return this.fetchTelemetry();\n }\n return this.stateSubject.value;\n }\n\n private async fetchTelemetry(): Promise<TelemetryState> {\n if (!this.currentPemId) {\n return this.stateSubject.value;\n }\n\n this.stateSubject.next({\n ...this.stateSubject.value,\n isLoading: true,\n error: undefined,\n });\n\n try {\n const data = await this.repository.getTelemetry(this.currentPemId);\n\n const newState: TelemetryState = {\n data,\n isCached: false,\n isLoading: false,\n lastFetchedAt: Date.now(),\n };\n\n this.stateSubject.next(newState);\n this.events?.onTelemetryUpdate?.(data);\n return newState;\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n const newState: TelemetryState = {\n ...this.stateSubject.value,\n isLoading: false,\n error: errorMessage,\n };\n\n this.stateSubject.next(newState);\n\n if (error instanceof Error) {\n this.events?.onSyncError?.(error);\n }\n\n return newState;\n }\n }\n\n clearTelemetry(): void {\n this.stateSubject.next({\n data: null,\n isCached: false,\n isLoading: false,\n lastFetchedAt: null,\n });\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.pollingSubscription?.unsubscribe();\n this.networkSubscription?.unsubscribe();\n }\n}\n","import { Observable } from 'rxjs';\n\nimport { PlatformAdapters } from '@/application/ports/driven';\nimport { INetworkPort } from '@/application/ports/driven/network.port';\nimport {\n AppMode,\n AppState,\n AppStateService,\n WarningState,\n} from '@/application/services/app-state.service';\nimport { NotificationService } from '@/application/services/notification.service';\nimport { TelemetryService, TelemetryState } from '@/application/services/telemetry.service';\nimport { ICashRegisterRepository } from '@/domain/repositories/cash-register.repository';\nimport { ICashierRepository } from '@/domain/repositories/cashier.repository';\nimport { IDailyReportRepository } from '@/domain/repositories/daily-report.repository';\nimport { IJournalRepository } from '@/domain/repositories/journal.repository';\nimport { IMerchantRepository } from '@/domain/repositories/merchant.repository';\nimport { IPemRepository } from '@/domain/repositories/pem.repository';\nimport { IPointOfSaleRepository } from '@/domain/repositories/point-of-sale.repository';\nimport { IReceiptRepository } from '@/domain/repositories/receipt.repository';\nimport { ISupplierRepository } from '@/domain/repositories/supplier.repository';\nimport { hasAnyRole } from '@/domain/value-objects/role.vo';\nimport { ACubeSDKError, AuthCredentials, SDKConfig, User } from '@/shared/types';\n\nimport { ACubeSDK, SDKEvents } from './acube-sdk';\n\n/**\n * Configuration for SDKManager\n */\nexport interface SDKManagerConfig extends SDKConfig {\n /** Notification polling interval in milliseconds (default: 30000) */\n notificationPollIntervalMs?: number;\n /** Notification page size for fetching (default: 30) */\n notificationPageSize?: number;\n /** Telemetry polling interval in milliseconds (default: 60000) */\n telemetryPollIntervalMs?: number;\n}\n\n/**\n * Simplified telemetry operations for product use\n */\nexport interface TelemetryOperations {\n /** Start polling telemetry using pemId from installed certificate */\n startPollingAuto: () => Promise<string | null>;\n /** Start polling telemetry for a specific PEM */\n startPolling: (pemId: string) => void;\n /** Stop polling telemetry */\n stopPolling: () => void;\n /** Get telemetry state for a specific PEM (starts polling if not already) */\n getTelemetry: (pemId: string) => Promise<TelemetryState>;\n /** Refresh telemetry for a specific PEM */\n refreshTelemetry: (pemId: string) => Promise<TelemetryState>;\n /** Manually trigger a telemetry sync */\n triggerSync: () => Promise<TelemetryState>;\n /** Clear current telemetry data */\n clearTelemetry: () => void;\n /** Get the pemId from the installed certificate */\n getPemId: () => Promise<string | null>;\n}\n\n/**\n * Simplified services interface for product use\n * Exposes only what product developers need\n */\nexport interface ManagedServices {\n receipts: IReceiptRepository;\n merchants: IMerchantRepository;\n cashiers: ICashierRepository;\n cashRegisters: ICashRegisterRepository;\n pointOfSales: IPointOfSaleRepository;\n suppliers: ISupplierRepository;\n pems: IPemRepository;\n dailyReports: IDailyReportRepository;\n journals: IJournalRepository;\n telemetry: TelemetryOperations;\n login: (credentials: AuthCredentials) => Promise<User>;\n logout: () => Promise<void>;\n getCurrentUser: () => Promise<User | null>;\n isAuthenticated: () => Promise<boolean>;\n storeCertificate: (\n certificate: string,\n privateKey: string,\n options?: { format?: 'pem' | 'p12' }\n ) => Promise<void>;\n hasCertificate: () => Promise<boolean>;\n clearCertificate: () => Promise<void>;\n isOnline: () => boolean;\n}\n\n/**\n * Events emitted by SDKManager\n */\nexport interface SDKManagerEvents extends SDKEvents {\n onAppStateChanged?: (state: AppState) => void;\n onTelemetryStateChanged?: (state: TelemetryState) => void;\n}\n\n/**\n * SDKManager - Singleton wrapper for ACubeSDK with simplified API\n *\n * Provides:\n * - Single initialization point\n * - Observable app state (NORMAL, WARNING, BLOCKED, OFFLINE)\n * - Observable telemetry state with polling\n * - Simplified services for product use\n *\n * @example\n * ```typescript\n * // Configure once at app startup\n * SDKManager.configure({\n * environment: 'sandbox',\n * notificationPollIntervalMs: 30000,\n * telemetryPollIntervalMs: 60000,\n * });\n *\n * // Initialize\n * await SDKManager.getInstance().initialize();\n *\n * // Use in components\n * const manager = SDKManager.getInstance();\n * manager.appState$.subscribe(state => {\n * console.log('App mode:', state.mode);\n * });\n *\n * // Start telemetry polling for a specific PEM\n * manager.startTelemetryPolling('PEM-123');\n *\n * // Subscribe to telemetry updates\n * manager.telemetry$.subscribe(telemetry => {\n * console.log('Telemetry:', telemetry);\n * });\n *\n * // Cleanup\n * SDKManager.destroy();\n * ```\n */\nexport class SDKManager {\n private static instance: SDKManager | null = null;\n\n private sdk: ACubeSDK | null = null;\n private notificationService: NotificationService | null = null;\n private telemetryService: TelemetryService | null = null;\n private appStateService: AppStateService | null = null;\n private isInitialized = false;\n private isPollingActive = false;\n\n private constructor(\n private readonly config: SDKManagerConfig,\n private readonly adapters?: PlatformAdapters,\n private readonly events?: SDKManagerEvents\n ) {}\n\n /**\n * Handle user state changes (login/logout/token expiration)\n * Manages polling lifecycle based on user role\n */\n private handleUserChanged = async (user: User | null): Promise<void> => {\n // Always call user's event handler first\n this.events?.onUserChanged?.(user);\n\n if (!this.isInitialized) return;\n\n if (user) {\n // User logged in - check role and start polling if allowed\n const canPoll = hasAnyRole(user.roles, ['ROLE_MERCHANT', 'ROLE_CASHIER']);\n if (canPoll && !this.isPollingActive) {\n this.notificationService?.startPolling();\n await this.startTelemetryPollingAuto();\n this.isPollingActive = true;\n }\n } else {\n // User logged out or token expired - stop polling\n if (this.isPollingActive) {\n this.notificationService?.stopPolling();\n this.telemetryService?.stopPolling();\n this.telemetryService?.clearTelemetry();\n this.isPollingActive = false;\n }\n }\n };\n\n /**\n * Configure the SDKManager singleton\n * Must be called before getInstance()\n */\n static configure(\n config: SDKManagerConfig,\n adapters?: PlatformAdapters,\n events?: SDKManagerEvents\n ): void {\n if (SDKManager.instance) {\n throw new ACubeSDKError(\n 'SDK_ALREADY_CONFIGURED',\n 'SDKManager already configured. Call destroy() first to reconfigure.'\n );\n }\n SDKManager.instance = new SDKManager(config, adapters, events);\n }\n\n /**\n * Get the SDKManager singleton instance\n * Throws if not configured\n */\n static getInstance(): SDKManager {\n if (!SDKManager.instance) {\n throw new ACubeSDKError(\n 'SDK_NOT_CONFIGURED',\n 'SDKManager not configured. Call SDKManager.configure(config) first.'\n );\n }\n return SDKManager.instance;\n }\n\n /**\n * Check if SDKManager is configured\n */\n static isConfigured(): boolean {\n return SDKManager.instance !== null;\n }\n\n /**\n * Destroy the singleton and cleanup resources\n */\n static destroy(): void {\n if (SDKManager.instance) {\n SDKManager.instance.cleanup();\n SDKManager.instance = null;\n }\n }\n\n /**\n * Initialize the SDK and all services\n * Must be called after configure()\n */\n async initialize(): Promise<void> {\n if (this.isInitialized) return;\n\n // Wrap events to intercept onUserChanged for polling lifecycle management\n const wrappedEvents: SDKManagerEvents = {\n ...this.events,\n onUserChanged: this.handleUserChanged,\n };\n\n this.sdk = new ACubeSDK(this.config, this.adapters, wrappedEvents);\n await this.sdk.initialize();\n\n const adaptersRef = this.sdk.getAdapters();\n if (!adaptersRef) {\n throw new ACubeSDKError('ADAPTERS_NOT_AVAILABLE', 'Platform adapters not available');\n }\n\n const networkPort = adaptersRef.networkMonitor as INetworkPort;\n const notificationRepo = this.sdk.notifications;\n const telemetryRepo = this.sdk.telemetry;\n\n this.notificationService = new NotificationService(notificationRepo, networkPort, {\n pollIntervalMs: this.config.notificationPollIntervalMs ?? 30000,\n defaultPageSize: this.config.notificationPageSize ?? 30,\n });\n\n this.telemetryService = new TelemetryService(telemetryRepo, networkPort, {\n pollIntervalMs: this.config.telemetryPollIntervalMs ?? 60000,\n });\n\n this.appStateService = new AppStateService(\n this.notificationService.notifications$,\n networkPort\n );\n\n if (this.events?.onAppStateChanged) {\n this.appStateService.state$.subscribe(this.events.onAppStateChanged);\n }\n if (this.events?.onTelemetryStateChanged) {\n this.telemetryService.state$.subscribe(this.events.onTelemetryStateChanged);\n }\n\n this.isInitialized = true;\n\n // Only start polling for MERCHANT/CASHIER users (SUPPLIER gets 401 on these endpoints)\n const user = await this.sdk.getCurrentUser();\n const canPoll = user && hasAnyRole(user.roles, ['ROLE_MERCHANT', 'ROLE_CASHIER']);\n\n if (canPoll) {\n this.notificationService.startPolling();\n await this.startTelemetryPollingAuto();\n this.isPollingActive = true;\n }\n // AppStateService remains active for all users (handles OFFLINE network state)\n }\n\n /**\n * Observable stream of app state\n * Emits AppState with mode (NORMAL, WARNING, BLOCKED, OFFLINE)\n */\n get appState$(): Observable<AppState> {\n this.ensureInitialized();\n return this.appStateService!.state$;\n }\n\n /**\n * Observable stream of app mode only\n * Emits AppMode with distinctUntilChanged\n */\n get mode$(): Observable<AppMode> {\n this.ensureInitialized();\n return this.appStateService!.mode$;\n }\n\n /**\n * Observable stream indicating if app is blocked\n */\n get isBlocked$(): Observable<boolean> {\n this.ensureInitialized();\n return this.appStateService!.isBlocked$;\n }\n\n /**\n * Observable stream of warning state with countdown\n */\n get warning$(): Observable<WarningState> {\n this.ensureInitialized();\n return this.appStateService!.warning$;\n }\n\n /**\n * Observable stream of telemetry state (data, isLoading, isCached, error)\n */\n get telemetryState$(): Observable<TelemetryState> {\n this.ensureInitialized();\n return this.telemetryService!.state$;\n }\n\n /**\n * Get the pemId from the installed certificate\n */\n async getPemId(): Promise<string | null> {\n this.ensureInitialized();\n try {\n const certInfo = await this.sdk!.getCertificatesInfo();\n return certInfo?.pemId ?? null;\n } catch {\n return null;\n }\n }\n\n /**\n * Start polling telemetry using the pemId from installed certificate\n * Returns the pemId if successful, null if no certificate is installed\n */\n async startTelemetryPollingAuto(): Promise<string | null> {\n this.ensureInitialized();\n const pemId = await this.getPemId();\n if (pemId) {\n this.telemetryService!.startPolling(pemId);\n }\n return pemId;\n }\n\n /**\n * Start polling telemetry for a specific PEM\n */\n startTelemetryPolling(pemId: string): void {\n this.ensureInitialized();\n this.telemetryService!.startPolling(pemId);\n }\n\n /**\n * Stop telemetry polling\n */\n stopTelemetryPolling(): void {\n this.ensureInitialized();\n this.telemetryService!.stopPolling();\n }\n\n /**\n * Get simplified services for product use\n */\n getServices(): ManagedServices {\n this.ensureInitialized();\n\n const sdk = this.sdk!;\n const telemetryService = this.telemetryService!;\n\n return {\n receipts: sdk.receipts,\n merchants: sdk.merchants,\n cashiers: sdk.cashiers,\n cashRegisters: sdk.cashRegisters,\n pointOfSales: sdk.pointOfSales,\n suppliers: sdk.suppliers,\n pems: sdk.pems,\n dailyReports: sdk.dailyReports,\n journals: sdk.journals,\n telemetry: {\n startPollingAuto: (): Promise<string | null> => this.startTelemetryPollingAuto(),\n startPolling: (pemId: string): void => telemetryService.startPolling(pemId),\n stopPolling: (): void => telemetryService.stopPolling(),\n getTelemetry: (pemId: string): Promise<TelemetryState> =>\n telemetryService.getTelemetry(pemId),\n refreshTelemetry: (pemId: string): Promise<TelemetryState> =>\n telemetryService.refreshTelemetry(pemId),\n triggerSync: (): Promise<TelemetryState> => telemetryService.triggerSync(),\n clearTelemetry: (): void => telemetryService.clearTelemetry(),\n getPemId: (): Promise<string | null> => this.getPemId(),\n },\n login: (credentials: AuthCredentials): Promise<User> => sdk.login(credentials),\n logout: (): Promise<void> => sdk.logout(),\n getCurrentUser: (): Promise<User | null> => sdk.getCurrentUser(),\n isAuthenticated: (): Promise<boolean> => sdk.isAuthenticated(),\n storeCertificate: (\n certificate: string,\n privateKey: string,\n options?: { format?: 'pem' | 'p12' }\n ): Promise<void> => sdk.storeCertificate(certificate, privateKey, options),\n hasCertificate: (): Promise<boolean> => sdk.hasCertificate(),\n clearCertificate: (): Promise<void> => sdk.clearCertificate(),\n isOnline: (): boolean => sdk.isOnline(),\n };\n }\n\n /**\n * Manually trigger a notification sync\n */\n async syncNotifications(): Promise<void> {\n this.ensureInitialized();\n await this.notificationService!.triggerSync();\n }\n\n /**\n * Manually trigger a telemetry sync\n */\n async syncTelemetry(): Promise<TelemetryState> {\n this.ensureInitialized();\n return this.telemetryService!.triggerSync();\n }\n\n /**\n * Check if the manager is initialized\n */\n getIsInitialized(): boolean {\n return this.isInitialized;\n }\n\n /**\n * Get the underlying SDK instance (for advanced use cases)\n */\n getSDK(): ACubeSDK {\n this.ensureInitialized();\n return this.sdk!;\n }\n\n private cleanup(): void {\n this.notificationService?.destroy();\n this.telemetryService?.destroy();\n this.appStateService?.destroy();\n this.sdk?.destroy();\n\n this.notificationService = null;\n this.telemetryService = null;\n this.appStateService = null;\n this.sdk = null;\n this.isInitialized = false;\n this.isPollingActive = false;\n }\n\n private ensureInitialized(): void {\n if (!this.isInitialized) {\n throw new ACubeSDKError(\n 'SDK_NOT_INITIALIZED',\n 'SDKManager not initialized. Call initialize() first.'\n );\n }\n }\n}\n","import { GoodOrService, VatRateCode } from '@/domain/value-objects/vat-code.vo';\n\nexport type ReceiptType = 'sale' | 'return' | 'void';\n\nexport interface ReceiptItem {\n type?: GoodOrService;\n quantity: string;\n description: string;\n unitPrice: string;\n vatRateCode?: VatRateCode;\n simplifiedVatAllocation?: boolean;\n discount?: string;\n isDownPaymentOrVoucherRedemption?: boolean;\n complimentary?: boolean;\n}\n\nexport interface ReceiptReturnItem {\n id: number;\n quantity: string;\n}\n\nexport interface ReturnableReceiptItem {\n id: number;\n type?: GoodOrService;\n quantity: string;\n returnedQuantity: string;\n description: string;\n unitPrice: string;\n vatRateCode?: VatRateCode;\n}\n\nexport interface Receipt {\n uuid: string;\n type: ReceiptType;\n createdAt: string;\n totalAmount: string;\n documentNumber: string;\n documentDatetime?: string;\n isReturnable: boolean;\n isVoidable: boolean;\n pdfUrl?: string;\n parentReceiptUuid?: string;\n}\n\nexport interface ReceiptDetails extends Receipt {\n customerLotteryCode?: string;\n vatNumber: string;\n totalTaxableAmount: string;\n totalUncollectedAmount: string;\n deductibleAmount: string;\n totalVatAmount: string;\n totalDiscount: string;\n totalGrossDiscount: string;\n discount: string;\n items?: ReceiptItem[];\n}\n\nexport interface ReceiptInput {\n items: ReceiptItem[];\n customerTaxCode?: string;\n customerLotteryCode?: string;\n discount?: string;\n invoiceIssuing?: boolean;\n uncollectedDcrToSsn?: boolean;\n servicesUncollectedAmount?: string;\n goodsUncollectedAmount?: string;\n cashPaymentAmount?: string;\n electronicPaymentAmount?: string;\n ticketRestaurantPaymentAmount?: string;\n ticketRestaurantQuantity?: number;\n}\n\nexport interface ReceiptReturnInput {\n items: ReceiptReturnItem[];\n documentNumber: string;\n}\n\n/**\n * Input for voiding a receipt from the same POS\n * DELETE /mf1/receipts\n */\nexport interface VoidReceiptInput {\n documentNumber: string;\n}\n\n/**\n * Input for voiding a receipt via a different device (PEM)\n * DELETE /mf1/receipts/void-via-different-device\n */\nexport interface VoidViaDifferentDeviceInput {\n deviceId: string;\n items: ReceiptItem[];\n documentNumber: string;\n documentDatetime: string;\n lotteryCode?: string;\n}\n\nexport type ReceiptProofType = 'POS' | 'VR' | 'ND';\n\n/**\n * Input for voiding a receipt with proof\n * DELETE /mf1/receipts/void-with-proof\n */\nexport interface VoidWithProofInput {\n items: ReceiptItem[];\n proof: ReceiptProofType;\n documentDatetime: string;\n}\n\n/**\n * Input for returning items via a different device (PEM)\n * POST /mf1/receipts/return-via-different-device\n */\nexport interface ReturnViaDifferentDeviceInput {\n deviceId: string;\n items: ReceiptItem[];\n documentNumber: string;\n documentDatetime: string;\n lotteryCode?: string;\n}\n\n/**\n * Input for returning items with proof\n * POST /mf1/receipts/return-with-proof\n */\nexport interface ReturnWithProofInput {\n items: ReceiptItem[];\n proof: ReceiptProofType;\n documentDatetime: string;\n}\n\nexport const RECEIPT_READY = 'ready';\nexport const RECEIPT_SENT = 'sent';\nexport type ReceiptStatus = typeof RECEIPT_READY | typeof RECEIPT_SENT;\n\nexport const RECEIPT_SORT_DESCENDING = 'descending';\nexport const RECEIPT_SORT_ASCENDING = 'ascending';\nexport type ReceiptSortOrder = typeof RECEIPT_SORT_DESCENDING | typeof RECEIPT_SORT_ASCENDING;\n\nexport interface ReceiptListParams {\n serialNumber: string;\n page?: number;\n size?: number;\n status?: ReceiptStatus;\n sort?: ReceiptSortOrder;\n documentNumber?: string;\n documentDatetimeBefore?: string;\n documentDatetimeAfter?: string | null;\n}\n","import { AxiosResponse } from 'axios';\nimport { Subscription } from 'rxjs';\n\nimport {\n ICachePort as ICacheAdapter,\n INetworkPort as INetworkMonitor,\n} from '@/application/ports/driven';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('CACHE-HANDLER');\n\nexport interface CacheConfig {\n useCache?: boolean;\n}\n\nexport class CacheHandler {\n private currentOnlineState = true;\n private networkSubscription?: Subscription;\n\n constructor(\n private cache?: ICacheAdapter,\n private networkMonitor?: INetworkMonitor\n ) {\n this.setupNetworkMonitoring();\n }\n\n private setupNetworkMonitoring(): void {\n if (this.networkMonitor) {\n this.networkSubscription = this.networkMonitor.online$.subscribe((online) => {\n this.currentOnlineState = online;\n });\n }\n }\n\n isOnline(): boolean {\n if (this.networkMonitor) {\n return this.currentOnlineState;\n }\n\n if (typeof navigator !== 'undefined' && 'onLine' in navigator) {\n return navigator.onLine;\n }\n\n return false;\n }\n\n async handleCachedRequest<T>(\n url: string,\n requestFn: () => Promise<AxiosResponse<T>>,\n config?: CacheConfig\n ): Promise<T> {\n if (!this.cache || config?.useCache === false) {\n const response = await requestFn();\n return response.data;\n }\n\n const cacheKey = this.generateCacheKey(url);\n const online = this.isOnline();\n\n log.debug('Request:', { url, cacheKey, online });\n\n if (online) {\n try {\n const response = await requestFn();\n\n if (this.cache) {\n await this.cache.set(cacheKey, response.data).catch((error) => {\n log.error('Failed to cache:', error instanceof Error ? error.message : error);\n });\n }\n\n return response.data;\n } catch (error) {\n const cached = await this.cache.get<T>(cacheKey).catch(() => null);\n if (cached) {\n log.debug('Network failed, using cache fallback');\n return cached.data;\n }\n throw error;\n }\n } else {\n const cached = await this.cache.get<T>(cacheKey).catch(() => null);\n if (cached) {\n log.debug('Offline, returning cached data');\n return cached.data;\n }\n\n throw new Error('Offline: No cached data available');\n }\n }\n\n private generateCacheKey(url: string): string {\n return url;\n }\n\n async invalidateCache(pattern: string): Promise<void> {\n if (!this.cache) return;\n\n try {\n await this.cache.invalidate(pattern);\n } catch (error) {\n log.error('Invalidation failed:', error instanceof Error ? error.message : error);\n }\n }\n\n getCacheStatus() {\n return {\n available: !!this.cache,\n networkMonitorAvailable: !!this.networkMonitor,\n isOnline: this.isOnline(),\n };\n }\n\n destroy(): void {\n this.networkSubscription?.unsubscribe();\n }\n}\n","import axios from 'axios';\n\nimport { ACubeSDKError } from '@/shared/types';\n\nexport function transformError(error: unknown): ACubeSDKError {\n if (axios.isAxiosError(error)) {\n const response = error.response;\n\n if (!response) {\n return new ACubeSDKError('NETWORK_ERROR', 'Network error occurred', error);\n }\n\n const status = response.status;\n const data = response.data;\n const violations = data?.violations;\n\n let message = 'Unknown error occurred';\n if (data?.detail) {\n message = data.detail;\n } else if (data?.title) {\n message = data.title;\n } else if (error.message) {\n message = error.message;\n }\n\n switch (status) {\n case 400:\n return new ACubeSDKError('VALIDATION_ERROR', message, error, status, violations);\n case 401:\n return new ACubeSDKError('AUTH_ERROR', message, error, status, violations);\n case 403:\n return new ACubeSDKError('FORBIDDEN_ERROR', message, error, status, violations);\n case 404:\n return new ACubeSDKError('NOT_FOUND_ERROR', message, error, status, violations);\n case 422:\n return new ACubeSDKError('VALIDATION_ERROR', message, error, status, violations);\n default:\n return new ACubeSDKError('UNKNOWN_ERROR', message, error, status, violations);\n }\n }\n\n return new ACubeSDKError('UNKNOWN_ERROR', 'Unknown error occurred', error);\n}\n","import { MTLSError } from '@/domain/errors';\n\nexport enum ErrorCategory {\n SERVER_ERROR = 'SERVER_ERROR',\n CLIENT_ERROR = 'CLIENT_ERROR',\n AUTH_ERROR = 'AUTH_ERROR',\n CERTIFICATE_ERROR = 'CERTIFICATE_ERROR',\n NETWORK_ERROR = 'NETWORK_ERROR',\n UNKNOWN_ERROR = 'UNKNOWN_ERROR',\n}\n\nexport interface ErrorClassification {\n category: ErrorCategory;\n statusCode?: number;\n message: string;\n shouldRetry: boolean;\n userMessage: string;\n}\n\nfunction extractStatusCode(error: unknown): number | undefined {\n if (error instanceof MTLSError && error.statusCode) {\n return error.statusCode;\n }\n\n const errorObj = error as { response?: { status?: number }; statusCode?: number };\n\n if (errorObj?.response?.status) {\n return errorObj.response.status;\n }\n\n if (typeof errorObj?.statusCode === 'number') {\n return errorObj.statusCode;\n }\n\n return undefined;\n}\n\nexport function classifyError(error: unknown): ErrorClassification {\n const statusCode = extractStatusCode(error);\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n if (statusCode && statusCode >= 500 && statusCode < 600) {\n return {\n category: ErrorCategory.SERVER_ERROR,\n statusCode,\n message: errorMessage,\n shouldRetry: false,\n userMessage: `Server error (${statusCode}): The server encountered an error.`,\n };\n }\n\n if (statusCode === 401 || statusCode === 403) {\n return {\n category: ErrorCategory.AUTH_ERROR,\n statusCode,\n message: errorMessage,\n shouldRetry: false,\n userMessage: `Authentication error (${statusCode}): Invalid credentials or insufficient permissions.`,\n };\n }\n\n if (statusCode && statusCode >= 400 && statusCode < 500) {\n return {\n category: ErrorCategory.CLIENT_ERROR,\n statusCode,\n message: errorMessage,\n shouldRetry: false,\n userMessage: `Request error (${statusCode}): ${errorMessage}`,\n };\n }\n\n if (error instanceof MTLSError) {\n return {\n category: ErrorCategory.CERTIFICATE_ERROR,\n statusCode,\n message: errorMessage,\n shouldRetry: true,\n userMessage: 'Certificate error: Unable to establish secure connection.',\n };\n }\n\n if (\n !statusCode &&\n (errorMessage.toLowerCase().includes('network') ||\n errorMessage.toLowerCase().includes('timeout') ||\n errorMessage.toLowerCase().includes('connection'))\n ) {\n return {\n category: ErrorCategory.NETWORK_ERROR,\n message: errorMessage,\n shouldRetry: true,\n userMessage: 'Network error: Unable to connect to server.',\n };\n }\n\n return {\n category: ErrorCategory.UNKNOWN_ERROR,\n statusCode,\n message: errorMessage,\n shouldRetry: false,\n userMessage: `Unexpected error: ${errorMessage}`,\n };\n}\n\nexport function shouldReconfigureCertificate(error: unknown): boolean {\n const classification = classifyError(error);\n return classification.category === ErrorCategory.CERTIFICATE_ERROR;\n}\n\nexport function shouldRetryRequest(error: unknown, isRetryAttempt: boolean): boolean {\n if (isRetryAttempt) {\n return false;\n }\n const classification = classifyError(error);\n return classification.shouldRetry;\n}\n\nexport function getUserFriendlyMessage(error: unknown): string {\n const classification = classifyError(error);\n return classification.userMessage;\n}\n","export interface CertificateData {\n certificate: string;\n privateKey: string;\n format: 'PEM' | 'P12';\n password?: string;\n}\n\nexport interface MTLSConnectionConfig {\n baseUrl: string;\n port?: number;\n timeout?: number;\n validateCertificate?: boolean;\n}\n\nexport interface MTLSRequestConfig {\n url: string;\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n headers?: Record<string, string>;\n data?: unknown;\n timeout?: number;\n responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';\n}\n\nexport interface MTLSResponse<T = unknown> {\n data: T;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n}\n\nexport interface CertificateInfo {\n subject: string;\n issuer: string;\n validFrom: Date;\n validTo: Date;\n serialNumber: string;\n fingerprint: string;\n pemId: string;\n cashRegisterUUID: string;\n}\n\nexport interface IMTLSPort {\n isMTLSSupported(): Promise<boolean>;\n initialize(config: MTLSConnectionConfig): Promise<void>;\n configureCertificate(certificateData: CertificateData): Promise<void>;\n hasCertificate(): Promise<boolean>;\n getCertificateInfo(): Promise<CertificateInfo | null>;\n request<T>(config: MTLSRequestConfig): Promise<MTLSResponse<T>>;\n testConnection(): Promise<boolean>;\n removeCertificate(): Promise<void>;\n getBaseUrl(): string | null;\n getPlatformInfo(): {\n platform: 'react-native' | 'node' | 'web' | 'expo';\n mtlsSupported: boolean;\n certificateStorage: 'keychain' | 'keystore' | 'filesystem' | 'browser-managed' | 'memory';\n fallbackToJWT: boolean;\n };\n}\n\nexport interface IMTLSAdapterFactory {\n createAdapter(): Promise<IMTLSPort | null>;\n getPlatform(): string;\n}\n\nexport type IMTLSAdapter = IMTLSPort;\n\nexport enum MTLSErrorType {\n NOT_SUPPORTED = 'MTLS_NOT_SUPPORTED',\n CERTIFICATE_NOT_FOUND = 'MTLS_CERTIFICATE_NOT_FOUND',\n CERTIFICATE_EXPIRED = 'MTLS_CERTIFICATE_EXPIRED',\n CERTIFICATE_INVALID = 'MTLS_CERTIFICATE_INVALID',\n CONNECTION_FAILED = 'MTLS_CONNECTION_FAILED',\n AUTHENTICATION_FAILED = 'MTLS_AUTHENTICATION_FAILED',\n CONFIGURATION_ERROR = 'MTLS_CONFIGURATION_ERROR',\n}\n\nexport class MTLSError extends Error {\n constructor(\n public type: MTLSErrorType,\n message: string,\n public originalError?: Error,\n public statusCode?: number\n ) {\n super(message);\n this.name = 'MTLSError';\n }\n}\n\nexport class CertificateValidator {\n static validatePEMFormat(certificate: string, privateKey: string): boolean {\n const certRegex = /-----BEGIN CERTIFICATE-----[\\s\\S]*-----END CERTIFICATE-----/;\n const keyRegex = /-----BEGIN (RSA )?PRIVATE KEY-----[\\s\\S]*-----END (RSA )?PRIVATE KEY-----/;\n return certRegex.test(certificate) && keyRegex.test(privateKey);\n }\n\n static isCertificateExpired(validTo: Date): boolean {\n return new Date() > validTo;\n }\n\n static getDaysUntilExpiry(validTo: Date): number {\n const now = new Date();\n const diffTime = validTo.getTime() - now.getTime();\n return Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n }\n}\n\nexport class PlatformDetector {\n static detectPlatform(): 'react-native' | 'node' | 'web' {\n if (\n (typeof global !== 'undefined' && (global as { __expo?: unknown }).__expo) ||\n (typeof navigator !== 'undefined' &&\n (navigator as { product?: string }).product === 'ReactNative')\n ) {\n return 'react-native';\n }\n\n if (typeof process !== 'undefined' && process.versions?.node) {\n return 'node';\n }\n\n return 'web';\n }\n\n static isReactNative(): boolean {\n return this.detectPlatform() === 'react-native';\n }\n\n static isNode(): boolean {\n return this.detectPlatform() === 'node';\n }\n\n static isWeb(): boolean {\n return this.detectPlatform() === 'web';\n }\n\n static getPlatformDetails() {\n const platform = this.detectPlatform();\n\n return {\n platform,\n userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : 'unknown',\n nodeVersion: typeof process !== 'undefined' ? process.version : undefined,\n isExpo: typeof global !== 'undefined' && !!(global as { __expo?: unknown }).__expo,\n hasWindow: typeof window !== 'undefined',\n hasDocument: typeof document !== 'undefined',\n hasProcess: typeof process !== 'undefined',\n };\n }\n}\n"],"names":["Symbol_observable","Symbol_iterator","process","iterator","isArray","asyncScheduler","picocolors_browserModule","log","z","MTLSErrorType","DEFAULT_CONFIG","ErrorCategory"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,76,106]}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../node_modules/rxjs/dist/esm5/internal/Subscription.js","../node_modules/rxjs/dist/esm5/internal/config.js","../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../node_modules/rxjs/dist/esm5/internal/util/noop.js","../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../node_modules/rxjs/dist/esm5/internal/util/identity.js","../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../node_modules/rxjs/dist/esm5/internal/Observable.js","../node_modules/rxjs/dist/esm5/internal/util/lift.js","../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../node_modules/rxjs/dist/esm5/internal/Subject.js","../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../node_modules/rxjs/dist/esm5/internal/Scheduler.js","../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../node_modules/rxjs/dist/esm5/internal/observable/empty.js","../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../node_modules/rxjs/dist/esm5/internal/util/args.js","../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../node_modules/rxjs/dist/esm5/internal/observable/from.js","../node_modules/rxjs/dist/esm5/internal/observable/of.js","../node_modules/rxjs/dist/esm5/internal/util/isDate.js","../node_modules/rxjs/dist/esm5/internal/operators/map.js","../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js","../node_modules/rxjs/dist/esm5/internal/util/createObject.js","../node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../node_modules/rxjs/dist/esm5/internal/observable/concat.js","../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../node_modules/rxjs/dist/esm5/internal/observable/timer.js","../node_modules/rxjs/dist/esm5/internal/observable/interval.js","../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","../node_modules/rxjs/dist/esm5/internal/operators/startWith.js","../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","../src/domain/services/jwt-parser.service.ts","../src/shared/utils/object.ts","../src/shared/utils/platform-detector.ts","../node_modules/picocolors/picocolors.browser.js","../src/shared/utils/logger.ts","../src/shared/utils/formatters.ts","../src/application/services/authentication.service.ts","../src/application/services/certificate.service.ts","../src/domain/value-objects/vat-code.vo.ts","../src/domain/value-objects/role.vo.ts","../src/shared/config/config-manager.ts","../src/shared/validation/api/receipts.ts","../src/shared/validation/api/cashiers.ts","../src/shared/validation/api/point-of-sales.ts","../src/shared/validation/api/cash-registers.ts","../src/shared/validation/api/merchants.ts","../src/shared/validation/api/pems.ts","../src/shared/validation/api/suppliers.ts","../src/shared/validation/api/journals.ts","../src/shared/validation/api/daily-reports.ts","../src/shared/validation/api/notifications.ts","../src/shared/validation/api/telemetry.ts","../src/shared/validation/api/index.ts","../src/shared/types/sdk.types.ts","../src/infrastructure/driven/http/auth-strategy.ts","../src/infrastructure/driven/http/jwt-auth.handler.ts","../src/infrastructure/driven/http/mtls-auth.handler.ts","../src/infrastructure/driven/platforms/shared/base-storage.mixin.ts","../src/infrastructure/driven/platforms/shared/network-base.ts","../src/infrastructure/driven/platforms/node/storage.ts","../src/infrastructure/driven/platforms/react-native/storage.ts","../src/infrastructure/driven/platforms/web/storage.ts","../src/infrastructure/loaders/storage-loader.ts","../src/infrastructure/driven/platforms/node/network.ts","../src/infrastructure/driven/platforms/react-native/network.ts","../src/infrastructure/driven/platforms/web/network.ts","../src/infrastructure/loaders/network-loader.ts","../src/domain/errors/mtls.error.ts","../src/domain/services/certificate-validator.service.ts","../src/infrastructure/driven/platforms/react-native/mtls.ts","../src/infrastructure/driven/platforms/web/mtls.ts","../src/infrastructure/loaders/mtls-loader.ts","../src/infrastructure/loaders/adapter-loader.ts","../src/infrastructure/driving/sdk/di-container.ts","../src/application/dto/receipt.dto.ts","../src/infrastructure/driven/api/receipt.repository.impl.ts","../src/application/dto/merchant.dto.ts","../src/infrastructure/driven/api/merchant.repository.impl.ts","../src/application/dto/cashier.dto.ts","../src/infrastructure/driven/api/cashier.repository.impl.ts","../src/application/dto/cash-register.dto.ts","../src/infrastructure/driven/api/cash-register.repository.impl.ts","../src/application/dto/point-of-sale.dto.ts","../src/infrastructure/driven/api/point-of-sale.repository.impl.ts","../src/application/dto/supplier.dto.ts","../src/infrastructure/driven/api/supplier.repository.impl.ts","../src/application/dto/pem.dto.ts","../src/infrastructure/driven/api/pem.repository.impl.ts","../src/application/dto/daily-report.dto.ts","../src/infrastructure/driven/api/daily-report.repository.impl.ts","../src/application/dto/journal.dto.ts","../src/infrastructure/driven/api/journal.repository.impl.ts","../src/domain/entities/notification.entity.ts","../src/application/dto/notification.dto.ts","../src/infrastructure/driven/api/notification.repository.impl.ts","../src/application/dto/telemetry.dto.ts","../src/infrastructure/driven/api/telemetry.repository.impl.ts","../src/infrastructure/driven/http/axios-http.adapter.ts","../src/infrastructure/driven/storage/token-storage.adapter.ts","../src/infrastructure/driving/sdk/sdk-factory.ts","../src/infrastructure/driving/sdk/acube-sdk.ts","../src/application/services/app-state.service.ts","../src/application/services/notification.service.ts","../src/application/services/telemetry.service.ts","../src/infrastructure/driving/sdk/sdk-manager.ts","../src/domain/entities/receipt.entity.ts","../src/infrastructure/driven/http/error-transformer.ts","../src/infrastructure/driven/http/error-classifier.ts","../src/application/ports/driven/mtls.port.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","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n return from(args, scheduler);\n}\n//# sourceMappingURL=of.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","var isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n if (isArray(first_1)) {\n return { args: first_1, keys: null };\n }\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) { return first_1[key]; }),\n keys: keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","export function createObject(keys, values) {\n return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\n//# sourceMappingURL=createObject.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var resultSelector = popResultSelector(args);\n var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n if (observables.length === 0) {\n return from([], scheduler);\n }\n var result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n function (values) { return createObject(keys, values); }\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) { valueTransform = identity; }\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n//# sourceMappingURL=combineLatest.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period, scheduler) {\n if (period === void 0) { period = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n//# sourceMappingURL=interval.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n//# sourceMappingURL=debounceTime.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n//# sourceMappingURL=pairwise.js.map","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var scheduler = popScheduler(values);\n return operate(function (source, subscriber) {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=startWith.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate(function (source, subscriber) {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=takeUntil.js.map","import { UserRole } from '@/domain/value-objects';\n\nexport interface JwtPayload {\n uid: number;\n username: string;\n roles: Record<string, string[]>;\n fid: string;\n pid: string | null;\n exp: number;\n iat: number;\n}\n\nexport function parseJwt(token: string): JwtPayload {\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw new Error('Invalid JWT format');\n }\n const payload = parts[1];\n if (!payload) {\n throw new Error('JWT missing payload');\n }\n const padded = payload + '==='.slice(0, (4 - (payload.length % 4)) % 4);\n return JSON.parse(atob(padded));\n}\n\nexport function isTokenExpired(payload: JwtPayload): boolean {\n return Date.now() >= payload.exp * 1000 - 300000;\n}\n\nexport function extractRoles(jwtRoles: Record<string, string[]>): UserRole[] {\n const allRoles: UserRole[] = [];\n for (const context of Object.values(jwtRoles)) {\n for (const role of context) {\n if (role === 'ROLE_SUPPLIER' || role === 'ROLE_CASHIER' || role === 'ROLE_MERCHANT') {\n if (!allRoles.includes(role)) {\n allRoles.push(role);\n }\n }\n }\n }\n return allRoles;\n}\n","export type Cleaned<T> = T extends (infer U)[]\n ? Cleaned<U>[]\n : T extends object\n ? {\n [K in keyof T as T[K] extends null | undefined | '' ? never : K]: Cleaned<T[K]>;\n }\n : T;\n\nexport function clearObject<T>(input: T): Cleaned<T> {\n if (input === null || input === undefined || input === '') {\n return undefined as unknown as Cleaned<T>;\n }\n\n if (Array.isArray(input)) {\n const cleanedArray = input\n .map((item) => clearObject(item))\n .filter((item): item is NonNullable<typeof item> => item !== undefined);\n return cleanedArray as unknown as Cleaned<T>;\n }\n\n if (typeof input === 'object' && input.constructor === Object) {\n const cleaned: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(input)) {\n const cleanedValue = clearObject(value);\n if (cleanedValue !== undefined) {\n cleaned[key] = cleanedValue;\n }\n }\n return cleaned as Cleaned<T>;\n }\n\n return input as Cleaned<T>;\n}\n\nexport type CleanedShallow<T> = {\n [K in keyof T as T[K] extends null | undefined | '' ? never : K]: T[K];\n};\n\nexport function clearObjectShallow<T extends Record<string, unknown>>(obj: T): CleanedShallow<T> {\n if (!obj || typeof obj !== 'object') {\n return {} as CleanedShallow<T>;\n }\n\n const cleaned: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (value !== null && value !== undefined && value !== '') {\n cleaned[key] = value;\n }\n }\n\n return cleaned as CleanedShallow<T>;\n}\n\nexport function isEmpty(value: unknown): boolean {\n return value === null || value === undefined || value === '';\n}\n\nexport function hasNonEmptyValues<T extends Record<string, unknown>>(obj: T): boolean {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return Object.values(obj).some((value) => !isEmpty(value));\n}\n","/**\n * Platform detection utilities\n */\n\nexport type Platform = 'web' | 'react-native' | 'node' | 'unknown';\n\nexport interface PlatformInfo {\n platform: Platform;\n isReactNative: boolean;\n isWeb: boolean;\n isNode: boolean;\n isExpo: boolean;\n}\n\n// Type declarations for global variables that may not be available\ndeclare const global: typeof globalThis & {\n __DEV__?: boolean;\n navigator?: { product?: string };\n Expo?: unknown;\n expo?: unknown;\n};\ndeclare const process: { versions?: { node?: string } } | undefined;\ndeclare const window: { document?: unknown; navigator?: unknown } | undefined;\n\n/**\n * Detect the current platform\n */\nexport function detectPlatform(): PlatformInfo {\n // Check for React Native\n if (\n typeof global !== 'undefined' &&\n global.__DEV__ !== undefined &&\n typeof global.navigator !== 'undefined' &&\n global.navigator.product === 'ReactNative'\n ) {\n return {\n platform: 'react-native',\n isReactNative: true,\n isWeb: false,\n isNode: false,\n isExpo: checkExpo(),\n };\n }\n\n // Check for Web/Browser\n if (\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.navigator !== 'undefined'\n ) {\n return {\n platform: 'web',\n isReactNative: false,\n isWeb: true,\n isNode: false,\n isExpo: false,\n };\n }\n\n // Check for Node.js\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n return {\n platform: 'node',\n isReactNative: false,\n isWeb: false,\n isNode: true,\n isExpo: false,\n };\n }\n\n // Unknown platform\n return {\n platform: 'unknown',\n isReactNative: false,\n isWeb: false,\n isNode: false,\n isExpo: false,\n };\n}\n\n/**\n * Check if running in Expo\n */\nfunction checkExpo(): boolean {\n try {\n return (\n typeof global !== 'undefined' &&\n (typeof global.Expo !== 'undefined' || typeof global.expo !== 'undefined')\n );\n } catch {\n return false;\n }\n}\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x,blackBright:x,redBright:x,greenBright:x,yellowBright:x,blueBright:x,magentaBright:x,cyanBright:x,whiteBright:x,bgBlackBright:x,bgRedBright:x,bgGreenBright:x,bgYellowBright:x,bgBlueBright:x,bgMagentaBright:x,bgCyanBright:x,bgWhiteBright:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","import pc from 'picocolors';\n\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\ninterface LogColors {\n prefix: (s: string) => string;\n message: (s: string) => string;\n data: (s: string) => string;\n}\n\nconst levelColors: Record<LogLevel, LogColors> = {\n debug: {\n prefix: pc.gray,\n message: pc.gray,\n data: pc.dim,\n },\n info: {\n prefix: pc.cyan,\n message: pc.white,\n data: pc.dim,\n },\n warn: {\n prefix: pc.yellow,\n message: pc.yellow,\n data: pc.dim,\n },\n error: {\n prefix: pc.red,\n message: pc.red,\n data: pc.dim,\n },\n};\n\nconst levelIcons: Record<LogLevel, string> = {\n debug: '🔍',\n info: 'ℹ️ ',\n warn: '⚠️ ',\n error: '❌',\n};\n\n/**\n * Format data for pretty display in logs\n */\nfunction formatData(data: unknown, level: LogLevel): string {\n if (data === undefined || data === null) {\n return String(data);\n }\n\n // For primitive types, just return as string\n if (typeof data !== 'object') {\n return String(data);\n }\n\n // For Error objects, format nicely\n if (data instanceof Error) {\n return `${data.name}: ${data.message}${data.stack ? `\\n${pc.dim(data.stack)}` : ''}`;\n }\n\n try {\n // Apply level-specific coloring\n const colors = levelColors[level];\n return colors.data(JSON.stringify(data, null, 2));\n } catch {\n // Fallback to JSON.stringify if pretty-format fails\n try {\n return JSON.stringify(data, null, 2);\n } catch {\n return String(data);\n }\n }\n}\n\nclass Logger {\n private enabled = false;\n\n setEnabled(enabled: boolean): void {\n this.enabled = enabled;\n }\n\n isEnabled(): boolean {\n return this.enabled;\n }\n\n debug(prefix: string, message: string, data?: unknown): void {\n if (!this.enabled) return;\n this.log('debug', prefix, message, data);\n }\n\n info(prefix: string, message: string, data?: unknown): void {\n if (!this.enabled) return;\n this.log('info', prefix, message, data);\n }\n\n warn(prefix: string, message: string, data?: unknown): void {\n this.log('warn', prefix, message, data);\n }\n\n error(prefix: string, message: string, data?: unknown): void {\n this.log('error', prefix, message, data);\n }\n\n private log(level: LogLevel, prefix: string, message: string, data?: unknown): void {\n const colors = levelColors[level];\n const icon = levelIcons[level];\n const isoTime = new Date().toISOString().split('T')[1] ?? '';\n const timestamp = pc.dim(isoTime.slice(0, 12));\n const formattedPrefix = colors.prefix(`[${prefix}]`);\n const formattedMessage = colors.message(message);\n\n const consoleMethod =\n level === 'debug'\n ? console.debug\n : level === 'info'\n ? console.info\n : level === 'warn'\n ? console.warn\n : console.error;\n\n const header = `${timestamp} ${icon} ${formattedPrefix} ${formattedMessage}`;\n\n if (data !== undefined) {\n const formattedData = formatData(data, level);\n // Check if data is an object (multi-line) or primitive (single-line)\n const isMultiLine = typeof data === 'object' && data !== null;\n if (isMultiLine) {\n consoleMethod(`${header}\\n${formattedData}`);\n } else {\n consoleMethod(`${header}`, formattedData);\n }\n } else {\n consoleMethod(header);\n }\n }\n}\n\nexport const logger = new Logger();\n\nexport function createPrefixedLogger(prefix: string) {\n return {\n debug: (message: string, data?: unknown) => logger.debug(prefix, message, data),\n info: (message: string, data?: unknown) => logger.info(prefix, message, data),\n warn: (message: string, data?: unknown) => logger.warn(prefix, message, data),\n error: (message: string, data?: unknown) => logger.error(prefix, message, data),\n };\n}\n","/**\n * Formats a numeric string value to have exactly the specified number of decimal places.\n * E.g., \"1\" → \"1.00\", \"10\" → \"10.00\", \"1.5\" → \"1.50\"\n * Returns undefined for undefined input (preserves optional fields).\n *\n * @param value - The string value to format\n * @param decimals - Number of decimal places (default: 2)\n * @returns Formatted string or undefined if input is undefined\n */\nexport function formatDecimal(value: string | undefined, decimals: number = 2): string | undefined {\n if (value === undefined) return undefined;\n const num = parseFloat(value);\n if (isNaN(num)) return value;\n return num.toFixed(decimals);\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\n\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { ITokenStoragePort } from '@/application/ports/driven/token-storage.port';\nimport { JwtPayload, isTokenExpired, parseJwt } from '@/domain/services/jwt-parser.service';\nimport { UserRoles } from '@/domain/value-objects';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('AUTH-SERVICE');\n\nexport interface User {\n id: string;\n email: string;\n username: string;\n roles: UserRoles;\n fid: string;\n pid: string | null;\n expiresAt: number;\n}\n\nexport interface AuthCredentials {\n email: string;\n password: string;\n}\n\nexport interface TokenResponse {\n token: string;\n}\n\nexport interface AuthEvents {\n onAuthError?: (error: Error) => void;\n onUserChanged?: (user: User | null) => void;\n}\n\nexport interface AuthServiceConfig {\n authUrl: string;\n timeout?: number;\n}\n\nexport type AuthState = 'idle' | 'authenticating' | 'authenticated' | 'error';\n\nexport class AuthenticationService {\n private readonly userSubject = new BehaviorSubject<User | null>(null);\n private readonly authStateSubject = new BehaviorSubject<AuthState>('idle');\n private readonly destroy$ = new Subject<void>();\n\n get user$(): Observable<User | null> {\n return this.userSubject.asObservable();\n }\n\n get isAuthenticated$(): Observable<boolean> {\n return this.userSubject.pipe(\n map((user) => user !== null),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n );\n }\n\n get authState$(): Observable<AuthState> {\n return this.authStateSubject.asObservable();\n }\n\n constructor(\n private readonly httpPort: IHttpPort,\n private readonly tokenStorage: ITokenStoragePort,\n private readonly config: AuthServiceConfig,\n private readonly events: AuthEvents = {}\n ) {}\n\n async login(credentials: AuthCredentials): Promise<User> {\n this.authStateSubject.next('authenticating');\n\n log.info('Login attempt', {\n authUrl: this.config.authUrl,\n email: credentials.email,\n });\n\n try {\n const response = await this.httpPort.post<TokenResponse>(`${this.config.authUrl}/login`, {\n email: credentials.email,\n password: credentials.password,\n });\n\n const jwtPayload = parseJwt(response.data.token);\n const expiresAt = jwtPayload.exp * 1000;\n\n log.info('Login successful', {\n authUrl: this.config.authUrl,\n tokenPrefix: response.data.token.substring(0, 30) + '...',\n expiresAt: new Date(expiresAt).toISOString(),\n });\n\n await this.tokenStorage.saveAccessToken(response.data.token, expiresAt);\n\n const user = this.createUserFromPayload(jwtPayload);\n await this.tokenStorage.saveUser(user);\n\n this.userSubject.next(user);\n this.authStateSubject.next('authenticated');\n this.events.onUserChanged?.(user);\n\n return user;\n } catch (error) {\n this.authStateSubject.next('error');\n throw error;\n }\n }\n\n async logout(): Promise<void> {\n await this.tokenStorage.clearTokens();\n this.userSubject.next(null);\n this.authStateSubject.next('idle');\n this.events.onUserChanged?.(null);\n }\n\n async getCurrentUser(): Promise<User | null> {\n // Always verify token is valid before returning user\n const token = await this.tokenStorage.getAccessToken();\n if (!token) {\n // No token - clear any stale user state\n log.debug('getCurrentUser: No token in storage');\n if (this.userSubject.value) {\n this.userSubject.next(null);\n this.authStateSubject.next('idle');\n }\n return null;\n }\n\n log.debug('getCurrentUser: Token found', {\n tokenPrefix: token.substring(0, 30) + '...',\n tokenLength: token.length,\n });\n\n const jwtPayload = parseJwt(token);\n if (isTokenExpired(jwtPayload)) {\n // Token expired - clear everything\n log.warn('getCurrentUser: Token expired');\n await this.tokenStorage.clearTokens();\n this.userSubject.next(null);\n this.authStateSubject.next('idle');\n this.events.onUserChanged?.(null);\n return null;\n }\n\n // Token is valid - return cached user if available\n const currentUser = this.userSubject.value;\n if (currentUser) {\n log.debug('getCurrentUser: Returning cached user', {\n email: currentUser.email,\n roles: currentUser.roles,\n });\n return currentUser;\n }\n\n // Check stored user\n const storedUser = await this.tokenStorage.getUser<User>();\n if (storedUser) {\n this.userSubject.next(storedUser);\n this.authStateSubject.next('authenticated');\n return storedUser;\n }\n\n // Create user from token\n const user = this.createUserFromPayload(jwtPayload);\n await this.tokenStorage.saveUser(user);\n this.userSubject.next(user);\n this.authStateSubject.next('authenticated');\n\n return user;\n }\n\n async isAuthenticated(): Promise<boolean> {\n const token = await this.tokenStorage.getAccessToken();\n if (!token) {\n log.debug('isAuthenticated: No token in storage');\n return false;\n }\n\n const jwtPayload = parseJwt(token);\n const expired = isTokenExpired(jwtPayload);\n log.debug('isAuthenticated: Token check', {\n hasToken: true,\n expired,\n expiresAt: new Date(jwtPayload.exp * 1000).toISOString(),\n });\n return !expired;\n }\n\n async getAccessToken(): Promise<string | null> {\n const token = await this.tokenStorage.getAccessToken();\n if (!token) {\n return null;\n }\n\n const jwtPayload = parseJwt(token);\n if (isTokenExpired(jwtPayload)) {\n await this.tokenStorage.clearTokens();\n this.userSubject.next(null);\n this.authStateSubject.next('idle');\n this.events.onUserChanged?.(null);\n return null;\n }\n\n return token;\n }\n\n private createUserFromPayload(jwtPayload: JwtPayload): User {\n return {\n id: jwtPayload.uid.toString(),\n email: jwtPayload.username,\n username: jwtPayload.username,\n roles: jwtPayload.roles as UserRoles,\n fid: jwtPayload.fid,\n pid: jwtPayload.pid,\n expiresAt: jwtPayload.exp * 1000,\n };\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\n\nimport { ICertificatePort, StoredCertificate } from '@/application/ports/driven/certificate.port';\nimport { ISecureStoragePort } from '@/application/ports/driven/storage.port';\n\nconst CERTIFICATE_KEY = 'acube_certificate';\n\nexport type CertificateState = 'idle' | 'loading' | 'stored' | 'error';\n\nexport class CertificateService implements ICertificatePort {\n private readonly certificateSubject = new BehaviorSubject<StoredCertificate | null>(null);\n private readonly stateSubject = new BehaviorSubject<CertificateState>('idle');\n private readonly destroy$ = new Subject<void>();\n\n get certificate$(): Observable<StoredCertificate | null> {\n return this.certificateSubject.asObservable();\n }\n\n get hasCertificate$(): Observable<boolean> {\n return this.certificateSubject.pipe(\n map((cert) => cert !== null),\n distinctUntilChanged()\n );\n }\n\n get state$(): Observable<CertificateState> {\n return this.stateSubject.asObservable();\n }\n\n constructor(private readonly secureStorage: ISecureStoragePort) {}\n\n async hasCertificate(): Promise<boolean> {\n const cert = await this.getCertificate();\n return cert !== null;\n }\n\n async getCertificate(): Promise<StoredCertificate | null> {\n this.stateSubject.next('loading');\n\n const stored = await this.secureStorage.get(CERTIFICATE_KEY);\n if (!stored) {\n this.stateSubject.next('idle');\n return null;\n }\n\n const certData = JSON.parse(stored) as StoredCertificate;\n if (!certData.certificate || !certData.privateKey) {\n this.stateSubject.next('idle');\n return null;\n }\n\n this.certificateSubject.next(certData);\n this.stateSubject.next('stored');\n return certData;\n }\n\n async storeCertificate(cert: string, key: string, format: 'pem' | 'p12'): Promise<void> {\n if (!cert?.trim()) {\n throw new Error('Certificate content is required');\n }\n if (!key?.trim()) {\n throw new Error('Private key is required');\n }\n\n const certData: StoredCertificate = {\n certificate: cert.trim(),\n privateKey: key.trim(),\n format,\n storedAt: Date.now(),\n };\n\n await this.secureStorage.set(CERTIFICATE_KEY, JSON.stringify(certData));\n this.certificateSubject.next(certData);\n this.stateSubject.next('stored');\n }\n\n async clearCertificate(): Promise<void> {\n await this.secureStorage.remove(CERTIFICATE_KEY);\n this.certificateSubject.next(null);\n this.stateSubject.next('idle');\n }\n\n async getCertificateInfo(): Promise<{ format: string } | null> {\n const cert = await this.getCertificate();\n if (!cert) {\n return null;\n }\n return { format: cert.format };\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","export type GoodOrService = 'goods' | 'service';\n\nexport type VatRateCode =\n | '4.00'\n | '5.00'\n | '10.00'\n | '22.00'\n | '2.00'\n | '6.40'\n | '7.00'\n | '7.30'\n | '7.50'\n | '7.65'\n | '7.95'\n | '8.30'\n | '8.50'\n | '8.80'\n | '9.50'\n | '12.30'\n | 'N1'\n | 'N2'\n | 'N3'\n | 'N4'\n | 'N5'\n | 'N6';\n\nexport const VAT_RATE_CODES: VatRateCode[] = [\n '4.00',\n '5.00',\n '10.00',\n '22.00',\n '2.00',\n '6.40',\n '7.00',\n '7.30',\n '7.50',\n '7.65',\n '7.95',\n '8.30',\n '8.50',\n '8.80',\n '9.50',\n '12.30',\n 'N1',\n 'N2',\n 'N3',\n 'N4',\n 'N5',\n 'N6',\n];\n\nexport const STANDARD_VAT_RATES: VatRateCode[] = ['4.00', '5.00', '10.00', '22.00'];\nexport const EXEMPT_VAT_CODES: VatRateCode[] = ['N1', 'N2', 'N3', 'N4', 'N5', 'N6'];\n","export type Domain = 'ereceipts-it.acubeapi.com';\n\nexport type UserRole = 'ROLE_SUPPLIER' | 'ROLE_CASHIER' | 'ROLE_MERCHANT';\n\nexport type UserRoles = Record<Domain, UserRole[]>;\n\nexport function hasRole(userRoles: UserRoles, required: UserRole): boolean {\n return Object.values(userRoles).some((roles) => roles.includes(required));\n}\n\nexport function hasAnyRole(userRoles: UserRoles, required: UserRole[]): boolean {\n return Object.values(userRoles).some((roles) => required.some((role) => roles.includes(role)));\n}\n","import { Environment, SDKConfig } from '@/shared/types';\n\ninterface InternalConfig {\n environment: Environment;\n apiUrl: string;\n authUrl: string;\n timeout: number;\n retryAttempts: number;\n debug: boolean;\n customHeaders: Record<string, string>;\n}\n\nexport class ConfigManager {\n private config: InternalConfig;\n\n constructor(userConfig: SDKConfig) {\n this.config = this.buildConfig(userConfig);\n }\n\n private buildConfig(userConfig: SDKConfig): InternalConfig {\n return {\n environment: userConfig.environment,\n apiUrl: this.getDefaultApiUrl(userConfig.environment),\n authUrl: this.getDefaultAuthUrl(userConfig.environment),\n timeout: 30000,\n retryAttempts: 3,\n debug: userConfig.debug ?? false,\n customHeaders: {},\n };\n }\n\n private getDefaultApiUrl(environment: Environment): string {\n switch (environment) {\n case 'production':\n return 'https://ereceipts-it.acubeapi.com';\n case 'development':\n return 'https://ereceipts-it.dev.acubeapi.com';\n case 'sandbox':\n default:\n return 'https://ereceipts-it-sandbox.acubeapi.com';\n }\n }\n\n private getDefaultAuthUrl(environment: Environment): string {\n switch (environment) {\n case 'production':\n return 'https://common.api.acubeapi.com';\n case 'development':\n case 'sandbox':\n default:\n return 'https://common-sandbox.api.acubeapi.com';\n }\n }\n\n getConfig(): SDKConfig {\n return {\n environment: this.config.environment,\n debug: this.config.debug,\n };\n }\n\n getApiUrl(): string {\n return this.config.apiUrl;\n }\n\n getAuthUrl(): string {\n return this.config.authUrl;\n }\n\n getEnvironment(): Environment {\n return this.config.environment;\n }\n\n isDebugEnabled(): boolean {\n return this.config.debug;\n }\n\n getTimeout(): number {\n return this.config.timeout;\n }\n\n getRetryAttempts(): number {\n return this.config.retryAttempts;\n }\n\n getCustomHeaders(): Record<string, string> {\n return { ...this.config.customHeaders };\n }\n\n updateConfig(updates: Partial<SDKConfig>): void {\n if (updates.environment) {\n this.config.environment = updates.environment;\n this.config.apiUrl = this.getDefaultApiUrl(updates.environment);\n this.config.authUrl = this.getDefaultAuthUrl(updates.environment);\n }\n if (updates.debug !== undefined) {\n this.config.debug = updates.debug;\n }\n }\n}\n","import * as z from 'zod';\n\n// Enum options arrays\nexport const VAT_RATE_CODE_OPTIONS = [\n '4.00',\n '5.00',\n '10.00',\n '22.00',\n '2.00',\n '6.40',\n '7.00',\n '7.30',\n '7.50',\n '7.65',\n '7.95',\n '8.30',\n '8.50',\n '8.80',\n '9.50',\n '12.30',\n 'N1',\n 'N2',\n 'N3',\n 'N4',\n 'N5',\n 'N6',\n] as const;\n\nexport const GOOD_OR_SERVICE_OPTIONS = ['goods', 'service'] as const;\n\nexport const RECEIPT_PROOF_TYPE_OPTIONS = ['POS', 'VR', 'ND'] as const;\n\n// Enum types for receipt validation\nexport const VatRateCodeSchema = z.enum(VAT_RATE_CODE_OPTIONS);\n\nexport const GoodOrServiceSchema = z.enum(GOOD_OR_SERVICE_OPTIONS);\n\nexport const ReceiptProofTypeSchema = z.enum(RECEIPT_PROOF_TYPE_OPTIONS);\n\n// Receipt Item Schema\nexport const ReceiptItemSchema = z.object({\n type: GoodOrServiceSchema.optional(),\n quantity: z.string().min(1, { error: 'fieldIsRequired' }),\n description: z.string().min(1, { error: 'fieldIsRequired' }),\n unit_price: z.string().min(1, { error: 'fieldIsRequired' }),\n vat_rate_code: VatRateCodeSchema.optional(),\n simplified_vat_allocation: z.boolean().optional(),\n discount: z.string().nullable().optional(),\n is_down_payment_or_voucher_redemption: z.boolean().optional(),\n complimentary: z.boolean().optional(),\n});\n\n// Main Receipt Input Schema\nexport const ReceiptInputSchema = z\n .object({\n items: z.array(ReceiptItemSchema).min(1, { error: 'arrayMin1' }),\n customer_tax_code: z.string().optional(),\n customer_lottery_code: z.string().optional(),\n discount: z.string().nullable().optional(),\n invoice_issuing: z.boolean().optional(),\n uncollected_dcr_to_ssn: z.boolean().optional(),\n services_uncollected_amount: z.string().nullable().optional(),\n goods_uncollected_amount: z.string().nullable().optional(),\n cash_payment_amount: z.string().nullable().optional(),\n electronic_payment_amount: z.string().nullable().optional(),\n ticket_restaurant_payment_amount: z.string().nullable().optional(),\n ticket_restaurant_quantity: z.number().optional(),\n })\n .refine(\n (data) => {\n // At least one payment method should be provided\n const hasCashPayment = data.cash_payment_amount && parseFloat(data.cash_payment_amount) > 0;\n const hasElectronicPayment =\n data.electronic_payment_amount && parseFloat(data.electronic_payment_amount) > 0;\n const hasTicketPayment =\n data.ticket_restaurant_payment_amount &&\n parseFloat(data.ticket_restaurant_payment_amount) > 0;\n\n return hasCashPayment || hasElectronicPayment || hasTicketPayment;\n },\n {\n error: 'At least one payment method is required',\n path: ['payment_methods'],\n }\n )\n .refine(\n (data) => {\n // only one between customer_tax_code and customer_lottery_code can be provided\n return !data.customer_tax_code || !data.customer_lottery_code;\n },\n {\n error: 'Only one between customer_tax_code and customer_lottery_code can be provided',\n path: ['customer_tax_code', 'customer_lottery_code'],\n }\n );\n\n// Receipt Return or Void via PEM Schema\nexport const ReceiptReturnOrVoidViaPEMInputSchema = z.object({\n device_id: z.string().optional(),\n items: z.array(ReceiptItemSchema).min(1, { error: 'arrayMin1' }),\n document_number: z.string().min(1, { error: 'fieldIsRequired' }),\n document_datetime: z.string().optional(),\n lottery_code: z.string().optional(),\n});\n\n// Receipt Return or Void with Proof Schema\nexport const ReceiptReturnOrVoidWithProofInputSchema = z.object({\n items: z.array(ReceiptItemSchema).min(1, { error: 'arrayMin1' }),\n proof: ReceiptProofTypeSchema,\n document_datetime: z.string().min(1, { error: 'fieldIsRequired' }),\n});\n\n// Void Receipt Schema\nexport const VoidReceiptInputSchema = z.object({\n document_number: z.string().min(1, { error: 'fieldIsRequired' }),\n});\n\nexport const ReceiptReturnItemSchema = z\n .array(\n z.object({\n id: z.number(),\n quantity: z.string().min(1, { error: 'fieldIsRequired' }),\n })\n )\n .min(1, { error: 'arrayMin1' });\n\n// Receipt Return Schema\nexport const ReceiptReturnInputSchema = z.object({\n items: z.array(ReceiptReturnItemSchema).min(1, { error: 'arrayMin1' }),\n document_number: z.string().min(1, { error: 'fieldIsRequired' }),\n});\n\n// Type exports\nexport type ReceiptItemType = z.infer<typeof ReceiptItemSchema>;\nexport type ReceiptInputType = z.infer<typeof ReceiptInputSchema>;\nexport type ReceiptReturnOrVoidViaPEMInputType = z.infer<\n typeof ReceiptReturnOrVoidViaPEMInputSchema\n>;\nexport type ReceiptReturnOrVoidWithProofInputType = z.infer<\n typeof ReceiptReturnOrVoidWithProofInputSchema\n>;\nexport type VatRateCodeType = z.infer<typeof VatRateCodeSchema>;\nexport type GoodOrServiceType = z.infer<typeof GoodOrServiceSchema>;\nexport type ReceiptProofTypeType = z.infer<typeof ReceiptProofTypeSchema>;\nexport type ReceiptReturnType = z.infer<typeof ReceiptReturnInputSchema>;\nexport type ReceiptReturnItemType = z.infer<typeof ReceiptReturnItemSchema>;\nexport type VoidReceiptInputType = z.infer<typeof VoidReceiptInputSchema>;\n","import * as z from 'zod';\n\n// Cashier Create Input Schema (MF1)\nexport const CashierCreateInputSchema = z.object({\n email: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .max(255, { error: 'emailMaxLength' })\n .email({ error: 'invalidEmail' }),\n password: z\n .string()\n .min(8, { error: 'passwordMinLength' })\n .max(40, { error: 'passwordMaxLength' }),\n name: z.string().min(1, { error: 'fieldIsRequired' }).max(255, { error: 'nameMaxLength' }),\n display_name: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .max(255, { error: 'displayNameMaxLength' }),\n});\n\n// Type exports\nexport type CashierCreateInputType = z.infer<typeof CashierCreateInputSchema>;\n","import * as z from 'zod';\n\n// Enum options arrays\nexport const PEM_STATUS_OPTIONS = [\n 'NEW',\n 'REGISTERED',\n 'ACTIVATED',\n 'ONLINE',\n 'OFFLINE',\n 'DISCARDED',\n] as const;\n\n// Address Schema (reusable)\nexport const AddressSchema = z.object({\n street_address: z.string().min(1, { error: 'fieldIsRequired' }),\n street_number: z.string().min(1, { error: 'fieldIsRequired' }),\n zip_code: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .regex(/^\\d{5}$/, { error: 'invalidZipCode' }),\n city: z.string().min(1, { error: 'fieldIsRequired' }),\n province: z\n .string()\n .min(2, { error: 'provinceMinLength' })\n .max(2, { error: 'provinceMaxLength' })\n .toUpperCase(),\n});\n\n// PEM Status Schema\nexport const PEMStatusSchema = z.enum(PEM_STATUS_OPTIONS);\n\n// Activation Request Schema\nexport const ActivationRequestSchema = z.object({\n registration_key: z.string().min(1, { error: 'fieldIsRequired' }),\n});\n\n// PEM Status Offline Request Schema\nexport const PEMStatusOfflineRequestSchema = z.object({\n timestamp: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .refine((val) => !isNaN(Date.parse(val)), {\n error: 'invalidDateFormat',\n }),\n reason: z.string().min(1, { error: 'fieldIsRequired' }),\n});\n\n// Type exports\nexport type AddressType = z.infer<typeof AddressSchema>;\nexport type PEMStatusType = z.infer<typeof PEMStatusSchema>;\nexport type ActivationRequestType = z.infer<typeof ActivationRequestSchema>;\nexport type PEMStatusOfflineRequestType = z.infer<typeof PEMStatusOfflineRequestSchema>;\n","import * as z from 'zod';\n\n// Cash Register Create Schema\nexport const CashRegisterCreateSchema = z.object({\n pem_serial_number: z.string().min(1, { error: 'fieldIsRequired' }),\n name: z.string().min(1, { error: 'fieldIsRequired' }).max(100, { error: 'nameMaxLength' }),\n});\n\n// Type exports\nexport type CashRegisterCreateType = z.infer<typeof CashRegisterCreateSchema>;\n","import * as z from 'zod';\n\nimport { AddressSchema } from './point-of-sales';\n\n// VAT number validation regex (Partita IVA - 11 digits)\nconst VAT_NUMBER_REGEX = /^\\d{11}$/;\n\n// Fiscal code validation regex (Codice Fiscale - 11 digits only for merchants)\nconst FISCAL_CODE_REGEX = /^\\d{11}$/;\n\n// Password validation regex (from OpenAPI spec)\nconst PASSWORD_REGEX = /^((?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{10,}).*)$/;\n\n// Merchant Create Input Schema\nexport const MerchantCreateInputSchema = z\n .object({\n vat_number: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .regex(VAT_NUMBER_REGEX, { error: 'invalidVatNumber' }),\n fiscal_code: z.string().regex(FISCAL_CODE_REGEX, { error: 'invalidFiscalCode' }).optional(),\n business_name: z.string().max(200, { error: 'businessNameMaxLength' }).optional().nullable(),\n first_name: z.string().max(100, { error: 'firstNameMaxLength' }).optional().nullable(),\n last_name: z.string().max(100, { error: 'lastNameMaxLength' }).optional().nullable(),\n email: z.string().min(1, { error: 'fieldIsRequired' }).email({ error: 'invalidEmail' }),\n password: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .regex(PASSWORD_REGEX, { error: 'passwordComplexity' }),\n address: AddressSchema.optional(),\n })\n .refine(\n (data) => {\n const hasBusinessName = data.business_name && data.business_name.trim() !== '';\n const hasPersonalNames =\n (data.first_name && data.first_name.trim() !== '') ||\n (data.last_name && data.last_name.trim() !== '');\n\n // If business name is set, first/last name must not be provided\n if (hasBusinessName && hasPersonalNames) {\n return false;\n }\n\n // At least one naming method must be provided\n if (!hasBusinessName && !hasPersonalNames) {\n return false;\n }\n\n return true;\n },\n {\n error: 'businessNameOrPersonalNamesRequired',\n path: ['business_name'],\n }\n );\n\n// Merchant Update Input Schema\nexport const MerchantUpdateInputSchema = z.object({\n business_name: z.string().max(200, { error: 'businessNameMaxLength' }).optional().nullable(),\n first_name: z.string().max(100, { error: 'firstNameMaxLength' }).optional().nullable(),\n last_name: z.string().max(100, { error: 'lastNameMaxLength' }).optional().nullable(),\n address: AddressSchema.optional().nullable(),\n});\n\n// Type exports\nexport type MerchantCreateInputType = z.infer<typeof MerchantCreateInputSchema>;\nexport type MerchantUpdateInputType = z.infer<typeof MerchantUpdateInputSchema>;\n","import * as z from 'zod';\n\nimport { AddressSchema } from './point-of-sales';\n\n// Enum options arrays\nexport const PEM_TYPE_OPTIONS = ['AP', 'SP', 'TM', 'PV'] as const;\n\n// PEM Data Schema\nexport const PemDataSchema = z.object({\n version: z.string().min(1, { error: 'fieldIsRequired' }),\n type: z.enum(PEM_TYPE_OPTIONS, {\n error: 'invalidPemType',\n }),\n});\n\n// PEM Create Input Schema\nexport const PemCreateInputSchema = z.object({\n merchant_uuid: z.string().min(1, { error: 'fieldIsRequired' }).uuid({ error: 'invalidUuid' }),\n address: AddressSchema.optional(),\n /* external_pem_data: PemDataSchema.optional(), */\n});\n\n// Type exports\nexport type PemDataType = z.infer<typeof PemDataSchema>;\nexport type PemCreateInputType = z.infer<typeof PemCreateInputSchema>;\n","import * as z from 'zod';\n\nimport { AddressSchema } from './point-of-sales';\n\n// Italian Fiscal ID validation regex (Codice Fiscale for individuals or Partita IVA for companies)\nconst FISCAL_ID_REGEX =\n /^([A-Z]{6}[0-9LMNPQRSTUV]{2}[ABCDEHLMPRST][0-9LMNPQRSTUV]{2}[A-Z][0-9LMNPQRSTUV]{3}[A-Z]|[0-9]{11})$/;\n\n// Supplier Create Input Schema\nexport const SupplierCreateInputSchema = z.object({\n fiscal_id: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .regex(FISCAL_ID_REGEX, { error: 'invalidFiscalId' })\n .toUpperCase(),\n name: z.string().min(1, { error: 'fieldIsRequired' }).max(200, { error: 'nameMaxLength' }),\n address: AddressSchema.optional(),\n});\n\n// Supplier Update Input Schema\nexport const SupplierUpdateInputSchema = z.object({\n name: z.string().min(1, { error: 'fieldIsRequired' }).max(200, { error: 'nameMaxLength' }),\n address: AddressSchema.optional(),\n});\n\n// Type exports\nexport type SupplierCreateInputType = z.infer<typeof SupplierCreateInputSchema>;\nexport type SupplierUpdateInputType = z.infer<typeof SupplierUpdateInputSchema>;\n","import * as z from 'zod';\n\n// Journal Close Input Schema\nexport const JournalCloseInputSchema = z.object({\n closing_timestamp: z\n .string()\n .min(1, { error: 'fieldIsRequired' })\n .refine((val) => !isNaN(Date.parse(val)), {\n error: 'invalidDateFormat',\n }),\n reason: z.string().max(255, { error: 'reasonMaxLength' }).optional(),\n});\n\n// Type exports\nexport type JournalCloseInputType = z.infer<typeof JournalCloseInputSchema>;\n","import * as z from 'zod';\n\n// Daily Report Status Options\nexport const DAILY_REPORT_STATUS_OPTIONS = ['pending', 'sent', 'error'] as const;\n\n// Daily Report Status Schema\nexport const DailyReportStatusSchema = z.enum(DAILY_REPORT_STATUS_OPTIONS, {\n error: 'invalidDailyReportStatus',\n});\n\n// Daily Reports List Parameters Schema\nexport const DailyReportsParamsSchema = z.object({\n pem_serial_number: z.string().min(1, { error: 'fieldIsRequired' }).optional(),\n date_from: z\n .string()\n .refine((val) => !isNaN(Date.parse(val)), {\n error: 'invalidDateFormat',\n })\n .optional(),\n date_to: z\n .string()\n .refine((val) => !isNaN(Date.parse(val)), {\n error: 'invalidDateFormat',\n })\n .optional(),\n status: DailyReportStatusSchema.optional(),\n page: z.number().min(1, { error: 'pageMinValue' }).optional(),\n});\n\n// Type exports\nexport type DailyReportStatusType = z.infer<typeof DailyReportStatusSchema>;\nexport type DailyReportsParamsType = z.infer<typeof DailyReportsParamsSchema>;\n","import * as z from 'zod';\n\nexport const NotificationScopeSchema = z.object({\n type: z.literal('global'),\n});\n\nexport const PemStatusSchema = z.enum(['ONLINE', 'OFFLINE']);\n\nexport const NotificationDataBlockAtSchema = z.object({\n block_at: z.string(),\n});\n\nexport const NotificationDataPemStatusSchema = z.object({\n from: PemStatusSchema,\n to: PemStatusSchema,\n});\n\nconst NotificationBaseSchema = z.object({\n uuid: z.string().uuid({ error: 'invalidUuid' }),\n scope: NotificationScopeSchema,\n source: z.enum(['system', 'Italian Tax Authority']),\n level: z.enum(['info', 'warning', 'error', 'critical']),\n created_at: z.string(),\n});\n\nexport const NotificationMf2UnreachableSchema = NotificationBaseSchema.extend({\n type: z.literal('INTERNAL_COMMUNICATION_FAILURE'),\n code: z.literal('SYS-W-01'),\n data: NotificationDataBlockAtSchema,\n});\n\nexport const NotificationPemsBlockedSchema = NotificationBaseSchema.extend({\n type: z.literal('PEM_STATUS_CHANGED'),\n code: z.literal('SYS-C-01'),\n data: NotificationDataPemStatusSchema,\n});\n\nexport const NotificationPemBackOnlineSchema = NotificationBaseSchema.extend({\n type: z.literal('PEM_STATUS_CHANGED'),\n code: z.literal('SYS-I-01'),\n data: NotificationDataPemStatusSchema,\n});\n\nexport const NotificationSchema = z.discriminatedUnion('code', [\n NotificationMf2UnreachableSchema,\n NotificationPemsBlockedSchema,\n NotificationPemBackOnlineSchema,\n]);\n\nexport const NotificationListResponseSchema = z.object({\n members: z.array(NotificationSchema),\n});\n\nexport type NotificationSchemaType = z.infer<typeof NotificationSchema>;\nexport type NotificationListResponseSchemaType = z.infer<typeof NotificationListResponseSchema>;\n","import * as z from 'zod';\n\nexport const TelemetryMerchantSchema = z.object({\n vat_number: z.string(),\n fiscal_code: z.string().nullable(),\n business_name: z.string(),\n});\n\nexport const TelemetrySupplierSchema = z.object({\n vat_number: z.string(),\n fiscal_code: z.string().nullable(),\n business_name: z.string(),\n});\n\nexport const TelemetrySoftwareVersionSchema = z.object({\n version: z.string(),\n swid: z.string(),\n installed_at: z.string(),\n status: z.enum(['active', 'inactive', 'archived']),\n});\n\nexport const TelemetrySoftwareSchema = z.object({\n code: z.string(),\n name: z.string(),\n approval_reference: z.string(),\n version_info: TelemetrySoftwareVersionSchema,\n});\n\nexport const PendingReceiptsSchema = z.object({\n count: z.number().int().nonnegative(),\n total_amount: z.string(),\n});\n\nexport const TransmissionSchema = z.object({\n attempted_at: z.string(),\n outcome: z.enum(['success', 'failed', 'pending']),\n});\n\nexport const MessageSchema = z.object({\n received_at: z.string(),\n content: z.string(),\n});\n\nexport const LotterySecretRequestSchema = z.object({\n requested_at: z.string(),\n outcome: z.enum(['success', 'failed', 'pending']),\n});\n\nexport const LotterySchema = z.object({\n last_transmission: TransmissionSchema,\n secret_request: LotterySecretRequestSchema,\n});\n\nexport const TelemetrySchema = z.object({\n pem_id: z.string(),\n pem_status: z.enum(['ONLINE', 'OFFLINE', 'ERROR']),\n pem_status_changed_at: z.string(),\n merchant: TelemetryMerchantSchema,\n supplier: TelemetrySupplierSchema,\n software: TelemetrySoftwareSchema,\n last_communication_at: z.string(),\n pending_receipts: PendingReceiptsSchema,\n last_receipt_transmission: TransmissionSchema,\n last_message_from_mf2: MessageSchema,\n ade_corrispettivi_transmission: TransmissionSchema,\n last_message_from_ade: MessageSchema,\n lottery: LotterySchema,\n});\n\nexport type TelemetrySchemaType = z.infer<typeof TelemetrySchema>;\n","/**\n * Zod validation schemas for ACube E-Receipt API\n *\n * This module exports all validation schemas and types for API input DTOs.\n * Use these schemas to validate user input before sending requests to the API.\n *\n * @example\n * ```typescript\n * import { ReceiptInputSchema, ReceiptInputType } from '@/validations/api';\n *\n * // Validate input data\n * const result = ReceiptInputSchema.safeParse(userInput);\n * if (!result.success) {\n * console.error('Validation errors:', result.error.errors);\n * } else {\n * // Use validated data\n * const validatedData: ReceiptInputType = result.data;\n * }\n * ```\n */\nimport * as z from 'zod';\n\n// Receipt schemas and types\nexport {\n ReceiptItemSchema,\n ReceiptInputSchema,\n ReceiptReturnOrVoidViaPEMInputSchema,\n ReceiptReturnOrVoidWithProofInputSchema,\n ReceiptReturnInputSchema,\n VoidReceiptInputSchema,\n ReceiptReturnItemSchema,\n VatRateCodeSchema,\n GoodOrServiceSchema,\n ReceiptProofTypeSchema,\n VAT_RATE_CODE_OPTIONS,\n GOOD_OR_SERVICE_OPTIONS,\n RECEIPT_PROOF_TYPE_OPTIONS,\n type ReceiptItemType,\n type ReceiptInputType,\n type ReceiptReturnOrVoidViaPEMInputType,\n type ReceiptReturnOrVoidWithProofInputType,\n type VatRateCodeType,\n type GoodOrServiceType,\n type ReceiptProofTypeType,\n type ReceiptReturnType,\n type ReceiptReturnItemType,\n type VoidReceiptInputType,\n} from './receipts';\n\n// Cashier schemas and types\nexport { CashierCreateInputSchema, type CashierCreateInputType } from './cashiers';\n\n// Point of Sales schemas and types\nexport {\n AddressSchema,\n PEMStatusSchema,\n ActivationRequestSchema,\n PEMStatusOfflineRequestSchema,\n PEM_STATUS_OPTIONS,\n type AddressType,\n type PEMStatusType,\n type ActivationRequestType,\n type PEMStatusOfflineRequestType,\n} from './point-of-sales';\n\n// Cash Register schemas and types\nexport { CashRegisterCreateSchema, type CashRegisterCreateType } from './cash-registers';\n\n// Merchant schemas and types\nexport {\n MerchantCreateInputSchema,\n MerchantUpdateInputSchema,\n type MerchantCreateInputType,\n type MerchantUpdateInputType,\n} from './merchants';\n\n// PEM schemas and types\nexport {\n PemDataSchema,\n PemCreateInputSchema,\n PEM_TYPE_OPTIONS,\n type PemDataType,\n type PemCreateInputType,\n} from './pems';\n\n// Supplier schemas and types\nexport {\n SupplierCreateInputSchema,\n SupplierUpdateInputSchema,\n type SupplierCreateInputType,\n type SupplierUpdateInputType,\n} from './suppliers';\n\n// Journal schemas and types\nexport { JournalCloseInputSchema, type JournalCloseInputType } from './journals';\n\n// Daily Reports schemas and types\nexport {\n DailyReportStatusSchema,\n DailyReportsParamsSchema,\n DAILY_REPORT_STATUS_OPTIONS,\n type DailyReportStatusType,\n type DailyReportsParamsType,\n} from './daily-reports';\n\n// Notification schemas and types\nexport {\n NotificationSchema,\n NotificationScopeSchema,\n NotificationListResponseSchema,\n NotificationMf2UnreachableSchema,\n NotificationPemsBlockedSchema,\n NotificationPemBackOnlineSchema,\n NotificationDataBlockAtSchema,\n NotificationDataPemStatusSchema,\n PemStatusSchema,\n type NotificationSchemaType,\n type NotificationListResponseSchemaType,\n} from './notifications';\n\n// Telemetry schemas and types\nexport {\n TelemetrySchema,\n TelemetryMerchantSchema,\n TelemetrySupplierSchema,\n TelemetrySoftwareSchema,\n TelemetrySoftwareVersionSchema,\n PendingReceiptsSchema,\n TransmissionSchema,\n MessageSchema,\n LotterySchema,\n LotterySecretRequestSchema,\n type TelemetrySchemaType,\n} from './telemetry';\n\n// Common validation utilities\nexport const ValidationMessages = {\n fieldIsRequired: 'This field is required',\n arrayMin1: 'At least one item is required',\n paymentMethodRequired: 'At least one payment method is required',\n invalidEmail: 'Please enter a valid email address',\n passwordMinLength: 'Password must be at least 8 characters long',\n passwordComplexity:\n 'Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character',\n invalidZipCode: 'Please enter a valid 5-digit zip code',\n provinceMinLength: 'Province code must be 2 characters',\n provinceMaxLength: 'Province code must be 2 characters',\n invalidDateFormat: 'Please enter a valid date',\n nameMaxLength: 'Name is too long',\n invalidFiscalId: 'Please enter a valid Italian fiscal ID (Codice Fiscale or Partita IVA)',\n invalidVatNumber: 'Please enter a valid VAT number (11 digits)',\n invalidFiscalCode: 'Please enter a valid fiscal code (11 digits)',\n businessNameMaxLength: 'Business name is too long (max 200 characters)',\n businessNameOrPersonalNamesRequired:\n 'Please provide either a business name or first/last name, but not both',\n firstNameMaxLength: 'First name is too long (max 100 characters)',\n lastNameMaxLength: 'Last name is too long (max 100 characters)',\n invalidUuid: 'Please enter a valid UUID',\n invalidPemType: 'PEM type must be one of: AP, SP, TM, PV',\n reasonMaxLength: 'Reason is too long (max 255 characters)',\n pageMinValue: 'Page number must be at least 1',\n invalidDailyReportStatus: 'Daily report status must be one of: pending, sent, error',\n displayNameMaxLength: 'Display name is too long (max 255 characters)',\n} as const;\n\n// Validation helper functions\nexport const validateInput = <T>(schema: z.ZodSchema<T>, data: unknown) => {\n const result = schema.safeParse(data);\n\n if (!result.success) {\n const errors = result.error.issues.map((error) => ({\n field: error.path.join('.'),\n message: error.message,\n code: error.code,\n }));\n\n return {\n success: false,\n errors,\n data: null,\n };\n }\n\n return {\n success: true,\n errors: [],\n data: result.data,\n };\n};\n\n// Type-safe validation result\nexport interface ValidationResult<T> {\n success: boolean;\n errors: Array<{\n field: string;\n message: string;\n code: string;\n }>;\n data: T | null;\n}\n","import type { UserRoles } from '@/domain/value-objects';\n\nexport type Environment = 'production' | 'development' | 'sandbox';\n\nexport interface CertificateConfig {\n storagePrefix?: string;\n metadataKey?: string;\n}\n\nexport interface SDKConfig {\n environment: Environment;\n debug?: boolean;\n}\n\nexport interface AuthCredentials {\n email: string;\n password: string;\n}\n\nexport interface TokenResponse {\n token: string;\n}\n\nexport interface JWTPayload {\n iat: number;\n exp: number;\n roles: Record<string, string[]>;\n username: string;\n uid: number;\n fid: string;\n pid: string | null;\n}\n\nexport interface StoredTokenData {\n accessToken: string;\n expiresAt: number;\n}\n\nexport interface User {\n id: string;\n email: string;\n username: string;\n roles: UserRoles;\n fid: string;\n pid: string | null;\n expiresAt: number;\n}\n\nexport interface IUserProvider {\n getCurrentUser(): Promise<User | null>;\n isAuthenticated(): Promise<boolean>;\n getAccessToken(): Promise<string | null>;\n}\n\nexport interface APIViolation {\n propertyPath: string;\n message: string;\n}\n\nexport interface APIError {\n type: string;\n title: string;\n status: number;\n detail: string;\n instance?: string;\n violations?: APIViolation[];\n}\n\nexport type SDKError =\n | 'NETWORK_ERROR'\n | 'AUTH_ERROR'\n | 'VALIDATION_ERROR'\n | 'NOT_FOUND_ERROR'\n | 'FORBIDDEN_ERROR'\n | 'UNKNOWN_ERROR'\n | 'STORAGE_CERTIFICATE_ERROR'\n | 'CERTIFICATE_MANAGER_NOT_INITIALIZED'\n | 'SDK_INITIALIZATION_ERROR'\n | 'SDK_NOT_INITIALIZED'\n | 'SDK_ALREADY_CONFIGURED'\n | 'SDK_NOT_CONFIGURED'\n | 'ADAPTERS_NOT_AVAILABLE'\n | 'API_CLIENT_NOT_INITIALIZED'\n | 'MTLS_ADAPTER_NOT_AVAILABLE'\n | 'CERTIFICATE_INFO_ERROR';\n\nexport class ACubeSDKError extends Error {\n public violations?: APIViolation[];\n\n constructor(\n public type: SDKError,\n message: string,\n public originalError?: unknown,\n public statusCode?: number,\n violations?: APIViolation[]\n ) {\n super(message);\n this.name = 'ACubeSDKError';\n this.violations = violations;\n }\n}\n","import { AuthConfig, AuthMode } from '@/application/ports/driven/auth-handler.port';\nimport { IMTLSPort } from '@/application/ports/driven/mtls.port';\nimport { UserRoles, hasRole } from '@/domain/value-objects';\nimport { createPrefixedLogger } from '@/shared';\n\nimport { JwtAuthHandler } from './jwt-auth.handler';\nimport { MtlsAuthHandler } from './mtls-auth.handler';\n\nconst log = createPrefixedLogger('AUTH-STRATEGY');\n\nexport interface IUserProvider {\n getCurrentUser(): Promise<{ roles: UserRoles } | null>;\n getAccessToken(): Promise<string | null>;\n}\n\nexport class AuthStrategy {\n constructor(\n private readonly jwtHandler: JwtAuthHandler,\n private readonly mtlsHandler: MtlsAuthHandler,\n private readonly userProvider: IUserProvider | null,\n private readonly mtlsAdapter: IMTLSPort | null\n ) {}\n\n async determineAuthConfig(\n url: string,\n method: string,\n explicitMode?: AuthMode\n ): Promise<AuthConfig> {\n if (this.isNotificationEndpoint(url) || this.isTelemetryEndpoint(url)) {\n return { mode: 'mtls', usePort444: true };\n }\n\n const platform = this.detectPlatform();\n const userRole = await this.getUserRole();\n const isReceiptEndpoint = this.isReceiptEndpoint(url);\n\n log.debug('Determining auth config', {\n url,\n method,\n platform,\n userRole,\n isReceiptEndpoint,\n explicitMode,\n });\n\n if (userRole === 'SUPPLIER') {\n return { mode: 'jwt', usePort444: false };\n }\n\n if (userRole === 'CASHIER') {\n if (!isReceiptEndpoint) {\n return { mode: 'jwt', usePort444: false };\n }\n if (platform === 'mobile') {\n return { mode: 'mtls', usePort444: true };\n }\n return { mode: 'jwt', usePort444: true };\n }\n\n if (userRole === 'MERCHANT') {\n if (!isReceiptEndpoint) {\n return { mode: 'jwt', usePort444: false };\n }\n\n if (this.isReturnableItemsEndpoint(url)) {\n return { mode: 'mtls', usePort444: true };\n }\n\n if (method === 'GET') {\n if (this.isDetailedReceiptEndpoint(url)) {\n if (platform === 'mobile') {\n return { mode: 'mtls', usePort444: true };\n }\n return { mode: 'jwt', usePort444: true };\n }\n return { mode: 'jwt', usePort444: false };\n }\n\n if (['POST', 'PUT', 'PATCH', 'DELETE'].includes(method)) {\n if (platform === 'mobile') {\n return { mode: 'mtls', usePort444: true };\n }\n return { mode: 'jwt', usePort444: true };\n }\n\n return { mode: 'jwt', usePort444: false };\n }\n\n if (explicitMode) {\n if (userRole === 'SUPPLIER' && explicitMode === 'mtls') {\n return { mode: 'jwt', usePort444: false };\n }\n return {\n mode: explicitMode,\n usePort444: explicitMode === 'mtls' || (platform === 'web' && isReceiptEndpoint),\n };\n }\n\n if (platform === 'web') {\n return { mode: 'jwt', usePort444: isReceiptEndpoint };\n }\n\n if (isReceiptEndpoint && platform === 'mobile') {\n return { mode: 'mtls', usePort444: true };\n }\n\n return { mode: 'jwt', usePort444: false };\n }\n\n async getAuthHeaders(): Promise<Record<string, string>> {\n return this.jwtHandler.getAuthHeaders();\n }\n\n getMtlsHandler(): MtlsAuthHandler {\n return this.mtlsHandler;\n }\n\n getJwtHandler(): JwtAuthHandler {\n return this.jwtHandler;\n }\n\n private detectPlatform(): 'web' | 'mobile' {\n if (!this.mtlsAdapter) {\n return 'web';\n }\n const platformInfo = this.mtlsAdapter.getPlatformInfo();\n return platformInfo.platform === 'web' ? 'web' : 'mobile';\n }\n\n private async getUserRole(): Promise<'SUPPLIER' | 'MERCHANT' | 'CASHIER' | null> {\n if (!this.userProvider) {\n return null;\n }\n const user = await this.userProvider.getCurrentUser();\n if (!user || !user.roles) {\n return null;\n }\n if (hasRole(user.roles, 'ROLE_SUPPLIER')) {\n return 'SUPPLIER';\n }\n if (hasRole(user.roles, 'ROLE_MERCHANT')) {\n return 'MERCHANT';\n }\n if (hasRole(user.roles, 'ROLE_CASHIER')) {\n return 'CASHIER';\n }\n return null;\n }\n\n private isReceiptEndpoint(url: string): boolean {\n return url.includes('/receipts') || url.includes('/mf1/receipts');\n }\n\n private isReturnableItemsEndpoint(url: string): boolean {\n return !!(\n url.match(/\\/receipts\\/[a-f0-9-]+\\/returnable-items$/) ||\n url.match(/\\/mf1\\/receipts\\/[a-f0-9-]+\\/returnable-items$/)\n );\n }\n\n private isDetailedReceiptEndpoint(url: string): boolean {\n return !!(\n url.match(/\\/receipts\\/[a-f0-9-]+\\/details$/) ||\n url.match(/\\/mf1\\/receipts\\/[a-f0-9-]+\\/details$/)\n );\n }\n\n private isNotificationEndpoint(url: string): boolean {\n return url.includes('/mf1/notifications');\n }\n\n private isTelemetryEndpoint(url: string): boolean {\n return !!url.match(/\\/mf1\\/pems\\/[^/]+\\/telemetry/);\n }\n}\n","import { AuthConfig, IAuthHandler } from '@/application/ports/driven/auth-handler.port';\nimport { ITokenStoragePort } from '@/application/ports/driven/token-storage.port';\n\nexport class JwtAuthHandler implements IAuthHandler {\n constructor(private readonly tokenStorage: ITokenStoragePort) {}\n\n async getAuthConfig(_url: string, _method: string): Promise<AuthConfig> {\n return { mode: 'jwt', usePort444: false };\n }\n\n async getAuthHeaders(): Promise<Record<string, string>> {\n const token = await this.tokenStorage.getAccessToken();\n if (!token) {\n return {};\n }\n return { Authorization: `Bearer ${token}` };\n }\n}\n","import { AuthConfig, IAuthHandler } from '@/application/ports/driven/auth-handler.port';\nimport { ICertificatePort, StoredCertificate } from '@/application/ports/driven/certificate.port';\nimport {\n CertificateData,\n IMTLSPort,\n MTLSRequestConfig,\n MTLSResponse,\n} from '@/application/ports/driven/mtls.port';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('MTLS-HANDLER');\n\nexport class MtlsAuthHandler implements IAuthHandler {\n private pendingRequests = new Map<string, Promise<unknown>>();\n\n constructor(\n private readonly mtlsAdapter: IMTLSPort | null,\n private readonly certificatePort: ICertificatePort | null\n ) {}\n\n async getAuthConfig(_url: string, _method: string): Promise<AuthConfig> {\n return { mode: 'mtls', usePort444: true };\n }\n\n async getAuthHeaders(): Promise<Record<string, string>> {\n return {};\n }\n\n async isMtlsReady(): Promise<boolean> {\n if (!this.mtlsAdapter || !this.certificatePort) {\n return false;\n }\n return this.certificatePort.hasCertificate();\n }\n\n async getCertificate(): Promise<StoredCertificate | null> {\n if (!this.certificatePort) {\n return null;\n }\n return this.certificatePort.getCertificate();\n }\n\n private generateRequestKey(\n url: string,\n config: { method?: string; data?: unknown },\n jwtToken?: string\n ): string {\n const method = config.method || 'GET';\n const dataHash = config.data ? JSON.stringify(config.data) : '';\n const authHash = jwtToken ? jwtToken.substring(0, 10) : 'no-auth';\n return `${method}:${url}:${dataHash}:${authHash}`;\n }\n\n private constructMtlsUrl(relativePath: string): string {\n const baseUrl = this.getBaseUrl();\n if (!baseUrl) {\n throw new Error('mTLS adapter base URL not configured');\n }\n const cleanPath = relativePath.startsWith('/') ? relativePath.substring(1) : relativePath;\n return baseUrl.endsWith('/') ? `${baseUrl}${cleanPath}` : `${baseUrl}/${cleanPath}`;\n }\n\n async makeRequest<T>(\n url: string,\n config: {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n data?: unknown;\n headers?: Record<string, string>;\n timeout?: number;\n responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';\n },\n jwtToken?: string\n ): Promise<T> {\n const requestKey = this.generateRequestKey(url, config, jwtToken);\n\n if (this.pendingRequests.has(requestKey)) {\n log.debug('Deduplicating concurrent request:', url);\n return this.pendingRequests.get(requestKey) as Promise<T>;\n }\n\n const requestPromise = this.executeRequest<T>(url, config, jwtToken, false);\n this.pendingRequests.set(requestKey, requestPromise);\n\n requestPromise.finally(() => {\n this.pendingRequests.delete(requestKey);\n });\n\n return requestPromise;\n }\n\n private async executeRequest<T>(\n url: string,\n config: {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n data?: unknown;\n headers?: Record<string, string>;\n timeout?: number;\n responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';\n },\n jwtToken?: string,\n isRetryAttempt: boolean = false\n ): Promise<T> {\n if (!this.mtlsAdapter) {\n throw new Error('mTLS adapter not available');\n }\n\n const certificate = await this.getCertificate();\n if (!certificate) {\n throw new Error('No certificate available for mTLS request');\n }\n\n const headers: Record<string, string> = {\n ...(config.method !== 'GET' && config.data ? { 'Content-Type': 'application/json' } : {}),\n ...(config.headers || {}),\n };\n\n if (jwtToken) {\n headers['Authorization'] = `Bearer ${jwtToken}`;\n log.debug('JWT token present:', jwtToken.substring(0, 20) + '...');\n } else {\n log.warn('No JWT token provided for mTLS request');\n }\n\n const fullUrl = this.constructMtlsUrl(url);\n\n const mtlsConfig: MTLSRequestConfig = {\n url: fullUrl,\n method: config.method,\n headers,\n data: config.data,\n timeout: config.timeout,\n responseType: config.responseType,\n };\n\n log.debug('header-mtls', headers);\n log.debug(`${config.method} ${fullUrl}`);\n if (config.data) {\n log.debug('Request body:', config.data);\n }\n\n try {\n const response: MTLSResponse<T> = await this.mtlsAdapter.request<T>(mtlsConfig);\n log.debug(`Response ${response.status} from ${fullUrl}`);\n if (response.data) {\n log.debug('Response body:', response.data);\n }\n return response.data;\n } catch (error) {\n log.error(`Response error from ${fullUrl}:`, error);\n if (error && typeof error === 'object' && 'response' in error) {\n const axiosError = error as { response?: { data?: unknown; status?: number } };\n if (axiosError.response?.data) {\n log.error('Response body:', axiosError.response.data);\n }\n }\n\n if (isRetryAttempt) {\n throw error;\n }\n\n const shouldRetry = this.shouldRetryRequest(error);\n if (!shouldRetry) {\n throw error;\n }\n\n log.debug('Request failed, reconfiguring certificate and retrying...');\n\n try {\n await this.configureCertificate(certificate);\n return await this.executeRequest<T>(url, config, jwtToken, true);\n } catch {\n throw error;\n }\n }\n }\n\n private shouldRetryRequest(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return (\n message.includes('certificate') ||\n message.includes('ssl') ||\n message.includes('tls') ||\n message.includes('handshake')\n );\n }\n return false;\n }\n\n async configureCertificate(certificate: StoredCertificate): Promise<void> {\n if (!this.mtlsAdapter) {\n throw new Error('mTLS adapter not available');\n }\n\n const certificateData: CertificateData = {\n certificate: certificate.certificate,\n privateKey: certificate.privateKey,\n format: certificate.format.toUpperCase() as 'PEM' | 'P12',\n };\n\n await this.mtlsAdapter.configureCertificate(certificateData);\n }\n\n async storeCertificate(\n certificate: string,\n privateKey: string,\n options: { format?: 'pem' | 'p12' | 'pkcs12' } = {}\n ): Promise<void> {\n if (!this.certificatePort) {\n throw new Error('Certificate port not available');\n }\n\n if (this.mtlsAdapter) {\n try {\n await this.mtlsAdapter.removeCertificate();\n } catch {\n // No existing certificate to remove\n }\n }\n\n const format = (options.format || 'pem') as 'pem' | 'p12';\n await this.certificatePort.storeCertificate(certificate, privateKey, format);\n\n if (this.mtlsAdapter) {\n const certificateData: CertificateData = {\n certificate,\n privateKey,\n format: format.toUpperCase() as 'PEM' | 'P12',\n };\n await this.mtlsAdapter.configureCertificate(certificateData);\n }\n }\n\n async clearCertificate(): Promise<void> {\n if (this.mtlsAdapter) {\n try {\n await this.mtlsAdapter.removeCertificate();\n } catch {\n // No certificate to remove\n }\n }\n\n if (this.certificatePort) {\n await this.certificatePort.clearCertificate();\n }\n }\n\n async testConnection(): Promise<boolean> {\n if (!this.mtlsAdapter) {\n return false;\n }\n return this.mtlsAdapter.testConnection();\n }\n\n getBaseUrl(): string | null {\n if (!this.mtlsAdapter) {\n return null;\n }\n return this.mtlsAdapter.getBaseUrl();\n }\n\n async getStatus() {\n const status = {\n adapterAvailable: !!this.mtlsAdapter,\n certificatePortAvailable: !!this.certificatePort,\n isReady: false,\n hasCertificate: false,\n certificateInfo: null as { format: string } | null,\n platformInfo: this.mtlsAdapter?.getPlatformInfo() || null,\n pendingRequestsCount: this.pendingRequests.size,\n };\n\n if (this.certificatePort) {\n try {\n status.hasCertificate = await this.certificatePort.hasCertificate();\n if (status.hasCertificate) {\n status.certificateInfo = await this.certificatePort.getCertificateInfo();\n }\n } catch {\n // Ignore errors\n }\n }\n\n status.isReady = await this.isMtlsReady();\n return status;\n }\n\n clearPendingRequests(): void {\n this.pendingRequests.clear();\n }\n}\n","import { ISecureStoragePort, IStoragePort } from '@/application/ports/driven';\n\n/**\n * Base interface for storage adapters that implement get/set/remove\n */\ninterface StorageBase {\n get(key: string): Promise<string | null>;\n set(key: string, value: string): Promise<void>;\n remove(key: string): Promise<void>;\n}\n\n/**\n * Mixin that adds multiGet, multiSet, multiRemove to any storage adapter\n * Eliminates duplicate code across Node, Web, and React Native adapters\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function withMultiOperations<T extends new (...args: any[]) => StorageBase>(Base: T) {\n return class extends Base {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(...args: any[]) {\n super(...args);\n }\n\n async multiGet(keys: string[]): Promise<Record<string, string | null>> {\n const result: Record<string, string | null> = {};\n for (const key of keys) {\n result[key] = await this.get(key);\n }\n return result;\n }\n\n async multiSet(items: Record<string, string>): Promise<void> {\n for (const [key, value] of Object.entries(items)) {\n await this.set(key, value);\n }\n }\n\n async multiRemove(keys: string[]): Promise<void> {\n for (const key of keys) {\n await this.remove(key);\n }\n }\n };\n}\n\n/**\n * Abstract base class for standard storage adapters\n * Implements multi-operations, subclasses implement core operations\n */\nexport abstract class BaseStorageAdapter implements IStoragePort {\n abstract get(key: string): Promise<string | null>;\n abstract set(key: string, value: string): Promise<void>;\n abstract remove(key: string): Promise<void>;\n abstract clear(): Promise<void>;\n abstract getAllKeys(): Promise<string[]>;\n\n async multiGet(keys: string[]): Promise<Record<string, string | null>> {\n const result: Record<string, string | null> = {};\n for (const key of keys) {\n result[key] = await this.get(key);\n }\n return result;\n }\n\n async multiSet(items: Record<string, string>): Promise<void> {\n for (const [key, value] of Object.entries(items)) {\n await this.set(key, value);\n }\n }\n\n async multiRemove(keys: string[]): Promise<void> {\n for (const key of keys) {\n await this.remove(key);\n }\n }\n}\n\n/**\n * Abstract base class for secure storage adapters\n * Implements multi-operations, subclasses implement core operations\n */\nexport abstract class BaseSecureStorageAdapter implements ISecureStoragePort {\n abstract get(key: string): Promise<string | null>;\n abstract set(key: string, value: string): Promise<void>;\n abstract remove(key: string): Promise<void>;\n abstract clear(): Promise<void>;\n abstract getAllKeys(): Promise<string[]>;\n abstract isAvailable(): Promise<boolean>;\n abstract getSecurityLevel(): Promise<string>;\n\n async multiGet(keys: string[]): Promise<Record<string, string | null>> {\n const result: Record<string, string | null> = {};\n for (const key of keys) {\n result[key] = await this.get(key);\n }\n return result;\n }\n\n async multiSet(items: Record<string, string>): Promise<void> {\n for (const [key, value] of Object.entries(items)) {\n await this.set(key, value);\n }\n }\n\n async multiRemove(keys: string[]): Promise<void> {\n for (const key of keys) {\n await this.remove(key);\n }\n }\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\n\nimport { INetworkPort, NetworkInfo, NetworkStatus } from '@/application/ports/driven';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('NETWORK-BASE');\n\nexport abstract class NetworkBase implements INetworkPort {\n protected readonly statusSubject: BehaviorSubject<NetworkStatus>;\n protected readonly destroy$ = new Subject<void>();\n protected readonly debounceMs: number;\n\n constructor(initialOnline: boolean = true, debounceMs: number = 300) {\n this.debounceMs = debounceMs;\n this.statusSubject = new BehaviorSubject<NetworkStatus>({\n online: initialOnline,\n timestamp: Date.now(),\n });\n }\n\n get status$(): Observable<NetworkStatus> {\n return this.statusSubject.asObservable().pipe(\n debounceTime(this.debounceMs),\n distinctUntilChanged((prev, curr) => prev.online === curr.online),\n takeUntil(this.destroy$)\n );\n }\n\n get online$(): Observable<boolean> {\n return this.status$.pipe(\n map((status) => status.online),\n distinctUntilChanged()\n );\n }\n\n abstract getNetworkInfo(): Promise<NetworkInfo | null>;\n\n protected updateStatus(online: boolean): void {\n const current = this.statusSubject.getValue();\n if (current.online !== online) {\n this.statusSubject.next({ online, timestamp: Date.now() });\n log.debug(`Network status changed: ${online ? 'online' : 'offline'}`);\n }\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.statusSubject.complete();\n log.debug('Network monitor destroyed');\n }\n}\n","import { BaseSecureStorageAdapter, BaseStorageAdapter } from '../shared';\n\n/**\n * Node.js storage adapter using in-memory storage (for testing)\n */\nexport class NodeStorageAdapter extends BaseStorageAdapter {\n private storage: Map<string, string> = new Map();\n\n async get(key: string): Promise<string | null> {\n return this.storage.get(key) || null;\n }\n\n async set(key: string, value: string): Promise<void> {\n this.storage.set(key, value);\n }\n\n async remove(key: string): Promise<void> {\n this.storage.delete(key);\n }\n\n async clear(): Promise<void> {\n this.storage.clear();\n }\n\n async getAllKeys(): Promise<string[]> {\n return Array.from(this.storage.keys());\n }\n}\n\n/**\n * Node.js secure storage adapter using in-memory storage (for testing)\n * In production, this should use OS-specific secure storage\n */\nexport class NodeSecureStorageAdapter extends BaseSecureStorageAdapter {\n private secureStorage: Map<string, string> = new Map();\n\n async get(key: string): Promise<string | null> {\n return this.secureStorage.get(key) || null;\n }\n\n async set(key: string, value: string): Promise<void> {\n this.secureStorage.set(key, value);\n }\n\n async remove(key: string): Promise<void> {\n this.secureStorage.delete(key);\n }\n\n async clear(): Promise<void> {\n this.secureStorage.clear();\n }\n\n async getAllKeys(): Promise<string[]> {\n return Array.from(this.secureStorage.keys());\n }\n\n async isAvailable(): Promise<boolean> {\n return true;\n }\n\n async getSecurityLevel(): Promise<string> {\n return 'In-memory storage (testing only - not secure)';\n }\n}\n","import { IStoragePort as IStorage } from '@/application/ports/driven';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nimport { BaseSecureStorageAdapter } from '../shared';\n\nconst log = createPrefixedLogger('RN-STORAGE');\n\n/**\n * Interfaces for React Native storage dependencies\n */\ninterface AsyncStorageInterface {\n getItem(key: string): Promise<string | null>;\n setItem(key: string, value: string): Promise<void>;\n removeItem(key: string): Promise<void>;\n clear(): Promise<void>;\n getAllKeys(): Promise<string[]>;\n multiGet(keys: string[]): Promise<[string, string | null][]>;\n multiSet(pairs: [string, string][]): Promise<void>;\n multiRemove(keys: string[]): Promise<void>;\n}\n\ninterface ExpoSecureStoreInterface {\n getItemAsync(key: string): Promise<string | null>;\n setItemAsync(key: string, value: string): Promise<void>;\n deleteItemAsync(key: string): Promise<void>;\n}\n\ninterface KeychainCredentials {\n password: string;\n username: string;\n service: string;\n}\n\ninterface KeychainInterface {\n getInternetCredentials(server: string): Promise<KeychainCredentials | false>;\n setInternetCredentials(server: string, username: string, password: string): Promise<void>;\n resetInternetCredentials(server: string): Promise<void>;\n}\n\n/**\n * React Native storage adapter using AsyncStorage\n * Note: Uses native batch operations for better performance (not base class)\n */\nexport class ReactNativeStorageAdapter implements IStorage {\n private AsyncStorage: AsyncStorageInterface | null = null;\n\n constructor() {\n this.initializeAsyncStorage();\n }\n\n private async initializeAsyncStorage() {\n try {\n const AsyncStorageModule = require('@react-native-async-storage/async-storage');\n this.AsyncStorage = AsyncStorageModule.default || AsyncStorageModule;\n } catch {\n try {\n const ReactNative = require('react-native');\n this.AsyncStorage = ReactNative.AsyncStorage;\n } catch {\n throw new Error(\n 'AsyncStorage not available. Please install @react-native-async-storage/async-storage'\n );\n }\n }\n }\n\n async get(key: string): Promise<string | null> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n return await this.AsyncStorage!.getItem(key);\n } catch (error) {\n log.error('Failed to get item from AsyncStorage:', error);\n return null;\n }\n }\n\n async set(key: string, value: string): Promise<void> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n await this.AsyncStorage!.setItem(key, value);\n } catch (error) {\n throw new Error(`Failed to store item: ${error}`);\n }\n }\n\n async remove(key: string): Promise<void> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n await this.AsyncStorage!.removeItem(key);\n } catch (error) {\n throw new Error(`Failed to remove item: ${error}`);\n }\n }\n\n async clear(): Promise<void> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n await this.AsyncStorage!.clear();\n } catch (error) {\n throw new Error(`Failed to clear storage: ${error}`);\n }\n }\n\n async getAllKeys(): Promise<string[]> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n return await this.AsyncStorage!.getAllKeys();\n } catch (error) {\n log.error('Failed to get all keys:', error);\n return [];\n }\n }\n\n // Uses native AsyncStorage batch operations for better performance\n async multiGet(keys: string[]): Promise<Record<string, string | null>> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n const pairs = await this.AsyncStorage!.multiGet(keys);\n const result: Record<string, string | null> = {};\n pairs.forEach(([key, value]: [string, string | null]) => {\n result[key] = value;\n });\n return result;\n } catch (error) {\n log.error('Failed to get multiple items:', error);\n const result: Record<string, string | null> = {};\n keys.forEach((key) => {\n result[key] = null;\n });\n return result;\n }\n }\n\n async multiSet(items: Record<string, string>): Promise<void> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n const pairs = Object.entries(items);\n await this.AsyncStorage!.multiSet(pairs);\n } catch (error) {\n throw new Error(`Failed to store multiple items: ${error}`);\n }\n }\n\n async multiRemove(keys: string[]): Promise<void> {\n if (!this.AsyncStorage) await this.initializeAsyncStorage();\n\n try {\n await this.AsyncStorage!.multiRemove(keys);\n } catch (error) {\n throw new Error(`Failed to remove multiple items: ${error}`);\n }\n }\n}\n\n/**\n * React Native secure storage adapter using expo-secure-store or react-native-keychain\n * Uses BaseSecureStorageAdapter for multi operations (no native batch support)\n */\nexport class ReactNativeSecureStorageAdapter extends BaseSecureStorageAdapter {\n private secureStore: ExpoSecureStoreInterface | null = null;\n private keychain: KeychainInterface | null = null;\n private isExpo: boolean = false;\n\n constructor() {\n super();\n this.initializeSecureStorage();\n }\n\n private async initializeSecureStorage() {\n try {\n const SecureStore = require('expo-secure-store');\n this.secureStore = SecureStore;\n this.isExpo = true;\n return;\n } catch {\n log.debug('expo-secure-store not available, trying react-native-keychain');\n }\n\n try {\n const Keychain = require('react-native-keychain');\n this.keychain = Keychain;\n this.isExpo = false;\n return;\n } catch {\n log.error('react-native-keychain not available');\n }\n\n throw new Error(\n 'No secure storage available. Please install expo-secure-store or react-native-keychain'\n );\n }\n\n async get(key: string): Promise<string | null> {\n if (!this.secureStore && !this.keychain) {\n await this.initializeSecureStorage();\n }\n\n try {\n if (this.isExpo && this.secureStore) {\n return await this.secureStore.getItemAsync(key);\n } else if (this.keychain) {\n const credentials = await this.keychain.getInternetCredentials(key);\n return credentials ? credentials.password : null;\n }\n } catch (error) {\n log.error('Failed to get secure item:', error);\n }\n\n return null;\n }\n\n async set(key: string, value: string): Promise<void> {\n if (!this.secureStore && !this.keychain) {\n await this.initializeSecureStorage();\n }\n\n try {\n if (this.isExpo && this.secureStore) {\n await this.secureStore.setItemAsync(key, value);\n } else if (this.keychain) {\n await this.keychain.setInternetCredentials(key, key, value);\n }\n } catch (error) {\n throw new Error(`Failed to store secure item: ${error}`);\n }\n }\n\n async remove(key: string): Promise<void> {\n if (!this.secureStore && !this.keychain) {\n await this.initializeSecureStorage();\n }\n\n try {\n if (this.isExpo && this.secureStore) {\n await this.secureStore.deleteItemAsync(key);\n } else if (this.keychain) {\n await this.keychain.resetInternetCredentials(key);\n }\n } catch (error) {\n throw new Error(`Failed to remove secure item: ${error}`);\n }\n }\n\n async clear(): Promise<void> {\n log.warn('Clear all secure items not fully implemented for React Native');\n }\n\n async getAllKeys(): Promise<string[]> {\n log.warn('Get all secure keys not implemented for React Native');\n return [];\n }\n\n async isAvailable(): Promise<boolean> {\n try {\n await this.initializeSecureStorage();\n return true;\n } catch {\n return false;\n }\n }\n\n async getSecurityLevel(): Promise<string> {\n if (this.isExpo) {\n return 'Expo SecureStore (iOS Keychain / Android EncryptedSharedPreferences)';\n } else {\n return 'React Native Keychain (iOS Keychain / Android Keystore)';\n }\n }\n}\n","import { BaseSecureStorageAdapter, BaseStorageAdapter } from '../shared';\n\n/**\n * Web storage adapter using localStorage\n */\nexport class WebStorageAdapter extends BaseStorageAdapter {\n async get(key: string): Promise<string | null> {\n try {\n return localStorage.getItem(key);\n } catch {\n return null;\n }\n }\n\n async set(key: string, value: string): Promise<void> {\n try {\n localStorage.setItem(key, value);\n } catch (error) {\n throw new Error(`Failed to store item: ${error}`);\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n localStorage.removeItem(key);\n } catch (error) {\n throw new Error(`Failed to remove item: ${error}`);\n }\n }\n\n async clear(): Promise<void> {\n try {\n localStorage.clear();\n } catch (error) {\n throw new Error(`Failed to clear storage: ${error}`);\n }\n }\n\n async getAllKeys(): Promise<string[]> {\n try {\n return Object.keys(localStorage);\n } catch {\n return [];\n }\n }\n}\n\n/**\n * Web secure storage adapter using encrypted localStorage\n */\nexport class WebSecureStorageAdapter extends BaseSecureStorageAdapter {\n private static readonly ENCRYPTION_KEY = 'acube_secure_key';\n private encryptionKey: string;\n\n constructor() {\n super();\n this.encryptionKey = this.getOrCreateEncryptionKey();\n }\n\n async get(key: string): Promise<string | null> {\n try {\n const encrypted = localStorage.getItem(this.getSecureKey(key));\n if (!encrypted) return null;\n\n return this.decrypt(encrypted);\n } catch {\n return null;\n }\n }\n\n async set(key: string, value: string): Promise<void> {\n try {\n const encrypted = this.encrypt(value);\n localStorage.setItem(this.getSecureKey(key), encrypted);\n } catch (error) {\n throw new Error(`Failed to store secure item: ${error}`);\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n localStorage.removeItem(this.getSecureKey(key));\n } catch (error) {\n throw new Error(`Failed to remove secure item: ${error}`);\n }\n }\n\n async clear(): Promise<void> {\n try {\n const keys = Object.keys(localStorage);\n const secureKeys = keys.filter((key) => key.startsWith('secure_'));\n secureKeys.forEach((key) => localStorage.removeItem(key));\n } catch (error) {\n throw new Error(`Failed to clear secure storage: ${error}`);\n }\n }\n\n async getAllKeys(): Promise<string[]> {\n try {\n const keys = Object.keys(localStorage);\n return keys\n .filter((key) => key.startsWith('secure_'))\n .map((key) => key.replace('secure_', ''));\n } catch {\n return [];\n }\n }\n\n async isAvailable(): Promise<boolean> {\n try {\n const test = 'test';\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch {\n return false;\n }\n }\n\n async getSecurityLevel(): Promise<string> {\n return 'Basic encryption using Web Crypto API';\n }\n\n private getSecureKey(key: string): string {\n return `secure_${key}`;\n }\n\n private getOrCreateEncryptionKey(): string {\n let key = localStorage.getItem(WebSecureStorageAdapter.ENCRYPTION_KEY);\n if (!key) {\n key = this.generateKey();\n localStorage.setItem(WebSecureStorageAdapter.ENCRYPTION_KEY, key);\n }\n return key;\n }\n\n private generateKey(): string {\n return Array.from(crypto.getRandomValues(new Uint8Array(32)))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n }\n\n private encrypt(text: string): string {\n let result = '';\n for (let i = 0; i < text.length; i++) {\n const keyChar = this.encryptionKey.charCodeAt(i % this.encryptionKey.length);\n const textChar = text.charCodeAt(i);\n result += String.fromCharCode(textChar ^ keyChar);\n }\n return btoa(result);\n }\n\n private decrypt(encrypted: string): string {\n const text = atob(encrypted);\n let result = '';\n for (let i = 0; i < text.length; i++) {\n const keyChar = this.encryptionKey.charCodeAt(i % this.encryptionKey.length);\n const textChar = text.charCodeAt(i);\n result += String.fromCharCode(textChar ^ keyChar);\n }\n return result;\n }\n}\n","import {\n ISecureStoragePort as ISecureStorage,\n IStoragePort as IStorage,\n} from '@/application/ports/driven';\nimport {\n NodeSecureStorageAdapter,\n NodeStorageAdapter,\n} from '@/infrastructure/driven/platforms/node/storage';\nimport {\n ReactNativeSecureStorageAdapter,\n ReactNativeStorageAdapter,\n} from '@/infrastructure/driven/platforms/react-native/storage';\nimport {\n WebSecureStorageAdapter,\n WebStorageAdapter,\n} from '@/infrastructure/driven/platforms/web/storage';\n\nexport interface StorageAdapters {\n storage: IStorage;\n secureStorage: ISecureStorage;\n}\n\nexport function loadStorageAdapters(platform: string): StorageAdapters {\n switch (platform) {\n case 'web':\n return {\n storage: new WebStorageAdapter(),\n secureStorage: new WebSecureStorageAdapter(),\n };\n case 'react-native':\n return {\n storage: new ReactNativeStorageAdapter(),\n secureStorage: new ReactNativeSecureStorageAdapter(),\n };\n case 'node':\n default:\n return {\n storage: new NodeStorageAdapter(),\n secureStorage: new NodeSecureStorageAdapter(),\n };\n }\n}\n","import { NetworkInfo } from '@/application/ports/driven';\n\nimport { NetworkBase } from '../shared/network-base';\n\n/**\n * Node.js network monitor using RxJS\n * Assumes always online by default (server environment)\n */\nexport class NodeNetworkMonitor extends NetworkBase {\n constructor() {\n super(true, 300);\n }\n\n async getNetworkInfo(): Promise<NetworkInfo | null> {\n return {\n type: 'ethernet',\n };\n }\n\n /**\n * Manually set network status (for testing)\n */\n setNetworkStatus(online: boolean): void {\n this.updateStatus(online);\n }\n}\n","import { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NetworkInfo } from '@/application/ports/driven';\nimport { createPrefixedLogger, detectPlatform } from '@/shared/utils';\n\nimport { NetworkBase } from '../shared/network-base';\n\nconst log = createPrefixedLogger('RN-NETWORK');\n\ninterface NetworkState {\n isConnected: boolean;\n isInternetReachable: boolean | null;\n type?: string;\n details?: {\n cellularGeneration?: string;\n downlink?: number;\n rtt?: number;\n };\n}\n\ninterface NetInfoModule {\n fetch(): Promise<NetworkState>;\n getNetworkStateAsync(): Promise<NetworkState>;\n addEventListener(callback: (state: NetworkState) => void): () => void;\n addNetworkStateListener(callback: (state: NetworkState) => void): () => void;\n}\n\n/**\n * React Native network monitor using RxJS\n * Supports both @react-native-community/netinfo and expo-network\n */\nexport class ReactNativeNetworkMonitor extends NetworkBase {\n private netInfoModule: NetInfoModule | null = null;\n private nativeUnsubscribe: (() => void) | null = null;\n private readonly isExpo: boolean;\n private readonly moduleReady$ = new Subject<void>();\n\n constructor() {\n super(true, 500); // Higher debounce for mobile networks\n this.isExpo = detectPlatform().isExpo;\n\n this.init().catch((error) => {\n log.error('Network monitor initialization failed:', error);\n });\n }\n\n private async init(): Promise<void> {\n if (this.isExpo) {\n await this.loadExpoModule();\n } else {\n await this.loadRNModule();\n }\n\n await this.fetchInitialState();\n this.subscribeToStateChanges();\n\n this.moduleReady$.next();\n this.moduleReady$.complete();\n }\n\n private async loadRNModule(): Promise<void> {\n try {\n const module = require('@react-native-community/netinfo');\n this.netInfoModule = module.default || module;\n log.debug('Loaded @react-native-community/netinfo module');\n } catch (error) {\n log.error('Failed to load React Native NetInfo module:', error);\n this.netInfoModule = null;\n }\n }\n\n private async loadExpoModule(): Promise<void> {\n try {\n const module = require('expo-network');\n this.netInfoModule = module.default || module;\n log.debug('Loaded expo-network module');\n } catch (error) {\n log.error('Failed to load Expo Network module:', error);\n this.netInfoModule = null;\n }\n }\n\n private async fetchInitialState(): Promise<void> {\n if (!this.netInfoModule) return;\n\n try {\n let state: NetworkState;\n if (this.isExpo) {\n state = await this.netInfoModule.getNetworkStateAsync();\n } else {\n state = await this.netInfoModule.fetch();\n }\n\n const online = !!(state.isConnected && state.isInternetReachable !== false);\n this.updateStatus(online);\n log.debug('Initial network state:', online ? 'online' : 'offline');\n } catch (error) {\n log.warn('Could not fetch initial network state:', error);\n }\n }\n\n private subscribeToStateChanges(): void {\n if (!this.netInfoModule) return;\n\n log.debug('Subscribing to network state changes');\n\n const handleState = (state: NetworkState): void => {\n const online = !!(state.isConnected && (state.isInternetReachable ?? true));\n this.updateStatus(online);\n };\n\n if (this.isExpo) {\n this.nativeUnsubscribe = this.netInfoModule.addNetworkStateListener(handleState);\n } else {\n this.nativeUnsubscribe = this.netInfoModule.addEventListener(handleState);\n }\n\n // Cleanup native listener when destroy$ emits\n this.destroy$.pipe(takeUntil(this.destroy$)).subscribe({\n complete: () => {\n if (this.nativeUnsubscribe) {\n this.nativeUnsubscribe();\n this.nativeUnsubscribe = null;\n }\n },\n });\n }\n\n async getNetworkInfo(): Promise<NetworkInfo | null> {\n // Wait for module initialization if not ready\n if (!this.netInfoModule) {\n await new Promise<void>((resolve) => {\n this.moduleReady$.subscribe({ complete: () => resolve() });\n });\n\n if (!this.netInfoModule) return null;\n }\n\n try {\n const state = this.isExpo\n ? await this.netInfoModule.getNetworkStateAsync()\n : await this.netInfoModule.fetch();\n\n return {\n type: this.mapConnectionType(state.type),\n effectiveType: this.mapEffectiveType(state.details?.cellularGeneration),\n downlink: state.details?.downlink,\n rtt: state.details?.rtt,\n };\n } catch (error) {\n log.error('Failed to fetch detailed network info:', error);\n return null;\n }\n }\n\n override destroy(): void {\n if (this.nativeUnsubscribe) {\n this.nativeUnsubscribe();\n this.nativeUnsubscribe = null;\n }\n super.destroy();\n }\n\n private mapConnectionType(\n type: string | null | undefined\n ): 'wifi' | 'cellular' | 'ethernet' | 'unknown' {\n switch (type) {\n case 'wifi':\n return 'wifi';\n case 'cellular':\n return 'cellular';\n case 'ethernet':\n return 'ethernet';\n default:\n return 'unknown';\n }\n }\n\n private mapEffectiveType(gen: string | null | undefined): '2g' | '3g' | '4g' | '5g' | undefined {\n switch (gen) {\n case '2g':\n return '2g';\n case '3g':\n return '3g';\n case '4g':\n return '4g';\n case '5g':\n return '5g';\n default:\n return undefined;\n }\n }\n}\n","import { fromEvent, merge } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { NetworkInfo } from '@/application/ports/driven';\n\nimport { NetworkBase } from '../shared/network-base';\n\ninterface NetworkInformationConnection {\n type?: string;\n effectiveType?: '2g' | '3g' | '4g' | '5g';\n downlink?: number;\n rtt?: number;\n}\n\ninterface NavigatorWithConnection extends Navigator {\n connection?: NetworkInformationConnection;\n}\n\n/**\n * Web network monitor using RxJS with browser events\n * Uses fromEvent to create observables from online/offline events\n */\nexport class WebNetworkMonitor extends NetworkBase {\n constructor() {\n const initialOnline = typeof navigator !== 'undefined' ? navigator.onLine : true;\n super(initialOnline, 300);\n this.setupListeners();\n }\n\n private setupListeners(): void {\n if (typeof window === 'undefined') return;\n\n merge(\n fromEvent(window, 'online').pipe(map(() => true)),\n fromEvent(window, 'offline').pipe(map(() => false))\n )\n .pipe(takeUntil(this.destroy$))\n .subscribe((online) => this.updateStatus(online));\n }\n\n async getNetworkInfo(): Promise<NetworkInfo | null> {\n if ('connection' in navigator) {\n const connection = (navigator as NavigatorWithConnection).connection;\n\n return {\n type: this.mapConnectionType(connection?.type ?? 'unknown'),\n effectiveType: connection?.effectiveType,\n downlink: connection?.downlink,\n rtt: connection?.rtt,\n };\n }\n\n return {\n type: 'unknown',\n };\n }\n\n private mapConnectionType(type: string): 'wifi' | 'cellular' | 'ethernet' | 'unknown' {\n switch (type) {\n case 'wifi':\n return 'wifi';\n case 'cellular':\n case '2g':\n case '3g':\n case '4g':\n case '5g':\n return 'cellular';\n case 'ethernet':\n return 'ethernet';\n default:\n return 'unknown';\n }\n }\n}\n","import { INetworkPort as INetworkMonitor } from '@/application/ports/driven';\nimport { NodeNetworkMonitor } from '@/infrastructure/driven/platforms/node/network';\nimport { ReactNativeNetworkMonitor } from '@/infrastructure/driven/platforms/react-native/network';\nimport { WebNetworkMonitor } from '@/infrastructure/driven/platforms/web/network';\n\nexport function loadNetworkMonitor(platform: string): INetworkMonitor {\n switch (platform) {\n case 'web':\n return new WebNetworkMonitor();\n case 'react-native':\n return new ReactNativeNetworkMonitor();\n case 'node':\n default:\n return new NodeNetworkMonitor();\n }\n}\n","export enum MTLSErrorType {\n NOT_SUPPORTED = 'MTLS_NOT_SUPPORTED',\n CERTIFICATE_NOT_FOUND = 'MTLS_CERTIFICATE_NOT_FOUND',\n CERTIFICATE_EXPIRED = 'MTLS_CERTIFICATE_EXPIRED',\n CERTIFICATE_INVALID = 'MTLS_CERTIFICATE_INVALID',\n CONNECTION_FAILED = 'MTLS_CONNECTION_FAILED',\n AUTHENTICATION_FAILED = 'MTLS_AUTHENTICATION_FAILED',\n CONFIGURATION_ERROR = 'MTLS_CONFIGURATION_ERROR',\n}\n\nexport class MTLSError extends Error {\n constructor(\n public type: MTLSErrorType,\n message: string,\n public originalError?: Error,\n public statusCode?: number\n ) {\n super(message);\n this.name = 'MTLSError';\n }\n}\n","export class CertificateValidator {\n static validatePEMFormat(certificate: string, privateKey: string): boolean {\n const certRegex = /-----BEGIN CERTIFICATE-----[\\s\\S]*-----END CERTIFICATE-----/;\n const keyRegex = /-----BEGIN (RSA )?PRIVATE KEY-----[\\s\\S]*-----END (RSA )?PRIVATE KEY-----/;\n return certRegex.test(certificate) && keyRegex.test(privateKey);\n }\n\n static isCertificateExpired(validTo: Date): boolean {\n return new Date() > validTo;\n }\n\n static getDaysUntilExpiry(validTo: Date): number {\n const now = new Date();\n const diffTime = validTo.getTime() - now.getTime();\n return Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n }\n}\n","/**\n * React Native mTLS Adapter Implementation\n * Uses @a-cube-io/expo-mutual-tls for production-ready mTLS authentication\n */\nimport {\n CertificateData,\n CertificateInfo,\n IMTLSPort as IMTLSAdapter,\n MTLSConnectionConfig,\n MTLSRequestConfig,\n MTLSResponse,\n} from '@/application/ports/driven';\nimport { MTLSError, MTLSErrorType } from '@/domain/errors';\nimport { CertificateValidator } from '@/domain/services';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nimport {\n MTLSCertificateExpiryEvent,\n MTLSDebugLogEvent,\n MTLSErrorEvent,\n MTLSEventSubscription,\n} from './types';\n\nconst log = createPrefixedLogger('RN-MTLS');\n\n// Import actual types from expo-mutual-tls\ninterface CertificateSubject {\n commonName?: string;\n organization?: string;\n organizationalUnit?: string;\n country?: string;\n state?: string;\n locality?: string;\n emailAddress?: string;\n}\n\ninterface CertificateFingerprints {\n sha1: string;\n sha256: string;\n}\n\ninterface CertificateInfoDetailed {\n subject: CertificateSubject;\n issuer: CertificateSubject;\n serialNumber: string;\n version: number;\n validFrom: number;\n validTo: number;\n fingerprints: CertificateFingerprints;\n publicKeyAlgorithm: string;\n publicKeySize?: number;\n signatureAlgorithm: string;\n keyUsage?: string[];\n extendedKeyUsage?: string[];\n subjectAlternativeNames?: string[];\n}\n\ninterface ParseCertificateResult {\n certificates: CertificateInfoDetailed[];\n}\n\ntype P12CertificateData = {\n p12Data: string;\n password: string;\n};\n\ntype PemCertificateData = {\n certificate: string;\n privateKey: string;\n passphrase?: string;\n};\n\ntype CertificateDataUnion = P12CertificateData | PemCertificateData;\n\ninterface ExpoMutualTLSClass {\n // Configuration methods (static)\n configurePEM(\n certService?: string,\n keyService?: string,\n enableLogging?: boolean\n ): Promise<{\n success: boolean;\n state: string;\n hasCertificate: boolean;\n }>;\n\n configureP12(\n keychainService?: string,\n enableLogging?: boolean\n ): Promise<{\n success: boolean;\n state: string;\n hasCertificate: boolean;\n }>;\n\n // Certificate storage methods (static)\n storePEM(certificate: string, privateKey: string, passphrase?: string): Promise<boolean>;\n storeP12(p12Base64: string, password: string): Promise<boolean>;\n\n // Certificate management (static)\n hasCertificate(): Promise<boolean>;\n removeCertificate(): Promise<void>;\n\n // Certificate parsing methods (static)\n parseCertificate(certificateData: CertificateDataUnion): Promise<ParseCertificateResult>;\n parseCertificateP12(p12Base64: string, password: string): Promise<ParseCertificateResult>;\n parseCertificatePEM(certificate: string): Promise<ParseCertificateResult>;\n getCertificatesInfo(): Promise<ParseCertificateResult>;\n\n // Network operations (static)\n request(\n url: string,\n options?: {\n method?: string;\n headers?: Record<string, string>;\n body?: string;\n responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';\n }\n ): Promise<{\n success: boolean;\n statusCode: number;\n statusMessage: string;\n headers: Record<string, string[]>;\n body: string;\n tlsVersion: string;\n cipherSuite: string;\n }>;\n\n testConnection(url: string): Promise<{\n success: boolean;\n statusCode: number;\n statusMessage: string;\n headers: Record<string, string[]>;\n body: string;\n tlsVersion: string;\n cipherSuite: string;\n }>;\n\n // Properties (static getters)\n isConfigured: boolean;\n currentState: string;\n\n // Event handlers (static)\n onDebugLog(\n callback: (event: {\n type: string;\n message?: string;\n method?: string;\n url?: string;\n statusCode?: number;\n duration?: number;\n }) => void\n ): () => void;\n onError(callback: (event: { message: string; code?: string }) => void): () => void;\n onCertificateExpiry(\n callback: (event: {\n alias?: string;\n subject: string;\n expiry: number;\n warning?: boolean;\n }) => void\n ): () => void;\n removeAllListeners(): void;\n}\n\n/**\n * React Native mTLS Adapter using @a-cube-io/expo-mutual-tls\n */\nexport class ReactNativeMTLSAdapter implements IMTLSAdapter {\n private expoMTLS: ExpoMutualTLSClass | null = null;\n private config: MTLSConnectionConfig | null = null;\n private isConfigured = false;\n private eventListeners: MTLSEventSubscription[] = [];\n\n constructor() {\n this.initializeEventHandlers();\n }\n\n /**\n * Initialize event handlers for debugging and monitoring\n */\n private initializeEventHandlers(): void {\n try {\n // Import the default export from @a-cube-io/expo-mutual-tls\n const ExpoMutualTls =\n require('@a-cube-io/expo-mutual-tls').default || require('@a-cube-io/expo-mutual-tls');\n this.expoMTLS = ExpoMutualTls;\n\n // Set up debug logging with the correct event signature\n const debugListener = ExpoMutualTls.onDebugLog((event: MTLSDebugLogEvent) => {\n log.debug(`${event.type}: ${event.message}`, {\n method: event.method,\n url: event.url,\n statusCode: event.statusCode,\n duration: event.duration,\n });\n });\n this.eventListeners.push(debugListener);\n\n // Set up error logging with the correct event signature\n const errorListener = ExpoMutualTls.onError((event: MTLSErrorEvent) => {\n log.error(event.message, {\n code: event.code,\n });\n });\n this.eventListeners.push(errorListener);\n\n // Set up certificate expiry monitoring with the correct event signature\n const expiryListener = ExpoMutualTls.onCertificateExpiry(\n (event: MTLSCertificateExpiryEvent) => {\n log.warn(`Certificate ${event.subject} expires at ${new Date(event.expiry)}`, {\n alias: event.alias,\n warning: event.warning,\n });\n }\n );\n this.eventListeners.push(expiryListener);\n\n log.debug('Expo mTLS module loaded successfully');\n } catch (error) {\n log.warn('@a-cube-io/expo-mutual-tls not available:', error);\n }\n }\n\n async isMTLSSupported(): Promise<boolean> {\n const supported = this.expoMTLS !== null;\n\n log.debug('mTLS support check:', {\n supported,\n platform: this.getPlatformInfo().platform,\n moduleAvailable: !!this.expoMTLS,\n });\n\n return supported;\n }\n\n async initialize(config: MTLSConnectionConfig): Promise<void> {\n if (!this.expoMTLS) {\n throw new MTLSError(MTLSErrorType.NOT_SUPPORTED, 'Expo mTLS module not available');\n }\n\n this.config = config;\n\n log.debug('Initialized with config:', {\n baseUrl: config.baseUrl,\n port: config.port,\n timeout: config.timeout,\n validateCertificate: config.validateCertificate,\n });\n }\n\n async configureCertificate(certificateData: CertificateData): Promise<void> {\n if (!this.expoMTLS) {\n throw new MTLSError(MTLSErrorType.NOT_SUPPORTED, 'Expo mTLS module not available');\n }\n\n if (!this.config) {\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n 'Adapter not initialized. Call initialize() first.'\n );\n }\n\n log.debug('Configuring certificate:', {\n format: certificateData.format,\n hasPassword: !!certificateData.password,\n certificateLength: certificateData.certificate.length,\n privateKeyLength: certificateData.privateKey.length,\n });\n\n try {\n if (certificateData.format === 'PEM') {\n // Validate PEM format\n if (\n !CertificateValidator.validatePEMFormat(\n certificateData.certificate,\n certificateData.privateKey\n )\n ) {\n throw new MTLSError(MTLSErrorType.CERTIFICATE_INVALID, 'Invalid PEM certificate format');\n }\n\n // Step 1: Configure PEM services (optional parameters for keychain services)\n const configResult = await this.expoMTLS.configurePEM(\n 'client-cert-service', // certService\n 'client-key-service', // keyService\n true // enableLogging - let the native module handle its own debug logging\n );\n\n log.debug('PEM services configured:', configResult);\n\n if (!configResult.success) {\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n `PEM configuration failed: ${configResult.state}`\n );\n }\n\n // Step 2: Store the actual PEM certificate and private key\n const storeResult = await this.expoMTLS.storePEM(\n certificateData.certificate,\n certificateData.privateKey,\n certificateData.password // passphrase (optional)\n );\n\n log.debug('PEM certificate store result:', storeResult);\n\n if (!storeResult) {\n throw new MTLSError(MTLSErrorType.CERTIFICATE_INVALID, 'Failed to store PEM certificate');\n }\n } else if (certificateData.format === 'P12') {\n if (!certificateData.password) {\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n 'P12 certificate requires password'\n );\n }\n\n // Step 1: Configure P12 keychain service\n const configResult = await this.expoMTLS.configureP12(\n 'client-p12-service', // keychainService\n true // enableLogging - let the native module handle its own debug logging\n );\n\n log.debug('P12 service configured:', configResult);\n\n if (!configResult.success) {\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n `P12 configuration failed: ${configResult.state}`\n );\n }\n\n // Step 2: Store the P12 certificate data\n const storeResult = await this.expoMTLS.storeP12(\n certificateData.certificate, // P12 data in certificate field\n certificateData.password\n );\n\n log.debug('P12 certificate store result:', storeResult);\n\n if (!storeResult) {\n throw new MTLSError(MTLSErrorType.CERTIFICATE_INVALID, 'Failed to store P12 certificate');\n }\n } else {\n throw new MTLSError(\n MTLSErrorType.CERTIFICATE_INVALID,\n `Unsupported certificate format: ${certificateData.format}`\n );\n }\n\n this.isConfigured = true;\n } catch (error) {\n if (error instanceof MTLSError) {\n throw error;\n }\n\n log.error('Certificate configuration failed:', error);\n\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n 'Failed to configure certificate',\n error as Error\n );\n }\n }\n\n async hasCertificate(): Promise<boolean> {\n if (!this.expoMTLS) {\n return false;\n }\n\n try {\n // Use static method call\n const hasCert = await this.expoMTLS.hasCertificate();\n\n log.debug('Certificate availability check:', hasCert);\n\n return hasCert;\n } catch (error) {\n log.error('Certificate check failed:', error);\n return false;\n }\n }\n\n async getCertificateInfo(): Promise<CertificateInfo | null> {\n if (!this.expoMTLS) {\n log.debug('Certificate info requested but module not available');\n return null;\n }\n\n try {\n const hasCert = await this.hasCertificate();\n if (!hasCert) {\n log.debug('No certificate stored');\n return null;\n }\n\n // Use getCertificatesInfo to retrieve information about stored certificates\n const result = await this.expoMTLS.getCertificatesInfo();\n\n if (!result || !result.certificates || result.certificates.length === 0) {\n log.debug('No certificate information available');\n return null;\n }\n\n // Get the first certificate (primary client certificate)\n const cert = result.certificates[0];\n\n if (!cert) {\n log.debug('Certificate data is empty');\n return null;\n }\n\n log.debug('Retrieved certificate info:', {\n subject: cert.subject.commonName,\n issuer: cert.issuer.commonName,\n validFrom: new Date(cert.validFrom),\n validTo: new Date(cert.validTo),\n });\n\n // Map to our CertificateInfo format\n return {\n subject: cert.subject.commonName || 'Unknown',\n issuer: cert.issuer.commonName || 'Unknown',\n validFrom: new Date(cert.validFrom),\n validTo: new Date(cert.validTo),\n serialNumber: cert.serialNumber,\n fingerprint: cert.fingerprints.sha256,\n pemId: cert.subject.commonName?.split(':')[1] || '', // PEM ID is part[1] (divide by : ) of commonName if available\n cashRegisterUUID: cert.subject.commonName?.split(':')[0] || '', // Cash Register UUID is part[0] (divide by : ) of commonName if available\n };\n } catch (error) {\n log.error('Failed to get certificate info:', error);\n return null;\n }\n }\n\n /**\n * Parse certificate and extract detailed information\n * @param certificateData Certificate data in P12 or PEM format\n * @returns Detailed certificate information including subject, issuer, validity, etc.\n */\n async parseCertificateData(\n certificateData: CertificateData\n ): Promise<ParseCertificateResult | null> {\n if (!this.expoMTLS) {\n log.debug('Parse certificate: Module not available');\n return null;\n }\n\n try {\n let result: ParseCertificateResult;\n\n if (certificateData.format === 'P12') {\n if (!certificateData.password) {\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n 'P12 certificate requires password for parsing'\n );\n }\n\n result = await this.expoMTLS.parseCertificateP12(\n certificateData.certificate,\n certificateData.password\n );\n } else if (certificateData.format === 'PEM') {\n result = await this.expoMTLS.parseCertificatePEM(certificateData.certificate);\n } else {\n throw new MTLSError(\n MTLSErrorType.CERTIFICATE_INVALID,\n `Unsupported certificate format: ${certificateData.format}`\n );\n }\n\n log.debug('Certificate parsed successfully:', {\n certificateCount: result.certificates.length,\n subjects: result.certificates.map((cert) => cert.subject.commonName),\n });\n\n return result;\n } catch (error) {\n log.error('Failed to parse certificate:', error);\n\n if (error instanceof MTLSError) {\n throw error;\n }\n\n throw new MTLSError(\n MTLSErrorType.CERTIFICATE_INVALID,\n 'Failed to parse certificate data',\n error as Error\n );\n }\n }\n\n async request<T>(requestConfig: MTLSRequestConfig): Promise<MTLSResponse<T>> {\n if (!this.expoMTLS) {\n throw new MTLSError(MTLSErrorType.NOT_SUPPORTED, 'Expo mTLS module not available');\n }\n\n const hasCert = await this.hasCertificate();\n if (!hasCert) {\n throw new MTLSError(MTLSErrorType.CERTIFICATE_NOT_FOUND, 'No certificate configured');\n }\n\n log.debug('Making mTLS request:', {\n method: requestConfig.method || 'GET',\n url: requestConfig.url,\n headers: requestConfig.headers,\n hasData: !!requestConfig.data,\n responseType: requestConfig.responseType,\n });\n\n if (requestConfig.data) {\n log.debug('mTLS request body:', requestConfig.data);\n }\n\n try {\n const response = await this.expoMTLS.request(requestConfig.url, {\n method: requestConfig.method || 'GET',\n headers: requestConfig.headers,\n body: requestConfig.data ? JSON.stringify(requestConfig.data) : undefined,\n responseType: requestConfig.responseType,\n });\n\n log.debug('mTLS request successful:', response);\n\n if (!response.success) {\n throw new MTLSError(\n MTLSErrorType.CONNECTION_FAILED,\n `mTLS request failed: ${response.statusMessage} (${response.statusCode})`,\n undefined,\n response.statusCode\n );\n }\n\n let data: string | Record<string, unknown> = response.body;\n // only parse if responseType is 'json' or if Content-Type header indicates JSON\n const contentType =\n response.headers['Content-Type'] || response.headers['content-type'] || '';\n if (requestConfig.responseType === 'json' || contentType.includes('application/json')) {\n try {\n data = JSON.parse(response.body);\n } catch (parseError) {\n log.warn('Failed to parse JSON response:', parseError);\n // If parsing fails, keep raw body\n }\n }\n\n // Convert headers from string[] to string format\n const normalizedHeaders: Record<string, string> = {};\n Object.entries(response.headers).forEach(([key, value]) => {\n normalizedHeaders[key] = Array.isArray(value) ? value.join(', ') : value;\n });\n\n return {\n data: data as T,\n status: response.statusCode,\n statusText: response.statusMessage,\n headers: normalizedHeaders,\n };\n } catch (error) {\n log.error('mTLS request failed:', error);\n\n throw new MTLSError(MTLSErrorType.CONNECTION_FAILED, 'mTLS request failed', error as Error);\n }\n }\n\n /**\n * Test mTLS connection (DIAGNOSTIC ONLY - not used for validation)\n *\n * WARNING: This method calls a test endpoint that may return 500 errors\n * even when actual mTLS requests work perfectly. It should only be used\n * for diagnostic purposes, not for determining if mTLS is ready.\n */\n async testConnection(): Promise<boolean> {\n if (!this.expoMTLS || !this.config) {\n log.debug('Diagnostic test: No mTLS module or config available');\n return false;\n }\n\n try {\n const hasCert = await this.hasCertificate();\n if (!hasCert) {\n log.debug('Diagnostic test: No certificate configured');\n return false;\n }\n\n log.debug('Running diagnostic test (may fail even if mTLS works):', this.config.baseUrl);\n\n const result = await this.expoMTLS.testConnection(this.config.baseUrl);\n\n log.debug('Diagnostic test result (NOT validation):', {\n success: result.success,\n statusCode: result.statusCode,\n statusMessage: result.statusMessage,\n tlsVersion: result.tlsVersion,\n cipherSuite: result.cipherSuite,\n note: 'Test endpoint may return 500 while actual requests work',\n });\n\n return result.success;\n } catch (error) {\n log.warn('Diagnostic test failed (this is expected):', error);\n return false;\n }\n }\n\n async removeCertificate(): Promise<void> {\n if (!this.expoMTLS) {\n log.debug('Remove certificate: Module not available');\n return;\n }\n\n try {\n // Use static method call\n await this.expoMTLS.removeCertificate();\n this.isConfigured = false;\n\n // Cleanup event listeners\n this.cleanupEventListeners();\n\n log.debug('Certificate removed successfully');\n } catch (error) {\n log.error('Failed to remove certificate:', error);\n\n throw new MTLSError(\n MTLSErrorType.CONFIGURATION_ERROR,\n 'Failed to remove certificate',\n error as Error\n );\n }\n }\n\n /**\n * Cleanup event listeners\n */\n private cleanupEventListeners(): void {\n if (this.eventListeners.length > 0) {\n log.debug(`Cleaning up ${this.eventListeners.length} event listeners`);\n }\n\n // Remove individual listeners if they have remove methods\n this.eventListeners.forEach((listener) => {\n if (listener && typeof listener.remove === 'function') {\n listener.remove();\n }\n });\n\n // Also call removeAllListeners on the module\n if (this.expoMTLS) {\n this.expoMTLS.removeAllListeners();\n }\n\n this.eventListeners.length = 0;\n }\n\n /**\n * Manually remove all event listeners\n */\n removeAllListeners(): void {\n this.cleanupEventListeners();\n }\n\n /**\n * Get the configured mTLS base URL\n */\n getBaseUrl(): string | null {\n return this.config?.baseUrl || null;\n }\n\n getPlatformInfo() {\n return {\n platform: 'react-native' as const,\n mtlsSupported: this.expoMTLS !== null,\n certificateStorage: 'keychain' as const,\n fallbackToJWT: true,\n configured: this.isConfigured,\n };\n }\n}\n","/**\n * Web mTLS Adapter Implementation\n * Web browsers do not support client certificate configuration via JavaScript\n * This adapter provides graceful fallback with clear error messages\n */\nimport {\n CertificateData,\n CertificateInfo,\n IMTLSPort as IMTLSAdapter,\n MTLSConnectionConfig,\n MTLSRequestConfig,\n MTLSResponse,\n} from '@/application/ports/driven';\nimport { MTLSError, MTLSErrorType } from '@/domain/errors';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('WEB-MTLS');\n\n/**\n * Web mTLS Adapter - Graceful fallback for web browsers\n *\n * Web browsers handle client certificates through:\n * 1. Browser certificate store (managed by user)\n * 2. TLS handshake (automatic, not script-controlled)\n * 3. User prompts for certificate selection\n *\n * JavaScript cannot programmatically configure client certificates\n * due to security restrictions in the browser sandbox.\n */\nexport class WebMTLSAdapter implements IMTLSAdapter {\n constructor() {\n log.warn('Web browsers do not support programmatic mTLS configuration');\n log.info('Use JWT authentication or configure client certificates in browser settings');\n }\n\n async isMTLSSupported(): Promise<boolean> {\n // mTLS is not supported programmatically in web browsers\n const supported = false;\n\n log.debug('mTLS support check:', {\n supported,\n platform: this.getPlatformInfo().platform,\n reason: 'Browser security model prevents programmatic certificate configuration',\n alternatives: ['JWT authentication', 'Browser-managed certificates', 'Server-side proxy'],\n });\n\n return supported;\n }\n\n async initialize(config: MTLSConnectionConfig): Promise<void> {\n log.warn('Initialized but mTLS not available in web browsers:', {\n baseUrl: config.baseUrl,\n port: config.port,\n recommendation: 'Use standard HTTPS with JWT authentication',\n });\n }\n\n async configureCertificate(certificateData: CertificateData): Promise<void> {\n log.error('Certificate configuration attempted:', {\n format: certificateData.format,\n reason: 'Not supported in web browsers',\n alternatives: [\n 'Import certificate into browser certificate store',\n 'Use JWT authentication instead',\n 'Configure server-side proxy for certificate handling',\n ],\n });\n\n throw new MTLSError(\n MTLSErrorType.NOT_SUPPORTED,\n 'mTLS client certificate configuration is not supported in web browsers. ' +\n 'Web browsers manage client certificates through the browser certificate store. ' +\n 'Please use JWT authentication or import certificates manually into your browser.'\n );\n }\n\n async hasCertificate(): Promise<boolean> {\n // We cannot detect if the browser has certificates configured\n log.debug(\n 'Certificate availability check: Cannot detect browser certificates programmatically'\n );\n\n return false;\n }\n\n async getCertificateInfo(): Promise<CertificateInfo | null> {\n log.debug('Certificate info requested: Not accessible in web browsers');\n\n return null;\n }\n\n async request<T>(requestConfig: MTLSRequestConfig): Promise<MTLSResponse<T>> {\n log.error('mTLS request attempted:', {\n method: requestConfig.method,\n url: requestConfig.url,\n reason: 'Not supported in web browsers',\n alternatives: [\n 'Use standard fetch() or XMLHttpRequest',\n 'Configure JWT authentication',\n 'Rely on browser-managed certificates (if configured by user)',\n ],\n });\n\n throw new MTLSError(\n MTLSErrorType.NOT_SUPPORTED,\n 'mTLS requests are not supported in web browsers via JavaScript. ' +\n 'Use standard HTTP client with JWT authentication, or ensure client certificates ' +\n 'are properly configured in the browser certificate store.'\n );\n }\n\n async testConnection(): Promise<boolean> {\n log.debug('Connection test: mTLS not available in web browsers');\n\n return false;\n }\n\n async removeCertificate(): Promise<void> {\n log.debug('Remove certificate: No certificates to remove (not supported in web browsers)');\n\n // No-op - cannot remove certificates programmatically in browsers\n }\n\n /**\n * Get the configured mTLS base URL\n * Always returns null for web browsers as mTLS is not supported\n */\n getBaseUrl(): string | null {\n log.debug('Base URL requested: Not supported in web browsers');\n return null;\n }\n\n getPlatformInfo() {\n return {\n platform: 'web' as const,\n mtlsSupported: false,\n certificateStorage: 'browser-managed' as const,\n fallbackToJWT: true,\n limitations: [\n 'Browser security model prevents programmatic certificate access',\n 'Client certificates managed through browser UI only',\n 'TLS handshake handled automatically by browser',\n 'Certificate selection prompts managed by browser',\n ],\n recommendations: [\n 'Use JWT authentication for API access',\n 'Configure client certificates in browser settings if required',\n 'Consider server-side proxy for certificate handling',\n 'Use standard fetch API with browser-managed certificates',\n ],\n };\n }\n\n /**\n * Check if running in web browser environment\n */\n static isWebEnvironment(): boolean {\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined' &&\n typeof navigator !== 'undefined'\n );\n }\n}\n","import { IMTLSPort as IMTLSAdapter, MTLSConnectionConfig } from '@/application/ports/driven';\nimport { ReactNativeMTLSAdapter } from '@/infrastructure/driven/platforms/react-native/mtls';\nimport { WebMTLSAdapter } from '@/infrastructure/driven/platforms/web/mtls';\nimport { Platform, createPrefixedLogger } from '@/shared/utils';\n\nconst log = createPrefixedLogger('MTLS-LOADER');\n\nexport function loadMTLSAdapter(\n platform: Platform,\n config?: {\n baseUrl?: string;\n port?: number;\n timeout?: number;\n validateCertificate?: boolean;\n autoInitialize?: boolean;\n }\n): IMTLSAdapter | null {\n try {\n let adapter: IMTLSAdapter;\n\n switch (platform) {\n case 'react-native':\n adapter = new ReactNativeMTLSAdapter();\n break;\n case 'node':\n try {\n const { NodeMTLSAdapter } = require('@/infrastructure/driven/platforms/node/mtls');\n adapter = new NodeMTLSAdapter();\n } catch {\n adapter = new WebMTLSAdapter();\n }\n break;\n case 'web':\n default:\n adapter = new WebMTLSAdapter();\n break;\n }\n\n if (config?.autoInitialize && config.baseUrl) {\n const mtlsConfig: MTLSConnectionConfig = {\n baseUrl: config.baseUrl,\n port: config.port || 444,\n timeout: config.timeout || 30000,\n validateCertificate: config.validateCertificate ?? true,\n };\n\n void initializeAdapterAsync(adapter, mtlsConfig);\n }\n\n return adapter;\n } catch (error) {\n log.warn(`mTLS adapter not available for platform ${platform}:`, error);\n return null;\n }\n}\n\nasync function initializeAdapterAsync(\n adapter: IMTLSAdapter,\n config: MTLSConnectionConfig\n): Promise<void> {\n try {\n const isSupported = await adapter.isMTLSSupported();\n\n if (isSupported) {\n await adapter.initialize(config);\n\n const platformInfo = adapter.getPlatformInfo();\n log.debug('mTLS adapter initialized:', {\n platform: platformInfo.platform,\n mtlsSupported: platformInfo.mtlsSupported,\n certificateStorage: platformInfo.certificateStorage,\n baseUrl: config.baseUrl,\n });\n }\n } catch (error) {\n log.warn('Failed to initialize mTLS adapter:', error);\n }\n}\n\nexport function isMTLSSupported(platform: string): boolean {\n const config = MTLS_CONFIG_BY_PLATFORM[platform as keyof typeof MTLS_CONFIG_BY_PLATFORM];\n return config?.mtlsSupported || false;\n}\n\nexport function getMTLSConfig(platform: string) {\n return MTLS_CONFIG_BY_PLATFORM[platform as keyof typeof MTLS_CONFIG_BY_PLATFORM];\n}\n\nexport const MTLS_CONFIG_BY_PLATFORM = {\n 'react-native': {\n mtlsSupported: true,\n certificateStorage: 'keychain',\n fallbackToJWT: true,\n defaultTimeout: 30000,\n },\n node: {\n mtlsSupported: true,\n certificateStorage: 'filesystem',\n fallbackToJWT: true,\n defaultTimeout: 30000,\n },\n web: {\n mtlsSupported: false,\n certificateStorage: 'browser-managed',\n fallbackToJWT: true,\n defaultTimeout: 30000,\n },\n} as const;\n","import { PlatformAdapters } from '@/application/ports/driven';\nimport { createPrefixedLogger, detectPlatform } from '@/shared/utils';\n\nimport { loadMTLSAdapter } from './mtls-loader';\nimport { loadNetworkMonitor } from './network-loader';\nimport { loadStorageAdapters } from './storage-loader';\n\nconst log = createPrefixedLogger('ADAPTER-LOADER');\n\nexport interface MTLSAdapterConfig {\n baseUrl?: string;\n port?: number;\n timeout?: number;\n validateCertificate?: boolean;\n autoInitialize?: boolean;\n}\n\nexport interface PlatformAdapterOptions {\n mtlsConfig?: MTLSAdapterConfig;\n}\n\nexport function loadPlatformAdapters(options: PlatformAdapterOptions = {}): PlatformAdapters {\n const { mtlsConfig } = options;\n const { platform } = detectPlatform();\n\n log.debug('Loading adapters for platform:', platform);\n\n const storageAdapters = loadStorageAdapters(platform);\n const networkMonitor = loadNetworkMonitor(platform);\n const mtls = loadMTLSAdapter(platform, mtlsConfig);\n\n log.debug('Adapters loaded:', {\n platform,\n hasStorage: !!storageAdapters.storage,\n hasSecureStorage: !!storageAdapters.secureStorage,\n hasNetworkMonitor: !!networkMonitor,\n hasMTLS: !!mtls,\n });\n\n return {\n ...storageAdapters,\n networkMonitor,\n mtls: mtls || undefined,\n };\n}\n\nexport function createACubeMTLSConfig(\n baseUrl: string,\n timeout?: number,\n autoInitialize = true,\n forcePort444 = true\n): MTLSAdapterConfig {\n const mtlsBaseUrl =\n forcePort444 && !baseUrl.includes(':444') ? baseUrl.replace(/:\\d+$/, '') + ':444' : baseUrl;\n\n return {\n baseUrl: mtlsBaseUrl,\n port: 444,\n timeout: timeout || 30000,\n validateCertificate: true,\n autoInitialize,\n };\n}\n","export const DI_TOKENS = {\n HTTP_PORT: Symbol('HTTP_PORT'),\n STORAGE_PORT: Symbol('STORAGE_PORT'),\n SECURE_STORAGE_PORT: Symbol('SECURE_STORAGE_PORT'),\n NETWORK_PORT: Symbol('NETWORK_PORT'),\n MTLS_PORT: Symbol('MTLS_PORT'),\n TOKEN_STORAGE_PORT: Symbol('TOKEN_STORAGE_PORT'),\n\n RECEIPT_REPOSITORY: Symbol('RECEIPT_REPOSITORY'),\n MERCHANT_REPOSITORY: Symbol('MERCHANT_REPOSITORY'),\n CASHIER_REPOSITORY: Symbol('CASHIER_REPOSITORY'),\n CASH_REGISTER_REPOSITORY: Symbol('CASH_REGISTER_REPOSITORY'),\n POINT_OF_SALE_REPOSITORY: Symbol('POINT_OF_SALE_REPOSITORY'),\n SUPPLIER_REPOSITORY: Symbol('SUPPLIER_REPOSITORY'),\n PEM_REPOSITORY: Symbol('PEM_REPOSITORY'),\n DAILY_REPORT_REPOSITORY: Symbol('DAILY_REPORT_REPOSITORY'),\n JOURNAL_REPOSITORY: Symbol('JOURNAL_REPOSITORY'),\n NOTIFICATION_REPOSITORY: Symbol('NOTIFICATION_REPOSITORY'),\n TELEMETRY_REPOSITORY: Symbol('TELEMETRY_REPOSITORY'),\n\n RECEIPT_SERVICE: Symbol('RECEIPT_SERVICE'),\n AUTH_SERVICE: Symbol('AUTH_SERVICE'),\n AUTHENTICATION_SERVICE: Symbol('AUTHENTICATION_SERVICE'),\n CERTIFICATE_SERVICE: Symbol('CERTIFICATE_SERVICE'),\n NOTIFICATION_SERVICE: Symbol('NOTIFICATION_SERVICE'),\n TELEMETRY_SERVICE: Symbol('TELEMETRY_SERVICE'),\n} as const;\n\nexport class DIContainer {\n private services = new Map<symbol, unknown>();\n private factories = new Map<symbol, () => unknown>();\n\n register<T>(token: symbol, instance: T): void {\n this.services.set(token, instance);\n }\n\n registerFactory<T>(token: symbol, factory: () => T): void {\n this.factories.set(token, factory);\n }\n\n get<T>(token: symbol): T {\n if (this.services.has(token)) {\n return this.services.get(token) as T;\n }\n\n if (this.factories.has(token)) {\n const factory = this.factories.get(token)!;\n const instance = factory() as T;\n this.services.set(token, instance);\n return instance;\n }\n\n throw new Error(`Service not registered: ${token.toString()}`);\n }\n\n has(token: symbol): boolean {\n return this.services.has(token) || this.factories.has(token);\n }\n\n clear(): void {\n this.services.clear();\n this.factories.clear();\n }\n}\n","import {\n Receipt,\n ReceiptDetails,\n ReceiptInput,\n ReceiptItem,\n ReceiptListParams,\n ReceiptProofType,\n ReceiptReturnInput,\n ReceiptReturnItem,\n ReturnViaDifferentDeviceInput,\n ReturnWithProofInput,\n ReturnableReceiptItem,\n VoidReceiptInput,\n VoidViaDifferentDeviceInput,\n VoidWithProofInput,\n} from '@/domain/entities/receipt.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\nimport { GoodOrService, VatRateCode } from '@/domain/value-objects/vat-code.vo';\nimport { formatDecimal } from '@/shared/utils';\n\nexport interface ReceiptItemApiInput {\n type?: GoodOrService;\n quantity: string;\n description: string;\n unit_price: string;\n vat_rate_code?: VatRateCode;\n simplified_vat_allocation?: boolean;\n discount?: string;\n is_down_payment_or_voucher_redemption?: boolean;\n complimentary?: boolean;\n}\n\nexport interface ReceiptApiInput {\n items: ReceiptItemApiInput[];\n customer_tax_code?: string;\n customer_lottery_code?: string;\n discount?: string;\n invoice_issuing?: boolean;\n uncollected_dcr_to_ssn?: boolean;\n services_uncollected_amount?: string;\n goods_uncollected_amount?: string;\n cash_payment_amount?: string;\n electronic_payment_amount?: string;\n ticket_restaurant_payment_amount?: string;\n ticket_restaurant_quantity?: number;\n}\n\nexport interface ReceiptApiOutput {\n uuid: string;\n type: 'sale' | 'return' | 'void';\n created_at: string;\n total_amount: string;\n document_number: string;\n document_datetime?: string;\n is_returnable: boolean;\n is_voidable: boolean;\n pdf_url?: string;\n parent_receipt_uuid?: string;\n}\n\nexport interface ReceiptDetailsApiOutput extends ReceiptApiOutput {\n customer_lottery_code?: string;\n vat_number: string;\n total_taxable_amount: string;\n total_uncollected_amount: string;\n deductible_amount: string;\n total_vat_amount: string;\n total_discount: string;\n total_gross_discount: string;\n discount: string;\n items?: ReceiptItemApiInput[];\n}\n\nexport interface ReceiptReturnApiInput {\n items: Array<{ id: number; quantity: string }>;\n document_number: string;\n}\n\nexport interface VoidReceiptApiInput {\n document_number: string;\n}\n\nexport interface VoidViaDifferentDeviceApiInput {\n device_id: string;\n items: ReceiptItemApiInput[];\n document_number: string;\n document_datetime: string;\n lottery_code?: string;\n}\n\nexport interface VoidWithProofApiInput {\n items: ReceiptItemApiInput[];\n proof: ReceiptProofType;\n document_datetime: string;\n}\n\nexport interface ReturnViaDifferentDeviceApiInput {\n device_id: string;\n items: ReceiptItemApiInput[];\n document_number: string;\n document_datetime: string;\n lottery_code?: string;\n}\n\nexport interface ReturnWithProofApiInput {\n items: ReceiptItemApiInput[];\n proof: ReceiptProofType;\n document_datetime: string;\n}\n\nexport interface ReturnableReceiptItemApiOutput {\n id: number;\n type?: GoodOrService;\n quantity: string;\n returned_quantity: string;\n description: string;\n unit_price: string;\n vat_rate_code?: VatRateCode;\n}\n\nexport class ReceiptMapper {\n static toApiInput(input: ReceiptInput): ReceiptApiInput {\n return {\n items: input.items.map((item) => this.itemToApiInput(item)),\n customer_tax_code: input.customerTaxCode,\n customer_lottery_code: input.customerLotteryCode,\n discount: formatDecimal(input.discount),\n invoice_issuing: input.invoiceIssuing,\n uncollected_dcr_to_ssn: input.uncollectedDcrToSsn,\n services_uncollected_amount: formatDecimal(input.servicesUncollectedAmount),\n goods_uncollected_amount: formatDecimal(input.goodsUncollectedAmount),\n cash_payment_amount: formatDecimal(input.cashPaymentAmount),\n electronic_payment_amount: formatDecimal(input.electronicPaymentAmount),\n ticket_restaurant_payment_amount: formatDecimal(input.ticketRestaurantPaymentAmount),\n ticket_restaurant_quantity: input.ticketRestaurantQuantity,\n };\n }\n\n static itemToApiInput(item: ReceiptItem): ReceiptItemApiInput {\n return {\n type: item.type,\n quantity: formatDecimal(item.quantity) as string,\n description: item.description,\n unit_price: formatDecimal(item.unitPrice) as string,\n vat_rate_code: item.vatRateCode,\n simplified_vat_allocation: item.simplifiedVatAllocation,\n discount: formatDecimal(item.discount),\n is_down_payment_or_voucher_redemption: item.isDownPaymentOrVoucherRedemption,\n complimentary: item.complimentary,\n };\n }\n\n static fromApiOutput(output: ReceiptApiOutput): Receipt {\n return {\n uuid: output.uuid,\n type: output.type,\n createdAt: output.created_at,\n totalAmount: output.total_amount,\n documentNumber: output.document_number,\n documentDatetime: output.document_datetime,\n isReturnable: output.is_returnable,\n isVoidable: output.is_voidable,\n pdfUrl: output.pdf_url,\n parentReceiptUuid: output.parent_receipt_uuid,\n };\n }\n\n static fromApiDetailsOutput(output: ReceiptDetailsApiOutput): ReceiptDetails {\n return {\n ...this.fromApiOutput(output),\n customerLotteryCode: output.customer_lottery_code,\n vatNumber: output.vat_number,\n totalTaxableAmount: output.total_taxable_amount,\n totalUncollectedAmount: output.total_uncollected_amount,\n deductibleAmount: output.deductible_amount,\n totalVatAmount: output.total_vat_amount,\n totalDiscount: output.total_discount,\n totalGrossDiscount: output.total_gross_discount,\n discount: output.discount,\n items: output.items?.map((item) => this.itemFromApiOutput(item)),\n };\n }\n\n static itemFromApiOutput(item: ReceiptItemApiInput): ReceiptItem {\n return {\n type: item.type,\n quantity: item.quantity,\n description: item.description,\n unitPrice: item.unit_price,\n vatRateCode: item.vat_rate_code,\n simplifiedVatAllocation: item.simplified_vat_allocation,\n discount: item.discount,\n isDownPaymentOrVoucherRedemption: item.is_down_payment_or_voucher_redemption,\n complimentary: item.complimentary,\n };\n }\n\n static returnItemToApiInput(item: ReceiptReturnItem): { id: number; quantity: string } {\n return {\n id: item.id,\n quantity: formatDecimal(item.quantity) as string,\n };\n }\n\n static returnInputToApi(input: ReceiptReturnInput): ReceiptReturnApiInput {\n return {\n items: input.items.map((item) => this.returnItemToApiInput(item)),\n document_number: input.documentNumber,\n };\n }\n\n static voidInputToApi(input: VoidReceiptInput): VoidReceiptApiInput {\n return {\n document_number: input.documentNumber,\n };\n }\n\n static returnableItemFromApi(item: ReturnableReceiptItemApiOutput): ReturnableReceiptItem {\n return {\n id: item.id,\n type: item.type,\n quantity: item.quantity,\n returnedQuantity: item.returned_quantity,\n description: item.description,\n unitPrice: item.unit_price,\n vatRateCode: item.vat_rate_code,\n };\n }\n\n static toListParams(params: ReceiptListParams): Record<string, string | number | undefined> {\n return {\n page: params.page,\n size: params.size,\n status: params.status,\n sort: params.sort,\n document_number: params.documentNumber,\n 'document_datetime[before]': params.documentDatetimeBefore,\n 'document_datetime[after]': params.documentDatetimeAfter ?? undefined,\n };\n }\n\n static pageFromApi(response: {\n members: ReceiptApiOutput[];\n total?: number;\n page?: number;\n size?: number;\n pages?: number;\n }): Page<Receipt> {\n return {\n members: response.members.map((r) => this.fromApiOutput(r)),\n total: response.total,\n page: response.page,\n size: response.size,\n pages: response.pages,\n };\n }\n\n static voidViaDifferentDeviceToApi(\n input: VoidViaDifferentDeviceInput\n ): VoidViaDifferentDeviceApiInput {\n return {\n device_id: input.deviceId,\n items: input.items.map((item) => this.itemToApiInput(item)),\n document_number: input.documentNumber,\n document_datetime: input.documentDatetime,\n lottery_code: input.lotteryCode,\n };\n }\n\n static voidWithProofToApi(input: VoidWithProofInput): VoidWithProofApiInput {\n return {\n items: input.items.map((item) => this.itemToApiInput(item)),\n proof: input.proof,\n document_datetime: input.documentDatetime,\n };\n }\n\n static returnViaDifferentDeviceToApi(\n input: ReturnViaDifferentDeviceInput\n ): ReturnViaDifferentDeviceApiInput {\n return {\n device_id: input.deviceId,\n items: input.items.map((item) => this.itemToApiInput(item)),\n document_number: input.documentNumber,\n document_datetime: input.documentDatetime,\n lottery_code: input.lotteryCode,\n };\n }\n\n static returnWithProofToApi(input: ReturnWithProofInput): ReturnWithProofApiInput {\n return {\n items: input.items.map((item) => this.itemToApiInput(item)),\n proof: input.proof,\n document_datetime: input.documentDatetime,\n };\n }\n}\n","import {\n ReceiptApiOutput,\n ReceiptDetailsApiOutput,\n ReceiptMapper,\n ReturnableReceiptItemApiOutput,\n} from '@/application/dto/receipt.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport {\n Receipt,\n ReceiptDetails,\n ReceiptInput,\n ReceiptListParams,\n ReceiptReturnInput,\n ReturnViaDifferentDeviceInput,\n ReturnWithProofInput,\n ReturnableReceiptItem,\n VoidReceiptInput,\n VoidViaDifferentDeviceInput,\n VoidWithProofInput,\n} from '@/domain/entities/receipt.entity';\nimport { IReceiptRepository } from '@/domain/repositories/receipt.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class ReceiptRepositoryImpl implements IReceiptRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async create(input: ReceiptInput): Promise<Receipt> {\n const apiInput = ReceiptMapper.toApiInput(input);\n const response = await this.http.post<ReceiptApiOutput>('/mf1/receipts', apiInput);\n return ReceiptMapper.fromApiOutput(response.data);\n }\n\n async findById(receiptUuid: string): Promise<Receipt> {\n const response = await this.http.get<ReceiptApiOutput>(`/mf1/receipts/${receiptUuid}`);\n return ReceiptMapper.fromApiOutput(response.data);\n }\n\n async findAll(params: ReceiptListParams): Promise<Page<Receipt>> {\n const queryParams = ReceiptMapper.toListParams(params);\n const response = await this.http.get<Page<ReceiptApiOutput>>(\n `/mf1/pems/${params.serialNumber}/receipts`,\n { params: queryParams }\n );\n return ReceiptMapper.pageFromApi(response.data);\n }\n\n async getDetails(receiptUuid: string, format: 'json'): Promise<ReceiptDetails>;\n async getDetails(receiptUuid: string, format: 'pdf'): Promise<string>;\n async getDetails(receiptUuid: string, format: 'json' | 'pdf'): Promise<ReceiptDetails | string> {\n if (format === 'pdf') {\n const response = await this.http.get<string>(`/mf1/receipts/${receiptUuid}/details`, {\n headers: { Accept: 'application/pdf' },\n responseType: 'arraybuffer',\n });\n return response.data;\n }\n const response = await this.http.get<ReceiptDetailsApiOutput>(\n `/mf1/receipts/${receiptUuid}/details`,\n { headers: { Accept: 'application/json' } }\n );\n return ReceiptMapper.fromApiDetailsOutput(response.data);\n }\n\n async getReturnableItems(receiptUuid: string): Promise<ReturnableReceiptItem[]> {\n const response = await this.http.get<ReturnableReceiptItemApiOutput[]>(\n `/mf1/receipts/${receiptUuid}/returnable-items`\n );\n return response.data.map((item) => ReceiptMapper.returnableItemFromApi(item));\n }\n\n async voidReceipt(input: VoidReceiptInput): Promise<void> {\n const apiInput = ReceiptMapper.voidInputToApi(input);\n await this.http.delete('/mf1/receipts', { data: apiInput });\n }\n\n async voidViaDifferentDevice(input: VoidViaDifferentDeviceInput): Promise<void> {\n const apiInput = ReceiptMapper.voidViaDifferentDeviceToApi(input);\n await this.http.delete('/mf1/receipts/void-via-different-device', { data: apiInput });\n }\n\n async voidWithProof(input: VoidWithProofInput): Promise<void> {\n const apiInput = ReceiptMapper.voidWithProofToApi(input);\n await this.http.delete('/mf1/receipts/void-with-proof', { data: apiInput });\n }\n\n async returnItems(input: ReceiptReturnInput): Promise<Receipt> {\n const apiInput = ReceiptMapper.returnInputToApi(input);\n const response = await this.http.post<ReceiptApiOutput>('/mf1/receipts/return', apiInput);\n return ReceiptMapper.fromApiOutput(response.data);\n }\n\n async returnViaDifferentDevice(input: ReturnViaDifferentDeviceInput): Promise<Receipt> {\n const apiInput = ReceiptMapper.returnViaDifferentDeviceToApi(input);\n const response = await this.http.post<ReceiptApiOutput>(\n '/mf1/receipts/return-via-different-device',\n apiInput\n );\n return ReceiptMapper.fromApiOutput(response.data);\n }\n\n async returnWithProof(input: ReturnWithProofInput): Promise<Receipt> {\n const apiInput = ReceiptMapper.returnWithProofToApi(input);\n const response = await this.http.post<ReceiptApiOutput>(\n '/mf1/receipts/return-with-proof',\n apiInput\n );\n return ReceiptMapper.fromApiOutput(response.data);\n }\n}\n","import {\n Merchant,\n MerchantCreateInput,\n MerchantUpdateInput,\n} from '@/domain/entities/merchant.entity';\nimport { Address } from '@/domain/value-objects/address.vo';\n\nexport interface AddressApiOutput {\n street_address: string;\n street_number: string;\n zip_code: string;\n city: string;\n province: string;\n}\n\nexport interface MerchantApiOutput {\n uuid: string;\n vat_number: string;\n fiscal_code?: string | null;\n email: string;\n business_name?: string | null;\n first_name?: string | null;\n last_name?: string | null;\n address?: AddressApiOutput;\n}\n\nexport interface MerchantCreateApiInput {\n vat_number: string;\n fiscal_code?: string;\n business_name?: string | null;\n first_name?: string | null;\n last_name?: string | null;\n email: string;\n password: string;\n address?: AddressApiOutput;\n}\n\nexport interface MerchantUpdateApiInput {\n business_name?: string | null;\n first_name?: string | null;\n last_name?: string | null;\n address?: AddressApiOutput | null;\n}\n\nexport class AddressMapper {\n static toApi(address: Address): AddressApiOutput {\n return {\n street_address: address.streetAddress,\n street_number: address.streetNumber,\n zip_code: address.zipCode,\n city: address.city,\n province: address.province,\n };\n }\n\n static fromApi(address: AddressApiOutput): Address {\n return {\n streetAddress: address.street_address,\n streetNumber: address.street_number,\n zipCode: address.zip_code,\n city: address.city,\n province: address.province,\n };\n }\n}\n\nexport class MerchantMapper {\n static toCreateApiInput(input: MerchantCreateInput): MerchantCreateApiInput {\n return {\n vat_number: input.vatNumber,\n fiscal_code: input.fiscalCode,\n business_name: input.businessName,\n first_name: input.firstName,\n last_name: input.lastName,\n email: input.email,\n password: input.password,\n address: input.address ? AddressMapper.toApi(input.address) : undefined,\n };\n }\n\n static toUpdateApiInput(input: MerchantUpdateInput): MerchantUpdateApiInput {\n return {\n business_name: input.businessName,\n first_name: input.firstName,\n last_name: input.lastName,\n address: input.address ? AddressMapper.toApi(input.address) : input.address,\n };\n }\n\n static fromApiOutput(output: MerchantApiOutput): Merchant {\n return {\n uuid: output.uuid,\n vatNumber: output.vat_number,\n fiscalCode: output.fiscal_code,\n email: output.email,\n businessName: output.business_name,\n firstName: output.first_name,\n lastName: output.last_name,\n address: output.address ? AddressMapper.fromApi(output.address) : undefined,\n };\n }\n\n static pageFromApi(response: MerchantApiOutput[]): Merchant[] {\n return response.map((m) => this.fromApiOutput(m));\n }\n}\n","import { MerchantApiOutput, MerchantMapper } from '@/application/dto/merchant.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport {\n Merchant,\n MerchantCreateInput,\n MerchantUpdateInput,\n MerchantsParams,\n} from '@/domain/entities/merchant.entity';\nimport { IMerchantRepository } from '@/domain/repositories/merchant.repository';\n\nexport class MerchantRepositoryImpl implements IMerchantRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async create(input: MerchantCreateInput): Promise<Merchant> {\n const apiInput = MerchantMapper.toCreateApiInput(input);\n const response = await this.http.post<MerchantApiOutput>('/mf2/merchants', apiInput);\n return MerchantMapper.fromApiOutput(response.data);\n }\n\n async findById(uuid: string): Promise<Merchant> {\n const response = await this.http.get<MerchantApiOutput>(`/mf2/merchants/${uuid}`);\n return MerchantMapper.fromApiOutput(response.data);\n }\n\n async findAll(params?: MerchantsParams): Promise<Merchant[]> {\n const response = await this.http.get<MerchantApiOutput[]>('/mf2/merchants', {\n params: { page: params?.page },\n });\n return MerchantMapper.pageFromApi(response.data);\n }\n\n async update(uuid: string, input: MerchantUpdateInput): Promise<Merchant> {\n const apiInput = MerchantMapper.toUpdateApiInput(input);\n const response = await this.http.put<MerchantApiOutput>(`/mf2/merchants/${uuid}`, apiInput);\n return MerchantMapper.fromApiOutput(response.data);\n }\n}\n","import { Cashier, CashierCreateInput, CashierStatus } from '@/domain/entities/cashier.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport interface CashierApiOutput {\n uuid: string;\n merchant_uuid: string;\n display_name: string | null;\n email: string;\n name: string;\n status: CashierStatus;\n}\n\nexport interface CashierCreateApiInput {\n email: string;\n password: string;\n name: string;\n display_name: string | null;\n}\n\nexport class CashierMapper {\n static toCreateApiInput(input: CashierCreateInput): CashierCreateApiInput {\n return {\n email: input.email,\n password: input.password,\n name: input.name,\n display_name: input.displayName ?? null,\n };\n }\n\n static fromApiOutput(output: CashierApiOutput): Cashier {\n return {\n uuid: output.uuid,\n merchantUuid: output.merchant_uuid,\n displayName: output.display_name,\n email: output.email,\n name: output.name,\n status: output.status,\n };\n }\n\n static pageFromApi(response: Page<CashierApiOutput>): Page<Cashier> {\n return {\n members: response.members.map((c) => this.fromApiOutput(c)),\n total: response.total,\n page: response.page,\n size: response.size,\n pages: response.pages,\n };\n }\n}\n","import { CashierApiOutput, CashierMapper } from '@/application/dto/cashier.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { Cashier, CashierCreateInput, CashierListParams } from '@/domain/entities/cashier.entity';\nimport { ICashierRepository } from '@/domain/repositories/cashier.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class CashierRepositoryImpl implements ICashierRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async create(input: CashierCreateInput): Promise<Cashier> {\n const apiInput = CashierMapper.toCreateApiInput(input);\n const response = await this.http.post<CashierApiOutput>('/mf1/cashiers', apiInput);\n return CashierMapper.fromApiOutput(response.data);\n }\n\n async findMe(): Promise<Cashier> {\n const response = await this.http.get<CashierApiOutput>('/mf1/cashiers/me');\n return CashierMapper.fromApiOutput(response.data);\n }\n\n async findById(uuid: string): Promise<Cashier> {\n const response = await this.http.get<CashierApiOutput>(`/mf1/cashiers/${uuid}`);\n return CashierMapper.fromApiOutput(response.data);\n }\n\n async findAll(params?: CashierListParams): Promise<Page<Cashier>> {\n const response = await this.http.get<Page<CashierApiOutput>>('/mf1/cashiers', {\n params: { page: params?.page, size: params?.size, status: params?.status },\n });\n return CashierMapper.pageFromApi(response.data);\n }\n\n async delete(uuid: string): Promise<void> {\n await this.http.delete(`/mf1/cashiers/${uuid}`);\n }\n}\n","import {\n CashRegister,\n CashRegisterCreateInput,\n CashRegisterDetailed,\n CashRegisterUpdateInput,\n} from '@/domain/entities/cash-register.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport interface CashRegisterApiOutput {\n uuid: string;\n pem_serial_number: string;\n name: string;\n}\n\nexport interface CashRegisterDetailedApiOutput extends CashRegisterApiOutput {\n mtls_certificate: string;\n private_key: string;\n}\n\nexport interface CashRegisterCreateApiInput {\n pem_serial_number: string;\n name: string;\n}\n\nexport interface CashRegisterUpdateApiInput {\n name: string;\n}\n\nexport class CashRegisterMapper {\n static toCreateApiInput(input: CashRegisterCreateInput): CashRegisterCreateApiInput {\n return {\n pem_serial_number: input.pemSerialNumber,\n name: input.name,\n };\n }\n\n static toUpdateApiInput(input: CashRegisterUpdateInput): CashRegisterUpdateApiInput {\n return {\n name: input.name,\n };\n }\n\n static fromApiOutput(output: CashRegisterApiOutput): CashRegister {\n return {\n uuid: output.uuid,\n pemSerialNumber: output.pem_serial_number,\n name: output.name,\n };\n }\n\n static fromDetailedApiOutput(output: CashRegisterDetailedApiOutput): CashRegisterDetailed {\n return {\n ...this.fromApiOutput(output),\n mtlsCertificate: output.mtls_certificate,\n privateKey: output.private_key,\n };\n }\n\n static pageFromApi(response: Page<CashRegisterApiOutput>): Page<CashRegister> {\n return {\n members: response.members.map((c) => this.fromApiOutput(c)),\n total: response.total,\n page: response.page,\n size: response.size,\n pages: response.pages,\n };\n }\n}\n","import {\n CashRegisterApiOutput,\n CashRegisterDetailedApiOutput,\n CashRegisterMapper,\n} from '@/application/dto/cash-register.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport {\n CashRegister,\n CashRegisterCreateInput,\n CashRegisterDetailed,\n CashRegisterListParams,\n CashRegisterUpdateInput,\n} from '@/domain/entities/cash-register.entity';\nimport { ICashRegisterRepository } from '@/domain/repositories/cash-register.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class CashRegisterRepositoryImpl implements ICashRegisterRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async create(input: CashRegisterCreateInput): Promise<CashRegisterDetailed> {\n const apiInput = CashRegisterMapper.toCreateApiInput(input);\n const response = await this.http.post<CashRegisterDetailedApiOutput>(\n '/mf1/cash-registers',\n apiInput\n );\n return CashRegisterMapper.fromDetailedApiOutput(response.data);\n }\n\n async findById(uuid: string): Promise<CashRegister> {\n const response = await this.http.get<CashRegisterApiOutput>(`/mf1/cash-registers/${uuid}`);\n return CashRegisterMapper.fromApiOutput(response.data);\n }\n\n async findAll(params?: CashRegisterListParams): Promise<Page<CashRegister>> {\n const response = await this.http.get<Page<CashRegisterApiOutput>>('/mf1/cash-registers', {\n params: {\n page: params?.page,\n size: params?.size,\n pem_id: params?.pemId,\n },\n });\n return CashRegisterMapper.pageFromApi(response.data);\n }\n\n async update(uuid: string, input: CashRegisterUpdateInput): Promise<CashRegister> {\n const apiInput = CashRegisterMapper.toUpdateApiInput(input);\n const response = await this.http.patch<CashRegisterApiOutput>(\n `/mf1/cash-registers/${uuid}`,\n apiInput\n );\n return CashRegisterMapper.fromApiOutput(response.data);\n }\n}\n","import {\n ActivationRequest,\n PEMStatus,\n PEMStatusOfflineRequest,\n PointOfSale,\n PointOfSaleDetailed,\n} from '@/domain/entities/point-of-sale.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nimport { AddressApiOutput, AddressMapper } from './merchant.dto';\n\nexport interface PointOfSaleApiOutput {\n serial_number: string;\n status: PEMStatus;\n address: AddressApiOutput;\n operational_status: string;\n}\n\nexport interface PointOfSaleDetailedApiOutput extends PointOfSaleApiOutput {\n registration_key?: string;\n}\n\nexport interface ActivationRequestApiInput {\n registration_key: string;\n}\n\nexport interface PEMStatusOfflineRequestApiInput {\n timestamp: string;\n reason: string;\n}\n\nexport class PointOfSaleMapper {\n static toActivationApiInput(input: ActivationRequest): ActivationRequestApiInput {\n return {\n registration_key: input.registrationKey,\n };\n }\n\n static toOfflineApiInput(input: PEMStatusOfflineRequest): PEMStatusOfflineRequestApiInput {\n return {\n timestamp: input.timestamp,\n reason: input.reason,\n };\n }\n\n static fromApiOutput(output: PointOfSaleApiOutput): PointOfSale {\n return {\n serialNumber: output.serial_number,\n status: output.status,\n address: AddressMapper.fromApi(output.address),\n operationalStatus: output.operational_status,\n };\n }\n\n static fromDetailedApiOutput(output: PointOfSaleDetailedApiOutput): PointOfSaleDetailed {\n return {\n ...this.fromApiOutput(output),\n registrationKey: output.registration_key,\n };\n }\n\n static pageFromApi(response: Page<PointOfSaleApiOutput>): Page<PointOfSale> {\n return {\n members: response.members.map((p) => this.fromApiOutput(p)),\n total: response.total,\n page: response.page,\n size: response.size,\n pages: response.pages,\n };\n }\n}\n","import {\n PointOfSaleApiOutput,\n PointOfSaleDetailedApiOutput,\n PointOfSaleMapper,\n} from '@/application/dto/point-of-sale.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport {\n ActivationRequest,\n PEMStatusOfflineRequest,\n PointOfSale,\n PointOfSaleDetailed,\n PointOfSaleListParams,\n} from '@/domain/entities/point-of-sale.entity';\nimport { IPointOfSaleRepository } from '@/domain/repositories/point-of-sale.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class PointOfSaleRepositoryImpl implements IPointOfSaleRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async findById(serialNumber: string): Promise<PointOfSaleDetailed> {\n const response = await this.http.get<PointOfSaleDetailedApiOutput>(`/mf1/pems/${serialNumber}`);\n return PointOfSaleMapper.fromDetailedApiOutput(response.data);\n }\n\n async findAll(params?: PointOfSaleListParams): Promise<Page<PointOfSale>> {\n const response = await this.http.get<Page<PointOfSaleApiOutput>>('/mf1/pems', {\n params: {\n status: params?.status,\n page: params?.page,\n size: params?.size,\n },\n });\n return PointOfSaleMapper.pageFromApi(response.data);\n }\n\n async activate(serialNumber: string, input: ActivationRequest): Promise<void> {\n const apiInput = PointOfSaleMapper.toActivationApiInput(input);\n await this.http.post(`/mf1/pems/${serialNumber}/activation`, apiInput);\n }\n\n async closeJournal(serialNumber: string): Promise<void> {\n await this.http.post(`/mf1/pems/${serialNumber}/close`);\n }\n\n async createInactivity(serialNumber: string): Promise<void> {\n await this.http.post(`/mf1/pems/${serialNumber}/inactivity`);\n }\n\n async communicateOffline(serialNumber: string, input: PEMStatusOfflineRequest): Promise<void> {\n const apiInput = PointOfSaleMapper.toOfflineApiInput(input);\n await this.http.post(`/mf1/pems/${serialNumber}/communicate-offline`, apiInput);\n }\n}\n","import {\n Supplier,\n SupplierCreateInput,\n SupplierUpdateInput,\n} from '@/domain/entities/supplier.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nimport { AddressApiOutput, AddressMapper } from './merchant.dto';\n\nexport interface SupplierApiOutput {\n uuid: string;\n fiscal_id: string;\n name: string;\n address?: AddressApiOutput;\n}\n\nexport interface SupplierCreateApiInput {\n fiscal_id: string;\n name: string;\n address?: AddressApiOutput;\n}\n\nexport interface SupplierUpdateApiInput {\n name: string;\n address?: AddressApiOutput;\n}\n\nexport class SupplierMapper {\n static toCreateApiInput(input: SupplierCreateInput): SupplierCreateApiInput {\n return {\n fiscal_id: input.fiscalId,\n name: input.name,\n address: input.address ? AddressMapper.toApi(input.address) : undefined,\n };\n }\n\n static toUpdateApiInput(input: SupplierUpdateInput): SupplierUpdateApiInput {\n return {\n name: input.name,\n address: input.address ? AddressMapper.toApi(input.address) : undefined,\n };\n }\n\n static fromApiOutput(output: SupplierApiOutput): Supplier {\n return {\n uuid: output.uuid,\n fiscalId: output.fiscal_id,\n name: output.name,\n address: output.address ? AddressMapper.fromApi(output.address) : undefined,\n };\n }\n\n static pageFromApi(response: {\n members: SupplierApiOutput[];\n total?: number;\n page?: number;\n size?: number;\n pages?: number;\n }): Page<Supplier> {\n return {\n members: response.members.map((s) => this.fromApiOutput(s)),\n total: response.total,\n page: response.page,\n size: response.size,\n pages: response.pages,\n };\n }\n}\n","import { SupplierApiOutput, SupplierMapper } from '@/application/dto/supplier.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport {\n Supplier,\n SupplierCreateInput,\n SupplierUpdateInput,\n SuppliersParams,\n} from '@/domain/entities/supplier.entity';\nimport { ISupplierRepository } from '@/domain/repositories/supplier.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class SupplierRepositoryImpl implements ISupplierRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async create(merchantUuid: string, input: SupplierCreateInput): Promise<Supplier> {\n const apiInput = SupplierMapper.toCreateApiInput(input);\n const response = await this.http.post<SupplierApiOutput>(\n `/mf2/merchants/${merchantUuid}/suppliers`,\n apiInput\n );\n return SupplierMapper.fromApiOutput(response.data);\n }\n\n async findById(merchantUuid: string, supplierUuid: string): Promise<Supplier> {\n const response = await this.http.get<SupplierApiOutput>(\n `/mf2/merchants/${merchantUuid}/suppliers/${supplierUuid}`\n );\n return SupplierMapper.fromApiOutput(response.data);\n }\n\n async findAll(merchantUuid: string, params?: SuppliersParams): Promise<Page<Supplier>> {\n const response = await this.http.get<Page<SupplierApiOutput>>(\n `/mf2/merchants/${merchantUuid}/suppliers`,\n { params: { page: params?.page } }\n );\n return SupplierMapper.pageFromApi(response.data);\n }\n\n async update(\n merchantUuid: string,\n supplierUuid: string,\n input: SupplierUpdateInput\n ): Promise<Supplier> {\n const apiInput = SupplierMapper.toUpdateApiInput(input);\n const response = await this.http.patch<SupplierApiOutput>(\n `/mf2/merchants/${merchantUuid}/suppliers/${supplierUuid}`,\n apiInput\n );\n return SupplierMapper.fromApiOutput(response.data);\n }\n\n async delete(merchantUuid: string, supplierUuid: string): Promise<void> {\n await this.http.delete(`/mf2/merchants/${merchantUuid}/suppliers/${supplierUuid}`);\n }\n}\n","import { PemCertificates, PemCreateInput, PemCreateOutput } from '@/domain/entities/pem.entity';\nimport { PointOfSaleMf2 } from '@/domain/entities/point-of-sale.entity';\n\nimport { AddressApiOutput } from './merchant.dto';\n\nexport interface PemCreateApiInput {\n merchant_uuid: string;\n address?: {\n street_address: string;\n street_number: string;\n zip_code: string;\n city: string;\n province: string;\n };\n}\n\nexport interface PemCreateApiOutput {\n serial_number: string;\n registration_key: string;\n}\n\nexport interface PemCertificatesApiOutput {\n mtls_certificate: string;\n activation_xml_response?: string;\n}\n\nexport interface PointOfSaleMf2ApiOutput {\n serial_number: string;\n status: 'NEW' | 'REGISTERED' | 'ACTIVATED' | 'ONLINE' | 'OFFLINE' | 'DISCARDED';\n type: 'AP' | 'SP' | 'TM' | 'PV';\n address?: AddressApiOutput;\n}\n\nexport class PemMapper {\n static toCreateApiInput(input: PemCreateInput): PemCreateApiInput {\n const apiInput: PemCreateApiInput = {\n merchant_uuid: input.merchantUuid,\n };\n\n if (input.address) {\n apiInput.address = {\n street_address: input.address.streetAddress,\n street_number: input.address.streetNumber,\n zip_code: input.address.zipCode,\n city: input.address.city,\n province: input.address.province,\n };\n }\n\n return apiInput;\n }\n\n static fromCreateApiOutput(output: PemCreateApiOutput): PemCreateOutput {\n return {\n serialNumber: output.serial_number,\n registrationKey: output.registration_key,\n };\n }\n\n static fromCertificatesApiOutput(output: PemCertificatesApiOutput): PemCertificates {\n return {\n mtlsCertificate: output.mtls_certificate,\n activationXmlResponse: output.activation_xml_response,\n };\n }\n\n static fromPointOfSaleMf2ApiOutput(output: PointOfSaleMf2ApiOutput): PointOfSaleMf2 {\n return {\n serialNumber: output.serial_number,\n status: output.status,\n type: output.type,\n address: output.address\n ? {\n streetAddress: output.address.street_address,\n streetNumber: output.address.street_number ?? '',\n zipCode: output.address.zip_code,\n city: output.address.city,\n province: output.address.province,\n }\n : undefined,\n };\n }\n\n static pageFromApi(data: PointOfSaleMf2ApiOutput[]): PointOfSaleMf2[] {\n return data.map((item) => PemMapper.fromPointOfSaleMf2ApiOutput(item));\n }\n}\n","import {\n PemCertificatesApiOutput,\n PemCreateApiOutput,\n PemMapper,\n PointOfSaleMf2ApiOutput,\n} from '@/application/dto/pem.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { PemCertificates, PemCreateInput, PemCreateOutput } from '@/domain/entities/pem.entity';\nimport { PointOfSaleMf2 } from '@/domain/entities/point-of-sale.entity';\nimport { IPemRepository } from '@/domain/repositories/pem.repository';\n\nexport class PemRepositoryImpl implements IPemRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async create(input: PemCreateInput): Promise<PemCreateOutput> {\n const apiInput = PemMapper.toCreateApiInput(input);\n const response = await this.http.post<PemCreateApiOutput>('/mf2/pems', apiInput);\n return PemMapper.fromCreateApiOutput(response.data);\n }\n\n async findBySerialNumber(serialNumber: string): Promise<PointOfSaleMf2> {\n const response = await this.http.get<PointOfSaleMf2ApiOutput>(`/mf2/pems/${serialNumber}`);\n return PemMapper.fromPointOfSaleMf2ApiOutput(response.data);\n }\n\n async findAllByMerchant(merchantUuid: string, page?: number): Promise<PointOfSaleMf2[]> {\n const response = await this.http.get<PointOfSaleMf2ApiOutput[]>(\n `/mf2/merchants/${merchantUuid}/pems`,\n { params: { page } }\n );\n return PemMapper.pageFromApi(response.data);\n }\n\n async getCertificates(serialNumber: string): Promise<PemCertificates> {\n const response = await this.http.get<PemCertificatesApiOutput>(\n `/mf2/pems/${serialNumber}/certificates`\n );\n return PemMapper.fromCertificatesApiOutput(response.data);\n }\n}\n","import {\n DailyReport,\n DailyReportStatus,\n DailyReportsParams,\n} from '@/domain/entities/daily-report.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport interface DailyReportApiOutput {\n uuid: string;\n pem_serial_number: string;\n date: string;\n total_receipts: number;\n total_amount: string;\n status: 'pending' | 'sent' | 'error';\n}\n\nexport class DailyReportMapper {\n static fromApiOutput(output: DailyReportApiOutput): DailyReport {\n return {\n uuid: output.uuid,\n pemSerialNumber: output.pem_serial_number,\n date: output.date,\n totalReceipts: output.total_receipts,\n totalAmount: output.total_amount,\n status: output.status as DailyReportStatus,\n };\n }\n\n static toListParams(params?: DailyReportsParams): Record<string, string | number | undefined> {\n if (!params) return {};\n\n return {\n pem_serial_number: params.pemSerialNumber,\n date_from: params.dateFrom,\n date_to: params.dateTo,\n status: params.status,\n page: params.page,\n };\n }\n\n static pageFromApi(data: {\n members: DailyReportApiOutput[];\n total?: number;\n page?: number;\n size?: number;\n pages?: number;\n }): Page<DailyReport> {\n return {\n members: data.members.map((item) => DailyReportMapper.fromApiOutput(item)),\n total: data.total,\n page: data.page,\n size: data.size,\n pages: data.pages,\n };\n }\n}\n","import { DailyReportApiOutput, DailyReportMapper } from '@/application/dto/daily-report.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { DailyReport, DailyReportsParams } from '@/domain/entities/daily-report.entity';\nimport { IDailyReportRepository } from '@/domain/repositories/daily-report.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class DailyReportRepositoryImpl implements IDailyReportRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async findById(merchantUuid: string, reportUuid: string): Promise<DailyReport> {\n const response = await this.http.get<DailyReportApiOutput>(\n `/mf2/merchants/${merchantUuid}/daily-reports/${reportUuid}`\n );\n return DailyReportMapper.fromApiOutput(response.data);\n }\n\n async findAll(merchantUuid: string, params?: DailyReportsParams): Promise<Page<DailyReport>> {\n const queryParams = DailyReportMapper.toListParams(params);\n const response = await this.http.get<Page<DailyReportApiOutput>>(\n `/mf2/merchants/${merchantUuid}/daily-reports`,\n { params: queryParams }\n );\n return DailyReportMapper.pageFromApi(response.data);\n }\n}\n","import {\n Journal,\n JournalCloseInput,\n JournalStatus,\n JournalsParams,\n} from '@/domain/entities/journal.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport interface JournalApiOutput {\n uuid: string;\n pem_serial_number: string;\n date: string;\n sequence_number: number;\n total_receipts: number;\n total_amount: string;\n status: 'open' | 'closed';\n}\n\nexport class JournalMapper {\n static fromApiOutput(output: JournalApiOutput): Journal {\n return {\n uuid: output.uuid,\n pemSerialNumber: output.pem_serial_number,\n date: output.date,\n sequenceNumber: output.sequence_number,\n totalReceipts: output.total_receipts,\n totalAmount: output.total_amount,\n status: output.status as JournalStatus,\n };\n }\n\n static toListParams(params?: JournalsParams): Record<string, string | number | undefined> {\n if (!params) return {};\n\n return {\n pem_serial_number: params.pemSerialNumber,\n status: params.status,\n date_from: params.dateFrom,\n date_to: params.dateTo,\n page: params.page,\n };\n }\n\n static toCloseApiInput(input: JournalCloseInput): { journal_uuid: string } {\n return {\n journal_uuid: input.journalUuid,\n };\n }\n\n static pageFromApi(data: {\n members: JournalApiOutput[];\n total?: number;\n page?: number;\n size?: number;\n pages?: number;\n }): Page<Journal> {\n return {\n members: data.members.map((item) => JournalMapper.fromApiOutput(item)),\n total: data.total,\n page: data.page,\n size: data.size,\n pages: data.pages,\n };\n }\n}\n","import { JournalApiOutput, JournalMapper } from '@/application/dto/journal.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { Journal, JournalCloseInput, JournalsParams } from '@/domain/entities/journal.entity';\nimport { IJournalRepository } from '@/domain/repositories/journal.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class JournalRepositoryImpl implements IJournalRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async findById(merchantUuid: string, journalUuid: string): Promise<Journal> {\n const response = await this.http.get<JournalApiOutput>(\n `/mf2/merchants/${merchantUuid}/journals/${journalUuid}`\n );\n return JournalMapper.fromApiOutput(response.data);\n }\n\n async findAll(merchantUuid: string, params?: JournalsParams): Promise<Page<Journal>> {\n const queryParams = JournalMapper.toListParams(params);\n const response = await this.http.get<Page<JournalApiOutput>>(\n `/mf2/merchants/${merchantUuid}/journals`,\n { params: queryParams }\n );\n return JournalMapper.pageFromApi(response.data);\n }\n\n async close(merchantUuid: string, input: JournalCloseInput): Promise<Journal> {\n const apiInput = JournalMapper.toCloseApiInput(input);\n const response = await this.http.post<JournalApiOutput>(\n `/mf2/merchants/${merchantUuid}/journals/close`,\n apiInput\n );\n return JournalMapper.fromApiOutput(response.data);\n }\n}\n","export const NOTIFICATION_CODES = {\n MF2_UNREACHABLE: 'SYS-W-01',\n STATUS_OFFLINE: 'SYS-C-01',\n STATUS_ONLINE: 'SYS-I-01',\n COMMUNICATION_RESTORED: 'SYS-I-02',\n} as const;\n\nexport type NotificationCode = (typeof NOTIFICATION_CODES)[keyof typeof NOTIFICATION_CODES];\n\nexport const NOTIFICATION_SOURCES = {\n SYSTEM: 'system',\n ITALIAN_TAX_AUTHORITY: 'Italian Tax Authority',\n} as const;\n\nexport type NotificationSource = (typeof NOTIFICATION_SOURCES)[keyof typeof NOTIFICATION_SOURCES];\n\nexport const NOTIFICATION_LEVELS = {\n INFO: 'info',\n WARNING: 'warning',\n ERROR: 'error',\n CRITICAL: 'critical',\n} as const;\n\nexport type NotificationLevel = (typeof NOTIFICATION_LEVELS)[keyof typeof NOTIFICATION_LEVELS];\n\nexport const NOTIFICATION_TYPES = {\n MF2_UNREACHABLE: 'INTERNAL_COMMUNICATION_FAILURE',\n STATUS_OFFLINE: 'STATUS_OFFLINE',\n STATUS_ONLINE: 'STATUS_ONLINE',\n COMMUNICATION_RESTORED: 'INTERNAL_COMMUNICATION_RESTORED',\n} as const;\n\nexport type NotificationType = (typeof NOTIFICATION_TYPES)[keyof typeof NOTIFICATION_TYPES];\n\nexport const NOTIFICATION_SCOPES = {\n GLOBAL: 'global',\n MERCHANT: 'merchant',\n PEM: 'pem',\n} as const;\n\nexport type NotificationScope = (typeof NOTIFICATION_SCOPES)[keyof typeof NOTIFICATION_SCOPES];\n\nexport interface NotificationPayloadBlockAt {\n block_at: string;\n}\n\ninterface NotificationBase {\n uuid: string;\n message: string;\n scope: NotificationScope;\n source: NotificationSource;\n level: NotificationLevel;\n createdAt: string;\n}\n\nexport interface NotificationMf2Unreachable extends NotificationBase {\n type: typeof NOTIFICATION_TYPES.MF2_UNREACHABLE;\n code: typeof NOTIFICATION_CODES.MF2_UNREACHABLE;\n payload: NotificationPayloadBlockAt;\n}\n\nexport interface NotificationStatusOffline extends NotificationBase {\n type: typeof NOTIFICATION_TYPES.STATUS_OFFLINE;\n code: typeof NOTIFICATION_CODES.STATUS_OFFLINE;\n payload: null;\n}\n\nexport interface NotificationStatusOnline extends NotificationBase {\n type: typeof NOTIFICATION_TYPES.STATUS_ONLINE;\n code: typeof NOTIFICATION_CODES.STATUS_ONLINE;\n payload: null;\n}\n\nexport interface NotificationCommunicationRestored extends NotificationBase {\n type: typeof NOTIFICATION_TYPES.COMMUNICATION_RESTORED;\n code: typeof NOTIFICATION_CODES.COMMUNICATION_RESTORED;\n payload: null;\n}\n\nexport type Notification =\n | NotificationMf2Unreachable\n | NotificationStatusOffline\n | NotificationStatusOnline\n | NotificationCommunicationRestored;\n\nexport interface NotificationListParams {\n page?: number;\n size?: number;\n}\n","import {\n NOTIFICATION_CODES,\n NOTIFICATION_TYPES,\n Notification,\n NotificationCommunicationRestored,\n NotificationLevel,\n NotificationMf2Unreachable,\n NotificationPayloadBlockAt,\n NotificationScope,\n NotificationSource,\n NotificationStatusOffline,\n NotificationStatusOnline,\n} from '@/domain/entities/notification.entity';\nimport { Page } from '@/domain/value-objects/page.vo';\n\ninterface NotificationApiOutputBase {\n uuid: string;\n message: string;\n scope: NotificationScope;\n source: NotificationSource;\n level: NotificationLevel;\n created_at: string;\n}\n\nexport interface NotificationMf2UnreachableApiOutput extends NotificationApiOutputBase {\n type: typeof NOTIFICATION_TYPES.MF2_UNREACHABLE;\n code: typeof NOTIFICATION_CODES.MF2_UNREACHABLE;\n payload: NotificationPayloadBlockAt;\n}\n\nexport interface NotificationStatusOfflineApiOutput extends NotificationApiOutputBase {\n type: typeof NOTIFICATION_TYPES.STATUS_OFFLINE;\n code: typeof NOTIFICATION_CODES.STATUS_OFFLINE;\n payload?: null;\n}\n\nexport interface NotificationStatusOnlineApiOutput extends NotificationApiOutputBase {\n type: typeof NOTIFICATION_TYPES.STATUS_ONLINE;\n code: typeof NOTIFICATION_CODES.STATUS_ONLINE;\n payload?: null;\n}\n\nexport interface NotificationCommunicationRestoredApiOutput extends NotificationApiOutputBase {\n type: typeof NOTIFICATION_TYPES.COMMUNICATION_RESTORED;\n code: typeof NOTIFICATION_CODES.COMMUNICATION_RESTORED;\n payload?: null;\n}\n\nexport type NotificationApiOutput =\n | NotificationMf2UnreachableApiOutput\n | NotificationStatusOfflineApiOutput\n | NotificationStatusOnlineApiOutput\n | NotificationCommunicationRestoredApiOutput;\n\nexport interface NotificationPageApiOutput {\n members: NotificationApiOutput[];\n total?: number;\n page?: number;\n size?: number;\n pages?: number;\n}\n\nexport class NotificationMapper {\n static fromApiOutput(output: NotificationApiOutput): Notification {\n const base = {\n uuid: output.uuid,\n message: output.message,\n scope: output.scope,\n source: output.source,\n level: output.level,\n createdAt: output.created_at,\n };\n\n switch (output.code) {\n case NOTIFICATION_CODES.MF2_UNREACHABLE:\n return {\n ...base,\n type: output.type,\n code: output.code,\n payload: output.payload,\n } as NotificationMf2Unreachable;\n case NOTIFICATION_CODES.STATUS_OFFLINE:\n return {\n ...base,\n type: output.type,\n code: output.code,\n payload: null,\n } as NotificationStatusOffline;\n case NOTIFICATION_CODES.STATUS_ONLINE:\n return {\n ...base,\n type: output.type,\n code: output.code,\n payload: null,\n } as NotificationStatusOnline;\n case NOTIFICATION_CODES.COMMUNICATION_RESTORED:\n return {\n ...base,\n type: output.type,\n code: output.code,\n payload: null,\n } as NotificationCommunicationRestored;\n }\n }\n\n static listFromApi(outputs: NotificationApiOutput[]): Notification[] {\n return outputs.map((o) => this.fromApiOutput(o));\n }\n\n static pageFromApiResponse(response: NotificationPageApiOutput): Page<Notification> {\n return {\n members: this.listFromApi(response.members),\n total: response.total,\n page: response.page,\n size: response.size,\n pages: response.pages,\n };\n }\n}\n","import { NotificationMapper, NotificationPageApiOutput } from '@/application/dto/notification.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { Notification, NotificationListParams } from '@/domain/entities/notification.entity';\nimport { INotificationRepository } from '@/domain/repositories/notification.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport class NotificationRepositoryImpl implements INotificationRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async fetchNotifications(_params?: NotificationListParams): Promise<Page<Notification>> {\n const queryParams = new URLSearchParams();\n if (_params?.page !== undefined) queryParams.set('page', String(_params.page));\n if (_params?.size !== undefined) queryParams.set('size', String(_params.size));\n const queryString = queryParams.toString();\n const url = queryString ? `/mf1/notifications?${queryString}` : '/mf1/notifications';\n const response = await this.http.get<NotificationPageApiOutput>(url);\n return NotificationMapper.pageFromApiResponse(response.data);\n }\n}\n","import {\n LotterySecretRequestInfo,\n LotteryTelemetry,\n MessageInfo,\n PendingReceipts,\n SoftwareVersionStatus,\n Telemetry,\n TelemetryMerchant,\n TelemetrySoftware,\n TelemetrySoftwareVersion,\n TelemetrySupplier,\n TransmissionAttemptInfo,\n} from '@/domain/entities/telemetry.entity';\n\nexport interface TelemetryMerchantApiOutput {\n vat_number: string | null;\n fiscal_code: string | null;\n business_name: string | null;\n}\n\nexport interface TelemetrySupplierApiOutput {\n vat_number: string | null;\n fiscal_code: string | null;\n business_name: string | null;\n}\n\nexport interface TelemetrySoftwareVersionApiOutput {\n version: string | null;\n swid: string | null;\n installed_at: string | null;\n status: string;\n}\n\nexport interface TelemetrySoftwareApiOutput {\n code: string | null;\n name: string | null;\n approval_reference: string | null;\n version_info: TelemetrySoftwareVersionApiOutput | null;\n}\n\nexport interface PendingReceiptsApiOutput {\n count: number;\n total_amount: string;\n}\n\nexport interface TransmissionAttemptApiOutput {\n attempted_at: string | null;\n outcome: string | null;\n}\n\nexport interface MessageApiOutput {\n received_at: string | null;\n content: string | null;\n}\n\nexport interface LotterySecretRequestApiOutput {\n requested_at: string | null;\n outcome: string | null;\n}\n\nexport interface LotteryApiOutput {\n last_transmission: TransmissionAttemptApiOutput | null;\n secret_request: LotterySecretRequestApiOutput | null;\n}\n\nexport interface TelemetryApiOutput {\n pem_id: string;\n pem_status: string;\n pem_status_changed_at: string | null;\n merchant: TelemetryMerchantApiOutput;\n supplier: TelemetrySupplierApiOutput;\n software: TelemetrySoftwareApiOutput;\n last_communication_at: string | null;\n pending_receipts: PendingReceiptsApiOutput | null;\n last_receipt_transmission: TransmissionAttemptApiOutput | null;\n last_message_from_mf2: MessageApiOutput | null;\n ade_corrispettivi_transmission: TransmissionAttemptApiOutput | null;\n last_message_from_ade: MessageApiOutput | null;\n lottery: LotteryApiOutput;\n}\n\nexport class TelemetryMapper {\n static fromApiOutput(output: TelemetryApiOutput): Telemetry {\n return {\n pemId: output.pem_id,\n pemStatus: output.pem_status,\n pemStatusChangedAt: output.pem_status_changed_at,\n merchant: this.merchantFromApi(output.merchant),\n supplier: this.supplierFromApi(output.supplier),\n software: this.softwareFromApi(output.software),\n lastCommunicationAt: output.last_communication_at,\n pendingReceipts: output.pending_receipts\n ? this.pendingReceiptsFromApi(output.pending_receipts)\n : null,\n lastReceiptTransmission: output.last_receipt_transmission\n ? this.transmissionFromApi(output.last_receipt_transmission)\n : null,\n lastMessageFromMf2: output.last_message_from_mf2\n ? this.messageFromApi(output.last_message_from_mf2)\n : null,\n adeCorrispettiviTransmission: output.ade_corrispettivi_transmission\n ? this.transmissionFromApi(output.ade_corrispettivi_transmission)\n : null,\n lastMessageFromAde: output.last_message_from_ade\n ? this.messageFromApi(output.last_message_from_ade)\n : null,\n lottery: this.lotteryFromApi(output.lottery),\n };\n }\n\n private static merchantFromApi(output: TelemetryMerchantApiOutput): TelemetryMerchant {\n return {\n vatNumber: output.vat_number,\n fiscalCode: output.fiscal_code,\n businessName: output.business_name,\n };\n }\n\n private static supplierFromApi(output: TelemetrySupplierApiOutput): TelemetrySupplier {\n return {\n vatNumber: output.vat_number,\n fiscalCode: output.fiscal_code,\n businessName: output.business_name,\n };\n }\n\n private static softwareVersionFromApi(\n output: TelemetrySoftwareVersionApiOutput\n ): TelemetrySoftwareVersion {\n return {\n version: output.version,\n swid: output.swid,\n installedAt: output.installed_at,\n status: output.status as SoftwareVersionStatus,\n };\n }\n\n private static softwareFromApi(output: TelemetrySoftwareApiOutput): TelemetrySoftware {\n return {\n code: output.code,\n name: output.name,\n approvalReference: output.approval_reference,\n versionInfo: output.version_info ? this.softwareVersionFromApi(output.version_info) : null,\n };\n }\n\n private static pendingReceiptsFromApi(output: PendingReceiptsApiOutput): PendingReceipts {\n return {\n count: output.count,\n totalAmount: output.total_amount,\n };\n }\n\n private static transmissionFromApi(\n output: TransmissionAttemptApiOutput\n ): TransmissionAttemptInfo {\n return {\n attemptedAt: output.attempted_at,\n outcome: output.outcome,\n };\n }\n\n private static messageFromApi(output: MessageApiOutput): MessageInfo {\n return {\n receivedAt: output.received_at,\n content: output.content,\n };\n }\n\n private static secretRequestFromApi(\n output: LotterySecretRequestApiOutput\n ): LotterySecretRequestInfo {\n return {\n requestedAt: output.requested_at,\n outcome: output.outcome,\n };\n }\n\n private static lotteryFromApi(output: LotteryApiOutput): LotteryTelemetry {\n return {\n lastTransmission: output.last_transmission\n ? this.transmissionFromApi(output.last_transmission)\n : null,\n secretRequest: output.secret_request\n ? this.secretRequestFromApi(output.secret_request)\n : null,\n };\n }\n}\n","import { TelemetryApiOutput, TelemetryMapper } from '@/application/dto/telemetry.dto';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { Telemetry } from '@/domain/entities/telemetry.entity';\nimport { ITelemetryRepository } from '@/domain/repositories/telemetry.repository';\n\nexport class TelemetryRepositoryImpl implements ITelemetryRepository {\n constructor(private readonly http: IHttpPort) {}\n\n async getTelemetry(pemId: string): Promise<Telemetry> {\n const response = await this.http.get<TelemetryApiOutput>(`/mf1/pems/${pemId}/telemetry`);\n return TelemetryMapper.fromApiOutput(response.data);\n }\n}\n","import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\n\nimport { HttpRequestConfig, HttpResponse, IHttpPort } from '@/application/ports/driven/http.port';\nimport { IMTLSPort, MTLSRequestConfig, MTLSResponse } from '@/application/ports/driven/mtls.port';\nimport { clearObject, createPrefixedLogger } from '@/shared/utils';\n\nimport { AuthStrategy } from './auth-strategy';\n\nconst logJwt = createPrefixedLogger('HTTP-JWT');\nconst logMtls = createPrefixedLogger('HTTP-MTLS');\n\nexport interface AxiosHttpAdapterConfig {\n baseUrl: string;\n timeout?: number;\n}\n\nexport class AxiosHttpAdapter implements IHttpPort {\n private client: AxiosInstance;\n private authToken: string | null = null;\n private mtlsAdapter: IMTLSPort | null = null;\n private authStrategy: AuthStrategy | null = null;\n private baseUrl: string;\n\n constructor(config: AxiosHttpAdapterConfig) {\n this.baseUrl = config.baseUrl;\n this.client = axios.create({\n baseURL: config.baseUrl,\n timeout: config.timeout ?? 30000,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n this.setupInterceptors();\n }\n\n setMTLSAdapter(adapter: IMTLSPort | null): void {\n this.mtlsAdapter = adapter;\n logMtls.debug('mTLS adapter configured:', !!adapter);\n }\n\n setAuthStrategy(strategy: AuthStrategy | null): void {\n this.authStrategy = strategy;\n logJwt.debug('Auth strategy configured:', !!strategy);\n }\n\n private async shouldUseMTLS(url: string, method: string): Promise<boolean> {\n if (!this.mtlsAdapter) {\n logJwt.debug(`No mTLS adapter, using JWT for ${method} ${url}`);\n return false;\n }\n\n if (this.authStrategy) {\n const config = await this.authStrategy.determineAuthConfig(url, method);\n const logger = config.mode === 'mtls' ? logMtls : logJwt;\n logger.debug(`Auth config for ${method} ${url}:`, config);\n return config.mode === 'mtls';\n }\n\n // Fallback: use mTLS for mf1/mf2 endpoints if no strategy\n // This should rarely happen - only before SDK is fully initialized\n const useMtls = url.startsWith('/mf1') || url.startsWith('/mf2');\n if (useMtls) {\n logMtls.warn(`No auth strategy set, falling back to mTLS for ${method} ${url}`);\n }\n return useMtls;\n }\n\n private async makeMTLSRequest<T>(\n url: string,\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH',\n data?: unknown,\n config?: HttpRequestConfig\n ): Promise<HttpResponse<T>> {\n if (!this.mtlsAdapter) {\n throw new Error('mTLS adapter not available');\n }\n\n const fullUrl = this.constructMtlsUrl(url);\n\n const headers: Record<string, string> = {\n ...(method !== 'GET' && data ? { 'Content-Type': 'application/json' } : {}),\n ...(config?.headers || {}),\n };\n\n if (this.authToken) {\n headers['Authorization'] = `Bearer ${this.authToken}`;\n logMtls.debug('JWT token present for mTLS request');\n } else {\n logMtls.warn('No JWT token for mTLS request');\n }\n\n const mtlsConfig: MTLSRequestConfig = {\n url: fullUrl,\n method,\n headers,\n data,\n timeout: config?.timeout,\n };\n\n logMtls.debug(`mTLS ${method} ${fullUrl}`);\n if (data) {\n logMtls.debug('Request body:', data);\n }\n\n try {\n const response: MTLSResponse<T> = await this.mtlsAdapter.request<T>(mtlsConfig);\n logMtls.debug(`mTLS Response ${response.status} from ${fullUrl}`);\n if (response.data) {\n logMtls.debug('Response body:', response.data);\n }\n return {\n data: response.data,\n status: response.status,\n headers: response.headers,\n };\n } catch (error) {\n logMtls.error(`mTLS Response error from ${fullUrl}:`, error);\n if (error && typeof error === 'object' && 'response' in error) {\n const axiosError = error as { response?: { data?: unknown; status?: number } };\n if (axiosError.response?.data) {\n logMtls.error('Response body:', axiosError.response.data);\n }\n }\n throw error;\n }\n }\n\n private constructMtlsUrl(relativePath: string): string {\n const mtlsBaseUrl = this.mtlsAdapter?.getBaseUrl() || this.baseUrl;\n const cleanPath = relativePath.startsWith('/') ? relativePath.substring(1) : relativePath;\n return mtlsBaseUrl.endsWith('/') ? `${mtlsBaseUrl}${cleanPath}` : `${mtlsBaseUrl}/${cleanPath}`;\n }\n\n private setupInterceptors(): void {\n this.client.interceptors.request.use(\n (config) => {\n if (this.authToken) {\n config.headers.Authorization = `Bearer ${this.authToken}`;\n logJwt.debug('Adding JWT token to request', {\n tokenPrefix: this.authToken.substring(0, 30) + '...',\n tokenLength: this.authToken.length,\n });\n } else {\n logJwt.warn('No JWT token available for request:', { url: config.url });\n }\n\n const method = config.method?.toUpperCase() ?? 'UNKNOWN';\n const authHeader = config.headers.Authorization;\n\n // Log full request details for debugging\n logJwt.info(`→ ${method} ${config.url}`, {\n baseURL: config.baseURL,\n fullURL: `${config.baseURL}${config.url}`,\n hasAuthHeader: !!authHeader,\n authHeaderValue: authHeader ? `${String(authHeader).substring(0, 50)}...` : 'MISSING',\n });\n\n if (config.params && Object.keys(config.params as object).length > 0) {\n logJwt.debug('Request params:', config.params);\n }\n\n if (config.data) {\n logJwt.debug('Request body:', config.data);\n }\n\n return config;\n },\n (error) => {\n logJwt.error('Request error:', error);\n return Promise.reject(error);\n }\n );\n\n this.client.interceptors.response.use(\n (response) => {\n const method = response.config.method?.toUpperCase() ?? 'UNKNOWN';\n logJwt.debug(`← ${method} ${response.status} ${response.config.url}`);\n\n if (response.data) {\n logJwt.debug('Response body:', response.data);\n }\n\n return response;\n },\n (error) => {\n const method = error.config?.method?.toUpperCase() ?? 'UNKNOWN';\n logJwt.error(\n `← ${method} ${error.response?.status ?? 'ERR'} ${error.config?.url ?? 'unknown'}`\n );\n\n if (error.response?.data) {\n logJwt.error('Response body:', error.response.data);\n }\n\n return Promise.reject(error);\n }\n );\n }\n\n private mapConfig(config?: HttpRequestConfig): AxiosRequestConfig {\n if (!config) return {};\n\n return {\n headers: config.headers,\n params: config.params,\n timeout: config.timeout,\n responseType: config.responseType,\n data: config.data,\n };\n }\n\n private mapResponse<T>(response: AxiosResponse<T>): HttpResponse<T> {\n const headers: Record<string, string> = {};\n Object.entries(response.headers).forEach(([key, value]) => {\n if (typeof value === 'string') {\n headers[key] = value;\n }\n });\n\n return {\n data: response.data,\n status: response.status,\n headers,\n };\n }\n\n async get<T>(url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>> {\n if (await this.shouldUseMTLS(url, 'GET')) {\n return this.makeMTLSRequest<T>(url, 'GET', undefined, config);\n }\n const response = await this.client.get<T>(url, this.mapConfig(config));\n return this.mapResponse(response);\n }\n\n async post<T>(url: string, data?: unknown, config?: HttpRequestConfig): Promise<HttpResponse<T>> {\n const cleanedData = data ? clearObject(data) : data;\n if (await this.shouldUseMTLS(url, 'POST')) {\n return this.makeMTLSRequest<T>(url, 'POST', cleanedData, config);\n }\n const response = await this.client.post<T>(url, cleanedData, this.mapConfig(config));\n return this.mapResponse(response);\n }\n\n async put<T>(url: string, data?: unknown, config?: HttpRequestConfig): Promise<HttpResponse<T>> {\n const cleanedData = data && typeof data === 'object' ? clearObject(data) : data;\n if (await this.shouldUseMTLS(url, 'PUT')) {\n return this.makeMTLSRequest<T>(url, 'PUT', cleanedData, config);\n }\n const response = await this.client.put<T>(url, cleanedData, this.mapConfig(config));\n return this.mapResponse(response);\n }\n\n async patch<T>(\n url: string,\n data?: unknown,\n config?: HttpRequestConfig\n ): Promise<HttpResponse<T>> {\n const cleanedData = data && typeof data === 'object' ? clearObject(data) : data;\n if (await this.shouldUseMTLS(url, 'PATCH')) {\n return this.makeMTLSRequest<T>(url, 'PATCH', cleanedData, config);\n }\n const response = await this.client.patch<T>(url, cleanedData, this.mapConfig(config));\n return this.mapResponse(response);\n }\n\n async delete<T>(url: string, config?: HttpRequestConfig): Promise<HttpResponse<T>> {\n const data = config?.data;\n const cleanedData = data && typeof data === 'object' ? clearObject(data) : data;\n if (await this.shouldUseMTLS(url, 'DELETE')) {\n return this.makeMTLSRequest<T>(url, 'DELETE', cleanedData, config);\n }\n const response = await this.client.delete<T>(url, this.mapConfig(config));\n return this.mapResponse(response);\n }\n\n setAuthToken(token: string | null): void {\n logJwt.info('setAuthToken called:', {\n hasToken: !!token,\n tokenPrefix: token?.substring(0, 20),\n });\n this.authToken = token;\n }\n\n getAuthToken(): string | null {\n return this.authToken;\n }\n\n getAxiosInstance(): AxiosInstance {\n return this.client;\n }\n}\n","import { ISecureStoragePort } from '@/application/ports/driven/storage.port';\nimport { ITokenStoragePort } from '@/application/ports/driven/token-storage.port';\n\nconst TOKEN_KEY = 'acube_tokens';\nconst USER_KEY = 'acube_user';\n\ninterface StoredTokenData {\n accessToken: string;\n expiresAt: number;\n}\n\nexport class TokenStorageAdapter implements ITokenStoragePort {\n constructor(private readonly secureStorage: ISecureStoragePort) {}\n\n async getAccessToken(): Promise<string | null> {\n const tokenJson = await this.secureStorage.get(TOKEN_KEY);\n if (!tokenJson) {\n return null;\n }\n const tokenData: StoredTokenData = JSON.parse(tokenJson);\n return tokenData.accessToken;\n }\n\n async saveAccessToken(token: string, expiresAt: number): Promise<void> {\n const tokenData: StoredTokenData = {\n accessToken: token,\n expiresAt,\n };\n await this.secureStorage.set(TOKEN_KEY, JSON.stringify(tokenData));\n }\n\n async clearTokens(): Promise<void> {\n await Promise.all([this.secureStorage.remove(TOKEN_KEY), this.secureStorage.remove(USER_KEY)]);\n }\n\n async getUser<T>(): Promise<T | null> {\n const userJson = await this.secureStorage.get(USER_KEY);\n if (!userJson) {\n return null;\n }\n return JSON.parse(userJson) as T;\n }\n\n async saveUser<T>(user: T): Promise<void> {\n await this.secureStorage.set(USER_KEY, JSON.stringify(user));\n }\n}\n","import { IHttpPort } from '@/application/ports/driven/http.port';\nimport { ISecureStoragePort } from '@/application/ports/driven/storage.port';\nimport { ITokenStoragePort } from '@/application/ports/driven/token-storage.port';\nimport { AuthenticationService } from '@/application/services/authentication.service';\nimport { ICashRegisterRepository } from '@/domain/repositories/cash-register.repository';\nimport { ICashierRepository } from '@/domain/repositories/cashier.repository';\nimport { IDailyReportRepository } from '@/domain/repositories/daily-report.repository';\nimport { IJournalRepository } from '@/domain/repositories/journal.repository';\nimport { IMerchantRepository } from '@/domain/repositories/merchant.repository';\nimport { INotificationRepository } from '@/domain/repositories/notification.repository';\nimport { IPemRepository } from '@/domain/repositories/pem.repository';\nimport { IPointOfSaleRepository } from '@/domain/repositories/point-of-sale.repository';\nimport { IReceiptRepository } from '@/domain/repositories/receipt.repository';\nimport { ISupplierRepository } from '@/domain/repositories/supplier.repository';\nimport { ITelemetryRepository } from '@/domain/repositories/telemetry.repository';\nimport {\n CashRegisterRepositoryImpl,\n CashierRepositoryImpl,\n DailyReportRepositoryImpl,\n JournalRepositoryImpl,\n MerchantRepositoryImpl,\n NotificationRepositoryImpl,\n PemRepositoryImpl,\n PointOfSaleRepositoryImpl,\n ReceiptRepositoryImpl,\n SupplierRepositoryImpl,\n TelemetryRepositoryImpl,\n} from '@/infrastructure/driven/api';\nimport { AxiosHttpAdapter } from '@/infrastructure/driven/http/axios-http.adapter';\nimport { TokenStorageAdapter } from '@/infrastructure/driven/storage/token-storage.adapter';\n\nimport { DIContainer, DI_TOKENS } from './di-container';\n\nexport interface SDKFactoryConfig {\n baseUrl: string;\n authUrl?: string;\n timeout?: number;\n debugEnabled?: boolean;\n}\n\nexport interface SDKServices {\n http: IHttpPort;\n tokenStorage?: ITokenStoragePort;\n authService?: AuthenticationService;\n receipts: IReceiptRepository;\n merchants: IMerchantRepository;\n cashiers: ICashierRepository;\n cashRegisters: ICashRegisterRepository;\n pointOfSales: IPointOfSaleRepository;\n suppliers: ISupplierRepository;\n pems: IPemRepository;\n dailyReports: IDailyReportRepository;\n journals: IJournalRepository;\n notifications: INotificationRepository;\n telemetry: ITelemetryRepository;\n}\n\nexport class SDKFactory {\n static createContainer(config: SDKFactoryConfig): DIContainer {\n const container = new DIContainer();\n\n const httpAdapter = new AxiosHttpAdapter({\n baseUrl: config.baseUrl,\n timeout: config.timeout,\n });\n\n container.register(DI_TOKENS.HTTP_PORT, httpAdapter);\n\n container.registerFactory(DI_TOKENS.RECEIPT_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new ReceiptRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.MERCHANT_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new MerchantRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.CASHIER_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new CashierRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.CASH_REGISTER_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new CashRegisterRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.POINT_OF_SALE_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new PointOfSaleRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.SUPPLIER_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new SupplierRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.PEM_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new PemRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.DAILY_REPORT_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new DailyReportRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.JOURNAL_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new JournalRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.NOTIFICATION_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new NotificationRepositoryImpl(http);\n });\n\n container.registerFactory(DI_TOKENS.TELEMETRY_REPOSITORY, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n return new TelemetryRepositoryImpl(http);\n });\n\n return container;\n }\n\n static registerAuthServices(\n container: DIContainer,\n secureStorage: ISecureStoragePort,\n config: SDKFactoryConfig\n ): void {\n const tokenStorage = new TokenStorageAdapter(secureStorage);\n container.register(DI_TOKENS.TOKEN_STORAGE_PORT, tokenStorage);\n\n container.registerFactory(DI_TOKENS.AUTHENTICATION_SERVICE, () => {\n const http = container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n const storage = container.get<ITokenStoragePort>(DI_TOKENS.TOKEN_STORAGE_PORT);\n return new AuthenticationService(http, storage, {\n authUrl: config.authUrl || config.baseUrl,\n timeout: config.timeout,\n });\n });\n }\n\n static getServices(container: DIContainer): SDKServices {\n const services: SDKServices = {\n http: container.get<IHttpPort>(DI_TOKENS.HTTP_PORT),\n receipts: container.get<IReceiptRepository>(DI_TOKENS.RECEIPT_REPOSITORY),\n merchants: container.get<IMerchantRepository>(DI_TOKENS.MERCHANT_REPOSITORY),\n cashiers: container.get<ICashierRepository>(DI_TOKENS.CASHIER_REPOSITORY),\n cashRegisters: container.get<ICashRegisterRepository>(DI_TOKENS.CASH_REGISTER_REPOSITORY),\n pointOfSales: container.get<IPointOfSaleRepository>(DI_TOKENS.POINT_OF_SALE_REPOSITORY),\n suppliers: container.get<ISupplierRepository>(DI_TOKENS.SUPPLIER_REPOSITORY),\n pems: container.get<IPemRepository>(DI_TOKENS.PEM_REPOSITORY),\n dailyReports: container.get<IDailyReportRepository>(DI_TOKENS.DAILY_REPORT_REPOSITORY),\n journals: container.get<IJournalRepository>(DI_TOKENS.JOURNAL_REPOSITORY),\n notifications: container.get<INotificationRepository>(DI_TOKENS.NOTIFICATION_REPOSITORY),\n telemetry: container.get<ITelemetryRepository>(DI_TOKENS.TELEMETRY_REPOSITORY),\n };\n\n if (container.has(DI_TOKENS.TOKEN_STORAGE_PORT)) {\n services.tokenStorage = container.get<ITokenStoragePort>(DI_TOKENS.TOKEN_STORAGE_PORT);\n }\n\n if (container.has(DI_TOKENS.AUTHENTICATION_SERVICE)) {\n services.authService = container.get<AuthenticationService>(DI_TOKENS.AUTHENTICATION_SERVICE);\n }\n\n return services;\n }\n}\n","import {\n CertificateInfo,\n ICertificatePort,\n IMTLSPort,\n PlatformAdapters,\n} from '@/application/ports/driven';\nimport { IHttpPort } from '@/application/ports/driven/http.port';\nimport { ITokenStoragePort } from '@/application/ports/driven/token-storage.port';\nimport { AuthenticationService } from '@/application/services/authentication.service';\nimport { CertificateService } from '@/application/services/certificate.service';\nimport { ICashRegisterRepository } from '@/domain/repositories/cash-register.repository';\nimport { ICashierRepository } from '@/domain/repositories/cashier.repository';\nimport { IDailyReportRepository } from '@/domain/repositories/daily-report.repository';\nimport { IJournalRepository } from '@/domain/repositories/journal.repository';\nimport { IMerchantRepository } from '@/domain/repositories/merchant.repository';\nimport { INotificationRepository } from '@/domain/repositories/notification.repository';\nimport { IPemRepository } from '@/domain/repositories/pem.repository';\nimport { IPointOfSaleRepository } from '@/domain/repositories/point-of-sale.repository';\nimport { IReceiptRepository } from '@/domain/repositories/receipt.repository';\nimport { ISupplierRepository } from '@/domain/repositories/supplier.repository';\nimport { ITelemetryRepository } from '@/domain/repositories/telemetry.repository';\nimport { AuthStrategy, IUserProvider } from '@/infrastructure/driven/http/auth-strategy';\nimport { JwtAuthHandler } from '@/infrastructure/driven/http/jwt-auth.handler';\nimport { MtlsAuthHandler } from '@/infrastructure/driven/http/mtls-auth.handler';\nimport { createACubeMTLSConfig, loadPlatformAdapters } from '@/infrastructure/loaders';\nimport { ConfigManager } from '@/shared/config';\nimport { ACubeSDKError, AuthCredentials, SDKConfig, User } from '@/shared/types';\nimport { createPrefixedLogger, logger } from '@/shared/utils';\n\nimport { DIContainer, DI_TOKENS } from './di-container';\nimport { SDKFactory, SDKFactoryConfig } from './sdk-factory';\n\nconst log = createPrefixedLogger('SDK');\n\nexport interface SDKEvents {\n onUserChanged?: (user: User | null) => void;\n onAuthError?: (error: ACubeSDKError) => void;\n onNetworkStatusChanged?: (online: boolean) => void;\n}\n\nexport class ACubeSDK {\n private config: ConfigManager;\n private adapters?: PlatformAdapters;\n private authService?: AuthenticationService;\n private certificateService?: CertificateService;\n private container?: DIContainer;\n private isInitialized = false;\n private currentOnlineState = true;\n private networkSubscription?: { unsubscribe: () => void };\n\n constructor(\n config: SDKConfig,\n customAdapters?: PlatformAdapters,\n private events: SDKEvents = {}\n ) {\n this.config = new ConfigManager(config);\n logger.setEnabled(this.config.isDebugEnabled());\n\n if (customAdapters) {\n this.adapters = customAdapters;\n }\n }\n\n async initialize(): Promise<void> {\n if (this.isInitialized) {\n log.debug('SDK already initialized, skipping');\n return;\n }\n\n log.info('Initializing SDK', {\n apiUrl: this.config.getApiUrl(),\n authUrl: this.config.getAuthUrl(),\n debugEnabled: this.config.isDebugEnabled(),\n });\n\n try {\n if (!this.adapters) {\n log.debug('Loading platform adapters');\n const mtlsConfig = createACubeMTLSConfig(\n this.config.getApiUrl(),\n this.config.getTimeout(),\n true\n );\n\n this.adapters = loadPlatformAdapters({\n mtlsConfig,\n });\n log.info('Platform adapters loaded', {\n hasNetworkMonitor: !!this.adapters.networkMonitor,\n hasMtls: !!this.adapters.mtls,\n hasSecureStorage: !!this.adapters.secureStorage,\n });\n }\n\n const factoryConfig: SDKFactoryConfig = {\n baseUrl: this.config.getApiUrl(),\n authUrl: this.config.getAuthUrl(),\n timeout: this.config.getTimeout(),\n debugEnabled: this.config.isDebugEnabled(),\n };\n\n log.debug('Creating DI container');\n this.container = SDKFactory.createContainer(factoryConfig);\n\n log.debug('Registering auth services');\n SDKFactory.registerAuthServices(this.container, this.adapters.secureStorage, factoryConfig);\n\n log.debug('Initializing certificate service');\n this.certificateService = new CertificateService(this.adapters.secureStorage);\n\n const tokenStorage = this.container.get<ITokenStoragePort>(DI_TOKENS.TOKEN_STORAGE_PORT);\n const httpPort = this.container.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n\n log.debug('Initializing authentication service');\n this.authService = new AuthenticationService(\n httpPort,\n tokenStorage,\n {\n authUrl: this.config.getAuthUrl(),\n timeout: this.config.getTimeout(),\n },\n {\n onUserChanged: this.events.onUserChanged,\n onAuthError: (error) => {\n this.events.onAuthError?.(new ACubeSDKError('AUTH_ERROR', error.message, error));\n },\n }\n );\n\n this.networkSubscription = this.adapters.networkMonitor.online$.subscribe((online) => {\n this.currentOnlineState = online;\n this.events.onNetworkStatusChanged?.(online);\n });\n\n const isAuth = await this.authService.isAuthenticated();\n log.debug('Checking authentication status during init', { isAuthenticated: isAuth });\n\n if (isAuth) {\n const token = await this.authService.getAccessToken();\n log.debug('Token retrieved during init', {\n hasToken: !!token,\n tokenPrefix: token?.substring(0, 20),\n });\n if (token) {\n httpPort.setAuthToken(token);\n log.info('Auth token set on HTTP port during initialization');\n }\n } else {\n log.warn('User not authenticated during SDK init - token will be set after login');\n }\n\n if (this.adapters?.mtls && 'setMTLSAdapter' in httpPort) {\n log.debug('Connecting mTLS adapter to HTTP port');\n const httpWithMtls = httpPort as { setMTLSAdapter: (adapter: IMTLSPort) => void };\n httpWithMtls.setMTLSAdapter(this.adapters.mtls);\n }\n\n if ('setAuthStrategy' in httpPort) {\n log.debug('Configuring auth strategy');\n const jwtHandler = new JwtAuthHandler(tokenStorage);\n const certificatePort: ICertificatePort | null = this.certificateService\n ? {\n storeCertificate: this.certificateService.storeCertificate.bind(\n this.certificateService\n ),\n getCertificate: this.certificateService.getCertificate.bind(this.certificateService),\n getCertificateInfo: this.certificateService.getCertificateInfo.bind(\n this.certificateService\n ),\n hasCertificate: this.certificateService.hasCertificate.bind(this.certificateService),\n clearCertificate: this.certificateService.clearCertificate.bind(\n this.certificateService\n ),\n }\n : null;\n const mtlsHandler = new MtlsAuthHandler(this.adapters?.mtls || null, certificatePort);\n\n const userProvider: IUserProvider = {\n getCurrentUser: async () => {\n try {\n return await this.authService!.getCurrentUser();\n } catch {\n return null;\n }\n },\n getAccessToken: async () => {\n try {\n return await this.authService!.getAccessToken();\n } catch {\n return null;\n }\n },\n };\n\n const authStrategy = new AuthStrategy(\n jwtHandler,\n mtlsHandler,\n userProvider,\n this.adapters?.mtls || null\n );\n\n const httpWithStrategy = httpPort as {\n setAuthStrategy: (strategy: AuthStrategy) => void;\n };\n httpWithStrategy.setAuthStrategy(authStrategy);\n }\n\n if (this.adapters?.mtls && this.certificateService) {\n try {\n const hasCert = await this.certificateService.hasCertificate();\n\n if (hasCert) {\n const storedCert = await this.certificateService.getCertificate();\n\n if (storedCert) {\n await this.adapters.mtls.configureCertificate({\n certificate: storedCert.certificate,\n privateKey: storedCert.privateKey,\n format: storedCert.format.toUpperCase() as 'PEM' | 'P12',\n });\n }\n }\n } catch (certError) {\n log.warn('Certificate auto-configuration failed, will retry on demand', {\n error: certError instanceof Error ? certError.message : certError,\n });\n }\n }\n\n this.isInitialized = true;\n log.info('SDK initialized successfully', {\n hasMtls: !!this.adapters.mtls,\n });\n } catch (error) {\n log.error('SDK initialization failed', {\n error: error instanceof Error ? error.message : error,\n });\n throw new ACubeSDKError(\n 'SDK_INITIALIZATION_ERROR',\n `Failed to initialize SDK: ${error instanceof Error ? error.message : 'Unknown error'}`,\n error\n );\n }\n }\n\n get httpPort(): IHttpPort {\n this.ensureInitialized();\n return this.container!.get<IHttpPort>(DI_TOKENS.HTTP_PORT);\n }\n\n get receipts(): IReceiptRepository {\n this.ensureInitialized();\n return this.container!.get<IReceiptRepository>(DI_TOKENS.RECEIPT_REPOSITORY);\n }\n\n get merchants(): IMerchantRepository {\n this.ensureInitialized();\n return this.container!.get<IMerchantRepository>(DI_TOKENS.MERCHANT_REPOSITORY);\n }\n\n get cashiers(): ICashierRepository {\n this.ensureInitialized();\n return this.container!.get<ICashierRepository>(DI_TOKENS.CASHIER_REPOSITORY);\n }\n\n get cashRegisters(): ICashRegisterRepository {\n this.ensureInitialized();\n return this.container!.get<ICashRegisterRepository>(DI_TOKENS.CASH_REGISTER_REPOSITORY);\n }\n\n get pointOfSales(): IPointOfSaleRepository {\n this.ensureInitialized();\n return this.container!.get<IPointOfSaleRepository>(DI_TOKENS.POINT_OF_SALE_REPOSITORY);\n }\n\n get suppliers(): ISupplierRepository {\n this.ensureInitialized();\n return this.container!.get<ISupplierRepository>(DI_TOKENS.SUPPLIER_REPOSITORY);\n }\n\n get pems(): IPemRepository {\n this.ensureInitialized();\n return this.container!.get<IPemRepository>(DI_TOKENS.PEM_REPOSITORY);\n }\n\n get dailyReports(): IDailyReportRepository {\n this.ensureInitialized();\n return this.container!.get<IDailyReportRepository>(DI_TOKENS.DAILY_REPORT_REPOSITORY);\n }\n\n get journals(): IJournalRepository {\n this.ensureInitialized();\n return this.container!.get<IJournalRepository>(DI_TOKENS.JOURNAL_REPOSITORY);\n }\n\n get notifications(): INotificationRepository {\n this.ensureInitialized();\n return this.container!.get<INotificationRepository>(DI_TOKENS.NOTIFICATION_REPOSITORY);\n }\n\n get telemetry(): ITelemetryRepository {\n this.ensureInitialized();\n return this.container!.get<ITelemetryRepository>(DI_TOKENS.TELEMETRY_REPOSITORY);\n }\n\n async login(credentials: AuthCredentials): Promise<User> {\n this.ensureInitialized();\n log.info('Login attempt', { email: credentials.email });\n\n const user = await this.authService!.login(credentials);\n log.info('Login successful', { roles: user.roles });\n\n const token = await this.authService!.getAccessToken();\n if (token) {\n this.httpPort.setAuthToken(token);\n log.debug('Auth token set on HTTP port');\n }\n\n return user as User;\n }\n\n async logout(): Promise<void> {\n this.ensureInitialized();\n log.info('Logout');\n\n await this.authService!.logout();\n this.httpPort.setAuthToken(null);\n }\n\n async getCurrentUser(): Promise<User | null> {\n this.ensureInitialized();\n\n try {\n const user = await this.authService!.getCurrentUser();\n return user as User | null;\n } catch {\n return null;\n }\n }\n\n async isAuthenticated(): Promise<boolean> {\n this.ensureInitialized();\n return await this.authService!.isAuthenticated();\n }\n\n isOnline(): boolean {\n this.ensureInitialized();\n return this.currentOnlineState;\n }\n\n getConfig(): SDKConfig {\n return this.config.getConfig();\n }\n\n updateConfig(updates: Partial<SDKConfig>): void {\n this.config.updateConfig(updates);\n }\n\n getAdapters(): PlatformAdapters | undefined {\n return this.adapters;\n }\n\n async storeCertificate(\n certificate: string,\n privateKey: string,\n options: {\n name?: string;\n format?: 'pem' | 'p12' | 'pkcs12';\n password?: string;\n } = {}\n ): Promise<void> {\n this.ensureInitialized();\n\n if (!this.certificateService) {\n throw new ACubeSDKError(\n 'CERTIFICATE_MANAGER_NOT_INITIALIZED',\n 'Certificate service not initialized'\n );\n }\n\n const format = (options.format || 'pem') as 'pem' | 'p12';\n await this.certificateService.storeCertificate(certificate, privateKey, format);\n\n if (this.adapters?.mtls) {\n await this.adapters.mtls.configureCertificate({\n certificate,\n privateKey,\n format: format.toUpperCase() as 'PEM' | 'P12',\n });\n }\n }\n\n async getMTLSStatus() {\n this.ensureInitialized();\n\n if (!this.adapters?.mtls) {\n return {\n adapterAvailable: false,\n isReady: false,\n hasCertificate: false,\n certificateInfo: null,\n platformInfo: null,\n };\n }\n\n const hasCertificate = (await this.certificateService?.hasCertificate()) || false;\n const certificateInfo = (await this.certificateService?.getCertificateInfo()) || null;\n\n return {\n adapterAvailable: true,\n isReady: hasCertificate,\n hasCertificate,\n certificateInfo,\n platformInfo: this.adapters.mtls.getPlatformInfo(),\n };\n }\n\n async testMTLSConnection(): Promise<boolean> {\n this.ensureInitialized();\n\n if (!this.adapters?.mtls) {\n return false;\n }\n\n return this.adapters.mtls.testConnection();\n }\n\n async clearCertificate(): Promise<void> {\n this.ensureInitialized();\n\n if (this.adapters?.mtls) {\n await this.adapters.mtls.removeCertificate().catch(() => {});\n }\n\n if (this.certificateService) {\n await this.certificateService.clearCertificate();\n }\n }\n\n getCertificateManager() {\n this.ensureInitialized();\n return this.certificateService;\n }\n\n async getCertificate() {\n this.ensureInitialized();\n\n if (!this.certificateService) {\n throw new ACubeSDKError(\n 'CERTIFICATE_MANAGER_NOT_INITIALIZED',\n 'Certificate service not initialized'\n );\n }\n\n return await this.certificateService.getCertificate();\n }\n\n async getCertificateInfo() {\n this.ensureInitialized();\n\n if (!this.certificateService) {\n throw new ACubeSDKError(\n 'CERTIFICATE_MANAGER_NOT_INITIALIZED',\n 'Certificate service not initialized'\n );\n }\n\n return await this.certificateService.getCertificateInfo();\n }\n\n async hasCertificate() {\n this.ensureInitialized();\n\n if (!this.certificateService) {\n throw new ACubeSDKError(\n 'CERTIFICATE_MANAGER_NOT_INITIALIZED',\n 'Certificate service not initialized'\n );\n }\n\n return await this.certificateService.hasCertificate();\n }\n\n async getCertificatesInfo(isRetryAttempt: boolean = false): Promise<CertificateInfo | null> {\n this.ensureInitialized();\n\n if (!this.adapters?.mtls) {\n throw new ACubeSDKError('MTLS_ADAPTER_NOT_AVAILABLE', 'mTLS adapter not available');\n }\n\n try {\n const hasCert = await this.adapters.mtls.hasCertificate();\n if (!hasCert) {\n return null;\n }\n\n const certInfo = await this.adapters.mtls.getCertificateInfo();\n\n if (certInfo) {\n return certInfo;\n }\n\n if (isRetryAttempt) {\n return null;\n }\n\n if (!this.certificateService) {\n return null;\n }\n\n const storedCert = await this.certificateService.getCertificate();\n if (!storedCert) {\n return null;\n }\n\n await this.adapters.mtls.configureCertificate({\n certificate: storedCert.certificate,\n privateKey: storedCert.privateKey,\n format: storedCert.format.toUpperCase() as 'PEM' | 'P12',\n });\n\n return await this.getCertificatesInfo(true);\n } catch (error) {\n throw new ACubeSDKError(\n 'CERTIFICATE_INFO_ERROR',\n `Failed to retrieve certificate information: ${error instanceof Error ? error.message : 'Unknown error'}`,\n error\n );\n }\n }\n\n destroy(): void {\n this.networkSubscription?.unsubscribe();\n this.container?.clear();\n this.isInitialized = false;\n }\n\n private ensureInitialized(): void {\n if (!this.isInitialized) {\n throw new ACubeSDKError(\n 'SDK_NOT_INITIALIZED',\n 'SDK not initialized. Call initialize() first.'\n );\n }\n }\n}\n\nexport async function createACubeSDK(\n config: SDKConfig,\n customAdapters?: PlatformAdapters,\n events?: SDKEvents\n): Promise<ACubeSDK> {\n const sdk = new ACubeSDK(config, customAdapters, events);\n await sdk.initialize();\n return sdk;\n}\n","import { BehaviorSubject, Observable, Subject, combineLatest, of } from 'rxjs';\nimport { distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\n\nimport { INetworkPort } from '@/application/ports/driven/network.port';\nimport { NOTIFICATION_CODES, Notification } from '@/domain/entities/notification.entity';\n\nexport type AppMode = 'NORMAL' | 'WARNING' | 'BLOCKED' | 'OFFLINE';\n\nexport interface WarningState {\n active: boolean;\n blockAt: Date | null;\n remainingMs: number;\n}\n\nexport interface AppState {\n mode: AppMode;\n isOnline: boolean;\n warning: WarningState;\n lastNotification: Notification | null;\n certificateMissing: boolean;\n}\n\nconst INITIAL_STATE: AppState = {\n mode: 'NORMAL',\n isOnline: true,\n warning: {\n active: false,\n blockAt: null,\n remainingMs: 0,\n },\n lastNotification: null,\n certificateMissing: false,\n};\n\nexport class AppStateService {\n private readonly stateSubject = new BehaviorSubject<AppState>(INITIAL_STATE);\n private readonly destroy$ = new Subject<void>();\n private warningTimerId: ReturnType<typeof setInterval> | null = null;\n\n get state$(): Observable<AppState> {\n return this.stateSubject.asObservable();\n }\n\n get mode$(): Observable<AppMode> {\n return this.state$.pipe(\n map((s) => s.mode),\n distinctUntilChanged()\n );\n }\n\n get isBlocked$(): Observable<boolean> {\n return this.mode$.pipe(map((m) => m === 'BLOCKED'));\n }\n\n get warning$(): Observable<WarningState> {\n return this.state$.pipe(\n map((s) => s.warning),\n distinctUntilChanged((a, b) => a.active === b.active && a.remainingMs === b.remainingMs)\n );\n }\n\n get certificateMissing$(): Observable<boolean> {\n return this.state$.pipe(\n map((s) => s.certificateMissing),\n distinctUntilChanged()\n );\n }\n\n constructor(\n private readonly notifications$: Observable<Notification[]>,\n private readonly networkPort: INetworkPort,\n private readonly certificateMissingInput$: Observable<boolean> = of(false)\n ) {\n this.setupSubscriptions();\n }\n\n private setupSubscriptions(): void {\n combineLatest([this.notifications$, this.networkPort.online$, this.certificateMissingInput$])\n .pipe(takeUntil(this.destroy$))\n .subscribe(([notifications, isOnline, certificateMissing]) => {\n this.processState(notifications, isOnline, certificateMissing);\n });\n }\n\n private processState(\n notifications: Notification[],\n isOnline: boolean,\n certificateMissing: boolean\n ): void {\n if (!isOnline) {\n this.updateState({\n mode: 'OFFLINE',\n isOnline: false,\n warning: { active: false, blockAt: null, remainingMs: 0 },\n lastNotification: null,\n certificateMissing,\n });\n this.stopWarningTimer();\n return;\n }\n\n const latestByCode = this.getLatestNotificationByCode(notifications);\n\n const statusOffline = latestByCode.get(NOTIFICATION_CODES.STATUS_OFFLINE);\n const statusOnline = latestByCode.get(NOTIFICATION_CODES.STATUS_ONLINE);\n const mf2Unreachable = latestByCode.get(NOTIFICATION_CODES.MF2_UNREACHABLE);\n const commRestored = latestByCode.get(NOTIFICATION_CODES.COMMUNICATION_RESTORED);\n\n let newMode: AppMode = 'NORMAL';\n let warningState: WarningState = { active: false, blockAt: null, remainingMs: 0 };\n\n // Determine BLOCKED state based on STATUS_OFFLINE vs STATUS_ONLINE\n if (statusOffline && statusOnline) {\n const offlineTime = new Date(statusOffline.createdAt).getTime();\n const onlineTime = new Date(statusOnline.createdAt).getTime();\n newMode = offlineTime > onlineTime ? 'BLOCKED' : 'NORMAL';\n } else if (statusOffline) {\n newMode = 'BLOCKED';\n }\n\n // Determine WARNING state based on MF2_UNREACHABLE vs COMMUNICATION_RESTORED/STATUS_ONLINE\n if (newMode !== 'BLOCKED' && mf2Unreachable) {\n const warningTime = new Date(mf2Unreachable.createdAt).getTime();\n const restoredTime = commRestored ? new Date(commRestored.createdAt).getTime() : 0;\n const onlineTime = statusOnline ? new Date(statusOnline.createdAt).getTime() : 0;\n\n // Only show warning if MF2_UNREACHABLE is more recent than both COMMUNICATION_RESTORED and STATUS_ONLINE\n // STATUS_ONLINE invalidates old MF2_UNREACHABLE (PEM went offline then back online)\n if (warningTime > restoredTime && warningTime > onlineTime && mf2Unreachable.payload) {\n const blockAtStr = mf2Unreachable.payload.block_at;\n const blockAt = new Date(blockAtStr);\n const now = Date.now();\n const remainingMs = blockAt.getTime() - now;\n\n if (remainingMs > 0) {\n newMode = 'WARNING';\n warningState = {\n active: true,\n blockAt,\n remainingMs,\n };\n this.startWarningTimer(blockAt);\n } else {\n // Warning countdown expired → transition to BLOCKED\n newMode = 'BLOCKED';\n this.stopWarningTimer();\n }\n } else {\n // Communication restored, clear warning\n this.stopWarningTimer();\n }\n } else {\n this.stopWarningTimer();\n }\n\n const lastNotification = this.getMostRecentNotification(notifications);\n\n this.updateState({\n mode: newMode,\n isOnline: true,\n warning: warningState,\n lastNotification,\n certificateMissing,\n });\n }\n\n private getLatestNotificationByCode(notifications: Notification[]): Map<string, Notification> {\n const map = new Map<string, Notification>();\n\n const sorted = [...notifications].sort(\n (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()\n );\n\n for (const notif of sorted) {\n if (!map.has(notif.code)) {\n map.set(notif.code, notif);\n }\n }\n\n return map;\n }\n\n private getMostRecentNotification(notifications: Notification[]): Notification | null {\n if (notifications.length === 0) return null;\n\n return (\n [...notifications].sort(\n (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()\n )[0] ?? null\n );\n }\n\n private startWarningTimer(blockAt: Date): void {\n this.stopWarningTimer();\n\n this.warningTimerId = setInterval(() => {\n const remainingMs = blockAt.getTime() - Date.now();\n\n if (remainingMs <= 0) {\n this.stopWarningTimer();\n return;\n }\n\n const current = this.stateSubject.value;\n if (current.warning.active) {\n this.updateState({\n ...current,\n warning: {\n ...current.warning,\n remainingMs,\n },\n });\n }\n }, 1000);\n }\n\n private stopWarningTimer(): void {\n if (this.warningTimerId) {\n clearInterval(this.warningTimerId);\n this.warningTimerId = null;\n }\n }\n\n private updateState(newState: AppState): void {\n this.stateSubject.next(newState);\n }\n\n destroy(): void {\n this.stopWarningTimer();\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { BehaviorSubject, Observable, Subject, Subscription, interval } from 'rxjs';\nimport { filter, pairwise, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { INetworkPort } from '@/application/ports/driven/network.port';\nimport { Notification, NotificationListParams } from '@/domain/entities/notification.entity';\nimport { INotificationRepository } from '@/domain/repositories/notification.repository';\nimport { Page } from '@/domain/value-objects/page.vo';\n\nexport interface NotificationServiceConfig {\n pollIntervalMs: number;\n defaultPageSize: number;\n}\n\nexport interface NotificationSyncState {\n status: 'idle' | 'syncing' | 'error';\n lastSyncAt: number | null;\n error?: string;\n}\n\nexport interface NotificationEvents {\n onNewNotifications?: (notifications: Notification[]) => void;\n onSyncError?: (error: Error) => void;\n}\n\nconst DEFAULT_CONFIG: NotificationServiceConfig = {\n pollIntervalMs: 30000,\n defaultPageSize: 30,\n};\n\nexport class NotificationService {\n private readonly notificationsSubject = new BehaviorSubject<Notification[]>([]);\n private readonly syncStateSubject = new BehaviorSubject<NotificationSyncState>({\n status: 'idle',\n lastSyncAt: null,\n });\n private readonly destroy$ = new Subject<void>();\n private pollingSubscription?: Subscription;\n private networkSubscription?: Subscription;\n private readonly config: NotificationServiceConfig;\n\n get notifications$(): Observable<Notification[]> {\n return this.notificationsSubject.asObservable();\n }\n\n get syncState$(): Observable<NotificationSyncState> {\n return this.syncStateSubject.asObservable();\n }\n\n constructor(\n private readonly repository: INotificationRepository,\n private readonly networkPort: INetworkPort,\n config?: Partial<NotificationServiceConfig>,\n private readonly events?: NotificationEvents\n ) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.setupNetworkMonitoring();\n }\n\n private setupNetworkMonitoring(): void {\n this.networkSubscription = this.networkPort.online$\n .pipe(\n startWith(true),\n pairwise(),\n filter(([wasOnline, isNowOnline]) => !wasOnline && isNowOnline),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.triggerSync();\n });\n }\n\n startPolling(): void {\n if (this.pollingSubscription) {\n return;\n }\n\n this.pollingSubscription = interval(this.config.pollIntervalMs)\n .pipe(\n startWith(0),\n switchMap(() => this.fetchNotifications()),\n takeUntil(this.destroy$)\n )\n .subscribe();\n }\n\n stopPolling(): void {\n this.pollingSubscription?.unsubscribe();\n this.pollingSubscription = undefined;\n }\n\n async triggerSync(): Promise<Page<Notification>> {\n return this.fetchNotifications();\n }\n\n async fetchNotifications(params?: NotificationListParams): Promise<Page<Notification>> {\n this.syncStateSubject.next({\n ...this.syncStateSubject.value,\n status: 'syncing',\n });\n\n try {\n const fetchParams: NotificationListParams = {\n page: params?.page ?? 1,\n size: params?.size ?? this.config.defaultPageSize,\n };\n\n const page = await this.repository.fetchNotifications(fetchParams);\n\n this.notificationsSubject.next(page.members);\n\n if (page.members.length > 0) {\n this.events?.onNewNotifications?.(page.members);\n }\n\n this.syncStateSubject.next({\n status: 'idle',\n lastSyncAt: Date.now(),\n });\n\n return page;\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n\n this.syncStateSubject.next({\n status: 'error',\n lastSyncAt: this.syncStateSubject.value.lastSyncAt,\n error: errorMessage,\n });\n\n if (error instanceof Error) {\n this.events?.onSyncError?.(error);\n }\n\n return { members: [] };\n }\n }\n\n clearNotifications(): void {\n this.notificationsSubject.next([]);\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.pollingSubscription?.unsubscribe();\n this.networkSubscription?.unsubscribe();\n }\n}\n","import { BehaviorSubject, Observable, Subject, Subscription, interval } from 'rxjs';\nimport { filter, pairwise, startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { INetworkPort } from '@/application/ports/driven/network.port';\nimport { Telemetry } from '@/domain/entities/telemetry.entity';\nimport { ITelemetryRepository } from '@/domain/repositories/telemetry.repository';\n\nexport interface TelemetryState {\n data: Telemetry | null;\n isLoading: boolean;\n lastFetchedAt: number | null;\n error?: string;\n}\n\nexport interface TelemetryServiceConfig {\n pollIntervalMs: number;\n}\n\nexport interface TelemetryEvents {\n onTelemetryUpdate?: (telemetry: Telemetry) => void;\n onSyncError?: (error: Error) => void;\n}\n\nconst DEFAULT_CONFIG: TelemetryServiceConfig = {\n pollIntervalMs: 60000, // 1 minute default for telemetry\n};\n\nexport class TelemetryService {\n private readonly stateSubject = new BehaviorSubject<TelemetryState>({\n data: null,\n isLoading: false,\n lastFetchedAt: null,\n });\n private readonly destroy$ = new Subject<void>();\n private pollingSubscription?: Subscription;\n private networkSubscription?: Subscription;\n private readonly config: TelemetryServiceConfig;\n private currentPemId?: string;\n\n get state$(): Observable<TelemetryState> {\n return this.stateSubject.asObservable();\n }\n\n constructor(\n private readonly repository: ITelemetryRepository,\n private readonly networkPort: INetworkPort,\n config?: Partial<TelemetryServiceConfig>,\n private readonly events?: TelemetryEvents\n ) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n this.setupNetworkMonitoring();\n }\n\n private setupNetworkMonitoring(): void {\n this.networkSubscription = this.networkPort.online$\n .pipe(\n startWith(true),\n pairwise(),\n filter(([wasOnline, isNowOnline]) => !wasOnline && isNowOnline),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.triggerSync();\n });\n }\n\n startPolling(pemId: string): void {\n if (this.pollingSubscription) {\n // If already polling for same pemId, do nothing\n if (this.currentPemId === pemId) {\n return;\n }\n // If polling for different pemId, stop and restart\n this.stopPolling();\n }\n\n this.currentPemId = pemId;\n\n this.pollingSubscription = interval(this.config.pollIntervalMs)\n .pipe(\n startWith(0),\n switchMap(() => this.fetchTelemetry()),\n takeUntil(this.destroy$)\n )\n .subscribe();\n }\n\n stopPolling(): void {\n this.pollingSubscription?.unsubscribe();\n this.pollingSubscription = undefined;\n this.currentPemId = undefined;\n }\n\n async triggerSync(): Promise<TelemetryState> {\n if (!this.currentPemId) {\n return this.stateSubject.value;\n }\n return this.fetchTelemetry();\n }\n\n async getTelemetry(pemId: string): Promise<TelemetryState> {\n // Start polling if not already polling for this pemId\n if (this.currentPemId !== pemId) {\n this.startPolling(pemId);\n }\n return this.stateSubject.value;\n }\n\n async refreshTelemetry(pemId: string): Promise<TelemetryState> {\n // Update pemId and fetch immediately\n if (this.currentPemId !== pemId) {\n this.startPolling(pemId);\n } else {\n return this.fetchTelemetry();\n }\n return this.stateSubject.value;\n }\n\n private async fetchTelemetry(): Promise<TelemetryState> {\n if (!this.currentPemId) {\n return this.stateSubject.value;\n }\n\n this.stateSubject.next({\n ...this.stateSubject.value,\n isLoading: true,\n error: undefined,\n });\n\n try {\n const data = await this.repository.getTelemetry(this.currentPemId);\n\n const newState: TelemetryState = {\n data,\n isLoading: false,\n lastFetchedAt: Date.now(),\n };\n\n this.stateSubject.next(newState);\n this.events?.onTelemetryUpdate?.(data);\n return newState;\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n const newState: TelemetryState = {\n ...this.stateSubject.value,\n isLoading: false,\n error: errorMessage,\n };\n\n this.stateSubject.next(newState);\n\n if (error instanceof Error) {\n this.events?.onSyncError?.(error);\n }\n\n return newState;\n }\n }\n\n clearTelemetry(): void {\n this.stateSubject.next({\n data: null,\n isLoading: false,\n lastFetchedAt: null,\n });\n }\n\n destroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.pollingSubscription?.unsubscribe();\n this.networkSubscription?.unsubscribe();\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\n\nimport { CertificateInfo, PlatformAdapters } from '@/application/ports/driven';\nimport { StoredCertificate } from '@/application/ports/driven/certificate.port';\nimport { INetworkPort } from '@/application/ports/driven/network.port';\nimport {\n AppMode,\n AppState,\n AppStateService,\n WarningState,\n} from '@/application/services/app-state.service';\nimport { NotificationService } from '@/application/services/notification.service';\nimport { TelemetryService, TelemetryState } from '@/application/services/telemetry.service';\nimport { ICashRegisterRepository } from '@/domain/repositories/cash-register.repository';\nimport { ICashierRepository } from '@/domain/repositories/cashier.repository';\nimport { IDailyReportRepository } from '@/domain/repositories/daily-report.repository';\nimport { IJournalRepository } from '@/domain/repositories/journal.repository';\nimport { IMerchantRepository } from '@/domain/repositories/merchant.repository';\nimport { INotificationRepository } from '@/domain/repositories/notification.repository';\nimport { IPemRepository } from '@/domain/repositories/pem.repository';\nimport { IPointOfSaleRepository } from '@/domain/repositories/point-of-sale.repository';\nimport { IReceiptRepository } from '@/domain/repositories/receipt.repository';\nimport { ISupplierRepository } from '@/domain/repositories/supplier.repository';\nimport { hasAnyRole } from '@/domain/value-objects/role.vo';\nimport { ACubeSDKError, AuthCredentials, SDKConfig, User } from '@/shared/types';\nimport { createPrefixedLogger } from '@/shared/utils';\n\nimport { ACubeSDK, SDKEvents } from './acube-sdk';\n\nconst log = createPrefixedLogger('SDK-MANAGER');\n\n/**\n * Configuration for SDKManager\n */\nexport interface SDKManagerConfig extends SDKConfig {\n /** Notification polling interval in milliseconds (default: 30000) */\n notificationPollIntervalMs?: number;\n /** Notification page size for fetching (default: 30) */\n notificationPageSize?: number;\n /** Telemetry polling interval in milliseconds (default: 60000) */\n telemetryPollIntervalMs?: number;\n}\n\n/**\n * Simplified telemetry operations for product use\n */\nexport interface TelemetryOperations {\n /** Start polling telemetry using pemId from installed certificate */\n startPollingAuto: () => Promise<string | null>;\n /** Start polling telemetry for a specific PEM */\n startPolling: (pemId: string) => void;\n /** Stop polling telemetry */\n stopPolling: () => void;\n /** Get telemetry state for a specific PEM (starts polling if not already) */\n getTelemetry: (pemId: string) => Promise<TelemetryState>;\n /** Refresh telemetry for a specific PEM */\n refreshTelemetry: (pemId: string) => Promise<TelemetryState>;\n /** Manually trigger a telemetry sync */\n triggerSync: () => Promise<TelemetryState>;\n /** Clear current telemetry data */\n clearTelemetry: () => void;\n /** Get the pemId from the installed certificate */\n getPemId: () => Promise<string | null>;\n}\n\n/**\n * Simplified services interface for product use\n * Exposes only what product developers need\n */\nexport interface ManagedServices {\n receipts: IReceiptRepository;\n merchants: IMerchantRepository;\n cashiers: ICashierRepository;\n cashRegisters: ICashRegisterRepository;\n pointOfSales: IPointOfSaleRepository;\n suppliers: ISupplierRepository;\n pems: IPemRepository;\n dailyReports: IDailyReportRepository;\n journals: IJournalRepository;\n telemetry: TelemetryOperations;\n login: (credentials: AuthCredentials) => Promise<User>;\n logout: () => Promise<void>;\n getCurrentUser: () => Promise<User | null>;\n isAuthenticated: () => Promise<boolean>;\n storeCertificate: (\n certificate: string,\n privateKey: string,\n options?: { format?: 'pem' | 'p12' }\n ) => Promise<void>;\n hasCertificate: () => Promise<boolean>;\n clearCertificate: () => Promise<void>;\n getCertificate: () => Promise<StoredCertificate | null>;\n getCertificatesInfo: () => Promise<CertificateInfo | null>;\n notifications: INotificationRepository;\n isOnline: () => boolean;\n}\n\n/**\n * Events emitted by SDKManager\n */\nexport interface SDKManagerEvents extends SDKEvents {\n onAppStateChanged?: (state: AppState) => void;\n onTelemetryStateChanged?: (state: TelemetryState) => void;\n}\n\n/**\n * SDKManager - Singleton wrapper for ACubeSDK with simplified API\n *\n * Provides:\n * - Single initialization point\n * - Observable app state (NORMAL, WARNING, BLOCKED, OFFLINE)\n * - Observable telemetry state with polling\n * - Simplified services for product use\n *\n * @example\n * ```typescript\n * // Configure once at app startup\n * SDKManager.configure({\n * environment: 'sandbox',\n * notificationPollIntervalMs: 30000,\n * telemetryPollIntervalMs: 60000,\n * });\n *\n * // Initialize\n * await SDKManager.getInstance().initialize();\n *\n * // Use in components\n * const manager = SDKManager.getInstance();\n * manager.appState$.subscribe(state => {\n * console.log('App mode:', state.mode);\n * });\n *\n * // Start telemetry polling for a specific PEM\n * manager.startTelemetryPolling('PEM-123');\n *\n * // Subscribe to telemetry updates\n * manager.telemetry$.subscribe(telemetry => {\n * console.log('Telemetry:', telemetry);\n * });\n *\n * // Cleanup\n * SDKManager.destroy();\n * ```\n */\nexport class SDKManager {\n private static instance: SDKManager | null = null;\n\n private sdk: ACubeSDK | null = null;\n private notificationService: NotificationService | null = null;\n private telemetryService: TelemetryService | null = null;\n private appStateService: AppStateService | null = null;\n private isInitialized = false;\n private isPollingActive = false;\n private readonly certificateMissingSubject = new BehaviorSubject<boolean>(false);\n\n private constructor(\n private readonly config: SDKManagerConfig,\n private readonly adapters?: PlatformAdapters,\n private readonly events?: SDKManagerEvents\n ) {}\n\n /**\n * Handle user state changes (login/logout/token expiration)\n * Manages polling lifecycle based on user role\n */\n private handleUserChanged = async (user: User | null): Promise<void> => {\n // Always call user's event handler first\n this.events?.onUserChanged?.(user);\n\n if (!this.isInitialized) return;\n\n if (user) {\n // User logged in - check role and certificate before starting polling\n const canPoll = hasAnyRole(user.roles, ['ROLE_MERCHANT', 'ROLE_CASHIER']);\n if (canPoll && !this.isPollingActive) {\n const hasCert = await this.checkCertificate();\n if (!hasCert) {\n log.warn('Certificate missing — polling blocked until certificate is installed');\n return;\n }\n this.notificationService?.startPolling();\n await this.startTelemetryPollingAuto();\n this.isPollingActive = true;\n }\n } else {\n // User logged out or token expired - stop polling\n if (this.isPollingActive) {\n this.notificationService?.stopPolling();\n this.telemetryService?.stopPolling();\n this.telemetryService?.clearTelemetry();\n this.isPollingActive = false;\n }\n this.certificateMissingSubject.next(false);\n }\n };\n\n /**\n * Configure the SDKManager singleton\n * Must be called before getInstance()\n */\n static configure(\n config: SDKManagerConfig,\n adapters?: PlatformAdapters,\n events?: SDKManagerEvents\n ): void {\n if (SDKManager.instance) {\n throw new ACubeSDKError(\n 'SDK_ALREADY_CONFIGURED',\n 'SDKManager already configured. Call destroy() first to reconfigure.'\n );\n }\n SDKManager.instance = new SDKManager(config, adapters, events);\n }\n\n /**\n * Get the SDKManager singleton instance\n * Throws if not configured\n */\n static getInstance(): SDKManager {\n if (!SDKManager.instance) {\n throw new ACubeSDKError(\n 'SDK_NOT_CONFIGURED',\n 'SDKManager not configured. Call SDKManager.configure(config) first.'\n );\n }\n return SDKManager.instance;\n }\n\n /**\n * Check if SDKManager is configured\n */\n static isConfigured(): boolean {\n return SDKManager.instance !== null;\n }\n\n /**\n * Destroy the singleton and cleanup resources\n */\n static destroy(): void {\n if (SDKManager.instance) {\n SDKManager.instance.cleanup();\n SDKManager.instance = null;\n }\n }\n\n /**\n * Initialize the SDK and all services\n * Must be called after configure()\n */\n async initialize(): Promise<void> {\n if (this.isInitialized) return;\n\n // Wrap events to intercept onUserChanged for polling lifecycle management\n const wrappedEvents: SDKManagerEvents = {\n ...this.events,\n onUserChanged: this.handleUserChanged,\n };\n\n this.sdk = new ACubeSDK(this.config, this.adapters, wrappedEvents);\n await this.sdk.initialize();\n\n const adaptersRef = this.sdk.getAdapters();\n if (!adaptersRef) {\n throw new ACubeSDKError('ADAPTERS_NOT_AVAILABLE', 'Platform adapters not available');\n }\n\n const networkPort = adaptersRef.networkMonitor as INetworkPort;\n const notificationRepo = this.sdk.notifications;\n const telemetryRepo = this.sdk.telemetry;\n\n this.notificationService = new NotificationService(notificationRepo, networkPort, {\n pollIntervalMs: this.config.notificationPollIntervalMs ?? 30000,\n defaultPageSize: this.config.notificationPageSize ?? 30,\n });\n\n this.telemetryService = new TelemetryService(telemetryRepo, networkPort, {\n pollIntervalMs: this.config.telemetryPollIntervalMs ?? 60000,\n });\n\n this.appStateService = new AppStateService(\n this.notificationService.notifications$,\n networkPort,\n this.certificateMissingSubject.asObservable()\n );\n\n if (this.events?.onAppStateChanged) {\n this.appStateService.state$.subscribe(this.events.onAppStateChanged);\n }\n if (this.events?.onTelemetryStateChanged) {\n this.telemetryService.state$.subscribe(this.events.onTelemetryStateChanged);\n }\n\n this.isInitialized = true;\n\n // Only start polling for MERCHANT/CASHIER users (SUPPLIER gets 401 on these endpoints)\n const user = await this.sdk.getCurrentUser();\n const canPoll = user && hasAnyRole(user.roles, ['ROLE_MERCHANT', 'ROLE_CASHIER']);\n\n if (canPoll) {\n const hasCert = await this.checkCertificate();\n if (hasCert) {\n this.notificationService.startPolling();\n await this.startTelemetryPollingAuto();\n this.isPollingActive = true;\n } else {\n log.warn('Certificate missing at init — polling blocked until certificate is installed');\n }\n }\n // AppStateService remains active for all users (handles OFFLINE network state)\n }\n\n /**\n * Observable stream of app state\n * Emits AppState with mode (NORMAL, WARNING, BLOCKED, OFFLINE)\n */\n get appState$(): Observable<AppState> {\n this.ensureInitialized();\n return this.appStateService!.state$;\n }\n\n /**\n * Observable stream of app mode only\n * Emits AppMode with distinctUntilChanged\n */\n get mode$(): Observable<AppMode> {\n this.ensureInitialized();\n return this.appStateService!.mode$;\n }\n\n /**\n * Observable stream indicating if app is blocked\n */\n get isBlocked$(): Observable<boolean> {\n this.ensureInitialized();\n return this.appStateService!.isBlocked$;\n }\n\n /**\n * Observable stream of warning state with countdown\n */\n get warning$(): Observable<WarningState> {\n this.ensureInitialized();\n return this.appStateService!.warning$;\n }\n\n /**\n * Observable stream indicating if certificate is missing\n * When true, polling is blocked and the user should install a certificate\n */\n get certificateMissing$(): Observable<boolean> {\n return this.certificateMissingSubject.asObservable();\n }\n\n /**\n * Observable stream of telemetry state (data, isLoading, error)\n */\n get telemetryState$(): Observable<TelemetryState> {\n this.ensureInitialized();\n return this.telemetryService!.state$;\n }\n\n /**\n * Get the pemId from the installed certificate\n */\n async getPemId(): Promise<string | null> {\n this.ensureInitialized();\n try {\n const certInfo = await this.sdk!.getCertificatesInfo();\n return certInfo?.pemId ?? null;\n } catch {\n return null;\n }\n }\n\n /**\n * Start polling telemetry using the pemId from installed certificate\n * Returns the pemId if successful, null if no certificate is installed\n */\n async startTelemetryPollingAuto(): Promise<string | null> {\n this.ensureInitialized();\n const pemId = await this.getPemId();\n if (pemId) {\n this.telemetryService!.startPolling(pemId);\n }\n return pemId;\n }\n\n /**\n * Start polling telemetry for a specific PEM\n */\n startTelemetryPolling(pemId: string): void {\n this.ensureInitialized();\n this.telemetryService!.startPolling(pemId);\n }\n\n /**\n * Stop telemetry polling\n */\n stopTelemetryPolling(): void {\n this.ensureInitialized();\n this.telemetryService!.stopPolling();\n }\n\n /**\n * Get simplified services for product use\n */\n getServices(): ManagedServices {\n this.ensureInitialized();\n\n const sdk = this.sdk!;\n const telemetryService = this.telemetryService!;\n\n return {\n receipts: sdk.receipts,\n merchants: sdk.merchants,\n cashiers: sdk.cashiers,\n cashRegisters: sdk.cashRegisters,\n pointOfSales: sdk.pointOfSales,\n suppliers: sdk.suppliers,\n pems: sdk.pems,\n dailyReports: sdk.dailyReports,\n journals: sdk.journals,\n telemetry: {\n startPollingAuto: (): Promise<string | null> => this.startTelemetryPollingAuto(),\n startPolling: (pemId: string): void => telemetryService.startPolling(pemId),\n stopPolling: (): void => telemetryService.stopPolling(),\n getTelemetry: (pemId: string): Promise<TelemetryState> =>\n telemetryService.getTelemetry(pemId),\n refreshTelemetry: (pemId: string): Promise<TelemetryState> =>\n telemetryService.refreshTelemetry(pemId),\n triggerSync: (): Promise<TelemetryState> => telemetryService.triggerSync(),\n clearTelemetry: (): void => telemetryService.clearTelemetry(),\n getPemId: (): Promise<string | null> => this.getPemId(),\n },\n login: (credentials: AuthCredentials): Promise<User> => sdk.login(credentials),\n logout: (): Promise<void> => sdk.logout(),\n getCurrentUser: (): Promise<User | null> => sdk.getCurrentUser(),\n isAuthenticated: (): Promise<boolean> => sdk.isAuthenticated(),\n storeCertificate: async (\n certificate: string,\n privateKey: string,\n options?: { format?: 'pem' | 'p12' }\n ): Promise<void> => {\n await sdk.storeCertificate(certificate, privateKey, options);\n this.certificateMissingSubject.next(false);\n // Start polling if user can poll and polling is not active\n if (!this.isPollingActive) {\n const user = await sdk.getCurrentUser();\n const canPoll = user && hasAnyRole(user.roles, ['ROLE_MERCHANT', 'ROLE_CASHIER']);\n if (canPoll) {\n log.info('Certificate installed — starting polling');\n this.notificationService?.startPolling();\n await this.startTelemetryPollingAuto();\n this.isPollingActive = true;\n }\n }\n },\n hasCertificate: (): Promise<boolean> => sdk.hasCertificate(),\n clearCertificate: async (): Promise<void> => {\n await sdk.clearCertificate();\n this.certificateMissingSubject.next(true);\n // Stop polling since certificate is required\n if (this.isPollingActive) {\n log.info('Certificate removed — stopping polling');\n this.notificationService?.stopPolling();\n this.telemetryService?.stopPolling();\n this.telemetryService?.clearTelemetry();\n this.isPollingActive = false;\n }\n },\n getCertificate: (): Promise<StoredCertificate | null> => sdk.getCertificate(),\n getCertificatesInfo: (): Promise<CertificateInfo | null> => sdk.getCertificatesInfo(),\n notifications: sdk.notifications,\n isOnline: (): boolean => sdk.isOnline(),\n };\n }\n\n /**\n * Manually trigger a notification sync\n */\n async syncNotifications(): Promise<void> {\n this.ensureInitialized();\n await this.notificationService!.triggerSync();\n }\n\n /**\n * Manually trigger a telemetry sync\n */\n async syncTelemetry(): Promise<TelemetryState> {\n this.ensureInitialized();\n return this.telemetryService!.triggerSync();\n }\n\n /**\n * Check if the manager is initialized\n */\n getIsInitialized(): boolean {\n return this.isInitialized;\n }\n\n /**\n * Get the underlying SDK instance (for advanced use cases)\n */\n getSDK(): ACubeSDK {\n this.ensureInitialized();\n return this.sdk!;\n }\n\n /**\n * Check certificate availability and update certificateMissing state.\n * Returns true if certificate is available, false otherwise.\n */\n private async checkCertificate(): Promise<boolean> {\n try {\n const hasCert = await this.sdk!.hasCertificate();\n this.certificateMissingSubject.next(!hasCert);\n return hasCert;\n } catch {\n this.certificateMissingSubject.next(true);\n return false;\n }\n }\n\n private cleanup(): void {\n this.notificationService?.destroy();\n this.telemetryService?.destroy();\n this.appStateService?.destroy();\n this.sdk?.destroy();\n\n this.notificationService = null;\n this.telemetryService = null;\n this.appStateService = null;\n this.sdk = null;\n this.isInitialized = false;\n this.isPollingActive = false;\n }\n\n private ensureInitialized(): void {\n if (!this.isInitialized) {\n throw new ACubeSDKError(\n 'SDK_NOT_INITIALIZED',\n 'SDKManager not initialized. Call initialize() first.'\n );\n }\n }\n}\n","import { GoodOrService, VatRateCode } from '@/domain/value-objects/vat-code.vo';\n\nexport type ReceiptType = 'sale' | 'return' | 'void';\n\nexport interface ReceiptItem {\n type?: GoodOrService;\n quantity: string;\n description: string;\n unitPrice: string;\n vatRateCode?: VatRateCode;\n simplifiedVatAllocation?: boolean;\n discount?: string;\n isDownPaymentOrVoucherRedemption?: boolean;\n complimentary?: boolean;\n}\n\nexport interface ReceiptReturnItem {\n id: number;\n quantity: string;\n}\n\nexport interface ReturnableReceiptItem {\n id: number;\n type?: GoodOrService;\n quantity: string;\n returnedQuantity: string;\n description: string;\n unitPrice: string;\n vatRateCode?: VatRateCode;\n}\n\nexport interface Receipt {\n uuid: string;\n type: ReceiptType;\n createdAt: string;\n totalAmount: string;\n documentNumber: string;\n documentDatetime?: string;\n isReturnable: boolean;\n isVoidable: boolean;\n pdfUrl?: string;\n parentReceiptUuid?: string;\n}\n\nexport interface ReceiptDetails extends Receipt {\n customerLotteryCode?: string;\n vatNumber: string;\n totalTaxableAmount: string;\n totalUncollectedAmount: string;\n deductibleAmount: string;\n totalVatAmount: string;\n totalDiscount: string;\n totalGrossDiscount: string;\n discount: string;\n items?: ReceiptItem[];\n}\n\nexport interface ReceiptInput {\n items: ReceiptItem[];\n customerTaxCode?: string;\n customerLotteryCode?: string;\n discount?: string;\n invoiceIssuing?: boolean;\n uncollectedDcrToSsn?: boolean;\n servicesUncollectedAmount?: string;\n goodsUncollectedAmount?: string;\n cashPaymentAmount?: string;\n electronicPaymentAmount?: string;\n ticketRestaurantPaymentAmount?: string;\n ticketRestaurantQuantity?: number;\n}\n\nexport interface ReceiptReturnInput {\n items: ReceiptReturnItem[];\n documentNumber: string;\n}\n\n/**\n * Input for voiding a receipt from the same POS\n * DELETE /mf1/receipts\n */\nexport interface VoidReceiptInput {\n documentNumber: string;\n}\n\n/**\n * Input for voiding a receipt via a different device (PEM)\n * DELETE /mf1/receipts/void-via-different-device\n */\nexport interface VoidViaDifferentDeviceInput {\n deviceId: string;\n items: ReceiptItem[];\n documentNumber: string;\n documentDatetime: string;\n lotteryCode?: string;\n}\n\nexport type ReceiptProofType = 'POS' | 'VR' | 'ND';\n\n/**\n * Input for voiding a receipt with proof\n * DELETE /mf1/receipts/void-with-proof\n */\nexport interface VoidWithProofInput {\n items: ReceiptItem[];\n proof: ReceiptProofType;\n documentDatetime: string;\n}\n\n/**\n * Input for returning items via a different device (PEM)\n * POST /mf1/receipts/return-via-different-device\n */\nexport interface ReturnViaDifferentDeviceInput {\n deviceId: string;\n items: ReceiptItem[];\n documentNumber: string;\n documentDatetime: string;\n lotteryCode?: string;\n}\n\n/**\n * Input for returning items with proof\n * POST /mf1/receipts/return-with-proof\n */\nexport interface ReturnWithProofInput {\n items: ReceiptItem[];\n proof: ReceiptProofType;\n documentDatetime: string;\n}\n\nexport const RECEIPT_READY = 'ready';\nexport const RECEIPT_SENT = 'sent';\nexport type ReceiptStatus = typeof RECEIPT_READY | typeof RECEIPT_SENT;\n\nexport const RECEIPT_SORT_DESCENDING = 'descending';\nexport const RECEIPT_SORT_ASCENDING = 'ascending';\nexport type ReceiptSortOrder = typeof RECEIPT_SORT_DESCENDING | typeof RECEIPT_SORT_ASCENDING;\n\nexport interface ReceiptListParams {\n serialNumber: string;\n page?: number;\n size?: number;\n status?: ReceiptStatus;\n sort?: ReceiptSortOrder;\n documentNumber?: string;\n documentDatetimeBefore?: string;\n documentDatetimeAfter?: string | null;\n}\n","import axios from 'axios';\n\nimport { ACubeSDKError } from '@/shared/types';\n\nexport function transformError(error: unknown): ACubeSDKError {\n if (axios.isAxiosError(error)) {\n const response = error.response;\n\n if (!response) {\n return new ACubeSDKError('NETWORK_ERROR', 'Network error occurred', error);\n }\n\n const status = response.status;\n const data = response.data;\n const violations = data?.violations;\n\n let message = 'Unknown error occurred';\n if (data?.detail) {\n message = data.detail;\n } else if (data?.title) {\n message = data.title;\n } else if (error.message) {\n message = error.message;\n }\n\n switch (status) {\n case 400:\n return new ACubeSDKError('VALIDATION_ERROR', message, error, status, violations);\n case 401:\n return new ACubeSDKError('AUTH_ERROR', message, error, status, violations);\n case 403:\n return new ACubeSDKError('FORBIDDEN_ERROR', message, error, status, violations);\n case 404:\n return new ACubeSDKError('NOT_FOUND_ERROR', message, error, status, violations);\n case 422:\n return new ACubeSDKError('VALIDATION_ERROR', message, error, status, violations);\n default:\n return new ACubeSDKError('UNKNOWN_ERROR', message, error, status, violations);\n }\n }\n\n return new ACubeSDKError('UNKNOWN_ERROR', 'Unknown error occurred', error);\n}\n","import { MTLSError } from '@/domain/errors';\n\nexport enum ErrorCategory {\n SERVER_ERROR = 'SERVER_ERROR',\n CLIENT_ERROR = 'CLIENT_ERROR',\n AUTH_ERROR = 'AUTH_ERROR',\n CERTIFICATE_ERROR = 'CERTIFICATE_ERROR',\n NETWORK_ERROR = 'NETWORK_ERROR',\n UNKNOWN_ERROR = 'UNKNOWN_ERROR',\n}\n\nexport interface ErrorClassification {\n category: ErrorCategory;\n statusCode?: number;\n message: string;\n shouldRetry: boolean;\n userMessage: string;\n}\n\nfunction extractStatusCode(error: unknown): number | undefined {\n if (error instanceof MTLSError && error.statusCode) {\n return error.statusCode;\n }\n\n const errorObj = error as { response?: { status?: number }; statusCode?: number };\n\n if (errorObj?.response?.status) {\n return errorObj.response.status;\n }\n\n if (typeof errorObj?.statusCode === 'number') {\n return errorObj.statusCode;\n }\n\n return undefined;\n}\n\nexport function classifyError(error: unknown): ErrorClassification {\n const statusCode = extractStatusCode(error);\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n if (statusCode && statusCode >= 500 && statusCode < 600) {\n return {\n category: ErrorCategory.SERVER_ERROR,\n statusCode,\n message: errorMessage,\n shouldRetry: false,\n userMessage: `Server error (${statusCode}): The server encountered an error.`,\n };\n }\n\n if (statusCode === 401 || statusCode === 403) {\n return {\n category: ErrorCategory.AUTH_ERROR,\n statusCode,\n message: errorMessage,\n shouldRetry: false,\n userMessage: `Authentication error (${statusCode}): Invalid credentials or insufficient permissions.`,\n };\n }\n\n if (statusCode && statusCode >= 400 && statusCode < 500) {\n return {\n category: ErrorCategory.CLIENT_ERROR,\n statusCode,\n message: errorMessage,\n shouldRetry: false,\n userMessage: `Request error (${statusCode}): ${errorMessage}`,\n };\n }\n\n if (error instanceof MTLSError) {\n return {\n category: ErrorCategory.CERTIFICATE_ERROR,\n statusCode,\n message: errorMessage,\n shouldRetry: true,\n userMessage: 'Certificate error: Unable to establish secure connection.',\n };\n }\n\n if (\n !statusCode &&\n (errorMessage.toLowerCase().includes('network') ||\n errorMessage.toLowerCase().includes('timeout') ||\n errorMessage.toLowerCase().includes('connection'))\n ) {\n return {\n category: ErrorCategory.NETWORK_ERROR,\n message: errorMessage,\n shouldRetry: true,\n userMessage: 'Network error: Unable to connect to server.',\n };\n }\n\n return {\n category: ErrorCategory.UNKNOWN_ERROR,\n statusCode,\n message: errorMessage,\n shouldRetry: false,\n userMessage: `Unexpected error: ${errorMessage}`,\n };\n}\n\nexport function shouldReconfigureCertificate(error: unknown): boolean {\n const classification = classifyError(error);\n return classification.category === ErrorCategory.CERTIFICATE_ERROR;\n}\n\nexport function shouldRetryRequest(error: unknown, isRetryAttempt: boolean): boolean {\n if (isRetryAttempt) {\n return false;\n }\n const classification = classifyError(error);\n return classification.shouldRetry;\n}\n\nexport function getUserFriendlyMessage(error: unknown): string {\n const classification = classifyError(error);\n return classification.userMessage;\n}\n","export interface CertificateData {\n certificate: string;\n privateKey: string;\n format: 'PEM' | 'P12';\n password?: string;\n}\n\nexport interface MTLSConnectionConfig {\n baseUrl: string;\n port?: number;\n timeout?: number;\n validateCertificate?: boolean;\n}\n\nexport interface MTLSRequestConfig {\n url: string;\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n headers?: Record<string, string>;\n data?: unknown;\n timeout?: number;\n responseType?: 'json' | 'blob' | 'arraybuffer' | 'text';\n}\n\nexport interface MTLSResponse<T = unknown> {\n data: T;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n}\n\nexport interface CertificateInfo {\n subject: string;\n issuer: string;\n validFrom: Date;\n validTo: Date;\n serialNumber: string;\n fingerprint: string;\n pemId: string;\n cashRegisterUUID: string;\n}\n\nexport interface IMTLSPort {\n isMTLSSupported(): Promise<boolean>;\n initialize(config: MTLSConnectionConfig): Promise<void>;\n configureCertificate(certificateData: CertificateData): Promise<void>;\n hasCertificate(): Promise<boolean>;\n getCertificateInfo(): Promise<CertificateInfo | null>;\n request<T>(config: MTLSRequestConfig): Promise<MTLSResponse<T>>;\n testConnection(): Promise<boolean>;\n removeCertificate(): Promise<void>;\n getBaseUrl(): string | null;\n getPlatformInfo(): {\n platform: 'react-native' | 'node' | 'web' | 'expo';\n mtlsSupported: boolean;\n certificateStorage: 'keychain' | 'keystore' | 'filesystem' | 'browser-managed' | 'memory';\n fallbackToJWT: boolean;\n };\n}\n\nexport interface IMTLSAdapterFactory {\n createAdapter(): Promise<IMTLSPort | null>;\n getPlatform(): string;\n}\n\nexport type IMTLSAdapter = IMTLSPort;\n\nexport enum MTLSErrorType {\n NOT_SUPPORTED = 'MTLS_NOT_SUPPORTED',\n CERTIFICATE_NOT_FOUND = 'MTLS_CERTIFICATE_NOT_FOUND',\n CERTIFICATE_EXPIRED = 'MTLS_CERTIFICATE_EXPIRED',\n CERTIFICATE_INVALID = 'MTLS_CERTIFICATE_INVALID',\n CONNECTION_FAILED = 'MTLS_CONNECTION_FAILED',\n AUTHENTICATION_FAILED = 'MTLS_AUTHENTICATION_FAILED',\n CONFIGURATION_ERROR = 'MTLS_CONFIGURATION_ERROR',\n}\n\nexport class MTLSError extends Error {\n constructor(\n public type: MTLSErrorType,\n message: string,\n public originalError?: Error,\n public statusCode?: number\n ) {\n super(message);\n this.name = 'MTLSError';\n }\n}\n\nexport class CertificateValidator {\n static validatePEMFormat(certificate: string, privateKey: string): boolean {\n const certRegex = /-----BEGIN CERTIFICATE-----[\\s\\S]*-----END CERTIFICATE-----/;\n const keyRegex = /-----BEGIN (RSA )?PRIVATE KEY-----[\\s\\S]*-----END (RSA )?PRIVATE KEY-----/;\n return certRegex.test(certificate) && keyRegex.test(privateKey);\n }\n\n static isCertificateExpired(validTo: Date): boolean {\n return new Date() > validTo;\n }\n\n static getDaysUntilExpiry(validTo: Date): number {\n const now = new Date();\n const diffTime = validTo.getTime() - now.getTime();\n return Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n }\n}\n\nexport class PlatformDetector {\n static detectPlatform(): 'react-native' | 'node' | 'web' {\n if (\n (typeof global !== 'undefined' && (global as { __expo?: unknown }).__expo) ||\n (typeof navigator !== 'undefined' &&\n (navigator as { product?: string }).product === 'ReactNative')\n ) {\n return 'react-native';\n }\n\n if (typeof process !== 'undefined' && process.versions?.node) {\n return 'node';\n }\n\n return 'web';\n }\n\n static isReactNative(): boolean {\n return this.detectPlatform() === 'react-native';\n }\n\n static isNode(): boolean {\n return this.detectPlatform() === 'node';\n }\n\n static isWeb(): boolean {\n return this.detectPlatform() === 'web';\n }\n\n static getPlatformDetails() {\n const platform = this.detectPlatform();\n\n return {\n platform,\n userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : 'unknown',\n nodeVersion: typeof process !== 'undefined' ? process.version : undefined,\n isExpo: typeof global !== 'undefined' && !!(global as { __expo?: unknown }).__expo,\n hasWindow: typeof window !== 'undefined',\n hasDocument: typeof document !== 'undefined',\n hasProcess: typeof process !== 'undefined',\n };\n }\n}\n"],"names":["Symbol_observable","Symbol_iterator","process","iterator","isArray","asyncScheduler","picocolors_browserModule","log","z","MTLSErrorType","DEFAULT_CONFIG","ErrorCategory"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,77]}
|