@equinor/fusion-framework-vite-plugin-spa 4.1.0-next.2 → 4.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.
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sources":["../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subject.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Scheduler.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/throwError.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isObservable.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/firstValueFrom.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isDate.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/timeout.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/timer.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/interval.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/concatMap.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/take.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/finalize.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/first.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/takeLast.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/last.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/scan.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/share.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/tap.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js","../../../../modules/module/dist/esm/lib/configurator/RequiredModuleTimeoutError.js","../../../../modules/module/dist/esm/lib/configurator/module-configurator-event-base-name.js","../../../../modules/module/dist/esm/lib/configurator/module-configurator-event-name.js","../../../../modules/module/dist/esm/lib/configurator/phases/create-module-configs.js","../../../../modules/module/dist/esm/lib/configurator/phases/run-post-configure-hooks.js","../../../../modules/module/dist/esm/lib/configurator/phases/run-configure-phase.js","../../../../modules/module/dist/esm/lib/configurator/phases/create-require-instance.js","../../../../modules/module/dist/esm/lib/configurator/phases/run-initialize-phase.js","../../../../modules/module/dist/esm/lib/configurator/phases/run-post-initialize-phase.js","../../../../modules/module/dist/esm/lib/configurator/phases/run-plugin-phase.js","../../../../modules/module/dist/esm/lib/configurator/phases/run-dispose-phase.js","../../../../modules/module/dist/esm/version.js","../../../../modules/module/dist/esm/lib/configurator/ModulesConfigurator.js","../../../../modules/http/dist/esm/lib/operators/ProcessOperators.js","../../../../modules/http/dist/esm/lib/operators/request-operator-header.js","../../../../modules/http/dist/esm/lib/operators/HttpRequestHandler.js","../../../../modules/http/dist/esm/lib/operators/HttpResponseHandler.js","../../../../modules/http/dist/esm/lib/operators/HttpMiddlewareHandler.js","../../../../modules/http/dist/esm/lib/operators/fetch-request.schemas.js","../../../../modules/http/dist/esm/lib/operators/capitalize-request-method-operator.js","../../../../modules/http/dist/esm/lib/operators/request-validation-operator.js","../../../../modules/http/dist/esm/errors/HttpResponseError.js","../../../../modules/http/dist/esm/errors/HttpJsonResponseError.js","../../../../modules/http/dist/esm/errors/ServerSentEventResponseError.js","../../../../modules/http/dist/esm/errors/ClientNotFoundException.js","../../../../modules/http/dist/esm/lib/selectors/create-sse-selector.js","../../../../modules/http/dist/esm/configurator.js","../../../../modules/http/dist/esm/version.js","../../../../modules/http/dist/esm/provider.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/dom/fetch.js","../../../../modules/http/dist/esm/lib/selectors/json-selector.js","../../../../modules/http/dist/esm/lib/selectors/blob-selector.js","../../../../modules/http/dist/esm/lib/client/client.js","../../../../modules/http/dist/esm/lib/client/client-msal.js","../../../../modules/http/dist/esm/module.js","../../../../../node_modules/.pnpm/immer@11.1.4/node_modules/immer/dist/immer.mjs","../../../../utils/observable/dist/esm/operators/filter-action.js","../../../../utils/observable/dist/esm/FlowSubject.js","../../../../utils/observable/dist/esm/actions/utils.js","../../../../utils/observable/dist/esm/actions/create-action.js","../../../../utils/observable/dist/esm/actions/create-async-action.js","../../../../utils/observable/dist/esm/create-reducer.js","../../../../utils/observable/dist/esm/is-observable-input.js","../../../../utils/observable/dist/esm/to-observable.js","../../../../modules/telemetry/dist/esm/utils/merge-telemetry-item.js","../../../../modules/telemetry/dist/esm/TelemetryConfigurator.js","../../../../modules/telemetry/dist/esm/version.js","../../../../modules/event/dist/esm/FrameworkEvent.js","../../../../modules/telemetry/dist/esm/TelemetryErrorEvent.js","../../../../modules/telemetry/dist/esm/TelemetryEvent.js","../../../../modules/telemetry/dist/esm/Measurement.js","../../../../modules/telemetry/dist/esm/utils/resolve-metadata.js","../../../../modules/telemetry/dist/esm/TelemetryProvider.js","../../../../modules/telemetry/dist/esm/module.js","../../../../modules/telemetry/dist/esm/utils/map-configurator-events.js","../../../../modules/telemetry/dist/esm/enable-telemetry.js","../../../../utils/query/dist/esm/operators/concat-queue.js","../../../../utils/query/dist/esm/operators/merge-queue.js","../../../../utils/query/dist/esm/operators/switch-queue.js","../../../../utils/query/dist/esm/operators/query-value.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/regex.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/validate.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/parse.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/stringify.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/rng.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/v35.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/v4.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/sha1.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/v5.js","../../../../utils/query/dist/esm/client/QueryClientError.js","../../../../utils/query/dist/esm/client/actions.js","../../../../utils/query/dist/esm/client/handle-requests.js","../../../../utils/query/dist/esm/client/handle-execution.js","../../../../utils/query/dist/esm/client/handle-failure.js","../../../../utils/query/dist/esm/client/create-reducer.js","../../../../utils/query/dist/esm/client/QueryClientJob.js","../../../../utils/query/dist/esm/client/QueryClientEvent.js","../../../../utils/query/dist/esm/client/QueryClient.js","../../../../utils/query/dist/esm/cache/actions.js","../../../../utils/query/dist/esm/cache/create-reducer.js","../../../../utils/query/dist/esm/cache/QueryCacheEvent.js","../../../../utils/query/dist/esm/cache/QueryCache.js","../../../../utils/query/dist/esm/QueryTask.js","../../../../utils/query/dist/esm/QueryEvent.js","../../../../utils/query/dist/esm/Query.js","../../../../modules/service-discovery/dist/esm/api-services.js","../../../../modules/service-discovery/dist/esm/client.js","../../../../modules/service-discovery/dist/esm/configurator.js","../../../../modules/service-discovery/dist/esm/version.js","../../../../modules/service-discovery/dist/esm/provider.js","../../../../modules/service-discovery/dist/esm/module.js","../../../../modules/telemetry/dist/esm/TelemetryAdapter.js","../../../../modules/telemetry/dist/esm/adapters/console/ConsoleAdapter.js","../esm/html/create-portal-entry-point.js","../esm/html/is-enabled-env-value.js","../esm/html/register-service-worker.js","../esm/version.js","../esm/html/bootstrap.js"],"sourcesContent":["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 { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.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';\nimport { isFunction } from '../util/isFunction';\nexport function throwError(errorOrErrorFactory, scheduler) {\n var errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function () { return errorOrErrorFactory; };\n var init = function (subscriber) { return subscriber.error(errorFactory()); };\n return new Observable(scheduler ? function (subscriber) { return scheduler.schedule(init, 0, subscriber); } : init);\n}\n//# sourceMappingURL=throwError.js.map","import { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n//# sourceMappingURL=isObservable.js.map","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: function () {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=firstValueFrom.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport var TimeoutError = createErrorClass(function (_super) {\n return function TimeoutErrorImpl(info) {\n if (info === void 0) { info = null; }\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n };\n});\nexport function timeout(config, schedulerArg) {\n var _a = (isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d;\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return operate(function (source, subscriber) {\n var originalSourceSubscription;\n var timerSubscription;\n var lastValue = null;\n var seen = 0;\n var startTimer = function (delay) {\n timerSubscription = executeSchedule(subscriber, scheduler, function () {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen,\n })).subscribe(subscriber);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n };\n originalSourceSubscription = source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n seen++;\n subscriber.next((lastValue = value));\n each > 0 && startTimer(each);\n }, undefined, undefined, function () {\n if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n }\n lastValue = null;\n }));\n !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n });\n}\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n//# sourceMappingURL=timeout.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","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 { __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 { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n//# sourceMappingURL=concatMap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=defaultIfEmpty.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.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 { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); }));\n });\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","import { operate } from '../util/lift';\nexport function finalize(callback) {\n return operate(function (source, subscriber) {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\n//# sourceMappingURL=finalize.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n };\n}\n//# sourceMappingURL=first.js.map","import { __values } from \"tslib\";\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function takeLast(count) {\n return count <= 0\n ? function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var buffer = [];\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n buffer.push(value);\n count < buffer.length && buffer.shift();\n }, function () {\n var e_1, _a;\n try {\n for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {\n var value = buffer_1_1.value;\n subscriber.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n }, undefined, function () {\n buffer = null;\n }));\n });\n}\n//# sourceMappingURL=takeLast.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\nexport function last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n };\n}\n//# sourceMappingURL=last.js.map","import { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nexport function mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return operate(function (source, subscriber) {\n var state = seed;\n return mergeInternals(source, subscriber, function (value, index) { return accumulator(state, value, index); }, concurrent, function (value) {\n state = value;\n }, false, undefined, function () { return (state = null); });\n });\n}\n//# sourceMappingURL=mergeScan.js.map","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n//# sourceMappingURL=scan.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection;\n var resetConnection;\n var subject;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n var _a, _b, _c;\n var bufferSize;\n var refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n (_a = configOrBufferSize.bufferSize, bufferSize = _a === void 0 ? Infinity : _a, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler = configOrBufferSize.scheduler);\n }\n else {\n bufferSize = (configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity);\n }\n return share({\n connector: function () { return new ReplaySubject(bufferSize, windowTime, scheduler); },\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\n//# sourceMappingURL=shareReplay.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 { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function takeWhile(predicate, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=takeWhile.js.map","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n var tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error: error, complete: complete }\n : observerOrNext;\n return tapObserver\n ? operate(function (source, subscriber) {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n//# sourceMappingURL=tap.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom() {\n var inputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputs[_i] = arguments[_i];\n }\n var project = popResultSelector(inputs);\n return operate(function (source, subscriber) {\n var len = inputs.length;\n var otherValues = new Array(len);\n var hasValue = inputs.map(function () { return false; });\n var ready = false;\n var _loop_1 = function (i) {\n innerFrom(inputs[i]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (ready) {\n var values = __spreadArray([value], __read(otherValues));\n subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);\n }\n }));\n });\n}\n//# sourceMappingURL=withLatestFrom.js.map","/**\n * Error thrown when a required module fails to initialize within the expected\n * timeout window.\n *\n * Indicates a circular dependency or a module that never resolves.\n */\nexport class RequiredModuleTimeoutError extends Error {\n /**\n * Creates a new `RequiredModuleTimeoutError`.\n */\n constructor() {\n super('Module initialization timed out');\n this.name = 'RequiredModuleTimeoutError';\n }\n}\nexport default RequiredModuleTimeoutError;\n//# sourceMappingURL=RequiredModuleTimeoutError.js.map","/** Shared base segment for module configurator lifecycle event names. */\nexport const ModuleConfiguratorEventBaseName = 'ModuleConfigurator';\nexport default ModuleConfiguratorEventBaseName;\n//# sourceMappingURL=module-configurator-event-base-name.js.map","import { ModuleConfiguratorEventBaseName } from './module-configurator-event-base-name.js';\nexport { ModuleConfiguratorEventBaseName };\n/**\n * Event names emitted by `ModulesConfigurator` and its lifecycle phase helpers.\n *\n * Use this map instead of inline string literals when emitting or filtering\n * configurator lifecycle events. Each value follows the\n * `ModuleConfigurator.{name}.{state}` convention. The emitted names are still\n * prefixed by `ModulesConfigurator::_registerEvent` at runtime.\n */\nexport const ModuleConfiguratorEventName = {\n ModuleConfigAdded: `${ModuleConfiguratorEventBaseName}.module.configAdded`,\n OnConfiguredAdded: `${ModuleConfiguratorEventBaseName}.onConfigured.added`,\n OnInitializedAdded: `${ModuleConfiguratorEventBaseName}.onInitialized.added`,\n PluginAdded: `${ModuleConfiguratorEventBaseName}.plugin.added`,\n InitializeConfigLoaded: `${ModuleConfiguratorEventBaseName}.config.loaded`,\n InitializeInstanceInitialized: `${ModuleConfiguratorEventBaseName}.instance.initialized`,\n Initialize: `${ModuleConfiguratorEventBaseName}.initialize.complete`,\n ConfiguratorCreated: `${ModuleConfiguratorEventBaseName}.configurator.created`,\n ConfiguratorFailed: `${ModuleConfiguratorEventBaseName}.configurator.failed`,\n ModulePostConfigured: `${ModuleConfiguratorEventBaseName}.module.postConfigured`,\n ModulePostConfigureError: `${ModuleConfiguratorEventBaseName}.module.postConfigureError`,\n PostConfigureHooks: `${ModuleConfiguratorEventBaseName}.postConfigureHooks.started`,\n PostConfigureHooksComplete: `${ModuleConfiguratorEventBaseName}.postConfigureHooks.complete`,\n PostConfigureHooksError: `${ModuleConfiguratorEventBaseName}.postConfigureHooks.error`,\n ModuleInitializeError: `${ModuleConfiguratorEventBaseName}.module.initializeError`,\n ModuleInitializing: `${ModuleConfiguratorEventBaseName}.module.initializing`,\n ProviderNotBaseModuleProvider: `${ModuleConfiguratorEventBaseName}.provider.invalidBase`,\n ProviderVersionWarning: `${ModuleConfiguratorEventBaseName}.provider.versionMissing`,\n ModuleInitialized: `${ModuleConfiguratorEventBaseName}.module.initialized`,\n RequireInstanceModuleNotDefined: `${ModuleConfiguratorEventBaseName}.requireInstance.moduleNotDefined`,\n RequireInstanceModuleAlreadyInitialized: `${ModuleConfiguratorEventBaseName}.requireInstance.moduleAlreadyInitialized`,\n RequireInstanceAwaitingModule: `${ModuleConfiguratorEventBaseName}.requireInstance.awaitingModule`,\n RequireInstanceTimeout: `${ModuleConfiguratorEventBaseName}.requireInstance.timeout`,\n RequireInstanceModuleResolved: `${ModuleConfiguratorEventBaseName}.requireInstance.moduleResolved`,\n ModuleInitializeComplete: `${ModuleConfiguratorEventBaseName}.modules.initializeComplete`,\n InitializeComplete: `${ModuleConfiguratorEventBaseName}.initialize.instanceComplete`,\n ConfiguratorPostInitializeStart: `${ModuleConfiguratorEventBaseName}.postInitialize.started`,\n ModulePostInitializeStart: `${ModuleConfiguratorEventBaseName}.modulePostInitialize.started`,\n ModulePostInitializeComplete: `${ModuleConfiguratorEventBaseName}.modulePostInitialize.complete`,\n ModulePostInitializeError: `${ModuleConfiguratorEventBaseName}.modulePostInitialize.error`,\n PostInitializeComplete: `${ModuleConfiguratorEventBaseName}.postInitialize.complete`,\n PostInitializeCompleteNoHooks: `${ModuleConfiguratorEventBaseName}.postInitialize.noHooks`,\n PostInitializeHooks: `${ModuleConfiguratorEventBaseName}.postInitializeHooks.started`,\n PostInitializeHooksComplete: `${ModuleConfiguratorEventBaseName}.postInitializeHooks.complete`,\n PostInitializeHooksError: `${ModuleConfiguratorEventBaseName}.postInitializeHooks.error`,\n PluginsRegister: `${ModuleConfiguratorEventBaseName}.plugins.registering`,\n PluginRegistered: `${ModuleConfiguratorEventBaseName}.plugin.registered`,\n PluginRegisterError: `${ModuleConfiguratorEventBaseName}.plugin.registerError`,\n PluginsRegistered: `${ModuleConfiguratorEventBaseName}.plugins.registered`,\n Dispose: `${ModuleConfiguratorEventBaseName}.dispose.started`,\n PluginsDisposing: `${ModuleConfiguratorEventBaseName}.plugins.disposing`,\n PluginDisposed: `${ModuleConfiguratorEventBaseName}.plugin.disposed`,\n PluginDisposeError: `${ModuleConfiguratorEventBaseName}.plugin.disposeError`,\n ModulesDispose: `${ModuleConfiguratorEventBaseName}.modules.disposing`,\n ModuleDisposed: `${ModuleConfiguratorEventBaseName}.module.disposed`,\n ModuleDisposeError: `${ModuleConfiguratorEventBaseName}.module.disposeError`,\n ModulesDisposed: `${ModuleConfiguratorEventBaseName}.modules.disposed`,\n};\n//# sourceMappingURL=module-configurator-event-name.js.map","// biome-ignore-all lint/suspicious/noExplicitAny: internal type-erased dispatch — the configure phase coordinates opaque module configs without knowing their concrete shapes\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { from, lastValueFrom } from 'rxjs';\nimport { mergeMap, reduce } from 'rxjs/operators';\nimport { ModuleEventLevel } from '../../../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\n/**\n * Creates the raw module config map by calling each module's `configure` factory.\n *\n * Runs all module `configure(ref)` calls concurrently via `mergeMap` and\n * accumulates results into a single config object. The object is seeded with\n * `onAfterConfiguration` and `onAfterInit` helpers that allow modules to\n * register additional post-phase callbacks during configuration.\n *\n * @param ctx - The configure phase context.\n * @param ref - Optional reference forwarded to each module's configure factory.\n * @returns A promise resolving to the merged module config map.\n * @template TRef - Reference type forwarded to module configure hooks.\n * @throws Re-throws any error from a module's `configure` factory after emitting a failure event.\n * @internal\n */\nexport async function createModuleConfigs(ctx, ref) {\n const { modules, afterConfiguration, afterInit, registerEvent } = ctx;\n // Run each module's configure factory concurrently and track timing/failures\n const config$ = from(modules).pipe(mergeMap(async (module) => {\n const configStart = performance.now();\n try {\n const configurator = await module.configure?.(ref);\n const configLoadTime = Math.round(performance.now() - configStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ConfiguratorCreated,\n message: `Configurator created for ${module.name} in ${configLoadTime}ms`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n configLoadTime,\n },\n metric: configLoadTime,\n });\n return { [module.name]: configurator };\n }\n catch (err) {\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.ConfiguratorFailed,\n message: `Failed to create configurator for ${module.name}`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n metric: Math.round(performance.now() - configStart),\n error: err,\n });\n throw err;\n }\n }), reduce((acc, module) => {\n // Merge each module's config object into the shared accumulator\n const merged = Object.assign(acc, module);\n return merged;\n }, \n // Seed the config object with hooks so modules can register post-phase callbacks\n // during their own configure factory (a common pattern for cross-module wiring).\n {\n onAfterConfiguration(cb) {\n afterConfiguration.push(cb);\n },\n onAfterInit(cb) {\n afterInit.push(cb);\n },\n }));\n return lastValueFrom(config$);\n}\n//# sourceMappingURL=create-module-configs.js.map","import { ModuleEventLevel } from '../../../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\n/**\n * Runs the post-configure phase: calls each module's `postConfigure` hook and\n * then invokes all registered `afterConfiguration` callbacks.\n *\n * Module `postConfigure` failures are caught individually and emitted as\n * Warning events so one failing module cannot block others.\n *\n * @param ctx - The configure phase context.\n * @param config - The merged module config map produced by {@link createModuleConfigs}.\n * @returns A promise resolving when all post-configure hooks have settled.\n * @template TRef - Reference type forwarded to module configure hooks.\n * @internal\n */\nexport async function runPostConfigureHooks(ctx, \n// biome-ignore lint/suspicious/noExplicitAny: internal type-erased dispatch — the configure phase coordinates opaque module configs without knowing their concrete shapes\nconfig) {\n const { modules, afterConfiguration, registerEvent } = ctx;\n // Run each module's postConfigure hook; failures are isolated so one\n // failing module does not prevent others from completing post-configure.\n await Promise.allSettled(modules\n // Only process modules that define a postConfigure hook\n .filter((module) => !!module.postConfigure)\n // Call postConfigure on each module that defines the hook\n .map(async (module) => {\n try {\n const postConfigStart = performance.now();\n await module.postConfigure?.(config);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModulePostConfigured,\n message: `Module ${module.name} post-configured successfully`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n postConfigTime: Math.round(performance.now() - postConfigStart),\n },\n });\n }\n catch (err) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ModulePostConfigureError,\n message: `Module ${module.name} post-configure failed`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n error: err,\n });\n }\n }));\n // Skip the afterConfiguration hooks entirely when none are registered\n if (!afterConfiguration.length)\n return;\n // Run all registered afterConfiguration callbacks. These were added either\n // by addConfig's afterConfig or via config.onAfterConfiguration inside a\n // module's configure factory.\n try {\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostConfigureHooks,\n message: `Post configure hooks [${afterConfiguration.length}] called`,\n });\n const postConfigHooksStart = performance.now();\n await Promise.allSettled(afterConfiguration\n // Invoke every registered afterConfiguration callback with the final config\n .map((x) => Promise.resolve(x(config))));\n const postConfigHooksTime = Math.round(performance.now() - postConfigHooksStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostConfigureHooksComplete,\n message: 'Post configure hooks complete',\n properties: {\n count: afterConfiguration.length,\n postConfigHooksTime,\n },\n metric: postConfigHooksTime,\n });\n }\n catch (err) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.PostConfigureHooksError,\n message: 'Post configure hook failed',\n error: err,\n });\n }\n}\nexport default runPostConfigureHooks;\n//# sourceMappingURL=run-post-configure-hooks.js.map","import { createModuleConfigs } from './create-module-configs.js';\nimport { runPostConfigureHooks } from './run-post-configure-hooks.js';\n/**\n * Runs the full configure lifecycle phase for a set of modules.\n *\n * Orchestrates three sub-steps in order:\n * 1. {@link createModuleConfigs} — call each module's `configure(ref)` factory.\n * 2. Apply all user-registered config callbacks (`_configs`) sequentially.\n * 3. {@link runPostConfigureHooks} — call `postConfigure` and `afterConfiguration` hooks.\n *\n * @param ctx - The configure phase context.\n * @param ref - Optional reference forwarded through all configure hooks.\n * @returns A promise resolving to the fully configured module config map.\n * @template TRef - Reference type forwarded to module configure hooks.\n */\nexport async function runConfigurePhase(ctx, ref) {\n // Step 1: Create raw config objects for all registered modules\n const config = await createModuleConfigs(ctx, ref);\n // Step 2: Apply all user-registered configuration callbacks concurrently.\n await Promise.all(\n // Invoke every registered configure callback with the merged config\n ctx.configs.map((cb) => Promise.resolve(cb(config, ref))));\n // Step 3: Run module postConfigure hooks and afterConfiguration callbacks\n await runPostConfigureHooks(ctx, config);\n return config;\n}\nexport default runConfigurePhase;\n//# sourceMappingURL=run-configure-phase.js.map","import { firstValueFrom, throwError } from 'rxjs';\nimport { filter, map, tap, timeout } from 'rxjs/operators';\nimport { ModuleEventLevel, } from '../../../types.js';\nimport { RequiredModuleTimeoutError } from '../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\n/**\n * Creates a `requireInstance` resolver for use during module initialization.\n *\n * `requireInstance` is passed into each module's `initialize` call so it can\n * declare dependencies on other modules without knowing whether those modules\n * have already finished initializing. The resolver waits up to `wait` seconds\n * for the target module to appear in the shared `instance$` subject.\n *\n * @param moduleNames - Names of all modules registered in this initialization run.\n * @param instance$ - Shared subject accumulating initialized module instances.\n * @param registerEvent - Function to emit lifecycle events.\n * @returns A `requireInstance` function matching the shape expected by `ModuleInitializerArgs`.\n * @template T - The shape of the accumulated module instance map.\n * @throws {Error} When the requested module name was never registered.\n * @throws {RequiredModuleTimeoutError} When the requested module does not\n * initialize within its timeout window.\n * @internal\n */\nexport function createRequireInstance(moduleNames, instance$, registerEvent) {\n // The implementation signature is concrete (name: string) but the public contract\n // must be the generic shape expected by ModuleInitializerArgs. Module names are\n // always strings at runtime — the keyof-derived `string | number` constraint comes\n // from TypeScript's keyof semantics, not actual usage.\n return function requireInstance(name, wait = 60) {\n // Fail fast if the caller requests a module that was never registered —\n // this almost always indicates a misconfiguration rather than a timing issue.\n if (!moduleNames.includes(name)) {\n const error = new Error(`Cannot require [${String(name)}] since module is not defined!`);\n error.name = 'ModuleNotDefinedError';\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.RequireInstanceModuleNotDefined,\n message: error.message,\n properties: { moduleName: String(name), wait },\n error,\n });\n throw error;\n }\n // Short-circuit: module is already in the accumulated instance object\n if (instance$.value[name]) {\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.RequireInstanceModuleAlreadyInitialized,\n message: `Module [${String(name)}] is already initialized, skipping queue`,\n properties: { moduleName: String(name), wait },\n });\n return Promise.resolve(instance$.value[name]);\n }\n const requireStart = performance.now();\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.RequireInstanceAwaitingModule,\n message: `Awaiting module [${String(name)}] initialization, timeout ${wait}s`,\n properties: { moduleName: String(name), wait },\n });\n // Wait for the module to appear in the shared instance subject, up to `wait` seconds.\n return firstValueFrom(instance$.pipe(\n // Ignore emissions until the requested module has been added to the instance map.\n filter((x) => !!x[name]), \n // Resolve the dependency promise with the provider instance, not the full module map.\n map((x) => x[name]), \n // Convert unresolved dependencies into a typed timeout error with lifecycle diagnostics.\n timeout({\n // requireInstance accepts seconds; RxJS timeout expects milliseconds.\n each: wait * 1000,\n with: () => throwError(() => {\n const error = new RequiredModuleTimeoutError();\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.RequireInstanceTimeout,\n message: `Module [${String(name)}] initialization timed out after ${wait}s`,\n properties: { moduleName: String(name), wait },\n error,\n });\n return error;\n }),\n }), \n // Emit timing diagnostics only after the dependency has actually resolved.\n tap(() => {\n const requireTime = Math.round(performance.now() - requireStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.RequireInstanceModuleResolved,\n message: `Module [${String(name)}] required in ${requireTime}ms`,\n properties: { moduleName: String(name), wait, requireTime },\n metric: requireTime,\n });\n })));\n };\n}\nexport default createRequireInstance;\n//# sourceMappingURL=create-require-instance.js.map","import { BehaviorSubject, from, lastValueFrom } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\nimport { ModuleEventLevel } from '../../../types.js';\nimport { BaseModuleProvider } from '../../provider/index.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\nimport { createRequireInstance, } from './create-require-instance.js';\n/**\n * Initializes a single module and emits a `[name, instance]` tuple when complete.\n *\n * Validates that the module exposes an `initialize` method, calls it with the\n * provided context, and emits lifecycle events for start, completion, and any\n * provider contract warnings.\n *\n * @internal\n */\nasync function initializeModule(module, ctx) {\n const { config, ref, requireInstance, hasModule, registerEvent } = ctx;\n const key = module.name;\n // Modules must expose an initialize method to participate in the initialize phase\n if (!module.initialize) {\n const error = new Error(`Module ${module.name} does not have initialize method`);\n error.name = 'ModuleInitializeError';\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.ModuleInitializeError,\n message: error.message,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n error,\n });\n throw error;\n }\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModuleInitializing,\n message: `Initializing module ${module.name}`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n });\n const moduleInitStart = performance.now();\n const instance = await module.initialize({\n ref,\n config: config[key],\n requireInstance,\n hasModule,\n });\n // Warn when providers deviate from the expected base class — these modules\n // may lack version tracking and standard provider interfaces.\n if (!(instance instanceof BaseModuleProvider)) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ProviderNotBaseModuleProvider,\n message: `Provider for module ${module.name} does not extend BaseModuleProvider`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n });\n }\n // Providers should expose a version string for diagnostics and compatibility checks.\n // Warn when absent so module authors catch missing version early rather than at runtime.\n const maybeVersioned = instance;\n // Only warn about missing version metadata now that we know it's actually absent\n if (!maybeVersioned.version) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ProviderVersionWarning,\n message: `Provider for module ${module.name} does not expose version`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n });\n }\n const moduleInitTime = Math.round(performance.now() - moduleInitStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModuleInitialized,\n message: `Module ${module.name} initialized in ${moduleInitTime}ms`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n providerName: typeof instance,\n providerVersion: maybeVersioned.version?.toString() || 'unknown',\n moduleInitTime,\n },\n metric: moduleInitTime,\n });\n return [key, instance];\n}\n/**\n * Runs the initialize lifecycle phase for all registered modules.\n *\n * Initializes all modules **concurrently** using `mergeMap`. Cross-module\n * dependency ordering is handled lazily through `requireInstance`, which\n * waits for a peer module's `initialize` call to complete before resolving.\n *\n * Each initialized provider is accumulated into a shared `BehaviorSubject` so\n * that `requireInstance` callers see updates as soon as a dependency is ready.\n *\n * @param ctx - The initialize phase context.\n * @param config - The merged module config map produced by the configure phase.\n * @param ref - Optional reference forwarded to each module's `initialize` call.\n * @returns A promise resolving to the sealed map of initialized module providers.\n * @template T - The shape of the resolved module instance map.\n * @throws {Error} When a module's `initialize` method is missing.\n * @throws {RequiredModuleTimeoutError} When a required dependency does not\n * initialize within its timeout window.\n */\nexport async function runInitializePhase(ctx, config, ref) {\n const { modules, registerEvent } = ctx;\n // Fast-path: no modules registered — return a sealed empty instance immediately\n // to avoid a subscribe/lastValueFrom race on an already-completed observable.\n if (modules.length === 0) {\n return Object.seal({});\n }\n // Extract module names for dependency lookups before any module has initialized\n const moduleNames = modules.map((m) => m.name);\n // Accumulates initialized module providers; BehaviorSubject lets requireInstance\n // reactively wait for a dependency to appear without polling.\n const instance$ = new BehaviorSubject({});\n const hasModule = (name) => moduleNames.includes(name);\n const requireInstance = createRequireInstance(moduleNames, instance$, registerEvent);\n // Initialize all modules concurrently; modules that depend on peers will\n // suspend inside requireInstance until the dependency resolves.\n const init$ = from(modules).pipe(mergeMap((module) => initializeModule(module, { config, ref, requireInstance, hasModule, registerEvent })));\n const initStart = performance.now();\n // Accumulate module providers into the shared instance subject as each resolves.\n // Completing the subject signals that all modules are initialized.\n init$.subscribe({\n next: ([name, module]) => {\n // Merge the newly initialized module into the shared instance map without dropping peers\n const nextInstance = Object.assign(instance$.value, { [name]: module });\n instance$.next(nextInstance);\n },\n error: (err) => {\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.ModuleInitializeError,\n message: `Failed to initialize module ${err.name || 'unknown'}`,\n error: err,\n });\n instance$.error(err);\n },\n complete: () => {\n const loadTime = Math.round(performance.now() - initStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModuleInitializeComplete,\n message: `All modules initialized in ${loadTime}ms`,\n properties: {\n modules: Object.keys(instance$.value).join(', '),\n loadTime,\n },\n metric: loadTime,\n });\n instance$.complete();\n },\n });\n const instanceInitStart = performance.now();\n const instance = await lastValueFrom(instance$);\n const initTime = Math.round(performance.now() - instanceInitStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.InitializeComplete,\n message: `Modules instance created in ${initTime}ms`,\n properties: {\n modules: Object.keys(instance).join(', '),\n initTime,\n },\n metric: initTime,\n });\n Object.seal(instance);\n return instance;\n}\nexport default runInitializePhase;\n//# sourceMappingURL=run-initialize-phase.js.map","// biome-ignore-all lint/suspicious/noExplicitAny: internal type-erased dispatch — the post-initialize phase forwards opaque instances without inspecting their concrete shapes\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EMPTY, from, lastValueFrom } from 'rxjs';\nimport { catchError, defaultIfEmpty, filter, mergeMap, tap } from 'rxjs/operators';\nimport { ModuleEventLevel } from '../../../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\n/**\n * Runs the post-initialize lifecycle phase for all registered modules.\n *\n * Executes two sub-steps in order:\n * 1. Calls each module's `postInitialize` hook (if defined) concurrently.\n * Individual failures are caught and emitted as Warning events so one\n * failing module cannot block others.\n * 2. Runs all registered `afterInit` callbacks concurrently via `Promise.allSettled`.\n *\n * @param ctx - The post-initialize phase context.\n * @param instance - The sealed module instance map produced by the initialize phase.\n * @param ref - Optional reference forwarded to each module's `postInitialize` call.\n * @returns A promise resolving when all post-initialize hooks and callbacks have settled.\n */\nexport async function runPostInitializePhase(ctx, instance, ref) {\n const { modules, afterInit, registerEvent } = ctx;\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ConfiguratorPostInitializeStart,\n message: `Post-initializing all modules [${Object.keys(instance).length}]`,\n properties: { modules: Object.keys(instance).join(', ') },\n });\n // Run postInitialize hooks for modules that declare them. Failures are caught\n // per-module via catchError so one failure does not abort the others.\n const postInitialize$ = from(modules).pipe(\n // Only process modules that define a postInitialize hook\n filter((module) => !!module.postInitialize), tap((module) => {\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModulePostInitializeStart,\n message: `Module ${module.name} is being post-initialized`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n });\n }), mergeMap((module) => {\n const postInitStart = performance.now();\n // Emit completion/error events for this module's postInitialize call as it settles\n return from(module.postInitialize({\n ref,\n modules: instance,\n instance: instance[module.name],\n })).pipe(tap(() => {\n const postInitTime = Math.round(performance.now() - postInitStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModulePostInitializeComplete,\n message: `Module ${module.name} has been post-initialized in ${postInitTime}ms`,\n metric: postInitTime,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n postInitTime,\n },\n });\n }), defaultIfEmpty(null), catchError((err) => {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ModulePostInitializeError,\n message: `Module ${module.name} post-initialize failed`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n error: err,\n });\n // Swallow module-level errors — a failing postInitialize should not\n // prevent other modules from completing their post-initialize work.\n return EMPTY;\n }));\n }), defaultIfEmpty(null));\n const postInitStart = performance.now();\n await lastValueFrom(postInitialize$);\n const postInitTime = Math.round(performance.now() - postInitStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostInitializeComplete,\n message: `Post-initialization of all modules completed in ${postInitTime}ms`,\n properties: { modules: Object.keys(instance).join(', '), postInitTime },\n metric: postInitTime,\n });\n // Skip the afterInit hooks entirely when none are registered\n if (!afterInit.length) {\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostInitializeCompleteNoHooks,\n message: 'Post-initialization complete',\n properties: { modules: Object.keys(instance).join(', '), postInitCompleteTime: postInitTime },\n });\n return;\n }\n // Run all registered afterInit callbacks. These were added either by\n // addConfig's afterInit or via onInitialized on the configurator.\n try {\n // Build a display string of registered hook names for the start event\n // Extract each hook's name, falling back for anonymous functions\n const hookNames = afterInit.map((x) => x.name || 'anonymous').join(', ');\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostInitializeHooks,\n message: `Executing post-initialize hooks [${afterInit.length}]`,\n properties: { hooks: hookNames },\n });\n const afterInitStart = performance.now();\n await Promise.allSettled(afterInit\n // Invoke every registered afterInit callback with the initialized module instance map\n .map((x) => Promise.resolve(x(instance))));\n const afterInitTime = Math.round(performance.now() - afterInitStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostInitializeHooksComplete,\n message: `Post-initialize hooks completed in ${afterInitTime}ms`,\n properties: {\n hooks: hookNames,\n afterInitTime,\n },\n metric: afterInitTime,\n });\n }\n catch (err) {\n // Build a display string of registered hook names for the error event\n // Extract each hook's name, falling back for anonymous functions\n const hookNames = afterInit.map((x) => x.name || 'anonymous').join(', ');\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.PostInitializeHooksError,\n message: 'Post-initialize hooks failed',\n properties: { hooks: hookNames },\n error: err,\n });\n }\n const postInitCompleteTime = Math.round(performance.now() - postInitStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostInitializeComplete,\n message: 'Post-initialization complete',\n properties: { modules: Object.keys(instance).join(', '), postInitCompleteTime },\n });\n}\n//# sourceMappingURL=run-post-initialize-phase.js.map","// biome-ignore-all lint/suspicious/noExplicitAny: internal type-erased dispatch — plugins are registered with concrete module maps but stored erased by the orchestrator\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ModuleEventLevel } from '../../../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\n/**\n * Checks whether a plugin return value should be treated as dispose-time cleanup.\n *\n * Plugins may return either a plain callback or an object with a `dispose` method.\n * Any other value is ignored so plugin authors can return `undefined` when no\n * cleanup is needed.\n *\n * @param value - Value returned by a registered plugin callback.\n * @returns True when the value is a valid plugin teardown registration.\n */\nfunction isPluginTeardown(value) {\n return (typeof value === 'function' ||\n (typeof value === 'object' &&\n value !== null &&\n 'dispose' in value &&\n typeof value.dispose === 'function'));\n}\n/**\n * Runs configurator plugins after modules are ready.\n *\n * The plugin phase is the final initialization step before `initialize()`\n * resolves. Each plugin receives the sealed module instance map and optional\n * initialization reference, which makes this phase suitable for application\n * side effects such as telemetry bridges, global event listeners, and runtime\n * subscriptions that require multiple initialized module providers.\n *\n * Plugin callbacks run concurrently. Failures are isolated and emitted as\n * warning events so one failing side effect cannot block application rendering.\n * Returned teardown callbacks are stored for the dispose phase and are invoked\n * before module `dispose` hooks.\n *\n * @param ctx - The plugin phase context.\n * @param modules - The initialized module instance map.\n * @param ref - Optional reference forwarded from module initialization.\n * @returns A promise resolving when all plugin callbacks have settled.\n * @template TRef - Reference type forwarded to plugin callbacks.\n */\nexport async function runPluginPhase(ctx, modules, ref) {\n const { plugins, teardowns, registerEvent } = ctx;\n // Skip the plugin phase entirely when no plugins were registered\n if (!plugins.length)\n return;\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PluginsRegister,\n message: `Registering plugins [${plugins.length}]`,\n properties: { count: plugins.length },\n });\n const pluginRegistrations = await Promise.all(plugins\n // Run every plugin callback concurrently so one slow plugin cannot delay the others\n .map(async (plugin) => {\n const pluginStart = performance.now();\n const name = plugin.name || 'anonymous';\n try {\n const teardown = await plugin({ modules, ref });\n const pluginTime = Math.round(performance.now() - pluginStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PluginRegistered,\n message: `Plugin ${name} registered in ${pluginTime}ms`,\n properties: { name, pluginTime },\n metric: pluginTime,\n });\n return isPluginTeardown(teardown) ? teardown : undefined;\n }\n catch (err) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.PluginRegisterError,\n message: `Plugin ${name} registration failed`,\n properties: { name },\n error: err,\n });\n return undefined;\n }\n }));\n // Queue every plugin teardown returned above so the dispose phase can invoke them later\n for (const teardown of pluginRegistrations) {\n // Only queue teardowns for plugins that actually returned one\n if (teardown) {\n teardowns.push(teardown);\n }\n }\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PluginsRegistered,\n message: 'Plugin registration complete',\n properties: { count: plugins.length, teardowns: teardowns.length },\n });\n}\n//# sourceMappingURL=run-plugin-phase.js.map","import { ModuleEventLevel } from '../../../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\nfunction getPluginTeardownName(teardown) {\n return typeof teardown === 'function' ? teardown.name || 'anonymous' : 'dispose';\n}\nasync function runPluginTeardown(teardown) {\n // Function-shaped teardowns are called directly; object-shaped ones expose a dispose() method\n if (typeof teardown === 'function') {\n await teardown();\n return;\n }\n await teardown.dispose();\n}\n/**\n * Runs the dispose lifecycle phase for all registered modules.\n *\n * Calls each module's `dispose` hook (if defined) concurrently via\n * `Promise.allSettled` so one failing module cannot block others from\n * being torn down. After all hooks settle, the event stream is completed.\n *\n * @param ctx - The dispose phase context.\n * @param instance - The initialized module instance map to tear down.\n * @param ref - Optional reference forwarded to each module's `dispose` call.\n * @returns A promise resolving when all module dispose hooks have settled and\n * the event stream has been completed.\n */\nexport async function runDisposePhase(ctx, instance, ref) {\n const { modules, registerEvent, event$, pluginTeardowns = [] } = ctx;\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.Dispose,\n message: 'Disposing modules instance',\n properties: { modules: Object.keys(instance).join(', ') },\n });\n // Only run the plugin teardown sequence when plugins were actually registered\n if (pluginTeardowns.length) {\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PluginsDisposing,\n message: `Disposing plugins [${pluginTeardowns.length}]`,\n properties: { count: pluginTeardowns.length },\n });\n // Tear down plugins before module providers so side effects can still access\n // live providers while unsubscribing. LIFO mirrors common subscription stacks.\n for (const teardown of pluginTeardowns.splice(0).reverse()) {\n const name = getPluginTeardownName(teardown);\n try {\n await runPluginTeardown(teardown);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PluginDisposed,\n message: `Plugin ${name} disposed successfully`,\n properties: { name },\n });\n }\n catch (err) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.PluginDisposeError,\n message: `Plugin ${name} dispose failed`,\n properties: { name },\n error: err,\n });\n }\n }\n }\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModulesDispose,\n message: 'Disposing modules',\n properties: { count: modules.length },\n });\n // Dispose all modules concurrently; failures are isolated per module so\n // one bad teardown cannot leave other modules in an inconsistent state.\n await Promise.allSettled(modules\n // Only process modules that define a dispose hook\n .filter((module) => !!module.dispose)\n // Dispose each module that defines the hook\n .map(async (module) => {\n // Narrow the type for TypeScript; the filter above already guarantees this\n if (!module.dispose)\n return;\n try {\n await module.dispose({\n ref,\n modules: instance,\n instance: instance[module.name],\n });\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModuleDisposed,\n message: `Module ${module.name} disposed successfully`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n });\n }\n catch (err) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ModuleDisposeError,\n message: `Module ${module.name} dispose failed`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n error: err,\n });\n }\n }));\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModulesDisposed,\n message: 'Module dispose complete',\n properties: { count: modules.length },\n });\n // Complete the event stream last so all dispose events are captured before\n // any subscriber teardown triggered by completion.\n event$.complete();\n}\n//# sourceMappingURL=run-dispose-phase.js.map","// Generated by genversion.\nexport const version = '6.1.3-next.0';\n//# sourceMappingURL=version.js.map","// biome-ignore-all lint/suspicious/noExplicitAny: internal type-erased dispatch arrays — callbacks are registered with concrete module types but stored erased; the orchestrator never inspects these shapes itself\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ReplaySubject } from 'rxjs';\nimport { ModuleEventLevel, } from '../../types.js';\nimport { runConfigurePhase } from './phases/run-configure-phase.js';\nimport { runInitializePhase } from './phases/run-initialize-phase.js';\nimport { runPostInitializePhase } from './phases/run-post-initialize-phase.js';\nimport { runPluginPhase } from './phases/run-plugin-phase.js';\nimport { runDisposePhase } from './phases/run-dispose-phase.js';\nimport { version } from '../../version.js';\nimport { ModuleConfiguratorEventName } from './module-configurator-event-name.js';\n/**\n * Core orchestrator that drives the module lifecycle in Fusion Framework.\n *\n * `ModulesConfigurator` manages the full **configure → post-configure → initialize →\n * post-initialize → plugin → dispose** pipeline for a set of modules. Consumers\n * register modules via {@link addConfig} or {@link configure}, then call\n * {@link initialize} to produce a sealed {@link ModulesInstance} whose properties\n * are the initialized module providers.\n *\n * ### Lifecycle phases (in execution order)\n *\n * | # | Phase | Entry point | Description |\n * |---|-------|-------------|-------------|\n * | 1 | **Configure** | `_configure` | Each module's `configure()` factory creates a config builder; registered callbacks mutate it. |\n * | 2 | **Post-configure** | `_postConfigure` (inside `_configure`) | `postConfigure()` hooks and `onConfigured` callbacks run. |\n * | 3 | **Initialize** | `_initialize` | Modules are initialized concurrently; cross-module dependencies are resolved through `requireInstance`. |\n * | 4 | **Post-initialize** | `_postInitialize` | `postInitialize()` hooks and `onInitialized` callbacks run. |\n * | 5 | **Plugin** | `_registerPlugins` (inside `initialize`) | Registered application plugins connect side effects after modules are ready. |\n * | 6 | **Dispose** | `dispose` | Plugin teardowns and module `dispose()` hooks run; the event stream is completed. |\n *\n * ### Registering phase callbacks\n *\n * - **Per-module callbacks**: use `addConfig({ module, configure, afterConfig, afterInit })`.\n * - **Global post-configure**: use `onConfigured(cb)`.\n * - **Global post-initialize**: use `onInitialized(cb)`.\n * - **Plugins**: use `registerPlugin(cb)` to connect side effects before render.\n *\n * All lifecycle transitions emit {@link ModuleEvent} entries on the {@link event$}\n * observable for telemetry and debugging.\n *\n * @template TModules - Tuple of module types managed by this configurator.\n * @template TRef - Reference type passed through configuration (usually a parent instance).\n *\n * @example\n * ```typescript\n * const configurator = new ModulesConfigurator([httpModule, authModule]);\n * configurator.addConfig({\n * module: httpModule,\n * configure: (cfg) => cfg.setBaseUrl('https://api.example.com'),\n * });\n * const modules = await configurator.initialize();\n * // modules.http, modules.auth are now available\n * ```\n */\nexport class ModulesConfigurator {\n /**\n * Class name used as a namespace prefix for all emitted lifecycle events.\n * Preserved as a static string so minification cannot change it at runtime.\n */\n static className = 'ModulesConfigurator';\n /**\n * The current package version of the module configurator.\n *\n * @returns The semantic version string.\n */\n get version() {\n return version;\n }\n // Buffer up to 100 events to prevent memory leaks while ensuring telemetry\n // can capture events that fire before a telemetry subscriber attaches.\n // mapConfiguratorEvents relies on replay to receive events emitted during\n // configuration before telemetry is wired up.\n // Memory bound: ~24 KB at ~240 bytes/event × 100 events.\n #event$ = new ReplaySubject(100);\n /**\n * Stream of lifecycle events emitted while modules are configured, initialized,\n * and disposed.\n *\n * @returns An observable of {@link ModuleEvent} entries.\n */\n get event$() {\n return this.#event$.asObservable();\n }\n /**\n * Registered configure-phase callbacks.\n * Each entry is added by {@link addConfig} when a `configure` callback is provided.\n * @protected\n */\n _configs = [];\n /**\n * Registered post-configure callbacks.\n * Populated by {@link onConfigured} and by `afterConfig` entries in {@link addConfig}.\n * Also exposed on the config object as `config.onAfterConfiguration` so modules\n * can register additional hooks during their own configure factory.\n *\n * Typed as `any` because this is an internal dispatch array: callbacks are registered\n * with concrete module-specific types but stored erased — the orchestrator never\n * inspects the config shape itself, it only forwards it at call time.\n * @protected\n */\n _afterConfiguration = [];\n /**\n * Registered post-initialize callbacks.\n * Populated by {@link onInitialized} and by `afterInit` entries in {@link addConfig}.\n * Also exposed on the config object as `config.onAfterInit`.\n *\n * Typed as `any` for the same reason as {@link _afterConfiguration} — type-erased\n * internal dispatch; concrete instance types are known at registration but not stored.\n * @protected\n */\n _afterInit = [];\n /**\n * Registered plugin callbacks.\n *\n * Plugins run after all modules have initialized and before initialize resolves.\n * Typed as `any` because callbacks are registered with concrete module maps but\n * stored erased by the base orchestrator.\n * @protected\n */\n _plugins = [];\n /**\n * Teardown callbacks returned by registered plugins.\n *\n * Consumed during dispose and cleared after execution so repeated dispose calls\n * do not run plugin cleanup more than once.\n * @protected\n */\n _pluginTeardowns = [];\n /**\n * Set of all registered module descriptors.\n * Uses a `Set` for automatic deduplication — the same module registered twice\n * is treated as a single registration.\n * @protected\n */\n _modules;\n /**\n * Creates a new `ModulesConfigurator` with an optional initial set of modules.\n *\n * @param modules - Optional array of module descriptors to pre-register.\n */\n constructor(modules) {\n this._modules = new Set(modules ? this._dedupeModulesByName(modules) : []);\n }\n /**\n * Keeps the last registration for each module name.\n *\n * @param modules - Module descriptors to deduplicate.\n * @returns The deduplicated module descriptors.\n */\n _dedupeModulesByName(modules) {\n const lastByName = new Map();\n // Iterate in registration order so later descriptors intentionally override earlier ones.\n for (const module of modules) {\n lastByName.set(module.name, module);\n }\n return Array.from(lastByName.values());\n }\n /**\n * Removes lifecycle callbacks belonging to a replaced module.\n *\n * @param moduleName - Name of the module whose callbacks are removed.\n */\n _removeModuleCallbacks(moduleName) {\n // Remove callbacks from each lifecycle phase so replaced modules cannot run stale behavior.\n this._configs = this._configs.filter((callback) => callback.moduleName !== moduleName);\n // Keep cleanup callbacks aligned with the module replacement.\n this._afterConfiguration = this._afterConfiguration.filter((callback) => callback.moduleName !== moduleName);\n // Remove initialization callbacks as well, preventing the old module from being initialized.\n this._afterInit = this._afterInit.filter((callback) => callback.moduleName !== moduleName);\n }\n /**\n * Returns all registered module descriptors as an ordered array.\n *\n * @returns Array of registered modules in insertion order.\n */\n get modules() {\n return [...this._modules];\n }\n /**\n * Registers one or more module configurators.\n *\n * Convenience wrapper around {@link addConfig} for registering multiple\n * modules in a single call.\n *\n * @param configs - One or more module configurator descriptors.\n */\n configure(...configs) {\n // Delegate each descriptor to addConfig so registration logic stays in one place\n for (const x of configs) {\n this.addConfig(x);\n }\n }\n /**\n * Registers a single module configurator.\n *\n * If a module with the same `name` was already registered, the previous\n * registration is replaced so the last added module wins.\n *\n * Adds the module to the known module set and registers the optional\n * `configure`, `afterConfig`, and `afterInit` callbacks into their\n * respective lifecycle phase arrays.\n *\n * @param config - The module configurator descriptor to register.\n * @template T - The module type being registered.\n * @template TConfig - The resolved configuration type for the module.\n */\n addConfig(config) {\n const { module, afterConfig, afterInit, configure } = config;\n // Find an existing descriptor so re-registering a name can replace all of its lifecycle hooks.\n const existingModule = Array.from(this._modules).find((m) => m.name === module.name);\n // Only handle replacement/dedupe when a descriptor is already registered under this name.\n if (existingModule) {\n // Only a genuinely different descriptor for this name is a replacement that must\n // discard the old callbacks. Re-registering the SAME descriptor object (as helpers\n // like `configureHttpClient`/`useFrameworkServiceClient` do on every call, since they\n // all share one module singleton) must stay additive so multiple calls can register\n // multiple named clients without clobbering each other.\n if (existingModule !== module) {\n this._removeModuleCallbacks(module.name);\n const modules = Array.from(this._modules)\n // Preserve every descriptor while substituting the newly registered module.\n .map((m) => (m.name === module.name ? module : m));\n this._modules = new Set(modules);\n }\n }\n else {\n this._modules.add(module);\n }\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModuleConfigAdded,\n message: `Module configurator added for ${module.name}`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n configure: !!configure,\n afterConfig: !!afterConfig,\n afterInit: !!afterInit,\n },\n });\n // Register each optional callback into its corresponding lifecycle phase array.\n // When the same module name is re-registered, previous callbacks are removed\n // so the latest configuration wins.\n if (configure) {\n const callback = ((cfg, ref) => configure(cfg[module.name], ref));\n callback.moduleName = module.name;\n this._configs.push(callback);\n }\n // Register the afterConfig callback, if provided.\n if (afterConfig) {\n const callback = ((cfg) => afterConfig(cfg[module.name]));\n callback.moduleName = module.name;\n this._afterConfiguration.push(callback);\n }\n // Register the afterInit callback, if provided.\n if (afterInit) {\n const callback = ((instances) => afterInit(instances[module.name]));\n callback.moduleName = module.name;\n this._afterInit.push(callback);\n }\n }\n /**\n * Registers a callback for the post-configure phase.\n *\n * The callback receives the merged module config map after all `configure`\n * callbacks have run and before module initialization begins.\n *\n * @param cb - Callback receiving the merged module config map.\n * @template T - Additional modules to include in the config type.\n */\n onConfigured(cb) {\n this._afterConfiguration.push(cb);\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.OnConfiguredAdded,\n message: 'Added onConfigured callback',\n properties: {\n count: this._afterConfiguration.length,\n name: cb.name || 'anonymous',\n },\n });\n }\n /**\n * Registers a callback for the post-initialize phase.\n *\n * The callback receives the sealed module instance after all modules have\n * been initialized and their `postInitialize` hooks have run.\n *\n * @param cb - Callback receiving the sealed module instance.\n * @template T - Additional modules to include in the instance type.\n */\n onInitialized(cb) {\n this._afterInit.push(cb);\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.OnInitializedAdded,\n message: 'Added onInitialized callback',\n properties: {\n count: this._afterInit.length,\n name: cb.name || 'anonymous',\n },\n });\n }\n /**\n * Registers a plugin that connects side effects after modules are initialized.\n *\n * The callback runs after `postInitialize` and `onInitialized` callbacks have\n * settled, but before {@link initialize} resolves. Return a teardown callback\n * to clean up subscriptions or listeners during {@link dispose}.\n *\n * @param cb - Plugin callback receiving the initialized module map and optional ref.\n * @template T - Additional modules to include in the plugin module map.\n * @example\n * ```typescript\n * function connectContextTelemetry(args: FrameworkPluginArgs<[EventModule, TelemetryModule]>) {\n * const teardown = args.modules.event.addEventListener('context:changed', (event) => {\n * args.modules.telemetry.track('context.changed', event.detail);\n * });\n *\n * return teardown;\n * }\n *\n * configurator.registerPlugin(connectContextTelemetry);\n * ```\n */\n registerPlugin(cb) {\n this._plugins.push(cb);\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PluginAdded,\n message: 'Added plugin callback',\n properties: {\n count: this._plugins.length,\n name: cb.name || 'anonymous',\n },\n });\n }\n /**\n * Runs the full configure → initialize pipeline and returns a sealed module instance.\n *\n * Execution order:\n * 1. {@link _configure} — configure phase (creates config, applies callbacks, post-configure hooks).\n * 2. {@link _initialize} — initialize phase (concurrent module init with `requireInstance`).\n * 3. {@link _postInitialize} — post-initialize phase (`postInitialize` hooks + `onInitialized` callbacks).\n * 4. {@link _registerPlugins} — plugin phase (`registerPlugin` callbacks connect side effects).\n *\n * @param ref - Optional reference forwarded to all module lifecycle hooks.\n * @returns A promise resolving to the sealed, initialized module instance.\n * @template T - Additional modules to merge into the instance type.\n * @template R - The reference type, narrowed to `TRef`.\n */\n async initialize(ref) {\n const configStart = performance.now();\n const config = await this._configure(ref);\n const configLoadTime = Math.round(performance.now() - configStart);\n // Build a comma-separated module name list for telemetry properties\n // Extract just the module names before joining into a display string\n const configModuleNames = this.modules.map((m) => m.name).join(', ');\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.InitializeConfigLoaded,\n message: `Modules configured in ${configLoadTime}ms`,\n properties: {\n modules: configModuleNames,\n count: this.modules.length,\n loadTime: configLoadTime,\n },\n metric: configLoadTime,\n });\n const instanceStart = performance.now();\n const instance = await this._initialize(config, ref);\n const instanceLoadTime = Math.round(performance.now() - instanceStart);\n // Build a comma-separated module name list for telemetry properties\n // Extract just the module names before joining into a display string\n const instanceModuleNames = this.modules.map((m) => m.name).join(', ');\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.InitializeInstanceInitialized,\n message: `Modules initialized in ${instanceLoadTime}ms`,\n properties: {\n modules: instanceModuleNames,\n count: this.modules.length,\n loadTime: instanceLoadTime,\n },\n metric: instanceLoadTime,\n });\n const totalLoadTime = configLoadTime + instanceLoadTime;\n // Build a comma-separated module name list for telemetry properties\n // Extract just the module names before joining into a display string\n const totalModuleNames = this.modules.map((m) => m.name).join(', ');\n this._registerEvent({\n level: ModuleEventLevel.Information,\n name: ModuleConfiguratorEventName.Initialize,\n message: `initialize in ${totalLoadTime}ms`,\n properties: {\n modules: totalModuleNames,\n configLoadTime,\n instanceLoadTime,\n totalLoadTime,\n },\n metric: totalLoadTime,\n });\n await this._postInitialize(instance, ref);\n // `instance` is the freshly built module instance record, which is structurally compatible\n // with `ModulesInstance<TModules>` but not nominally assignable across the generic params.\n const modules = Object.seal(Object.assign({}, instance, {\n dispose: () => this.dispose(instance),\n }));\n await this._registerPlugins(modules, ref);\n return modules;\n }\n /**\n * Namespaces and emits a lifecycle event into the internal event stream.\n *\n * The event name is prefixed with the configurator class name (e.g.\n * `\"ModulesConfigurator::ModuleConfigurator.module.configAdded\"`) to prevent\n * name collisions between nested configurators.\n *\n * @param event - The lifecycle event to emit.\n * @protected\n */\n _registerEvent(event) {\n // Split on '::' to avoid double-prefixing already-namespaced event names\n const nameParts = event.name.split('::');\n this.#event$.next({\n ...event,\n name: `${this.constructor.className}::${nameParts[nameParts.length - 1]}`,\n });\n }\n /**\n * Runs the configure lifecycle phase.\n *\n * Delegates to {@link runConfigurePhase} which creates module config builders,\n * applies registered callbacks, and runs post-configure hooks.\n *\n * Override this method in a subclass to customize the configure phase.\n *\n * @param ref - Optional reference forwarded to module configure factories.\n * @returns A promise resolving to the merged module config map.\n * @template T - Additional modules to merge into the instance type.\n * @template R - The reference type, narrowed to `TRef`.\n * @protected\n */\n async _configure(ref) {\n return runConfigurePhase({\n modules: this.modules,\n configs: this._configs,\n afterConfiguration: this._afterConfiguration,\n afterInit: this._afterInit,\n registerEvent: this._registerEvent.bind(this),\n }, ref);\n }\n /**\n * Runs the initialize lifecycle phase.\n *\n * Delegates to {@link runInitializePhase} which initializes all modules\n * concurrently and resolves cross-module dependencies through `requireInstance`.\n *\n * Override this method in a subclass to customize the initialize phase.\n *\n * @param config - The merged module config map from the configure phase.\n * @param ref - Optional reference forwarded to each module's `initialize` call.\n * @returns A promise resolving to the sealed map of initialized module providers.\n * @template T - Additional modules to merge into the instance type.\n * @template R - The reference type. Defaults to `TRef`.\n * @protected\n */\n async _initialize(config, ref) {\n return runInitializePhase({\n modules: this.modules,\n registerEvent: this._registerEvent.bind(this),\n }, config, ref);\n }\n /**\n * Runs the post-initialize lifecycle phase.\n *\n * Delegates to {@link runPostInitializePhase} which calls each module's\n * `postInitialize` hook and then runs all `onInitialized` callbacks.\n *\n * Override this method in a subclass to customize the post-initialize phase.\n *\n * @param instance - The sealed module instance from the initialize phase.\n * @param ref - Optional reference forwarded to each module's `postInitialize` call.\n * @template T - Additional modules to merge into the instance type.\n * @template R - The reference type. Defaults to `TRef`.\n * @protected\n */\n async _postInitialize(instance, ref) {\n return runPostInitializePhase({\n modules: this.modules,\n afterInit: this._afterInit,\n registerEvent: this._registerEvent.bind(this),\n }, instance, ref);\n }\n /**\n * Runs the plugin lifecycle phase.\n *\n * Delegates to {@link runPluginPhase} which calls each registered plugin and\n * stores returned teardown callbacks for dispose.\n *\n * Override this method in a subclass to customize plugin registration.\n *\n * @param instance - The sealed module instance from the initialize phase.\n * @param ref - Optional reference forwarded to each plugin callback.\n * @template T - Additional modules to merge into the instance type.\n * @template R - The reference type, narrowed to `TRef`.\n * @protected\n */\n async _registerPlugins(instance, ref) {\n return runPluginPhase({\n plugins: this._plugins,\n teardowns: this._pluginTeardowns,\n registerEvent: this._registerEvent.bind(this),\n }, instance, ref);\n }\n /**\n * Tears down all modules managed by this configurator.\n *\n * Delegates to {@link runDisposePhase} which calls each module's `dispose`\n * hook and then completes the internal event stream.\n *\n * @param instance - The initialized module instance to tear down.\n * @param ref - Optional reference forwarded to module dispose hooks.\n * @returns A promise resolving when all modules have been disposed.\n */\n async dispose(instance, ref) {\n return runDisposePhase({\n modules: this.modules,\n registerEvent: this._registerEvent.bind(this),\n // ReplaySubject extends Subject — dispose only needs .complete() which both have.\n event$: this.#event$,\n pluginTeardowns: this._pluginTeardowns,\n }, instance, ref);\n }\n}\n//# sourceMappingURL=ModulesConfigurator.js.map","import { from, of } from 'rxjs';\nimport { last, mergeScan } from 'rxjs/operators';\n/**\n * ProcessOperators class manages a collection of process operators\n * and provides methods to add, set, get, and process these operators.\n * It implements the IProcessOperators interface for type T.\n *\n * @template T The type of data that the process operators work with\n */\nexport class ProcessOperators {\n /**\n * A record of process operators keyed by a string.\n * This property is used to store and manage the collection of process operators\n * that are used by the `ProcessOperators` class.\n */\n _operators;\n /**\n * Accessor for the collection of process operators.\n * @returns The record of process operators.\n */\n get operators() {\n return this._operators;\n }\n /**\n * Constructs a new instance of the ProcessOperators class.\n * @param operators - An optional object containing process operators.\n * It can be either an instance of IProcessOperators<T> or a record of string keys and ProcessOperator<T> values.\n */\n constructor(operators) {\n // accept either a raw operators record or another IProcessOperators instance to clone from\n if (operators && 'operators' in operators) {\n this._operators = { ...operators.operators };\n }\n else {\n this._operators = operators ?? {};\n }\n }\n /**\n * Adds a new operator to the collection.\n * @param key The key under which the operator is stored.\n * @param operator The operator to be added.\n * @returns The instance of ProcessOperators for chaining.\n * @throws Error if an operator with the same key already exists.\n */\n add(key, operator) {\n // guard against silently overwriting an existing operator under the same key\n if (Object.keys(this._operators).includes(key))\n throw Error(`Operator [${key}] already defined`);\n return this.set(key, operator);\n }\n /**\n * Sets or updates an operator in the collection.\n * @param key The key under which the operator is stored.\n * @param operator The operator to be set.\n * @returns The instance of ProcessOperators for chaining.\n */\n set(key, operator) {\n this._operators[key] = operator;\n return this;\n }\n /**\n * Removes an operator from the collection by its key.\n *\n * @param key - The key of the operator to remove.\n * @returns The current instance of `ProcessOperators` for method chaining.\n */\n remove(key) {\n delete this._operators[key];\n return this;\n }\n /**\n * Retrieves an operator from the collection by its key.\n * @param key The key of the operator to retrieve.\n * @returns The retrieved operator.\n */\n get(key) {\n return this._operators[key];\n }\n /**\n * Processes an input request through the chain of operators.\n * @param request The request to be processed.\n * @returns An Observable of the processed request.\n */\n process(request) {\n const operators = Object.values(this._operators);\n /** if no operators registered, just return the observable value */\n if (!operators.length) {\n return of(request);\n }\n // feed the request through each operator sequentially, keeping the previous value when one returns void\n return from(Object.values(this._operators)).pipe(mergeScan(\n // resolve current operator and return result or previous if void\n (value, operator) => Promise.resolve(operator(value)).then((x) => x ?? value), \n // initial value\n request, \n // only allow concurrency of one operator\n 1), \n // output result of last operator\n last());\n }\n}\n//# sourceMappingURL=ProcessOperators.js.map","/**\n * Creates a process operator that adds a header to the request.\n *\n * @param key - The header key to add.\n * @param value - The header value to add.\n * @returns A process operator that adds the specified header to the request.\n */\nexport const requestOperatorHeader = (key, value) => (request) => {\n const headers = new Headers(request.headers);\n headers.append(key, value);\n return { ...request, headers };\n};\nexport default requestOperatorHeader;\n//# sourceMappingURL=request-operator-header.js.map","import { ProcessOperators } from './ProcessOperators';\nimport { requestOperatorHeader } from './request-operator-header';\n/**\n * Extends the `ProcessOperators` class to handle HTTP requests.\n *\n * This class provides a method to set a header that will apply to all requests made by the `HttpClient`.\n *\n * @see {@link ProcessOperators}\n *\n * @template T - The type of the fetch request, which extends `FetchRequest`.\n */\nexport class HttpRequestHandler extends ProcessOperators {\n /**\n * Sets a header that will apply to all requests made by the `HttpClient`.\n *\n * @param key - The name of the header to set.\n * @param value - The value of the header to set.\n * @returns The current `HttpRequestHandler` instance, allowing for method chaining.\n */\n setHeader(key, value) {\n const operator = requestOperatorHeader(key, value);\n return this.set(`header-${key}`, operator);\n }\n}\nexport default HttpRequestHandler;\n//# sourceMappingURL=HttpRequestHandler.js.map","import { ProcessOperators } from './ProcessOperators';\n/**\n * The `HttpResponseHandler` class extends the `ProcessOperators` class and is responsible for handling HTTP responses.\n * It provides a common interface for processing HTTP responses, allowing for consistent error handling and response transformation.\n *\n * @template T - The type of the HTTP response. Defaults to `Response`.\n */\nexport class HttpResponseHandler extends ProcessOperators {\n}\nexport default HttpResponseHandler;\n//# sourceMappingURL=HttpResponseHandler.js.map","import { firstValueFrom, from, of } from 'rxjs';\n/**\n * Normalizes a step's result to a `Promise`, so a middleware calling `next(...)` never has to\n * branch on whether the next step short-circuited with a plain `Response` or reached all the\n * way to an Observable-returning network call.\n */\nfunction toPromise(result) {\n return result instanceof Response ? Promise.resolve(result) : firstValueFrom(from(result));\n}\n/**\n * Composes registered {@link HttpMiddleware} into a single execution pipeline wrapping the\n * network call, so retries, caching, telemetry, or circuit-breaking can wrap `_performFetch`\n * without touching request or response payload transforms.\n *\n * @see {@link HttpClient}\n */\nexport class HttpMiddlewareHandler {\n #middleware;\n /**\n * Constructs a handler, optionally cloning another handler's registered middleware.\n * @param source - An existing handler to clone the registered middleware from.\n */\n constructor(source) {\n this.#middleware = source ? [...source.middleware] : [];\n }\n /** @inheritdoc */\n get middleware() {\n return this.#middleware;\n }\n /** @inheritdoc */\n use(middleware) {\n this.#middleware.push(middleware);\n return this;\n }\n /** @inheritdoc */\n process(uri, init, terminal) {\n // wrap outward-in so the first-registered middleware is outermost, matching a conventional middleware chain\n const chain = this.#middleware.reduceRight((next, middleware) => (nextUri, nextInit) => middleware(nextUri, nextInit, (u, i) => toPromise(next(u, i))), terminal);\n const result = chain(uri, init);\n // a middleware may short-circuit with a plain Response (no ObservableInput wrapping needed)\n return result instanceof Response ? of(result) : from(result);\n }\n}\nexport default HttpMiddlewareHandler;\n//# sourceMappingURL=HttpMiddlewareHandler.js.map","import { z } from 'zod';\n/**\n * Validates that the provided HTTP method string is in uppercase.\n *\n * @link https://www.rfc-editor.org/rfc/rfc7231#section-4.1\n */\nexport const requestMethodCasing = () => {\n return z\n .string()\n .optional()\n .refine((value) => value === undefined || value === value?.toUpperCase(), {\n message: [\n 'Provided HTTP method must be in uppercase.',\n 'See RFC 7231 Section 4.1 for more information',\n 'https://www.rfc-editor.org/rfc/rfc7231#section-4.1',\n ].join(' '),\n });\n};\n/**\n * Creates a Zod enum schema for HTTP request methods.\n *\n * The schema validates that the value is one of the standard HTTP methods:\n * 'GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', 'HEAD', 'CONNECT', 'TRACE'.\n *\n * If the validation fails, a custom error message is returned, indicating the\n * expected methods and the received value. The error message also references\n * RFC 2616 for more information.\n *\n * @link https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html\n */\nexport const requestMethodVerb = () => {\n return z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', 'HEAD', 'CONNECT', 'TRACE'], {\n message: 'Invalid request method. Expected one of: GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD, CONNECT, TRACE. See RFC 2615 Section 9 for more information: https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html',\n });\n};\nexport const requestMethod = () => requestMethodVerb().optional();\n/**\n * Schema for validating the initialization options of a request.\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Request/Request\n *\n * This schema is used to ensure that the request options conform to the expected structure and types.\n */\nexport const requestInitSchema = z.object({\n attributionReporting: z\n .object({\n eventSourceEligible: z.boolean().optional(),\n triggerEligible: z.boolean().optional(),\n })\n .optional(),\n body: z\n .union([\n z.string(),\n z.instanceof(Blob),\n z.instanceof(ArrayBuffer),\n z.instanceof(FormData),\n z.instanceof(URLSearchParams),\n z.instanceof(ReadableStream),\n ])\n .optional(),\n browsingTopics: z.boolean().optional(),\n cache: z\n .enum(['default', 'no-store', 'reload', 'no-cache', 'force-cache', 'only-if-cached'])\n .optional(),\n credentials: z.enum(['omit', 'same-origin', 'include']).optional(),\n headers: z.record(z.string(), z.string()).optional().or(z.instanceof(Headers)),\n integrity: z.string().optional(),\n keepalive: z.boolean().optional(),\n method: requestMethod().optional(),\n mode: z.enum(['same-origin', 'cors', 'no-cors', 'navigate', 'websocket']).optional(),\n priority: z.enum(['low', 'high', 'auto']).optional(),\n redirect: z.enum(['follow', 'error', 'manual']).optional(),\n referrer: z.string().optional(),\n referrerPolicy: z\n .enum([\n 'no-referrer',\n 'no-referrer-when-downgrade',\n 'origin',\n 'origin-when-cross-origin',\n 'same-origin',\n 'strict-origin',\n 'strict-origin-when-cross-origin',\n 'unsafe-url',\n ])\n .optional(),\n signal: z.instanceof(AbortSignal).optional(),\n});\n/**\n * Schema for validating fetch request configurations.\n *\n * This schema extends the `requestInitSchema` and adds additional properties:\n * - `uri`: A required string representing the URI of the request.\n * - `path`: An optional string representing the path of the request.\n */\nexport const fetchRequestSchema = requestInitSchema.extend({\n uri: z.string(),\n path: z.string().optional(),\n});\n//# sourceMappingURL=fetch-request.schemas.js.map","import { requestMethodCasing } from './fetch-request.schemas';\n/**\n * Ensures that the HTTP method of the given request is in uppercase.\n *\n * @param request - The HTTP request object to process.\n * @returns A new request object with the HTTP method in uppercase.\n */\nexport const capitalizeRequestMethodOperator = (options) => (request) => {\n const { error, success, data } = requestMethodCasing().safeParse(request.method);\n request.method = success ? data : request.method?.toUpperCase();\n // surface schema validation issues as warnings when not running silently\n if (error && !options?.silent) {\n // one warning per issue so callers can see exactly what failed to validate\n for (const e of error.issues) {\n console.warn(e.message);\n }\n }\n return request;\n};\n//# sourceMappingURL=capitalize-request-method-operator.js.map","import { fetchRequestSchema } from './fetch-request.schemas';\n/**\n * Validates the given request using the `requestInitSchema`.\n *\n * By default, the validation is not strict, meaning that additional properties\n * not defined in the schema will be allowed and passed through without causing validation errors.\n * Also the operator will not modify the request object, it will only log an error message if the validation fails.\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Request/Request\n *\n * @param request - The request object to be validated.\n * @returns The validated request object if validation is successful.\n * @throws Will log an error message if the request validation fails.\n */\nexport const requestValidationOperator = (options) => (request) => {\n const { strict, parse } = options ?? {};\n const schema = strict ? fetchRequestSchema : fetchRequestSchema.passthrough();\n try {\n const result = schema.parse(request);\n return parse ? result : void 0;\n }\n catch (error) {\n // re-throw so callers relying on `parse` can react to validation failures directly\n if (parse) {\n throw error;\n }\n console.error('Invalid request options', error.message);\n }\n};\n//# sourceMappingURL=request-validation-operator.js.map","/**\n * Represents an error that occurs when handling an HTTP response.\n * @template TResponse The type of the HTTP response.\n */\nexport class HttpResponseError extends Error {\n response;\n static Name = 'HttpResponseError';\n /**\n * @param message - The error message.\n * @param response - The HTTP response associated with the error.\n * @param options - Additional error options.\n */\n constructor(message, response, options) {\n super(message, options);\n this.response = response;\n }\n}\nexport default HttpResponseError;\n//# sourceMappingURL=HttpResponseError.js.map","import { HttpResponseError } from './HttpResponseError.js';\n/**\n * Represents an error that occurs when handling a JSON response in an HTTP request.\n * Extends the base `HttpResponseError` class.\n *\n * @template TType - The type of the data associated with the error.\n * @template TResponse - The type of the HTTP response.\n */\nexport class HttpJsonResponseError extends HttpResponseError {\n static Name = 'HttpJsonResponseError';\n /** The parsed JSON data associated with the error response, if any. */\n data;\n /**\n * Creates a new instance of `HttpJsonResponseError`.\n *\n * @param message - The error message.\n * @param response - The HTTP response associated with the error.\n * @param options - Additional options for the error, including the associated data.\n */\n constructor(message, response, options) {\n super(message, response, options);\n this.name = HttpJsonResponseError.Name;\n this.data = options?.data;\n }\n}\nexport default HttpJsonResponseError;\n//# sourceMappingURL=HttpJsonResponseError.js.map","import { HttpResponseError } from './HttpResponseError.js';\n/**\n * Represents an error that occurs when handling a server-sent event (SSE) HTTP response.\n *\n * @template TType - The type of additional data associated with the error.\n * @template TResponse - The type of the HTTP response object.\n *\n * @extends HttpResponseError<TResponse>\n */\nexport class ServerSentEventResponseError extends HttpResponseError {\n static Name = 'ServerSentEventResponseError';\n /**\n * Creates a new instance of the error.\n *\n * @param message - The error message describing the cause of the error.\n * @param response - The HTTP response associated with the error.\n * @param options - Optional error options, which may include additional data of type `TType`.\n */\n constructor(message, response, options) {\n super(message, response, options);\n this.name = ServerSentEventResponseError.Name;\n }\n}\nexport default ServerSentEventResponseError;\n//# sourceMappingURL=ServerSentEventResponseError.js.map","/**\n * Thrown when `createClient(name)` is called with an unknown client key.\n *\n * This is only used when the provided string is neither a registered client name\n * nor an absolute `http:` or `https:` URL.\n */\nexport class ClientNotFoundException extends Error {\n}\nexport default ClientNotFoundException;\n//# sourceMappingURL=ClientNotFoundException.js.map","import { EMPTY, from, fromEvent } from 'rxjs';\nimport { finalize, takeUntil } from 'rxjs/operators';\nimport { ServerSentEventResponseError } from '../../errors/index.js';\nconst defaultDataParser = (data) => {\n try {\n return JSON.parse(data);\n }\n catch {\n return data;\n }\n};\n/**\n * Parses a string containing Server-Sent Events (SSE) data into individual event objects.\n *\n * @template TData - The type of the parsed `data` field in the event.\n * @param text - The raw SSE data as a string, where events are separated by double newlines.\n * @param options - Optional configuration for parsing the events.\n * @param options.dataParser - A custom parser function for the `data` field. Defaults to JSON parsing,\n * falling back to returning the raw string if parsing fails.\n *\n * @returns A generator that yields `ServerSentEvent` objects parsed from the input string.\n *\n * @remarks\n * - Empty lines and events with no fields are ignored.\n * - If the `data` field cannot be parsed as JSON, it is returned as a plain string.\n * - Fields other than `data` are stored as strings in the resulting `ServerSentEvent` object.\n *\n * @example\n * ```typescript\n * const sseData = `\n * id: 1\n * event: message\n * data: {\"key\":\"value\"}\n *\n * id: 2\n * event: update\n * data: plain text\n * `;\n *\n * for (const event of parseEvents(sseData)) {\n * console.log(event);\n * }\n * // Output:\n * // { id: \"1\", event: \"message\", data: { key: \"value\" } }\n * // { id: \"2\", event: \"update\", data: \"plain text\" }\n * ```\n */\nfunction* parseEvents(text, options) {\n // Split the input string into individual event strings using double newline as separator\n const eventStrings = text.split('\\n\\n');\n const dataParser = options?.dataParser || defaultDataParser;\n // Iterate through each event string\n for (const eventStr of eventStrings) {\n // Skip empty event strings (after trimming whitespace)\n if (!eventStr.trim())\n continue;\n // Split the event string into lines (fields) using single newline\n const lines = eventStr.split('\\n');\n // Use reduce to process each line in the event string\n const event = lines.reduce((event, line) => {\n // Skip empty lines\n if (!line)\n return event;\n // Find the index of the first colon, which separates field name and value\n const colonIndex = line.indexOf(':');\n // Skip lines without a colon (invalid format)\n if (colonIndex === -1)\n return event;\n // Extract the field name (before colon) and trim whitespace\n const field = line.slice(0, colonIndex).trim();\n // Extract the field value (after colon) and trim whitespace\n const value = line.slice(colonIndex + 1).trim();\n // Handle the 'data' field specially, attempting JSON parsing\n if (field === 'data') {\n event.data = dataParser(value);\n }\n else {\n // For non-data fields, assign the value as a string to the event object\n event[field] = value;\n }\n return event;\n }, {});\n // Only emit the event to the results if it has at least one field\n if (Object.keys(event).length) {\n yield event;\n }\n }\n}\nasync function* readStream(reader, options) {\n const skipHeartbeats = !!options?.skipHeartbeats;\n const eventFilter = options?.eventFilter\n ? Array.isArray(options.eventFilter)\n ? options.eventFilter\n : [options.eventFilter]\n : null;\n const decoder = new TextDecoder();\n // keep reading chunks from the stream until the reader signals completion\n while (true) {\n const { done, value } = await reader.read();\n // the underlying stream has ended, nothing more to read\n if (done) {\n // exit the read loop rather than yielding any further events\n break;\n }\n const text = decoder.decode(value, { stream: true });\n const events = parseEvents(text, { dataParser: options?.dataParser });\n // a chunk may contain multiple complete SSE events, emit each in turn\n for (const event of events) {\n // a retry directive reconfigures the reconnection delay rather than being a data event\n if (event.retry) {\n await new Promise((resolve) => setTimeout(resolve, Number.parseInt(event.retry ?? '300', 10)));\n // nothing to yield for a retry-only event\n continue;\n }\n // heartbeat filtering is opt-in via the skipHeartbeats option\n if (skipHeartbeats) {\n // Skip comment-based heartbeats (no event, data, or id)\n if (!event.event && !event.data && !event.id) {\n // this event carries no payload, so treat it as a heartbeat and skip it\n continue;\n }\n // Skip named heartbeat events (e.g., event: heartbeat or event: ping)\n if (event.event && ['heartbeat', 'ping'].includes(event.event)) {\n // an explicitly named heartbeat/ping event should also be skipped\n continue;\n }\n }\n // only emit events that pass the caller-provided event type filter, if any\n if (!eventFilter || (event.event && eventFilter.includes(event.event))) {\n yield event;\n }\n }\n }\n}\n/**\n * Transforms an SSE response into an Observable stream of parsed events.\n * @param response - The HTTP response with Content-Type: text/event-stream.\n * @param options - Optional configuration for event filtering and heartbeat handling.\n * @param options.eventFilter - Filter events by type (single string or array).\n * @param options.skipHeartbeats - Skip empty/heartbeat events if true.\n * @param options.dataParser - Custom parser for the data field.\n * @param options.abortSignal - Abort signal to cancel the stream.\n * @returns An Observable emitting parsed ServerSentEvent objects.\n * @throws ServerSentEventResponseError if response is invalid or stream fails.\n */\nexport const createSseSelector = (options) => {\n return (response) => {\n // an unsuccessful HTTP status means there is no valid SSE stream to read\n if (!response.ok) {\n throw new ServerSentEventResponseError(`HTTP error! Status: ${response.status}`, response);\n }\n // a missing body means there is nothing to stream from\n if (!response.body) {\n throw new ServerSentEventResponseError('Response body is not readable', response);\n }\n // guard against consuming a non-SSE response as if it were an event stream\n if (!response.headers.get('Content-Type')?.includes('text/event-stream')) {\n throw new ServerSentEventResponseError('Response is not a text/event-stream', response);\n }\n const reader = response.body.getReader();\n return (from(readStream(reader, {\n dataParser: options?.dataParser,\n skipHeartbeats: options?.skipHeartbeats,\n eventFilter: options?.eventFilter,\n }))\n // stop the stream on abort and always release the underlying reader when done\n .pipe(\n // Stop reading if the abort signal is triggered\n takeUntil(options?.abortSignal ? fromEvent(options.abortSignal, 'abort') : EMPTY), finalize(async () => {\n // cancel just in case of a pre-mature exit\n await reader.cancel().catch(() => {\n /** ignore cancellation errors */\n });\n reader.releaseLock();\n })));\n };\n};\nexport default createSseSelector;\n//# sourceMappingURL=create-sse-selector.js.map","import { capitalizeRequestMethodOperator, requestValidationOperator, HttpMiddlewareHandler, HttpRequestHandler, } from './lib/operators';\n/** @inheritdoc */\nexport class HttpClientConfigurator {\n /** Named client configurations keyed by client name. */\n _clients = {};\n /**\n * Gets a shallow clone of all named client configurations.\n *\n * @returns A shallow clone of the named client configurations.\n */\n get clients() {\n return { ...this._clients };\n }\n /** Default constructor used when a client configuration does not provide `ctor`. */\n defaultHttpClientCtor;\n /** Default request handler pipeline cloned into each created client instance. */\n defaultHttpRequestHandler = new HttpRequestHandler({\n // convert all request methods to uppercase\n 'capitalize-method': capitalizeRequestMethodOperator(),\n // validate the request object\n 'request-validation': requestValidationOperator(),\n });\n /** Default middleware chain cloned into each created client instance. */\n defaultHttpMiddlewareHandler = new HttpMiddlewareHandler();\n /**\n * Creates a configurator with the default client constructor.\n * @param client - The default client constructor used when `ctor` is not configured per client.\n */\n constructor(client) {\n this.defaultHttpClientCtor = client;\n }\n /** @inheritdoc */\n hasClient(name) {\n return Object.keys(this._clients).includes(name);\n }\n /** @inheritdoc */\n addMiddleware(middleware) {\n this.defaultHttpMiddlewareHandler.use(middleware);\n return this;\n }\n /** @inheritdoc */\n configureClient(name, args) {\n const argFn = typeof args === 'string' ? { baseUri: args } : args;\n const options = typeof argFn === 'function' ? { onCreate: argFn } : argFn;\n // `options` is `HttpClientOptions<T>` (this call's generic), but `_clients` is keyed by the\n // configurator's own `TClient` — callers are expected to keep the two in sync.\n this._clients[name] = {\n ...this._clients[name],\n ...options,\n };\n return this;\n }\n}\nexport default HttpClientConfigurator;\n//# sourceMappingURL=configurator.js.map","// Generated by genversion.\nexport const version = '8.1.0-next.0';\n//# sourceMappingURL=version.js.map","import { BaseModuleProvider } from '@equinor/fusion-framework-module/provider';\nimport { version } from './version';\nimport { ClientNotFoundException } from './errors/index.js';\n/** URL protocols accepted as valid ad-hoc base URIs. */\nconst SUPPORTED_PROTOCOLS = ['http:', 'https:', 'ws:', 'wss:'];\n/**\n * Checks if a given string is a valid absolute URL with a supported protocol.\n * @param url - The string to check.\n * @returns `true` when the string uses one of {@link SUPPORTED_PROTOCOLS}.\n */\nconst isURL = (url) => {\n try {\n const parsed = new URL(url);\n return SUPPORTED_PROTOCOLS.includes(parsed.protocol);\n }\n catch {\n return false;\n }\n};\n/**\n * Heuristic check for strings that look like a bare hostname or URL without a\n * protocol prefix (e.g. `api.example.com` or `api.example.com/v1`).\n *\n * Used to emit a deprecation warning when callers rely on the old (pre-patch)\n * behaviour that accepted protocol-less URLs.\n */\nconst looksLikeURL = (value) => !value.includes(' ') && /^[a-z\\d]([a-z\\d-]*\\.)+[a-z]{2,}/i.test(value);\n/**\n * The `HttpClientProvider` class is responsible for managing HTTP client instances and their configuration.\n * It provides methods to check if a client is configured, create new client instances, and create custom client instances.\n */\nexport class HttpClientProvider extends BaseModuleProvider {\n config;\n /**\n * Gets the default HTTP request handler for the HTTP client provider.\n * @returns The default HTTP request handler.\n */\n get defaultHttpRequestHandler() {\n return this.config.defaultHttpRequestHandler;\n }\n /**\n * Gets the default middleware chain for the HTTP client provider.\n * @returns The default middleware chain.\n */\n get defaultHttpMiddlewareHandler() {\n return this.config.defaultHttpMiddlewareHandler;\n }\n /**\n * Creates a new `HttpClientProvider`.\n * @param config - The configurator providing client definitions and defaults.\n */\n constructor(config) {\n super({\n version,\n config,\n });\n this.config = config;\n }\n /**\n * Checks if a client with the given key is configured in the `HttpClientProvider`.\n * @param key - The key of the HTTP client to check.\n * @returns `true` if a client with the given key is configured, `false` otherwise.\n */\n hasClient(key) {\n return Object.keys(this.config.clients).includes(key);\n }\n /**\n * Creates a fresh HTTP client instance from a named or ad-hoc configuration.\n *\n * @param keyOrConfig - The key or configuration object for the HTTP client.\n * @returns The created HTTP client instance.\n *\n * @remarks\n * This method resolves the configuration for the HTTP client based on the provided `keyOrConfig` parameter.\n * If a string is provided, it is treated as the key for a pre-configured client in the `HttpClientProvider`.\n * If an `HttpClientOptions` object is provided, it is used as the configuration for the new client instance.\n *\n * The method applies `baseUri`, `defaultScopes`, `requestHandler`, `responseHandler`,\n * a custom `ctor` when configured, and finally runs `onCreate` for the newly created instance.\n *\n * The created HTTP client instance is returned.\n */\n createClient(keyOrConfig) {\n const config = this._resolveConfig(keyOrConfig);\n const { baseUri, defaultScopes = [], onCreate, ctor = this.config.defaultHttpClientCtor, requestHandler = this.defaultHttpRequestHandler, responseHandler, middlewareHandler = this.defaultHttpMiddlewareHandler, } = config;\n const options = { requestHandler, responseHandler, middlewareHandler };\n const instance = new ctor(baseUri || '', options);\n // attach the resolved default scopes onto the instance without overwriting other own properties\n Object.assign(instance, { defaultScopes });\n onCreate?.(instance);\n return instance;\n }\n /**\n * Creates a client instance and returns it as the requested custom client type.\n *\n * @template T - The custom `HttpClient` implementation type to cast the created instance to.\n * @param key - The key of the pre-configured HTTP client to create.\n * @returns The created HTTP client instance, cast to the specified type `T`.\n *\n * @remarks\n * This method delegates to the `createClient` method, but casts the returned\n * instance to the specified type `T`. This can be useful when you need to\n * work with a specific HTTP client implementation, but the `HttpClientProvider`\n * is configured to use a different implementation.\n */\n createCustomClient(key) {\n // `createClient` always returns the provider's configured `HttpClient` implementation —\n // cast through `unknown` to hand back the caller-requested implementation type `T`.\n return this.createClient(key);\n }\n /**\n * Resolves the configuration for an HTTP client based on the provided `keyOrConfig` parameter.\n *\n * If a string is provided, it is treated as either a pre-configured client key or,\n * when it is an absolute `http:` or `https:` URL, as an ad-hoc `baseUri`.\n * If an `HttpClientOptions` object is provided, it is used directly as the configuration for the new client instance.\n *\n * @param keyOrConfig - The key or configuration object for the HTTP client.\n * @returns The resolved HTTP client configuration.\n * @throws {ClientNotFoundException} When `keyOrConfig` is a string that is neither a registered\n * client key nor a URL-like value.\n */\n _resolveConfig(keyOrConfig) {\n // a string may reference a registered client key or an ad-hoc URL; anything else is used as-is\n if (typeof keyOrConfig === 'string') {\n const config = this.config.clients[keyOrConfig];\n // an absolute http(s) URL can be used directly as an ad-hoc baseUri\n if (!config && isURL(keyOrConfig)) {\n return { baseUri: keyOrConfig };\n }\n else if (!config && looksLikeURL(keyOrConfig)) {\n // recover from a missing protocol instead of failing outright, but warn so it can be fixed\n console.warn(`[HttpClientProvider] \"${keyOrConfig}\" looks like a URL but is missing the http:// or https:// protocol. ` +\n `Treating it as \"https://${keyOrConfig}\". ` +\n `Pass a fully-qualified URL to silence this warning.`);\n return { baseUri: `https://${keyOrConfig}` };\n }\n else if (!config) {\n throw new ClientNotFoundException(`No registered http client for key [${keyOrConfig}]`);\n }\n return config;\n }\n return keyOrConfig;\n }\n}\n//# sourceMappingURL=provider.js.map","import { __assign, __rest } from \"tslib\";\nimport { createOperatorSubscriber } from '../../operators/OperatorSubscriber';\nimport { Observable } from '../../Observable';\nimport { innerFrom } from '../../observable/innerFrom';\nexport function fromFetch(input, initWithSelector) {\n if (initWithSelector === void 0) { initWithSelector = {}; }\n var selector = initWithSelector.selector, init = __rest(initWithSelector, [\"selector\"]);\n return new Observable(function (subscriber) {\n var controller = new AbortController();\n var signal = controller.signal;\n var abortable = true;\n var outerSignal = init.signal;\n if (outerSignal) {\n if (outerSignal.aborted) {\n controller.abort();\n }\n else {\n var outerSignalHandler_1 = function () {\n if (!signal.aborted) {\n controller.abort();\n }\n };\n outerSignal.addEventListener('abort', outerSignalHandler_1);\n subscriber.add(function () { return outerSignal.removeEventListener('abort', outerSignalHandler_1); });\n }\n }\n var perSubscriberInit = __assign(__assign({}, init), { signal: signal });\n var handleError = function (err) {\n abortable = false;\n subscriber.error(err);\n };\n fetch(input, perSubscriberInit)\n .then(function (response) {\n if (selector) {\n innerFrom(selector(response)).subscribe(createOperatorSubscriber(subscriber, undefined, function () {\n abortable = false;\n subscriber.complete();\n }, handleError));\n }\n else {\n abortable = false;\n subscriber.next(response);\n subscriber.complete();\n }\n })\n .catch(handleError);\n return function () {\n if (abortable) {\n controller.abort();\n }\n };\n });\n}\n//# sourceMappingURL=fetch.js.map","import { HttpJsonResponseError } from '../../errors/index.js';\n/**\n * Asynchronously parses the JSON data from a given HTTP response.\n *\n * If the response has a status code of 204 (No Content), this function will resolve with `undefined`.\n *\n * If the response is not successful (i.e. `response.ok` is `false`), this function will throw an `HttpJsonResponseError` with the response details and the parsed data (if any).\n *\n * If there is an error parsing the JSON data, this function will throw an `HttpJsonResponseError` with the parsing error and the original response.\n *\n * @template TType - The expected type of the parsed JSON data.\n * @template TResponse - The type of the HTTP response object.\n * @param response - The HTTP response to parse.\n * @returns A promise that resolves with the parsed JSON data, or rejects with an `HttpJsonResponseError`.\n */\nexport const jsonSelector = async (response) => {\n /** Status code 204 indicates no content in the response */\n if (response.status === 204) {\n return Promise.resolve();\n }\n try {\n // Parse the response JSON data\n const data = await response.json();\n // Check if the response was successful\n if (!response.ok) {\n // Throw an error with the response details\n throw new HttpJsonResponseError('network response was not OK', response, { data });\n }\n // Return the parsed data\n return data;\n }\n catch (cause) {\n // If the cause is an HttpJsonResponseError, rethrow it\n if (cause instanceof HttpJsonResponseError) {\n throw cause;\n }\n // Otherwise, throw a new HttpJsonResponseError with the parsing error\n throw new HttpJsonResponseError('failed to parse response', response, { cause });\n }\n};\nexport default jsonSelector;\n//# sourceMappingURL=json-selector.js.map","/**\n * Extracts a blob and filename from a successful HTTP response.\n *\n * @param response - The HTTP response to extract the blob and filename from.\n * @returns A promise that resolves to an object containing the extracted blob and filename.\n * @throws {Error} If the response is not successful or if there is an error parsing the response.\n */\nexport const blobSelector = async (response) => {\n // treat any non-2xx response as a failure rather than attempting to read its body\n if (!response.ok) {\n throw new Error('network response was not OK');\n }\n // Status code 204 indicates no content, so throw an error\n if (response.status === 204) {\n throw new Error('no content');\n }\n // Extract the filename from the 'content-disposition' header\n // locate the segment carrying the filename directive; other directives (e.g. inline/attachment) are ignored\n const filename = response.headers\n .get('content-disposition')\n ?.split(';')\n .find((n) => n.includes('filename='))\n ?.replace('filename=', '')\n ?.trim();\n try {\n // Convert the response to a Blob and return the filename and Blob\n const blob = await response.blob();\n return { filename, blob };\n }\n catch (_err) {\n // Throw an error if there's a problem parsing the response\n throw Error('failed to parse response');\n }\n};\nexport default blobSelector;\n//# sourceMappingURL=blob-selector.js.map","import { finalize, firstValueFrom, of, Subject } from 'rxjs';\nimport { switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { fromFetch } from 'rxjs/fetch';\nimport { HttpMiddlewareHandler, HttpRequestHandler, HttpResponseHandler } from '../operators';\nimport { blobSelector, jsonSelector } from '../selectors';\nimport { HttpResponseError } from '../../errors/index.js';\nimport { createSseSelector, } from '../selectors/create-sse-selector';\n/** Base http client for executing requests */\nexport class HttpClient {\n uri;\n /**\n * A request handler that can be used to customize the request before it is sent.\n * This property is part of the `HttpClientCreateOptions` configuration object used to create an `HttpClient` instance.\n */\n requestHandler;\n /**\n * A handler for customizing the response after it is received.\n * This property is part of the `HttpClientCreateOptions` configuration object used to create an `HttpClient` instance.\n */\n responseHandler;\n /**\n * Middleware wrapping the network call, for cross-cutting concerns such as retries,\n * caching, or telemetry. This property is part of the `HttpClientCreateOptions`\n * configuration object used to create an `HttpClient` instance.\n */\n middlewareHandler;\n /**\n * A stream of requests that are about to be executed.\n * This property is used internally by the `HttpClient` class to manage the lifecycle of requests.\n */\n _request$ = new Subject();\n /**\n * A stream of responses that have been received.\n * This property is used internally by the `HttpClient` class to manage the lifecycle of responses.\n */\n _response$ = new Subject();\n /**\n * A stream that is used to signal the abortion of requests.\n * This property is used internally by the `HttpClient` class to manage the lifecycle of requests.\n */\n _abort$ = new Subject();\n /**\n * A stream of requests that are about to be executed.\n * @returns An `Observable` that emits each request before it is executed.\n */\n get request$() {\n return this._request$.asObservable();\n }\n /**\n * A stream of responses that have been received.\n * @returns An `Observable` that emits each response as it is received.\n */\n get response$() {\n return this._response$.asObservable();\n }\n /**\n * Creates a new `HttpClient`.\n * @param uri - The base URI used to resolve relative request paths.\n * @param options - Optional request and response handlers.\n */\n constructor(uri, options) {\n this.uri = uri;\n this.requestHandler = new HttpRequestHandler(options?.requestHandler);\n this.responseHandler = new HttpResponseHandler(options?.responseHandler);\n this.middlewareHandler = new HttpMiddlewareHandler(options?.middlewareHandler);\n this._init();\n }\n /**\n * Internal method called by child classes to perform initialization logic in the constructor.\n * This method is intended to be overridden by child classes to add their own initialization logic.\n * @protected\n * @virtual\n */\n _init() {\n // called by children for constructor setup\n }\n /**\n * Fetches data from the specified path and returns a stream response.\n *\n * @template T - The expected shape of the fetched data.\n * @param path - The path to fetch data from.\n * @param args - Optional request initialization options, including a custom selector function.\n * @returns A stream response containing the fetched data.\n */\n fetch$(path, args) {\n return this._fetch$(path, args);\n }\n /**\n * Fetches data from the specified path and returns a Promise containing the fetched data.\n *\n * @template T - The expected shape of the fetched data.\n * @param path - The path to fetch data from.\n * @param args - Optional request initialization options, including a custom selector function.\n * @returns A Promise containing the fetched data.\n */\n fetch(path, args) {\n return firstValueFrom(this.fetch$(path, args));\n }\n /**\n * @deprecated Use {@link fetch} instead.\n * @template T - The expected shape of the fetched data.\n * @param path - The path to fetch data from.\n * @param args - Optional request initialization options, including a custom selector function.\n * @returns A Promise containing the fetched data.\n */\n fetchAsync(path, args) {\n return this.fetch(path, args);\n }\n /**\n * Fetches data from the specified path and returns a stream response containing the data in JSON format.\n *\n * @template T - The expected shape of the parsed JSON data.\n * @param path - The path to fetch the data from.\n * @param args - Optional request initialization options, including a custom selector function and request body.\n * - `body`: The request body, which will be automatically serialized to JSON if it's an object.\n * - `selector`: A custom selector function to transform the response data. If not provided, the `jsonSelector` function will be used.\n * - `headers`: Additional headers to include in the request. The `Accept` and `Content-Type` headers will be automatically set to `application/json`.\n * @returns A stream response containing the fetched data in JSON format.\n */\n json$(path, args) {\n const body = typeof args?.body === 'object' ? JSON.stringify(args?.body) : args?.body;\n const selector = args?.selector ?? jsonSelector;\n const headers = new Headers(args?.headers);\n headers.append('Accept', 'application/json');\n headers.append('Content-Type', 'application/json');\n return this.fetch$(path, {\n ...args,\n body,\n selector,\n headers,\n });\n }\n /**\n * Fetches data from the specified path and returns a Promise containing the fetched data in JSON format.\n *\n * @template T - The expected shape of the parsed JSON data.\n * @param path - The path to fetch the data from.\n * @param args - Optional request initialization options, including a custom selector function and request body.\n * - `body`: The request body, which will be automatically serialized to JSON if it's an object.\n * - `selector`: A custom selector function to transform the response data. If not provided, the `jsonSelector` function will be used.\n * - `headers`: Additional headers to include in the request. The `Accept` and `Content-Type` headers will be automatically set to `application/json`.\n * @returns A Promise containing the fetched data in JSON format.\n */\n json(path, args) {\n return firstValueFrom(this.json$(path, args));\n }\n /**\n * Fetches a blob resource from the specified path and returns a stream response.\n *\n * @template T - The expected shape of the fetched blob data.\n * @param path - The path to the blob resource.\n * @param args - Optional request initialization options, including a custom selector function.\n * @returns A stream response containing the fetched blob data.\n */\n blob$(path, args) {\n // Get the selector value from the provided args, or use the default blobSelector\n const selector = args?.selector ?? blobSelector;\n // Create the FetchRequestInit object with the provided args and the selector\n const init = {\n ...args,\n selector,\n };\n // Call the fetch$ method with the provided path and the constructed init object\n return this.fetch$(path, init);\n }\n /**\n * Fetches a blob from the specified path and returns a Promise that resolves to the blob result.\n *\n * @template T - The expected shape of the fetched blob data.\n * @param path - The path to fetch the blob from.\n * @param args - Optional arguments for the fetch request, including request body, headers, and response type.\n * @returns A Promise that resolves to the blob result.\n */\n blob(path, args) {\n return firstValueFrom(this.blob$(path, args));\n }\n /**\n * Initiates a Server-Sent Events (SSE) stream request to the specified path and returns a stream of events.\n *\n * @template T - The type of the event data expected from the SSE stream.\n * @param path - The endpoint path to connect to for the SSE stream.\n * @param args - Optional fetch request initialization options, including headers and abort signal.\n * @param options - Optional selector options for customizing the SSE stream, excluding the abort signal.\n *\n * @returns A `StreamResponse` that emits `ServerSentEvent<T>` objects as they are received from the server.\n *\n * @example\n * const sse$ = httpClient.sse$(\n * '/events',\n * { method: 'POST', body: JSON.stringify({ prompt: 'tell me a joke' }) },\n * { eventFilter: ['message'] },\n * );\n * sse$.subscribe({\n * next: (event) => console.log(event),\n * error: (err) => console.error(err),\n * complete: () => console.log('Completed'),\n * });\n */\n sse$(path, args, options) {\n // Setup default common headers for SSE\n const headers = new Headers(args?.headers);\n headers.append('Accept', 'text/event-stream');\n headers.append('Content-Type', 'text/event-stream');\n headers.append('Cache-Control', 'no-cache');\n headers.append('Connection', 'keep-alive');\n // Create the selector using the provided options and the abort signal from args\n const selector = createSseSelector({ ...options, abortSignal: args?.signal });\n // Call the fetch$ method with the provided path and the constructed init object\n return this._fetch$(path, { selector, ...args, headers });\n }\n /**\n * @deprecated Use {@link json} instead.\n * @template T - The expected shape of the parsed JSON data.\n * @param path - The path to fetch the data from.\n * @param args - Optional request initialization options, including a custom selector function and request body.\n * @returns A Promise containing the fetched data in JSON format.\n */\n jsonAsync(path, args) {\n return this.json(path, args);\n }\n /**\n * Executes an HTTP request using the specified method and path.\n *\n * @template T - The expected shape of the result.\n * @template TMethod - The name of the `IHttpClient` method to invoke.\n * @param method - The HTTP method to use for the request, such as 'fetch', 'json', or 'blob'.\n * @param path - The path to the resource to fetch.\n * @param init - Optional request initialization options, including request body, headers, and response type.\n * @returns The result of the HTTP request, which will be of the same type as the return value of the specified method.\n */\n execute(method, path, init) {\n return this[method](path, init);\n }\n /**\n * Aborts any ongoing HTTP requests made by this `IHttpClient` instance.\n * This will trigger the `takeUntil` operator in the `_fetch$` method,\n * causing any in-flight requests to be cancelled, and abort the\n * per-request `AbortSignal` passed through to `_performFetch`, so the\n * underlying network call is cancelled even behind registered middleware.\n */\n abort() {\n this._abort$.next();\n }\n /**\n * Fetches data from the specified path and returns an Observable that emits the response.\n *\n * @template T - The expected shape of the emitted data.\n * @param path - The path to fetch the data from.\n * @param args - Optional arguments for the fetch request, including a response selector function, request body, headers, and response type.\n * @returns {Observable<T>} An Observable that emits the response data.\n *\n * @throws {HttpResponseError} When the optional `selector` throws while transforming the response.\n *\n * This method handles the following steps:\n * 1. Resolves the full URL by combining the base URI and the provided path.\n * 2. Prepares the request by passing it through the `requestHandler.process()` method.\n * 3. Executes the fetch request using the prepared request.\n * 4. Prepares the response by passing it through the `responseHandler.process()` method.\n * 5. Applies the optional response selector function to transform the response data.\n * 6. Cancels the request if the `_abort$` observable emits.\n */\n _fetch$(path, args) {\n const { selector, ...options } = args || {};\n // A registered middleware's `next(...)` resolves through a `Promise` (see\n // `HttpMiddlewareHandler`), which `firstValueFrom` fulfils via its own independent\n // subscription to `_performFetch` — one the `takeUntil(this._abort$)` below never reaches,\n // since it sits outside the subscription tree that `takeUntil` tears down. Combining this\n // controller's signal into the request `init` lets `_performFetch` (`fromFetch` by default)\n // abort the underlying network call directly, regardless of whether middleware severed the\n // RxJS teardown chain.\n const abortController = new AbortController();\n // abort only fires once per request; the subscription is torn down in `finalize` below\n const abort = this._abort$.pipe(take(1)).subscribe(() => abortController.abort());\n const callerSignal = options.signal;\n const signal = callerSignal\n ? AbortSignal.any([callerSignal, abortController.signal])\n : abortController.signal;\n // `fromFetch` yields the raw fetch `Response`, but `responseHandler.process()` (called via\n // `_prepareResponse`) expects the pipeline's generic `TResponse` shape — cast through\n // `unknown` since the two are only compatible after that processing step.\n const response$ = of({\n ...options,\n signal,\n path,\n uri: this._resolveUrl(path),\n }).pipe(\n /** prepare request, allow extensions to modify request */\n switchMap((x) => this._prepareRequest(x)), \n /** push request to event buss */\n tap((x) => this._request$.next(x)), \n /** execute request through registered middleware, terminating at _performFetch */\n switchMap(({ uri, path: _path, ...init }) => this.middlewareHandler.process(uri, init, (u, i) => this._performFetch(u, i))), \n /** prepare response, allow extensions to modify response */\n switchMap((x) => this._prepareResponse(x)), \n /** push response to event buss */\n tap((x) => this._response$.next(x)), \n /** execute selector */\n switchMap((response) => {\n // only run the selector when one was provided; otherwise pass the response through untouched\n if (selector) {\n try {\n return selector(response);\n }\n catch (err) {\n throw new HttpResponseError('failed to execute response selector', response, {\n cause: err,\n });\n }\n }\n return of(response);\n }), \n /** cancel request on abort signal */\n takeUntil(this._abort$), \n /** the abort signal subscription only ever fires once; tear it down once this request settles either way */\n finalize(() => abort.unsubscribe()));\n // The pipe above resolves to the per-call generic `T` (via the optional `selector`), but\n // the observable's static type tracks the class-level `TResponse` — cast to the caller's `T`.\n return response$;\n }\n /**\n * Performs the actual network call for a prepared request.\n *\n * @remarks\n * Isolated from {@link _fetch$} so a test double can replace only this step —\n * matching a request against registered route handlers instead of reaching\n * the network — while everything around it (request preparation, the\n * response pipeline, abort handling) runs unchanged. See\n * `@equinor/fusion-framework-module-http/mock`.\n *\n * @param uri - The fully resolved URL for the request.\n * @param init - The prepared `fetch` request options.\n * @returns An observable of the raw `Response`, ahead of {@link _prepareResponse}.\n */\n _performFetch(uri, init) {\n return fromFetch(uri, init);\n }\n /**\n * Prepares the request by passing it through the `requestHandler.process()` method.\n * This method is an implementation detail of the `_fetch$()` method, and is not part of the public API.\n * It takes a `TRequest` object as input, which represents the request data, and returns an `ObservableInput<TRequest>`,\n * which can be used to further process the request before it is executed.\n *\n * @param init The request data to be processed.\n * @returns An `ObservableInput<TRequest>` that represents the processed request.\n */\n _prepareRequest(init) {\n return this.requestHandler.process(init);\n }\n /**\n * Prepares the response by passing it through the `responseHandler.process()` method.\n * This method is an implementation detail of the `_fetch$()` method, and is not part of the public API.\n * It takes a `TResponse` object as input, which represents the response data, and returns an `ObservableInput<TResponse>`,\n * which can be used to further process the response before it is returned.\n *\n * @param response The response data to be processed.\n * @returns An `ObservableInput<TResponse>` that represents the processed response.\n */\n _prepareResponse(response) {\n return this.responseHandler.process(response);\n }\n /**\n * Resolves the full URL for a given path by combining it with the base URL.\n * This is a protected method and is an implementation detail of the `HttpClient` class.\n *\n * @param path - The path to be resolved.\n * @returns The full URL for the given path.\n */\n _resolveUrl(path) {\n const { origin, pathname: basePath } = new URL(this.uri, this.uri.startsWith('http') ? undefined : window.location.origin);\n const pathname = [basePath, path].join('/').replace(/\\/{2,}/g, '/');\n return new URL(pathname, origin).href;\n }\n}\n//# sourceMappingURL=client.js.map","import { HttpClient } from './client';\n/**\n * Extends the `HttpClient` class to provide MSAL (Microsoft Authentication Library) authentication support.\n *\n * The `HttpClientMsal` class is responsible for handling requests that require authentication using the MSAL library.\n * It extends the `HttpClient` class and adds the following functionality:\n *\n * - `defaultScopes`: An array of strings representing the default scopes to be used for all requests, unless overridden in the request object.\n * - `fetch$`: Overrides the `fetch$` method of the `HttpClient` class to add MSAL authentication support. It takes an optional `MsalFetchRequestInit` object, which can include the `scopes` property to specify the scopes to be used for the request.\n * - If `scopes` is provided in the `MsalFetchRequestInit` object, it will be used in addition to the `defaultScopes`.\n * - If `scopes` is not provided, only the `defaultScopes` will be used.\n *\n * @template TRequest - The type of the request object. Defaults to `MsalFetchRequest`.\n * @template TResponse - The type of the response object. Defaults to `FetchResponse`.\n */\nexport class HttpClientMsal extends HttpClient {\n /**\n * An array of default scopes to be used for all requests, unless overridden in the request object.\n * This property is used by the `HttpClientMsal` class to add MSAL authentication support to requests.\n */\n defaultScopes = [];\n /**\n * Fetches a resource from the specified path, with optional MSAL authentication scopes.\n *\n * This method extends the `HttpClient.fetch$` method to add support for MSAL authentication.\n * If `init.scopes` is provided, it will be used in addition to the `defaultScopes` defined in the `HttpClientMsal` class.\n * If `init.scopes` is not provided, only the `defaultScopes` will be used for the request.\n *\n * @overrides HttpClient.fetch$\n *\n * @template T - The expected response type.\n * @param path - The path to the resource to fetch.\n * @param init - An optional `MsalFetchRequestInit` object that can include the `scopes` property.\n * @returns An `Observable` that emits the fetched resource.\n */\n fetch$(path, init) {\n /**\n * Merges the default scopes defined in the `HttpClientMsal` class with the scopes provided in the `init` parameter, if any.\n * This ensures that the request includes the necessary scopes for MSAL authentication.\n */\n const args = {\n ...init,\n scopes: this.defaultScopes.concat(init?.scopes || []),\n };\n return super._fetch$(path, args);\n }\n}\nexport default HttpClientMsal;\n//# sourceMappingURL=client-msal.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpClientMsal } from './lib/client';\nimport { HttpClientConfigurator, } from './configurator';\nimport { HttpClientProvider } from './provider';\n/**\n * Default HTTP module definition for Fusion Framework applications.\n *\n * The module uses `HttpClientMsal` as the default client implementation and,\n * when the auth module is available, installs a request handler that can acquire\n * bearer tokens for scoped requests.\n */\nexport const module = {\n name: 'http',\n /**\n * Configures the HTTP module with MSAL authentication.\n *\n * This function creates a new `HttpClientConfigurator` instance using the `HttpClientMsal` class.\n * The `HttpClientConfigurator` is responsible for configuring the HTTP client with the necessary options,\n * such as the base URL, request headers, and other settings.\n *\n * @returns A new `HttpClientConfigurator` instance configured for MSAL authentication.\n */\n configure: () => new HttpClientConfigurator(HttpClientMsal),\n /**\n * Initializes the HTTP client provider with MSAL authentication.\n *\n * This function is responsible for setting up the default HTTP request handler\n * to acquire an access token from MSAL and attach it to the request headers\n * when the request includes scopes.\n *\n * @param config - The module configuration.\n * @param hasModule - A function to check if a module is available.\n * @param requireInstance - A function to get an instance of a module.\n * @returns A promise that resolves to the HTTP client provider.\n */\n initialize: async ({ config, hasModule, requireInstance, }) => {\n const httpProvider = new HttpClientProvider(config);\n // wire up an MSAL bearer-token handler only when the auth module is registered\n if (hasModule('auth')) {\n const authProvider = await requireInstance('auth');\n httpProvider.defaultHttpRequestHandler.set('MSAL', async (request) => {\n const { scopes = [] } = request;\n // only attempt to acquire a token when the request actually declares scopes\n if (scopes.length) {\n /** TODO(#5143): should be try catch, check caller for handling */\n const accessToken = await authProvider.acquireAccessToken({\n request: { scopes },\n });\n // without a token there's nothing to attach, fall through to the default request\n if (accessToken) {\n const headers = new Headers(request.headers);\n headers.set('Authorization', `Bearer ${accessToken}`);\n return { ...request, headers };\n }\n }\n });\n }\n return httpProvider;\n },\n};\n/**\n * Creates a module configurator for the HTTP module.\n *\n * Use this when you need lower-level access to the module configuration callback,\n * for example when registering several named clients in one setup step.\n *\n * @param configure - The callback that receives the HTTP module configuration.\n * @returns A module configurator for the HTTP module.\n */\nexport const configureHttp = (configure) => ({\n module,\n configure,\n});\n/**\n * Creates a module configurator that registers one named HTTP client.\n *\n * This is the convenience API for the common case where a setup step only needs to\n * register one client with `baseUri`, `defaultScopes`, handlers, or a custom constructor.\n *\n * @param name - The client key used later with `createClient(name)`.\n * @param args - The named client configuration.\n * @returns A module configurator that registers the named client.\n */\nexport const configureHttpClient = (name, args) => ({\n module,\n configure: (config) => {\n config.configureClient(name, args);\n },\n});\nexport default module;\n//# sourceMappingURL=module.js.map","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = isFunction(e) ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar O = Object;\nvar getPrototypeOf = O.getPrototypeOf;\nvar CONSTRUCTOR = \"constructor\";\nvar PROTOTYPE = \"prototype\";\nvar CONFIGURABLE = \"configurable\";\nvar ENUMERABLE = \"enumerable\";\nvar WRITABLE = \"writable\";\nvar VALUE = \"value\";\nvar isDraft = (value) => !!value && !!value[DRAFT_STATE];\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || isArray(value) || !!value[DRAFTABLE] || !!value[CONSTRUCTOR]?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = O[PROTOTYPE][CONSTRUCTOR].toString();\nvar cachedCtorStrings = /* @__PURE__ */ new WeakMap();\nfunction isPlainObject(value) {\n if (!value || !isObjectish(value))\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null || proto === O[PROTOTYPE])\n return true;\n const Ctor = O.hasOwnProperty.call(proto, CONSTRUCTOR) && proto[CONSTRUCTOR];\n if (Ctor === Object)\n return true;\n if (!isFunction(Ctor))\n return false;\n let ctorString = cachedCtorStrings.get(Ctor);\n if (ctorString === void 0) {\n ctorString = Function.toString.call(Ctor);\n cachedCtorStrings.set(Ctor, ctorString);\n }\n return ctorString === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter, strict = true) {\n if (getArchtype(obj) === 0 /* Object */) {\n const keys = strict ? Reflect.ownKeys(obj) : O.keys(obj);\n keys.forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nvar has = (thing, prop, type = getArchtype(thing)) => type === 2 /* Map */ ? thing.has(prop) : O[PROTOTYPE].hasOwnProperty.call(thing, prop);\nvar get = (thing, prop, type = getArchtype(thing)) => (\n // @ts-ignore\n type === 2 /* Map */ ? thing.get(prop) : thing[prop]\n);\nvar set = (thing, propOrOldValue, value, type = getArchtype(thing)) => {\n if (type === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (type === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n};\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nvar isArray = Array.isArray;\nvar isMap = (target) => target instanceof Map;\nvar isSet = (target) => target instanceof Set;\nvar isObjectish = (target) => typeof target === \"object\";\nvar isFunction = (target) => typeof target === \"function\";\nvar isBoolean = (target) => typeof target === \"boolean\";\nfunction isArrayIndex(value) {\n const n = +value;\n return Number.isInteger(n) && String(n) === value;\n}\nvar getProxyDraft = (value) => {\n if (!isObjectish(value))\n return null;\n return value?.[DRAFT_STATE];\n};\nvar latest = (state) => state.copy_ || state.base_;\nvar getValue = (value) => {\n const proxyDraft = getProxyDraft(value);\n return proxyDraft ? proxyDraft.copy_ ?? proxyDraft.base_ : value;\n};\nvar getFinalValue = (state) => state.modified_ ? state.copy_ : state.base_;\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (isArray(base))\n return Array[PROTOTYPE].slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = O.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc[WRITABLE] === false) {\n desc[WRITABLE] = true;\n desc[CONFIGURABLE] = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n [CONFIGURABLE]: true,\n [WRITABLE]: true,\n // could live with !!desc.set as well here...\n [ENUMERABLE]: desc[ENUMERABLE],\n [VALUE]: base[key]\n };\n }\n return O.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = O.create(proto);\n return O.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n O.defineProperties(obj, {\n set: dontMutateMethodOverride,\n add: dontMutateMethodOverride,\n clear: dontMutateMethodOverride,\n delete: dontMutateMethodOverride\n });\n }\n O.freeze(obj);\n if (deep)\n each(\n obj,\n (_key, value) => {\n freeze(value, true);\n },\n false\n );\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nvar dontMutateMethodOverride = {\n [VALUE]: dontMutateFrozenCollections\n};\nfunction isFrozen(obj) {\n if (obj === null || !isObjectish(obj))\n return true;\n return O.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar PluginMapSet = \"MapSet\";\nvar PluginPatches = \"Patches\";\nvar PluginArrayMethods = \"ArrayMethods\";\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nvar isPluginLoaded = (pluginKey) => !!plugins[pluginKey];\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nvar getCurrentScope = () => currentScope;\nvar createScope = (parent_, immer_) => ({\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0,\n handledSet_: /* @__PURE__ */ new Set(),\n processedForPatches_: /* @__PURE__ */ new Set(),\n mapSetPlugin_: isPluginLoaded(PluginMapSet) ? getPlugin(PluginMapSet) : void 0,\n arrayMethodsPlugin_: isPluginLoaded(PluginArrayMethods) ? getPlugin(PluginArrayMethods) : void 0\n});\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n scope.patchPlugin_ = getPlugin(PluginPatches);\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nvar enterScope = (immer2) => currentScope = createScope(currentScope, immer2);\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n }\n const { patchPlugin_ } = scope;\n if (patchPlugin_) {\n patchPlugin_.generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope\n );\n }\n } else {\n result = finalize(scope, baseDraft);\n }\n maybeFreeze(scope, result, true);\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n const finalValue = handleValue(value, rootScope.handledSet_, rootScope);\n return finalValue;\n }\n if (!isSameScope(state, rootScope)) {\n return value;\n }\n if (!state.modified_) {\n return state.base_;\n }\n if (!state.finalized_) {\n const { callbacks_ } = state;\n if (callbacks_) {\n while (callbacks_.length > 0) {\n const callback = callbacks_.pop();\n callback(rootScope);\n }\n }\n generatePatchesAndFinalize(state, rootScope);\n }\n return state.copy_;\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\nfunction markStateFinalized(state) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n}\nvar isSameScope = (state, rootScope) => state.scope_ === rootScope;\nvar EMPTY_LOCATIONS_RESULT = [];\nfunction updateDraftInParent(parent, draftValue, finalizedValue, originalKey) {\n const parentCopy = latest(parent);\n const parentType = parent.type_;\n if (originalKey !== void 0) {\n const currentValue = get(parentCopy, originalKey, parentType);\n if (currentValue === draftValue) {\n set(parentCopy, originalKey, finalizedValue, parentType);\n return;\n }\n }\n if (!parent.draftLocations_) {\n const draftLocations = parent.draftLocations_ = /* @__PURE__ */ new Map();\n each(parentCopy, (key, value) => {\n if (isDraft(value)) {\n const keys = draftLocations.get(value) || [];\n keys.push(key);\n draftLocations.set(value, keys);\n }\n });\n }\n const locations = parent.draftLocations_.get(draftValue) ?? EMPTY_LOCATIONS_RESULT;\n for (const location of locations) {\n set(parentCopy, location, finalizedValue, parentType);\n }\n}\nfunction registerChildFinalizationCallback(parent, child, key) {\n parent.callbacks_.push(function childCleanup(rootScope) {\n const state = child;\n if (!state || !isSameScope(state, rootScope)) {\n return;\n }\n rootScope.mapSetPlugin_?.fixSetContents(state);\n const finalizedValue = getFinalValue(state);\n updateDraftInParent(parent, state.draft_ ?? state, finalizedValue, key);\n generatePatchesAndFinalize(state, rootScope);\n });\n}\nfunction generatePatchesAndFinalize(state, rootScope) {\n const shouldFinalize = state.modified_ && !state.finalized_ && (state.type_ === 3 /* Set */ || state.type_ === 1 /* Array */ && state.allIndicesReassigned_ || (state.assigned_?.size ?? 0) > 0);\n if (shouldFinalize) {\n const { patchPlugin_ } = rootScope;\n if (patchPlugin_) {\n const basePath = patchPlugin_.getPath(state);\n if (basePath) {\n patchPlugin_.generatePatches_(state, basePath, rootScope);\n }\n }\n markStateFinalized(state);\n }\n}\nfunction handleCrossReference(target, key, value) {\n const { scope_ } = target;\n if (isDraft(value)) {\n const state = value[DRAFT_STATE];\n if (isSameScope(state, scope_)) {\n state.callbacks_.push(function crossReferenceCleanup() {\n prepareCopy(target);\n const finalizedValue = getFinalValue(state);\n updateDraftInParent(target, value, finalizedValue, key);\n });\n }\n } else if (isDraftable(value)) {\n target.callbacks_.push(function nestedDraftCleanup() {\n const targetCopy = latest(target);\n if (target.type_ === 3 /* Set */) {\n if (targetCopy.has(value)) {\n handleValue(value, scope_.handledSet_, scope_);\n }\n } else {\n if (get(targetCopy, key, target.type_) === value) {\n if (scope_.drafts_.length > 1 && (target.assigned_.get(key) ?? false) === true && target.copy_) {\n handleValue(\n get(target.copy_, key, target.type_),\n scope_.handledSet_,\n scope_\n );\n }\n }\n }\n });\n }\n}\nfunction handleValue(target, handledSet, rootScope) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return target;\n }\n if (isDraft(target) || handledSet.has(target) || !isDraftable(target) || isFrozen(target)) {\n return target;\n }\n handledSet.add(target);\n each(target, (key, value) => {\n if (isDraft(value)) {\n const state = value[DRAFT_STATE];\n if (isSameScope(state, rootScope)) {\n const updatedValue = getFinalValue(state);\n set(target, key, updatedValue, target.type_);\n markStateFinalized(state);\n }\n } else if (isDraftable(value)) {\n handleValue(value, handledSet, rootScope);\n }\n });\n return target;\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const baseIsArray = isArray(base);\n const state = {\n type_: baseIsArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n // actually instantiated in `prepareCopy()`\n assigned_: void 0,\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false,\n // `callbacks` actually gets assigned in `createProxy`\n callbacks_: void 0\n };\n let target = state;\n let traps = objectTraps;\n if (baseIsArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return [proxy, state];\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n let arrayPlugin = state.scope_.arrayMethodsPlugin_;\n const isArrayWithStringProp = state.type_ === 1 /* Array */ && typeof prop === \"string\";\n if (isArrayWithStringProp) {\n if (arrayPlugin?.isArrayOperationMethod(prop)) {\n return arrayPlugin.createMethodInterceptor(state, prop);\n }\n }\n const source = latest(state);\n if (!has(source, prop, state.type_)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (isArrayWithStringProp && state.operationMethod && arrayPlugin?.isMutatingArrayMethod(\n state.operationMethod\n ) && isArrayIndex(prop)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n const childKey = state.type_ === 1 /* Array */ ? +prop : prop;\n const childDraft = createProxy(state.scope_, value, state, childKey);\n return state.copy_[childKey] = childDraft;\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_.set(prop, false);\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop, state.type_)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_.set(prop, true);\n handleCrossReference(state, prop, value);\n return true;\n },\n deleteProperty(state, prop) {\n prepareCopy(state);\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_.set(prop, false);\n markChanged(state);\n } else {\n state.assigned_.delete(prop);\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n [WRITABLE]: true,\n [CONFIGURABLE]: state.type_ !== 1 /* Array */ || prop !== \"length\",\n [ENUMERABLE]: desc[ENUMERABLE],\n [VALUE]: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\nfor (let key in objectTraps) {\n let fn = objectTraps[key];\n arrayTraps[key] = function() {\n const args = arguments;\n args[0] = args[0][0];\n return fn.apply(this, args);\n };\n}\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? VALUE in desc ? desc[VALUE] : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n this.useStrictIteration_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (isFunction(base) && !isFunction(recipe)) {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (!isFunction(recipe))\n die(6);\n if (patchListener !== void 0 && !isFunction(patchListener))\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(scope, base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || !isObjectish(base)) {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(PluginPatches).generateReplacementPatches_(base, result, {\n patches_: p,\n inversePatches_: ip\n });\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (isFunction(base)) {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (isBoolean(config?.autoFreeze))\n this.setAutoFreeze(config.autoFreeze);\n if (isBoolean(config?.useStrictShallowCopy))\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n if (isBoolean(config?.useStrictIteration))\n this.setUseStrictIteration(config.useStrictIteration);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(scope, base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n /**\n * Pass false to use faster iteration that skips non-enumerable properties\n * but still handles symbols for compatibility.\n *\n * By default, strict iteration is enabled (includes all own properties).\n */\n setUseStrictIteration(value) {\n this.useStrictIteration_ = value;\n }\n shouldUseStrictIteration() {\n return this.useStrictIteration_;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(PluginPatches).applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(rootScope, value, parent, key) {\n const [draft, state] = isMap(value) ? getPlugin(PluginMapSet).proxyMap_(value, parent) : isSet(value) ? getPlugin(PluginMapSet).proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent?.scope_ ?? getCurrentScope();\n scope.drafts_.push(draft);\n state.callbacks_ = parent?.callbacks_ ?? [];\n state.key_ = key;\n if (parent && key !== void 0) {\n registerChildFinalizationCallback(parent, state, key);\n } else {\n state.callbacks_.push(function rootDraftCleanup(rootScope2) {\n rootScope2.mapSetPlugin_?.fixSetContents(state);\n const { patchPlugin_ } = rootScope2;\n if (state.modified_ && patchPlugin_) {\n patchPlugin_.generatePatches_(state, [], rootScope2);\n }\n });\n }\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n let strict = true;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n strict = state.scope_.immer_.shouldUseStrictIteration();\n } else {\n copy = shallowCopy(value, true);\n }\n each(\n copy,\n (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n },\n strict\n );\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n function getPath(state, path = []) {\n if (state.key_ !== void 0) {\n const parentCopy = state.parent_.copy_ ?? state.parent_.base_;\n const proxyDraft = getProxyDraft(get(parentCopy, state.key_));\n const valueAtKey = get(parentCopy, state.key_);\n if (valueAtKey === void 0) {\n return null;\n }\n if (valueAtKey !== state.draft_ && valueAtKey !== state.base_ && valueAtKey !== state.copy_) {\n return null;\n }\n if (proxyDraft != null && proxyDraft.base_ !== state.base_) {\n return null;\n }\n const isSet2 = state.parent_.type_ === 3 /* Set */;\n let key;\n if (isSet2) {\n const setParent = state.parent_;\n key = Array.from(setParent.drafts_.keys()).indexOf(state.key_);\n } else {\n key = state.key_;\n }\n if (!(isSet2 && parentCopy.size > key || has(parentCopy, key))) {\n return null;\n }\n path.push(key);\n }\n if (state.parent_) {\n return getPath(state.parent_, path);\n }\n path.reverse();\n try {\n resolvePath(state.copy_, path);\n } catch (e) {\n return null;\n }\n return path;\n }\n function resolvePath(base, path) {\n let current2 = base;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n current2 = get(current2, key);\n if (!isObjectish(current2) || current2 === null) {\n throw new Error(`Cannot resolve path at '${path.join(\"/\")}'`);\n }\n }\n return current2;\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, scope) {\n if (state.scope_.processedForPatches_.has(state)) {\n return;\n }\n state.scope_.processedForPatches_.add(state);\n const { patches_, inversePatches_ } = scope;\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches_,\n inversePatches_\n );\n case 1 /* Array */:\n return generateArrayPatches(\n state,\n basePath,\n patches_,\n inversePatches_\n );\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches_,\n inversePatches_\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n const allReassigned = state.allIndicesReassigned_ === true;\n for (let i = 0; i < base_.length; i++) {\n const copiedItem = copy_[i];\n const baseItem = base_[i];\n const isAssigned = allReassigned || assigned_?.get(i.toString());\n if (isAssigned && copiedItem !== baseItem) {\n const childState = copiedItem?.[DRAFT_STATE];\n if (childState && childState.modified_) {\n continue;\n }\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copiedItem)\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(baseItem)\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_, type_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key, type_);\n const value = get(copy_, key, type_);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(\n op === REMOVE ? { op, path } : { op, path, value: clonePatchValueIfNeeded(value) }\n );\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, scope) {\n const { patches_, inversePatches_ } = scope;\n patches_.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches_.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === CONSTRUCTOR))\n die(errorOffset + 3);\n if (isFunction(base) && p === PROTOTYPE)\n die(errorOffset + 3);\n base = get(base, p);\n if (!isObjectish(base))\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(PluginPatches, {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_,\n getPath\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false,\n callbacks_: []\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n handleCrossReference(state, key, value);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(state.scope_, value, state, key);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n const map = new DraftMap(target, parent);\n return [map, map[DRAFT_STATE]];\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false,\n assigned_: void 0,\n callbacks_: []\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n handleCrossReference(state, value, value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n const set2 = new DraftSet(target, parent);\n return [set2, set2[DRAFT_STATE]];\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(state.scope_, value, state, value);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n function fixSetContents(target) {\n if (target.type_ === 3 /* Set */ && target.copy_) {\n const copy = new Set(target.copy_);\n target.copy_.clear();\n copy.forEach((value) => {\n target.copy_.add(getValue(value));\n });\n }\n }\n loadPlugin(PluginMapSet, { proxyMap_, proxySet_, fixSetContents });\n}\n\n// src/plugins/arrayMethods.ts\nfunction enableArrayMethods() {\n const SHIFTING_METHODS = /* @__PURE__ */ new Set([\"shift\", \"unshift\"]);\n const QUEUE_METHODS = /* @__PURE__ */ new Set([\"push\", \"pop\"]);\n const RESULT_RETURNING_METHODS = /* @__PURE__ */ new Set([\n ...QUEUE_METHODS,\n ...SHIFTING_METHODS\n ]);\n const REORDERING_METHODS = /* @__PURE__ */ new Set([\"reverse\", \"sort\"]);\n const MUTATING_METHODS = /* @__PURE__ */ new Set([\n ...RESULT_RETURNING_METHODS,\n ...REORDERING_METHODS,\n \"splice\"\n ]);\n const FIND_METHODS = /* @__PURE__ */ new Set([\"find\", \"findLast\"]);\n const NON_MUTATING_METHODS = /* @__PURE__ */ new Set([\n \"filter\",\n \"slice\",\n \"concat\",\n \"flat\",\n ...FIND_METHODS,\n \"findIndex\",\n \"findLastIndex\",\n \"some\",\n \"every\",\n \"indexOf\",\n \"lastIndexOf\",\n \"includes\",\n \"join\",\n \"toString\",\n \"toLocaleString\"\n ]);\n function isMutatingArrayMethod(method) {\n return MUTATING_METHODS.has(method);\n }\n function isNonMutatingArrayMethod(method) {\n return NON_MUTATING_METHODS.has(method);\n }\n function isArrayOperationMethod(method) {\n return isMutatingArrayMethod(method) || isNonMutatingArrayMethod(method);\n }\n function enterOperation(state, method) {\n state.operationMethod = method;\n }\n function exitOperation(state) {\n state.operationMethod = void 0;\n }\n function executeArrayMethod(state, operation, markLength = true) {\n prepareCopy(state);\n const result = operation();\n markChanged(state);\n if (markLength)\n state.assigned_.set(\"length\", true);\n return result;\n }\n function markAllIndicesReassigned(state) {\n state.allIndicesReassigned_ = true;\n }\n function normalizeSliceIndex(index, length) {\n if (index < 0) {\n return Math.max(length + index, 0);\n }\n return Math.min(index, length);\n }\n function handleInsertedValues(state, startIndex, values) {\n for (let i = 0; i < values.length; i++) {\n const index = startIndex + i;\n state.assigned_.set(index, true);\n handleCrossReference(state, index, values[i]);\n }\n }\n function handleSimpleOperation(state, method, args) {\n return executeArrayMethod(state, () => {\n const lengthBefore = state.copy_.length;\n const result = state.copy_[method](...args);\n if (SHIFTING_METHODS.has(method)) {\n markAllIndicesReassigned(state);\n }\n if (method === \"push\" && args.length > 0) {\n handleInsertedValues(state, lengthBefore, args);\n } else if (method === \"unshift\" && args.length > 0) {\n handleInsertedValues(state, 0, args);\n }\n return RESULT_RETURNING_METHODS.has(method) ? result : state.draft_;\n });\n }\n function handleReorderingOperation(state, method, args) {\n return executeArrayMethod(\n state,\n () => {\n ;\n state.copy_[method](...args);\n markAllIndicesReassigned(state);\n return state.draft_;\n },\n false\n );\n }\n function createMethodInterceptor(state, originalMethod) {\n return function interceptedMethod(...args) {\n const method = originalMethod;\n enterOperation(state, method);\n try {\n if (isMutatingArrayMethod(method)) {\n if (RESULT_RETURNING_METHODS.has(method)) {\n return handleSimpleOperation(state, method, args);\n }\n if (REORDERING_METHODS.has(method)) {\n return handleReorderingOperation(state, method, args);\n }\n if (method === \"splice\") {\n const res = executeArrayMethod(\n state,\n () => state.copy_.splice(...args)\n );\n markAllIndicesReassigned(state);\n if (args.length > 2) {\n const startIndex = normalizeSliceIndex(\n args[0] ?? 0,\n state.copy_.length\n );\n handleInsertedValues(state, startIndex, args.slice(2));\n }\n return res;\n }\n } else {\n return handleNonMutatingOperation(state, method, args);\n }\n } finally {\n exitOperation(state);\n }\n };\n }\n function handleNonMutatingOperation(state, method, args) {\n const source = latest(state);\n if (method === \"filter\") {\n const predicate = args[0];\n const result = [];\n for (let i = 0; i < source.length; i++) {\n if (predicate(source[i], i, source)) {\n result.push(state.draft_[i]);\n }\n }\n return result;\n }\n if (FIND_METHODS.has(method)) {\n const predicate = args[0];\n const isForward = method === \"find\";\n const step = isForward ? 1 : -1;\n const start = isForward ? 0 : source.length - 1;\n for (let i = start; i >= 0 && i < source.length; i += step) {\n if (predicate(source[i], i, source)) {\n return state.draft_[i];\n }\n }\n return void 0;\n }\n if (method === \"slice\") {\n const rawStart = args[0] ?? 0;\n const rawEnd = args[1] ?? source.length;\n const start = normalizeSliceIndex(rawStart, source.length);\n const end = normalizeSliceIndex(rawEnd, source.length);\n const result = [];\n for (let i = start; i < end; i++) {\n result.push(state.draft_[i]);\n }\n return result;\n }\n return source[method](...args);\n }\n loadPlugin(PluginArrayMethods, {\n createMethodInterceptor,\n isArrayOperationMethod,\n isMutatingArrayMethod\n });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = /* @__PURE__ */ immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = /* @__PURE__ */ immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = /* @__PURE__ */ immer.setUseStrictShallowCopy.bind(\n immer\n);\nvar setUseStrictIteration = /* @__PURE__ */ immer.setUseStrictIteration.bind(\n immer\n);\nvar applyPatches = /* @__PURE__ */ immer.applyPatches.bind(immer);\nvar createDraft = /* @__PURE__ */ immer.createDraft.bind(immer);\nvar finishDraft = /* @__PURE__ */ immer.finishDraft.bind(immer);\nvar castDraft = (value) => value;\nvar castImmutable = (value) => value;\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableArrayMethods,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictIteration,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","import { filter } from 'rxjs/operators';\n/**\n * RxJS operator that filters an action stream to only emit actions matching\n * one or more specified action types.\n *\n * @template TAction - The union of possible action types in the stream.\n * @template TType - The specific action type constant(s) to filter for.\n * @param types - One or more action type strings to filter by.\n * @returns An `OperatorFunction` that narrows the stream to matching actions.\n *\n * @example\n * ```ts\n * import { filterAction } from '@equinor/fusion-observable/operators';\n *\n * action$.pipe(\n * filterAction('increment', 'decrement'),\n * ).subscribe((action) => {\n * // action is narrowed to increment | decrement\n * });\n * ```\n */\nexport const filterAction = (...types) => filter((x) => types.includes(x.type));\nexport default filterAction;\n//# sourceMappingURL=filter-action.js.map","import { asyncScheduler, BehaviorSubject, EMPTY, from, Observable, Subject, } from 'rxjs';\nimport { catchError, distinctUntilChanged, filter, map, mergeMap, observeOn, scan, } from 'rxjs/operators';\nimport { filterAction } from './operators/index.js';\n/**\n * A specialized Observable that maintains internal state mutated by dispatching actions.\n *\n * Actions are processed sequentially by a reducer function to produce new state values.\n * Extends `Observable` so subscribers react to state changes over time.\n *\n * Inspired by Redux-style state management but built on top of RxJS, `FlowSubject`\n * combines a `BehaviorSubject` for state with a `Subject` for actions, providing\n * a reactive, observable state container.\n *\n * @template S - The state type managed by this subject.\n * @template A - The action type dispatched to this subject.\n *\n * @example\n * ```ts\n * import { FlowSubject, createReducer } from '@equinor/fusion-observable';\n *\n * type State = { count: number };\n * type Action = { type: 'increment' } | { type: 'decrement' };\n *\n * const reducer = createReducer<State, Action>({ count: 0 }, (builder) =>\n * builder\n * .addCase('increment', (state) => { state.count += 1; })\n * .addCase('decrement', (state) => { state.count -= 1; }),\n * );\n *\n * const subject = new FlowSubject(reducer);\n * subject.subscribe((state) => console.log(state.count));\n * subject.next({ type: 'increment' }); // logs: 1\n * ```\n */\nexport class FlowSubject extends Observable {\n /**\n * The internal subject for actions.\n * @private\n */\n #action = new Subject();\n /**\n * The internal behavior subject for state management.\n * @private\n */\n #state;\n /**\n * Observable stream of actions dispatched to the subject.\n * @returns An observable of dispatched actions.\n */\n get action$() {\n return this.#action.asObservable();\n }\n /**\n * The current value of state.\n * @returns The current state value.\n */\n get value() {\n return this.#state.value;\n }\n /**\n * Flag to indicate if the observable is closed.\n * @returns `true` if both the state and action subjects are closed.\n */\n get closed() {\n return this.#state.closed || this.#action.closed;\n }\n /**\n * Initializes a new instance of the FlowSubject class.\n *\n * @param reducer A reducer with an initial state or a reducer function.\n * @param initialState The initial state of the subject.\n */\n constructor(reducer, initialState) {\n super((subscriber) => {\n return this.#state.subscribe(subscriber);\n });\n const initial = 'getInitialState' in reducer ? reducer.getInitialState() : initialState;\n this.#state = new BehaviorSubject(initial);\n // Reduce dispatched actions into state, skipping emissions that produce an unchanged value\n this.#action.pipe(scan(reducer, initial), distinctUntilChanged()).subscribe(this.#state);\n this.reset = () => this.#state.next(initial);\n }\n /**\n * Resets the state to the initial value.\n */\n reset;\n /**\n * Dispatches an action to the subject.\n *\n * @param action The action to dispatch.\n */\n next(action) {\n this.#action.next(action);\n }\n /**\n * Selects a derived state from the observable state and emits only when the selected state changes.\n *\n * @template T - The derived state type returned by the selector.\n * @param selector - A function that takes the current state and returns a derived state.\n * @param comparator - An optional function that compares the previous and current derived states to determine if a change has occurred.\n * @returns An observable that emits the derived state whenever it changes.\n */\n select(selector, comparator) {\n // Derive and de-duplicate the selected value from the state stream\n return this.#state.pipe(map(selector), distinctUntilChanged(comparator));\n }\n /**\n * Adds an effect that listens for actions and performs side effects.\n *\n * @template TType - The action type(s) to listen for.\n * @param actionTypeOrFn The type of action to listen for, an array of action types, or the effect function itself.\n * @param fn The effect function to execute when the action is dispatched, if the first parameter is an action type.\n * @returns A subscription to the effect.\n */\n addEffect(actionTypeOrFn, fn) {\n // Narrow the action stream to the requested action type(s), or use it as-is when a plain effect function was given\n const action$ = typeof actionTypeOrFn === 'function'\n ? this.action$\n : Array.isArray(actionTypeOrFn)\n ? this.action$.pipe(filterAction(...actionTypeOrFn))\n : this.action$.pipe(filterAction(actionTypeOrFn));\n const mapper = (fn ? fn : actionTypeOrFn);\n // Run the effect for each matching action, then filter and reschedule any resulting action\n return action$\n .pipe(mergeMap((action) => from(new Promise((resolve, reject) => {\n try {\n resolve(mapper(action, this.value));\n }\n catch (err) {\n reject(err);\n }\n }))\n // Swallow effect errors so a single failing effect doesn't tear down the subscription\n .pipe(catchError((err) => {\n console.warn('unhandled effect', err);\n return EMPTY;\n }))), filter((x) => !!x), observeOn(asyncScheduler))\n .subscribe(this.#action);\n }\n /**\n * @deprecated Use {@link FlowSubject.addFlow} instead.\n *\n * @param fn - The flow function to execute.\n * @returns A subscription to the flow.\n */\n addEpic(fn) {\n return this.addFlow(fn);\n }\n /**\n * Adds a flow (epic-style) that transforms the action stream and optionally\n * reads state, then emits new actions back into the subject.\n *\n * Flows receive the full `action$` stream and the state observable, and must\n * return an `Observable<A>`. This is useful for complex async orchestration.\n *\n * @param fn - The flow function that receives `(action$, state$)` and returns an action observable.\n * @returns A subscription to the flow. Unsubscribe to remove the flow.\n * @throws {TypeError} If the flow function does not return an observable.\n *\n * @example\n * ```ts\n * subject.addFlow((action$) =>\n * action$.pipe(\n * filterAction('fetchData'),\n * switchMap((action) =>\n * fetchApi(action.payload).pipe(\n * map((data) => ({ type: 'fetchSuccess', payload: data })),\n * ),\n * ),\n * ),\n * );\n * ```\n */\n addFlow(fn) {\n const epic$ = fn(this.action$, this);\n // Fail fast if the flow function forgot to return an observable\n if (!epic$) {\n throw new TypeError(`addEpic: one of the provided effects \"${fn.name || '<anonymous>'}\" does not return a stream. Double check you're not missing a return statement!`);\n }\n // Log and swallow flow errors so a single failing flow doesn't tear down the subject\n return epic$\n .pipe(catchError((err) => {\n console.trace('unhandled exception, epic closed!', err);\n return EMPTY;\n }), observeOn(asyncScheduler))\n .subscribe(this.#action);\n }\n /**\n * Tears down the subject by unsubscribing both the action and state subjects.\n *\n * After calling this method, the subject is no longer usable.\n */\n unsubscribe() {\n this.#action.unsubscribe();\n this.#state.unsubscribe();\n }\n /**\n * Completes both the action and state subjects, signalling to all\n * subscribers that no further values will be emitted.\n */\n complete() {\n this.#action.complete();\n this.#state.complete();\n }\n /**\n * Returns a plain `Observable` of the state, hiding the subject's\n * `next`, `complete`, and other mutation methods.\n *\n * @returns A read-only observable of the state.\n */\n asObservable() {\n return this.#state.asObservable();\n }\n}\nexport default FlowSubject;\n//# sourceMappingURL=FlowSubject.js.map","/**\n * Internal helper utilities for constructing and inspecting Redux-style\n * lifecycle action types (`::request`, `::success`, `::failure`).\n */\n/**\n * Separates an action's base type from its lifecycle suffix.\n */\nexport const actionSuffixDivider = '::';\n/**\n * Creates a matcher for action types ending with the requested suffix.\n *\n * @param suffix - The action suffix to match.\n * @returns A regular expression that matches the suffix at the end of an action type.\n */\nexport const matchActionSuffix = (suffix) => new RegExp(`${actionSuffixDivider}${suffix}$`);\n/**\n * Extracts the base type from an action type string.\n *\n * @template T - The action type string.\n * @param type - The action type string to extract the base type from.\n * @returns The base type of the action type string, or `never` if the input string does not match the expected format.\n */\nexport function getBaseType(type) {\n return type.replace(matchActionSuffix('\\\\w+$'), '');\n}\n/**\n * Returns the action type of an action creator generated by `createAction`.\n *\n * @template T - The action type string.\n * @param actionCreator - The action creator whose action type to get.\n * @returns The action type used by the action creator.\n */\nexport function getType(actionCreator) {\n return `${actionCreator}`;\n}\n//# sourceMappingURL=utils.js.map","// biome-ignore-all lint/suspicious/noExplicitAny: ported redux-toolkit conditional-type dispatch logic (e.g. IsAny<T, ...>) requires real `any`, not `unknown`, to distinguish the two at the type level\n// biome-ignore-all lint/suspicious/noConfusingVoidType: `void` here is the ported redux-toolkit sentinel meaning \"no payload type provided\", distinct from `undefined` (see IfVoid in ts-helpers.ts) — replacing with `undefined` would change dispatch semantics\n/**\n * taken from https://github.com/reduxjs/redux-toolkit/tree/master/packages/toolkit/src\n */\n/**\n * Creates the runtime action creator implementation shared by the overloads above.\n *\n * @param type - The action type to assign to created actions.\n * @param prepareAction - An optional function that prepares payload, metadata, and errors.\n * @returns A callable action creator with type and matching metadata.\n * @throws {Error} When the prepare callback does not return an action object.\n */\nexport function createAction(type, prepareAction) {\n function actionCreator(...args) {\n // Use the prepare callback when the caller needs custom payload construction.\n if (prepareAction) {\n const prepared = prepareAction(...args);\n // Reject invalid prepare callbacks before reading their action fields.\n if (!prepared) {\n throw new Error('prepareAction did not return an object');\n }\n // Merge optional metadata and error fields into the prepared action.\n return {\n type,\n payload: prepared.payload,\n ...('meta' in prepared && { meta: prepared.meta }),\n ...('error' in prepared && { error: prepared.error }),\n };\n }\n return { type, payload: args[0] };\n }\n actionCreator.toString = () => `${type}`;\n actionCreator.type = type;\n actionCreator.match = (action) => action.type === type;\n return actionCreator;\n}\nexport { actionSuffixDivider, matchActionSuffix, getBaseType, getType } from './utils.js';\n//# sourceMappingURL=create-action.js.map","// biome-ignore-all lint/suspicious/noExplicitAny: generic constraints mirror create-action.ts's ported redux-toolkit PrepareAction<any> dispatch pattern\nimport { actionSuffixDivider, createAction } from './create-action.js';\nimport { isActionWithSuffix, isCompleteAction, isFailureAction, isRequestAction, isSuccessAction, } from './predicates.js';\n/**\n * Creates the runtime async action implementation shared by the overloads above.\n *\n * @param type - The base action type string.\n * @param request - A prepare function for the request action payload.\n * @param success - A prepare function for the success action payload.\n * @param failure - An optional prepare function for the failure action payload.\n * @returns An action creator with request, success, and optional failure actions.\n */\nexport function createAsyncAction(type, request, success, failure) {\n const action = createAction([type, 'request'].join(actionSuffixDivider), request);\n // Attach the success action only when the caller supplied its prepare function.\n if (success) {\n // Add the success action while preserving the request creator's identity.\n Object.assign(action, {\n success: createAction([type, 'success'].join(actionSuffixDivider), success),\n });\n }\n // Attach the failure action only for async workflows that support failure results.\n if (failure) {\n // Add the failure action alongside the existing request and success actions.\n Object.assign(action, {\n failure: createAction([type, 'failure'].join(actionSuffixDivider), failure),\n });\n }\n // `action` is progressively mutated with `success`/`failure` properties above, so its static\n // type can't reflect the final shape declared by this function's overload signatures.\n return action;\n}\nexport { isActionWithSuffix, isCompleteAction, isFailureAction, isRequestAction, isSuccessAction };\n//# sourceMappingURL=create-async-action.js.map","import { produce as createNextState, isDraft, isDraftable } from 'immer';\nfunction freezeDraftable(val) {\n return isDraftable(val) ? createNextState(val, () => { }) : val;\n}\nfunction isStateFunction(x) {\n return typeof x === 'function';\n}\n/** @inheritdoc */\nexport function createReducer(initialState, mapOrBuilderCallback) {\n const [actionsMap, finalActionMatchers, finalDefaultCaseReducer] = executeReducerBuilderCallback(mapOrBuilderCallback);\n // Ensure the initial state gets frozen either way (if draftable)\n let getInitialState;\n // A lazy initializer must be invoked before its result can be frozen\n if (isStateFunction(initialState)) {\n getInitialState = () => freezeDraftable(initialState());\n }\n else {\n const frozenInitialState = freezeDraftable(initialState);\n getInitialState = () => frozenInitialState;\n }\n function reducer(state, action) {\n let caseReducers = [\n actionsMap[action.type],\n ...finalActionMatchers\n // Keep only matchers whose predicate matches this action\n .filter(({ matcher }) => matcher(action))\n // Extract just the matched reducers\n .map(({ reducer }) => reducer),\n ];\n // Fall back to the default case reducer when nothing else matched this action\n // Check whether any slot actually holds a reducer\n const hasMatchedReducer = caseReducers.filter((cr) => !!cr).length > 0;\n // Only substitute the default case when no case/matcher reducer actually matched\n if (finalDefaultCaseReducer && !hasMatchedReducer) {\n caseReducers = [finalDefaultCaseReducer];\n }\n // Run each matched case reducer against the previous state, producing the next state\n return caseReducers.reduce((previousState, caseReducer) => {\n // Only transform state when a case reducer was matched for this slot\n if (caseReducer) {\n // Reuse an existing draft when already inside a `createNextState` call\n if (isDraft(previousState)) {\n // If it's already a draft, we must already be inside a `createNextState` call,\n // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\n // inside an existing draft. It's safe to just pass the draft to the mutator.\n const draft = previousState; // We can assume this is already a draft\n const result = caseReducer(draft, action);\n // Treat an undefined result as \"no change\" rather than clearing the state\n if (result === undefined) {\n return previousState;\n }\n return result;\n }\n else if (!isDraftable(previousState)) {\n // If state is not draftable (ex: a primitive, such as 0), we want to directly\n // return the caseReducer func and not wrap it with produce.\n const result = caseReducer(previousState, action);\n // Treat an undefined result as \"no change\", unless there's no previous state to fall back to\n if (result === undefined) {\n // A `null` previous state has nothing to fall back to, so undefined is legitimately \"no change\"\n if (previousState === null) {\n return previousState;\n }\n throw Error('A case reducer on a non-draftable value must not return undefined');\n }\n return result;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n // createNextState() produces an Immutable<Draft<S>> rather\n // than an Immutable<S>, and TypeScript cannot find out how to reconcile\n // these two types.\n return createNextState(previousState, (draft) => {\n return caseReducer(draft, action);\n });\n }\n }\n return previousState;\n }, state ?? getInitialState());\n }\n reducer.getInitialState = getInitialState;\n return reducer;\n}\n/**\n * Executes a reducer builder callback against a fresh {@link ActionReducerMapBuilder},\n * collecting the case reducers, matchers, and default case it registered.\n *\n * @template TState - The reducer's state type.\n * @template TAction - The union of actions the reducer handles.\n * @param builderCallback - The callback passed to {@link createReducer} that registers cases via the builder.\n * @returns A tuple of the action-to-reducer map, matcher list, and optional default case reducer.\n */\nfunction executeReducerBuilderCallback(builderCallback) {\n const actionsMap = {};\n const actionMatchers = [];\n let defaultCaseReducer;\n const builder = {\n addCase(typeOrActionCreator, reducer) {\n // Skip these dev-only ordering checks in production builds to avoid the extra overhead\n if (process.env.NODE_ENV !== 'production') {\n /*\n * to keep the definition by the user in line with actual behavior,\n * we enforce `addCase` to always be called before calling `addMatcher`\n * as matching cases take precedence over matchers\n */\n if (actionMatchers.length > 0) {\n throw new Error('`builder.addCase` should only be called before calling `builder.addMatcher`');\n }\n // A default case must always be registered last, after every specific case\n if (defaultCaseReducer) {\n throw new Error('`builder.addCase` should only be called before calling `builder.addDefaultCase`');\n }\n }\n const type = typeof typeOrActionCreator === 'string' ? typeOrActionCreator : typeOrActionCreator.type;\n // Each action type may only be handled by a single case reducer\n if (type in actionsMap) {\n throw new Error('addCase cannot be called with two reducers for the same action type');\n }\n actionsMap[type] = reducer;\n return builder;\n },\n addMatcher(matcher, reducer) {\n // Skip this dev-only ordering check in production builds to avoid the extra overhead\n if (process.env.NODE_ENV !== 'production') {\n // A default case must always be registered last, after every matcher\n if (defaultCaseReducer) {\n throw new Error('`builder.addMatcher` should only be called before calling `builder.addDefaultCase`');\n }\n }\n actionMatchers.push({ matcher, reducer });\n return builder;\n },\n addDefaultCase(reducer) {\n // Skip this dev-only uniqueness check in production builds to avoid the extra overhead\n if (process.env.NODE_ENV !== 'production') {\n // Only one default case reducer may be registered per builder\n if (defaultCaseReducer) {\n throw new Error('`builder.addDefaultCase` can only be called once');\n }\n }\n defaultCaseReducer = reducer;\n return builder;\n },\n };\n builderCallback(builder);\n return [\n actionsMap,\n actionMatchers,\n defaultCaseReducer,\n ];\n}\n//# sourceMappingURL=create-reducer.js.map","import { isObservable } from 'rxjs';\n/** @inheritdoc */\nexport function isObservableInput(\n// biome-ignore lint/suspicious/noExplicitAny: Should allow any input type\ninput) {\n // Check for null or undefined\n if (input === null || input === undefined) {\n return false;\n }\n // Check for primitive string values (not ObservableInput)\n if (typeof input === 'string') {\n return false;\n }\n // Check if input is an RxJS Observable\n if (isObservable(input)) {\n return true;\n }\n // Check for InteropObservable (has Symbol.observable)\n if (typeof input[Symbol.observable] === 'function') {\n return true; // InteropObservable<T>\n }\n // Check for AsyncIterable (has Symbol.asyncIterator)\n if (typeof input[Symbol.asyncIterator] === 'function') {\n return true; // AsyncIterable<T>\n }\n // Check for PromiseLike (has then function)\n if (typeof input.then === 'function') {\n return true; // PromiseLike<T>\n }\n // Check for ArrayLike (object with length property)\n if (typeof input === 'object' && typeof input.length === 'number') {\n return true; // ArrayLike<T>\n }\n // Check for Iterable (has Symbol.iterator)\n if (typeof input[Symbol.iterator] === 'function') {\n return true; // Iterable<T>\n }\n // Check for ReadableStreamLike (has getReader function)\n if (typeof input.getReader === 'function') {\n return true; // ReadableStreamLike<T>\n }\n return false;\n}\n//# sourceMappingURL=is-observable-input.js.map","import { from, of } from 'rxjs';\nimport { isObservableInput } from './is-observable-input.js';\n/**\n * Converts a dynamic input (value, function, or ObservableInput) to an RxJS Observable.\n *\n * Handles the following cases:\n * - If the input is an ObservableInput (Observable, Promise, Iterable, etc), it is converted using `from()`.\n * - If the input is a function, it is called with the provided arguments and the result is wrapped with `of()`.\n * - If the input is a plain object or primitive, it is wrapped with `of()`.\n *\n * @template T The value type to be emitted by the Observable.\n * @template TArgs The argument type(s) for the function variant.\n * @param input The dynamic input value to convert. Can be a value, function, or ObservableInput.\n * @param args Arguments to pass if the input is a function.\n * @returns An Observable emitting the value(s) from the input.\n * @throws If the input is not a supported type.\n *\n * @example\n * // ObservableInput\n * toObservable([1, 2, 3]).subscribe(x => console.log(x)); // 1, 2, 3\n * toObservable(Promise.resolve(42)).subscribe(x => console.log(x)); // 42\n *\n * // Object\n * toObservable({ key: 'value' }).subscribe(x => console.log(x)); // { key: 'value' }\n *\n * // Function\n * const fn = (x: number) => x * 2;\n * toObservable(fn, 5).subscribe(x => console.log(x)); // 10\n *\n * // Primitive\n * toObservable(42).subscribe(x => console.log(x)); // 42\n */\nexport function toObservable(input, ...args) {\n // If input is already an ObservableInput (Observable, Promise, Iterable, etc), use RxJS 'from' to convert it\n if (isObservableInput(input)) {\n return from(input);\n }\n // If input is a function, call it with the provided arguments and wrap the result with 'of'\n if (typeof input === 'function') {\n const fn = input;\n const result = fn(...args);\n return isObservableInput(result) ? from(result) : of(result);\n }\n // Otherwise, treat input as a plain value or object and wrap it with 'of'\n return of(input);\n}\n//# sourceMappingURL=to-observable.js.map","import deepmerge from 'deepmerge/index.js';\n/**\n * Merges two `MetaData` objects into a single object.\n *\n * If both `source` and `target` are undefined, returns `undefined`.\n * Otherwise, performs a deep merge of the two objects, with properties from `target` overriding those in `source`.\n *\n * @param source - The base `MetaData` object to merge from.\n * @param target - The `MetaData` object whose properties will override those in `source`.\n * @returns The merged `MetaData` object, or `undefined` if both inputs are undefined.\n */\nexport const mergeMetadata = (source, target) => {\n // Nothing to merge when neither side has metadata\n if (!source && !target) {\n return undefined;\n }\n return deepmerge(source ?? {}, target ?? {});\n};\n/**\n * Merges two partial `TelemetryItem` objects into a single `TelemetryItem`.\n *\n * @remarks\n * - Throws an error if either `target` or `source` is not defined.\n * - Throws an error if both `target.type` and `source.type` are defined and do not match.\n * - Combines the `scope` arrays from both objects, removing duplicates.\n * - Merges the `metadata` properties using the `mergeMetadata` function.\n * - Properties from `source` override those in `target` where applicable.\n *\n * @param target - The base partial `TelemetryItem` to merge into.\n * @param source - The partial `TelemetryItem` whose properties will override those in `target`.\n * @returns The merged `TelemetryItem`.\n * @throws {Error} If either argument is undefined or if telemetry item types mismatch.\n *\n * @internal\n */\n// Deliberately co-located with `mergeMetadata` above\n// fusion-lint-disable-next-line single-export-per-file\nexport const mergeTelemetryItem = (target, source) => {\n // Both arguments are required to produce a valid merged telemetry item\n if (!target || !source) {\n throw new Error('Both target and source must be defined for merging telemetry items.');\n }\n // A type mismatch would produce an inconsistent telemetry item, so fail fast\n if (target.type && source.type && target.type !== source.type) {\n throw new Error('Mismatched telemetry item types.');\n }\n // Combine both scopes and de-duplicate via a Set before flattening back to an array\n const scope = [...new Set([...(target.scope ?? []), ...(source.scope ?? [])])];\n const metadata = mergeMetadata(target.metadata, source.metadata);\n // Source properties take precedence over target, with scope/metadata merged separately above\n return { ...target, ...source, scope, metadata };\n};\n//# sourceMappingURL=merge-telemetry-item.js.map","import { from } from 'rxjs';\nimport { concatMap, defaultIfEmpty, filter, last, map, mergeMap, scan, shareReplay, } from 'rxjs/operators';\nimport { BaseConfigBuilder, } from '@equinor/fusion-framework-module';\nimport { toObservable } from '@equinor/fusion-observable';\nimport { mergeMetadata } from './utils/merge-telemetry-item.js';\n/**\n * Configures telemetry settings for the application.\n *\n * The `TelemetryConfigurator` class extends `BaseConfigBuilder` to provide a fluent API for\n * setting up telemetry adapters, metadata, default scopes, and parent providers.\n *\n * @example\n * ```typescript\n * const configurator = new TelemetryConfigurator()\n * .setAdapter(myAdapter)\n * .setMetadata({ app: 'my-app' })\n * .setDefaultScope(['user', 'session'])\n * .setParent(parentProvider);\n * ```\n *\n * @remarks\n * - Adapters are managed internally and can be set using `setAdapter`.\n * - Metadata, default scope, and parent provider can be configured via their respective methods.\n * - Filters should be applied directly to individual adapters when they are created.\n * - All setter methods return `this` for method chaining.\n *\n * @see BaseConfigBuilder\n * @see ITelemetryConfigurator\n */\nexport class TelemetryConfigurator extends BaseConfigBuilder {\n #adaptersCallbacks = {};\n #metadata = [];\n /**\n * Creates a new `TelemetryConfigurator` and wires up the async adapter\n * resolution and metadata merging pipelines used by `createConfigAsync`.\n */\n constructor() {\n super();\n // Configure async adapter resolution using mergeMap to handle Promise/Observable adapter factories\n this._set('adapters', (args) => {\n // Resolve every adapter factory concurrently and merge them into a single record\n return from(Object.entries(this.#adaptersCallbacks)).pipe(mergeMap(([identifier, adapterFn]) => \n // Drop adapters whose factory resolved to a falsy value\n from(adapterFn(args)).pipe(filter((adapter) => !!adapter), map((adapter) => [identifier, adapter]))), scan((acc, [identifier, adapter]) => {\n acc[identifier] = adapter;\n return acc;\n }, {}), defaultIfEmpty({}), shareReplay({ bufferSize: 1, refCount: true }));\n });\n // Configure metadata merging - handles multiple sync/async metadata sources\n this._set('metadata', async () => {\n const metadataItems = this.#metadata;\n return (...args) => \n // Merge every registered metadata source in order, emitting the final accumulated result\n from(metadataItems).pipe(concatMap((metadata) => toObservable(metadata, ...args)), scan((acc, current) => mergeMetadata(acc, current) ?? {}, {}), last(), shareReplay({ bufferSize: 1, refCount: true }));\n });\n }\n /**\n * Registers a telemetry adapter with the configurator.\n *\n * @param identifier - The key used to register and later resolve this adapter.\n * @param adapter - The telemetry adapter to be added. The adapter's identifier is used as the key.\n * @returns The current instance of the configurator for method chaining.\n */\n setAdapter(identifier, adapter) {\n return this.configureAdapter(identifier, async () => adapter);\n }\n /**\n * Configures a telemetry adapter with the configurator.\n *\n * @param identifier - The key used to register and later resolve this adapter.\n * @param adapterFn - A callback function that returns a telemetry adapter instance\n * @returns The current instance for method chaining\n */\n configureAdapter(identifier, adapterFn) {\n this.#adaptersCallbacks[identifier] = adapterFn;\n return this;\n }\n /**\n * Sets the metadata configuration for telemetry.\n *\n * @remarks\n * All setting will accumulate, and the metadata will be merged.\n *\n * @param metadata - The metadata object or a callback function that receives and returns the metadata configuration.\n * @returns The current instance for method chaining.\n */\n setMetadata(metadata) {\n this.#metadata.push(metadata);\n return this;\n }\n /**\n * Sets the default scope for telemetry operations.\n *\n * @param scope - An array of strings representing the default scope to be used.\n * @returns The current instance for method chaining.\n */\n setDefaultScope(scope) {\n this._set('defaultScope', scope);\n return this;\n }\n /**\n * Sets the parent telemetry provider for this configurator.\n *\n * @param parent - The parent telemetry provider to associate, or `undefined` to remove the parent.\n * @returns The current instance for method chaining.\n */\n setParent(parent) {\n this._set('parent', parent);\n return this;\n }\n /**\n * Attaches an observable stream of telemetry items to the configurator.\n *\n * @param item$ - An observable input stream of telemetry items to be processed.\n * @returns The current instance for method chaining.\n */\n attachItems(item$) {\n this._set('items$', item$);\n return this;\n }\n /**\n * Sets the filter configuration for telemetry items.\n *\n * The filter determines which telemetry items should be passed to adapters and/or relayed to parent providers.\n *\n * @param filter - Either a filter object with `adapter` and `relay` functions, or a callback that returns such a filter object.\n * @returns The current instance for method chaining.\n */\n setFilter(filter) {\n this._set('filter', filter);\n return this;\n }\n}\n//# sourceMappingURL=TelemetryConfigurator.js.map","// Generated by genversion.\nexport const version = '8.0.0-next.1';\n//# sourceMappingURL=version.js.map","/**\n * Represents a framework event with customizable details and behavior.\n *\n * The `FrameworkEvent` class implements the `IFrameworkEvent` interface and provides a way to create and manage events\n * with custom details and behavior. It allows you to:\n *\n * - Specify the event type and initial event details\n * - Access the event details\n * - Check if the event is cancelable and whether it has been canceled\n * - Control whether the event can bubble up the event hierarchy\n *\n * The `FrameworkEvent` class is designed to be used as a base class for creating custom event types that fit the needs\n * of your application or framework.\n *\n * @template TInit The type of the event details.\n * @template TType The type of the event type.\n */\nexport class FrameworkEvent {\n __type;\n #detail;\n #source;\n #canceled = false;\n #cancelable;\n #canBubble;\n #created = Date.now();\n /**\n * Creates a new framework event.\n *\n * @param __type - The event name used for listener matching.\n * @param args - Initialization options including detail payload, source, and flags.\n */\n constructor(__type, args) {\n this.__type = __type;\n this.#detail = args.detail;\n this.#source = args.source;\n this.#cancelable = !!args.cancelable;\n this.#canBubble = args.canBubble === undefined ? true : args.canBubble;\n }\n /**\n * Indicates whether the event can bubble up the event hierarchy.\n * The event will only bubble if this property is `true` and the event has not been canceled.\n * @returns {boolean} `true` if the event can bubble, `false` otherwise.\n */\n get bubbles() {\n return this.#canBubble && !this.#canceled;\n }\n /**\n * Gets the timestamp when the `FrameworkEvent` was created.\n * @returns {number} The timestamp of when the `FrameworkEvent` was created.\n */\n get created() {\n return this.#created;\n }\n /**\n * Indicates whether the event is cancelable.\n * If the event is cancelable, it can be prevented from occurring by calling the `preventDefault()` method.\n * @returns {boolean} `true` if the event is cancelable, `false` otherwise.\n */\n get cancelable() {\n return this.#cancelable;\n }\n /**\n * Indicates whether the event has been canceled.\n * If the event is cancelable and `preventDefault()` has been called, this property will be `true`.\n * @returns {boolean} `true` if the event has been canceled, `false` otherwise.\n */\n get canceled() {\n return this.#canceled;\n }\n /**\n * Gets the current event details.\n * @returns {FrameworkEventInitDetail<TInit>} The current event details.\n */\n get detail() {\n return this.#detail;\n }\n /**\n * Gets the source object that triggered the event.\n * @returns {FrameworkEventInitSource<TInit> | undefined} The source object that triggered the event, or `undefined` if the source is not available.\n */\n get source() {\n return this.#source;\n }\n /**\n * Gets the type of the `FrameworkEvent`.\n * @returns {TType} The type of the `FrameworkEvent`.\n */\n get type() {\n return this.__type;\n }\n /**\n * Prevents the default action of the event from occurring, if the event is cancelable.\n * If the event is cancelable, this method sets the `canceled` property to `true`.\n */\n preventDefault() {\n // Only cancelable events can be canceled\n if (this.cancelable) {\n this.#canceled = true;\n }\n }\n /**\n * Prevents the event from bubbling up the DOM tree, effectively stopping its propagation.\n * This method sets the `#canBubble` property to `false`, which indicates that the event should not be propagated further.\n */\n stopPropagation() {\n this.#canBubble = false;\n }\n}\n//# sourceMappingURL=FrameworkEvent.js.map","import { FrameworkEvent } from '@equinor/fusion-framework-module-event';\n/**\n * Event representing an error that occurred within a telemetry provider.\n *\n * @remarks\n * This event is emitted when an error is encountered by an {@link ITelemetryProvider}.\n * It encapsulates the error details and the source provider.\n *\n * @example\n * ```typescript\n * const errorEvent = new TelemetryErrorEvent(new Error('Something went wrong'), telemetryProvider);\n * ```\n *\n * @extends FrameworkEvent\n */\nexport class TelemetryErrorEvent extends FrameworkEvent {\n /**\n * Creates a new `TelemetryErrorEvent`.\n *\n * @param error - The error instance that was thrown.\n * @param source - The telemetry provider where the error originated.\n */\n constructor(error, source) {\n super('onTelemetryError', { detail: { error }, source });\n }\n}\n//# sourceMappingURL=TelemetryErrorEvent.js.map","import { FrameworkEvent } from '@equinor/fusion-framework-module-event';\n/**\n * Represents a telemetry event within the framework.\n *\n * This event encapsulates a `TelemetryItem` and is associated with a specific `ITelemetryProvider` source.\n * It extends the `FrameworkEvent` class, providing a standardized way to emit and handle telemetry-related events.\n *\n * @example\n * ```typescript\n * const event = new TelemetryEvent(item, provider);\n * ```\n *\n * @param item - The telemetry item containing event data.\n * @param source - The telemetry provider that is the source of this event.\n */\nexport class TelemetryEvent extends FrameworkEvent {\n /**\n * Creates a new `TelemetryEvent`.\n *\n * @param item - The telemetry item containing event data.\n * @param source - The telemetry provider that is the source of this event.\n */\n constructor(item, source) {\n super('onTelemetry', { detail: { item }, source });\n }\n}\n// Re-exported from its own file to satisfy single-export-per-file while\n// preserving this file's existing public export surface.\nexport { TelemetryErrorEvent } from './TelemetryErrorEvent.js';\n//# sourceMappingURL=TelemetryEvent.js.map","import { mergeTelemetryItem } from './utils/merge-telemetry-item.js';\n/**\n * Represents a telemetry measurement that tracks elapsed time and reports measurement data\n * to a telemetry provider. Supports cloning, resetting, and marking measurements as completed.\n *\n * @remarks\n * - The measurement starts timing upon instantiation.\n * - Provides methods to measure elapsed time, reset the timer, clone the measurement, and\n * automatically measure on disposal if not already measured.\n * - Can be used to wrap asynchronous operations and automatically record their duration.\n *\n * @example\n * ```typescript\n * const measurement = new Measurement(provider, { name: 'operation' });\n * // ... perform operation ...\n * measurement.measure();\n * ```\n *\n * @public\n */\nexport class Measurement {\n #provider;\n #data;\n #startTime;\n #measured;\n /**\n * Initializes a new instance of the Measurement class.\n *\n * @param provider - The telemetry provider responsible for handling telemetry data.\n * @param data - The measurement data to be associated with this instance.\n */\n constructor(provider, data) {\n this.#data = data;\n this.#provider = provider;\n this.#startTime = performance.now();\n }\n /**\n * Creates a new `Measurement` instance that is a copy of the current one.\n *\n * @param resetOptions - Options to control which properties are preserved in the clone.\n * - `preserveStartTime`: If `true`, the start time of the measurement is preserved in the clone.\n * @returns A new `Measurement` instance with copied data and optionally preserved start time.\n */\n clone(resetOptions = {}) {\n const clonedMeasurement = new Measurement(this.#provider, this.#data);\n // Preserve the original start time when requested, otherwise the clone starts fresh\n if (resetOptions.preserveStartTime) {\n clonedMeasurement.#startTime = this.#startTime;\n }\n return clonedMeasurement;\n }\n /**\n * Resets the measurement state.\n *\n * @param options - Optional settings for the reset operation.\n * @param options.preserveStartTime - If true, the start time will not be reset; otherwise, it will be set to the current time.\n *\n * Resets the measured flag and, unless `preserveStartTime` is true, updates the start time to the current performance time.\n */\n reset(options) {\n // Keep the existing start time when preserving, otherwise restart the clock\n if (!options?.preserveStartTime) {\n this.#startTime = performance.now();\n }\n this.#measured = false;\n }\n /**\n * Measures the elapsed time since the last start time and sends the measurement data\n * to the telemetry provider. Optionally marks the measurement as completed and/or\n * resets the start time for subsequent measurements.\n *\n * @param data - Optional additional measurement data to merge with the existing data.\n * @param options - Optional measurement options.\n * @param options.markAsMeasured - If true, marks this measurement as completed.\n * @param options.resetStartTime - If true, resets the start time after measuring.\n * @returns The elapsed duration in milliseconds since the last start time.\n */\n measure(data, options) {\n const measuredData = mergeTelemetryItem(this.#data, data ?? {});\n const duration = performance.now() - this.#startTime;\n this.#provider.trackMetric({\n ...measuredData,\n value: duration,\n });\n // Mark as measured only when explicitly requested by the caller\n if (options?.markAsMeasured) {\n this.#measured = true;\n }\n // Restart the clock only when explicitly requested by the caller\n if (options?.resetStartTime) {\n this.#startTime = performance.now();\n }\n return duration;\n }\n /**\n * Resolves a given promise, measures the result using the provided options, and returns the resolved value.\n *\n * @template T - The type of the resolved value from the promise.\n * @param promise - The promise to resolve.\n * @param options - Optional configuration for resolving and measuring:\n * - `data`: A value or a function that receives the resolved result and returns measurement data.\n * - `options`: Additional options to pass to the `measure` method.\n * @returns A promise that resolves to the value of the input promise.\n */\n async resolve(promise, options) {\n const result = await promise;\n const endData = typeof options?.data === 'function' ? options?.data(result) : options?.data;\n this.measure(await Promise.resolve(endData), options?.options);\n return result;\n }\n /**\n * Executes the provided function and resolves its result using the `resolve` method.\n * The function `fn` can return either a value of type `T` or a Promise of type `T`.\n * Optionally, resolution options can be provided.\n *\n * @template T - The return type of the function to execute.\n * @param fn - A function that returns a value or a Promise to be resolved.\n * @param options - Optional resolution options to customize the resolve behavior.\n * @returns A Promise that resolves to the result of the executed function.\n */\n exec(fn, options) {\n return this.resolve(Promise.resolve(fn()), options);\n }\n /**\n * Disposes of the measurement instance. If the measurement has not yet been taken,\n * this method ensures that it is performed before disposal.\n *\n * This method is intended to be used with the ECMAScript `Symbol.dispose` protocol,\n * allowing for automatic resource management when used in a `using` statement.\n *\n * @see https://github.com/tc39/proposal-explicit-resource-management\n */\n [Symbol.dispose]() {\n // Ensure a measurement is always taken before the instance is discarded\n if (!this.#measured) {\n try {\n this.measure();\n }\n catch {\n // Silently handle errors during disposal to ensure cleanup always completes\n // The measurement failure should not prevent proper resource disposal\n }\n }\n }\n}\n//# sourceMappingURL=Measurement.js.map","import { toObservable } from '@equinor/fusion-observable';\nimport { TelemetryType, TelemetryItemNames } from '../static.js';\nimport { merge, of } from 'rxjs';\nimport { catchError, defaultIfEmpty, first, map } from 'rxjs/operators';\nimport { mergeTelemetryItem } from './merge-telemetry-item.js';\nimport { TelemetryExceptionSchema } from '../schemas.js';\n/**\n * Resolves metadata from a {@link MetadataExtractor} into an observable stream.\n *\n * Converts the extractor (which may be a static value, promise, function, or observable)\n * into a normalised `Observable` that emits the resolved metadata record.\n *\n * @param metadata - The metadata extractor to resolve.\n * @param args - Context passed to the extractor, including the telemetry item and optional module instances.\n * @returns An `Observable` emitting the resolved metadata record.\n */\nexport const resolveMetadata = (metadata, args) => {\n return toObservable(metadata, args);\n};\n/**\n * Applies metadata to a telemetry item by resolving metadata asynchronously.\n *\n * This function takes a metadata extractor and its arguments, resolves the metadata,\n * and merges it into the provided telemetry item. If an error occurs during metadata resolution,\n * it emits both an error telemetry item and the original item.\n *\n * @remarks\n * - When resolving metadata, it will only take the first emitted value!.\n * - The metadata extractor can be a function or an object that implements the `DynamicInputValue` interface.\n * - The `args` parameter must include the telemetry item from which metadata is extracted.\n * - The function returns an Observable that emits the telemetry item with applied metadata or an error telemetry item if resolution fails.\n *\n * @param metadata - The metadata extractor function or object used to resolve metadata.\n * @param args - The arguments required by the metadata extractor, including the telemetry item.\n * @returns An Observable emitting the telemetry item with applied metadata, or an error telemetry item if resolution fails.\n */\n// Deliberately co-located with `resolveMetadata` above\n// fusion-lint-disable-next-line single-export-per-file\nexport const applyMetadata = (metadata, args) => {\n // Resolve metadata, merge it into the item, and fall back to an error item on failure\n return resolveMetadata(metadata, args).pipe(defaultIfEmpty({}), // Ensure we always have an object to merge with\n first(), // Take the first emitted value from the metadata extractor\n // Merge the resolved metadata with the telemetry item.\n // resolved metadata is always target, else item metadata would be overwritten\n map((data) => mergeTelemetryItem({ metadata: data }, args.item)), catchError((error) => {\n const errorItem = TelemetryExceptionSchema.parse({\n type: TelemetryType.Exception,\n name: TelemetryItemNames.MetadataError,\n exception: error,\n properties: {\n sourceMetricName: args.item.name,\n sourceMetricType: args.item.type,\n },\n });\n return merge(of(errorItem), of(args.item));\n }));\n};\n//# sourceMappingURL=resolve-metadata.js.map","import { from, Subject } from 'rxjs';\nimport { BaseModuleProvider } from '@equinor/fusion-framework-module/provider';\nimport { version } from './version.js';\nimport { TelemetryType, TelemetryItemNames } from './static.js';\nimport { TelemetryExceptionSchema, TelemetryCustomEventSchema, TelemetryEventSchema, TelemetryMetricSchema, } from './schemas.js';\nimport { TelemetryErrorEvent, TelemetryEvent } from './TelemetryEvent.js';\nimport { Measurement } from './Measurement.js';\nimport { mergeTelemetryItem } from './utils/merge-telemetry-item.js';\nimport { applyMetadata } from './utils/resolve-metadata.js';\n/**\n * Provides telemetry tracking, event dispatching, and adapter integration for application instrumentation.\n *\n * The `TelemetryProvider` class is responsible for collecting, processing, and relaying telemetry data such as events,\n * exceptions, metrics, and custom events. It supports adapter-based processing, event provider integration, and\n * hierarchical telemetry relaying to parent providers. Telemetry items are validated and dispatched to registered\n * adapters and event providers, with robust error handling and metadata merging.\n *\n * @remarks\n * - Integrates with adapters for extensible telemetry processing.\n * - Supports event provider for dispatching telemetry as events.\n * - Allows relaying telemetry data to a parent provider, merging metadata as needed.\n * - Provides utility methods for tracking and measuring telemetry items.\n * - Handles error reporting via telemetry error events.\n *\n * @example\n * ```typescript\n * const provider = new TelemetryProvider(config, { event: eventProvider });\n * provider.track({ type: TelemetryType.Event, name: 'user_login', metadata: { userId: '123' } });\n * const end = provider.measure({ name: 'load_time' });\n * // ... do work ...\n * end();\n * ```\n *\n * @typeParam TelemetryConfig - The configuration type for telemetry.\n * @implements ITelemetryProvider\n * @extends BaseModuleProvider<TelemetryConfig>\n */\nexport class TelemetryProvider extends BaseModuleProvider {\n #items = new Subject();\n #initialized = false;\n #adapters = {};\n #filters;\n #defaultScope;\n #eventProvider;\n /**\n * Stream of every telemetry item tracked by this provider.\n *\n * @returns An observable emitting each tracked `TelemetryItem`.\n */\n get items() {\n return this.#items.asObservable();\n }\n /**\n * Returns true if the provider has been initialized.\n *\n * @returns `true` when {@link initialize} has completed, otherwise `false`.\n */\n get initialized() {\n return this.#initialized;\n }\n #metadata;\n #modules;\n /**\n * Sets the resolved framework module instances used to resolve metadata.\n *\n * @param value - The resolved framework module instances.\n */\n set modules(value) {\n this.#modules = value;\n }\n /**\n * Creates a new `TelemetryProvider`.\n *\n * @param config - Resolved telemetry configuration (adapters, metadata, scope, filters).\n * @param deps - Optional dependencies; supply an event module provider to dispatch\n * telemetry items as events.\n */\n constructor(config, deps) {\n super({ version, config });\n this.#adapters = config?.adapters ?? {};\n this.#metadata = config?.metadata;\n this.#defaultScope = config?.defaultScope ?? [];\n this.#eventProvider = deps?.event;\n this.#filters = config?.filter;\n }\n /**\n * Initializes the telemetry provider with adapters, parent provider, and optional initial items.\n *\n * This method sets up the provider for operation by:\n * 1. Storing the provided adapters\n * 2. Initializing all adapters that support async initialization (failures are logged but don't prevent initialization)\n * 3. Setting up subscriptions for telemetry processing\n * 4. Handling initial telemetry items if provided\n *\n * @param args - Initialization arguments\n * @param args.adapters - Array of telemetry adapters to use\n * @param args.parent - Optional parent telemetry provider for relaying data\n * @param args.initialItems - Optional observable of initial telemetry items to process\n * @returns A promise that resolves when initialization is complete\n */\n async initialize(args) {\n const { parent, initialItems } = args ?? {};\n // Mark as initialized early to allow adapter connections\n this.#initialized = true;\n // Initialize all adapters that support async initialization\n await this._initializeAdapters();\n // Connect adapters to the telemetry items, processing each item as it is emitted\n this._addTeardown(this._connectAdapters());\n // If a parent telemetry provider is provided, relay telemetry data to it\n if (parent) {\n this._addTeardown(this._relayTelemetryData(parent));\n }\n // Emit telemetry items as events if an event provider is available\n this._addTeardown(this.#items.subscribe(this._dispatchEntityEvent.bind(this)));\n // Handle initial telemetry items if provided\n if (initialItems) {\n this._addTeardown(from(initialItems).subscribe((item) => {\n this.track(item);\n }));\n }\n // Ensure the subject is completed when the provider is destroyed\n this._addTeardown(() => {\n this.#items.complete();\n });\n }\n /**\n * Initializes all telemetry adapters that support async initialization.\n * Uses Promise.allSettled to ensure all adapters attempt initialization,\n * with individual error reporting for any failures.\n * Subclasses can override this method to customize adapter initialization behavior.\n *\n * @protected\n */\n async _initializeAdapters() {\n // Initialize all adapters, do it in parallel\n const adapterEntries = Object.entries(this.#adapters);\n // Kick off every adapter's initialize() concurrently\n const initializationPromises = adapterEntries.map(([_identifier, adapter]) => adapter.initialize());\n // Wait for all adapters to settle (either resolve or reject)\n const results = await Promise.allSettled(initializationPromises);\n // Check each result and dispatch errors for failed initializations\n for (const [index, result] of results.entries()) {\n // Only rejected adapters need an error dispatched; fulfilled ones need no action\n if (result.status === 'rejected') {\n const [identifier] = adapterEntries[index];\n this._dispatchError(new Error(`Failed to initialize telemetry adapter \"${identifier}\"`, {\n cause: result.reason,\n }));\n }\n }\n }\n /**\n * Subscribes all adapters to the telemetry item stream.\n * Each adapter processes every telemetry item as it is emitted.\n * If an adapter filter is configured, only items that pass the filter will be sent to adapters.\n * If an adapter throws, the error is dispatched as a telemetry error event.\n *\n * @returns Subscription to the telemetry item stream\n * @protected\n * @throws {Error} When the provider has not been initialized yet.\n */\n _connectAdapters() {\n // Adapters can only be connected after the provider has completed initialization\n if (!this.#initialized) {\n throw new Error('TelemetryProvider is not initialized');\n }\n return this.#items.subscribe((item) => {\n const { adapter: adapterFilter } = this.#filters ?? {};\n // Apply adapter filter if configured - skip item if filter returns false\n if (adapterFilter && !adapterFilter(item)) {\n return;\n }\n // Iterate through all registered adapters\n for (const [identifier, adapter] of Object.entries(this.#adapters)) {\n try {\n // Let the adapter process the telemetry item\n Promise.resolve(adapter.processItem(item));\n }\n catch (error) {\n // If processing fails, dispatch an error event\n this._dispatchError(new Error(`Failed to process telemetry item with adapter \"${identifier}\"`, {\n cause: error,\n }));\n }\n }\n });\n }\n /**\n * Relays telemetry data items to a target telemetry provider.\n *\n * Subscribes to the internal telemetry item stream and forwards each processed item\n * to the specified target provider by invoking its `track` method.\n * If a relay filter is configured, only items that pass the filter will be relayed.\n *\n * @param target - The telemetry provider to which telemetry data should be relayed.\n * @returns A Subscription object that can be used to unsubscribe from the relay.\n */\n _relayTelemetryData(target) {\n // Subscribe to the processed stream and forward each item to the parent provider\n return this.#items.subscribe((item) => {\n const { relay: relayFilter } = this.#filters ?? {};\n // Apply relay filter if configured - skip item if filter returns false\n if (relayFilter && !relayFilter(item)) {\n return;\n }\n target.track(item);\n });\n }\n /**\n * Dispatches a telemetry event to the event provider, if available.\n *\n * @param item - The telemetry item to dispatch as an event\n * @protected\n */\n _dispatchEntityEvent(item) {\n // Only dispatch when an event provider is configured\n if (this.#eventProvider) {\n // Wrap the telemetry item in a TelemetryEvent and dispatch it\n this.#eventProvider.dispatchEvent(new TelemetryEvent(item, this));\n }\n }\n /**\n * Dispatches a telemetry error event using the internal event provider, if available.\n *\n * @param error - The error instance to be dispatched with the telemetry error event.\n * @protected\n */\n _dispatchError(error) {\n // Only dispatch when an event provider is configured\n if (this.#eventProvider) {\n this.#eventProvider.dispatchEvent(new TelemetryErrorEvent(error, this));\n }\n }\n /**\n * Tracks a telemetry item by type, merging the default scope with the provided scope.\n * Dispatches the item to the appropriate handler based on its type.\n *\n * @param item - The telemetry item to track\n * @example\n * provider.track({\n * type: TelemetryType.Event,\n * name: 'user_login',\n * metadata: { userId: '123' }\n * });\n */\n track(item) {\n // Dispatch to the type-specific tracker so each item is validated with the right schema\n switch (item.type) {\n case TelemetryType.Event:\n this.trackEvent(item);\n break;\n case TelemetryType.Exception:\n this.trackException(item);\n break;\n case TelemetryType.Metric:\n this.trackMetric(item);\n break;\n case TelemetryType.Custom:\n this.trackCustom(item);\n break;\n }\n }\n /**\n * Tracks a telemetry item by merging the default scope with the item's scope (if provided),\n * ensuring that all telemetry items have the correct scope context. The merged item is then\n * emitted to downstream handlers.\n *\n * @param item - The telemetry item to be tracked, conforming to the input schema of `TelemetryItemSchema`.\n *\n * @protected\n */\n async _track(item) {\n const mergedItem = mergeTelemetryItem(item, {\n scope: this.#defaultScope,\n });\n // Skip metadata application for TelemetryMetadataError items to prevent infinite recursion\n if (this.#metadata && mergedItem.name !== TelemetryItemNames.MetadataError) {\n applyMetadata(this.#metadata, {\n modules: this.#modules,\n item: mergedItem,\n }).subscribe((nextItem) => {\n // Emit the item after applying metadata\n this.#items.next(nextItem);\n });\n }\n else {\n // If no metadata extractor is provided or item is TelemetryMetadataError, emit directly\n this.#items.next(mergedItem);\n }\n }\n /**\n * Starts a metric measurement and returns a function to end the measurement.\n * When the returned function is called, it will end the metric and optionally merge additional data.\n *\n * @param data - The initial metric data (without type)\n * @returns A function to end the metric, optionally with additional data\n * @example\n * const end = provider.measure({ name: 'load_time', metadata: { page: 'home' } });\n * // ... code to measure ...\n * end();\n * // or with additional data:\n * end({ metadata: { user: 'abc' } });\n */\n measure(data) {\n return new Measurement(this, data);\n }\n /**\n * Tracks a telemetry event.\n *\n * @param data - The event data (without type)\n * @example\n * provider.trackEvent({ name: 'button_click', metadata: { button: 'save' } });\n */\n trackEvent(data) {\n this._track(TelemetryEventSchema.parse({ ...data, type: TelemetryType.Event }));\n }\n /**\n * Tracks a telemetry exception.\n *\n * @param data - The exception data (without type)\n * @example\n * provider.trackException({\n * name: 'api_error',\n * exception: new Error('API failed'),\n * metadata: { code: 500 }\n * });\n */\n trackException(data) {\n this._track(TelemetryExceptionSchema.parse({ ...data, type: TelemetryType.Exception }));\n }\n /**\n * Tracks a telemetry metric.\n *\n * @param data - The metric data (without type)\n * @example\n * provider.trackMetric({ name: 'response_time', value: 123 });\n */\n trackMetric(data) {\n this._track(TelemetryMetricSchema.parse({ ...data, type: TelemetryType.Metric }));\n }\n /**\n * Tracks a custom telemetry event.\n *\n * @param data - The custom event data (without type)\n * @example\n * provider.trackCustom({ name: 'custom_event', metadata: { foo: 'bar' } });\n */\n trackCustom(data) {\n this._track(TelemetryCustomEventSchema.parse({ ...data, type: TelemetryType.Custom }));\n }\n /**\n * Retrieves a telemetry adapter by its identifier.\n *\n * @typeParam T - The key of the `TelemetryAdapter` to retrieve.\n * @param identifier - The identifier of the telemetry adapter to retrieve.\n * @returns The telemetry adapter corresponding to the given identifier, or `undefined` if not found.\n */\n getAdapter(identifier) {\n const adapter = this.#adapters[identifier];\n // Report a missing adapter as a telemetry exception rather than throwing\n if (!adapter) {\n this.trackException({\n name: 'TelemetryAdapterNotFound',\n exception: new Error(`Telemetry adapter \"${identifier}\" not found`),\n metadata: {\n identifier,\n },\n });\n }\n return adapter;\n }\n /**\n * Check if a telemetry adapter exists by its identifier.\n * @param identifier - The unique identifier of the telemetry adapter to check.\n * @returns True if the adapter exists, false otherwise.\n */\n hasAdapter(identifier) {\n return identifier in this.#adapters;\n }\n}\n//# sourceMappingURL=TelemetryProvider.js.map","import { TelemetryConfigurator } from './TelemetryConfigurator.js';\nimport { TelemetryProvider } from './TelemetryProvider.js';\n/**\n * Telemetry module definition for the Fusion Framework.\n *\n * @remarks\n * This module provides telemetry capabilities by configuring and initializing a telemetry provider.\n * It optionally integrates with the 'event' module if available.\n *\n * @type {TelemetryModule}\n *\n * @property {string} name - The name of the module ('telemetry').\n * @property {() => TelemetryConfigurator} configure - Factory function to create a new TelemetryConfigurator instance.\n * @property {(args) => Promise<ITelemetryProvider>} initialize - Asynchronous initializer that creates and returns a TelemetryProvider.\n * - @param args - Initialization arguments, including configuration and module dependencies.\n * - @returns A promise that resolves to an instance of ITelemetryProvider.\n */\nexport const module = {\n name: 'telemetry',\n configure: () => new TelemetryConfigurator(),\n initialize: async (args) => {\n const config = await args.config.createConfigAsync(args);\n const event = args.hasModule('event') ? await args.requireInstance('event') : undefined;\n const provider = new TelemetryProvider(config, { event });\n await provider.initialize({\n parent: config.parent,\n initialItems: config.items$,\n });\n return provider;\n },\n};\nexport default module;\n//# sourceMappingURL=module.js.map","import { map } from 'rxjs/operators';\nimport { TelemetryType } from '@equinor/fusion-framework-module-telemetry';\n/**\n * Transforms events emitted by a given modules configurator into standardized telemetry items.\n *\n * @param configurator - The modules configurator instance emitting events to be mapped.\n * @returns An observable stream of `TelemetryItem` objects, each representing a mapped event.\n *\n * The function listens to the `event$` observable of the configurator and maps each event to a `TelemetryItem`.\n * - If the event contains an `error`, the item is marked as an exception.\n * - If the event contains a `metric`, the item is marked as a metric with its value.\n * - Otherwise, the item is treated as a standard event.\n *\n * The resulting telemetry items include event name, type, level, message, properties, and a fixed scope of `['configuration']`.\n */\nexport const mapConfiguratorEvents = (\n// biome-ignore lint/suspicious/noExplicitAny: must be any to support all module types\nconfigurator) => {\n // Map each configurator event into a standardized telemetry item shape\n return configurator.event$.pipe(map((event) => {\n const item = {\n name: event.name,\n type: TelemetryType.Event,\n level: Number(event.level),\n properties: {\n message: event.message,\n ...event.properties,\n },\n scope: ['configuration'],\n };\n // An event carrying an error is reported as a telemetry exception\n if (event.error) {\n return {\n ...item,\n type: TelemetryType.Exception,\n exception: event.error,\n };\n }\n // An event carrying a metric value is reported as a telemetry metric\n if (event.metric) {\n return {\n ...item,\n type: TelemetryType.Metric,\n value: event.metric,\n };\n }\n return item;\n }));\n};\nexport default mapConfiguratorEvents;\n//# sourceMappingURL=map-configurator-events.js.map","import { module } from './module.js';\nimport { mapConfiguratorEvents } from './utils/map-configurator-events.js';\n/**\n * Enables telemetry for a given module configurator.\n *\n * @param configurator - The module configurator instance to which telemetry should be attached.\n * @param options - Optional configuration for telemetry setup.\n * @param options.attachConfiguratorEvents - If true, attaches configurator events to the telemetry builder.\n * @param options.configure - An optional callback to further configure the telemetry builder. Can be synchronous or asynchronous.\n *\n * @remarks\n * This function adds telemetry configuration to the provided configurator. It supports attaching configurator events\n * and allows for additional custom configuration via the `configure` callback.\n *\n * @remarks\n * `attachConfiguratorEvents` allows for the automatic attachment of configurator events to the telemetry builder,\n * ensuring that relevant events are captured and processed. __NOTE__ if the configurator crashes before the telemetry\n * builder is fully initialized, some events may be missed.\n *\n * @example\n * ```typescript\n * import { enableTelemetry } from '@equinor/fusion-framework-module-telemetry';\n *\n * const configure = (configurator) => {\n * enableTelemetry(configurator, {\n * attachConfiguratorEvents: true,\n * configure: (builder) => {\n * builder.setAdapter('console', new ConsoleAdapter());\n * builder.setMetadata(() => ({ appVersion: '1.0.0' }));\n * },\n * });\n * };\n * ```\n */\nexport const enableTelemetry = (\n// biome-ignore lint/suspicious/noExplicitAny: must be any to support all module types\nconfigurator, options) => {\n configurator.addConfig({\n module,\n configure: async (builder, ref) => {\n // Attach configurator events to the telemetry builder only when opted in\n if (options?.attachConfiguratorEvents) {\n builder.attachItems(mapConfiguratorEvents(configurator));\n }\n // Run the caller-supplied configure callback when one was provided\n if (options?.configure) {\n await Promise.resolve(options.configure(builder, ref));\n }\n },\n });\n};\n//# sourceMappingURL=enable-telemetry.js.map","import { concatMap } from 'rxjs/operators';\n/**\n * Takes a function that transforms each item in a queue and returns an Observable.\n * It processes each item one after another, waiting for the current item to complete before\n * moving on to the next one. This is useful when you need to maintain the order of tasks\n * and ensure that they are executed sequentially without overlapping.\n *\n * @param cb - A callback function that takes a `QueryQueueItem` and returns an Observable.\n * @returns A function that takes an Observable stream of `QueryQueueItem` and returns an Observable\n * stream where each item is processed in sequence by the provided callback.\n */\nexport const concatQueue = (...args) => (source$) => {\n // process queue items one after another, waiting for each to complete before starting the next\n return source$.pipe(concatMap(...args));\n};\n//# sourceMappingURL=concat-queue.js.map","import { mergeMap } from 'rxjs/operators';\n/**\n * Takes a function that transforms each item in a queue and returns an Observable.\n * It processes each item concurrently, potentially leading to out-of-order execution.\n * This is useful when the order of tasks is not important and you want to maximize\n * throughput by running tasks in parallel.\n *\n * @param cb - A callback function that takes a `QueryQueueItem` and returns an Observable.\n * @returns A function that takes an Observable stream of `QueryQueueItem` and returns an Observable\n * stream where each item is processed concurrently by the provided callback.\n */\nexport const mergeQueue = (...args) => (source$) => \n// process all queue items concurrently, without waiting for previous items to complete\nsource$.pipe(mergeMap(...args));\n//# sourceMappingURL=merge-queue.js.map","import { switchMap } from 'rxjs/operators';\n/**\n * Takes a function that transforms each item in a queue and returns an Observable.\n * It processes each item by cancelling the current task if a new one arrives.\n * This is useful when only the result of the latest task is relevant and previous\n * tasks can be safely discarded.\n *\n * @param cb - A callback function that takes a `QueryQueueItem` and returns an Observable.\n * @returns A function that takes an Observable stream of `QueryQueueItem` and returns an Observable\n * stream where each item is processed by the provided callback, but only the latest\n * item's result is emitted.\n */\nexport const switchQueue = (...args) => (source$) => \n// cancel the previous in-flight item whenever a new item arrives\nsource$.pipe(switchMap(...args));\n//# sourceMappingURL=switch-queue.js.map","import { map } from 'rxjs/operators';\n/**\n * Transforms a query result Observable into a plain value Observable by extracting the `value` property.\n *\n * Use this operator to strip query metadata (status, transaction, timestamps) from\n * the result stream when only the raw data is needed.\n *\n * @template TType - The type of the data value extracted from the query result.\n * @template TArgs - The type of the query arguments.\n *\n * @param source$ - An Observable stream of query task results (cached or completed).\n * @returns An Observable stream of `TType` where each emission is the extracted value.\n *\n * @example\n * ```typescript\n * import { Query, operators } from '@equinor/fusion-query';\n *\n * const query = new Query({ client: { fn: fetchUser }, key: (args) => args.id });\n * query.query({ id: '123' }).pipe(operators.queryValue).subscribe(user => {\n * console.log(user.name);\n * });\n * ```\n */\nexport const queryValue = (source$) => \n// strip query metadata, keeping only the raw data value\nsource$.pipe(map((entry) => entry.value));\n//# sourceMappingURL=query-value.js.map","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;\n","import REGEX from './regex.js';\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\nexport default validate;\n","import validate from './validate.js';\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n let v;\n return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 0xff, ((v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000) & 0xff, (v / 0x100000000) & 0xff, (v >>> 24) & 0xff, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff);\n}\nexport default parse;\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","const rnds8 = new Uint8Array(16);\nexport default function rng() {\n return crypto.getRandomValues(rnds8);\n}\n","import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport function stringToBytes(str) {\n str = unescape(encodeURIComponent(str));\n const bytes = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n return bytes;\n}\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(version, hash, value, namespace, buf, offset) {\n const valueBytes = typeof value === 'string' ? stringToBytes(value) : value;\n const namespaceBytes = typeof namespace === 'string' ? parse(namespace) : namespace;\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n if (namespace?.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n }\n let bytes = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n if (buf) {\n offset ??= 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n return buf;\n }\n return unsafeStringify(bytes);\n}\n","import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (!buf && !options && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","function f(s, x, y, z) {\n switch (s) {\n case 0:\n return (x & y) ^ (~x & z);\n case 1:\n return x ^ y ^ z;\n case 2:\n return (x & y) ^ (x & z) ^ (y & z);\n case 3:\n return x ^ y ^ z;\n }\n}\nfunction ROTL(x, n) {\n return (x << n) | (x >>> (32 - n));\n}\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n const newBytes = new Uint8Array(bytes.length + 1);\n newBytes.set(bytes);\n newBytes[bytes.length] = 0x80;\n bytes = newBytes;\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n for (let j = 0; j < 16; ++j) {\n arr[j] =\n (bytes[i * 64 + j * 4] << 24) |\n (bytes[i * 64 + j * 4 + 1] << 16) |\n (bytes[i * 64 + j * 4 + 2] << 8) |\n bytes[i * 64 + j * 4 + 3];\n }\n M[i] = arr;\n }\n M[N - 1][14] = ((bytes.length - 1) * 8) / 2 ** 32;\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = (ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t]) >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n H[0] = (H[0] + a) >>> 0;\n H[1] = (H[1] + b) >>> 0;\n H[2] = (H[2] + c) >>> 0;\n H[3] = (H[3] + d) >>> 0;\n H[4] = (H[4] + e) >>> 0;\n }\n return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]);\n}\nexport default sha1;\n","import sha1 from './sha1.js';\nimport v35, { DNS, URL } from './v35.js';\nexport { DNS, URL } from './v35.js';\nfunction v5(value, namespace, buf, offset) {\n return v35(0x50, sha1, value, namespace, buf, offset);\n}\nv5.DNS = DNS;\nv5.URL = URL;\nexport default v5;\n","/**\n * Represents an error that occurs within the query client. This error class is used\n * to encapsulate errors related to query client requests, allowing consumers to handle\n * them in a unified way.\n *\n * The error can be of two types: 'error' for standard errors, and 'abort' for errors\n * resulting from aborted requests. Consumers can distinguish between these by checking\n * the `type` property.\n *\n * To get the actual error that caused this `QueryClientError`, you can access the `cause`\n * property of the instance. This property will contain the original error, if any, that\n * triggered this `QueryClientError`.\n *\n * Example usage:\n * ```\n * try {\n * // code that may throw a QueryClientError\n * } catch (error) {\n * if (error instanceof QueryClientError) {\n * console.log(error.message); // Access the message\n * if (error.cause) {\n * console.error(error.cause); // Access the original error\n * }\n * }\n * }\n * ```\n */\nexport class QueryClientError extends Error {\n type;\n /** The request that was being processed when this error occurred, if any. */\n request;\n /**\n * Creates a new `QueryClientError`.\n *\n * @param type - Whether this error represents a standard failure or an aborted request.\n * @param args - The error message, optional underlying cause, and optional request context.\n */\n constructor(type, args) {\n super(args.message, { cause: args.cause });\n this.type = type;\n this.name = 'QueryClientError';\n this.request = args.request;\n }\n}\n//# sourceMappingURL=QueryClientError.js.map","import { v4 as generateGUID } from 'uuid';\nimport { createAction, createAsyncAction, } from '@equinor/fusion-observable';\nconst createActions = () => ({\n /**\n * Action to initiate a request.\n *\n * @param args - The arguments for the request.\n * @param options - Optional parameters including a reference and retry options.\n * @returns An action with the request details and metadata.\n */\n request: createAction('client/request', (args, options) => ({\n payload: { args, options },\n meta: { transaction: generateGUID(), created: Date.now() },\n })),\n /**\n * Async action to execute a request.\n *\n * @param transaction - The unique identifier for the transaction.\n * @returns An async action with the transaction details and metadata.\n */\n execute: createAsyncAction('client/execute', (transaction) => ({\n payload: transaction,\n meta: { transaction, created: Date.now() },\n }), (result) => ({\n payload: result,\n meta: { transaction: result.transaction, created: Date.now() },\n }), (error, transaction) => ({\n payload: { error },\n meta: { transaction, created: Date.now() },\n })),\n /**\n * Action to cancel a request.\n *\n * @param transaction - The unique identifier for the transaction to cancel.\n * @param reason - Optional reason for cancellation.\n * @returns An action with the cancellation details and metadata.\n */\n cancel: createAction('client/cancel', (transaction, reason) => ({\n payload: { transaction, reason },\n meta: { transaction, created: Date.now() },\n })),\n /**\n * Action to report an error.\n *\n * @param transaction - The unique identifier for the transaction that errored.\n * @param error - The error that occurred.\n * @returns An action with the error details and metadata.\n */\n error: createAction('client/error', (transaction, error) => ({\n payload: { transaction, error },\n meta: { transaction, created: Date.now() },\n })),\n});\nexport const actions = createActions();\nexport default actions;\n//# sourceMappingURL=actions.js.map","import { filter, map } from 'rxjs';\nimport { actions } from './actions';\n/**\n * Handles incoming request actions by transforming them into execute actions.\n *\n * @param action$ - The stream of actions being dispatched in the system.\n * @returns An Observable that emits execute actions for each request action.\n */\nexport const handleRequests = (action$) => \n// convert each incoming request action into an execute action for its transaction\naction$.pipe(filter(actions.request.match), map((action) => actions.execute(action.meta.transaction)));\n//# sourceMappingURL=handle-requests.js.map","import { catchError, filter, from, map, mergeMap, of, takeUntil, tap, withLatestFrom } from 'rxjs';\nimport { actions } from './actions';\n/**\n * Handles the execution of a query.\n *\n * @param fetch - The function used to execute the query.\n * @returns A flow that handles the execution of the query.\n */\nexport const handleExecution = (fetch) => (action$, state$) => \n// execute the query for each request and translate the outcome back into actions\naction$.pipe(filter(actions.execute.match), withLatestFrom(state$), mergeMap(([action, state]) => {\n const transaction = action.payload;\n const request = state[transaction];\n // Create an AbortController instance to manage cancellation.\n const controller = new AbortController();\n // Listen for cancel actions specifically targeting this transaction.\n const cancel$ = action$.pipe(filter(actions.cancel.match), filter((next) => next.payload.transaction === transaction), tap(() => {\n // If the request hasn't been aborted yet, abort it.\n if (!controller.signal.aborted) {\n controller.abort();\n }\n }));\n try {\n // map the fetch outcome to a success/failure action, cancelling early if aborted\n return from(fetch(request.args, controller.signal)).pipe(map((value) => actions.execute.success({\n ...request,\n status: 'complete',\n completed: Date.now(),\n value,\n })), catchError((err) => of(actions.execute.failure(err, transaction))), takeUntil(cancel$));\n }\n catch (err) {\n // Normally errors thrown during the execution of the fetch function are caught by the `catchError` operator.\n // However, if the fetch function itself throws an error, it will be caught here.\n // This can happen if the fetch function is not a function or if it throws synchronously.\n return of(actions.execute.failure(err, transaction));\n }\n}));\n//# sourceMappingURL=handle-execution.js.map","import { catchError, filter, from, map, mergeMap, of, tap, timer, withLatestFrom, } from 'rxjs';\nimport { actions } from './actions';\nimport { QueryClientError } from './QueryClientError';\n/**\n * Handles execution failure by scheduling retries according to the provided retry options.\n * If the maximum number of retries is exceeded or no retry options are provided, it emits an error action.\n * Otherwise, it schedules a retry after a delay determined by the retry options.\n *\n * @param config - Optional configuration for retry behavior, including the maximum number of retries and delay between retries.\n */\nexport const handleFailure = (config) => {\n return (action$, state$) => {\n // filter for execution failures and decide whether to retry or report an error\n return action$.pipe(\n // Filter for actions that indicate an execution failure.\n filter(actions.execute.failure.match), \n // Combine each failure action with the latest state.\n withLatestFrom(state$), \n // Handle the retry logic for each failure.\n mergeMap(([action, state]) => {\n // Extract the transaction identifier from the action metadata.\n const { transaction } = action.meta;\n // Retrieve the corresponding request from the state.\n const request = state[transaction];\n // If the request no longer exists in the state, it cannot be retried.\n if (!request) {\n return of(actions.error(transaction, new QueryClientError('error', {\n message: 'request not found, cannot retry request, most likely removed while scheduled for retry!',\n })));\n }\n // Count the number of execution attempts made for this request.\n const executions = request.execution.length;\n // Merge the provided configuration with the request-specific retry options.\n const retryOptions = Object.assign({}, config, request.options?.retry);\n // Identify the cause of the failure, either the last known error or a generic message.\n const cause = request.errors?.slice(-1)[0] ??\n new QueryClientError('error', {\n message: 'no errors registered for request!',\n request,\n });\n // If the maximum number of retries has been reached, report an error.\n if (executions > retryOptions.count) {\n const error = \n // if retry is disabled return the last error, else return all registered errors\n retryOptions.count === 0\n ? cause\n : new QueryClientError('error', {\n message: 'maximum retries executed!',\n cause: request.errors,\n request,\n });\n return of(actions.error(transaction, error));\n }\n // Create an Observable that emits after the specified delay for the retry.\n const delay$ = typeof retryOptions.delay === 'function'\n ? from(retryOptions.delay(cause)).pipe(\n // Catch errors that occur within the delay calculation.\n catchError((cause) => of(actions.error(transaction, new QueryClientError('error', {\n message: 'retry delay callback failed!',\n cause: [...(request.errors ?? []), cause],\n request,\n })))))\n : timer(retryOptions.delay);\n // After the delay, check if the request is still present and initiate a retry.\n return delay$.pipe(withLatestFrom(state$), \n // Ensure the request has not been removed from the state during the delay.\n filter(([_, state]) => !!state[transaction]), \n // If the request has been removed, throw an error.\n tap(([, state]) => {\n // Re-check inside the tap since the request could have been removed during the delay\n if (!state[transaction]) {\n throw new QueryClientError('error', {\n message: 'request not found, most likely removed while scheduled for retry',\n cause: request.errors,\n request,\n });\n }\n }), \n // Emit an action to re-execute the request.\n map(() => actions.execute(transaction)));\n }));\n };\n};\n//# sourceMappingURL=handle-failure.js.map","import { castDraft, createReducer as makeReducer } from '@equinor/fusion-observable';\nimport { actions } from './actions';\n/**\n * Creates a reducer function for managing the state of query client operations.\n * The reducer updates the state based on actions dispatched related to query transactions.\n *\n * The state is an object where each key represents a unique transaction ID and its value\n * is a `QueryClientRequest` object that contains details about the request, its execution status,\n * any errors that occurred, and the results of the query execution.\n *\n * The reducer handles the following actions:\n * - `request`: Initializes a new query in the state with the given transaction ID.\n * The state is updated with a new `QueryClientRequest` object which includes the request details,\n * an empty execution log, an empty error log, and sets the status to 'idle'.\n * - `execute`: Marks a query as active by updating its status to 'active' and logs the execution time.\n * - `execute.success`: Removes a successfully executed query from the state, indicating the query has completed.\n * - `execute.failure`: Updates a query's status to 'failed' and logs the error information.\n * - `error`: Removes a query from the state due to an irrecoverable error, effectively cleaning up its state.\n * - `cancel`: Removes a query from the state if it's canceled, cleaning up any associated state.\n *\n * This reducer is created using a builder pattern provided by `makeReducer` from '@equinor/fusion-observable',\n * allowing for a declarative approach to defining how state is updated in response to actions.\n *\n * @param initial An optional initial state for the reducer. If not provided, defaults to an empty object.\n * @returns A reducer function tailored for managing the state of query client operations.\n */\nexport const createReducer = (initial = {}) => makeReducer(initial, (builder) => {\n builder.addCase(actions.request, (state, action) => {\n // When an action of type 'request' is dispatched, this case handler will be invoked.\n // It updates the state by setting a new `QueryClientRequest` object for the key specified by `action.meta.transaction`.\n // The new `QueryClientRequest` object is created by merging `action.payload` and `action.meta`, and initializing\n // `execution` as an empty array, `errors` as an empty array, and `status` as 'idle'.\n state[action.meta.transaction] = castDraft({\n ...action.payload,\n ...action.meta,\n execution: [],\n errors: [],\n status: 'idle',\n });\n });\n builder.addCase(actions.execute, (state, action) => {\n // Locates the query entry in the state using the transaction ID provided in `action.payload`.\n const entry = state[action.payload];\n // If the entry is found, logs the current timestamp to the `execution` array\n // to indicate when the execution action was triggered.\n if (entry) {\n entry.execution.push(Date.now());\n // Updates the status of the entry to 'active' to reflect that the execution\n // process has started.\n entry.status = 'active';\n }\n });\n builder.addCase(actions.execute.success, (state, action) => {\n // When an action of type 'execute.success' is dispatched, this case handler will be invoked.\n // It removes the query entry from the state using the transaction ID provided in `action.payload.transaction`.\n delete state[action.payload.transaction];\n });\n builder.addCase(actions.execute.failure, (state, action) => {\n // Locates the query entry in the state using the transaction ID provided in `action.meta`.\n const entry = state[action.meta.transaction];\n // If the entry is found, the error information from `action.payload.error` is added to the `errors` array of the entry.\n // This allows tracking of all errors that have occurred during the execution of the query.\n if (entry) {\n entry.errors.push(action.payload.error);\n // The status of the entry is updated to 'failed' to indicate that the query execution has encountered an error.\n entry.status = 'failed';\n }\n });\n builder.addCase(actions.error, (state, action) => {\n // When an action of type 'error' is dispatched, this case handler will be invoked.\n // This handler removes the query entry from the state using the transaction ID provided in `action.meta.transaction`.\n // This is typically used to clean up any state associated with a transaction that has encountered an irrecoverable error.\n delete state[action.meta.transaction];\n });\n builder.addCase(actions.cancel, (state, action) => {\n // When an action of type 'cancel' is dispatched, this case handler will be invoked.\n // It removes the query entry from the state using the transaction ID provided in `action.meta.transaction`.\n // This is useful for cleaning up any state associated with a transaction that is no longer needed, effectively canceling the operation.\n delete state[action.meta.transaction];\n });\n});\nexport default createReducer;\n//# sourceMappingURL=create-reducer.js.map","import { BehaviorSubject, Observable, fromEvent } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { QueryClientError } from './QueryClientError';\nimport { actions } from './actions';\n/**\n * Represents a job for the QueryClient that extends an Observable.\n * It manages the lifecycle of a query operation.\n */\nexport class QueryClientJob extends Observable {\n /**\n * The current status of the job.\n */\n #status$ = new BehaviorSubject('idle');\n /**\n * Returns the current status of the job.\n */\n get status() {\n return this.#status$.value;\n }\n /**\n * An Observable stream of the job's status, emitting whenever the status changes.\n */\n get status$() {\n return this.#status$.asObservable();\n }\n /**\n * The QueryClient instance associated with this job.\n */\n #client;\n /**\n * Returns the QueryClient instance associated with this job.\n */\n #transaction;\n /**\n * Returns the transaction identifier for this job.\n */\n get transaction() {\n return this.#transaction;\n }\n /** Timestamp, in milliseconds since epoch, when this job was created. */\n created = Date.now();\n /**\n * Indicates whether the query client job is closed.\n * A query client job is considered closed if its status is 'complete', 'error', or 'canceled'.\n */\n get closed() {\n return this.status === 'complete' || this.status === 'error' || this.status === 'canceled';\n }\n /**\n * Creates an instance of a QueryClientJob.\n * @param client The QueryClient instance.\n * @param args The arguments to be used for the query.\n * @param options Optional settings for the query client job.\n */\n constructor(client, args, options) {\n super((subscriber) => {\n const { transaction } = this;\n // Filters the actions stream for actions related to this job's transaction.\n const jobActions = client.action$.pipe(filter((action) => action.meta.transaction === transaction));\n // Subscribes to the state stream, updating the job's status when a related state entry is emitted.\n subscriber.add(client.state$\n .pipe(\n // Filters the state stream for entries related to this job's transaction.\n filter((state) => !!state[transaction]), \n // Maps the filtered state to the specific entry for this job, extracting its current status.\n map((state) => state[transaction]))\n .subscribe((entry) => {\n // Updates the internal BehaviorSubject with the new status.\n // This change is then propagated to all subscribers of the status$ Observable,\n // allowing them to react to status changes in real-time.\n this.#status$.next(entry.status);\n }));\n // Subscribes to the actions stream, completing the job when a successful execution action is emitted.\n subscriber.add(jobActions\n .pipe(filter(actions.execute.success.match), \n // Maps the successful execution action to its payload, effectively extracting the result of the query operation.\n // This result is then passed along to the subscribers of the QueryClientJob, allowing them to react to the successful completion of the job.\n map(({ payload }) => payload))\n .subscribe((result) => {\n // Updates the job's status to 'complete', indicating that the query operation has successfully finished.\n this.#status$.next('complete');\n // Notifies subscribers of the QueryClientJob with the result of the query operation.\n subscriber.next(result);\n // Completes the subscription, signaling that the job has finished and no more values will be emitted.\n // This is an important step to ensure that subscribers can perform any necessary cleanup or final actions.\n subscriber.complete();\n }));\n // Subscribes to the actions stream, emitting an error when an error action is emitted.\n subscriber.add(jobActions\n .pipe(filter(actions.error.match), map(({ payload }) => payload))\n .subscribe((err) => {\n this.#status$.next('error');\n // Emits an error to the subscriber with the error details from the payload.\n // This triggers the error handling mechanisms of the subscriber, allowing for\n // appropriate responses to the error condition.\n subscriber.error(err.error);\n }));\n // Subscribes to the actions stream, updating the job's status when a cancel action is emitted.\n subscriber.add(jobActions.pipe(filter(actions.cancel.match)).subscribe((action) => {\n this.#status$.next('canceled');\n // When a cancel action is received, it updates the job's status to 'canceled' and emits an error with a detailed message.\n // This includes the reason for cancellation if provided, or a default message indicating the job was canceled.\n // Additionally, it constructs a new `QueryClientError` with the 'abort' type, providing context about the request\n // associated with the canceled job, allowing for more informed error handling and debugging.\n subscriber.error(new QueryClientError('abort', {\n message: action.payload.reason || `job: ${transaction} was canceled`,\n request: this.#client.getRequest(action.meta.transaction),\n }));\n }));\n // If an abort signal is provided, subscribes to the abort event and dispatches a cancel action.\n if (options?.signal) {\n // Subscribes to the abort event on the provided signal. When the abort event is triggered,\n // it dispatches a cancel action with a specific message indicating the job was aborted\n // due to an external signal. This allows for external cancellation mechanisms to interact\n // with the job lifecycle.\n subscriber.add(fromEvent(options?.signal, 'abort')\n .pipe(\n // Maps the abort event to a cancel action, including a message that specifies\n // the transaction ID and an optional reference provided in the options.\n // This ensures that the cancellation is traceable to the abort signal.\n map(() => actions.cancel(transaction, `job: ${transaction} was aborted on signal from caller: ${options?.ref}`)))\n // Subscribes to the resulting Observable and dispatches the cancel action\n // to the QueryClient. This integrates the external abort mechanism with\n // the QueryClient's internal state management and action handling.\n .subscribe((action) => client.next(action)));\n }\n // Adds a teardown logic to cancel the job if it's still active upon unsubscription.\n subscriber.add(() => {\n this.complete();\n });\n });\n this.#client = client;\n // Dispatches a request action to start the job.\n const request = actions.request(args, { ref: options?.ref, retry: options?.retry });\n this.#transaction = request.meta.transaction;\n this.#client.next(request);\n }\n /**\n * Completes the job if it's not already closed, marking it as 'complete'.\n * This method should be called to gracefully end a job that has finished its task.\n * It will also attempt to cancel the job with a completion reason, transitioning its status to 'canceled'\n * if it was in an 'active' state but hadn't yet completed.\n * @param reason - Optional reason recorded for the completion/cancellation.\n */\n complete(reason) {\n // Only cancel/complete when the job isn't already in a terminal state\n if (!this.closed) {\n this.cancel(reason ?? `job: ${this.transaction} was completed`);\n }\n }\n /**\n * Cancels the job with an optional reason, marking its status as 'canceled'.\n * This method is used to prematurely end a job that cannot complete its task, either due to an error or a user-defined condition.\n * Upon cancellation, a cancellation action is dispatched to notify other parts of the application that the job has been canceled.\n * @param reason The reason for the cancellation, which will be included in the cancellation action.\n */\n cancel(reason) {\n const transaction = this.transaction;\n this.#client.cancel(transaction, reason ?? `job: ${transaction} was canceled`);\n }\n /**\n * Disposes of the job by completing it, releasing any held resources.\n */\n [Symbol.dispose]() {\n this.complete();\n }\n}\n//# sourceMappingURL=QueryClientJob.js.map","/**\n * Event class for QueryClient lifecycle events.\n *\n * This class represents events that track the various stages of query execution\n * within the QueryClient, providing type-safe event data and transaction tracking.\n *\n * @template TData - The type of data associated with this event\n */\nexport class QueryClientEvent {\n type;\n transaction;\n data;\n /**\n * Creates a new QueryClient event.\n *\n * @param type - The specific event type identifier\n * @param transaction - Unique transaction identifier for the query operation\n * @param data - Optional event-specific data payload\n */\n constructor(type, transaction, data) {\n this.type = type;\n this.transaction = transaction;\n this.data = data;\n }\n}\n//# sourceMappingURL=QueryClientEvent.js.map","import { firstValueFrom, Observable, ReplaySubject, Subject, Subscription } from 'rxjs';\nimport { filter, map, share, withLatestFrom } from 'rxjs/operators';\nimport { FlowSubject } from '@equinor/fusion-observable';\nimport { filterAction } from '@equinor/fusion-observable/operators';\nimport actions from './actions';\nimport { handleRequests } from './handle-requests';\nimport { handleExecution } from './handle-execution';\nimport { handleFailure } from './handle-failure';\nimport { QueryClientError } from './QueryClientError';\nimport createReducer from './create-reducer';\nimport { QueryClientJob } from './QueryClientJob';\nimport { QueryClientEvent, } from './QueryClientEvent';\n/**\n * QueryClient is a generic class that manages the state of asynchronous queries\n * and their lifecycle. It extends Observable to allow subscribers to react to state changes.\n *\n * It uses a FlowSubject to manage a stream of actions that describe the state changes and\n * side effects such as logging. The internal state is managed by a reducer function that\n * processes these actions.\n *\n * The QueryClient provides several specialized Observables (success$, error$, etc.) to\n * observe particular aspects of the query lifecycle, such as successful results or errors.\n *\n * @template TType The type of the data returned by the query function.\n * @template TArgs The type of the arguments passed to the query function.\n */\nexport class QueryClient extends Observable {\n /** Internal state managed by a FlowSubject. */\n #state;\n /** Subscription to manage cleanup of resources on completion. */\n #subscription;\n /**\n * Events subject for emitting QueryClient lifecycle events.\n *\n * This subject broadcasts events that track query execution stages,\n * allowing external observers to monitor query progress, success, and failures.\n */\n #events;\n /**\n * Protected method to emit QueryClient lifecycle events.\n *\n * This method creates and emits events that track the various stages of query execution,\n * allowing external observers to monitor query progress, success, failure, and cancellation.\n *\n * @template TType - The specific event type from QueryClientEvents\n * @param type - The event type identifier\n * @param transaction - Unique transaction identifier for the query operation\n * @param data - Optional event-specific data payload (type-safe based on event type)\n * @protected\n */\n _registerEvent(type, transaction, data) {\n this.#events.next(new QueryClientEvent(type, transaction, data));\n }\n /**\n * Indicates whether the QueryClient has been closed and is no longer accepting new actions.\n * @returns {boolean} A boolean value indicating if the state is closed.\n */\n get closed() {\n return this.#state.closed;\n }\n /**\n * An Observable of the current state. It emits the current state of the query client\n * whenever it changes.\n * @returns {Observable<QueryClientState<TArgs>>} An Observable stream of the current state.\n */\n get state$() {\n return this.#state.asObservable();\n }\n /**\n * An Observable stream of dispatched actions. It allows subscribers to react to\n * specific actions that are dispatched in the system.\n * @returns {Observable<Actions<TType, TArgs>>} An Observable stream of actions.\n */\n get action$() {\n return this.#state.action$;\n }\n /**\n * An Observable stream of QueryClient lifecycle events.\n *\n * This stream emits events that track the various stages of query execution,\n * including job requested, executing, completed, failed, canceled, and error events.\n * Subscribers can monitor query progress and handle different lifecycle events.\n *\n * @returns An Observable stream of QueryClient events\n */\n get event$() {\n return this.#events.asObservable();\n }\n /**\n * An Observable stream of successful query results. It emits the result of a query\n * when it completes successfully.\n * @returns {Observable<TType>} An Observable stream of successful results.\n */\n get success$() {\n // narrow the action stream down to successful execute actions and extract their payload\n return this.action$.pipe(filter(actions.execute.success.match), map(({ payload }) => payload));\n }\n /**\n * An Observable stream of query errors. It emits an instance of QueryClientError\n * when a query fails to complete.\n * @returns {Observable<QueryClientError>} An Observable stream of query errors.\n */\n get error$() {\n // narrow the action stream down to client errors and wrap them as QueryClientError instances\n return this.action$.pipe(filterAction('client/error'), withLatestFrom(this.#state), map(([action, state]) => {\n const { payload, meta: { transaction }, } = action;\n const request = state[transaction];\n return new QueryClientError('error', {\n request,\n message: `job: ${transaction} failed`,\n cause: payload,\n });\n }));\n }\n /**\n * Creates an instance of QueryClient.\n * @param {QueryFn<TType, TArgs>} queryFn A function that performs the asynchronous query.\n * @param {QueryClientCtorOptions} [options] Optional configuration options for the QueryClient.\n */\n constructor(queryFn, options) {\n super((subscriber) => {\n return this.#state.subscribe(subscriber);\n });\n this.#state = new FlowSubject(createReducer({}));\n // Set up subscription for cleanup, ensuring both state and events subjects are completed\n this.#subscription = new Subscription(() => {\n this.#state.complete();\n this.#events.complete();\n });\n // Initialize events subject for broadcasting lifecycle events\n this.#events = new Subject();\n // Add flows to handle different aspects of the query lifecycle.\n this.#subscription.add(this.#state.addFlow(handleRequests));\n this.#subscription.add(this.#state.addFlow(handleExecution(queryFn)));\n // merge caller-provided retry options over the defaults\n const retryOptions = Object.assign({ count: 0, delay: 0 }, options?.retry);\n this.#subscription.add(this.#state.addFlow(handleFailure(retryOptions)));\n /**\n * Register effects to emit lifecycle events for different query actions.\n *\n * These effects monitor the internal state changes and emit corresponding events\n * that external observers can subscribe to for tracking query progress.\n */\n // Emit event when a query request is initiated\n this.#state.addEffect(actions.request.type, ({ payload, meta: { transaction } }) => {\n this._registerEvent('query_client_job_requested', transaction, payload);\n });\n // Emit event when query execution begins\n this.#state.addEffect(actions.execute.type, ({ meta: { transaction } }) => {\n this._registerEvent('query_client_job_executing', transaction);\n });\n // Emit event when query execution completes successfully\n this.#state.addEffect(actions.execute.success.type, ({ payload, meta: { transaction } }) => {\n this._registerEvent('query_client_job_completed', transaction, { payload });\n });\n // Emit event when query execution fails\n this.#state.addEffect(actions.execute.failure.type, ({ payload, meta: { transaction } }) => {\n const error = payload.error instanceof Error ? payload.error : new Error(String(payload.error));\n this._registerEvent('query_client_job_failed', transaction, { error });\n });\n // Emit event when a query is canceled\n this.#state.addEffect(actions.cancel.type, ({ payload: { reason }, meta: { transaction } }) => {\n this._registerEvent('query_client_job_canceled', transaction, {\n reason: reason || 'no reason provided',\n });\n });\n // Emit event when a general error occurs during query processing\n this.#state.addEffect(actions.error.type, ({ payload, meta: { transaction } }) => {\n const error = payload.error instanceof Error ? payload.error : new Error(String(payload.error));\n this._registerEvent('query_client_job_error', transaction, { error });\n });\n }\n /**\n * Dispatches an action to the internal state subject, which will be processed by the reducer\n * and any registered effects.\n * @param {Actions} action The action to dispatch.\n */\n next(action) {\n this.#state.next(action);\n }\n /**\n * Initiates a query with the provided arguments and options. It returns a QueryClientJob\n * which is an Observable that represents the lifecycle of the query.\n * @param {TArgs} args Call arguments for the query function.\n * @param {Partial<QueryClientOptions>} [opt] Query options.\n * @returns {QueryClientJob<TType, TArgs>} The QueryClientJob representing the initiated query.\n */\n query(args, opt) {\n const job = new QueryClientJob(this, args, opt);\n // share a single underlying job execution across all subscribers, replaying past emissions to late subscribers\n const job$ = job.pipe(share({ connector: () => new ReplaySubject(), resetOnRefCountZero: false }));\n Object.defineProperties(job$, {\n transaction: { get: () => job.transaction },\n created: { get: () => job.created },\n status: { get: () => job.status },\n closed: { get: () => job.closed },\n cancel: { value: (reason) => job.cancel(reason) },\n complete: { value: () => job.complete() },\n });\n // `job$` is a plain shared Observable; the properties defined above give it the\n // `QueryClientJob` shape at runtime, which TypeScript can't infer structurally.\n return job$;\n }\n /**\n * Initiates a query and returns a promise that resolves with the result of the query.\n * It is a convenience method that wraps the query method for use with async/await syntax.\n * @param {TArgs} args Call arguments for the query function.\n * @param {QueryClientOptions} [opt] Query options.\n * @returns {Promise<QueryClientResult<TType>>} A promise that resolves with the result of the query.\n */\n async nextAsync(args, opt) {\n return firstValueFrom(this.query(args, opt));\n }\n /**\n * Retrieves the request associated with the specified transaction.\n *\n * @param transaction - The transaction identifier.\n * @returns The request associated with the specified transaction.\n */\n getRequest(transaction) {\n return this.#state.value[transaction];\n }\n /**\n * Retrieves the request associated with the specified reference string.\n *\n * @param ref - The reference identifier to search for.\n * @returns The request matching the reference, or `undefined` if not found.\n */\n getRequestByRef(ref) {\n const requests = Object.values(this.#state.value);\n // scan all tracked requests for the one matching the given ref\n const match = requests.find((x) => x.ref === ref);\n return match;\n }\n /**\n * Cancels a task by its reference string. If a reason is provided, it will be included\n * in the cancellation effect.\n * @param {string} ref The reference string of the task to cancel.\n * @param {string} [reason] The reason for cancellation.\n */\n cancelTaskByRef(ref, reason) {\n const entry = this.getRequestByRef(ref);\n // Only cancel when a matching request was actually found\n if (entry?.ref) {\n this.cancel(entry.transaction, reason);\n }\n }\n /**\n * Cancels a query. If a transaction id is provided, it cancels the specific query.\n * Otherwise, it cancels all queries.\n * @param {string} [transaction] The transaction id of the query to cancel.\n * @param {string} [reason] The reason for cancellation.\n */\n cancel(transaction, reason) {\n // No transaction targeted — cancel every tracked transaction\n if (!transaction) {\n // If no specific transaction is provided, iterate through all transactions\n // in the state and cancel each one, applying a generic cancellation reason.\n for (const key of Object.keys(this.#state.value)) {\n this.cancel(key, 'all transactions requested canceled');\n }\n }\n else if (this.#state.value[transaction]) {\n // If a specific transaction is provided and it exists in the state,\n // dispatch a cancellation action with an optional reason or a default message.\n reason ??= `cancelation requested for job: ${transaction}`;\n this.#state.next(actions.cancel(transaction, reason));\n }\n }\n /**\n * Registers a callback to be executed when an action of the specified type is dispatched.\n * It allows for custom behavior to be defined in response to specific actions.\n * @template TAction The type of the action to listen for.\n * @param {TAction} type The type of the action.\n * @param {(action: ActionMap[TAction], subject: QueryClient<TType, TArgs>) => void} cb The callback to execute.\n * @returns {Subscription} A Subscription that can be used to unregister the effect.\n */\n on(type, cb) {\n return this.#state.addEffect(actions[type].type, (action) => {\n cb(action, this);\n });\n }\n /**\n * Completes the QueryClient's internal state subject, effectively cleaning up all\n * resources and subscriptions. After calling complete, the QueryClient will no longer\n * accept new actions or emit new state changes.\n */\n complete() {\n this.#subscription.unsubscribe();\n }\n}\nexport default QueryClient;\n//# sourceMappingURL=QueryClient.js.map","import { createAction } from '@equinor/fusion-observable';\n/**\n * Creates a set of actions to manipulate cache entries.\n *\n * @template TType The type of the value being cached.\n * @template TArgs The type of the arguments associated with the cache entry.\n * @returns An object containing the cache actions.\n */\n// biome-ignore lint/suspicious/noExplicitAny: default must be bivariant `any`; `unknown` breaks assignability of concrete `Actions<TType, TArgs>` streams (e.g. in `Observable<Actions<TType, TArgs>>` subscriptions) to the default-typed generic\nfunction createActions() {\n return {\n /**\n * Action to set a cache entry.\n *\n * @param key The cache key.\n * @param record The cache record to set.\n * @returns An action object with the cache key and record.\n */\n set: createAction('cache/set', (key, record) => ({\n payload: { key, record },\n })),\n /**\n * Action to set a cache entry.\n *\n * @param key The cache key.\n * @param entry The cache entry, including value, arguments, and transaction identifier.\n * @returns An action object with the cache key and entry.\n */\n insert: createAction('cache/insert', (key, entry) => {\n return { payload: { key, entry } };\n }),\n /**\n * Action to remove a cache entry.\n *\n * @param key The cache key to remove.\n * @returns An action object with the cache key.\n */\n remove: createAction('cache/remove', (key) => ({ payload: key })),\n /**\n * Action to invalidate a cache entry.\n *\n * @param key The cache key to invalidate.\n * @returns An action object with the cache key.\n */\n invalidate: createAction('cache/invalidate', (key, item) => ({\n payload: key,\n meta: { item },\n })),\n /**\n * Action to mutate a cache entry.\n *\n * @param changes An object containing the cache key, new value, and optional updated timestamp and transaction identifier.\n * @param current The current cache record, if available.\n * @returns An action object with the changes to be applied to the cache entry and the current cache record as metadata.\n */\n mutate: createAction('cache/mutate', (key, changes, item) => ({\n payload: { ...changes, key },\n meta: { item },\n })),\n /**\n * Action to trim the cache based on certain criteria.\n *\n * @param payload Object containing optional sort function, validation function, and size limit.\n * @returns An action object with the payload.\n */\n trim: createAction('cache/trim', (payload) => {\n return { payload };\n }),\n };\n}\n/**\n * The singleton actions object containing all cache manipulation actions.\n */\nexport const actions = createActions();\n//# sourceMappingURL=actions.js.map","import { castDraft } from 'immer';\nimport { createReducer } from '@equinor/fusion-observable';\n/**\n * Sort function for ordering cache records based on their update time.\n * @param a First QueryCacheRecord for comparison.\n * @param b Second QueryCacheRecord for comparison.\n * @returns A number indicating the sort order.\n */\nconst sortCache = (a, b) => {\n return (b.updated ?? 0) - (a.updated ?? 0);\n};\n/**\n * Creates a reducer for managing the state of a query cache.\n * @param actions An object containing action creators for the cache.\n * @param initial The initial state data of the query cache.\n * @returns A reducer function tailored for the query cache state.\n */\nexport default function (actions, initial = {}) {\n return createReducer(initial, (builder) => builder\n .addCase(actions.set, (state, action) => {\n const { key, record } = action.payload;\n state[key] = castDraft(record);\n })\n // Handles the 'set' action to update or add a cache record.\n .addCase(actions.insert, (state, action) => {\n const { key, entry } = action.payload;\n const record = state[key];\n // Update the existing entry in place, or create a new one if none exists yet\n if (record) {\n // If the record exists, update the timestamp and increment the update count.\n record.updated = Date.now();\n record.updates ??= 0;\n record.updates++;\n record.value = entry.value;\n record.transaction = entry.transaction;\n // reset the mutated timestamp\n record.mutated = undefined;\n }\n else {\n // If the record does not exist, create a new one with the current timestamp.\n const created = Date.now();\n state[key] = castDraft({\n ...entry,\n created,\n updated: created, // Set `updated` to the creation time.\n });\n }\n })\n // Handles the 'remove' action to delete a cache record.\n .addCase(actions.remove, (state, action) => {\n delete state[action.payload];\n })\n // Handles the 'invalidate' action to invalidate a cache record.\n .addCase(actions.invalidate, (state, action) => {\n const invalidKey = action.payload ? [action.payload] : Object.keys(state);\n // Invalidate either the single targeted key, or every key when none was specified\n for (const key of invalidKey) {\n const entry = state[key];\n // Only reset the timestamp when the record actually exists\n if (entry) {\n // reset the updated timestamp\n entry.updated = undefined;\n }\n }\n })\n // Handles the 'mutate' action to modify a cache record's value and metadata.\n .addCase(actions.mutate, (state, action) => {\n const { key, value, updated } = action.payload;\n const record = state[key];\n // Only apply the mutation when a record exists for this key\n if (record) {\n // Update the record with the new value and metadata.\n record.value = value;\n record.updated = updated;\n record.mutated = Date.now();\n record.updates ??= 0;\n record.updates++;\n }\n })\n // Handles the 'trim' action to limit the number of cache records and remove invalid ones.\n .addCase(actions.trim, (state, action) => {\n const { payload } = action;\n const sortFn = payload.sort ?? sortCache; // Use custom sort function if provided.\n const currentKeys = Object.keys(state);\n const validKeys = Object.entries(state)\n // Filter out invalid entries based on the provided validation function.\n .filter(([_, value]) => !payload.validate || payload.validate(value))\n // Sort the remaining entries using the provided sort function.\n .sort((a, b) => sortFn(a[1], b[1]))\n // Limit the number of entries based on the specified size or default to MAX_SAFE_INTEGER.\n .slice(0, payload.size ?? Number.MAX_SAFE_INTEGER)\n // Map the entries to their keys.\n .map(([key]) => key);\n // Remove keys that are not in the list of valid keys.\n if (currentKeys.length !== validKeys.length) {\n // Walk all current keys and drop the ones that were trimmed away\n for (const key of currentKeys) {\n const validKeyIndex = validKeys.indexOf(key);\n // The key survived trimming — remove it from the search list so later lookups are faster\n if (validKeyIndex !== -1) {\n // If the key is valid, remove it from the search list.\n validKeys.splice(validKeyIndex, 1);\n }\n else {\n // If the key is not valid, remove it from the state.\n delete state[key];\n }\n }\n }\n }));\n}\n//# sourceMappingURL=create-reducer.js.map","/**\n * Event class for QueryCache lifecycle events.\n *\n * This class represents events that track the various operations performed\n * on the QueryCache, providing type-safe event data and cache key tracking.\n *\n * @template TData - The type of data associated with this event\n */\nexport class QueryCacheEvent {\n type;\n key;\n data;\n /**\n * Creates a new QueryCache event.\n *\n * @param type - The specific event type identifier\n * @param key - The cache key associated with this event\n * @param data - Optional event-specific data payload\n */\n constructor(type, key, data) {\n this.type = type;\n this.key = key;\n this.data = data;\n }\n}\n//# sourceMappingURL=QueryCacheEvent.js.map","import { Subject } from 'rxjs';\nimport { FlowSubject } from '@equinor/fusion-observable';\nimport { actions } from './actions';\nimport createReducer from './create-reducer';\nimport { QueryCacheEvent, } from './QueryCacheEvent';\n/**\n * A class that represents a cache for storing query results.\n * @template TType - The type of the response data.\n * @template TArgs - The type of the arguments used to fetch the data.\n */\nexport class QueryCache {\n /**\n * The internal state of the query cache, represented as a FlowSubject.\n */\n #state;\n /**\n * Events subject for emitting QueryCache lifecycle events.\n *\n * This subject broadcasts events that track cache operations,\n * allowing external observers to monitor cache changes and mutations.\n */\n #events;\n /**\n * Retrieves the current state of the query cache as a record.\n * @returns {Record<string, QueryCacheRecord<TType, TArgs>>} The current state.\n */\n get state() {\n return this.#state.value;\n }\n /**\n * Retrieves an Observable that emits the current state of the query cache.\n * @returns {Observable<Record<string, QueryCacheRecord<TType, TArgs>>>} An observable of the current state.\n */\n get state$() {\n return this.#state.asObservable();\n }\n /**\n * Retrieves an Observable that emits the actions dispatched to the query cache.\n * @returns {Observable<Actions<TType, TArgs>>} An observable of the dispatched actions.\n */\n get action$() {\n return this.#state.action$;\n }\n /**\n * Protected method to emit QueryCache lifecycle events.\n *\n * This method creates and emits events that track the various operations performed\n * on the cache, allowing external observers to monitor cache changes and mutations.\n *\n * @template TType - The specific event type from QueryCacheEvents\n * @param type - The event type identifier\n * @param key - The cache key associated with this event\n * @param data - Optional event-specific data payload (type-safe based on event type)\n * @protected\n */\n _registerEvent(type, args) {\n this.#events.next(new QueryCacheEvent(type, args?.key, args?.data));\n }\n /**\n * An Observable stream of QueryCache lifecycle events.\n *\n * This stream emits events that track the various operations performed on the cache,\n * including entry set, inserted, removed, invalidated, mutated, and trimmed events.\n * Subscribers can monitor cache changes and handle different lifecycle events.\n *\n * @returns An Observable stream of QueryCache events\n */\n get event$() {\n return this.#events.asObservable();\n }\n /**\n * Creates a new instance of QueryCache.\n * @param {QueryCacheCtorArgs<TType, TArgs>} args - The constructor arguments.\n */\n constructor(args) {\n const { trimming, initial } = args ?? {};\n this.#state = new FlowSubject(createReducer(actions, initial));\n // Only wire up automatic trimming when a trimming policy was provided\n if (trimming) {\n this.#state.addEffect('cache/set', () => this.#state.next(actions.trim(trimming)));\n }\n // Initialize events subject for broadcasting lifecycle events\n this.#events = new Subject();\n }\n /**\n * Checks if an item exists in the query cache by key.\n * @param {string} key - The key of the item to check.\n * @returns {boolean} True if the item exists, otherwise false.\n */\n has(key) {\n return key in this.#state.value;\n }\n /**\n * Sets the value of an item in the query cache.\n * @param {string} key - The key of the item to set.\n * @param {Pick<QueryCacheRecord<TType, TArgs>, 'value' | 'args' | 'transaction'>} record - The new value of the item.\n */\n setItem(key, record) {\n const { args, transaction, value } = record;\n this.#state.next(actions.insert(key, { args, transaction, value }));\n this._registerEvent('query_cache_entry_inserted', { key, data: { value, args, transaction } });\n }\n /**\n * Retrieves an item from the query cache by key.\n * @param {string} key - The key of the item to retrieve.\n * @returns {QueryCacheRecord<TType, TArgs> | undefined} The cached item or undefined if not found.\n */\n getItem(key) {\n return this.#state.value[key];\n }\n /**\n * Removes an item from the query cache by key.\n * @param {string} key - The key of the item to remove.\n */\n removeItem(key) {\n this.#state.next(actions.remove(key));\n this._registerEvent('query_cache_entry_removed', { key });\n }\n /**\n * Invalidates an item in the query cache by key, causing it to be refetched on next request.\n * @param {string} key - The key of the item to invalidate.\n */\n invalidate(key) {\n const item = key ? this.#state.value[key] : undefined;\n this.#state.next(actions.invalidate(key, item));\n // Only emit an event when a specific key was invalidated (not a full-cache clear)\n if (key) {\n this._registerEvent('query_cache_entry_invalidated', {\n key,\n data: { previousValue: item?.value },\n });\n }\n }\n /**\n * Mutates an item in the query cache by key.\n * @param {string} key - The key of the item to mutate.\n * @param {QueryCacheMutation | ((current: TType) => QueryCacheMutation)} changes - The changes to apply to the item.\n * @returns A function that reverts the mutation, restoring the previous value.\n * @throws {Error} When no cache entry exists for `key`.\n */\n mutate(key, changes) {\n const current = key in this.#state.value ? this.#state.value[key] : undefined;\n // A missing entry cannot be mutated — mutation only ever updates existing entries\n if (!current) {\n throw new Error(`Cannot mutate cache item with key ${key}: item not found`);\n }\n const next = typeof changes === 'function' ? changes(current?.value) : changes;\n this.#state.next(actions.mutate(key, next, current));\n this._registerEvent('query_cache_entry_mutated', {\n key,\n data: {\n previousValue: current.value,\n newValue: next,\n mutation: next,\n },\n });\n return () => this.#state.next(actions.set(key, current));\n }\n /**\n * Trims the query cache based on the provided options.\n * @param {TrimOptions<TType, TArgs>} options - The options for trimming the cache.\n */\n trim(options) {\n const beforeKeys = new Set(Object.keys(this.#state.value));\n this.#state.next(actions.trim(options));\n const afterKeys = new Set(Object.keys(this.#state.value));\n // keys that existed before trimming but not after were the ones removed\n const removedKeys = Array.from(beforeKeys).filter((key) => !afterKeys.has(key));\n this._registerEvent('query_cache_trimmed', {\n data: {\n removedKeys,\n criteria: options,\n },\n });\n }\n /**\n * Resets the query cache to its initial state.\n */\n reset() {\n this.#state.reset();\n this._registerEvent('query_cache_reset');\n }\n /**\n * Completes the query cache, signaling that no more items will be added to the cache.\n */\n complete() {\n this.#state.complete();\n this.#events.complete();\n }\n}\nexport default QueryCache;\n//# sourceMappingURL=QueryCache.js.map","import { Subject } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\nimport { v4 as generateGUID } from 'uuid';\n/**\n * The `QueryTask` class is designed to manage and execute query operations efficiently. It extends the RxJS `Subject` to\n * allow for easy subscription to the outcome of the query operation. This class is generic and can be used with any type\n * of query result (`TType`) and arguments (`TArgs`) necessary for executing the query.\n *\n * Upon instantiation, each `QueryTask` is assigned a unique identifier and a timestamp marking its creation. This\n * information, along with the key and arguments provided during construction, are used to manage and track the query\n * throughout its lifecycle.\n *\n * The primary method, `processJob`, takes a `QueryClientJob` and an optional `ILogger` for logging purposes. It processes\n * the job by mapping its result to a `QueryTaskCompleted` object, logging the completion, and then notifying all\n * subscribers of the completion. This method leverages RxJS operators for a clean and manageable implementation.\n *\n * ### Generics:\n * - `TType`: The expected type of the query result. This type will be used to type-check the result of the query operation,\n * ensuring type safety throughout the usage of this class.\n * - `TArgs`: The type of the arguments required to perform the query. This ensures that only the correct types of arguments\n * are passed to execute the query, preventing runtime errors and ensuring type safety.\n *\n * ### Properties:\n * - `key`: A string that represents the key associated with the query. This key is used to identify the query operation.\n * - `args`: The arguments required for performing the query. The type of `args` is generic and specified by `TArgs`.\n * - `options`: An optional parameter that allows for additional configuration of the query execution. This is a partial\n * of `QueryOptions<TType, TArgs>`, allowing for flexibility in specifying query options.\n * - `created`: A read-only property that returns the timestamp marking the creation of the `QueryTask` instance.\n * - `uuid`: A read-only property that returns the unique identifier of the `QueryTask` instance.\n *\n * ### Method:\n * - `processJob(job: QueryClientJob<TType, TArgs>, logger?: ILogger): Subscription`: Processes the provided `QueryClientJob`,\n * applying necessary transformations and finalizations. It returns a `Subscription` to the job's result, allowing for\n * further manipulation or cleanup if necessary.\n *\n * This class provides a robust and type-safe way to handle query operations, making it a valuable tool for managing\n * asynchronous data retrieval and processing within the application.\n *\n * @template TType - The type of the query result.\n * @template TArgs - The type of the query arguments.\n */\nexport class QueryTask extends Subject {\n key;\n args;\n options;\n #created = Date.now();\n /**\n * Gets the creation timestamp of the query task.\n * @returns The Unix timestamp (in milliseconds) when the task was created.\n */\n get created() {\n return this.#created;\n }\n #uuid = generateGUID();\n /**\n * Gets the unique identifier of the query task.\n * @returns The task's generated UUID.\n */\n get uuid() {\n return this.#uuid;\n }\n /**\n * Initializes a new instance of the QueryTask class.\n * @param key A string representing the key associated with the query.\n * @param args The arguments required for performing the query.\n * @param options Optional. Additional options that may influence the query execution.\n */\n constructor(key, args, options) {\n super();\n this.key = key;\n this.args = args;\n this.options = options;\n }\n /**\n * Processes the given `QueryClientJob`, applying necessary transformations and finalizations.\n * Once the job completes, it notifies all subscribers with the result and logs the completion.\n *\n * @param job The `QueryClientJob` to be processed.\n * @param logger Optional. A logger for logging the completion of the job.\n * @returns A subscription to the job's result.\n */\n processJob(job) {\n // map the job's completion into a QueryTaskCompleted record for subscribers\n return job\n .pipe(map((result) => {\n const { key, uuid, created } = this;\n return {\n key,\n uuid,\n created,\n status: 'complete',\n transaction: job.transaction,\n complete: result.completed,\n value: result.value,\n };\n }), finalize(() => {\n job.complete();\n }))\n .subscribe(this);\n }\n}\n//# sourceMappingURL=QueryTask.js.map","/**\n * Concrete event class emitted by the {@link Query} instance itself.\n *\n * Represents lifecycle events for query creation, completion, caching, and job management.\n * Subscribers can use `instanceof QueryEvent` to filter for query-level events\n * when the aggregated `event$` stream also contains client and cache events.\n *\n * @template TData - The type of data payload carried by this event.\n */\nexport class QueryEvent {\n type;\n key;\n data;\n /**\n * Creates a new Query event.\n *\n * @param type - The specific event type identifier.\n * @param key - The cache key associated with this event.\n * @param data - Optional event-specific data payload.\n */\n constructor(type, key, data) {\n this.type = type;\n this.key = key;\n this.data = data;\n }\n}\n//# sourceMappingURL=QueryEvent.js.map","import { EMPTY, firstValueFrom, fromEvent, interval, lastValueFrom, Observable, Subject, Subscription, } from 'rxjs';\nimport { catchError, distinctUntilChanged, filter, map, takeWhile, tap, throwIfEmpty, } from 'rxjs/operators';\nimport { v4 as generateGUID, v5 as generateUniqueKey } from 'uuid';\nimport { QueryClient } from './client';\nimport { QueryCache } from './cache';\nimport { concatQueue, mergeQueue, queryValue, switchQueue } from './operators';\nimport { filterAction } from '@equinor/fusion-observable/operators';\nimport { QueryTask } from './QueryTask';\nimport { QueryEvent } from './QueryEvent';\n/**\n * The default function for validating cache entries based on expiration time.\n * This function generates a validator that checks whether the cache entry has expired based on the current time\n * and the expiration time provided. If the expiration time is 0, the cache entry is always considered invalid.\n *\n * @template TDataType - The type of the data in the cache entry.\n * @template TQueryArguments - The type of the arguments used to validate the cache entry.\n *\n * @param expires - The expiration time in milliseconds. If 0, the cache entry is always considered invalid.\n *\n * @returns A function that takes a cache entry and returns a boolean indicating whether the entry is still valid.\n */\nconst defaultCacheValidator = (expires = 0) => (entry) => (entry.updated ?? 0) + expires > Date.now();\n/**\n * A utility function that returns a query queue function based on the provided operator type or custom function.\n * The queue function is responsible for controlling how query requests are processed in relation to each other.\n * Depending on the chosen strategy, requests can be canceled, run in parallel, or executed sequentially.\n *\n * The 'switch' operator (default) cancels any ongoing request when a new one comes in, ensuring that only the latest request is processed.\n * The 'merge' operator allows multiple requests to be processed in parallel without waiting for any to complete.\n * The 'concat' operator processes requests one after another, in the order they were added to the queue, waiting for each to complete before starting the next.\n *\n * @template TDataType - The type of the data returned by the query.\n * @template TQueryArguments - The type of the arguments passed to the query function.\n *\n * @param type - The operator type ('switch', 'merge', 'concat') or custom function to use for queuing requests. Defaults to 'switch'.\n *\n * @returns A function that takes a query request and returns an Observable representing the queued request.\n */\nconst getQueueOperator = (type = 'switch') => {\n // A custom queue function was provided, use it directly\n if (typeof type === 'function') {\n return type;\n }\n return (() => {\n // Map the named operator type to its concrete implementation\n switch (type) {\n case 'concat':\n return concatQueue;\n case 'merge':\n return mergeQueue;\n case 'switch':\n return switchQueue;\n default:\n throw new Error(`Invalid queue operator: ${type}`);\n }\n })();\n};\n/**\n * The primary use case for `Query` involves:\n * - Asynchronous Data Fetching: Seamlessly fetching data from APIs or databases asynchronously without blocking the UI, improving the user experience.\n * - Caching: Storing fetched data in a cache to improve performance by reducing the number of redundant requests to the server.\n * - Automatic Updates: Automatically updating the UI when the underlying data changes, without requiring explicit refresh actions from the user.\n * - Concurrent Requests Management: Efficiently handling multiple, concurrent data fetches through strategies like merging, switching, or concatenating requests.\n * - Retry and Error Handling: Automatically retrying failed requests and handling errors gracefully to ensure application stability.\n *\n * ## Benefits\n *\n * Using a `Query` mechanism offers numerous benefits, including:\n * 1. Improved Performance and Efficiency: By caching responses and reducing unnecessary server requests, applications load faster and use fewer resources, both on the client and server side.\n * 2. Simplified Data Fetching Logic: It abstracts away the boilerplate code associated with fetching data, handling errors, and managing response states, leading to cleaner and more maintainable code.\n * 3. Automatic Synchronization: `Query` libraries often come with features to automatically refetch data on certain triggers (e.g., window focus), ensuring the UI is always up-to-date with the latest server state without manual intervention.\n * 4. Built-in Asynchronous Management: Handling asynchronous data fetches becomes straightforward, with built-in support for loading states, error handling, and data updates.\n * 5. Scalability: Easily scalable for complex applications, supporting various fetching strategies to manage multiple data sources, endpoints, and concurrent requests effectively.\n * 6. Developer Experience: By standardizing the approach to data fetching and state management, it enhances developer experience, reducing the cognitive load and making it easier to onboard new developers.\n * 7. Robust Error and Retry Handling: Features to automatically retry requests and sophisticated mechanisms for error handling improve application reliability.\n * 8. Customizable and Extendable: While offering sensible defaults for most use cases, `Query` implementations are usually highly customizable, allowing developers to tailor their behavior for specific needs, such as custom caching strategies, query deduplication, and more.\n *\n * ## Examples\n * Example of creating a basic query with a query function:\n * @example\n * ```typescript\n * import { Query, QueryFn } from '@equinor/fusion-query';\n *\n * type ExampleData = {\n * id: string;\n * name: string;\n * value: number;\n * }\n *\n * // create a query function\n * const queryFn: QueryFn<ExampleData, {id: string}> = async (args, signal) => {\n * const response = await fetch(`https://api.example.com/data?id=${args.id}`, {signal});\n * return response.json();\n * };\n *\n * const queryOptions = QueryCtorOptions<ExampleData, {id: string}> = {\n * client: { fn: queryFn },\n * key: (args) => args.id,\n * // optional cache options\n * // optional queue operator\n * // optional logger\n * };\n *\n * // create a new Query instance with the options\n * const query = new Query(queryOptions);\n *\n * ```\n *\n * @see {@link QueryCtorOptions} for more details on the constructor options.\n * @see {@link Query.query} for more details on executing a query.\n * @see {@link Query.queryAsync} for more details on executing a query asynchronously.\n * @see {@link Query.mutate} for more details on mutating cache entries.\n * @see {@link Query.invalidate} for more details on invalidating cache entries.\n * @see {@link QueueOperatorType} for more details on the available queue operators.\n */\nexport class Query {\n /**\n * Static utility that extracts the raw value from a query result Observable.\n *\n * Transforms a stream of `QueryTaskValue<TType>` into a plain `Observable<TType>`,\n * stripping away query metadata such as status, transaction, and timestamps.\n *\n * @see {@link queryValue} for the standalone operator function.\n */\n static extractQueryValue = queryValue;\n /**\n * A private Subscription instance that holds all internal subscriptions.\n * It is used for cleanup when the query is completed or no longer needed.\n * This ensures that all resources are properly released and no memory leaks occur.\n */\n #subscription = new Subscription();\n /**\n * A private instance of QueryClient that is used to fetch data.\n * This client encapsulates the logic for making the actual query requests and handling their responses.\n */\n #client;\n /**\n * A private instance of QueryCache that is used to cache query results.\n * This cache stores the results of queries, allowing for quick retrieval of data without the need to make additional network requests.\n */\n #cache;\n /**\n * A private Subject that represents the queue of query requests.\n * This queue is used to manage the execution of concurrent query requests according to the chosen queuing strategy.\n */\n #queue$ = new Subject();\n /**\n * A private record object that stores ongoing query tasks, indexed by a unique reference key.\n * This record keeps track of all active query tasks, allowing for management and coordination of their execution.\n */\n #tasks = {};\n /**\n * A private function that generates a unique cache key for the provided arguments.\n * This key is used to store and retrieve cache entries, ensuring that each set of arguments has its own distinct entry.\n */\n #generateCacheKey;\n /**\n * A private function that validates cache entries.\n * This function is called to determine whether a cache entry is still valid or if it should be considered stale and discarded.\n */\n #validateCacheEntry;\n /**\n * A private unique namespace string generated using a UUID.\n * It is used to ensure cache keys are unique across different instances of the query.\n * This prevents cache collisions where different queries could otherwise end up using the same cache entry.\n */\n #namespace = generateGUID();\n /**\n * An optional observer for emitting query events.\n * If provided, events will be emitted instead of or in addition to logging.\n */\n #event$;\n /**\n * A public getter for the client instance.\n * TODO(#5144): Implement a proxy to control access to the client.\n * This proxy would allow for additional functionality or restrictions when accessing the client instance.\n * @returns The internal `QueryClient` instance used to fetch data.\n */\n get client() {\n // TODO(#5144): Proxy\n return this.#client;\n }\n /**\n * Protected helper method to register events if an event observer is configured.\n * @template TKey - The event type key, constrained to the keys of `QueryEvents`.\n * @param type - The event type\n * @param key - The cache/query key the event relates to\n * @param data - The event data\n */\n _registerEvent(type, key, data) {\n this.#event$.next(new QueryEvent(type, key, data));\n }\n /**\n * A public getter for the cache instance.\n * TODO(#5144): Implement a proxy to control access to the cache.\n * This proxy would allow for additional functionality or restrictions when accessing the cache instance.\n * @returns The internal `QueryCache` instance used to cache query results.\n */\n get cache() {\n // TODO(#5144): Proxy\n return this.#cache;\n }\n /**\n * An Observable stream of Query events. It allows subscribers to react to\n * query lifecycle events such as query creation, cache hits, task execution, etc.\n * Also includes QueryClient events for complete observability.\n * @returns {Observable<CombinedQueryEvent<TDataType, TQueryArguments>>} An Observable stream of events.\n */\n get event$() {\n return this.#event$.asObservable();\n }\n /**\n * The constructor for the Query class.\n * It initializes the query client, cache, and sets up the query request queue.\n * The constructor takes an options object which can include a custom client, cache, key generation function,\n * cache validation function, cache expiration time, queuing strategy, and a logger.\n *\n * @param options - The constructor options for the Query instance.\n */\n constructor(options) {\n this.#event$ = new Subject();\n this.#generateCacheKey = (args) => {\n // Use the provided key generation function from options and namespace to ensure unique cache keys across instances\n return generateUniqueKey(options.key(args), this.#namespace);\n };\n // Set the cache entry validation function. Use the provided one or the default based on expiration time\n this.#validateCacheEntry =\n options?.validate ?? defaultCacheValidator(options?.expire);\n // Initialize the query client. Use the provided client instance or create a new one with provided function and options\n if (options.client instanceof QueryClient) {\n this.#client = options.client;\n }\n else {\n this.#client = new QueryClient(options.client.fn, {\n // Spread any additional options provided for the client\n ...options.client.options,\n });\n // Ensure client resources are cleaned up when the query instance is disposed\n this.#subscription.add(() => this.#client.complete());\n }\n this.#subscription.add(this.#client.event$.subscribe({\n next: (event) => this.#event$.next(event),\n }));\n // Initialize the query cache. Use the provided cache instance or create a new one with provided constructor arguments\n if (options.cache instanceof QueryCache) {\n this.#cache = options.cache;\n }\n else {\n // If no cache is provided, create a new instance with default or provided constructor arguments\n this.#cache = new QueryCache(options.cache || {});\n // Ensure cache resources are cleaned up when the query instance is disposed\n this.#subscription.add(() => this.#cache.complete());\n }\n this.#subscription.add(this.#cache.event$.subscribe({\n next: (event) => this.#event$.next(event),\n }));\n // The queueOperator is a function that determines how query requests are handled when multiple requests are made concurrently.\n // It is derived from the useQueueOperator utility function, which takes the provided queueOperatorType or custom function\n // from the QueryCtorOptions and returns the corresponding queue function.\n // The queue function is then used in the observable pipeline to manage the execution of query requests according to the chosen strategy.\n const queueOperator = getQueueOperator(options.queueOperator);\n // shutdown the queue when the query is completed\n this.#subscription.add(() => this.#queue$.complete());\n this.#subscription.add(this.#queue$\n // register queued events, then apply the queue operator to the ongoing tasks\n .pipe(tap((key) => {\n this._registerEvent('query_queued', key);\n }), \n // skip tasks that are not in the ongoing tasks record\n filter((key) => !!(key in this.#tasks)), \n // Apply the queue operator to the query requests, which controls the execution order\n queueOperator((key) => {\n const task = this.#tasks[key];\n const { args, options, uuid } = task;\n this._registerEvent('query_job_selected', key, { taskId: uuid, args, options });\n // Check if the task is still observed, if not, skip it\n if (!task?.observed) {\n this._registerEvent('query_job_skipped', key, { taskId: uuid, args, options });\n delete this.#tasks[key];\n return EMPTY;\n }\n // Initiate a new query using the client, passing in the arguments and options\n // The 'ref' option is used to associate the task with a specific query request\n const job = this.#client.query(args, {\n ...options,\n ref: task.uuid,\n });\n return new Observable((subscriber) => {\n const { transaction } = job;\n this._registerEvent('query_job_started', key, {\n taskId: uuid,\n transaction,\n args,\n options,\n });\n // Add a cleanup function to the subscriber that will be called when the subscription is closed.\n // This function logs the task closure, cancels the job to prevent further processing, and removes the task from the ongoing tasks record.\n subscriber.add(() => {\n this._registerEvent('query_job_closed', key, {\n taskId: uuid,\n transaction,\n args,\n options,\n });\n job.complete('task closed');\n delete this.#tasks[key];\n });\n // Add a periodic check to the subscriber that will cancel the job if it is no longer observed.\n // This is to ensure resources are not wasted on tasks that are no longer of interest.\n subscriber.add(interval(10)\n .pipe(filter(() => !task.observed))\n .subscribe(() => {\n job.cancel(`task: ${task.uuid} is not observed`);\n subscriber.complete();\n }));\n // Process the job using the task's custom logic, which includes handling of the query response and any errors.\n // This processing is specific to the task and may involve updating the cache, logging, or other side effects.\n subscriber.add(task.processJob(job).add(() => {\n this._registerEvent('query_job_completed', key, {\n taskId: uuid,\n transaction,\n args,\n options,\n });\n }));\n // Map the job Observable to a QueryQueueResult object, which includes the result and request details.\n // This mapping allows the subscriber to receive a structured response including the task details and the query result.\n job\n .pipe(map((result) => ({\n result,\n task,\n })), \n // Catch any errors that occur during the job processing and complete the observable to prevent hanging subscriptions.\n // This ensures that errors are handled gracefully and do not prevent the completion of the observable chain.\n catchError(() => EMPTY))\n .subscribe(subscriber);\n });\n }), takeWhile(() => !this.#client.closed))\n // Subscribe to the processed tasks and update the cache with their results\n .subscribe((task) => {\n const { value, transaction } = task.result;\n const { args, key, uuid } = task.task;\n this._registerEvent('query_cache_added', key, {\n data: value,\n taskId: uuid,\n args,\n transaction,\n });\n this._registerEvent('query_completed', key, { data: value, hasValidCache: true });\n // Update the cache item with the new value, arguments, and transaction\n this.#cache.setItem(key, {\n value,\n args,\n transaction,\n });\n }));\n }\n /**\n * Executes a query and returns an Observable that emits the result.\n * It will throw an error if the query was skipped or canceled.\n * The returned Observable can be subscribed to in order to receive updates on the query's execution and results.\n *\n * @param args - The arguments to be passed to the query function.\n * @param options - Optional additional options for the query.\n * @returns An Observable that emits the result of the query.\n */\n query(args, options) {\n return this._query(args, options);\n }\n /**\n * Executes an asynchronous query and returns a Promise that resolves with the result.\n * If `skipResolve` is set to true, the Promise resolves as soon as the query is sent (using `firstValueFrom`).\n * If `skipResolve` is false or not provided, the Promise resolves with the final result of the query (using `lastValueFrom`).\n * This method is useful for cases where an asynchronous, one-time result is needed rather than a stream of updates.\n * Note that skipping resolution may result in returning invalid cache.\n *\n * @example\n * ```typescript\n * try{\n * const result = await query.queryAsync({ id: '123' });\n * console.log(result);\n * } catch (error) {\n * console.error(error);\n * }\n * ```\n *\n * @param payload - The arguments to be passed to the query function.\n * @param opt - Optional additional options for the query. The `skipResolve` option determines the resolution behavior of the Promise.\n * @returns A Promise that resolves with the result of the query or rejects with an Error.\n */\n queryAsync(payload, opt) {\n const { skipResolve, ...args } = opt || {};\n const fn = skipResolve ? firstValueFrom : lastValueFrom;\n return new Promise((resolve, reject) => {\n // Reject the promise early if the caller aborts via the signal\n if (opt?.signal) {\n opt.signal.addEventListener('abort', () => reject(new Error('Query aborted')));\n }\n // Throw if the query completes without emitting a value\n fn(this._query(payload, args).pipe(throwIfEmpty())).then(resolve, reject);\n });\n }\n /**\n * Executes a query that remains subscribed to cache mutations after the initial fetch completes.\n *\n * Unlike {@link Query.query}, which completes after emitting the result, `persistentQuery`\n * continues to emit whenever the underlying cache entry is updated or mutated.\n * This is useful for scenarios where the UI must reflect optimistic updates,\n * background refetches, or external cache mutations in real time.\n *\n * The returned Observable deduplicates emissions based on the transaction identifier\n * and mutation timestamp, so subscribers only receive meaningful state changes.\n *\n * @param args - The arguments to pass to the query function.\n * @param options - Optional query options including signal, retry, and cache validation overrides.\n * @returns An Observable that emits cached and completed results, and continues emitting on cache mutations.\n */\n persistentQuery(args, options) {\n const key = this.#generateCacheKey(args);\n const original = this._query(args, options);\n const cacheAwareStream = new Observable((subscriber) => {\n subscriber.add(original.subscribe({\n next: subscriber.next.bind(subscriber),\n error: subscriber.error.bind(subscriber),\n }));\n // Use the provided validation function or the default cache validator to determine if the cache entry is valid.\n const validateCache = options?.cache?.validate || this.#validateCacheEntry;\n // Subscribe to the cache state and filter for the specific cache entry based on the key.\n subscriber.add(this.cache.state$\n // narrow the cache state stream down to just this key's entry\n .pipe(filter((x) => key in x), map((x) => ({\n ...x[key],\n key,\n status: 'cache',\n hasValidCache: validateCache(x[key], args),\n })))\n .subscribe(subscriber));\n });\n // only emit when the transaction changes\n return cacheAwareStream.pipe(distinctUntilChanged((a, b) => a.transaction === b.transaction &&\n a.mutated === b.mutated));\n }\n /**\n * Generates a cache key based on the provided query arguments.\n * This method is used internally to uniquely identify cache entries.\n *\n * @param args - The query arguments to be used for generating the cache key.\n * @returns A string representing the cache key.\n */\n generateCacheKey(args) {\n return this.#generateCacheKey(args);\n }\n /**\n * Performs a mutation on the cache entry associated with the given arguments.\n * This method allows for updating the state of a cache entry without needing to perform a new query.\n * The changes are applied by invoking the `mutate` method on the cache with the generated key and the changes function.\n *\n * @param args - The arguments that identify the specific cache entry to be mutated.\n * @param changes - A function that defines the changes to be applied to the cache entry.\n * @param options - Optional settings; `allowCreation` controls whether a missing cache entry may be created.\n * @returns A function that reverts the mutation when called.\n * @throws {Error} When no cache entry exists for `args` and `options.allowCreation` is `undefined`.\n */\n mutate(args, changes, options) {\n const key = this.#generateCacheKey(args);\n // No existing cache entry for this key — decide whether to create one or fail\n if (key in this.cache.state === false) {\n // No explicit allowCreation setting provided — fail closed rather than silently creating\n if (options?.allowCreation === undefined) {\n throw new Error(`Cannot mutate cache item with key ${key}: item not found and option \"allowCreation\" is false`);\n }\n else if (options.allowCreation === false) {\n /** does not allow creation, can not mutate */\n return () => { };\n }\n const { value } = typeof changes === 'function' ? changes() : changes;\n this.cache.setItem(key, {\n args,\n transaction: generateGUID(),\n value,\n });\n }\n return this.#cache.mutate(key, changes);\n }\n /**\n * Invalidates a specific cache record or all records if no arguments are provided.\n * When a specific record is invalidated, it is identified by the provided arguments.\n * If no arguments are provided, all records in the cache are invalidated, effectively clearing the cache.\n *\n * @param args - Optional arguments that identify the specific cache record to be invalidated.\n * If not provided, all cache records will be invalidated.\n */\n invalidate(args) {\n this.#cache.invalidate(args && this.#generateCacheKey(args));\n }\n /**\n * Completes all subscriptions and cleans up resources.\n * This method should be called when the Query instance is no longer needed, to ensure that all resources are properly released.\n * Failing to call `complete` could result in memory leaks due to lingering subscriptions.\n */\n complete() {\n this.#subscription.unsubscribe();\n this.#event$?.complete();\n }\n //#region Event Handlers\n /**\n * Registers a callback function that will be invoked when a cache invalidation occurs.\n * The callback function will receive an event object containing the details of the invalidation,\n * including the affected cache entry, if available.\n * The returned function can be called to unsubscribe the callback from further invalidation events.\n *\n * @param cb - The callback function to be registered.\n * @returns A function that, when called, will unsubscribe the callback from further invalidation events.\n */\n onInvalidate(cb) {\n // only forward cache-invalidation actions to the callback\n const subscription = this.#cache.action$\n .pipe(filterAction('cache/invalidate'))\n .subscribe((action) => cb({ detail: { item: action.meta.item } }));\n return () => subscription.unsubscribe();\n }\n /**\n * Registers a callback function that will be invoked when a mutation occurs on the cache.\n * The callback function will receive an event object containing the details of the mutation,\n * including the changes made and the current state of the cache entry, if available.\n *\n * @param cb - The callback function to be registered.\n * @returns A function that, when called, will unsubscribe the callback from further mutation events.\n */\n onMutate(cb) {\n // only forward cache-mutation actions to the callback\n const subscription = this.#cache.action$\n .pipe(filterAction('cache/mutate'))\n .subscribe((action) => cb({ detail: { changes: action.payload, current: action.meta.item } }));\n return () => subscription.unsubscribe();\n }\n //#endregion\n /**\n * Internal method that executes a query and returns an Observable with the result.\n *\n * @param args - The arguments to be passed to the query function.\n * @param options - Optional additional options for the query.\n * @returns An Observable that emits the result of the query.\n */\n _query(args, options) {\n const key = this.#generateCacheKey(args);\n const task = this._createTask(key, args, options);\n this._registerEvent('query_created', key, { args, options });\n return task;\n }\n /**\n * The `_createTask` method is responsible for initiating a query task, which involves either returning a cached result or\n * starting a new query request. This method encapsulates the logic for creating and managing the lifecycle of a query task.\n * It ensures that if a query with the same arguments is initiated multiple times, they will all share the same task observable,\n * thus avoiding duplicate network requests and unnecessary computation.\n *\n * @param key - A string that uniquely identifies the cache entry associated with the query arguments. This key is used to\n * check if there is already a cached result that can be returned immediately, avoiding the need for a new network request.\n * @param args - The arguments that will be passed to the query function. These arguments are used to generate the cache key\n * and are also passed to the query function when making a new request.\n * @param options - An optional object containing additional options for the query. This can include custom cache validation\n * logic and retry strategies. For example, options can specify whether to suppress the emission of invalid\n * cache entries or to define a custom function for validating the cache.\n *\n * @returns An Observable that emits the result of the query task. If a valid cache entry is found, the Observable will emit\n * the cached result. If no valid cache entry exists, the Observable will emit the result of a new query request once\n * it completes. Subscribers to this Observable will receive updates on the query's execution and results.\n *\n * The method performs the following steps:\n * 1. Creates a new Observable that represents the task to be executed.\n * 2. Attempts to retrieve a cache entry using the provided `key`.\n * 3. If a cache entry is found, it checks whether the entry is still valid using the provided validation function or the default one.\n * - If the cache entry is valid, it emits the cached result and completes the Observable.\n * - If the cache entry is not valid or does not exist, it proceeds to the next step.\n * 4. Checks if there is already an ongoing task for the same query (identified by the `key`).\n * - If there is an ongoing task, it subscribes the new Observable to the existing task.\n * - If there is no ongoing task, it creates a new `QueryTask` instance and adds it to the ongoing tasks record.\n * 5. Subscribes to the new or existing task, forwarding any emissions to the subscriber of the returned Observable.\n * 6. Adds the new task to the query queue by emitting the `key` on the `#queue$` Subject, which will eventually trigger the processing\n * of the task based on the queuing strategy.\n * 7. The task is finalized (removed from the ongoing tasks record) when it completes or errors out.\n *\n * Note: The subscribers to the returned Observable are responsible for subscribing and unsubscribing to manage the lifecycle of the\n * subscription. The method ensures that the task is properly cleaned up when it is no longer needed.\n */\n _createTask(key, args, options) {\n // Create a new Observable that represents the query task and will be returned to the caller.\n return new Observable((subscriber) => {\n // Support cancellation via an AbortSignal\n if (options?.signal) {\n // Already aborted before subscription — complete immediately without doing any work\n if (options?.signal.aborted) {\n this._registerEvent('query_aborted', key);\n return subscriber.complete();\n }\n subscriber.add(fromEvent(options?.signal, 'abort').subscribe(() => {\n this._registerEvent('query_aborted', key);\n subscriber.complete();\n }));\n }\n // Attempt to retrieve the cache entry associated with the provided key.\n const cacheEntry = this.#cache.getItem(key);\n // If a cache entry exists and is valid, emit it as the next value to the subscriber.\n if (cacheEntry) {\n this._registerEvent('query_cache_hit', key, { cacheEntry });\n const suppressInvalid = options?.cache?.suppressInvalid ?? false;\n // Use the provided validation function or the default cache validator to determine if the cache entry is valid.\n const validateCache = options?.cache?.validate || this.#validateCacheEntry;\n // Check if the cache entry is valid based on the provided validation function.\n const hasValidCache = validateCache(cacheEntry, args);\n const record = {\n ...cacheEntry,\n key,\n status: 'cache',\n hasValidCache,\n };\n // Emit the cache entry as the next value to the subscriber. This step is crucial as it allows\n // the subscriber to receive the cached data immediately, without waiting for a new fetch operation.\n // The emitted record contains the cache entry data, along with metadata such as the cache key,\n // the status indicating that this is a cached response, and a flag indicating whether the cache\n // is considered valid based on the validation logic.\n subscriber.next(record);\n // Complete without fetching when the cache is valid, or invalid entries are intentionally suppressed\n if (hasValidCache || suppressInvalid) {\n this._registerEvent('query_completed', key, { data: cacheEntry.value, hasValidCache });\n // If the cache is valid, or if invalid cache entries should be suppressed (not re-fetched),\n // complete the subscription to prevent further actions.\n // This ensures that if the cache data is sufficient or if the strategy is to avoid using invalid cache without refetching,\n // the observable sequence completes here.\n return subscriber.complete();\n }\n // This will fetch new data and update the cache entry with the latest result.\n this._registerEvent('query_cache_miss', key);\n }\n // If the cache entry does not exist or is invalid, proceed to queue a new query request.\n const isExistingTask = key in this.#tasks;\n // No task is already tracking this key — create one and register it before queuing\n if (!isExistingTask) {\n this.#tasks[key] = new QueryTask(key, args, options);\n this._registerEvent('query_job_created', key, {\n taskId: this.#tasks[key].uuid,\n args,\n options,\n });\n }\n else {\n this._registerEvent('query_connected', key, { isExistingTask: true });\n }\n const task = this.#tasks[key];\n // Connect the subscriber to the task to receive updates on the query's execution and results.\n subscriber.add(task.subscribe(subscriber));\n // If this is a new task, add it to the query queue to be processed.\n if (!isExistingTask) {\n this.#queue$.next(key);\n }\n });\n }\n}\nexport default Query;\n//# sourceMappingURL=Query.js.map","import z from 'zod';\n/**\n * Zod schema for a single service object returned by the service\n * discovery API.\n *\n * Validates required fields (`key`, `uri`) and optional metadata, then\n * transforms the result to include a backward-compatible `defaultScopes`\n * accessor.\n */\nconst ApiService = z\n .object({\n key: z.string().describe('The key used to identify the service'),\n uri: z.string().describe('The URI of the service'),\n id: z.string().optional().describe('The ID of the service'),\n environment: z.string().optional().describe('The environment of the service'),\n name: z.string().optional().describe('The name of the service'),\n scopes: z.array(z.string()).optional().default([]).describe('Endpoint authentication scopes'),\n tags: z.array(z.string()).optional().describe('Tags for the service'),\n})\n .describe('A service from the service discovery API')\n .transform((value) => ({\n ...value,\n /** @deprecated use `scopes` */\n get defaultScopes() {\n return value.scopes ?? [];\n },\n}));\n/**\n * Zod schema for the service list returned by the service discovery API.\n *\n * Parses and validates an array of service objects, each conforming to the\n * `ApiService` schema above. Used internally by\n * {@link ServiceDiscoveryClient} to validate API responses.\n */\nexport const ApiServices = z\n .array(ApiService)\n .describe('A list of services from the service discovery API');\n//# sourceMappingURL=api-services.js.map","import { Query } from '@equinor/fusion-query';\nimport { firstValueFrom, from, lastValueFrom, map, } from 'rxjs';\nimport { jsonSelector } from '@equinor/fusion-framework-module-http/selectors';\nimport { ApiServices } from './api-services';\n/** Cache key used by the internal {@link Query} instance. */\nconst queryKey = 'services';\n/**\n * Transforms a fetch {@link Response} into an observable that emits a\n * validated array of {@link Service} objects.\n *\n * The response body is parsed as JSON, validated against the\n * {@link ApiServices} Zod schema, and optionally piped through a\n * `postProcess` operator (used for session overrides).\n *\n * @param response - Raw fetch response from the service discovery API.\n * @param postProcess - Optional RxJS operator to transform the parsed list.\n * @returns An `ObservableInput` emitting the final `Service[]`.\n */\nconst serviceResponseSelector = (response, postProcess) => {\n // parse response by using the jsonSelector\n const result$ = from(jsonSelector(response)).pipe(\n // parse and validate the response\n map((value) => ApiServices.default([]).parse(value)));\n // Only apply a transform pipeline when the caller supplied one\n if (postProcess) {\n // Apply the caller-supplied operator (e.g. session overrides) before emitting\n return result$.pipe(postProcess);\n }\n return result$;\n};\n/**\n * Default service discovery client that fetches endpoints from a remote API,\n * validates the response with Zod, caches results via {@link Query}, and\n * supports `sessionStorage`-based overrides.\n *\n * @remarks\n * Results are cached for 5 minutes. When `allow_cache` is `true`,\n * {@link resolveServices} returns the first cached value immediately;\n * otherwise it waits for the latest API response.\n */\nexport class ServiceDiscoveryClient {\n #query;\n /** Sub-path appended to the HTTP client's base URI when fetching services. */\n endpoint;\n /** HTTP client used to call the service discovery API. */\n http;\n /**\n * @param options - Construction options including the HTTP client,\n * optional endpoint path, and optional post-processing operator.\n */\n constructor(options) {\n this.http = options.http;\n this.endpoint = options.endpoint;\n const postProcess = options.postProcess;\n // setup api handler (queue and cache)\n this.#query = new Query({\n client: {\n fn: () => this.http.fetch$(this.endpoint ?? '', {\n selector: (response) => serviceResponseSelector(response, postProcess),\n }),\n },\n key: () => queryKey,\n // Cache for 5 minutes\n expire: 5 * 60 * 1000,\n });\n }\n /** {@inheritDoc IServiceDiscoveryClient.resolveServices} */\n resolveServices(allow_cache) {\n // firstValueFrom returns the cached snapshot; lastValueFrom waits for\n // the freshest value from the query\n const fn = allow_cache ? firstValueFrom : lastValueFrom;\n return fn(Query.extractQueryValue(this.#query.query()));\n }\n /** {@inheritDoc IServiceDiscoveryClient.resolveService} */\n async resolveService(key, allow_cache) {\n const services = await this.resolveServices(allow_cache);\n // Locate the service matching the requested key\n const service = services.find((s) => s.key === key);\n // Fail loudly when the requested key doesn't resolve to a known service\n if (!service) {\n throw Error(`Failed to resolve service, invalid key [${key}]`);\n }\n return service;\n }\n}\n//# sourceMappingURL=client.js.map","import { from, lastValueFrom, map } from 'rxjs';\nimport { BaseConfigBuilder, } from '@equinor/fusion-framework-module';\nimport { ServiceDiscoveryClient } from './client';\n/**\n * Configuration builder for the Service Discovery module.\n *\n * Provides a fluent API to set up how service endpoints are resolved.\n * The simplest path is to call\n * {@link ServiceDiscoveryConfigurator.configureServiceDiscoveryClientByClientKey | configureServiceDiscoveryClientByClientKey}\n * with the HTTP client key that points to the service discovery backend.\n *\n * For full control, use\n * {@link ServiceDiscoveryConfigurator.setServiceDiscoveryClient | setServiceDiscoveryClient}\n * to supply a custom {@link IServiceDiscoveryClient} implementation.\n *\n * @example\n * ```typescript\n * enableServiceDiscovery(configurator, async (builder) => {\n * builder.configureServiceDiscoveryClientByClientKey('sd_custom', '/services/v2');\n * });\n * ```\n */\nexport class ServiceDiscoveryConfigurator extends BaseConfigBuilder {\n /**\n * Creates the final {@link ServiceDiscoveryConfig}.\n *\n * When no explicit discovery client has been registered, this method\n * auto-detects an HTTP client with key `\"service_discovery\"` and uses it\n * as the default transport.\n *\n * @param init - Builder callback arguments providing module accessors.\n * @param initial - Optional partial config inherited from a parent module.\n * @returns The fully resolved configuration.\n * @throws {Error} When the HTTP module is not registered.\n */\n async _createConfig(init, initial) {\n // The service discovery client depends on the http module being registered\n if (!init.hasModule('http')) {\n throw new Error('http module is required');\n }\n // if discoveryClient is not configured, check if http module has a client with key 'service_discovery'\n if (!this._has('discoveryClient')) {\n // check if http module has a client with key 'service_discovery'\n const httpProvider = await init.requireInstance('http');\n // Auto-configure only when a matching http client has actually been registered\n if (httpProvider.hasClient('service_discovery')) {\n this.configureServiceDiscoveryClientByClientKey('service_discovery');\n }\n }\n // convert parent to promise\n return lastValueFrom(from(super._createConfig(init, initial)));\n }\n /**\n * Validates and finalizes the service discovery configuration.\n *\n * @param config - Partial configuration assembled by the builder.\n * @param init - Builder callback arguments.\n * @returns An observable that emits the complete {@link ServiceDiscoveryConfig}.\n * @throws {Error} When `discoveryClient` has not been configured.\n */\n _processConfig(config, init) {\n // A discovery client is mandatory before the config can be considered complete\n if (!config.discoveryClient) {\n throw new Error('discoveryClient is required, please configure it');\n }\n return super._processConfig(config, init);\n }\n /**\n * Sets the service discovery client directly.\n *\n * Accepts either a ready-made {@link IServiceDiscoveryClient} instance or a\n * {@link ConfigBuilderCallback} that will be invoked during module\n * initialization to produce one.\n *\n * Use this method when you need full control over service resolution\n * (e.g. a mock client for testing or a static service list).\n *\n * @param discoveryClient - A client instance or an async factory function.\n *\n * @example\n * ```typescript\n * // Static / mock client\n * builder.setServiceDiscoveryClient({\n * resolveServices: async () => [{ key: 'api', uri: 'https://localhost:5000', defaultScopes: [] }],\n * resolveService: async (key) => ({ key, uri: 'https://localhost:5000', defaultScopes: [] }),\n * });\n * ```\n */\n setServiceDiscoveryClient(discoveryClient) {\n this._set('discoveryClient', typeof discoveryClient === 'function' ? discoveryClient : async () => discoveryClient);\n }\n /**\n * Configures a {@link ServiceDiscoveryClient} with a custom HTTP client and\n * optional endpoint path.\n *\n * This is the mid-level configuration path: you supply the transport\n * details and the module constructs a standard\n * {@link ServiceDiscoveryClient} with built-in caching, response parsing,\n * and `sessionStorage` override support.\n *\n * @param configCallback - Async factory that must return\n * `{ httpClient, endpoint? }`. The `httpClient` is used to call the\n * service discovery API at the given `endpoint` (defaults to `\"\"`).\n * @throws {Error} When the factory does not return an `httpClient`.\n *\n * @example\n * ```typescript\n * builder.configureServiceDiscoveryClient(async ({ requireInstance }) => {\n * const http = await requireInstance('http');\n * return { httpClient: http.createClient('sd'), endpoint: '/services/v2' };\n * });\n * ```\n */\n configureServiceDiscoveryClient(configCallback) {\n this.setServiceDiscoveryClient(async (args) => {\n const { httpClient, endpoint } = (await lastValueFrom(from(configCallback(args)))) ?? {};\n // Only construct the client when the factory actually returned an http client\n if (httpClient) {\n return new ServiceDiscoveryClient({\n http: httpClient,\n endpoint,\n postProcess: map((input) => {\n // Get a reference to sessionStorage from globalThis\n const storage = typeof globalThis !== 'undefined' ? globalThis.sessionStorage : undefined;\n // Check if sessionStorage is available before attempting to access it.\n // If sessionStorage is not available, return the input as is without attempting to apply any overrides.\n if (!storage) {\n return input;\n }\n // Check if there are any session overrides in session storage.\n try {\n const sessionOverrides = JSON.parse(storage.getItem('overriddenServiceDiscoveryUrls') || '{}');\n // Apply each session override onto the service matching its key\n for (const [key, { url, scopes }] of Object.entries(sessionOverrides)) {\n // Locate the service this override applies to\n const service = input.find((service) => service.key === key);\n // If the service can be found, override the values with the values\n // from session override.\n if (service) {\n service.uri = url;\n service.scopes = scopes;\n service.overridden = true;\n }\n }\n }\n catch (e) {\n // Malformed or missing session storage overrides are not fatal — fall back to\n // the unmodified input and just log for visibility.\n console.error('Failed to JSON parse session overrides: \"overriddenServiceDiscoveryUrls\"', e);\n }\n return input;\n }),\n });\n }\n throw Error('httpClient is required');\n });\n }\n /**\n * Configures service discovery using a named HTTP client key.\n *\n * This is the simplest configuration path. The HTTP module must already\n * have a client registered under `clientKey`. If `endpoint` is omitted\n * the client calls the root path of the HTTP client's base URI.\n *\n * @param clientKey - Key of the HTTP client to use for service discovery\n * requests (must match an entry in the HTTP module configuration).\n * @param endpoint - Optional sub-path appended to the client's base URI\n * when fetching the service list.\n *\n * @example\n * ```typescript\n * builder.configureServiceDiscoveryClientByClientKey(\n * 'service_discovery',\n * '/custom/services',\n * );\n * ```\n */\n configureServiceDiscoveryClientByClientKey(clientKey, endpoint) {\n this.configureServiceDiscoveryClient(async ({ requireInstance }) => {\n const httpProvider = await requireInstance('http');\n const httpClient = httpProvider.createClient(clientKey);\n return {\n httpClient,\n endpoint,\n };\n });\n }\n}\n//# sourceMappingURL=configurator.js.map","// Generated by genversion.\nexport const version = '10.1.0-next.0';\n//# sourceMappingURL=version.js.map","import { configureHttpClient } from '@equinor/fusion-framework-module-http';\nimport { BaseModuleProvider } from '@equinor/fusion-framework-module/provider';\nimport { version } from './version';\n/**\n * Default implementation of {@link IServiceDiscoveryProvider}.\n *\n * Created during module initialization and delegates service resolution to\n * the underlying {@link IServiceDiscoveryClient} while using the\n * {@link HttpModule} to construct pre-configured HTTP clients.\n */\nexport class ServiceDiscoveryProvider extends BaseModuleProvider {\n config;\n _http;\n /**\n * @param config - Resolved service discovery configuration.\n * @param _http - HTTP module instance used to create clients.\n */\n constructor(config, _http) {\n super({\n version,\n config,\n });\n this.config = config;\n this._http = _http;\n }\n /** {@inheritDoc IServiceDiscoveryProvider.client} */\n get client() {\n return this.config.discoveryClient;\n }\n /** {@inheritDoc IServiceDiscoveryProvider.resolveServices} */\n resolveServices() {\n return this.config.discoveryClient.resolveServices();\n }\n /** {@inheritDoc IServiceDiscoveryProvider.resolveService} */\n async resolveService(key) {\n return this.config.discoveryClient.resolveService(key);\n }\n /** {@inheritDoc IServiceDiscoveryProvider.createClient} */\n async createClient(name, opt) {\n const service = await this.resolveService(name);\n // A missing service configuration means the http client can't be constructed\n if (!service) {\n throw Error(`Could not load configuration of service [${name}]`);\n }\n return this._http.createClient({\n ...opt,\n baseUri: service.uri,\n defaultScopes: service.scopes,\n });\n }\n /** {@inheritDoc IServiceDiscoveryProvider.configureClient} */\n async configureClient(serviceName, config) {\n const { key, alias } = typeof serviceName === 'string' ? { key: serviceName, alias: serviceName } : serviceName;\n const { uri: baseUri, scopes: defaultScopes } = await this.resolveService(key);\n config.addConfig(configureHttpClient(alias, { baseUri, defaultScopes }));\n }\n}\n//# sourceMappingURL=provider.js.map","import { ServiceDiscoveryConfigurator } from './configurator';\nimport { ServiceDiscoveryProvider } from './provider';\n/**\n * Module identifier used to register and look up the Service Discovery module\n * within the Fusion Framework module system.\n */\nexport const moduleName = 'serviceDiscovery';\n/**\n * Service Discovery module definition.\n *\n * Configures and initializes the service discovery mechanism within the\n * Fusion Framework module system. During initialization the module:\n *\n * 1. Creates the {@link ServiceDiscoveryConfig} (optionally inheriting the\n * parent module's discovery client so sub-modules share cache).\n * 2. Resolves the required {@link HttpModule} instance.\n * 3. Returns a {@link ServiceDiscoveryProvider} ready to resolve endpoints.\n *\n * @remarks\n * When a parent module exposes its own `serviceDiscovery` config, the child\n * module reuses that configuration by default. This enables shared caching\n * and consistent service resolution but means breaking changes in the\n * parent's client can affect child modules.\n */\nexport const module = {\n name: moduleName,\n configure: () => new ServiceDiscoveryConfigurator(),\n initialize: async (init) => {\n const { requireInstance, ref } = init;\n // create service discovery configuration\n const config = await init.config.createConfigAsync(init, {\n /**\n * @remarks\n * This is a dangerous pattern, as it allows the child module to access the parent module's client.\n * The client client could implement breaking changes that would affect the child module.\n * On the positive side, it allows the child module to reuse cache and always be up to date.\n */\n ...ref?.serviceDiscovery?.config,\n });\n // service discovery requires http module to be initialized\n const httpModule = await requireInstance('http');\n // return service discovery provider\n return new ServiceDiscoveryProvider(config, httpModule);\n },\n};\n/**\n * Creates a module configurator object for the Service Discovery module.\n *\n * Use this when you need to add service discovery to a\n * {@link ModulesConfigurator} via `addConfig` and want full control over\n * the configuration callback.\n *\n * For the simpler \"just enable it\" path, prefer {@link enableServiceDiscovery}.\n *\n * @template TRef - Module reference type forwarded to the configurator.\n * @param callback - Receives a {@link ServiceDiscoveryConfigurator} and must\n * return a `Promise` that resolves when configuration is complete.\n * @returns An `IModuleConfigurator` that can be passed to\n * `ModulesConfigurator.addConfig`.\n *\n * @example\n * ```typescript\n * import { configureServiceDiscovery } from '@equinor/fusion-framework-module-service-discovery';\n *\n * const configure = (configurator: ModulesConfigurator) => {\n * configurator.addConfig(\n * configureServiceDiscovery(async (builder) => {\n * builder.configureServiceDiscoveryClientByClientKey('my_sd_key');\n * }),\n * );\n * };\n * ```\n */\nexport const configureServiceDiscovery = (callback) => ({\n module,\n configure: (config) => callback(config),\n});\n/**\n * Enables the Service Discovery module on a {@link ModulesConfigurator}.\n *\n * This is the recommended entry point for most consumers. When called\n * without a callback the module auto-detects an HTTP client registered\n * under the key `\"service_discovery\"`. Pass a callback to override the\n * client key, endpoint, or provide a fully custom discovery client.\n *\n * @param configurator - The modules configurator to register the module on.\n * Must already include {@link HttpModule}.\n * @param callback - Optional callback receiving a\n * {@link ServiceDiscoveryConfigurator} for advanced setup. May be synchronous\n * or asynchronous.\n *\n * @example\n * ```typescript\n * import { enableServiceDiscovery } from '@equinor/fusion-framework-module-service-discovery';\n *\n * // Simplest usage — auto-detects the 'service_discovery' HTTP client\n * enableServiceDiscovery(configurator);\n *\n * // Custom HTTP client key\n * enableServiceDiscovery(configurator, async (builder) => {\n * builder.configureServiceDiscoveryClientByClientKey('sd_custom');\n * });\n * ```\n */\nexport const enableServiceDiscovery = (configurator, callback) => {\n configurator.addConfig(configureServiceDiscovery(callback ?? (() => Promise.resolve())));\n};\nexport default module;\n//# sourceMappingURL=module.js.map","/**\n * Abstract base class for telemetry adapters.\n *\n * Provides a common implementation for filtering telemetry items before processing.\n * Subclasses must implement the `_processItem` method to define how telemetry items are handled.\n *\n * @template TelemetryItem - The type representing a telemetry item.\n * @implements {ITelemetryAdapter}\n *\n * @remarks\n * - An optional filter function can be provided to determine which telemetry items should be processed.\n *\n * @example\n * class MyTelemetryAdapter extends BaseTelemetryAdapter {\n * protected _processItem(item: TelemetryItem): void {\n * // Custom processing logic\n * }\n * }\n */\nexport class BaseTelemetryAdapter {\n #filter;\n #initialized = false;\n /**\n * Creates a new instance of the TelemetryAdapter.\n *\n * @param filter - An optional function to filter telemetry items. If provided, only items for which the function returns true will be processed.\n */\n constructor(filter) {\n this.#filter = filter;\n }\n /**\n * Processes a telemetry item by applying an optional filter before handling it.\n *\n * If a filter is defined and the item does not pass the filter, the method returns early.\n * Otherwise, it delegates the processing of the item to the internal `_processItem` method.\n *\n * @param item - The telemetry item to be processed.\n */\n processItem(item) {\n // If the adapter is not initialized, do not process the item\n if (!this.#initialized) {\n return;\n }\n // If a filter is defined and the item does not pass the filter, do not process the item\n if (this.#filter && !this.#filter(item)) {\n return;\n }\n // Delegate the processing of the item to the internal `_processItem` method\n this._processItem(item);\n }\n /**\n * Initializes the telemetry adapter asynchronously.\n *\n * This method can only be called once. Subsequent calls will return immediately\n * without performing any initialization. It calls the protected `_initialize` method which\n * subclasses can override to provide custom initialization logic.\n *\n * TODO(#5112): Consider changing return type from Promise<void> to Promise<TelemetryItem[]>\n * to allow adapters to return telemetry items (errors/warnings) that occurred during\n * initialization, eliminating the chicken-and-egg problem with reporting init errors.\n *\n * @returns A promise that resolves when initialization is complete.\n * @sealed\n */\n async initialize() {\n // If the adapter is already initialized, do not initialize it again\n if (this.#initialized) {\n return;\n }\n // Initialize the adapter\n await this._initialize();\n // Mark the adapter as initialized\n this.#initialized = true;\n }\n /**\n * Protected initialization method that subclasses can override.\n *\n * This method is called only once during the adapter's lifetime.\n * Subclasses should override this method to perform any necessary async setup.\n * The base implementation is a no-op for adapters that don't need initialization.\n *\n * @returns A promise that resolves when initialization is complete.\n * @protected\n */\n async _initialize() {\n // Default implementation - no-op for adapters that don't need initialization\n }\n}\n//# sourceMappingURL=TelemetryAdapter.js.map","import { TelemetryType, TelemetryLevel, } from '@equinor/fusion-framework-module-telemetry';\nimport { BaseTelemetryAdapter } from '@equinor/fusion-framework-module-telemetry/adapter';\n/**\n * Telemetry adapter that outputs telemetry data to the browser console\n * with formatted titles and colour-coded log levels.\n *\n * Each telemetry item is logged using the console method that matches its\n * {@link TelemetryLevel} (e.g. `console.error` for `Error` / `Critical`,\n * `console.warn` for `Warning`). Event names are prefixed with a styled\n * application title badge.\n *\n * @example\n * ```typescript\n * import { ConsoleAdapter } from '@equinor/fusion-framework-module-telemetry/console-adapter';\n *\n * const adapter = new ConsoleAdapter({ title: 'MyApp' });\n * configurator.setAdapter(ConsoleAdapter.Identifier, adapter);\n * ```\n */\nexport class ConsoleAdapter extends BaseTelemetryAdapter {\n /** Default identifier for console adapter instances */\n static Identifier = 'console-adapter';\n #title;\n /**\n * Creates a new ConsoleAdapter instance\n * @param config - Optional configuration for the adapter\n */\n constructor(config) {\n super(config?.filter);\n this.#title = config?.title ?? 'Fusion';\n }\n /**\n * Generates background color CSS for the title based on telemetry level\n * @param lvl - The telemetry level\n * @returns CSS background color string\n */\n _generateTitleBackground(lvl) {\n // Pick a background color matching the severity of this telemetry level\n switch (lvl) {\n case TelemetryLevel.Critical:\n return 'rgb(255, 0, 0)';\n case TelemetryLevel.Error:\n // Light red/pink background\n return 'rgb(250, 138, 161)';\n case TelemetryLevel.Warning:\n // Light orange background\n return 'rgb(251, 203, 131)';\n case TelemetryLevel.Information:\n // Light gray background\n return 'rgb(200, 200, 200)';\n case TelemetryLevel.Debug:\n // Medium gray background\n return 'rgb(150, 150, 150)';\n default:\n // No background for unknown levels\n return 'none';\n }\n }\n /**\n * Formats a metric value into a human-readable time string\n * @param value - Time value in milliseconds\n * @returns Formatted time string (ms, s, or m s format)\n */\n _formatMetric = (value) => {\n // Show milliseconds for values under 1 second\n if (value < 1000) {\n return `${Math.round(value)}ms`;\n }\n // Show seconds with 1 decimal for values under 1 minute\n if (value < 60000) {\n return `${(value / 1000).toFixed(1)}s`;\n }\n // For longer durations, show minutes and seconds\n const minutes = Math.floor(value / 60000);\n const seconds = Math.floor((value % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n };\n /**\n * Generates formatted console log arguments with colored title styling\n * @param name - The telemetry item name\n * @param lvl - The telemetry level\n * @returns Array of arguments for console.log with CSS styling\n */\n _generateTitle(name, lvl) {\n return [\n // CSS format string: %c for CSS, %s for string substitution\n '%c %s %c %s %c',\n // Red background for app title\n 'background: rgb(179, 13, 47); color: white; padding: 1px;',\n // Application title (e.g., \"Fusion\")\n this.#title,\n // Level-specific background color\n `background: ${this._generateTitleBackground(lvl)}; color: rgb(50, 50, 50); padding: 1px;`,\n // Telemetry item name\n name,\n // Reset styling for remaining content\n 'background: none; color: inherit',\n ];\n }\n /**\n * Processes a telemetry item and outputs it to the console\n * @param item - The telemetry item to process\n */\n _processItem(item) {\n const { name, type, level, properties, metadata, scope } = item;\n // Common data structure included with all telemetry items\n const baseData = {\n properties,\n metadata,\n scope,\n };\n // Dispatch to the right console format based on the telemetry item's type\n switch (type) {\n case TelemetryType.Event:\n // Log events with base data\n this._log(level, name, baseData);\n break;\n case TelemetryType.Exception: {\n const exception = item.exception;\n // Include exception details\n this._log(level, name, baseData, exception);\n break;\n }\n case TelemetryType.Metric: {\n const metric = item.value;\n // Format metric with timer emoji\n this._log(level, name, `⏱️${this._formatMetric(metric)}`, baseData);\n break;\n }\n }\n }\n /**\n * Logs a message to the console using the appropriate console method based on level\n * @param lvl - The telemetry level determining which console method to use\n * @param title - The formatted title for the log entry\n * @param msg - Additional message arguments to log\n */\n _log(lvl, title, ...msg) {\n // Pick the console method matching this telemetry level's severity\n switch (lvl) {\n case TelemetryLevel.Critical:\n case TelemetryLevel.Error:\n // Use console.error for errors and critical issues\n console.error(...this._generateTitle(title, lvl), ...msg);\n break;\n case TelemetryLevel.Warning:\n // Use console.warn for warnings\n console.warn(...this._generateTitle(title, lvl), ...msg);\n break;\n case TelemetryLevel.Information:\n // Use console.info for info messages\n console.info(...this._generateTitle(title, lvl), ...msg);\n break;\n case TelemetryLevel.Debug:\n // Use console.debug for debug and verbose messages\n console.debug(...this._generateTitle(title, lvl), ...msg);\n break;\n default:\n // Fallback to console.log for unknown levels\n console.log(...this._generateTitle(title, lvl), ...msg);\n }\n }\n}\nexport default ConsoleAdapter;\n//# sourceMappingURL=ConsoleAdapter.js.map","/**\n * Builds the portal template entrypoint URL used by the SPA bootstrap loader.\n *\n * @param segments - Ordered URL/path segments such as proxy prefix, asset path, and template entry.\n * @returns A normalized entrypoint string with single slashes between segments.\n */\nexport const createPortalEntryPoint = (...segments) => {\n const normalized = segments\n // Drop undefined/null segments before further processing\n .filter((segment) => segment !== undefined && segment !== null)\n // Trim stray whitespace from each segment\n .map((segment) => segment.trim())\n // Drop any segments that became empty after trimming\n .filter(Boolean)\n // Strip leading slashes from every segment (and trailing slashes from the first)\n .map((segment, index) => {\n // The first segment may have a trailing slash (e.g. a base URL) that needs stripping\n if (index === 0) {\n return segment.replace(/\\/+$/g, '');\n }\n return segment.replace(/^\\/+|\\/+$/g, '');\n });\n return normalized.join('/');\n};\n//# sourceMappingURL=create-portal-entry-point.js.map","/**\n * Resolves a Vite environment toggle that may arrive as a parsed boolean or raw string.\n *\n * @param value - Environment value supplied through plugin configuration or a custom Vite define.\n * @returns `true` only for the boolean `true` or the string `'true'`.\n */\nexport function isEnabledEnvValue(value) {\n return value === true || value === 'true';\n}\n//# sourceMappingURL=is-enabled-env-value.js.map","import { TelemetryLevel } from '@equinor/fusion-framework-module-telemetry';\n/**\n * Registers the Fusion SPA service worker and wires token acquisition.\n *\n * @remarks\n * The service worker intercepts outgoing fetch requests that match\n * the configured {@link ResourceConfiguration | resource patterns},\n * rewrites URLs, and injects Bearer tokens obtained from the MSAL\n * module. This function:\n *\n * 1. Registers `/@fusion-spa-sw.js` as a module service worker.\n * 2. Listens for `GET_TOKEN` messages from the worker and responds\n * with MSAL access tokens.\n * 3. Sends the `INIT_CONFIG` message containing resource configurations\n * to the active worker once it is ready and controlling the page.\n *\n * @param framework - An initialized Fusion Framework instance that\n * includes the {@link MsalModule} (for token acquisition) and\n * {@link TelemetryModule} (for structured logging).\n * @throws {Error} When service workers are not supported by the browser.\n * @throws {Error} When the `FUSION_SPA_SERVICE_WORKER_RESOURCES`\n * environment variable is not defined.\n *\n * @example\n * ```ts\n * import { registerServiceWorker } from '@equinor/fusion-framework-vite-plugin-spa/html';\n *\n * const framework = await configurator.initialize();\n * await registerServiceWorker(framework);\n * ```\n */\nexport async function registerServiceWorker(framework) {\n const telemetry = framework.telemetry;\n // Bail out early when the browser has no service worker support at all\n if ('serviceWorker' in navigator === false) {\n const exception = new Error('Service workers are not supported in this browser.');\n exception.name = 'ServiceWorkerNotSupported';\n telemetry.trackException({\n name: `registerServiceWorker.${exception.name}`,\n exception,\n });\n throw exception;\n }\n const resourceConfigs = import.meta.env.FUSION_SPA_SERVICE_WORKER_RESOURCES;\n // The worker needs a resource config to know which requests to intercept\n if (!resourceConfigs) {\n const exception = new Error('Service worker config is not defined.');\n exception.name = 'ServiceWorkerConfigNotDefined';\n telemetry.trackException({\n name: `registerServiceWorker.${exception.name}`,\n exception,\n });\n throw exception;\n }\n /**\n * Helper function to send configuration to the service worker\n */\n const sendConfigToServiceWorker = (worker) => {\n worker.postMessage({\n type: 'INIT_CONFIG',\n config: resourceConfigs,\n });\n };\n try {\n // allow the service worker to start receiving messages early\n navigator.serviceWorker.startMessages();\n // listen for messages from the service worker (set up before registration)\n navigator.serviceWorker.addEventListener('message', async (event) => {\n // Only the GET_TOKEN message type requests a token from this handler\n if (event.data.type === 'GET_TOKEN') {\n try {\n // extract scopes from the event data\n const scopes = event.data.scopes;\n // Scopes must be a real array before they can be used to request a token\n if (!scopes || !Array.isArray(scopes)) {\n const error = new Error('Invalid scopes provided');\n error.name = 'InvalidScopesProvided';\n throw error;\n }\n // request a token from the MSAL module\n const token = await framework.auth.acquireToken({ request: { scopes } });\n // A missing token means acquisition failed and the worker can't proceed\n if (!token) {\n const error = new Error('Failed to acquire token');\n error.name = 'FailedToAcquireToken';\n throw error;\n }\n // send the token back to the service worker\n event.ports[0].postMessage({\n accessToken: token.accessToken,\n expiresOn: token.expiresOn?.getTime(),\n });\n }\n catch (error) {\n const exception = error;\n telemetry.trackException({\n name: `serviceWorker.onMessage.${exception.name}`,\n exception,\n });\n event.ports[0].postMessage({\n error: error.message,\n });\n }\n }\n });\n // register the service worker with telemetry\n // updateViaCache: 'none' ensures the service worker script is always fetched fresh\n // This is important during development to pick up code changes\n using measurement = telemetry.measure({\n name: 'registerServiceWorker',\n level: TelemetryLevel.Information,\n });\n const registration = await measurement.clone().resolve(navigator.serviceWorker.register('/@fusion-spa-sw.js', {\n type: 'module',\n scope: '/',\n updateViaCache: 'none',\n }), {\n data: {\n name: 'registerServiceWorker.register',\n level: TelemetryLevel.Debug,\n },\n });\n // Handle service worker updates/installations\n // If there's a service worker waiting or installing, send config when it activates\n if (registration.waiting) {\n sendConfigToServiceWorker(registration.waiting);\n }\n // A worker still installing needs to reach the 'activated' state before it can receive config\n if (registration.installing) {\n registration.installing.addEventListener('statechange', (event) => {\n const worker = event.target;\n // Only send config once the worker has fully activated\n if (worker.state === 'activated') {\n sendConfigToServiceWorker(worker);\n }\n });\n }\n // Listen for controller changes (happens during hard refresh or updates)\n navigator.serviceWorker.addEventListener('controllerchange', () => {\n // Only send config once this page is actually controlled by a worker\n if (navigator.serviceWorker.controller) {\n sendConfigToServiceWorker(navigator.serviceWorker.controller);\n }\n });\n // wait for the service worker to be ready\n const readyRegistration = await measurement.clone().resolve(navigator.serviceWorker.ready, {\n data: {\n name: 'registerServiceWorker.ready',\n level: TelemetryLevel.Debug,\n },\n });\n // ensure we have an active service worker before sending config\n const activeWorker = readyRegistration.active;\n // Without an active worker there's nothing to send config to\n if (!activeWorker) {\n console.error('[Service Worker Registration] Service worker is not active after ready state');\n return;\n }\n // CRITICAL: Wait for the service worker to become the controller\n // This ensures the service worker can intercept fetch requests\n if (!navigator.serviceWorker.controller) {\n await measurement.clone().resolve(new Promise((resolve) => {\n let checkInterval;\n const finish = () => {\n clearInterval(checkInterval);\n navigator.serviceWorker.removeEventListener('controllerchange', onControllerChange);\n resolve();\n };\n const onControllerChange = () => finish();\n // If controllerchange fires, the service worker has taken control\n navigator.serviceWorker.addEventListener('controllerchange', onControllerChange);\n // Polling fallback and timeout to prevent infinite waiting\n checkInterval = setInterval(() => {\n // Stop polling once a controller has taken over\n if (navigator.serviceWorker.controller)\n finish();\n }, 200);\n setTimeout(finish, 5000);\n }), {\n data: {\n name: 'registerServiceWorker.controllerWait',\n level: TelemetryLevel.Debug,\n },\n });\n }\n // send the config to the active service worker\n sendConfigToServiceWorker(activeWorker);\n // Also send to the controller if it exists and is different from active\n if (navigator.serviceWorker.controller && navigator.serviceWorker.controller !== activeWorker) {\n sendConfigToServiceWorker(navigator.serviceWorker.controller);\n }\n }\n catch (error) {\n telemetry.trackException({\n name: `registerServiceWorker.${error.name}`,\n exception: error,\n });\n }\n}\n//# sourceMappingURL=register-service-worker.js.map","// Generated by genversion.\nexport const version = '4.1.0-next.2';\n//# sourceMappingURL=version.js.map","import { ModulesConfigurator } from '@equinor/fusion-framework-module';\nimport { configureHttpClient } from '@equinor/fusion-framework-module-http';\nimport { enableMSAL } from '@equinor/fusion-framework-module-msal';\nimport { enableServiceDiscovery, } from '@equinor/fusion-framework-module-service-discovery';\nimport { enableTelemetry, TelemetryLevel, } from '@equinor/fusion-framework-module-telemetry';\nimport { ConsoleAdapter } from '@equinor/fusion-framework-module-telemetry/console-adapter';\nimport { createPortalEntryPoint } from './create-portal-entry-point.js';\nimport { isEnabledEnvValue } from './is-enabled-env-value.js';\nimport { registerServiceWorker } from './register-service-worker.js';\nimport { version } from '../version.js';\n// Allow dynamic import without vite\nconst importWithoutVite = (path) => import(/* @vite-ignore */ path);\n// Create Fusion Framework configurator\nconst configurator = new ModulesConfigurator();\nconst serviceDiscoveryUrl = new URL(import.meta.env.FUSION_SPA_SERVICE_DISCOVERY_URL, import.meta.env.FUSION_SPA_SERVICE_DISCOVERY_URL.startsWith('http')\n ? undefined\n : window.location.origin);\n// define service discovery client - this is used in the service discovery module\nconfigurator.addConfig(configureHttpClient('service_discovery', {\n baseUri: String(serviceDiscoveryUrl),\n defaultScopes: import.meta.env.FUSION_SPA_SERVICE_DISCOVERY_SCOPES,\n}));\n// setup service discovery - enable service discovery for the framework\nenableServiceDiscovery(configurator, async (builder) => {\n builder.configureServiceDiscoveryClientByClientKey('service_discovery');\n});\n// Avoid interactive Entra ID authentication when the SPA runs in CI or Playwright.\nif (isEnabledEnvValue(import.meta.env.FUSION_SPA_MSAL_MOCK)) {\n const { enableMsalMock } = await import('@equinor/fusion-framework-module-msal/mock');\n const mockToken = import.meta.env.FUSION_SPA_MSAL_MOCK_TOKEN;\n enableMsalMock(configurator, (builder) => {\n // Preserve the mock client's default identity when no backend-specific token is configured.\n if (!mockToken)\n return;\n builder.setToken(mockToken);\n });\n}\nelse {\n enableMSAL(configurator, (builder) => {\n builder.setClientConfig({\n auth: {\n clientId: import.meta.env.FUSION_SPA_MSAL_CLIENT_ID,\n tenantId: import.meta.env.FUSION_SPA_MSAL_TENANT_ID,\n redirectUri: import.meta.env.FUSION_SPA_MSAL_REDIRECT_URI,\n },\n });\n builder.setRequiresAuth(isEnabledEnvValue(import.meta.env.FUSION_SPA_MSAL_REQUIRES_AUTH));\n });\n}\nenableTelemetry(configurator, {\n attachConfiguratorEvents: true,\n configure: (builder) => {\n const consoleLevel = Number(import.meta.env.FUSION_SPA_TELEMETRY_CONSOLE_LEVEL ?? TelemetryLevel.Information);\n const consoleAdapter = new ConsoleAdapter({\n filter: Number.isNaN(consoleLevel) ? undefined : (item) => item.level >= consoleLevel,\n });\n builder.setAdapter('console', consoleAdapter);\n builder.setMetadata(({ modules }) => {\n const metadata = {\n fusion: {\n spa: {\n version,\n },\n },\n // biome-ignore lint/suspicious/noExplicitAny: we need to use any here to allow dynamic properties\n };\n // Only attach user metadata when the auth module has resolved an account\n if (modules?.auth) {\n metadata.fusion.user = {\n id: modules.auth.account?.homeAccountId,\n name: modules.auth.account?.name,\n email: modules.auth.account?.username,\n };\n }\n return metadata;\n });\n },\n});\n(async () => {\n // initialize the framework - this will create the framework instance and configure the modules\n const ref = await configurator.initialize();\n const telemetry = ref.telemetry;\n // attach service discovery to the framework - append auth token to configured endpoints\n using measurement = telemetry.measure({\n name: 'bootstrap',\n level: TelemetryLevel.Information,\n });\n await measurement.clone().resolve(registerServiceWorker(ref), {\n data: {\n level: TelemetryLevel.Debug,\n name: 'bootstrap::registerServiceWorker',\n },\n });\n // create a client for the portal service - this is used to fetch the portal manifest\n const portalClient = await ref.serviceDiscovery.createClient('portal-config');\n // fetch the portal manifest - this is used to load the portal template\n const portalId = import.meta.env.FUSION_SPA_PORTAL_ID;\n const portalTag = import.meta.env.FUSION_SPA_PORTAL_TAG ?? 'latest';\n const portalProxy = import.meta.env.FUSION_SPA_PORTAL_PROXY ?? false;\n const portal_manifest = await measurement\n .clone()\n .resolve(portalClient.json(`/portals/${portalId}@${portalTag}`), {\n data: (manifest) => ({\n name: 'bootstrap::loadPortalManifest',\n level: TelemetryLevel.Debug,\n properties: {\n portalId,\n portalTag,\n templateEntry: manifest.build.templateEntry,\n manifestVersion: manifest.build.config?.version,\n assetPath: manifest.build.assetPath,\n },\n }),\n });\n const portal_config = await measurement\n .clone()\n .resolve(portalClient.json(`/portals/${portalId}@${portalTag}/config`), {\n data: {\n name: 'bootstrap::loadPortalConfig',\n level: TelemetryLevel.Debug,\n properties: {\n portalId,\n portalTag,\n },\n },\n });\n // create a entrypoint for the portal - this is used to render the portal\n const el = document.createElement('div');\n document.body.innerHTML = '';\n document.body.appendChild(el);\n const portalEntryPoint = createPortalEntryPoint(portalProxy ? '/portal-proxy' : undefined, portal_manifest.build.assetPath, portal_manifest.build.templateEntry);\n // TODO(#5066): should test if the entrypoint is external or internal\n // TODO(#5066): add proper return type\n const { render } = await measurement\n .clone()\n .resolve(importWithoutVite(portalEntryPoint), {\n data: {\n name: 'bootstrap::loadPortalSourceCode',\n level: TelemetryLevel.Debug,\n properties: {\n portalId,\n portalTag,\n entryPoint: portalEntryPoint,\n },\n },\n });\n // render the portal - this will load the portal template and render it\n render(el, { ref, manifest: portal_manifest, config: portal_config });\n})();\n//# sourceMappingURL=bootstrap.js.map"],"names":["isFunction","isArray","asyncScheduler","finalize","version","z\n .string","z.enum","z.object","z\n .object","z.boolean","z\n .union","z.string","z.instanceof","z\n .enum","z.record","module","createNextState","createReducer","URL","createActions","generateGUID","actions","makeReducer","generateUniqueKey"],"mappings":"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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,iBAAiB,GAAG,UAAU;AACzC;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG,IAAI,YAAY,EAAE;AACtC;AACA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA,IAAI,MAAM;AACV;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG,IAAI,OAAO,EAAE;AAC3B;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG,EAAE;AACf;AACA;AACA;AACA;AACA,IAAI,iBAAiB;AACrB;AACA;AACA;AACA;AACA,IAAI,mBAAmB;AACvB;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,GAAGiB,EAAY,EAAE;AAC/B;AACA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB;AACA,QAAQ,OAAO,IAAI,CAAC,OAAO;AAC3B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AACpC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG;AAChB;AACA,QAAQ,OAAO,IAAI,CAAC,MAAM;AAC1B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAC1C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC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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,68,74,99,100,101,102,103,104,105,106,107]}
1
+ {"version":3,"file":"bootstrap.js","sources":["../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subject.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Scheduler.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/throwError.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isObservable.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/firstValueFrom.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isDate.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/timeout.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/timer.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/interval.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/concatMap.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/take.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/finalize.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/first.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/takeLast.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/last.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/scan.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/share.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/tap.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js","../../../../modules/module/dist/esm/lib/configurator/RequiredModuleTimeoutError.js","../../../../modules/module/dist/esm/lib/configurator/module-configurator-event-base-name.js","../../../../modules/module/dist/esm/lib/configurator/module-configurator-event-name.js","../../../../modules/module/dist/esm/lib/configurator/phases/create-module-configs.js","../../../../modules/module/dist/esm/lib/configurator/phases/run-post-configure-hooks.js","../../../../modules/module/dist/esm/lib/configurator/phases/run-configure-phase.js","../../../../modules/module/dist/esm/lib/configurator/phases/create-require-instance.js","../../../../modules/module/dist/esm/lib/configurator/phases/run-initialize-phase.js","../../../../modules/module/dist/esm/lib/configurator/phases/run-post-initialize-phase.js","../../../../modules/module/dist/esm/lib/configurator/phases/run-plugin-phase.js","../../../../modules/module/dist/esm/lib/configurator/phases/run-dispose-phase.js","../../../../modules/module/dist/esm/version.js","../../../../modules/module/dist/esm/lib/configurator/ModulesConfigurator.js","../../../../modules/http/dist/esm/lib/operators/ProcessOperators.js","../../../../modules/http/dist/esm/lib/operators/request-operator-header.js","../../../../modules/http/dist/esm/lib/operators/HttpRequestHandler.js","../../../../modules/http/dist/esm/lib/operators/HttpResponseHandler.js","../../../../modules/http/dist/esm/lib/operators/HttpMiddlewareHandler.js","../../../../modules/http/dist/esm/lib/operators/fetch-request.schemas.js","../../../../modules/http/dist/esm/lib/operators/capitalize-request-method-operator.js","../../../../modules/http/dist/esm/lib/operators/request-validation-operator.js","../../../../modules/http/dist/esm/errors/HttpResponseError.js","../../../../modules/http/dist/esm/errors/HttpJsonResponseError.js","../../../../modules/http/dist/esm/errors/ServerSentEventResponseError.js","../../../../modules/http/dist/esm/errors/ClientNotFoundException.js","../../../../modules/http/dist/esm/lib/selectors/create-sse-selector.js","../../../../modules/http/dist/esm/configurator.js","../../../../modules/http/dist/esm/version.js","../../../../modules/http/dist/esm/provider.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/dom/fetch.js","../../../../modules/http/dist/esm/lib/selectors/json-selector.js","../../../../modules/http/dist/esm/lib/selectors/blob-selector.js","../../../../modules/http/dist/esm/lib/client/client.js","../../../../modules/http/dist/esm/lib/client/client-msal.js","../../../../modules/http/dist/esm/module.js","../../../../../node_modules/.pnpm/immer@11.1.18/node_modules/immer/dist/immer.mjs","../../../../utils/observable/dist/esm/operators/filter-action.js","../../../../utils/observable/dist/esm/FlowSubject.js","../../../../utils/observable/dist/esm/actions/utils.js","../../../../utils/observable/dist/esm/actions/create-action.js","../../../../utils/observable/dist/esm/actions/create-async-action.js","../../../../utils/observable/dist/esm/create-reducer.js","../../../../utils/observable/dist/esm/is-observable-input.js","../../../../utils/observable/dist/esm/to-observable.js","../../../../modules/telemetry/dist/esm/utils/merge-telemetry-item.js","../../../../modules/telemetry/dist/esm/TelemetryConfigurator.js","../../../../modules/telemetry/dist/esm/version.js","../../../../modules/event/dist/esm/FrameworkEvent.js","../../../../modules/telemetry/dist/esm/TelemetryErrorEvent.js","../../../../modules/telemetry/dist/esm/TelemetryEvent.js","../../../../modules/telemetry/dist/esm/Measurement.js","../../../../modules/telemetry/dist/esm/utils/resolve-metadata.js","../../../../modules/telemetry/dist/esm/TelemetryProvider.js","../../../../modules/telemetry/dist/esm/module.js","../../../../modules/telemetry/dist/esm/utils/map-configurator-events.js","../../../../modules/telemetry/dist/esm/enable-telemetry.js","../../../../utils/query/dist/esm/operators/concat-queue.js","../../../../utils/query/dist/esm/operators/merge-queue.js","../../../../utils/query/dist/esm/operators/switch-queue.js","../../../../utils/query/dist/esm/operators/query-value.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/regex.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/validate.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/parse.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/stringify.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/rng.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/v35.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/v4.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/sha1.js","../../../../../node_modules/.pnpm/uuid@14.0.1/node_modules/uuid/dist/v5.js","../../../../utils/query/dist/esm/client/QueryClientError.js","../../../../utils/query/dist/esm/client/actions.js","../../../../utils/query/dist/esm/client/handle-requests.js","../../../../utils/query/dist/esm/client/handle-execution.js","../../../../utils/query/dist/esm/client/handle-failure.js","../../../../utils/query/dist/esm/client/create-reducer.js","../../../../utils/query/dist/esm/client/QueryClientJob.js","../../../../utils/query/dist/esm/client/QueryClientEvent.js","../../../../utils/query/dist/esm/client/QueryClient.js","../../../../utils/query/dist/esm/cache/actions.js","../../../../utils/query/dist/esm/cache/create-reducer.js","../../../../utils/query/dist/esm/cache/QueryCacheEvent.js","../../../../utils/query/dist/esm/cache/QueryCache.js","../../../../utils/query/dist/esm/QueryTask.js","../../../../utils/query/dist/esm/QueryEvent.js","../../../../utils/query/dist/esm/Query.js","../../../../modules/service-discovery/dist/esm/api-services.js","../../../../modules/service-discovery/dist/esm/client.js","../../../../modules/service-discovery/dist/esm/configurator.js","../../../../modules/service-discovery/dist/esm/version.js","../../../../modules/service-discovery/dist/esm/provider.js","../../../../modules/service-discovery/dist/esm/module.js","../../../../modules/telemetry/dist/esm/TelemetryAdapter.js","../../../../modules/telemetry/dist/esm/adapters/console/ConsoleAdapter.js","../esm/html/create-portal-entry-point.js","../esm/html/is-enabled-env-value.js","../esm/html/register-service-worker.js","../esm/version.js","../esm/html/bootstrap.js"],"sourcesContent":["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 { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.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';\nimport { isFunction } from '../util/isFunction';\nexport function throwError(errorOrErrorFactory, scheduler) {\n var errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function () { return errorOrErrorFactory; };\n var init = function (subscriber) { return subscriber.error(errorFactory()); };\n return new Observable(scheduler ? function (subscriber) { return scheduler.schedule(init, 0, subscriber); } : init);\n}\n//# sourceMappingURL=throwError.js.map","import { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n//# sourceMappingURL=isObservable.js.map","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: function () {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=firstValueFrom.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport var TimeoutError = createErrorClass(function (_super) {\n return function TimeoutErrorImpl(info) {\n if (info === void 0) { info = null; }\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n };\n});\nexport function timeout(config, schedulerArg) {\n var _a = (isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d;\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return operate(function (source, subscriber) {\n var originalSourceSubscription;\n var timerSubscription;\n var lastValue = null;\n var seen = 0;\n var startTimer = function (delay) {\n timerSubscription = executeSchedule(subscriber, scheduler, function () {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen,\n })).subscribe(subscriber);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n };\n originalSourceSubscription = source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n seen++;\n subscriber.next((lastValue = value));\n each > 0 && startTimer(each);\n }, undefined, undefined, function () {\n if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n }\n lastValue = null;\n }));\n !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n });\n}\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n//# sourceMappingURL=timeout.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","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 { __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 { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n//# sourceMappingURL=concatMap.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=defaultIfEmpty.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.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 { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); }));\n });\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","import { operate } from '../util/lift';\nexport function finalize(callback) {\n return operate(function (source, subscriber) {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\n//# sourceMappingURL=finalize.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n };\n}\n//# sourceMappingURL=first.js.map","import { __values } from \"tslib\";\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function takeLast(count) {\n return count <= 0\n ? function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var buffer = [];\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n buffer.push(value);\n count < buffer.length && buffer.shift();\n }, function () {\n var e_1, _a;\n try {\n for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {\n var value = buffer_1_1.value;\n subscriber.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n }, undefined, function () {\n buffer = null;\n }));\n });\n}\n//# sourceMappingURL=takeLast.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\nexport function last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n };\n}\n//# sourceMappingURL=last.js.map","import { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nexport function mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return operate(function (source, subscriber) {\n var state = seed;\n return mergeInternals(source, subscriber, function (value, index) { return accumulator(state, value, index); }, concurrent, function (value) {\n state = value;\n }, false, undefined, function () { return (state = null); });\n });\n}\n//# sourceMappingURL=mergeScan.js.map","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n//# sourceMappingURL=scan.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection;\n var resetConnection;\n var subject;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n var _a, _b, _c;\n var bufferSize;\n var refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n (_a = configOrBufferSize.bufferSize, bufferSize = _a === void 0 ? Infinity : _a, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler = configOrBufferSize.scheduler);\n }\n else {\n bufferSize = (configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity);\n }\n return share({\n connector: function () { return new ReplaySubject(bufferSize, windowTime, scheduler); },\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\n//# sourceMappingURL=shareReplay.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 { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function takeWhile(predicate, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=takeWhile.js.map","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n var tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error: error, complete: complete }\n : observerOrNext;\n return tapObserver\n ? operate(function (source, subscriber) {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n//# sourceMappingURL=tap.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom() {\n var inputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputs[_i] = arguments[_i];\n }\n var project = popResultSelector(inputs);\n return operate(function (source, subscriber) {\n var len = inputs.length;\n var otherValues = new Array(len);\n var hasValue = inputs.map(function () { return false; });\n var ready = false;\n var _loop_1 = function (i) {\n innerFrom(inputs[i]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (ready) {\n var values = __spreadArray([value], __read(otherValues));\n subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);\n }\n }));\n });\n}\n//# sourceMappingURL=withLatestFrom.js.map","/**\n * Error thrown when a required module fails to initialize within the expected\n * timeout window.\n *\n * Indicates a circular dependency or a module that never resolves.\n */\nexport class RequiredModuleTimeoutError extends Error {\n /**\n * Creates a new `RequiredModuleTimeoutError`.\n */\n constructor() {\n super('Module initialization timed out');\n this.name = 'RequiredModuleTimeoutError';\n }\n}\nexport default RequiredModuleTimeoutError;\n//# sourceMappingURL=RequiredModuleTimeoutError.js.map","/** Shared base segment for module configurator lifecycle event names. */\nexport const ModuleConfiguratorEventBaseName = 'ModuleConfigurator';\nexport default ModuleConfiguratorEventBaseName;\n//# sourceMappingURL=module-configurator-event-base-name.js.map","import { ModuleConfiguratorEventBaseName } from './module-configurator-event-base-name.js';\nexport { ModuleConfiguratorEventBaseName };\n/**\n * Event names emitted by `ModulesConfigurator` and its lifecycle phase helpers.\n *\n * Use this map instead of inline string literals when emitting or filtering\n * configurator lifecycle events. Each value follows the\n * `ModuleConfigurator.{name}.{state}` convention. The emitted names are still\n * prefixed by `ModulesConfigurator::_registerEvent` at runtime.\n */\nexport const ModuleConfiguratorEventName = {\n ModuleConfigAdded: `${ModuleConfiguratorEventBaseName}.module.configAdded`,\n OnConfiguredAdded: `${ModuleConfiguratorEventBaseName}.onConfigured.added`,\n OnInitializedAdded: `${ModuleConfiguratorEventBaseName}.onInitialized.added`,\n PluginAdded: `${ModuleConfiguratorEventBaseName}.plugin.added`,\n InitializeConfigLoaded: `${ModuleConfiguratorEventBaseName}.config.loaded`,\n InitializeInstanceInitialized: `${ModuleConfiguratorEventBaseName}.instance.initialized`,\n Initialize: `${ModuleConfiguratorEventBaseName}.initialize.complete`,\n ConfiguratorCreated: `${ModuleConfiguratorEventBaseName}.configurator.created`,\n ConfiguratorFailed: `${ModuleConfiguratorEventBaseName}.configurator.failed`,\n ModulePostConfigured: `${ModuleConfiguratorEventBaseName}.module.postConfigured`,\n ModulePostConfigureError: `${ModuleConfiguratorEventBaseName}.module.postConfigureError`,\n PostConfigureHooks: `${ModuleConfiguratorEventBaseName}.postConfigureHooks.started`,\n PostConfigureHooksComplete: `${ModuleConfiguratorEventBaseName}.postConfigureHooks.complete`,\n PostConfigureHooksError: `${ModuleConfiguratorEventBaseName}.postConfigureHooks.error`,\n ModuleInitializeError: `${ModuleConfiguratorEventBaseName}.module.initializeError`,\n ModuleInitializing: `${ModuleConfiguratorEventBaseName}.module.initializing`,\n ProviderNotBaseModuleProvider: `${ModuleConfiguratorEventBaseName}.provider.invalidBase`,\n ProviderVersionWarning: `${ModuleConfiguratorEventBaseName}.provider.versionMissing`,\n ModuleInitialized: `${ModuleConfiguratorEventBaseName}.module.initialized`,\n RequireInstanceModuleNotDefined: `${ModuleConfiguratorEventBaseName}.requireInstance.moduleNotDefined`,\n RequireInstanceModuleAlreadyInitialized: `${ModuleConfiguratorEventBaseName}.requireInstance.moduleAlreadyInitialized`,\n RequireInstanceAwaitingModule: `${ModuleConfiguratorEventBaseName}.requireInstance.awaitingModule`,\n RequireInstanceTimeout: `${ModuleConfiguratorEventBaseName}.requireInstance.timeout`,\n RequireInstanceModuleResolved: `${ModuleConfiguratorEventBaseName}.requireInstance.moduleResolved`,\n ModuleInitializeComplete: `${ModuleConfiguratorEventBaseName}.modules.initializeComplete`,\n InitializeComplete: `${ModuleConfiguratorEventBaseName}.initialize.instanceComplete`,\n ConfiguratorPostInitializeStart: `${ModuleConfiguratorEventBaseName}.postInitialize.started`,\n ModulePostInitializeStart: `${ModuleConfiguratorEventBaseName}.modulePostInitialize.started`,\n ModulePostInitializeComplete: `${ModuleConfiguratorEventBaseName}.modulePostInitialize.complete`,\n ModulePostInitializeError: `${ModuleConfiguratorEventBaseName}.modulePostInitialize.error`,\n PostInitializeComplete: `${ModuleConfiguratorEventBaseName}.postInitialize.complete`,\n PostInitializeCompleteNoHooks: `${ModuleConfiguratorEventBaseName}.postInitialize.noHooks`,\n PostInitializeHooks: `${ModuleConfiguratorEventBaseName}.postInitializeHooks.started`,\n PostInitializeHooksComplete: `${ModuleConfiguratorEventBaseName}.postInitializeHooks.complete`,\n PostInitializeHooksError: `${ModuleConfiguratorEventBaseName}.postInitializeHooks.error`,\n PluginsRegister: `${ModuleConfiguratorEventBaseName}.plugins.registering`,\n PluginRegistered: `${ModuleConfiguratorEventBaseName}.plugin.registered`,\n PluginRegisterError: `${ModuleConfiguratorEventBaseName}.plugin.registerError`,\n PluginsRegistered: `${ModuleConfiguratorEventBaseName}.plugins.registered`,\n Dispose: `${ModuleConfiguratorEventBaseName}.dispose.started`,\n PluginsDisposing: `${ModuleConfiguratorEventBaseName}.plugins.disposing`,\n PluginDisposed: `${ModuleConfiguratorEventBaseName}.plugin.disposed`,\n PluginDisposeError: `${ModuleConfiguratorEventBaseName}.plugin.disposeError`,\n ModulesDispose: `${ModuleConfiguratorEventBaseName}.modules.disposing`,\n ModuleDisposed: `${ModuleConfiguratorEventBaseName}.module.disposed`,\n ModuleDisposeError: `${ModuleConfiguratorEventBaseName}.module.disposeError`,\n ModulesDisposed: `${ModuleConfiguratorEventBaseName}.modules.disposed`,\n};\n//# sourceMappingURL=module-configurator-event-name.js.map","// biome-ignore-all lint/suspicious/noExplicitAny: internal type-erased dispatch — the configure phase coordinates opaque module configs without knowing their concrete shapes\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { from, lastValueFrom } from 'rxjs';\nimport { mergeMap, reduce } from 'rxjs/operators';\nimport { ModuleEventLevel } from '../../../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\n/**\n * Creates the raw module config map by calling each module's `configure` factory.\n *\n * Runs all module `configure(ref)` calls concurrently via `mergeMap` and\n * accumulates results into a single config object. The object is seeded with\n * `onAfterConfiguration` and `onAfterInit` helpers that allow modules to\n * register additional post-phase callbacks during configuration.\n *\n * @param ctx - The configure phase context.\n * @param ref - Optional reference forwarded to each module's configure factory.\n * @returns A promise resolving to the merged module config map.\n * @template TRef - Reference type forwarded to module configure hooks.\n * @throws Re-throws any error from a module's `configure` factory after emitting a failure event.\n * @internal\n */\nexport async function createModuleConfigs(ctx, ref) {\n const { modules, afterConfiguration, afterInit, registerEvent } = ctx;\n // Run each module's configure factory concurrently and track timing/failures\n const config$ = from(modules).pipe(mergeMap(async (module) => {\n const configStart = performance.now();\n try {\n const configurator = await module.configure?.(ref);\n const configLoadTime = Math.round(performance.now() - configStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ConfiguratorCreated,\n message: `Configurator created for ${module.name} in ${configLoadTime}ms`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n configLoadTime,\n },\n metric: configLoadTime,\n });\n return { [module.name]: configurator };\n }\n catch (err) {\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.ConfiguratorFailed,\n message: `Failed to create configurator for ${module.name}`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n metric: Math.round(performance.now() - configStart),\n error: err,\n });\n throw err;\n }\n }), reduce((acc, module) => {\n // Merge each module's config object into the shared accumulator\n const merged = Object.assign(acc, module);\n return merged;\n }, \n // Seed the config object with hooks so modules can register post-phase callbacks\n // during their own configure factory (a common pattern for cross-module wiring).\n {\n onAfterConfiguration(cb) {\n afterConfiguration.push(cb);\n },\n onAfterInit(cb) {\n afterInit.push(cb);\n },\n }));\n return lastValueFrom(config$);\n}\n//# sourceMappingURL=create-module-configs.js.map","import { ModuleEventLevel } from '../../../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\n/**\n * Runs the post-configure phase: calls each module's `postConfigure` hook and\n * then invokes all registered `afterConfiguration` callbacks.\n *\n * Module `postConfigure` failures are caught individually and emitted as\n * Warning events so one failing module cannot block others.\n *\n * @param ctx - The configure phase context.\n * @param config - The merged module config map produced by {@link createModuleConfigs}.\n * @returns A promise resolving when all post-configure hooks have settled.\n * @template TRef - Reference type forwarded to module configure hooks.\n * @internal\n */\nexport async function runPostConfigureHooks(ctx, \n// biome-ignore lint/suspicious/noExplicitAny: internal type-erased dispatch — the configure phase coordinates opaque module configs without knowing their concrete shapes\nconfig) {\n const { modules, afterConfiguration, registerEvent } = ctx;\n // Run each module's postConfigure hook; failures are isolated so one\n // failing module does not prevent others from completing post-configure.\n await Promise.allSettled(modules\n // Only process modules that define a postConfigure hook\n .filter((module) => !!module.postConfigure)\n // Call postConfigure on each module that defines the hook\n .map(async (module) => {\n try {\n const postConfigStart = performance.now();\n await module.postConfigure?.(config);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModulePostConfigured,\n message: `Module ${module.name} post-configured successfully`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n postConfigTime: Math.round(performance.now() - postConfigStart),\n },\n });\n }\n catch (err) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ModulePostConfigureError,\n message: `Module ${module.name} post-configure failed`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n error: err,\n });\n }\n }));\n // Skip the afterConfiguration hooks entirely when none are registered\n if (!afterConfiguration.length)\n return;\n // Run all registered afterConfiguration callbacks. These were added either\n // by addConfig's afterConfig or via config.onAfterConfiguration inside a\n // module's configure factory.\n try {\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostConfigureHooks,\n message: `Post configure hooks [${afterConfiguration.length}] called`,\n });\n const postConfigHooksStart = performance.now();\n await Promise.allSettled(afterConfiguration\n // Invoke every registered afterConfiguration callback with the final config\n .map((x) => Promise.resolve(x(config))));\n const postConfigHooksTime = Math.round(performance.now() - postConfigHooksStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostConfigureHooksComplete,\n message: 'Post configure hooks complete',\n properties: {\n count: afterConfiguration.length,\n postConfigHooksTime,\n },\n metric: postConfigHooksTime,\n });\n }\n catch (err) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.PostConfigureHooksError,\n message: 'Post configure hook failed',\n error: err,\n });\n }\n}\nexport default runPostConfigureHooks;\n//# sourceMappingURL=run-post-configure-hooks.js.map","import { createModuleConfigs } from './create-module-configs.js';\nimport { runPostConfigureHooks } from './run-post-configure-hooks.js';\n/**\n * Runs the full configure lifecycle phase for a set of modules.\n *\n * Orchestrates three sub-steps in order:\n * 1. {@link createModuleConfigs} — call each module's `configure(ref)` factory.\n * 2. Apply all user-registered config callbacks (`_configs`) sequentially.\n * 3. {@link runPostConfigureHooks} — call `postConfigure` and `afterConfiguration` hooks.\n *\n * @param ctx - The configure phase context.\n * @param ref - Optional reference forwarded through all configure hooks.\n * @returns A promise resolving to the fully configured module config map.\n * @template TRef - Reference type forwarded to module configure hooks.\n */\nexport async function runConfigurePhase(ctx, ref) {\n // Step 1: Create raw config objects for all registered modules\n const config = await createModuleConfigs(ctx, ref);\n // Step 2: Apply all user-registered configuration callbacks concurrently.\n await Promise.all(\n // Invoke every registered configure callback with the merged config\n ctx.configs.map((cb) => Promise.resolve(cb(config, ref))));\n // Step 3: Run module postConfigure hooks and afterConfiguration callbacks\n await runPostConfigureHooks(ctx, config);\n return config;\n}\nexport default runConfigurePhase;\n//# sourceMappingURL=run-configure-phase.js.map","import { firstValueFrom, throwError } from 'rxjs';\nimport { filter, map, tap, timeout } from 'rxjs/operators';\nimport { ModuleEventLevel, } from '../../../types.js';\nimport { RequiredModuleTimeoutError } from '../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\n/**\n * Creates a `requireInstance` resolver for use during module initialization.\n *\n * `requireInstance` is passed into each module's `initialize` call so it can\n * declare dependencies on other modules without knowing whether those modules\n * have already finished initializing. The resolver waits up to `wait` seconds\n * for the target module to appear in the shared `instance$` subject.\n *\n * @param moduleNames - Names of all modules registered in this initialization run.\n * @param instance$ - Shared subject accumulating initialized module instances.\n * @param registerEvent - Function to emit lifecycle events.\n * @returns A `requireInstance` function matching the shape expected by `ModuleInitializerArgs`.\n * @template T - The shape of the accumulated module instance map.\n * @throws {Error} When the requested module name was never registered.\n * @throws {RequiredModuleTimeoutError} When the requested module does not\n * initialize within its timeout window.\n * @internal\n */\nexport function createRequireInstance(moduleNames, instance$, registerEvent) {\n // The implementation signature is concrete (name: string) but the public contract\n // must be the generic shape expected by ModuleInitializerArgs. Module names are\n // always strings at runtime — the keyof-derived `string | number` constraint comes\n // from TypeScript's keyof semantics, not actual usage.\n return function requireInstance(name, wait = 60) {\n // Fail fast if the caller requests a module that was never registered —\n // this almost always indicates a misconfiguration rather than a timing issue.\n if (!moduleNames.includes(name)) {\n const error = new Error(`Cannot require [${String(name)}] since module is not defined!`);\n error.name = 'ModuleNotDefinedError';\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.RequireInstanceModuleNotDefined,\n message: error.message,\n properties: { moduleName: String(name), wait },\n error,\n });\n throw error;\n }\n // Short-circuit: module is already in the accumulated instance object\n if (instance$.value[name]) {\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.RequireInstanceModuleAlreadyInitialized,\n message: `Module [${String(name)}] is already initialized, skipping queue`,\n properties: { moduleName: String(name), wait },\n });\n return Promise.resolve(instance$.value[name]);\n }\n const requireStart = performance.now();\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.RequireInstanceAwaitingModule,\n message: `Awaiting module [${String(name)}] initialization, timeout ${wait}s`,\n properties: { moduleName: String(name), wait },\n });\n // Wait for the module to appear in the shared instance subject, up to `wait` seconds.\n return firstValueFrom(instance$.pipe(\n // Ignore emissions until the requested module has been added to the instance map.\n filter((x) => !!x[name]), \n // Resolve the dependency promise with the provider instance, not the full module map.\n map((x) => x[name]), \n // Convert unresolved dependencies into a typed timeout error with lifecycle diagnostics.\n timeout({\n // requireInstance accepts seconds; RxJS timeout expects milliseconds.\n each: wait * 1000,\n with: () => throwError(() => {\n const error = new RequiredModuleTimeoutError();\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.RequireInstanceTimeout,\n message: `Module [${String(name)}] initialization timed out after ${wait}s`,\n properties: { moduleName: String(name), wait },\n error,\n });\n return error;\n }),\n }), \n // Emit timing diagnostics only after the dependency has actually resolved.\n tap(() => {\n const requireTime = Math.round(performance.now() - requireStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.RequireInstanceModuleResolved,\n message: `Module [${String(name)}] required in ${requireTime}ms`,\n properties: { moduleName: String(name), wait, requireTime },\n metric: requireTime,\n });\n })));\n };\n}\nexport default createRequireInstance;\n//# sourceMappingURL=create-require-instance.js.map","import { BehaviorSubject, from, lastValueFrom } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\nimport { ModuleEventLevel } from '../../../types.js';\nimport { BaseModuleProvider } from '../../provider/index.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\nimport { createRequireInstance, } from './create-require-instance.js';\n/**\n * Initializes a single module and emits a `[name, instance]` tuple when complete.\n *\n * Validates that the module exposes an `initialize` method, calls it with the\n * provided context, and emits lifecycle events for start, completion, and any\n * provider contract warnings.\n *\n * @internal\n */\nasync function initializeModule(module, ctx) {\n const { config, ref, requireInstance, hasModule, registerEvent } = ctx;\n const key = module.name;\n // Modules must expose an initialize method to participate in the initialize phase\n if (!module.initialize) {\n const error = new Error(`Module ${module.name} does not have initialize method`);\n error.name = 'ModuleInitializeError';\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.ModuleInitializeError,\n message: error.message,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n error,\n });\n throw error;\n }\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModuleInitializing,\n message: `Initializing module ${module.name}`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n });\n const moduleInitStart = performance.now();\n const instance = await module.initialize({\n ref,\n config: config[key],\n requireInstance,\n hasModule,\n });\n // Warn when providers deviate from the expected base class — these modules\n // may lack version tracking and standard provider interfaces.\n if (!(instance instanceof BaseModuleProvider)) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ProviderNotBaseModuleProvider,\n message: `Provider for module ${module.name} does not extend BaseModuleProvider`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n });\n }\n // Providers should expose a version string for diagnostics and compatibility checks.\n // Warn when absent so module authors catch missing version early rather than at runtime.\n const maybeVersioned = instance;\n // Only warn about missing version metadata now that we know it's actually absent\n if (!maybeVersioned.version) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ProviderVersionWarning,\n message: `Provider for module ${module.name} does not expose version`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n });\n }\n const moduleInitTime = Math.round(performance.now() - moduleInitStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModuleInitialized,\n message: `Module ${module.name} initialized in ${moduleInitTime}ms`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n providerName: typeof instance,\n providerVersion: maybeVersioned.version?.toString() || 'unknown',\n moduleInitTime,\n },\n metric: moduleInitTime,\n });\n return [key, instance];\n}\n/**\n * Runs the initialize lifecycle phase for all registered modules.\n *\n * Initializes all modules **concurrently** using `mergeMap`. Cross-module\n * dependency ordering is handled lazily through `requireInstance`, which\n * waits for a peer module's `initialize` call to complete before resolving.\n *\n * Each initialized provider is accumulated into a shared `BehaviorSubject` so\n * that `requireInstance` callers see updates as soon as a dependency is ready.\n *\n * @param ctx - The initialize phase context.\n * @param config - The merged module config map produced by the configure phase.\n * @param ref - Optional reference forwarded to each module's `initialize` call.\n * @returns A promise resolving to the sealed map of initialized module providers.\n * @template T - The shape of the resolved module instance map.\n * @throws {Error} When a module's `initialize` method is missing.\n * @throws {RequiredModuleTimeoutError} When a required dependency does not\n * initialize within its timeout window.\n */\nexport async function runInitializePhase(ctx, config, ref) {\n const { modules, registerEvent } = ctx;\n // Fast-path: no modules registered — return a sealed empty instance immediately\n // to avoid a subscribe/lastValueFrom race on an already-completed observable.\n if (modules.length === 0) {\n return Object.seal({});\n }\n // Extract module names for dependency lookups before any module has initialized\n const moduleNames = modules.map((m) => m.name);\n // Accumulates initialized module providers; BehaviorSubject lets requireInstance\n // reactively wait for a dependency to appear without polling.\n const instance$ = new BehaviorSubject({});\n const hasModule = (name) => moduleNames.includes(name);\n const requireInstance = createRequireInstance(moduleNames, instance$, registerEvent);\n // Initialize all modules concurrently; modules that depend on peers will\n // suspend inside requireInstance until the dependency resolves.\n const init$ = from(modules).pipe(mergeMap((module) => initializeModule(module, { config, ref, requireInstance, hasModule, registerEvent })));\n const initStart = performance.now();\n // Accumulate module providers into the shared instance subject as each resolves.\n // Completing the subject signals that all modules are initialized.\n init$.subscribe({\n next: ([name, module]) => {\n // Merge the newly initialized module into the shared instance map without dropping peers\n const nextInstance = Object.assign(instance$.value, { [name]: module });\n instance$.next(nextInstance);\n },\n error: (err) => {\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.ModuleInitializeError,\n message: `Failed to initialize module ${err.name || 'unknown'}`,\n error: err,\n });\n instance$.error(err);\n },\n complete: () => {\n const loadTime = Math.round(performance.now() - initStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModuleInitializeComplete,\n message: `All modules initialized in ${loadTime}ms`,\n properties: {\n modules: Object.keys(instance$.value).join(', '),\n loadTime,\n },\n metric: loadTime,\n });\n instance$.complete();\n },\n });\n const instanceInitStart = performance.now();\n const instance = await lastValueFrom(instance$);\n const initTime = Math.round(performance.now() - instanceInitStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.InitializeComplete,\n message: `Modules instance created in ${initTime}ms`,\n properties: {\n modules: Object.keys(instance).join(', '),\n initTime,\n },\n metric: initTime,\n });\n Object.seal(instance);\n return instance;\n}\nexport default runInitializePhase;\n//# sourceMappingURL=run-initialize-phase.js.map","// biome-ignore-all lint/suspicious/noExplicitAny: internal type-erased dispatch — the post-initialize phase forwards opaque instances without inspecting their concrete shapes\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EMPTY, from, lastValueFrom } from 'rxjs';\nimport { catchError, defaultIfEmpty, filter, mergeMap, tap } from 'rxjs/operators';\nimport { ModuleEventLevel } from '../../../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\n/**\n * Runs the post-initialize lifecycle phase for all registered modules.\n *\n * Executes two sub-steps in order:\n * 1. Calls each module's `postInitialize` hook (if defined) concurrently.\n * Individual failures are caught and emitted as Warning events so one\n * failing module cannot block others.\n * 2. Runs all registered `afterInit` callbacks concurrently via `Promise.allSettled`.\n *\n * @param ctx - The post-initialize phase context.\n * @param instance - The sealed module instance map produced by the initialize phase.\n * @param ref - Optional reference forwarded to each module's `postInitialize` call.\n * @returns A promise resolving when all post-initialize hooks and callbacks have settled.\n */\nexport async function runPostInitializePhase(ctx, instance, ref) {\n const { modules, afterInit, registerEvent } = ctx;\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ConfiguratorPostInitializeStart,\n message: `Post-initializing all modules [${Object.keys(instance).length}]`,\n properties: { modules: Object.keys(instance).join(', ') },\n });\n // Run postInitialize hooks for modules that declare them. Failures are caught\n // per-module via catchError so one failure does not abort the others.\n const postInitialize$ = from(modules).pipe(\n // Only process modules that define a postInitialize hook\n filter((module) => !!module.postInitialize), tap((module) => {\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModulePostInitializeStart,\n message: `Module ${module.name} is being post-initialized`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n });\n }), mergeMap((module) => {\n const postInitStart = performance.now();\n // Emit completion/error events for this module's postInitialize call as it settles\n return from(module.postInitialize({\n ref,\n modules: instance,\n instance: instance[module.name],\n })).pipe(tap(() => {\n const postInitTime = Math.round(performance.now() - postInitStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModulePostInitializeComplete,\n message: `Module ${module.name} has been post-initialized in ${postInitTime}ms`,\n metric: postInitTime,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n postInitTime,\n },\n });\n }), defaultIfEmpty(null), catchError((err) => {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ModulePostInitializeError,\n message: `Module ${module.name} post-initialize failed`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n error: err,\n });\n // Swallow module-level errors — a failing postInitialize should not\n // prevent other modules from completing their post-initialize work.\n return EMPTY;\n }));\n }), defaultIfEmpty(null));\n const postInitStart = performance.now();\n await lastValueFrom(postInitialize$);\n const postInitTime = Math.round(performance.now() - postInitStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostInitializeComplete,\n message: `Post-initialization of all modules completed in ${postInitTime}ms`,\n properties: { modules: Object.keys(instance).join(', '), postInitTime },\n metric: postInitTime,\n });\n // Skip the afterInit hooks entirely when none are registered\n if (!afterInit.length) {\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostInitializeCompleteNoHooks,\n message: 'Post-initialization complete',\n properties: { modules: Object.keys(instance).join(', '), postInitCompleteTime: postInitTime },\n });\n return;\n }\n // Run all registered afterInit callbacks. These were added either by\n // addConfig's afterInit or via onInitialized on the configurator.\n try {\n // Build a display string of registered hook names for the start event\n // Extract each hook's name, falling back for anonymous functions\n const hookNames = afterInit.map((x) => x.name || 'anonymous').join(', ');\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostInitializeHooks,\n message: `Executing post-initialize hooks [${afterInit.length}]`,\n properties: { hooks: hookNames },\n });\n const afterInitStart = performance.now();\n await Promise.allSettled(afterInit\n // Invoke every registered afterInit callback with the initialized module instance map\n .map((x) => Promise.resolve(x(instance))));\n const afterInitTime = Math.round(performance.now() - afterInitStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostInitializeHooksComplete,\n message: `Post-initialize hooks completed in ${afterInitTime}ms`,\n properties: {\n hooks: hookNames,\n afterInitTime,\n },\n metric: afterInitTime,\n });\n }\n catch (err) {\n // Build a display string of registered hook names for the error event\n // Extract each hook's name, falling back for anonymous functions\n const hookNames = afterInit.map((x) => x.name || 'anonymous').join(', ');\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.PostInitializeHooksError,\n message: 'Post-initialize hooks failed',\n properties: { hooks: hookNames },\n error: err,\n });\n }\n const postInitCompleteTime = Math.round(performance.now() - postInitStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PostInitializeComplete,\n message: 'Post-initialization complete',\n properties: { modules: Object.keys(instance).join(', '), postInitCompleteTime },\n });\n}\n//# sourceMappingURL=run-post-initialize-phase.js.map","// biome-ignore-all lint/suspicious/noExplicitAny: internal type-erased dispatch — plugins are registered with concrete module maps but stored erased by the orchestrator\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ModuleEventLevel } from '../../../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\n/**\n * Checks whether a plugin return value should be treated as dispose-time cleanup.\n *\n * Plugins may return either a plain callback or an object with a `dispose` method.\n * Any other value is ignored so plugin authors can return `undefined` when no\n * cleanup is needed.\n *\n * @param value - Value returned by a registered plugin callback.\n * @returns True when the value is a valid plugin teardown registration.\n */\nfunction isPluginTeardown(value) {\n return (typeof value === 'function' ||\n (typeof value === 'object' &&\n value !== null &&\n 'dispose' in value &&\n typeof value.dispose === 'function'));\n}\n/**\n * Runs configurator plugins after modules are ready.\n *\n * The plugin phase is the final initialization step before `initialize()`\n * resolves. Each plugin receives the sealed module instance map and optional\n * initialization reference, which makes this phase suitable for application\n * side effects such as telemetry bridges, global event listeners, and runtime\n * subscriptions that require multiple initialized module providers.\n *\n * Plugin callbacks run concurrently. Failures are isolated and emitted as\n * warning events so one failing side effect cannot block application rendering.\n * Returned teardown callbacks are stored for the dispose phase and are invoked\n * before module `dispose` hooks.\n *\n * @param ctx - The plugin phase context.\n * @param modules - The initialized module instance map.\n * @param ref - Optional reference forwarded from module initialization.\n * @returns A promise resolving when all plugin callbacks have settled.\n * @template TRef - Reference type forwarded to plugin callbacks.\n */\nexport async function runPluginPhase(ctx, modules, ref) {\n const { plugins, teardowns, registerEvent } = ctx;\n // Skip the plugin phase entirely when no plugins were registered\n if (!plugins.length)\n return;\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PluginsRegister,\n message: `Registering plugins [${plugins.length}]`,\n properties: { count: plugins.length },\n });\n const pluginRegistrations = await Promise.all(plugins\n // Run every plugin callback concurrently so one slow plugin cannot delay the others\n .map(async (plugin) => {\n const pluginStart = performance.now();\n const name = plugin.name || 'anonymous';\n try {\n const teardown = await plugin({ modules, ref });\n const pluginTime = Math.round(performance.now() - pluginStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PluginRegistered,\n message: `Plugin ${name} registered in ${pluginTime}ms`,\n properties: { name, pluginTime },\n metric: pluginTime,\n });\n return isPluginTeardown(teardown) ? teardown : undefined;\n }\n catch (err) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.PluginRegisterError,\n message: `Plugin ${name} registration failed`,\n properties: { name },\n error: err,\n });\n return undefined;\n }\n }));\n // Queue every plugin teardown returned above so the dispose phase can invoke them later\n for (const teardown of pluginRegistrations) {\n // Only queue teardowns for plugins that actually returned one\n if (teardown) {\n teardowns.push(teardown);\n }\n }\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PluginsRegistered,\n message: 'Plugin registration complete',\n properties: { count: plugins.length, teardowns: teardowns.length },\n });\n}\n//# sourceMappingURL=run-plugin-phase.js.map","import { ModuleEventLevel } from '../../../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\nfunction getPluginTeardownName(teardown) {\n return typeof teardown === 'function' ? teardown.name || 'anonymous' : 'dispose';\n}\nasync function runPluginTeardown(teardown) {\n // Function-shaped teardowns are called directly; object-shaped ones expose a dispose() method\n if (typeof teardown === 'function') {\n await teardown();\n return;\n }\n await teardown.dispose();\n}\n/**\n * Runs the dispose lifecycle phase for all registered modules.\n *\n * Calls each module's `dispose` hook (if defined) concurrently via\n * `Promise.allSettled` so one failing module cannot block others from\n * being torn down. After all hooks settle, the event stream is completed.\n *\n * @param ctx - The dispose phase context.\n * @param instance - The initialized module instance map to tear down.\n * @param ref - Optional reference forwarded to each module's `dispose` call.\n * @returns A promise resolving when all module dispose hooks have settled and\n * the event stream has been completed.\n */\nexport async function runDisposePhase(ctx, instance, ref) {\n const { modules, registerEvent, event$, pluginTeardowns = [] } = ctx;\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.Dispose,\n message: 'Disposing modules instance',\n properties: { modules: Object.keys(instance).join(', ') },\n });\n // Only run the plugin teardown sequence when plugins were actually registered\n if (pluginTeardowns.length) {\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PluginsDisposing,\n message: `Disposing plugins [${pluginTeardowns.length}]`,\n properties: { count: pluginTeardowns.length },\n });\n // Tear down plugins before module providers so side effects can still access\n // live providers while unsubscribing. LIFO mirrors common subscription stacks.\n for (const teardown of pluginTeardowns.splice(0).reverse()) {\n const name = getPluginTeardownName(teardown);\n try {\n await runPluginTeardown(teardown);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PluginDisposed,\n message: `Plugin ${name} disposed successfully`,\n properties: { name },\n });\n }\n catch (err) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.PluginDisposeError,\n message: `Plugin ${name} dispose failed`,\n properties: { name },\n error: err,\n });\n }\n }\n }\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModulesDispose,\n message: 'Disposing modules',\n properties: { count: modules.length },\n });\n // Dispose all modules concurrently; failures are isolated per module so\n // one bad teardown cannot leave other modules in an inconsistent state.\n await Promise.allSettled(modules\n // Only process modules that define a dispose hook\n .filter((module) => !!module.dispose)\n // Dispose each module that defines the hook\n .map(async (module) => {\n // Narrow the type for TypeScript; the filter above already guarantees this\n if (!module.dispose)\n return;\n try {\n await module.dispose({\n ref,\n modules: instance,\n instance: instance[module.name],\n });\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModuleDisposed,\n message: `Module ${module.name} disposed successfully`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n });\n }\n catch (err) {\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ModuleDisposeError,\n message: `Module ${module.name} dispose failed`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n },\n error: err,\n });\n }\n }));\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModulesDisposed,\n message: 'Module dispose complete',\n properties: { count: modules.length },\n });\n // Complete the event stream last so all dispose events are captured before\n // any subscriber teardown triggered by completion.\n event$.complete();\n}\n//# sourceMappingURL=run-dispose-phase.js.map","// Generated by genversion.\nexport const version = '6.1.3';\n//# sourceMappingURL=version.js.map","// biome-ignore-all lint/suspicious/noExplicitAny: internal type-erased dispatch arrays — callbacks are registered with concrete module types but stored erased; the orchestrator never inspects these shapes itself\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ReplaySubject } from 'rxjs';\nimport { ModuleEventLevel, } from '../../types.js';\nimport { runConfigurePhase } from './phases/run-configure-phase.js';\nimport { runInitializePhase } from './phases/run-initialize-phase.js';\nimport { runPostInitializePhase } from './phases/run-post-initialize-phase.js';\nimport { runPluginPhase } from './phases/run-plugin-phase.js';\nimport { runDisposePhase } from './phases/run-dispose-phase.js';\nimport { version } from '../../version.js';\nimport { ModuleConfiguratorEventName } from './module-configurator-event-name.js';\n/**\n * Core orchestrator that drives the module lifecycle in Fusion Framework.\n *\n * `ModulesConfigurator` manages the full **configure → post-configure → initialize →\n * post-initialize → plugin → dispose** pipeline for a set of modules. Consumers\n * register modules via {@link addConfig} or {@link configure}, then call\n * {@link initialize} to produce a sealed {@link ModulesInstance} whose properties\n * are the initialized module providers.\n *\n * ### Lifecycle phases (in execution order)\n *\n * | # | Phase | Entry point | Description |\n * |---|-------|-------------|-------------|\n * | 1 | **Configure** | `_configure` | Each module's `configure()` factory creates a config builder; registered callbacks mutate it. |\n * | 2 | **Post-configure** | `_postConfigure` (inside `_configure`) | `postConfigure()` hooks and `onConfigured` callbacks run. |\n * | 3 | **Initialize** | `_initialize` | Modules are initialized concurrently; cross-module dependencies are resolved through `requireInstance`. |\n * | 4 | **Post-initialize** | `_postInitialize` | `postInitialize()` hooks and `onInitialized` callbacks run. |\n * | 5 | **Plugin** | `_registerPlugins` (inside `initialize`) | Registered application plugins connect side effects after modules are ready. |\n * | 6 | **Dispose** | `dispose` | Plugin teardowns and module `dispose()` hooks run; the event stream is completed. |\n *\n * ### Registering phase callbacks\n *\n * - **Per-module callbacks**: use `addConfig({ module, configure, afterConfig, afterInit })`.\n * - **Global post-configure**: use `onConfigured(cb)`.\n * - **Global post-initialize**: use `onInitialized(cb)`.\n * - **Plugins**: use `registerPlugin(cb)` to connect side effects before render.\n *\n * All lifecycle transitions emit {@link ModuleEvent} entries on the {@link event$}\n * observable for telemetry and debugging.\n *\n * @template TModules - Tuple of module types managed by this configurator.\n * @template TRef - Reference type passed through configuration (usually a parent instance).\n *\n * @example\n * ```typescript\n * const configurator = new ModulesConfigurator([httpModule, authModule]);\n * configurator.addConfig({\n * module: httpModule,\n * configure: (cfg) => cfg.setBaseUrl('https://api.example.com'),\n * });\n * const modules = await configurator.initialize();\n * // modules.http, modules.auth are now available\n * ```\n */\nexport class ModulesConfigurator {\n /**\n * Class name used as a namespace prefix for all emitted lifecycle events.\n * Preserved as a static string so minification cannot change it at runtime.\n */\n static className = 'ModulesConfigurator';\n /**\n * The current package version of the module configurator.\n *\n * @returns The semantic version string.\n */\n get version() {\n return version;\n }\n // Buffer up to 100 events to prevent memory leaks while ensuring telemetry\n // can capture events that fire before a telemetry subscriber attaches.\n // mapConfiguratorEvents relies on replay to receive events emitted during\n // configuration before telemetry is wired up.\n // Memory bound: ~24 KB at ~240 bytes/event × 100 events.\n #event$ = new ReplaySubject(100);\n /**\n * Stream of lifecycle events emitted while modules are configured, initialized,\n * and disposed.\n *\n * @returns An observable of {@link ModuleEvent} entries.\n */\n get event$() {\n return this.#event$.asObservable();\n }\n /**\n * Registered configure-phase callbacks.\n * Each entry is added by {@link addConfig} when a `configure` callback is provided.\n * @protected\n */\n _configs = [];\n /**\n * Registered post-configure callbacks.\n * Populated by {@link onConfigured} and by `afterConfig` entries in {@link addConfig}.\n * Also exposed on the config object as `config.onAfterConfiguration` so modules\n * can register additional hooks during their own configure factory.\n *\n * Typed as `any` because this is an internal dispatch array: callbacks are registered\n * with concrete module-specific types but stored erased — the orchestrator never\n * inspects the config shape itself, it only forwards it at call time.\n * @protected\n */\n _afterConfiguration = [];\n /**\n * Registered post-initialize callbacks.\n * Populated by {@link onInitialized} and by `afterInit` entries in {@link addConfig}.\n * Also exposed on the config object as `config.onAfterInit`.\n *\n * Typed as `any` for the same reason as {@link _afterConfiguration} — type-erased\n * internal dispatch; concrete instance types are known at registration but not stored.\n * @protected\n */\n _afterInit = [];\n /**\n * Registered plugin callbacks.\n *\n * Plugins run after all modules have initialized and before initialize resolves.\n * Typed as `any` because callbacks are registered with concrete module maps but\n * stored erased by the base orchestrator.\n * @protected\n */\n _plugins = [];\n /**\n * Teardown callbacks returned by registered plugins.\n *\n * Consumed during dispose and cleared after execution so repeated dispose calls\n * do not run plugin cleanup more than once.\n * @protected\n */\n _pluginTeardowns = [];\n /**\n * Set of all registered module descriptors.\n * Uses a `Set` for automatic deduplication — the same module registered twice\n * is treated as a single registration.\n * @protected\n */\n _modules;\n /**\n * Creates a new `ModulesConfigurator` with an optional initial set of modules.\n *\n * @param modules - Optional array of module descriptors to pre-register.\n */\n constructor(modules) {\n this._modules = new Set(modules ? this._dedupeModulesByName(modules) : []);\n }\n /**\n * Keeps the last registration for each module name.\n *\n * @param modules - Module descriptors to deduplicate.\n * @returns The deduplicated module descriptors.\n */\n _dedupeModulesByName(modules) {\n const lastByName = new Map();\n // Iterate in registration order so later descriptors intentionally override earlier ones.\n for (const module of modules) {\n lastByName.set(module.name, module);\n }\n return Array.from(lastByName.values());\n }\n /**\n * Removes lifecycle callbacks belonging to a replaced module.\n *\n * @param moduleName - Name of the module whose callbacks are removed.\n */\n _removeModuleCallbacks(moduleName) {\n // Remove callbacks from each lifecycle phase so replaced modules cannot run stale behavior.\n this._configs = this._configs.filter((callback) => callback.moduleName !== moduleName);\n // Keep cleanup callbacks aligned with the module replacement.\n this._afterConfiguration = this._afterConfiguration.filter((callback) => callback.moduleName !== moduleName);\n // Remove initialization callbacks as well, preventing the old module from being initialized.\n this._afterInit = this._afterInit.filter((callback) => callback.moduleName !== moduleName);\n }\n /**\n * Returns all registered module descriptors as an ordered array.\n *\n * @returns Array of registered modules in insertion order.\n */\n get modules() {\n return [...this._modules];\n }\n /**\n * Registers one or more module configurators.\n *\n * Convenience wrapper around {@link addConfig} for registering multiple\n * modules in a single call.\n *\n * @param configs - One or more module configurator descriptors.\n */\n configure(...configs) {\n // Delegate each descriptor to addConfig so registration logic stays in one place\n for (const x of configs) {\n this.addConfig(x);\n }\n }\n /**\n * Registers a single module configurator.\n *\n * If a module with the same `name` was already registered, the previous\n * registration is replaced so the last added module wins.\n *\n * Adds the module to the known module set and registers the optional\n * `configure`, `afterConfig`, and `afterInit` callbacks into their\n * respective lifecycle phase arrays.\n *\n * @param config - The module configurator descriptor to register.\n * @template T - The module type being registered.\n * @template TConfig - The resolved configuration type for the module.\n */\n addConfig(config) {\n const { module, afterConfig, afterInit, configure } = config;\n // Find an existing descriptor so re-registering a name can replace all of its lifecycle hooks.\n const existingModule = Array.from(this._modules).find((m) => m.name === module.name);\n // Only handle replacement/dedupe when a descriptor is already registered under this name.\n if (existingModule) {\n // Only a genuinely different descriptor for this name is a replacement that must\n // discard the old callbacks. Re-registering the SAME descriptor object (as helpers\n // like `configureHttpClient`/`useFrameworkServiceClient` do on every call, since they\n // all share one module singleton) must stay additive so multiple calls can register\n // multiple named clients without clobbering each other.\n if (existingModule !== module) {\n this._removeModuleCallbacks(module.name);\n const modules = Array.from(this._modules)\n // Preserve every descriptor while substituting the newly registered module.\n .map((m) => (m.name === module.name ? module : m));\n this._modules = new Set(modules);\n }\n }\n else {\n this._modules.add(module);\n }\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModuleConfigAdded,\n message: `Module configurator added for ${module.name}`,\n properties: {\n moduleName: module.name,\n moduleVersion: module.version?.toString() || 'unknown',\n configure: !!configure,\n afterConfig: !!afterConfig,\n afterInit: !!afterInit,\n },\n });\n // Register each optional callback into its corresponding lifecycle phase array.\n // When the same module name is re-registered, previous callbacks are removed\n // so the latest configuration wins.\n if (configure) {\n const callback = ((cfg, ref) => configure(cfg[module.name], ref));\n callback.moduleName = module.name;\n this._configs.push(callback);\n }\n // Register the afterConfig callback, if provided.\n if (afterConfig) {\n const callback = ((cfg) => afterConfig(cfg[module.name]));\n callback.moduleName = module.name;\n this._afterConfiguration.push(callback);\n }\n // Register the afterInit callback, if provided.\n if (afterInit) {\n const callback = ((instances) => afterInit(instances[module.name]));\n callback.moduleName = module.name;\n this._afterInit.push(callback);\n }\n }\n /**\n * Registers a callback for the post-configure phase.\n *\n * The callback receives the merged module config map after all `configure`\n * callbacks have run and before module initialization begins.\n *\n * @param cb - Callback receiving the merged module config map.\n * @template T - Additional modules to include in the config type.\n */\n onConfigured(cb) {\n this._afterConfiguration.push(cb);\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.OnConfiguredAdded,\n message: 'Added onConfigured callback',\n properties: {\n count: this._afterConfiguration.length,\n name: cb.name || 'anonymous',\n },\n });\n }\n /**\n * Registers a callback for the post-initialize phase.\n *\n * The callback receives the sealed module instance after all modules have\n * been initialized and their `postInitialize` hooks have run.\n *\n * @param cb - Callback receiving the sealed module instance.\n * @template T - Additional modules to include in the instance type.\n */\n onInitialized(cb) {\n this._afterInit.push(cb);\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.OnInitializedAdded,\n message: 'Added onInitialized callback',\n properties: {\n count: this._afterInit.length,\n name: cb.name || 'anonymous',\n },\n });\n }\n /**\n * Registers a plugin that connects side effects after modules are initialized.\n *\n * The callback runs after `postInitialize` and `onInitialized` callbacks have\n * settled, but before {@link initialize} resolves. Return a teardown callback\n * to clean up subscriptions or listeners during {@link dispose}.\n *\n * @param cb - Plugin callback receiving the initialized module map and optional ref.\n * @template T - Additional modules to include in the plugin module map.\n * @example\n * ```typescript\n * function connectContextTelemetry(args: FrameworkPluginArgs<[EventModule, TelemetryModule]>) {\n * const teardown = args.modules.event.addEventListener('context:changed', (event) => {\n * args.modules.telemetry.track('context.changed', event.detail);\n * });\n *\n * return teardown;\n * }\n *\n * configurator.registerPlugin(connectContextTelemetry);\n * ```\n */\n registerPlugin(cb) {\n this._plugins.push(cb);\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.PluginAdded,\n message: 'Added plugin callback',\n properties: {\n count: this._plugins.length,\n name: cb.name || 'anonymous',\n },\n });\n }\n /**\n * Runs the full configure → initialize pipeline and returns a sealed module instance.\n *\n * Execution order:\n * 1. {@link _configure} — configure phase (creates config, applies callbacks, post-configure hooks).\n * 2. {@link _initialize} — initialize phase (concurrent module init with `requireInstance`).\n * 3. {@link _postInitialize} — post-initialize phase (`postInitialize` hooks + `onInitialized` callbacks).\n * 4. {@link _registerPlugins} — plugin phase (`registerPlugin` callbacks connect side effects).\n *\n * @param ref - Optional reference forwarded to all module lifecycle hooks.\n * @returns A promise resolving to the sealed, initialized module instance.\n * @template T - Additional modules to merge into the instance type.\n * @template R - The reference type, narrowed to `TRef`.\n */\n async initialize(ref) {\n const configStart = performance.now();\n const config = await this._configure(ref);\n const configLoadTime = Math.round(performance.now() - configStart);\n // Build a comma-separated module name list for telemetry properties\n // Extract just the module names before joining into a display string\n const configModuleNames = this.modules.map((m) => m.name).join(', ');\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.InitializeConfigLoaded,\n message: `Modules configured in ${configLoadTime}ms`,\n properties: {\n modules: configModuleNames,\n count: this.modules.length,\n loadTime: configLoadTime,\n },\n metric: configLoadTime,\n });\n const instanceStart = performance.now();\n const instance = await this._initialize(config, ref);\n const instanceLoadTime = Math.round(performance.now() - instanceStart);\n // Build a comma-separated module name list for telemetry properties\n // Extract just the module names before joining into a display string\n const instanceModuleNames = this.modules.map((m) => m.name).join(', ');\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.InitializeInstanceInitialized,\n message: `Modules initialized in ${instanceLoadTime}ms`,\n properties: {\n modules: instanceModuleNames,\n count: this.modules.length,\n loadTime: instanceLoadTime,\n },\n metric: instanceLoadTime,\n });\n const totalLoadTime = configLoadTime + instanceLoadTime;\n // Build a comma-separated module name list for telemetry properties\n // Extract just the module names before joining into a display string\n const totalModuleNames = this.modules.map((m) => m.name).join(', ');\n this._registerEvent({\n level: ModuleEventLevel.Information,\n name: ModuleConfiguratorEventName.Initialize,\n message: `initialize in ${totalLoadTime}ms`,\n properties: {\n modules: totalModuleNames,\n configLoadTime,\n instanceLoadTime,\n totalLoadTime,\n },\n metric: totalLoadTime,\n });\n await this._postInitialize(instance, ref);\n // `instance` is the freshly built module instance record, which is structurally compatible\n // with `ModulesInstance<TModules>` but not nominally assignable across the generic params.\n const modules = Object.seal(Object.assign({}, instance, {\n dispose: () => this.dispose(instance),\n }));\n await this._registerPlugins(modules, ref);\n return modules;\n }\n /**\n * Namespaces and emits a lifecycle event into the internal event stream.\n *\n * The event name is prefixed with the configurator class name (e.g.\n * `\"ModulesConfigurator::ModuleConfigurator.module.configAdded\"`) to prevent\n * name collisions between nested configurators.\n *\n * @param event - The lifecycle event to emit.\n * @protected\n */\n _registerEvent(event) {\n // Split on '::' to avoid double-prefixing already-namespaced event names\n const nameParts = event.name.split('::');\n this.#event$.next({\n ...event,\n name: `${this.constructor.className}::${nameParts[nameParts.length - 1]}`,\n });\n }\n /**\n * Runs the configure lifecycle phase.\n *\n * Delegates to {@link runConfigurePhase} which creates module config builders,\n * applies registered callbacks, and runs post-configure hooks.\n *\n * Override this method in a subclass to customize the configure phase.\n *\n * @param ref - Optional reference forwarded to module configure factories.\n * @returns A promise resolving to the merged module config map.\n * @template T - Additional modules to merge into the instance type.\n * @template R - The reference type, narrowed to `TRef`.\n * @protected\n */\n async _configure(ref) {\n return runConfigurePhase({\n modules: this.modules,\n configs: this._configs,\n afterConfiguration: this._afterConfiguration,\n afterInit: this._afterInit,\n registerEvent: this._registerEvent.bind(this),\n }, ref);\n }\n /**\n * Runs the initialize lifecycle phase.\n *\n * Delegates to {@link runInitializePhase} which initializes all modules\n * concurrently and resolves cross-module dependencies through `requireInstance`.\n *\n * Override this method in a subclass to customize the initialize phase.\n *\n * @param config - The merged module config map from the configure phase.\n * @param ref - Optional reference forwarded to each module's `initialize` call.\n * @returns A promise resolving to the sealed map of initialized module providers.\n * @template T - Additional modules to merge into the instance type.\n * @template R - The reference type. Defaults to `TRef`.\n * @protected\n */\n async _initialize(config, ref) {\n return runInitializePhase({\n modules: this.modules,\n registerEvent: this._registerEvent.bind(this),\n }, config, ref);\n }\n /**\n * Runs the post-initialize lifecycle phase.\n *\n * Delegates to {@link runPostInitializePhase} which calls each module's\n * `postInitialize` hook and then runs all `onInitialized` callbacks.\n *\n * Override this method in a subclass to customize the post-initialize phase.\n *\n * @param instance - The sealed module instance from the initialize phase.\n * @param ref - Optional reference forwarded to each module's `postInitialize` call.\n * @template T - Additional modules to merge into the instance type.\n * @template R - The reference type. Defaults to `TRef`.\n * @protected\n */\n async _postInitialize(instance, ref) {\n return runPostInitializePhase({\n modules: this.modules,\n afterInit: this._afterInit,\n registerEvent: this._registerEvent.bind(this),\n }, instance, ref);\n }\n /**\n * Runs the plugin lifecycle phase.\n *\n * Delegates to {@link runPluginPhase} which calls each registered plugin and\n * stores returned teardown callbacks for dispose.\n *\n * Override this method in a subclass to customize plugin registration.\n *\n * @param instance - The sealed module instance from the initialize phase.\n * @param ref - Optional reference forwarded to each plugin callback.\n * @template T - Additional modules to merge into the instance type.\n * @template R - The reference type, narrowed to `TRef`.\n * @protected\n */\n async _registerPlugins(instance, ref) {\n return runPluginPhase({\n plugins: this._plugins,\n teardowns: this._pluginTeardowns,\n registerEvent: this._registerEvent.bind(this),\n }, instance, ref);\n }\n /**\n * Tears down all modules managed by this configurator.\n *\n * Delegates to {@link runDisposePhase} which calls each module's `dispose`\n * hook and then completes the internal event stream.\n *\n * @param instance - The initialized module instance to tear down.\n * @param ref - Optional reference forwarded to module dispose hooks.\n * @returns A promise resolving when all modules have been disposed.\n */\n async dispose(instance, ref) {\n return runDisposePhase({\n modules: this.modules,\n registerEvent: this._registerEvent.bind(this),\n // ReplaySubject extends Subject — dispose only needs .complete() which both have.\n event$: this.#event$,\n pluginTeardowns: this._pluginTeardowns,\n }, instance, ref);\n }\n}\n//# sourceMappingURL=ModulesConfigurator.js.map","import { from, of } from 'rxjs';\nimport { last, mergeScan } from 'rxjs/operators';\n/**\n * ProcessOperators class manages a collection of process operators\n * and provides methods to add, set, get, and process these operators.\n * It implements the IProcessOperators interface for type T.\n *\n * @template T The type of data that the process operators work with\n */\nexport class ProcessOperators {\n /**\n * A record of process operators keyed by a string.\n * This property is used to store and manage the collection of process operators\n * that are used by the `ProcessOperators` class.\n */\n _operators;\n /**\n * Accessor for the collection of process operators.\n * @returns The record of process operators.\n */\n get operators() {\n return this._operators;\n }\n /**\n * Constructs a new instance of the ProcessOperators class.\n * @param operators - An optional object containing process operators.\n * It can be either an instance of IProcessOperators<T> or a record of string keys and ProcessOperator<T> values.\n */\n constructor(operators) {\n // accept either a raw operators record or another IProcessOperators instance to clone from\n if (operators && 'operators' in operators) {\n this._operators = { ...operators.operators };\n }\n else {\n this._operators = operators ?? {};\n }\n }\n /**\n * Adds a new operator to the collection.\n * @param key The key under which the operator is stored.\n * @param operator The operator to be added.\n * @returns The instance of ProcessOperators for chaining.\n * @throws Error if an operator with the same key already exists.\n */\n add(key, operator) {\n // guard against silently overwriting an existing operator under the same key\n if (Object.keys(this._operators).includes(key))\n throw Error(`Operator [${key}] already defined`);\n return this.set(key, operator);\n }\n /**\n * Sets or updates an operator in the collection.\n * @param key The key under which the operator is stored.\n * @param operator The operator to be set.\n * @returns The instance of ProcessOperators for chaining.\n */\n set(key, operator) {\n this._operators[key] = operator;\n return this;\n }\n /**\n * Removes an operator from the collection by its key.\n *\n * @param key - The key of the operator to remove.\n * @returns The current instance of `ProcessOperators` for method chaining.\n */\n remove(key) {\n delete this._operators[key];\n return this;\n }\n /**\n * Retrieves an operator from the collection by its key.\n * @param key The key of the operator to retrieve.\n * @returns The retrieved operator.\n */\n get(key) {\n return this._operators[key];\n }\n /**\n * Processes an input request through the chain of operators.\n * @param request The request to be processed.\n * @returns An Observable of the processed request.\n */\n process(request) {\n const operators = Object.values(this._operators);\n /** if no operators registered, just return the observable value */\n if (!operators.length) {\n return of(request);\n }\n // feed the request through each operator sequentially, keeping the previous value when one returns void\n return from(Object.values(this._operators)).pipe(mergeScan(\n // resolve current operator and return result or previous if void\n (value, operator) => Promise.resolve(operator(value)).then((x) => x ?? value), \n // initial value\n request, \n // only allow concurrency of one operator\n 1), \n // output result of last operator\n last());\n }\n}\n//# sourceMappingURL=ProcessOperators.js.map","/**\n * Creates a process operator that adds a header to the request.\n *\n * @param key - The header key to add.\n * @param value - The header value to add.\n * @returns A process operator that adds the specified header to the request.\n */\nexport const requestOperatorHeader = (key, value) => (request) => {\n const headers = new Headers(request.headers);\n headers.append(key, value);\n return { ...request, headers };\n};\nexport default requestOperatorHeader;\n//# sourceMappingURL=request-operator-header.js.map","import { ProcessOperators } from './ProcessOperators';\nimport { requestOperatorHeader } from './request-operator-header';\n/**\n * Extends the `ProcessOperators` class to handle HTTP requests.\n *\n * This class provides a method to set a header that will apply to all requests made by the `HttpClient`.\n *\n * @see {@link ProcessOperators}\n *\n * @template T - The type of the fetch request, which extends `FetchRequest`.\n */\nexport class HttpRequestHandler extends ProcessOperators {\n /**\n * Sets a header that will apply to all requests made by the `HttpClient`.\n *\n * @param key - The name of the header to set.\n * @param value - The value of the header to set.\n * @returns The current `HttpRequestHandler` instance, allowing for method chaining.\n */\n setHeader(key, value) {\n const operator = requestOperatorHeader(key, value);\n return this.set(`header-${key}`, operator);\n }\n}\nexport default HttpRequestHandler;\n//# sourceMappingURL=HttpRequestHandler.js.map","import { ProcessOperators } from './ProcessOperators';\n/**\n * The `HttpResponseHandler` class extends the `ProcessOperators` class and is responsible for handling HTTP responses.\n * It provides a common interface for processing HTTP responses, allowing for consistent error handling and response transformation.\n *\n * @template T - The type of the HTTP response. Defaults to `Response`.\n */\nexport class HttpResponseHandler extends ProcessOperators {\n}\nexport default HttpResponseHandler;\n//# sourceMappingURL=HttpResponseHandler.js.map","import { firstValueFrom, from, of } from 'rxjs';\n/**\n * Normalizes a step's result to a `Promise`, so a middleware calling `next(...)` never has to\n * branch on whether the next step short-circuited with a plain `Response` or reached all the\n * way to an Observable-returning network call.\n */\nfunction toPromise(result) {\n return result instanceof Response ? Promise.resolve(result) : firstValueFrom(from(result));\n}\n/**\n * Composes registered {@link HttpMiddleware} into a single execution pipeline wrapping the\n * network call, so retries, caching, telemetry, or circuit-breaking can wrap `_performFetch`\n * without touching request or response payload transforms.\n *\n * @see {@link HttpClient}\n */\nexport class HttpMiddlewareHandler {\n #middleware;\n /**\n * Constructs a handler, optionally cloning another handler's registered middleware.\n * @param source - An existing handler to clone the registered middleware from.\n */\n constructor(source) {\n this.#middleware = source ? [...source.middleware] : [];\n }\n /** @inheritdoc */\n get middleware() {\n return this.#middleware;\n }\n /** @inheritdoc */\n use(middleware) {\n this.#middleware.push(middleware);\n return this;\n }\n /** @inheritdoc */\n process(uri, init, terminal) {\n // wrap outward-in so the first-registered middleware is outermost, matching a conventional middleware chain\n const chain = this.#middleware.reduceRight((next, middleware) => (nextUri, nextInit) => middleware(nextUri, nextInit, (u, i) => toPromise(next(u, i))), terminal);\n const result = chain(uri, init);\n // a middleware may short-circuit with a plain Response (no ObservableInput wrapping needed)\n return result instanceof Response ? of(result) : from(result);\n }\n}\nexport default HttpMiddlewareHandler;\n//# sourceMappingURL=HttpMiddlewareHandler.js.map","import { z } from 'zod';\n/**\n * Validates that the provided HTTP method string is in uppercase.\n *\n * @link https://www.rfc-editor.org/rfc/rfc7231#section-4.1\n */\nexport const requestMethodCasing = () => {\n return z\n .string()\n .optional()\n .refine((value) => value === undefined || value === value?.toUpperCase(), {\n message: [\n 'Provided HTTP method must be in uppercase.',\n 'See RFC 7231 Section 4.1 for more information',\n 'https://www.rfc-editor.org/rfc/rfc7231#section-4.1',\n ].join(' '),\n });\n};\n/**\n * Creates a Zod enum schema for HTTP request methods.\n *\n * The schema validates that the value is one of the standard HTTP methods:\n * 'GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', 'HEAD', 'CONNECT', 'TRACE'.\n *\n * If the validation fails, a custom error message is returned, indicating the\n * expected methods and the received value. The error message also references\n * RFC 2616 for more information.\n *\n * @link https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html\n */\nexport const requestMethodVerb = () => {\n return z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', 'HEAD', 'CONNECT', 'TRACE'], {\n message: 'Invalid request method. Expected one of: GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD, CONNECT, TRACE. See RFC 2615 Section 9 for more information: https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html',\n });\n};\nexport const requestMethod = () => requestMethodVerb().optional();\n/**\n * Schema for validating the initialization options of a request.\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Request/Request\n *\n * This schema is used to ensure that the request options conform to the expected structure and types.\n */\nexport const requestInitSchema = z.object({\n attributionReporting: z\n .object({\n eventSourceEligible: z.boolean().optional(),\n triggerEligible: z.boolean().optional(),\n })\n .optional(),\n body: z\n .union([\n z.string(),\n z.instanceof(Blob),\n z.instanceof(ArrayBuffer),\n z.instanceof(FormData),\n z.instanceof(URLSearchParams),\n z.instanceof(ReadableStream),\n ])\n .optional(),\n browsingTopics: z.boolean().optional(),\n cache: z\n .enum(['default', 'no-store', 'reload', 'no-cache', 'force-cache', 'only-if-cached'])\n .optional(),\n credentials: z.enum(['omit', 'same-origin', 'include']).optional(),\n headers: z.record(z.string(), z.string()).optional().or(z.instanceof(Headers)),\n integrity: z.string().optional(),\n keepalive: z.boolean().optional(),\n method: requestMethod().optional(),\n mode: z.enum(['same-origin', 'cors', 'no-cors', 'navigate', 'websocket']).optional(),\n priority: z.enum(['low', 'high', 'auto']).optional(),\n redirect: z.enum(['follow', 'error', 'manual']).optional(),\n referrer: z.string().optional(),\n referrerPolicy: z\n .enum([\n 'no-referrer',\n 'no-referrer-when-downgrade',\n 'origin',\n 'origin-when-cross-origin',\n 'same-origin',\n 'strict-origin',\n 'strict-origin-when-cross-origin',\n 'unsafe-url',\n ])\n .optional(),\n signal: z.instanceof(AbortSignal).optional(),\n});\n/**\n * Schema for validating fetch request configurations.\n *\n * This schema extends the `requestInitSchema` and adds additional properties:\n * - `uri`: A required string representing the URI of the request.\n * - `path`: An optional string representing the path of the request.\n */\nexport const fetchRequestSchema = requestInitSchema.extend({\n uri: z.string(),\n path: z.string().optional(),\n});\n//# sourceMappingURL=fetch-request.schemas.js.map","import { requestMethodCasing } from './fetch-request.schemas';\n/**\n * Ensures that the HTTP method of the given request is in uppercase.\n *\n * @param request - The HTTP request object to process.\n * @returns A new request object with the HTTP method in uppercase.\n */\nexport const capitalizeRequestMethodOperator = (options) => (request) => {\n const { error, success, data } = requestMethodCasing().safeParse(request.method);\n request.method = success ? data : request.method?.toUpperCase();\n // surface schema validation issues as warnings when not running silently\n if (error && !options?.silent) {\n // one warning per issue so callers can see exactly what failed to validate\n for (const e of error.issues) {\n console.warn(e.message);\n }\n }\n return request;\n};\n//# sourceMappingURL=capitalize-request-method-operator.js.map","import { fetchRequestSchema } from './fetch-request.schemas';\n/**\n * Validates the given request using the `requestInitSchema`.\n *\n * By default, the validation is not strict, meaning that additional properties\n * not defined in the schema will be allowed and passed through without causing validation errors.\n * Also the operator will not modify the request object, it will only log an error message if the validation fails.\n *\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Request/Request\n *\n * @param request - The request object to be validated.\n * @returns The validated request object if validation is successful.\n * @throws Will log an error message if the request validation fails.\n */\nexport const requestValidationOperator = (options) => (request) => {\n const { strict, parse } = options ?? {};\n const schema = strict ? fetchRequestSchema : fetchRequestSchema.passthrough();\n try {\n const result = schema.parse(request);\n return parse ? result : void 0;\n }\n catch (error) {\n // re-throw so callers relying on `parse` can react to validation failures directly\n if (parse) {\n throw error;\n }\n console.error('Invalid request options', error.message);\n }\n};\n//# sourceMappingURL=request-validation-operator.js.map","/**\n * Represents an error that occurs when handling an HTTP response.\n * @template TResponse The type of the HTTP response.\n */\nexport class HttpResponseError extends Error {\n response;\n static Name = 'HttpResponseError';\n /**\n * @param message - The error message.\n * @param response - The HTTP response associated with the error.\n * @param options - Additional error options.\n */\n constructor(message, response, options) {\n super(message, options);\n this.response = response;\n }\n}\nexport default HttpResponseError;\n//# sourceMappingURL=HttpResponseError.js.map","import { HttpResponseError } from './HttpResponseError.js';\n/**\n * Represents an error that occurs when handling a JSON response in an HTTP request.\n * Extends the base `HttpResponseError` class.\n *\n * @template TType - The type of the data associated with the error.\n * @template TResponse - The type of the HTTP response.\n */\nexport class HttpJsonResponseError extends HttpResponseError {\n static Name = 'HttpJsonResponseError';\n /** The parsed JSON data associated with the error response, if any. */\n data;\n /**\n * Creates a new instance of `HttpJsonResponseError`.\n *\n * @param message - The error message.\n * @param response - The HTTP response associated with the error.\n * @param options - Additional options for the error, including the associated data.\n */\n constructor(message, response, options) {\n super(message, response, options);\n this.name = HttpJsonResponseError.Name;\n this.data = options?.data;\n }\n}\nexport default HttpJsonResponseError;\n//# sourceMappingURL=HttpJsonResponseError.js.map","import { HttpResponseError } from './HttpResponseError.js';\n/**\n * Represents an error that occurs when handling a server-sent event (SSE) HTTP response.\n *\n * @template TType - The type of additional data associated with the error.\n * @template TResponse - The type of the HTTP response object.\n *\n * @extends HttpResponseError<TResponse>\n */\nexport class ServerSentEventResponseError extends HttpResponseError {\n static Name = 'ServerSentEventResponseError';\n /**\n * Creates a new instance of the error.\n *\n * @param message - The error message describing the cause of the error.\n * @param response - The HTTP response associated with the error.\n * @param options - Optional error options, which may include additional data of type `TType`.\n */\n constructor(message, response, options) {\n super(message, response, options);\n this.name = ServerSentEventResponseError.Name;\n }\n}\nexport default ServerSentEventResponseError;\n//# sourceMappingURL=ServerSentEventResponseError.js.map","/**\n * Thrown when `createClient(name)` is called with an unknown client key.\n *\n * This is only used when the provided string is neither a registered client name\n * nor an absolute `http:` or `https:` URL.\n */\nexport class ClientNotFoundException extends Error {\n}\nexport default ClientNotFoundException;\n//# sourceMappingURL=ClientNotFoundException.js.map","import { EMPTY, from, fromEvent } from 'rxjs';\nimport { finalize, takeUntil } from 'rxjs/operators';\nimport { ServerSentEventResponseError } from '../../errors/index.js';\nconst defaultDataParser = (data) => {\n try {\n return JSON.parse(data);\n }\n catch {\n return data;\n }\n};\n/**\n * Parses a string containing Server-Sent Events (SSE) data into individual event objects.\n *\n * @template TData - The type of the parsed `data` field in the event.\n * @param text - The raw SSE data as a string, where events are separated by double newlines.\n * @param options - Optional configuration for parsing the events.\n * @param options.dataParser - A custom parser function for the `data` field. Defaults to JSON parsing,\n * falling back to returning the raw string if parsing fails.\n *\n * @returns A generator that yields `ServerSentEvent` objects parsed from the input string.\n *\n * @remarks\n * - Empty lines and events with no fields are ignored.\n * - If the `data` field cannot be parsed as JSON, it is returned as a plain string.\n * - Fields other than `data` are stored as strings in the resulting `ServerSentEvent` object.\n *\n * @example\n * ```typescript\n * const sseData = `\n * id: 1\n * event: message\n * data: {\"key\":\"value\"}\n *\n * id: 2\n * event: update\n * data: plain text\n * `;\n *\n * for (const event of parseEvents(sseData)) {\n * console.log(event);\n * }\n * // Output:\n * // { id: \"1\", event: \"message\", data: { key: \"value\" } }\n * // { id: \"2\", event: \"update\", data: \"plain text\" }\n * ```\n */\nfunction* parseEvents(text, options) {\n // Split the input string into individual event strings using double newline as separator\n const eventStrings = text.split('\\n\\n');\n const dataParser = options?.dataParser || defaultDataParser;\n // Iterate through each event string\n for (const eventStr of eventStrings) {\n // Skip empty event strings (after trimming whitespace)\n if (!eventStr.trim())\n continue;\n // Split the event string into lines (fields) using single newline\n const lines = eventStr.split('\\n');\n // Use reduce to process each line in the event string\n const event = lines.reduce((event, line) => {\n // Skip empty lines\n if (!line)\n return event;\n // Find the index of the first colon, which separates field name and value\n const colonIndex = line.indexOf(':');\n // Skip lines without a colon (invalid format)\n if (colonIndex === -1)\n return event;\n // Extract the field name (before colon) and trim whitespace\n const field = line.slice(0, colonIndex).trim();\n // Extract the field value (after colon) and trim whitespace\n const value = line.slice(colonIndex + 1).trim();\n // Handle the 'data' field specially, attempting JSON parsing\n if (field === 'data') {\n event.data = dataParser(value);\n }\n else {\n // For non-data fields, assign the value as a string to the event object\n event[field] = value;\n }\n return event;\n }, {});\n // Only emit the event to the results if it has at least one field\n if (Object.keys(event).length) {\n yield event;\n }\n }\n}\nasync function* readStream(reader, options) {\n const skipHeartbeats = !!options?.skipHeartbeats;\n const eventFilter = options?.eventFilter\n ? Array.isArray(options.eventFilter)\n ? options.eventFilter\n : [options.eventFilter]\n : null;\n const decoder = new TextDecoder();\n // keep reading chunks from the stream until the reader signals completion\n while (true) {\n const { done, value } = await reader.read();\n // the underlying stream has ended, nothing more to read\n if (done) {\n // exit the read loop rather than yielding any further events\n break;\n }\n const text = decoder.decode(value, { stream: true });\n const events = parseEvents(text, { dataParser: options?.dataParser });\n // a chunk may contain multiple complete SSE events, emit each in turn\n for (const event of events) {\n // a retry directive reconfigures the reconnection delay rather than being a data event\n if (event.retry) {\n await new Promise((resolve) => setTimeout(resolve, Number.parseInt(event.retry ?? '300', 10)));\n // nothing to yield for a retry-only event\n continue;\n }\n // heartbeat filtering is opt-in via the skipHeartbeats option\n if (skipHeartbeats) {\n // Skip comment-based heartbeats (no event, data, or id)\n if (!event.event && !event.data && !event.id) {\n // this event carries no payload, so treat it as a heartbeat and skip it\n continue;\n }\n // Skip named heartbeat events (e.g., event: heartbeat or event: ping)\n if (event.event && ['heartbeat', 'ping'].includes(event.event)) {\n // an explicitly named heartbeat/ping event should also be skipped\n continue;\n }\n }\n // only emit events that pass the caller-provided event type filter, if any\n if (!eventFilter || (event.event && eventFilter.includes(event.event))) {\n yield event;\n }\n }\n }\n}\n/**\n * Transforms an SSE response into an Observable stream of parsed events.\n * @param response - The HTTP response with Content-Type: text/event-stream.\n * @param options - Optional configuration for event filtering and heartbeat handling.\n * @param options.eventFilter - Filter events by type (single string or array).\n * @param options.skipHeartbeats - Skip empty/heartbeat events if true.\n * @param options.dataParser - Custom parser for the data field.\n * @param options.abortSignal - Abort signal to cancel the stream.\n * @returns An Observable emitting parsed ServerSentEvent objects.\n * @throws ServerSentEventResponseError if response is invalid or stream fails.\n */\nexport const createSseSelector = (options) => {\n return (response) => {\n // an unsuccessful HTTP status means there is no valid SSE stream to read\n if (!response.ok) {\n throw new ServerSentEventResponseError(`HTTP error! Status: ${response.status}`, response);\n }\n // a missing body means there is nothing to stream from\n if (!response.body) {\n throw new ServerSentEventResponseError('Response body is not readable', response);\n }\n // guard against consuming a non-SSE response as if it were an event stream\n if (!response.headers.get('Content-Type')?.includes('text/event-stream')) {\n throw new ServerSentEventResponseError('Response is not a text/event-stream', response);\n }\n const reader = response.body.getReader();\n return (from(readStream(reader, {\n dataParser: options?.dataParser,\n skipHeartbeats: options?.skipHeartbeats,\n eventFilter: options?.eventFilter,\n }))\n // stop the stream on abort and always release the underlying reader when done\n .pipe(\n // Stop reading if the abort signal is triggered\n takeUntil(options?.abortSignal ? fromEvent(options.abortSignal, 'abort') : EMPTY), finalize(async () => {\n // cancel just in case of a pre-mature exit\n await reader.cancel().catch(() => {\n /** ignore cancellation errors */\n });\n reader.releaseLock();\n })));\n };\n};\nexport default createSseSelector;\n//# sourceMappingURL=create-sse-selector.js.map","import { capitalizeRequestMethodOperator, requestValidationOperator, HttpMiddlewareHandler, HttpRequestHandler, } from './lib/operators';\n/** @inheritdoc */\nexport class HttpClientConfigurator {\n /** Named client configurations keyed by client name. */\n _clients = {};\n /**\n * Gets a shallow clone of all named client configurations.\n *\n * @returns A shallow clone of the named client configurations.\n */\n get clients() {\n return { ...this._clients };\n }\n /** Default constructor used when a client configuration does not provide `ctor`. */\n defaultHttpClientCtor;\n /** Default request handler pipeline cloned into each created client instance. */\n defaultHttpRequestHandler = new HttpRequestHandler({\n // convert all request methods to uppercase\n 'capitalize-method': capitalizeRequestMethodOperator(),\n // validate the request object\n 'request-validation': requestValidationOperator(),\n });\n /** Default middleware chain cloned into each created client instance. */\n defaultHttpMiddlewareHandler = new HttpMiddlewareHandler();\n /**\n * Creates a configurator with the default client constructor.\n * @param client - The default client constructor used when `ctor` is not configured per client.\n */\n constructor(client) {\n this.defaultHttpClientCtor = client;\n }\n /** @inheritdoc */\n hasClient(name) {\n return Object.keys(this._clients).includes(name);\n }\n /** @inheritdoc */\n addMiddleware(middleware) {\n this.defaultHttpMiddlewareHandler.use(middleware);\n return this;\n }\n /** @inheritdoc */\n configureClient(name, args) {\n const argFn = typeof args === 'string' ? { baseUri: args } : args;\n const options = typeof argFn === 'function' ? { onCreate: argFn } : argFn;\n // `options` is `HttpClientOptions<T>` (this call's generic), but `_clients` is keyed by the\n // configurator's own `TClient` — callers are expected to keep the two in sync.\n this._clients[name] = {\n ...this._clients[name],\n ...options,\n };\n return this;\n }\n}\nexport default HttpClientConfigurator;\n//# sourceMappingURL=configurator.js.map","// Generated by genversion.\nexport const version = '8.1.0';\n//# sourceMappingURL=version.js.map","import { BaseModuleProvider } from '@equinor/fusion-framework-module/provider';\nimport { version } from './version';\nimport { ClientNotFoundException } from './errors/index.js';\n/** URL protocols accepted as valid ad-hoc base URIs. */\nconst SUPPORTED_PROTOCOLS = ['http:', 'https:', 'ws:', 'wss:'];\n/**\n * Checks if a given string is a valid absolute URL with a supported protocol.\n * @param url - The string to check.\n * @returns `true` when the string uses one of {@link SUPPORTED_PROTOCOLS}.\n */\nconst isURL = (url) => {\n try {\n const parsed = new URL(url);\n return SUPPORTED_PROTOCOLS.includes(parsed.protocol);\n }\n catch {\n return false;\n }\n};\n/**\n * Heuristic check for strings that look like a bare hostname or URL without a\n * protocol prefix (e.g. `api.example.com` or `api.example.com/v1`).\n *\n * Used to emit a deprecation warning when callers rely on the old (pre-patch)\n * behaviour that accepted protocol-less URLs.\n */\nconst looksLikeURL = (value) => !value.includes(' ') && /^[a-z\\d]([a-z\\d-]*\\.)+[a-z]{2,}/i.test(value);\n/**\n * The `HttpClientProvider` class is responsible for managing HTTP client instances and their configuration.\n * It provides methods to check if a client is configured, create new client instances, and create custom client instances.\n */\nexport class HttpClientProvider extends BaseModuleProvider {\n config;\n /**\n * Gets the default HTTP request handler for the HTTP client provider.\n * @returns The default HTTP request handler.\n */\n get defaultHttpRequestHandler() {\n return this.config.defaultHttpRequestHandler;\n }\n /**\n * Gets the default middleware chain for the HTTP client provider.\n * @returns The default middleware chain.\n */\n get defaultHttpMiddlewareHandler() {\n return this.config.defaultHttpMiddlewareHandler;\n }\n /**\n * Creates a new `HttpClientProvider`.\n * @param config - The configurator providing client definitions and defaults.\n */\n constructor(config) {\n super({\n version,\n config,\n });\n this.config = config;\n }\n /**\n * Checks if a client with the given key is configured in the `HttpClientProvider`.\n * @param key - The key of the HTTP client to check.\n * @returns `true` if a client with the given key is configured, `false` otherwise.\n */\n hasClient(key) {\n return Object.keys(this.config.clients).includes(key);\n }\n /**\n * Creates a fresh HTTP client instance from a named or ad-hoc configuration.\n *\n * @param keyOrConfig - The key or configuration object for the HTTP client.\n * @returns The created HTTP client instance.\n *\n * @remarks\n * This method resolves the configuration for the HTTP client based on the provided `keyOrConfig` parameter.\n * If a string is provided, it is treated as the key for a pre-configured client in the `HttpClientProvider`.\n * If an `HttpClientOptions` object is provided, it is used as the configuration for the new client instance.\n *\n * The method applies `baseUri`, `defaultScopes`, `requestHandler`, `responseHandler`,\n * a custom `ctor` when configured, and finally runs `onCreate` for the newly created instance.\n *\n * The created HTTP client instance is returned.\n */\n createClient(keyOrConfig) {\n const config = this._resolveConfig(keyOrConfig);\n const { baseUri, defaultScopes = [], onCreate, ctor = this.config.defaultHttpClientCtor, requestHandler = this.defaultHttpRequestHandler, responseHandler, middlewareHandler = this.defaultHttpMiddlewareHandler, } = config;\n const options = { requestHandler, responseHandler, middlewareHandler };\n const instance = new ctor(baseUri || '', options);\n // attach the resolved default scopes onto the instance without overwriting other own properties\n Object.assign(instance, { defaultScopes });\n onCreate?.(instance);\n return instance;\n }\n /**\n * Creates a client instance and returns it as the requested custom client type.\n *\n * @template T - The custom `HttpClient` implementation type to cast the created instance to.\n * @param key - The key of the pre-configured HTTP client to create.\n * @returns The created HTTP client instance, cast to the specified type `T`.\n *\n * @remarks\n * This method delegates to the `createClient` method, but casts the returned\n * instance to the specified type `T`. This can be useful when you need to\n * work with a specific HTTP client implementation, but the `HttpClientProvider`\n * is configured to use a different implementation.\n */\n createCustomClient(key) {\n // `createClient` always returns the provider's configured `HttpClient` implementation —\n // cast through `unknown` to hand back the caller-requested implementation type `T`.\n return this.createClient(key);\n }\n /**\n * Resolves the configuration for an HTTP client based on the provided `keyOrConfig` parameter.\n *\n * If a string is provided, it is treated as either a pre-configured client key or,\n * when it is an absolute `http:` or `https:` URL, as an ad-hoc `baseUri`.\n * If an `HttpClientOptions` object is provided, it is used directly as the configuration for the new client instance.\n *\n * @param keyOrConfig - The key or configuration object for the HTTP client.\n * @returns The resolved HTTP client configuration.\n * @throws {ClientNotFoundException} When `keyOrConfig` is a string that is neither a registered\n * client key nor a URL-like value.\n */\n _resolveConfig(keyOrConfig) {\n // a string may reference a registered client key or an ad-hoc URL; anything else is used as-is\n if (typeof keyOrConfig === 'string') {\n const config = this.config.clients[keyOrConfig];\n // an absolute http(s) URL can be used directly as an ad-hoc baseUri\n if (!config && isURL(keyOrConfig)) {\n return { baseUri: keyOrConfig };\n }\n else if (!config && looksLikeURL(keyOrConfig)) {\n // recover from a missing protocol instead of failing outright, but warn so it can be fixed\n console.warn(`[HttpClientProvider] \"${keyOrConfig}\" looks like a URL but is missing the http:// or https:// protocol. ` +\n `Treating it as \"https://${keyOrConfig}\". ` +\n `Pass a fully-qualified URL to silence this warning.`);\n return { baseUri: `https://${keyOrConfig}` };\n }\n else if (!config) {\n throw new ClientNotFoundException(`No registered http client for key [${keyOrConfig}]`);\n }\n return config;\n }\n return keyOrConfig;\n }\n}\n//# sourceMappingURL=provider.js.map","import { __assign, __rest } from \"tslib\";\nimport { createOperatorSubscriber } from '../../operators/OperatorSubscriber';\nimport { Observable } from '../../Observable';\nimport { innerFrom } from '../../observable/innerFrom';\nexport function fromFetch(input, initWithSelector) {\n if (initWithSelector === void 0) { initWithSelector = {}; }\n var selector = initWithSelector.selector, init = __rest(initWithSelector, [\"selector\"]);\n return new Observable(function (subscriber) {\n var controller = new AbortController();\n var signal = controller.signal;\n var abortable = true;\n var outerSignal = init.signal;\n if (outerSignal) {\n if (outerSignal.aborted) {\n controller.abort();\n }\n else {\n var outerSignalHandler_1 = function () {\n if (!signal.aborted) {\n controller.abort();\n }\n };\n outerSignal.addEventListener('abort', outerSignalHandler_1);\n subscriber.add(function () { return outerSignal.removeEventListener('abort', outerSignalHandler_1); });\n }\n }\n var perSubscriberInit = __assign(__assign({}, init), { signal: signal });\n var handleError = function (err) {\n abortable = false;\n subscriber.error(err);\n };\n fetch(input, perSubscriberInit)\n .then(function (response) {\n if (selector) {\n innerFrom(selector(response)).subscribe(createOperatorSubscriber(subscriber, undefined, function () {\n abortable = false;\n subscriber.complete();\n }, handleError));\n }\n else {\n abortable = false;\n subscriber.next(response);\n subscriber.complete();\n }\n })\n .catch(handleError);\n return function () {\n if (abortable) {\n controller.abort();\n }\n };\n });\n}\n//# sourceMappingURL=fetch.js.map","import { HttpJsonResponseError } from '../../errors/index.js';\n/**\n * Asynchronously parses the JSON data from a given HTTP response.\n *\n * If the response has a status code of 204 (No Content), this function will resolve with `undefined`.\n *\n * If the response is not successful (i.e. `response.ok` is `false`), this function will throw an `HttpJsonResponseError` with the response details and the parsed data (if any).\n *\n * If there is an error parsing the JSON data, this function will throw an `HttpJsonResponseError` with the parsing error and the original response.\n *\n * @template TType - The expected type of the parsed JSON data.\n * @template TResponse - The type of the HTTP response object.\n * @param response - The HTTP response to parse.\n * @returns A promise that resolves with the parsed JSON data, or rejects with an `HttpJsonResponseError`.\n */\nexport const jsonSelector = async (response) => {\n /** Status code 204 indicates no content in the response */\n if (response.status === 204) {\n return Promise.resolve();\n }\n try {\n // Parse the response JSON data\n const data = await response.json();\n // Check if the response was successful\n if (!response.ok) {\n // Throw an error with the response details\n throw new HttpJsonResponseError('network response was not OK', response, { data });\n }\n // Return the parsed data\n return data;\n }\n catch (cause) {\n // If the cause is an HttpJsonResponseError, rethrow it\n if (cause instanceof HttpJsonResponseError) {\n throw cause;\n }\n // Otherwise, throw a new HttpJsonResponseError with the parsing error\n throw new HttpJsonResponseError('failed to parse response', response, { cause });\n }\n};\nexport default jsonSelector;\n//# sourceMappingURL=json-selector.js.map","/**\n * Extracts a blob and filename from a successful HTTP response.\n *\n * @param response - The HTTP response to extract the blob and filename from.\n * @returns A promise that resolves to an object containing the extracted blob and filename.\n * @throws {Error} If the response is not successful or if there is an error parsing the response.\n */\nexport const blobSelector = async (response) => {\n // treat any non-2xx response as a failure rather than attempting to read its body\n if (!response.ok) {\n throw new Error('network response was not OK');\n }\n // Status code 204 indicates no content, so throw an error\n if (response.status === 204) {\n throw new Error('no content');\n }\n // Extract the filename from the 'content-disposition' header\n // locate the segment carrying the filename directive; other directives (e.g. inline/attachment) are ignored\n const filename = response.headers\n .get('content-disposition')\n ?.split(';')\n .find((n) => n.includes('filename='))\n ?.replace('filename=', '')\n ?.trim();\n try {\n // Convert the response to a Blob and return the filename and Blob\n const blob = await response.blob();\n return { filename, blob };\n }\n catch (_err) {\n // Throw an error if there's a problem parsing the response\n throw Error('failed to parse response');\n }\n};\nexport default blobSelector;\n//# sourceMappingURL=blob-selector.js.map","import { finalize, firstValueFrom, of, Subject } from 'rxjs';\nimport { switchMap, take, takeUntil, tap } from 'rxjs/operators';\nimport { fromFetch } from 'rxjs/fetch';\nimport { HttpMiddlewareHandler, HttpRequestHandler, HttpResponseHandler } from '../operators';\nimport { blobSelector, jsonSelector } from '../selectors';\nimport { HttpResponseError } from '../../errors/index.js';\nimport { createSseSelector, } from '../selectors/create-sse-selector';\n/** Base http client for executing requests */\nexport class HttpClient {\n uri;\n /**\n * A request handler that can be used to customize the request before it is sent.\n * This property is part of the `HttpClientCreateOptions` configuration object used to create an `HttpClient` instance.\n */\n requestHandler;\n /**\n * A handler for customizing the response after it is received.\n * This property is part of the `HttpClientCreateOptions` configuration object used to create an `HttpClient` instance.\n */\n responseHandler;\n /**\n * Middleware wrapping the network call, for cross-cutting concerns such as retries,\n * caching, or telemetry. This property is part of the `HttpClientCreateOptions`\n * configuration object used to create an `HttpClient` instance.\n */\n middlewareHandler;\n /**\n * A stream of requests that are about to be executed.\n * This property is used internally by the `HttpClient` class to manage the lifecycle of requests.\n */\n _request$ = new Subject();\n /**\n * A stream of responses that have been received.\n * This property is used internally by the `HttpClient` class to manage the lifecycle of responses.\n */\n _response$ = new Subject();\n /**\n * A stream that is used to signal the abortion of requests.\n * This property is used internally by the `HttpClient` class to manage the lifecycle of requests.\n */\n _abort$ = new Subject();\n /**\n * A stream of requests that are about to be executed.\n * @returns An `Observable` that emits each request before it is executed.\n */\n get request$() {\n return this._request$.asObservable();\n }\n /**\n * A stream of responses that have been received.\n * @returns An `Observable` that emits each response as it is received.\n */\n get response$() {\n return this._response$.asObservable();\n }\n /**\n * Creates a new `HttpClient`.\n * @param uri - The base URI used to resolve relative request paths.\n * @param options - Optional request and response handlers.\n */\n constructor(uri, options) {\n this.uri = uri;\n this.requestHandler = new HttpRequestHandler(options?.requestHandler);\n this.responseHandler = new HttpResponseHandler(options?.responseHandler);\n this.middlewareHandler = new HttpMiddlewareHandler(options?.middlewareHandler);\n this._init();\n }\n /**\n * Internal method called by child classes to perform initialization logic in the constructor.\n * This method is intended to be overridden by child classes to add their own initialization logic.\n * @protected\n * @virtual\n */\n _init() {\n // called by children for constructor setup\n }\n /**\n * Fetches data from the specified path and returns a stream response.\n *\n * @template T - The expected shape of the fetched data.\n * @param path - The path to fetch data from.\n * @param args - Optional request initialization options, including a custom selector function.\n * @returns A stream response containing the fetched data.\n */\n fetch$(path, args) {\n return this._fetch$(path, args);\n }\n /**\n * Fetches data from the specified path and returns a Promise containing the fetched data.\n *\n * @template T - The expected shape of the fetched data.\n * @param path - The path to fetch data from.\n * @param args - Optional request initialization options, including a custom selector function.\n * @returns A Promise containing the fetched data.\n */\n fetch(path, args) {\n return firstValueFrom(this.fetch$(path, args));\n }\n /**\n * @deprecated Use {@link fetch} instead.\n * @template T - The expected shape of the fetched data.\n * @param path - The path to fetch data from.\n * @param args - Optional request initialization options, including a custom selector function.\n * @returns A Promise containing the fetched data.\n */\n fetchAsync(path, args) {\n return this.fetch(path, args);\n }\n /**\n * Fetches data from the specified path and returns a stream response containing the data in JSON format.\n *\n * @template T - The expected shape of the parsed JSON data.\n * @param path - The path to fetch the data from.\n * @param args - Optional request initialization options, including a custom selector function and request body.\n * - `body`: The request body, which will be automatically serialized to JSON if it's an object.\n * - `selector`: A custom selector function to transform the response data. If not provided, the `jsonSelector` function will be used.\n * - `headers`: Additional headers to include in the request. The `Accept` and `Content-Type` headers will be automatically set to `application/json`.\n * @returns A stream response containing the fetched data in JSON format.\n */\n json$(path, args) {\n const body = typeof args?.body === 'object' ? JSON.stringify(args?.body) : args?.body;\n const selector = args?.selector ?? jsonSelector;\n const headers = new Headers(args?.headers);\n headers.append('Accept', 'application/json');\n headers.append('Content-Type', 'application/json');\n return this.fetch$(path, {\n ...args,\n body,\n selector,\n headers,\n });\n }\n /**\n * Fetches data from the specified path and returns a Promise containing the fetched data in JSON format.\n *\n * @template T - The expected shape of the parsed JSON data.\n * @param path - The path to fetch the data from.\n * @param args - Optional request initialization options, including a custom selector function and request body.\n * - `body`: The request body, which will be automatically serialized to JSON if it's an object.\n * - `selector`: A custom selector function to transform the response data. If not provided, the `jsonSelector` function will be used.\n * - `headers`: Additional headers to include in the request. The `Accept` and `Content-Type` headers will be automatically set to `application/json`.\n * @returns A Promise containing the fetched data in JSON format.\n */\n json(path, args) {\n return firstValueFrom(this.json$(path, args));\n }\n /**\n * Fetches a blob resource from the specified path and returns a stream response.\n *\n * @template T - The expected shape of the fetched blob data.\n * @param path - The path to the blob resource.\n * @param args - Optional request initialization options, including a custom selector function.\n * @returns A stream response containing the fetched blob data.\n */\n blob$(path, args) {\n // Get the selector value from the provided args, or use the default blobSelector\n const selector = args?.selector ?? blobSelector;\n // Create the FetchRequestInit object with the provided args and the selector\n const init = {\n ...args,\n selector,\n };\n // Call the fetch$ method with the provided path and the constructed init object\n return this.fetch$(path, init);\n }\n /**\n * Fetches a blob from the specified path and returns a Promise that resolves to the blob result.\n *\n * @template T - The expected shape of the fetched blob data.\n * @param path - The path to fetch the blob from.\n * @param args - Optional arguments for the fetch request, including request body, headers, and response type.\n * @returns A Promise that resolves to the blob result.\n */\n blob(path, args) {\n return firstValueFrom(this.blob$(path, args));\n }\n /**\n * Initiates a Server-Sent Events (SSE) stream request to the specified path and returns a stream of events.\n *\n * @template T - The type of the event data expected from the SSE stream.\n * @param path - The endpoint path to connect to for the SSE stream.\n * @param args - Optional fetch request initialization options, including headers and abort signal.\n * @param options - Optional selector options for customizing the SSE stream, excluding the abort signal.\n *\n * @returns A `StreamResponse` that emits `ServerSentEvent<T>` objects as they are received from the server.\n *\n * @example\n * const sse$ = httpClient.sse$(\n * '/events',\n * { method: 'POST', body: JSON.stringify({ prompt: 'tell me a joke' }) },\n * { eventFilter: ['message'] },\n * );\n * sse$.subscribe({\n * next: (event) => console.log(event),\n * error: (err) => console.error(err),\n * complete: () => console.log('Completed'),\n * });\n */\n sse$(path, args, options) {\n // Setup default common headers for SSE\n const headers = new Headers(args?.headers);\n headers.append('Accept', 'text/event-stream');\n headers.append('Content-Type', 'text/event-stream');\n headers.append('Cache-Control', 'no-cache');\n headers.append('Connection', 'keep-alive');\n // Create the selector using the provided options and the abort signal from args\n const selector = createSseSelector({ ...options, abortSignal: args?.signal });\n // Call the fetch$ method with the provided path and the constructed init object\n return this._fetch$(path, { selector, ...args, headers });\n }\n /**\n * @deprecated Use {@link json} instead.\n * @template T - The expected shape of the parsed JSON data.\n * @param path - The path to fetch the data from.\n * @param args - Optional request initialization options, including a custom selector function and request body.\n * @returns A Promise containing the fetched data in JSON format.\n */\n jsonAsync(path, args) {\n return this.json(path, args);\n }\n /**\n * Executes an HTTP request using the specified method and path.\n *\n * @template T - The expected shape of the result.\n * @template TMethod - The name of the `IHttpClient` method to invoke.\n * @param method - The HTTP method to use for the request, such as 'fetch', 'json', or 'blob'.\n * @param path - The path to the resource to fetch.\n * @param init - Optional request initialization options, including request body, headers, and response type.\n * @returns The result of the HTTP request, which will be of the same type as the return value of the specified method.\n */\n execute(method, path, init) {\n return this[method](path, init);\n }\n /**\n * Aborts any ongoing HTTP requests made by this `IHttpClient` instance.\n * This will trigger the `takeUntil` operator in the `_fetch$` method,\n * causing any in-flight requests to be cancelled, and abort the\n * per-request `AbortSignal` passed through to `_performFetch`, so the\n * underlying network call is cancelled even behind registered middleware.\n */\n abort() {\n this._abort$.next();\n }\n /**\n * Fetches data from the specified path and returns an Observable that emits the response.\n *\n * @template T - The expected shape of the emitted data.\n * @param path - The path to fetch the data from.\n * @param args - Optional arguments for the fetch request, including a response selector function, request body, headers, and response type.\n * @returns {Observable<T>} An Observable that emits the response data.\n *\n * @throws {HttpResponseError} When the optional `selector` throws while transforming the response.\n *\n * This method handles the following steps:\n * 1. Resolves the full URL by combining the base URI and the provided path.\n * 2. Prepares the request by passing it through the `requestHandler.process()` method.\n * 3. Executes the fetch request using the prepared request.\n * 4. Prepares the response by passing it through the `responseHandler.process()` method.\n * 5. Applies the optional response selector function to transform the response data.\n * 6. Cancels the request if the `_abort$` observable emits.\n */\n _fetch$(path, args) {\n const { selector, ...options } = args || {};\n // A registered middleware's `next(...)` resolves through a `Promise` (see\n // `HttpMiddlewareHandler`), which `firstValueFrom` fulfils via its own independent\n // subscription to `_performFetch` — one the `takeUntil(this._abort$)` below never reaches,\n // since it sits outside the subscription tree that `takeUntil` tears down. Combining this\n // controller's signal into the request `init` lets `_performFetch` (`fromFetch` by default)\n // abort the underlying network call directly, regardless of whether middleware severed the\n // RxJS teardown chain.\n const abortController = new AbortController();\n // abort only fires once per request; the subscription is torn down in `finalize` below\n const abort = this._abort$.pipe(take(1)).subscribe(() => abortController.abort());\n const callerSignal = options.signal;\n const signal = callerSignal\n ? AbortSignal.any([callerSignal, abortController.signal])\n : abortController.signal;\n // `fromFetch` yields the raw fetch `Response`, but `responseHandler.process()` (called via\n // `_prepareResponse`) expects the pipeline's generic `TResponse` shape — cast through\n // `unknown` since the two are only compatible after that processing step.\n const response$ = of({\n ...options,\n signal,\n path,\n uri: this._resolveUrl(path),\n }).pipe(\n /** prepare request, allow extensions to modify request */\n switchMap((x) => this._prepareRequest(x)), \n /** push request to event buss */\n tap((x) => this._request$.next(x)), \n /** execute request through registered middleware, terminating at _performFetch */\n switchMap(({ uri, path: _path, ...init }) => this.middlewareHandler.process(uri, init, (u, i) => this._performFetch(u, i))), \n /** prepare response, allow extensions to modify response */\n switchMap((x) => this._prepareResponse(x)), \n /** push response to event buss */\n tap((x) => this._response$.next(x)), \n /** execute selector */\n switchMap((response) => {\n // only run the selector when one was provided; otherwise pass the response through untouched\n if (selector) {\n try {\n return selector(response);\n }\n catch (err) {\n throw new HttpResponseError('failed to execute response selector', response, {\n cause: err,\n });\n }\n }\n return of(response);\n }), \n /** cancel request on abort signal */\n takeUntil(this._abort$), \n /** the abort signal subscription only ever fires once; tear it down once this request settles either way */\n finalize(() => abort.unsubscribe()));\n // The pipe above resolves to the per-call generic `T` (via the optional `selector`), but\n // the observable's static type tracks the class-level `TResponse` — cast to the caller's `T`.\n return response$;\n }\n /**\n * Performs the actual network call for a prepared request.\n *\n * @remarks\n * Isolated from {@link _fetch$} so a test double can replace only this step —\n * matching a request against registered route handlers instead of reaching\n * the network — while everything around it (request preparation, the\n * response pipeline, abort handling) runs unchanged. See\n * `@equinor/fusion-framework-module-http/mock`.\n *\n * @param uri - The fully resolved URL for the request.\n * @param init - The prepared `fetch` request options.\n * @returns An observable of the raw `Response`, ahead of {@link _prepareResponse}.\n */\n _performFetch(uri, init) {\n return fromFetch(uri, init);\n }\n /**\n * Prepares the request by passing it through the `requestHandler.process()` method.\n * This method is an implementation detail of the `_fetch$()` method, and is not part of the public API.\n * It takes a `TRequest` object as input, which represents the request data, and returns an `ObservableInput<TRequest>`,\n * which can be used to further process the request before it is executed.\n *\n * @param init The request data to be processed.\n * @returns An `ObservableInput<TRequest>` that represents the processed request.\n */\n _prepareRequest(init) {\n return this.requestHandler.process(init);\n }\n /**\n * Prepares the response by passing it through the `responseHandler.process()` method.\n * This method is an implementation detail of the `_fetch$()` method, and is not part of the public API.\n * It takes a `TResponse` object as input, which represents the response data, and returns an `ObservableInput<TResponse>`,\n * which can be used to further process the response before it is returned.\n *\n * @param response The response data to be processed.\n * @returns An `ObservableInput<TResponse>` that represents the processed response.\n */\n _prepareResponse(response) {\n return this.responseHandler.process(response);\n }\n /**\n * Resolves the full URL for a given path by combining it with the base URL.\n * This is a protected method and is an implementation detail of the `HttpClient` class.\n *\n * @param path - The path to be resolved.\n * @returns The full URL for the given path.\n */\n _resolveUrl(path) {\n const { origin, pathname: basePath } = new URL(this.uri, this.uri.startsWith('http') ? undefined : window.location.origin);\n const pathname = [basePath, path].join('/').replace(/\\/{2,}/g, '/');\n return new URL(pathname, origin).href;\n }\n}\n//# sourceMappingURL=client.js.map","import { HttpClient } from './client';\n/**\n * Extends the `HttpClient` class to provide MSAL (Microsoft Authentication Library) authentication support.\n *\n * The `HttpClientMsal` class is responsible for handling requests that require authentication using the MSAL library.\n * It extends the `HttpClient` class and adds the following functionality:\n *\n * - `defaultScopes`: An array of strings representing the default scopes to be used for all requests, unless overridden in the request object.\n * - `fetch$`: Overrides the `fetch$` method of the `HttpClient` class to add MSAL authentication support. It takes an optional `MsalFetchRequestInit` object, which can include the `scopes` property to specify the scopes to be used for the request.\n * - If `scopes` is provided in the `MsalFetchRequestInit` object, it will be used in addition to the `defaultScopes`.\n * - If `scopes` is not provided, only the `defaultScopes` will be used.\n *\n * @template TRequest - The type of the request object. Defaults to `MsalFetchRequest`.\n * @template TResponse - The type of the response object. Defaults to `FetchResponse`.\n */\nexport class HttpClientMsal extends HttpClient {\n /**\n * An array of default scopes to be used for all requests, unless overridden in the request object.\n * This property is used by the `HttpClientMsal` class to add MSAL authentication support to requests.\n */\n defaultScopes = [];\n /**\n * Fetches a resource from the specified path, with optional MSAL authentication scopes.\n *\n * This method extends the `HttpClient.fetch$` method to add support for MSAL authentication.\n * If `init.scopes` is provided, it will be used in addition to the `defaultScopes` defined in the `HttpClientMsal` class.\n * If `init.scopes` is not provided, only the `defaultScopes` will be used for the request.\n *\n * @overrides HttpClient.fetch$\n *\n * @template T - The expected response type.\n * @param path - The path to the resource to fetch.\n * @param init - An optional `MsalFetchRequestInit` object that can include the `scopes` property.\n * @returns An `Observable` that emits the fetched resource.\n */\n fetch$(path, init) {\n /**\n * Merges the default scopes defined in the `HttpClientMsal` class with the scopes provided in the `init` parameter, if any.\n * This ensures that the request includes the necessary scopes for MSAL authentication.\n */\n const args = {\n ...init,\n scopes: this.defaultScopes.concat(init?.scopes || []),\n };\n return super._fetch$(path, args);\n }\n}\nexport default HttpClientMsal;\n//# sourceMappingURL=client-msal.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpClientMsal } from './lib/client';\nimport { HttpClientConfigurator, } from './configurator';\nimport { HttpClientProvider } from './provider';\n/**\n * Default HTTP module definition for Fusion Framework applications.\n *\n * The module uses `HttpClientMsal` as the default client implementation and,\n * when the auth module is available, installs a request handler that can acquire\n * bearer tokens for scoped requests.\n */\nexport const module = {\n name: 'http',\n /**\n * Configures the HTTP module with MSAL authentication.\n *\n * This function creates a new `HttpClientConfigurator` instance using the `HttpClientMsal` class.\n * The `HttpClientConfigurator` is responsible for configuring the HTTP client with the necessary options,\n * such as the base URL, request headers, and other settings.\n *\n * @returns A new `HttpClientConfigurator` instance configured for MSAL authentication.\n */\n configure: () => new HttpClientConfigurator(HttpClientMsal),\n /**\n * Initializes the HTTP client provider with MSAL authentication.\n *\n * This function is responsible for setting up the default HTTP request handler\n * to acquire an access token from MSAL and attach it to the request headers\n * when the request includes scopes.\n *\n * @param config - The module configuration.\n * @param hasModule - A function to check if a module is available.\n * @param requireInstance - A function to get an instance of a module.\n * @returns A promise that resolves to the HTTP client provider.\n */\n initialize: async ({ config, hasModule, requireInstance, }) => {\n const httpProvider = new HttpClientProvider(config);\n // wire up an MSAL bearer-token handler only when the auth module is registered\n if (hasModule('auth')) {\n const authProvider = await requireInstance('auth');\n httpProvider.defaultHttpRequestHandler.set('MSAL', async (request) => {\n const { scopes = [] } = request;\n // only attempt to acquire a token when the request actually declares scopes\n if (scopes.length) {\n /** TODO(#5143): should be try catch, check caller for handling */\n const accessToken = await authProvider.acquireAccessToken({\n request: { scopes },\n });\n // without a token there's nothing to attach, fall through to the default request\n if (accessToken) {\n const headers = new Headers(request.headers);\n headers.set('Authorization', `Bearer ${accessToken}`);\n return { ...request, headers };\n }\n }\n });\n }\n return httpProvider;\n },\n};\n/**\n * Creates a module configurator for the HTTP module.\n *\n * Use this when you need lower-level access to the module configuration callback,\n * for example when registering several named clients in one setup step.\n *\n * @param configure - The callback that receives the HTTP module configuration.\n * @returns A module configurator for the HTTP module.\n */\nexport const configureHttp = (configure) => ({\n module,\n configure,\n});\n/**\n * Creates a module configurator that registers one named HTTP client.\n *\n * This is the convenience API for the common case where a setup step only needs to\n * register one client with `baseUri`, `defaultScopes`, handlers, or a custom constructor.\n *\n * @param name - The client key used later with `createClient(name)`.\n * @param args - The named client configuration.\n * @returns A module configurator that registers the named client.\n */\nexport const configureHttpClient = (name, args) => ({\n module,\n configure: (config) => {\n config.configureClient(name, args);\n },\n});\nexport default module;\n//# sourceMappingURL=module.js.map","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = isFunction(e) ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar O = Object;\nvar getPrototypeOf = O.getPrototypeOf;\nvar CONSTRUCTOR = \"constructor\";\nvar PROTOTYPE = \"prototype\";\nvar CONFIGURABLE = \"configurable\";\nvar ENUMERABLE = \"enumerable\";\nvar WRITABLE = \"writable\";\nvar VALUE = \"value\";\nvar isDraft = (value) => !!value && !!value[DRAFT_STATE];\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || isArray(value) || !!value[DRAFTABLE] || !!value[CONSTRUCTOR]?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = O[PROTOTYPE][CONSTRUCTOR].toString();\nvar cachedCtorStrings = /* @__PURE__ */ new WeakMap();\nfunction isPlainObject(value) {\n if (!value || !isObjectish(value))\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null || proto === O[PROTOTYPE])\n return true;\n const Ctor = O.hasOwnProperty.call(proto, CONSTRUCTOR) && proto[CONSTRUCTOR];\n if (Ctor === Object)\n return true;\n if (!isFunction(Ctor))\n return false;\n let ctorString = cachedCtorStrings.get(Ctor);\n if (ctorString === void 0) {\n ctorString = Function.toString.call(Ctor);\n cachedCtorStrings.set(Ctor, ctorString);\n }\n return ctorString === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter, strict = true) {\n if (getArchtype(obj) === 0 /* Object */) {\n const keys = strict ? Reflect.ownKeys(obj) : O.keys(obj);\n keys.forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nvar has = (thing, prop, type = getArchtype(thing)) => type === 2 /* Map */ ? thing.has(prop) : O[PROTOTYPE].hasOwnProperty.call(thing, prop);\nvar get = (thing, prop, type = getArchtype(thing)) => (\n // @ts-ignore\n type === 2 /* Map */ ? thing.get(prop) : thing[prop]\n);\nvar set = (thing, propOrOldValue, value, type = getArchtype(thing)) => {\n if (type === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (type === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n};\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nvar isArray = Array.isArray;\nvar isMap = (target) => target instanceof Map;\nvar isSet = (target) => target instanceof Set;\nvar isObjectish = (target) => typeof target === \"object\";\nvar isFunction = (target) => typeof target === \"function\";\nvar isBoolean = (target) => typeof target === \"boolean\";\nfunction isArrayIndex(value) {\n const n = +value;\n return Number.isInteger(n) && String(n) === value;\n}\nvar getProxyDraft = (value) => {\n if (!isObjectish(value))\n return null;\n return value?.[DRAFT_STATE];\n};\nvar latest = (state) => state.copy_ || state.base_;\nvar getValue = (value) => {\n const proxyDraft = getProxyDraft(value);\n return proxyDraft ? getFinalValue(proxyDraft) : value;\n};\nvar getFinalValue = (state) => state.modified_ ? state.copy_ : state.base_;\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (isArray(base))\n return Array[PROTOTYPE].slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = O.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc[WRITABLE] === false) {\n desc[WRITABLE] = true;\n desc[CONFIGURABLE] = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n [CONFIGURABLE]: true,\n [WRITABLE]: true,\n // could live with !!desc.set as well here...\n [ENUMERABLE]: desc[ENUMERABLE],\n [VALUE]: base[key]\n };\n }\n return O.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = O.create(proto);\n return O.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n O.defineProperties(obj, {\n set: dontMutateMethodOverride,\n add: dontMutateMethodOverride,\n clear: dontMutateMethodOverride,\n delete: dontMutateMethodOverride\n });\n }\n O.freeze(obj);\n if (deep)\n each(\n obj,\n (_key, value) => {\n freeze(value, true);\n },\n false\n );\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nvar dontMutateMethodOverride = {\n [VALUE]: dontMutateFrozenCollections\n};\nfunction isFrozen(obj) {\n if (obj === null || !isObjectish(obj))\n return true;\n return O.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar PluginMapSet = \"MapSet\";\nvar PluginPatches = \"Patches\";\nvar PluginArrayMethods = \"ArrayMethods\";\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nvar isPluginLoaded = (pluginKey) => !!plugins[pluginKey];\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nvar getCurrentScope = () => currentScope;\nvar createScope = (parent_, immer_) => ({\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0,\n handledSet_: /* @__PURE__ */ new Set(),\n processedForPatches_: /* @__PURE__ */ new Set(),\n mapSetPlugin_: isPluginLoaded(PluginMapSet) ? getPlugin(PluginMapSet) : void 0,\n arrayMethodsPlugin_: isPluginLoaded(PluginArrayMethods) ? getPlugin(PluginArrayMethods) : void 0\n});\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n scope.patchPlugin_ = getPlugin(PluginPatches);\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nvar enterScope = (immer2) => currentScope = createScope(currentScope, immer2);\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n }\n const { patchPlugin_ } = scope;\n if (patchPlugin_) {\n patchPlugin_.generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope\n );\n }\n } else {\n result = finalize(scope, baseDraft);\n }\n maybeFreeze(scope, result, true);\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n const finalValue = handleValue(value, rootScope.handledSet_, rootScope);\n return finalValue;\n }\n if (!isSameScope(state, rootScope)) {\n return value;\n }\n if (!state.modified_) {\n return state.base_;\n }\n if (!state.finalized_) {\n const { callbacks_ } = state;\n if (callbacks_) {\n while (callbacks_.length > 0) {\n const callback = callbacks_.pop();\n callback(rootScope);\n }\n }\n generatePatchesAndFinalize(state, rootScope);\n }\n return state.copy_;\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\nfunction markStateFinalized(state) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n}\nvar isSameScope = (state, rootScope) => state.scope_ === rootScope;\nvar EMPTY_LOCATIONS_RESULT = [];\nfunction updateDraftInParent(parent, draftValue, finalizedValue, originalKey) {\n const parentCopy = latest(parent);\n const parentType = parent.type_;\n if (originalKey !== void 0) {\n const currentValue = get(parentCopy, originalKey, parentType);\n if (currentValue === draftValue) {\n set(parentCopy, originalKey, finalizedValue, parentType);\n return;\n }\n }\n if (!parent.draftLocations_) {\n const draftLocations = parent.draftLocations_ = /* @__PURE__ */ new Map();\n each(parentCopy, (key, value) => {\n if (isDraft(value)) {\n const keys = draftLocations.get(value) || [];\n keys.push(key);\n draftLocations.set(value, keys);\n }\n });\n }\n const locations = parent.draftLocations_.get(draftValue) ?? EMPTY_LOCATIONS_RESULT;\n for (const location of locations) {\n set(parentCopy, location, finalizedValue, parentType);\n }\n}\nfunction registerChildFinalizationCallback(parent, child, key) {\n parent.callbacks_.push(function childCleanup(rootScope) {\n const state = child;\n if (!state || !isSameScope(state, rootScope)) {\n return;\n }\n rootScope.mapSetPlugin_?.fixSetContents(state);\n const finalizedValue = getFinalValue(state);\n updateDraftInParent(parent, state.draft_ ?? state, finalizedValue, key);\n generatePatchesAndFinalize(state, rootScope);\n });\n}\nfunction generatePatchesAndFinalize(state, rootScope) {\n const shouldFinalize = state.modified_ && !state.finalized_ && (state.type_ === 3 /* Set */ || state.type_ === 1 /* Array */ && state.allIndicesReassigned_ || (state.assigned_?.size ?? 0) > 0);\n if (shouldFinalize) {\n const { patchPlugin_ } = rootScope;\n if (patchPlugin_) {\n const basePath = patchPlugin_.getPath(state);\n if (basePath) {\n patchPlugin_.generatePatches_(state, basePath, rootScope);\n }\n }\n markStateFinalized(state);\n }\n}\nfunction handleCrossReference(target, key, value) {\n const { scope_ } = target;\n if (isDraft(value)) {\n const state = value[DRAFT_STATE];\n if (isSameScope(state, scope_)) {\n state.callbacks_.push(function crossReferenceCleanup() {\n prepareCopy(target);\n const finalizedValue = getFinalValue(state);\n updateDraftInParent(target, value, finalizedValue, key);\n });\n }\n } else if (isDraftable(value)) {\n target.callbacks_.push(function nestedDraftCleanup() {\n const targetCopy = latest(target);\n if (target.type_ === 3 /* Set */) {\n if (targetCopy.has(value)) {\n handleValue(value, scope_.handledSet_, scope_);\n }\n } else {\n if (get(targetCopy, key, target.type_) === value) {\n if (scope_.drafts_.length > 1 && (target.assigned_.get(key) ?? false) === true && target.copy_) {\n handleValue(\n get(target.copy_, key, target.type_),\n scope_.handledSet_,\n scope_\n );\n }\n }\n }\n });\n }\n}\nfunction handleValue(target, handledSet, rootScope) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return target;\n }\n if (isDraft(target) || handledSet.has(target) || !isDraftable(target) || isFrozen(target)) {\n return target;\n }\n handledSet.add(target);\n each(target, (key, value) => {\n if (isDraft(value)) {\n const state = value[DRAFT_STATE];\n if (isSameScope(state, rootScope)) {\n const updatedValue = getFinalValue(state);\n set(target, key, updatedValue, target.type_);\n markStateFinalized(state);\n }\n } else if (isDraftable(value)) {\n handleValue(value, handledSet, rootScope);\n }\n });\n return target;\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const baseIsArray = isArray(base);\n const state = {\n type_: baseIsArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n // actually instantiated in `prepareCopy()`\n assigned_: void 0,\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false,\n // `callbacks` actually gets assigned in `createProxy`\n callbacks_: void 0\n };\n let target = state;\n let traps = objectTraps;\n if (baseIsArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return [proxy, state];\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n let arrayPlugin = state.scope_.arrayMethodsPlugin_;\n const isArrayWithStringProp = state.type_ === 1 /* Array */ && typeof prop === \"string\";\n if (isArrayWithStringProp) {\n if (arrayPlugin?.isArrayOperationMethod(prop)) {\n return arrayPlugin.createMethodInterceptor(state, prop);\n }\n }\n const source = latest(state);\n if (!has(source, prop, state.type_)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (isArrayWithStringProp && state.operationMethod && arrayPlugin?.isMutatingArrayMethod(\n state.operationMethod\n ) && isArrayIndex(prop)) {\n return value;\n }\n if (value === peek(state.base_, prop) || isRelocatedBaseRef(state, prop, value)) {\n prepareCopy(state);\n const childKey = state.type_ === 1 /* Array */ ? +prop : prop;\n const childDraft = createProxy(state.scope_, value, state, childKey);\n return state.copy_[childKey] = childDraft;\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_.set(prop, false);\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop, state.type_)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || has(state.copy_, prop, state.type_)) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_.set(prop, true);\n handleCrossReference(state, prop, value);\n return true;\n },\n deleteProperty(state, prop) {\n prepareCopy(state);\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_.set(prop, false);\n markChanged(state);\n } else {\n state.assigned_.delete(prop);\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n [WRITABLE]: true,\n [CONFIGURABLE]: state.type_ !== 1 /* Array */ || prop !== \"length\",\n [ENUMERABLE]: desc[ENUMERABLE],\n [VALUE]: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\nfor (let key in objectTraps) {\n let fn = objectTraps[key];\n arrayTraps[key] = function() {\n const args = arguments;\n args[0] = args[0][0];\n return fn.apply(this, args);\n };\n}\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction isRelocatedBaseRef(state, prop, value) {\n if (state.type_ !== 1 /* Array */ || !state.allIndicesReassigned_ || state.assigned_?.get(prop) || !isDraftable(value) || value[DRAFT_STATE]) {\n return false;\n }\n return state.baseRefs_.has(value);\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? VALUE in desc ? desc[VALUE] : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n this.useStrictIteration_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (isFunction(base) && !isFunction(recipe)) {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (!isFunction(recipe))\n die(6);\n if (patchListener !== void 0 && !isFunction(patchListener))\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(scope, base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || !isObjectish(base)) {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(PluginPatches).generateReplacementPatches_(base, result, {\n patches_: p,\n inversePatches_: ip\n });\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (isFunction(base)) {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (isBoolean(config?.autoFreeze))\n this.setAutoFreeze(config.autoFreeze);\n if (isBoolean(config?.useStrictShallowCopy))\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n if (isBoolean(config?.useStrictIteration))\n this.setUseStrictIteration(config.useStrictIteration);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(scope, base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n /**\n * Pass false to use faster iteration that skips non-enumerable properties\n * but still handles symbols for compatibility.\n *\n * By default, strict iteration is enabled (includes all own properties).\n */\n setUseStrictIteration(value) {\n this.useStrictIteration_ = value;\n }\n shouldUseStrictIteration() {\n return this.useStrictIteration_;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(PluginPatches).applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(rootScope, value, parent, key) {\n const [draft, state] = isMap(value) ? getPlugin(PluginMapSet).proxyMap_(value, parent) : isSet(value) ? getPlugin(PluginMapSet).proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent?.scope_ ?? getCurrentScope();\n scope.drafts_.push(draft);\n state.callbacks_ = parent?.callbacks_ ?? [];\n state.key_ = key;\n if (parent && key !== void 0) {\n registerChildFinalizationCallback(parent, state, key);\n } else {\n state.callbacks_.push(function rootDraftCleanup(rootScope2) {\n rootScope2.mapSetPlugin_?.fixSetContents(state);\n const { patchPlugin_ } = rootScope2;\n if (state.modified_ && patchPlugin_) {\n patchPlugin_.generatePatches_(state, [], rootScope2);\n }\n });\n }\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n let strict = true;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n strict = state.scope_.immer_.shouldUseStrictIteration();\n } else {\n copy = shallowCopy(value, true);\n }\n each(\n copy,\n (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n },\n strict\n );\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n function getPath(state, path = []) {\n if (state.key_ !== void 0) {\n const parentCopy = state.parent_.copy_ ?? state.parent_.base_;\n const proxyDraft = getProxyDraft(get(parentCopy, state.key_));\n const valueAtKey = get(parentCopy, state.key_);\n if (valueAtKey === void 0) {\n return null;\n }\n if (valueAtKey !== state.draft_ && valueAtKey !== state.base_ && valueAtKey !== state.copy_) {\n return null;\n }\n if (proxyDraft != null && proxyDraft.base_ !== state.base_) {\n return null;\n }\n const isSet2 = state.parent_.type_ === 3 /* Set */;\n let key;\n if (isSet2) {\n const setParent = state.parent_;\n key = Array.from(setParent.drafts_.keys()).indexOf(state.key_);\n } else {\n key = state.key_;\n }\n if (!(isSet2 && parentCopy.size > key || has(parentCopy, key))) {\n return null;\n }\n path.push(key);\n }\n if (state.parent_) {\n return getPath(state.parent_, path);\n }\n path.reverse();\n try {\n resolvePath(state.copy_, path);\n } catch (e) {\n return null;\n }\n return path;\n }\n function resolvePath(base, path) {\n let current2 = base;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n current2 = get(current2, key);\n if (!isObjectish(current2) || current2 === null) {\n throw new Error(`Cannot resolve path at '${path.join(\"/\")}'`);\n }\n }\n return current2;\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, scope) {\n if (state.scope_.processedForPatches_.has(state)) {\n return;\n }\n state.scope_.processedForPatches_.add(state);\n const { patches_, inversePatches_ } = scope;\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches_,\n inversePatches_\n );\n case 1 /* Array */:\n return generateArrayPatches(\n state,\n basePath,\n patches_,\n inversePatches_\n );\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches_,\n inversePatches_\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n const allReassigned = state.allIndicesReassigned_ === true;\n for (let i = 0; i < base_.length; i++) {\n const copiedItem = copy_[i];\n const baseItem = base_[i];\n const isAssigned = allReassigned || assigned_?.get(i.toString());\n if (isAssigned && copiedItem !== baseItem) {\n const childState = copiedItem?.[DRAFT_STATE];\n if (childState && childState.modified_) {\n continue;\n }\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copiedItem)\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(baseItem)\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_, type_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key, type_);\n const value = get(copy_, key, type_);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(\n op === REMOVE ? { op, path } : { op, path, value: clonePatchValueIfNeeded(value) }\n );\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, scope) {\n const { patches_, inversePatches_ } = scope;\n patches_.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches_.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === CONSTRUCTOR))\n die(errorOffset + 3);\n if (isFunction(base) && p === PROTOTYPE)\n die(errorOffset + 3);\n base = get(base, p);\n if (base === null || !isObjectish(base))\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(PluginPatches, {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_,\n getPath\n });\n}\n\n// src/plugins/mapset.ts\nvar _globalIterator = globalThis.Iterator;\nvar hasIteratorFrom = typeof _globalIterator?.from === \"function\";\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false,\n callbacks_: []\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n handleCrossReference(state, key, value);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(state.scope_, value, state, key);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return iteratorFrom({\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n });\n }\n entries() {\n const iterator = this.keys();\n return iteratorFrom({\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n });\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function iteratorFrom(iterable) {\n if (hasIteratorFrom) {\n return _globalIterator.from(iterable);\n }\n const iterator = {\n ...iterable,\n [Symbol.iterator]: () => iterator\n };\n return iterator;\n }\n function proxyMap_(target, parent) {\n const map = new DraftMap(target, parent);\n return [map, map[DRAFT_STATE]];\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false,\n assigned_: void 0,\n callbacks_: []\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n handleCrossReference(state, value, value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n const set2 = new DraftSet(target, parent);\n return [set2, set2[DRAFT_STATE]];\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(state.scope_, value, state, value);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n function fixSetContents(target) {\n if (target.type_ === 3 /* Set */ && target.copy_) {\n const copy = new Set(target.copy_);\n target.copy_.clear();\n copy.forEach((value) => {\n target.copy_.add(getValue(value));\n });\n }\n }\n loadPlugin(PluginMapSet, { proxyMap_, proxySet_, fixSetContents });\n}\n\n// src/plugins/arrayMethods.ts\nfunction enableArrayMethods() {\n const SHIFTING_METHODS = /* @__PURE__ */ new Set([\"shift\", \"unshift\"]);\n const QUEUE_METHODS = /* @__PURE__ */ new Set([\"push\", \"pop\"]);\n const RESULT_RETURNING_METHODS = /* @__PURE__ */ new Set([\n ...QUEUE_METHODS,\n ...SHIFTING_METHODS\n ]);\n const REORDERING_METHODS = /* @__PURE__ */ new Set([\"reverse\", \"sort\"]);\n const MUTATING_METHODS = /* @__PURE__ */ new Set([\n ...RESULT_RETURNING_METHODS,\n ...REORDERING_METHODS,\n \"splice\"\n ]);\n const FIND_METHODS = /* @__PURE__ */ new Set([\"find\", \"findLast\"]);\n const NON_MUTATING_METHODS = /* @__PURE__ */ new Set([\n \"filter\",\n \"slice\",\n \"concat\",\n \"flat\",\n ...FIND_METHODS,\n \"findIndex\",\n \"findLastIndex\",\n \"some\",\n \"every\",\n \"indexOf\",\n \"lastIndexOf\",\n \"includes\",\n \"join\",\n \"toString\",\n \"toLocaleString\"\n ]);\n function isMutatingArrayMethod(method) {\n return MUTATING_METHODS.has(method);\n }\n function isNonMutatingArrayMethod(method) {\n return NON_MUTATING_METHODS.has(method);\n }\n function isArrayOperationMethod(method) {\n return isMutatingArrayMethod(method) || isNonMutatingArrayMethod(method);\n }\n function enterOperation(state, method) {\n state.operationMethod = method;\n }\n function exitOperation(state) {\n state.operationMethod = void 0;\n }\n function executeArrayMethod(state, operation, markLength = true) {\n prepareCopy(state);\n const result = operation();\n markArrayChanged(state, markLength);\n return result;\n }\n function markArrayChanged(state, markLength = true) {\n markChanged(state);\n if (markLength)\n state.assigned_.set(\"length\", true);\n }\n function markAllIndicesReassigned(state) {\n state.allIndicesReassigned_ = true;\n state.baseRefs_ = new Set(state.base_);\n }\n function normalizeSliceIndex(index, length) {\n if (index < 0) {\n return Math.max(length + index, 0);\n }\n return Math.min(index, length);\n }\n function handleInsertedValues(state, startIndex, values) {\n for (let i = 0; i < values.length; i++) {\n const index = \"\" + (startIndex + i);\n state.assigned_.set(index, true);\n handleCrossReference(state, index, values[i]);\n }\n }\n function handleSimpleOperation(state, method, args) {\n const isInsert = method === \"push\" || method === \"unshift\";\n if (isInsert ? args.length === 0 : latest(state).length === 0) {\n return isInsert ? latest(state).length : void 0;\n }\n prepareCopy(state);\n const lengthBefore = state.copy_.length;\n const result = state.copy_[method](...args);\n markArrayChanged(state);\n if (SHIFTING_METHODS.has(method)) {\n markAllIndicesReassigned(state);\n }\n if (method === \"push\") {\n handleInsertedValues(state, lengthBefore, args);\n } else if (method === \"unshift\") {\n handleInsertedValues(state, 0, args);\n }\n return RESULT_RETURNING_METHODS.has(method) ? result : state.draft_;\n }\n function handleReorderingOperation(state, method, args) {\n if (latest(state).length <= 1)\n return state.draft_;\n return executeArrayMethod(\n state,\n () => {\n ;\n state.copy_[method](...args);\n markAllIndicesReassigned(state);\n return state.draft_;\n },\n false\n );\n }\n function createMethodInterceptor(state, originalMethod) {\n return function interceptedMethod(...args) {\n const method = originalMethod;\n enterOperation(state, method);\n try {\n if (isMutatingArrayMethod(method)) {\n if (RESULT_RETURNING_METHODS.has(method)) {\n return handleSimpleOperation(state, method, args);\n }\n if (REORDERING_METHODS.has(method)) {\n return handleReorderingOperation(state, method, args);\n }\n if (method === \"splice\") {\n const insertCount = args.length > 2 ? args.length - 2 : 0;\n if (insertCount === 0) {\n const length = latest(state).length;\n if (args.length === 0 || normalizeSliceIndex(args[0] ?? 0, length) === length || args.length > 1 && !(args[1] >= 1)) {\n return [];\n }\n }\n prepareCopy(state);\n const res = state.copy_.splice(\n ...args\n );\n if (res.length === 0 && insertCount === 0) {\n return res;\n }\n markArrayChanged(state);\n markAllIndicesReassigned(state);\n if (insertCount > 0) {\n const startIndex = normalizeSliceIndex(\n args[0] ?? 0,\n state.copy_.length\n );\n handleInsertedValues(state, startIndex, args.slice(2));\n }\n return res;\n }\n } else {\n return handleNonMutatingOperation(state, method, args);\n }\n } finally {\n exitOperation(state);\n }\n };\n }\n function handleNonMutatingOperation(state, method, args) {\n const source = latest(state);\n if (method === \"filter\") {\n const predicate = args[0];\n const result = [];\n for (let i = 0; i < source.length; i++) {\n if (predicate(source[i], i, source)) {\n result.push(state.draft_[i]);\n }\n }\n return result;\n }\n if (FIND_METHODS.has(method)) {\n const predicate = args[0];\n const isForward = method === \"find\";\n const step = isForward ? 1 : -1;\n const start = isForward ? 0 : source.length - 1;\n for (let i = start; i >= 0 && i < source.length; i += step) {\n if (predicate(source[i], i, source)) {\n return state.draft_[i];\n }\n }\n return void 0;\n }\n if (method === \"slice\") {\n const rawStart = args[0] ?? 0;\n const rawEnd = args[1] ?? source.length;\n const start = normalizeSliceIndex(rawStart, source.length);\n const end = normalizeSliceIndex(rawEnd, source.length);\n const result = [];\n for (let i = start; i < end; i++) {\n result.push(state.draft_[i]);\n }\n return result;\n }\n return source[method](...args);\n }\n loadPlugin(PluginArrayMethods, {\n createMethodInterceptor,\n isArrayOperationMethod,\n isMutatingArrayMethod\n });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = /* @__PURE__ */ immer.produceWithPatches.bind(immer);\nvar setAutoFreeze = /* @__PURE__ */ immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = /* @__PURE__ */ immer.setUseStrictShallowCopy.bind(immer);\nvar setUseStrictIteration = /* @__PURE__ */ immer.setUseStrictIteration.bind(immer);\nvar applyPatches = /* @__PURE__ */ immer.applyPatches.bind(immer);\nvar createDraft = /* @__PURE__ */ immer.createDraft.bind(immer);\nvar finishDraft = /* @__PURE__ */ immer.finishDraft.bind(immer);\nvar castDraft = (value) => value;\nvar castImmutable = (value) => value;\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableArrayMethods,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictIteration,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","import { filter } from 'rxjs/operators';\n/**\n * RxJS operator that filters an action stream to only emit actions matching\n * one or more specified action types.\n *\n * @template TAction - The union of possible action types in the stream.\n * @template TType - The specific action type constant(s) to filter for.\n * @param types - One or more action type strings to filter by.\n * @returns An `OperatorFunction` that narrows the stream to matching actions.\n *\n * @example\n * ```ts\n * import { filterAction } from '@equinor/fusion-observable/operators';\n *\n * action$.pipe(\n * filterAction('increment', 'decrement'),\n * ).subscribe((action) => {\n * // action is narrowed to increment | decrement\n * });\n * ```\n */\nexport const filterAction = (...types) => filter((x) => types.includes(x.type));\nexport default filterAction;\n//# sourceMappingURL=filter-action.js.map","import { asyncScheduler, BehaviorSubject, EMPTY, from, Observable, Subject, } from 'rxjs';\nimport { catchError, distinctUntilChanged, filter, map, mergeMap, observeOn, scan, } from 'rxjs/operators';\nimport { filterAction } from './operators/index.js';\n/**\n * A specialized Observable that maintains internal state mutated by dispatching actions.\n *\n * Actions are processed sequentially by a reducer function to produce new state values.\n * Extends `Observable` so subscribers react to state changes over time.\n *\n * Inspired by Redux-style state management but built on top of RxJS, `FlowSubject`\n * combines a `BehaviorSubject` for state with a `Subject` for actions, providing\n * a reactive, observable state container.\n *\n * @template S - The state type managed by this subject.\n * @template A - The action type dispatched to this subject.\n *\n * @example\n * ```ts\n * import { FlowSubject, createReducer } from '@equinor/fusion-observable';\n *\n * type State = { count: number };\n * type Action = { type: 'increment' } | { type: 'decrement' };\n *\n * const reducer = createReducer<State, Action>({ count: 0 }, (builder) =>\n * builder\n * .addCase('increment', (state) => { state.count += 1; })\n * .addCase('decrement', (state) => { state.count -= 1; }),\n * );\n *\n * const subject = new FlowSubject(reducer);\n * subject.subscribe((state) => console.log(state.count));\n * subject.next({ type: 'increment' }); // logs: 1\n * ```\n */\nexport class FlowSubject extends Observable {\n /**\n * The internal subject for actions.\n * @private\n */\n #action = new Subject();\n /**\n * The internal behavior subject for state management.\n * @private\n */\n #state;\n /**\n * Observable stream of actions dispatched to the subject.\n * @returns An observable of dispatched actions.\n */\n get action$() {\n return this.#action.asObservable();\n }\n /**\n * The current value of state.\n * @returns The current state value.\n */\n get value() {\n return this.#state.value;\n }\n /**\n * Flag to indicate if the observable is closed.\n * @returns `true` if both the state and action subjects are closed.\n */\n get closed() {\n return this.#state.closed || this.#action.closed;\n }\n /**\n * Initializes a new instance of the FlowSubject class.\n *\n * @param reducer A reducer with an initial state or a reducer function.\n * @param initialState The initial state of the subject.\n */\n constructor(reducer, initialState) {\n super((subscriber) => {\n return this.#state.subscribe(subscriber);\n });\n const initial = 'getInitialState' in reducer ? reducer.getInitialState() : initialState;\n this.#state = new BehaviorSubject(initial);\n // Reduce dispatched actions into state, skipping emissions that produce an unchanged value\n this.#action.pipe(scan(reducer, initial), distinctUntilChanged()).subscribe(this.#state);\n this.reset = () => this.#state.next(initial);\n }\n /**\n * Resets the state to the initial value.\n */\n reset;\n /**\n * Dispatches an action to the subject.\n *\n * @param action The action to dispatch.\n */\n next(action) {\n this.#action.next(action);\n }\n /**\n * Selects a derived state from the observable state and emits only when the selected state changes.\n *\n * @template T - The derived state type returned by the selector.\n * @param selector - A function that takes the current state and returns a derived state.\n * @param comparator - An optional function that compares the previous and current derived states to determine if a change has occurred.\n * @returns An observable that emits the derived state whenever it changes.\n */\n select(selector, comparator) {\n // Derive and de-duplicate the selected value from the state stream\n return this.#state.pipe(map(selector), distinctUntilChanged(comparator));\n }\n /**\n * Adds an effect that listens for actions and performs side effects.\n *\n * @template TType - The action type(s) to listen for.\n * @param actionTypeOrFn The type of action to listen for, an array of action types, or the effect function itself.\n * @param fn The effect function to execute when the action is dispatched, if the first parameter is an action type.\n * @returns A subscription to the effect.\n */\n addEffect(actionTypeOrFn, fn) {\n // Narrow the action stream to the requested action type(s), or use it as-is when a plain effect function was given\n const action$ = typeof actionTypeOrFn === 'function'\n ? this.action$\n : Array.isArray(actionTypeOrFn)\n ? this.action$.pipe(filterAction(...actionTypeOrFn))\n : this.action$.pipe(filterAction(actionTypeOrFn));\n const mapper = (fn ? fn : actionTypeOrFn);\n // Run the effect for each matching action, then filter and reschedule any resulting action\n return action$\n .pipe(mergeMap((action) => from(new Promise((resolve, reject) => {\n try {\n resolve(mapper(action, this.value));\n }\n catch (err) {\n reject(err);\n }\n }))\n // Swallow effect errors so a single failing effect doesn't tear down the subscription\n .pipe(catchError((err) => {\n console.warn('unhandled effect', err);\n return EMPTY;\n }))), filter((x) => !!x), observeOn(asyncScheduler))\n .subscribe(this.#action);\n }\n /**\n * @deprecated Use {@link FlowSubject.addFlow} instead.\n *\n * @param fn - The flow function to execute.\n * @returns A subscription to the flow.\n */\n addEpic(fn) {\n return this.addFlow(fn);\n }\n /**\n * Adds a flow (epic-style) that transforms the action stream and optionally\n * reads state, then emits new actions back into the subject.\n *\n * Flows receive the full `action$` stream and the state observable, and must\n * return an `Observable<A>`. This is useful for complex async orchestration.\n *\n * @param fn - The flow function that receives `(action$, state$)` and returns an action observable.\n * @returns A subscription to the flow. Unsubscribe to remove the flow.\n * @throws {TypeError} If the flow function does not return an observable.\n *\n * @example\n * ```ts\n * subject.addFlow((action$) =>\n * action$.pipe(\n * filterAction('fetchData'),\n * switchMap((action) =>\n * fetchApi(action.payload).pipe(\n * map((data) => ({ type: 'fetchSuccess', payload: data })),\n * ),\n * ),\n * ),\n * );\n * ```\n */\n addFlow(fn) {\n const epic$ = fn(this.action$, this);\n // Fail fast if the flow function forgot to return an observable\n if (!epic$) {\n throw new TypeError(`addEpic: one of the provided effects \"${fn.name || '<anonymous>'}\" does not return a stream. Double check you're not missing a return statement!`);\n }\n // Log and swallow flow errors so a single failing flow doesn't tear down the subject\n return epic$\n .pipe(catchError((err) => {\n console.trace('unhandled exception, epic closed!', err);\n return EMPTY;\n }), observeOn(asyncScheduler))\n .subscribe(this.#action);\n }\n /**\n * Tears down the subject by unsubscribing both the action and state subjects.\n *\n * After calling this method, the subject is no longer usable.\n */\n unsubscribe() {\n this.#action.unsubscribe();\n this.#state.unsubscribe();\n }\n /**\n * Completes both the action and state subjects, signalling to all\n * subscribers that no further values will be emitted.\n */\n complete() {\n this.#action.complete();\n this.#state.complete();\n }\n /**\n * Returns a plain `Observable` of the state, hiding the subject's\n * `next`, `complete`, and other mutation methods.\n *\n * @returns A read-only observable of the state.\n */\n asObservable() {\n return this.#state.asObservable();\n }\n}\nexport default FlowSubject;\n//# sourceMappingURL=FlowSubject.js.map","/**\n * Internal helper utilities for constructing and inspecting Redux-style\n * lifecycle action types (`::request`, `::success`, `::failure`).\n */\n/**\n * Separates an action's base type from its lifecycle suffix.\n */\nexport const actionSuffixDivider = '::';\n/**\n * Creates a matcher for action types ending with the requested suffix.\n *\n * @param suffix - The action suffix to match.\n * @returns A regular expression that matches the suffix at the end of an action type.\n */\nexport const matchActionSuffix = (suffix) => new RegExp(`${actionSuffixDivider}${suffix}$`);\n/**\n * Extracts the base type from an action type string.\n *\n * @template T - The action type string.\n * @param type - The action type string to extract the base type from.\n * @returns The base type of the action type string, or `never` if the input string does not match the expected format.\n */\nexport function getBaseType(type) {\n return type.replace(matchActionSuffix('\\\\w+$'), '');\n}\n/**\n * Returns the action type of an action creator generated by `createAction`.\n *\n * @template T - The action type string.\n * @param actionCreator - The action creator whose action type to get.\n * @returns The action type used by the action creator.\n */\nexport function getType(actionCreator) {\n return `${actionCreator}`;\n}\n//# sourceMappingURL=utils.js.map","// biome-ignore-all lint/suspicious/noExplicitAny: ported redux-toolkit conditional-type dispatch logic (e.g. IsAny<T, ...>) requires real `any`, not `unknown`, to distinguish the two at the type level\n// biome-ignore-all lint/suspicious/noConfusingVoidType: `void` here is the ported redux-toolkit sentinel meaning \"no payload type provided\", distinct from `undefined` (see IfVoid in ts-helpers.ts) — replacing with `undefined` would change dispatch semantics\n/**\n * taken from https://github.com/reduxjs/redux-toolkit/tree/master/packages/toolkit/src\n */\n/**\n * Creates the runtime action creator implementation shared by the overloads above.\n *\n * @param type - The action type to assign to created actions.\n * @param prepareAction - An optional function that prepares payload, metadata, and errors.\n * @returns A callable action creator with type and matching metadata.\n * @throws {Error} When the prepare callback does not return an action object.\n */\nexport function createAction(type, prepareAction) {\n function actionCreator(...args) {\n // Use the prepare callback when the caller needs custom payload construction.\n if (prepareAction) {\n const prepared = prepareAction(...args);\n // Reject invalid prepare callbacks before reading their action fields.\n if (!prepared) {\n throw new Error('prepareAction did not return an object');\n }\n // Merge optional metadata and error fields into the prepared action.\n return {\n type,\n payload: prepared.payload,\n ...('meta' in prepared && { meta: prepared.meta }),\n ...('error' in prepared && { error: prepared.error }),\n };\n }\n return { type, payload: args[0] };\n }\n actionCreator.toString = () => `${type}`;\n actionCreator.type = type;\n actionCreator.match = (action) => action.type === type;\n return actionCreator;\n}\nexport { actionSuffixDivider, matchActionSuffix, getBaseType, getType } from './utils.js';\n//# sourceMappingURL=create-action.js.map","// biome-ignore-all lint/suspicious/noExplicitAny: generic constraints mirror create-action.ts's ported redux-toolkit PrepareAction<any> dispatch pattern\nimport { actionSuffixDivider, createAction } from './create-action.js';\nimport { isActionWithSuffix, isCompleteAction, isFailureAction, isRequestAction, isSuccessAction, } from './predicates.js';\n/**\n * Creates the runtime async action implementation shared by the overloads above.\n *\n * @param type - The base action type string.\n * @param request - A prepare function for the request action payload.\n * @param success - A prepare function for the success action payload.\n * @param failure - An optional prepare function for the failure action payload.\n * @returns An action creator with request, success, and optional failure actions.\n */\nexport function createAsyncAction(type, request, success, failure) {\n const action = createAction([type, 'request'].join(actionSuffixDivider), request);\n // Attach the success action only when the caller supplied its prepare function.\n if (success) {\n // Add the success action while preserving the request creator's identity.\n Object.assign(action, {\n success: createAction([type, 'success'].join(actionSuffixDivider), success),\n });\n }\n // Attach the failure action only for async workflows that support failure results.\n if (failure) {\n // Add the failure action alongside the existing request and success actions.\n Object.assign(action, {\n failure: createAction([type, 'failure'].join(actionSuffixDivider), failure),\n });\n }\n // `action` is progressively mutated with `success`/`failure` properties above, so its static\n // type can't reflect the final shape declared by this function's overload signatures.\n return action;\n}\nexport { isActionWithSuffix, isCompleteAction, isFailureAction, isRequestAction, isSuccessAction };\n//# sourceMappingURL=create-async-action.js.map","import { produce as createNextState, isDraft, isDraftable } from 'immer';\nfunction freezeDraftable(val) {\n return isDraftable(val) ? createNextState(val, () => { }) : val;\n}\nfunction isStateFunction(x) {\n return typeof x === 'function';\n}\n/** @inheritdoc */\nexport function createReducer(initialState, mapOrBuilderCallback) {\n const [actionsMap, finalActionMatchers, finalDefaultCaseReducer] = executeReducerBuilderCallback(mapOrBuilderCallback);\n // Ensure the initial state gets frozen either way (if draftable)\n let getInitialState;\n // A lazy initializer must be invoked before its result can be frozen\n if (isStateFunction(initialState)) {\n getInitialState = () => freezeDraftable(initialState());\n }\n else {\n const frozenInitialState = freezeDraftable(initialState);\n getInitialState = () => frozenInitialState;\n }\n function reducer(state, action) {\n let caseReducers = [\n actionsMap[action.type],\n ...finalActionMatchers\n // Keep only matchers whose predicate matches this action\n .filter(({ matcher }) => matcher(action))\n // Extract just the matched reducers\n .map(({ reducer }) => reducer),\n ];\n // Fall back to the default case reducer when nothing else matched this action\n // Check whether any slot actually holds a reducer\n const hasMatchedReducer = caseReducers.filter((cr) => !!cr).length > 0;\n // Only substitute the default case when no case/matcher reducer actually matched\n if (finalDefaultCaseReducer && !hasMatchedReducer) {\n caseReducers = [finalDefaultCaseReducer];\n }\n // Run each matched case reducer against the previous state, producing the next state\n return caseReducers.reduce((previousState, caseReducer) => {\n // Only transform state when a case reducer was matched for this slot\n if (caseReducer) {\n // Reuse an existing draft when already inside a `createNextState` call\n if (isDraft(previousState)) {\n // If it's already a draft, we must already be inside a `createNextState` call,\n // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\n // inside an existing draft. It's safe to just pass the draft to the mutator.\n const draft = previousState; // We can assume this is already a draft\n const result = caseReducer(draft, action);\n // Treat an undefined result as \"no change\" rather than clearing the state\n if (result === undefined) {\n return previousState;\n }\n return result;\n }\n else if (!isDraftable(previousState)) {\n // If state is not draftable (ex: a primitive, such as 0), we want to directly\n // return the caseReducer func and not wrap it with produce.\n const result = caseReducer(previousState, action);\n // Treat an undefined result as \"no change\", unless there's no previous state to fall back to\n if (result === undefined) {\n // A `null` previous state has nothing to fall back to, so undefined is legitimately \"no change\"\n if (previousState === null) {\n return previousState;\n }\n throw Error('A case reducer on a non-draftable value must not return undefined');\n }\n return result;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n // createNextState() produces an Immutable<Draft<S>> rather\n // than an Immutable<S>, and TypeScript cannot find out how to reconcile\n // these two types.\n return createNextState(previousState, (draft) => {\n return caseReducer(draft, action);\n });\n }\n }\n return previousState;\n }, state ?? getInitialState());\n }\n reducer.getInitialState = getInitialState;\n return reducer;\n}\n/**\n * Executes a reducer builder callback against a fresh {@link ActionReducerMapBuilder},\n * collecting the case reducers, matchers, and default case it registered.\n *\n * @template TState - The reducer's state type.\n * @template TAction - The union of actions the reducer handles.\n * @param builderCallback - The callback passed to {@link createReducer} that registers cases via the builder.\n * @returns A tuple of the action-to-reducer map, matcher list, and optional default case reducer.\n */\nfunction executeReducerBuilderCallback(builderCallback) {\n const actionsMap = {};\n const actionMatchers = [];\n let defaultCaseReducer;\n const builder = {\n addCase(typeOrActionCreator, reducer) {\n // Skip these dev-only ordering checks in production builds to avoid the extra overhead\n if (process.env.NODE_ENV !== 'production') {\n /*\n * to keep the definition by the user in line with actual behavior,\n * we enforce `addCase` to always be called before calling `addMatcher`\n * as matching cases take precedence over matchers\n */\n if (actionMatchers.length > 0) {\n throw new Error('`builder.addCase` should only be called before calling `builder.addMatcher`');\n }\n // A default case must always be registered last, after every specific case\n if (defaultCaseReducer) {\n throw new Error('`builder.addCase` should only be called before calling `builder.addDefaultCase`');\n }\n }\n const type = typeof typeOrActionCreator === 'string' ? typeOrActionCreator : typeOrActionCreator.type;\n // Each action type may only be handled by a single case reducer\n if (type in actionsMap) {\n throw new Error('addCase cannot be called with two reducers for the same action type');\n }\n actionsMap[type] = reducer;\n return builder;\n },\n addMatcher(matcher, reducer) {\n // Skip this dev-only ordering check in production builds to avoid the extra overhead\n if (process.env.NODE_ENV !== 'production') {\n // A default case must always be registered last, after every matcher\n if (defaultCaseReducer) {\n throw new Error('`builder.addMatcher` should only be called before calling `builder.addDefaultCase`');\n }\n }\n actionMatchers.push({ matcher, reducer });\n return builder;\n },\n addDefaultCase(reducer) {\n // Skip this dev-only uniqueness check in production builds to avoid the extra overhead\n if (process.env.NODE_ENV !== 'production') {\n // Only one default case reducer may be registered per builder\n if (defaultCaseReducer) {\n throw new Error('`builder.addDefaultCase` can only be called once');\n }\n }\n defaultCaseReducer = reducer;\n return builder;\n },\n };\n builderCallback(builder);\n return [\n actionsMap,\n actionMatchers,\n defaultCaseReducer,\n ];\n}\n//# sourceMappingURL=create-reducer.js.map","import { isObservable } from 'rxjs';\n/** @inheritdoc */\nexport function isObservableInput(\n// biome-ignore lint/suspicious/noExplicitAny: Should allow any input type\ninput) {\n // Check for null or undefined\n if (input === null || input === undefined) {\n return false;\n }\n // Check for primitive string values (not ObservableInput)\n if (typeof input === 'string') {\n return false;\n }\n // Check if input is an RxJS Observable\n if (isObservable(input)) {\n return true;\n }\n // Check for InteropObservable (has Symbol.observable)\n if (typeof input[Symbol.observable] === 'function') {\n return true; // InteropObservable<T>\n }\n // Check for AsyncIterable (has Symbol.asyncIterator)\n if (typeof input[Symbol.asyncIterator] === 'function') {\n return true; // AsyncIterable<T>\n }\n // Check for PromiseLike (has then function)\n if (typeof input.then === 'function') {\n return true; // PromiseLike<T>\n }\n // Check for ArrayLike (object with length property)\n if (typeof input === 'object' && typeof input.length === 'number') {\n return true; // ArrayLike<T>\n }\n // Check for Iterable (has Symbol.iterator)\n if (typeof input[Symbol.iterator] === 'function') {\n return true; // Iterable<T>\n }\n // Check for ReadableStreamLike (has getReader function)\n if (typeof input.getReader === 'function') {\n return true; // ReadableStreamLike<T>\n }\n return false;\n}\n//# sourceMappingURL=is-observable-input.js.map","import { from, of } from 'rxjs';\nimport { isObservableInput } from './is-observable-input.js';\n/**\n * Converts a dynamic input (value, function, or ObservableInput) to an RxJS Observable.\n *\n * Handles the following cases:\n * - If the input is an ObservableInput (Observable, Promise, Iterable, etc), it is converted using `from()`.\n * - If the input is a function, it is called with the provided arguments and the result is wrapped with `of()`.\n * - If the input is a plain object or primitive, it is wrapped with `of()`.\n *\n * @template T The value type to be emitted by the Observable.\n * @template TArgs The argument type(s) for the function variant.\n * @param input The dynamic input value to convert. Can be a value, function, or ObservableInput.\n * @param args Arguments to pass if the input is a function.\n * @returns An Observable emitting the value(s) from the input.\n * @throws If the input is not a supported type.\n *\n * @example\n * // ObservableInput\n * toObservable([1, 2, 3]).subscribe(x => console.log(x)); // 1, 2, 3\n * toObservable(Promise.resolve(42)).subscribe(x => console.log(x)); // 42\n *\n * // Object\n * toObservable({ key: 'value' }).subscribe(x => console.log(x)); // { key: 'value' }\n *\n * // Function\n * const fn = (x: number) => x * 2;\n * toObservable(fn, 5).subscribe(x => console.log(x)); // 10\n *\n * // Primitive\n * toObservable(42).subscribe(x => console.log(x)); // 42\n */\nexport function toObservable(input, ...args) {\n // If input is already an ObservableInput (Observable, Promise, Iterable, etc), use RxJS 'from' to convert it\n if (isObservableInput(input)) {\n return from(input);\n }\n // If input is a function, call it with the provided arguments and wrap the result with 'of'\n if (typeof input === 'function') {\n const fn = input;\n const result = fn(...args);\n return isObservableInput(result) ? from(result) : of(result);\n }\n // Otherwise, treat input as a plain value or object and wrap it with 'of'\n return of(input);\n}\n//# sourceMappingURL=to-observable.js.map","import deepmerge from 'deepmerge/index.js';\n/**\n * Merges two `MetaData` objects into a single object.\n *\n * If both `source` and `target` are undefined, returns `undefined`.\n * Otherwise, performs a deep merge of the two objects, with properties from `target` overriding those in `source`.\n *\n * @param source - The base `MetaData` object to merge from.\n * @param target - The `MetaData` object whose properties will override those in `source`.\n * @returns The merged `MetaData` object, or `undefined` if both inputs are undefined.\n */\nexport const mergeMetadata = (source, target) => {\n // Nothing to merge when neither side has metadata\n if (!source && !target) {\n return undefined;\n }\n return deepmerge(source ?? {}, target ?? {});\n};\n/**\n * Merges two partial `TelemetryItem` objects into a single `TelemetryItem`.\n *\n * @remarks\n * - Throws an error if either `target` or `source` is not defined.\n * - Throws an error if both `target.type` and `source.type` are defined and do not match.\n * - Combines the `scope` arrays from both objects, removing duplicates.\n * - Merges the `metadata` properties using the `mergeMetadata` function.\n * - Properties from `source` override those in `target` where applicable.\n *\n * @param target - The base partial `TelemetryItem` to merge into.\n * @param source - The partial `TelemetryItem` whose properties will override those in `target`.\n * @returns The merged `TelemetryItem`.\n * @throws {Error} If either argument is undefined or if telemetry item types mismatch.\n *\n * @internal\n */\n// Deliberately co-located with `mergeMetadata` above\n// fusion-lint-disable-next-line single-export-per-file\nexport const mergeTelemetryItem = (target, source) => {\n // Both arguments are required to produce a valid merged telemetry item\n if (!target || !source) {\n throw new Error('Both target and source must be defined for merging telemetry items.');\n }\n // A type mismatch would produce an inconsistent telemetry item, so fail fast\n if (target.type && source.type && target.type !== source.type) {\n throw new Error('Mismatched telemetry item types.');\n }\n // Combine both scopes and de-duplicate via a Set before flattening back to an array\n const scope = [...new Set([...(target.scope ?? []), ...(source.scope ?? [])])];\n const metadata = mergeMetadata(target.metadata, source.metadata);\n // Source properties take precedence over target, with scope/metadata merged separately above\n return { ...target, ...source, scope, metadata };\n};\n//# sourceMappingURL=merge-telemetry-item.js.map","import { from } from 'rxjs';\nimport { concatMap, defaultIfEmpty, filter, last, map, mergeMap, scan, shareReplay, } from 'rxjs/operators';\nimport { BaseConfigBuilder, } from '@equinor/fusion-framework-module';\nimport { toObservable } from '@equinor/fusion-observable';\nimport { mergeMetadata } from './utils/merge-telemetry-item.js';\n/**\n * Configures telemetry settings for the application.\n *\n * The `TelemetryConfigurator` class extends `BaseConfigBuilder` to provide a fluent API for\n * setting up telemetry adapters, metadata, default scopes, and parent providers.\n *\n * @example\n * ```typescript\n * const configurator = new TelemetryConfigurator()\n * .setAdapter(myAdapter)\n * .setMetadata({ app: 'my-app' })\n * .setDefaultScope(['user', 'session'])\n * .setParent(parentProvider);\n * ```\n *\n * @remarks\n * - Adapters are managed internally and can be set using `setAdapter`.\n * - Metadata, default scope, and parent provider can be configured via their respective methods.\n * - Filters should be applied directly to individual adapters when they are created.\n * - All setter methods return `this` for method chaining.\n *\n * @see BaseConfigBuilder\n * @see ITelemetryConfigurator\n */\nexport class TelemetryConfigurator extends BaseConfigBuilder {\n #adaptersCallbacks = {};\n #metadata = [];\n /**\n * Creates a new `TelemetryConfigurator` and wires up the async adapter\n * resolution and metadata merging pipelines used by `createConfigAsync`.\n */\n constructor() {\n super();\n // Configure async adapter resolution using mergeMap to handle Promise/Observable adapter factories\n this._set('adapters', (args) => {\n // Resolve every adapter factory concurrently and merge them into a single record\n return from(Object.entries(this.#adaptersCallbacks)).pipe(mergeMap(([identifier, adapterFn]) => \n // Drop adapters whose factory resolved to a falsy value\n from(adapterFn(args)).pipe(filter((adapter) => !!adapter), map((adapter) => [identifier, adapter]))), scan((acc, [identifier, adapter]) => {\n acc[identifier] = adapter;\n return acc;\n }, {}), defaultIfEmpty({}), shareReplay({ bufferSize: 1, refCount: true }));\n });\n // Configure metadata merging - handles multiple sync/async metadata sources\n this._set('metadata', async () => {\n const metadataItems = this.#metadata;\n return (...args) => \n // Merge every registered metadata source in order, emitting the final accumulated result\n from(metadataItems).pipe(concatMap((metadata) => toObservable(metadata, ...args)), scan((acc, current) => mergeMetadata(acc, current) ?? {}, {}), last(), shareReplay({ bufferSize: 1, refCount: true }));\n });\n }\n /**\n * Registers a telemetry adapter with the configurator.\n *\n * @param identifier - The key used to register and later resolve this adapter.\n * @param adapter - The telemetry adapter to be added. The adapter's identifier is used as the key.\n * @returns The current instance of the configurator for method chaining.\n */\n setAdapter(identifier, adapter) {\n return this.configureAdapter(identifier, async () => adapter);\n }\n /**\n * Configures a telemetry adapter with the configurator.\n *\n * @param identifier - The key used to register and later resolve this adapter.\n * @param adapterFn - A callback function that returns a telemetry adapter instance\n * @returns The current instance for method chaining\n */\n configureAdapter(identifier, adapterFn) {\n this.#adaptersCallbacks[identifier] = adapterFn;\n return this;\n }\n /**\n * Sets the metadata configuration for telemetry.\n *\n * @remarks\n * All setting will accumulate, and the metadata will be merged.\n *\n * @param metadata - The metadata object or a callback function that receives and returns the metadata configuration.\n * @returns The current instance for method chaining.\n */\n setMetadata(metadata) {\n this.#metadata.push(metadata);\n return this;\n }\n /**\n * Sets the default scope for telemetry operations.\n *\n * @param scope - An array of strings representing the default scope to be used.\n * @returns The current instance for method chaining.\n */\n setDefaultScope(scope) {\n this._set('defaultScope', scope);\n return this;\n }\n /**\n * Sets the parent telemetry provider for this configurator.\n *\n * @param parent - The parent telemetry provider to associate, or `undefined` to remove the parent.\n * @returns The current instance for method chaining.\n */\n setParent(parent) {\n this._set('parent', parent);\n return this;\n }\n /**\n * Attaches an observable stream of telemetry items to the configurator.\n *\n * @param item$ - An observable input stream of telemetry items to be processed.\n * @returns The current instance for method chaining.\n */\n attachItems(item$) {\n this._set('items$', item$);\n return this;\n }\n /**\n * Sets the filter configuration for telemetry items.\n *\n * The filter determines which telemetry items should be passed to adapters and/or relayed to parent providers.\n *\n * @param filter - Either a filter object with `adapter` and `relay` functions, or a callback that returns such a filter object.\n * @returns The current instance for method chaining.\n */\n setFilter(filter) {\n this._set('filter', filter);\n return this;\n }\n}\n//# sourceMappingURL=TelemetryConfigurator.js.map","// Generated by genversion.\nexport const version = '7.1.0';\n//# sourceMappingURL=version.js.map","/**\n * Represents a framework event with customizable details and behavior.\n *\n * The `FrameworkEvent` class implements the `IFrameworkEvent` interface and provides a way to create and manage events\n * with custom details and behavior. It allows you to:\n *\n * - Specify the event type and initial event details\n * - Access the event details\n * - Check if the event is cancelable and whether it has been canceled\n * - Control whether the event can bubble up the event hierarchy\n *\n * The `FrameworkEvent` class is designed to be used as a base class for creating custom event types that fit the needs\n * of your application or framework.\n *\n * @template TInit The type of the event details.\n * @template TType The type of the event type.\n */\nexport class FrameworkEvent {\n __type;\n #detail;\n #source;\n #canceled = false;\n #cancelable;\n #canBubble;\n #created = Date.now();\n /**\n * Creates a new framework event.\n *\n * @param __type - The event name used for listener matching.\n * @param args - Initialization options including detail payload, source, and flags.\n */\n constructor(__type, args) {\n this.__type = __type;\n this.#detail = args.detail;\n this.#source = args.source;\n this.#cancelable = !!args.cancelable;\n this.#canBubble = args.canBubble === undefined ? true : args.canBubble;\n }\n /**\n * Indicates whether the event can bubble up the event hierarchy.\n * The event will only bubble if this property is `true` and the event has not been canceled.\n * @returns {boolean} `true` if the event can bubble, `false` otherwise.\n */\n get bubbles() {\n return this.#canBubble && !this.#canceled;\n }\n /**\n * Gets the timestamp when the `FrameworkEvent` was created.\n * @returns {number} The timestamp of when the `FrameworkEvent` was created.\n */\n get created() {\n return this.#created;\n }\n /**\n * Indicates whether the event is cancelable.\n * If the event is cancelable, it can be prevented from occurring by calling the `preventDefault()` method.\n * @returns {boolean} `true` if the event is cancelable, `false` otherwise.\n */\n get cancelable() {\n return this.#cancelable;\n }\n /**\n * Indicates whether the event has been canceled.\n * If the event is cancelable and `preventDefault()` has been called, this property will be `true`.\n * @returns {boolean} `true` if the event has been canceled, `false` otherwise.\n */\n get canceled() {\n return this.#canceled;\n }\n /**\n * Gets the current event details.\n * @returns {FrameworkEventInitDetail<TInit>} The current event details.\n */\n get detail() {\n return this.#detail;\n }\n /**\n * Gets the source object that triggered the event.\n * @returns {FrameworkEventInitSource<TInit> | undefined} The source object that triggered the event, or `undefined` if the source is not available.\n */\n get source() {\n return this.#source;\n }\n /**\n * Gets the type of the `FrameworkEvent`.\n * @returns {TType} The type of the `FrameworkEvent`.\n */\n get type() {\n return this.__type;\n }\n /**\n * Prevents the default action of the event from occurring, if the event is cancelable.\n * If the event is cancelable, this method sets the `canceled` property to `true`.\n */\n preventDefault() {\n // Only cancelable events can be canceled\n if (this.cancelable) {\n this.#canceled = true;\n }\n }\n /**\n * Prevents the event from bubbling up the DOM tree, effectively stopping its propagation.\n * This method sets the `#canBubble` property to `false`, which indicates that the event should not be propagated further.\n */\n stopPropagation() {\n this.#canBubble = false;\n }\n}\n//# sourceMappingURL=FrameworkEvent.js.map","import { FrameworkEvent } from '@equinor/fusion-framework-module-event';\n/**\n * Event representing an error that occurred within a telemetry provider.\n *\n * @remarks\n * This event is emitted when an error is encountered by an {@link ITelemetryProvider}.\n * It encapsulates the error details and the source provider.\n *\n * @example\n * ```typescript\n * const errorEvent = new TelemetryErrorEvent(new Error('Something went wrong'), telemetryProvider);\n * ```\n *\n * @extends FrameworkEvent\n */\nexport class TelemetryErrorEvent extends FrameworkEvent {\n /**\n * Creates a new `TelemetryErrorEvent`.\n *\n * @param error - The error instance that was thrown.\n * @param source - The telemetry provider where the error originated.\n */\n constructor(error, source) {\n super('onTelemetryError', { detail: { error }, source });\n }\n}\n//# sourceMappingURL=TelemetryErrorEvent.js.map","import { FrameworkEvent } from '@equinor/fusion-framework-module-event';\n/**\n * Represents a telemetry event within the framework.\n *\n * This event encapsulates a `TelemetryItem` and is associated with a specific `ITelemetryProvider` source.\n * It extends the `FrameworkEvent` class, providing a standardized way to emit and handle telemetry-related events.\n *\n * @example\n * ```typescript\n * const event = new TelemetryEvent(item, provider);\n * ```\n *\n * @param item - The telemetry item containing event data.\n * @param source - The telemetry provider that is the source of this event.\n */\nexport class TelemetryEvent extends FrameworkEvent {\n /**\n * Creates a new `TelemetryEvent`.\n *\n * @param item - The telemetry item containing event data.\n * @param source - The telemetry provider that is the source of this event.\n */\n constructor(item, source) {\n super('onTelemetry', { detail: { item }, source });\n }\n}\n// Re-exported from its own file to satisfy single-export-per-file while\n// preserving this file's existing public export surface.\nexport { TelemetryErrorEvent } from './TelemetryErrorEvent.js';\n//# sourceMappingURL=TelemetryEvent.js.map","import { mergeTelemetryItem } from './utils/merge-telemetry-item.js';\n/**\n * Represents a telemetry measurement that tracks elapsed time and reports measurement data\n * to a telemetry provider. Supports cloning, resetting, and marking measurements as completed.\n *\n * @remarks\n * - The measurement starts timing upon instantiation.\n * - Provides methods to measure elapsed time, reset the timer, clone the measurement, and\n * automatically measure on disposal if not already measured.\n * - Can be used to wrap asynchronous operations and automatically record their duration.\n *\n * @example\n * ```typescript\n * const measurement = new Measurement(provider, { name: 'operation' });\n * // ... perform operation ...\n * measurement.measure();\n * ```\n *\n * @public\n */\nexport class Measurement {\n #provider;\n #data;\n #startTime;\n #measured;\n /**\n * Initializes a new instance of the Measurement class.\n *\n * @param provider - The telemetry provider responsible for handling telemetry data.\n * @param data - The measurement data to be associated with this instance.\n */\n constructor(provider, data) {\n this.#data = data;\n this.#provider = provider;\n this.#startTime = performance.now();\n }\n /**\n * Creates a new `Measurement` instance that is a copy of the current one.\n *\n * @param resetOptions - Options to control which properties are preserved in the clone.\n * - `preserveStartTime`: If `true`, the start time of the measurement is preserved in the clone.\n * @returns A new `Measurement` instance with copied data and optionally preserved start time.\n */\n clone(resetOptions = {}) {\n const clonedMeasurement = new Measurement(this.#provider, this.#data);\n // Preserve the original start time when requested, otherwise the clone starts fresh\n if (resetOptions.preserveStartTime) {\n clonedMeasurement.#startTime = this.#startTime;\n }\n return clonedMeasurement;\n }\n /**\n * Resets the measurement state.\n *\n * @param options - Optional settings for the reset operation.\n * @param options.preserveStartTime - If true, the start time will not be reset; otherwise, it will be set to the current time.\n *\n * Resets the measured flag and, unless `preserveStartTime` is true, updates the start time to the current performance time.\n */\n reset(options) {\n // Keep the existing start time when preserving, otherwise restart the clock\n if (!options?.preserveStartTime) {\n this.#startTime = performance.now();\n }\n this.#measured = false;\n }\n /**\n * Measures the elapsed time since the last start time and sends the measurement data\n * to the telemetry provider. Optionally marks the measurement as completed and/or\n * resets the start time for subsequent measurements.\n *\n * @param data - Optional additional measurement data to merge with the existing data.\n * @param options - Optional measurement options.\n * @param options.markAsMeasured - If true, marks this measurement as completed.\n * @param options.resetStartTime - If true, resets the start time after measuring.\n * @returns The elapsed duration in milliseconds since the last start time.\n */\n measure(data, options) {\n const measuredData = mergeTelemetryItem(this.#data, data ?? {});\n const duration = performance.now() - this.#startTime;\n this.#provider.trackMetric({\n ...measuredData,\n value: duration,\n });\n // Mark as measured only when explicitly requested by the caller\n if (options?.markAsMeasured) {\n this.#measured = true;\n }\n // Restart the clock only when explicitly requested by the caller\n if (options?.resetStartTime) {\n this.#startTime = performance.now();\n }\n return duration;\n }\n /**\n * Resolves a given promise, measures the result using the provided options, and returns the resolved value.\n *\n * @template T - The type of the resolved value from the promise.\n * @param promise - The promise to resolve.\n * @param options - Optional configuration for resolving and measuring:\n * - `data`: A value or a function that receives the resolved result and returns measurement data.\n * - `options`: Additional options to pass to the `measure` method.\n * @returns A promise that resolves to the value of the input promise.\n */\n async resolve(promise, options) {\n const result = await promise;\n const endData = typeof options?.data === 'function' ? options?.data(result) : options?.data;\n this.measure(await Promise.resolve(endData), options?.options);\n return result;\n }\n /**\n * Executes the provided function and resolves its result using the `resolve` method.\n * The function `fn` can return either a value of type `T` or a Promise of type `T`.\n * Optionally, resolution options can be provided.\n *\n * @template T - The return type of the function to execute.\n * @param fn - A function that returns a value or a Promise to be resolved.\n * @param options - Optional resolution options to customize the resolve behavior.\n * @returns A Promise that resolves to the result of the executed function.\n */\n exec(fn, options) {\n return this.resolve(Promise.resolve(fn()), options);\n }\n /**\n * Disposes of the measurement instance. If the measurement has not yet been taken,\n * this method ensures that it is performed before disposal.\n *\n * This method is intended to be used with the ECMAScript `Symbol.dispose` protocol,\n * allowing for automatic resource management when used in a `using` statement.\n *\n * @see https://github.com/tc39/proposal-explicit-resource-management\n */\n [Symbol.dispose]() {\n // Ensure a measurement is always taken before the instance is discarded\n if (!this.#measured) {\n try {\n this.measure();\n }\n catch {\n // Silently handle errors during disposal to ensure cleanup always completes\n // The measurement failure should not prevent proper resource disposal\n }\n }\n }\n}\n//# sourceMappingURL=Measurement.js.map","import { toObservable } from '@equinor/fusion-observable';\nimport { TelemetryType, TelemetryItemNames } from '../static.js';\nimport { merge, of } from 'rxjs';\nimport { catchError, defaultIfEmpty, first, map } from 'rxjs/operators';\nimport { mergeTelemetryItem } from './merge-telemetry-item.js';\nimport { TelemetryExceptionSchema } from '../schemas.js';\n/**\n * Resolves metadata from a {@link MetadataExtractor} into an observable stream.\n *\n * Converts the extractor (which may be a static value, promise, function, or observable)\n * into a normalised `Observable` that emits the resolved metadata record.\n *\n * @param metadata - The metadata extractor to resolve.\n * @param args - Context passed to the extractor, including the telemetry item and optional module instances.\n * @returns An `Observable` emitting the resolved metadata record.\n */\nexport const resolveMetadata = (metadata, args) => {\n return toObservable(metadata, args);\n};\n/**\n * Applies metadata to a telemetry item by resolving metadata asynchronously.\n *\n * This function takes a metadata extractor and its arguments, resolves the metadata,\n * and merges it into the provided telemetry item. If an error occurs during metadata resolution,\n * it emits both an error telemetry item and the original item.\n *\n * @remarks\n * - When resolving metadata, it will only take the first emitted value!.\n * - The metadata extractor can be a function or an object that implements the `DynamicInputValue` interface.\n * - The `args` parameter must include the telemetry item from which metadata is extracted.\n * - The function returns an Observable that emits the telemetry item with applied metadata or an error telemetry item if resolution fails.\n *\n * @param metadata - The metadata extractor function or object used to resolve metadata.\n * @param args - The arguments required by the metadata extractor, including the telemetry item.\n * @returns An Observable emitting the telemetry item with applied metadata, or an error telemetry item if resolution fails.\n */\n// Deliberately co-located with `resolveMetadata` above\n// fusion-lint-disable-next-line single-export-per-file\nexport const applyMetadata = (metadata, args) => {\n // Resolve metadata, merge it into the item, and fall back to an error item on failure\n return resolveMetadata(metadata, args).pipe(defaultIfEmpty({}), // Ensure we always have an object to merge with\n first(), // Take the first emitted value from the metadata extractor\n // Merge the resolved metadata with the telemetry item.\n // resolved metadata is always target, else item metadata would be overwritten\n map((data) => mergeTelemetryItem({ metadata: data }, args.item)), catchError((error) => {\n const errorItem = TelemetryExceptionSchema.parse({\n type: TelemetryType.Exception,\n name: TelemetryItemNames.MetadataError,\n exception: error,\n properties: {\n sourceMetricName: args.item.name,\n sourceMetricType: args.item.type,\n },\n });\n return merge(of(errorItem), of(args.item));\n }));\n};\n//# sourceMappingURL=resolve-metadata.js.map","import { from, Subject } from 'rxjs';\nimport { BaseModuleProvider } from '@equinor/fusion-framework-module/provider';\nimport { version } from './version.js';\nimport { TelemetryType, TelemetryItemNames } from './static.js';\nimport { TelemetryExceptionSchema, TelemetryCustomEventSchema, TelemetryEventSchema, TelemetryMetricSchema, } from './schemas.js';\nimport { TelemetryErrorEvent, TelemetryEvent } from './TelemetryEvent.js';\nimport { Measurement } from './Measurement.js';\nimport { mergeTelemetryItem } from './utils/merge-telemetry-item.js';\nimport { applyMetadata } from './utils/resolve-metadata.js';\n/**\n * Provides telemetry tracking, event dispatching, and adapter integration for application instrumentation.\n *\n * The `TelemetryProvider` class is responsible for collecting, processing, and relaying telemetry data such as events,\n * exceptions, metrics, and custom events. It supports adapter-based processing, event provider integration, and\n * hierarchical telemetry relaying to parent providers. Telemetry items are validated and dispatched to registered\n * adapters and event providers, with robust error handling and metadata merging.\n *\n * @remarks\n * - Integrates with adapters for extensible telemetry processing.\n * - Supports event provider for dispatching telemetry as events.\n * - Allows relaying telemetry data to a parent provider, merging metadata as needed.\n * - Provides utility methods for tracking and measuring telemetry items.\n * - Handles error reporting via telemetry error events.\n *\n * @example\n * ```typescript\n * const provider = new TelemetryProvider(config, { event: eventProvider });\n * provider.track({ type: TelemetryType.Event, name: 'user_login', metadata: { userId: '123' } });\n * const end = provider.measure({ name: 'load_time' });\n * // ... do work ...\n * end();\n * ```\n *\n * @typeParam TelemetryConfig - The configuration type for telemetry.\n * @implements ITelemetryProvider\n * @extends BaseModuleProvider<TelemetryConfig>\n */\nexport class TelemetryProvider extends BaseModuleProvider {\n #items = new Subject();\n #initialized = false;\n #adapters = {};\n #filters;\n #defaultScope;\n #eventProvider;\n /**\n * Stream of every telemetry item tracked by this provider.\n *\n * @returns An observable emitting each tracked `TelemetryItem`.\n */\n get items() {\n return this.#items.asObservable();\n }\n /**\n * Returns true if the provider has been initialized.\n *\n * @returns `true` when {@link initialize} has completed, otherwise `false`.\n */\n get initialized() {\n return this.#initialized;\n }\n #metadata;\n #modules;\n /**\n * Sets the resolved framework module instances used to resolve metadata.\n *\n * @param value - The resolved framework module instances.\n */\n set modules(value) {\n this.#modules = value;\n }\n /**\n * Creates a new `TelemetryProvider`.\n *\n * @param config - Resolved telemetry configuration (adapters, metadata, scope, filters).\n * @param deps - Optional dependencies; supply an event module provider to dispatch\n * telemetry items as events.\n */\n constructor(config, deps) {\n super({ version, config });\n this.#adapters = config?.adapters ?? {};\n this.#metadata = config?.metadata;\n this.#defaultScope = config?.defaultScope ?? [];\n this.#eventProvider = deps?.event;\n this.#filters = config?.filter;\n }\n /**\n * Initializes the telemetry provider with adapters, parent provider, and optional initial items.\n *\n * This method sets up the provider for operation by:\n * 1. Storing the provided adapters\n * 2. Initializing all adapters that support async initialization (failures are logged but don't prevent initialization)\n * 3. Setting up subscriptions for telemetry processing\n * 4. Handling initial telemetry items if provided\n *\n * @param args - Initialization arguments\n * @param args.adapters - Array of telemetry adapters to use\n * @param args.parent - Optional parent telemetry provider for relaying data\n * @param args.initialItems - Optional observable of initial telemetry items to process\n * @returns A promise that resolves when initialization is complete\n */\n async initialize(args) {\n const { parent, initialItems } = args ?? {};\n // Mark as initialized early to allow adapter connections\n this.#initialized = true;\n // Initialize all adapters that support async initialization\n await this._initializeAdapters();\n // Connect adapters to the telemetry items, processing each item as it is emitted\n this._addTeardown(this._connectAdapters());\n // If a parent telemetry provider is provided, relay telemetry data to it\n if (parent) {\n this._addTeardown(this._relayTelemetryData(parent));\n }\n // Emit telemetry items as events if an event provider is available\n this._addTeardown(this.#items.subscribe(this._dispatchEntityEvent.bind(this)));\n // Handle initial telemetry items if provided\n if (initialItems) {\n this._addTeardown(from(initialItems).subscribe((item) => {\n this.track(item);\n }));\n }\n // Ensure the subject is completed when the provider is destroyed\n this._addTeardown(() => {\n this.#items.complete();\n });\n }\n /**\n * Initializes all telemetry adapters that support async initialization.\n * Uses Promise.allSettled to ensure all adapters attempt initialization,\n * with individual error reporting for any failures.\n * Subclasses can override this method to customize adapter initialization behavior.\n *\n * @protected\n */\n async _initializeAdapters() {\n // Initialize all adapters, do it in parallel\n const adapterEntries = Object.entries(this.#adapters);\n // Kick off every adapter's initialize() concurrently\n const initializationPromises = adapterEntries.map(([_identifier, adapter]) => adapter.initialize());\n // Wait for all adapters to settle (either resolve or reject)\n const results = await Promise.allSettled(initializationPromises);\n // Check each result and dispatch errors for failed initializations\n for (const [index, result] of results.entries()) {\n // Only rejected adapters need an error dispatched; fulfilled ones need no action\n if (result.status === 'rejected') {\n const [identifier] = adapterEntries[index];\n this._dispatchError(new Error(`Failed to initialize telemetry adapter \"${identifier}\"`, {\n cause: result.reason,\n }));\n }\n }\n }\n /**\n * Subscribes all adapters to the telemetry item stream.\n * Each adapter processes every telemetry item as it is emitted.\n * If an adapter filter is configured, only items that pass the filter will be sent to adapters.\n * If an adapter throws, the error is dispatched as a telemetry error event.\n *\n * @returns Subscription to the telemetry item stream\n * @protected\n * @throws {Error} When the provider has not been initialized yet.\n */\n _connectAdapters() {\n // Adapters can only be connected after the provider has completed initialization\n if (!this.#initialized) {\n throw new Error('TelemetryProvider is not initialized');\n }\n return this.#items.subscribe((item) => {\n const { adapter: adapterFilter } = this.#filters ?? {};\n // Apply adapter filter if configured - skip item if filter returns false\n if (adapterFilter && !adapterFilter(item)) {\n return;\n }\n // Iterate through all registered adapters\n for (const [identifier, adapter] of Object.entries(this.#adapters)) {\n try {\n // Let the adapter process the telemetry item\n Promise.resolve(adapter.processItem(item));\n }\n catch (error) {\n // If processing fails, dispatch an error event\n this._dispatchError(new Error(`Failed to process telemetry item with adapter \"${identifier}\"`, {\n cause: error,\n }));\n }\n }\n });\n }\n /**\n * Relays telemetry data items to a target telemetry provider.\n *\n * Subscribes to the internal telemetry item stream and forwards each processed item\n * to the specified target provider by invoking its `track` method.\n * If a relay filter is configured, only items that pass the filter will be relayed.\n *\n * @param target - The telemetry provider to which telemetry data should be relayed.\n * @returns A Subscription object that can be used to unsubscribe from the relay.\n */\n _relayTelemetryData(target) {\n // Subscribe to the processed stream and forward each item to the parent provider\n return this.#items.subscribe((item) => {\n const { relay: relayFilter } = this.#filters ?? {};\n // Apply relay filter if configured - skip item if filter returns false\n if (relayFilter && !relayFilter(item)) {\n return;\n }\n target.track(item);\n });\n }\n /**\n * Dispatches a telemetry event to the event provider, if available.\n *\n * @param item - The telemetry item to dispatch as an event\n * @protected\n */\n _dispatchEntityEvent(item) {\n // Only dispatch when an event provider is configured\n if (this.#eventProvider) {\n // Wrap the telemetry item in a TelemetryEvent and dispatch it\n this.#eventProvider.dispatchEvent(new TelemetryEvent(item, this));\n }\n }\n /**\n * Dispatches a telemetry error event using the internal event provider, if available.\n *\n * @param error - The error instance to be dispatched with the telemetry error event.\n * @protected\n */\n _dispatchError(error) {\n // Only dispatch when an event provider is configured\n if (this.#eventProvider) {\n this.#eventProvider.dispatchEvent(new TelemetryErrorEvent(error, this));\n }\n }\n /**\n * Tracks a telemetry item by type, merging the default scope with the provided scope.\n * Dispatches the item to the appropriate handler based on its type.\n *\n * @param item - The telemetry item to track\n * @example\n * provider.track({\n * type: TelemetryType.Event,\n * name: 'user_login',\n * metadata: { userId: '123' }\n * });\n */\n track(item) {\n // Dispatch to the type-specific tracker so each item is validated with the right schema\n switch (item.type) {\n case TelemetryType.Event:\n this.trackEvent(item);\n break;\n case TelemetryType.Exception:\n this.trackException(item);\n break;\n case TelemetryType.Metric:\n this.trackMetric(item);\n break;\n case TelemetryType.Custom:\n this.trackCustom(item);\n break;\n }\n }\n /**\n * Tracks a telemetry item by merging the default scope with the item's scope (if provided),\n * ensuring that all telemetry items have the correct scope context. The merged item is then\n * emitted to downstream handlers.\n *\n * @param item - The telemetry item to be tracked, conforming to the input schema of `TelemetryItemSchema`.\n *\n * @protected\n */\n async _track(item) {\n const mergedItem = mergeTelemetryItem(item, {\n scope: this.#defaultScope,\n });\n // Skip metadata application for TelemetryMetadataError items to prevent infinite recursion\n if (this.#metadata && mergedItem.name !== TelemetryItemNames.MetadataError) {\n applyMetadata(this.#metadata, {\n modules: this.#modules,\n item: mergedItem,\n }).subscribe((nextItem) => {\n // Emit the item after applying metadata\n this.#items.next(nextItem);\n });\n }\n else {\n // If no metadata extractor is provided or item is TelemetryMetadataError, emit directly\n this.#items.next(mergedItem);\n }\n }\n /**\n * Starts a metric measurement and returns a function to end the measurement.\n * When the returned function is called, it will end the metric and optionally merge additional data.\n *\n * @param data - The initial metric data (without type)\n * @returns A function to end the metric, optionally with additional data\n * @example\n * const end = provider.measure({ name: 'load_time', metadata: { page: 'home' } });\n * // ... code to measure ...\n * end();\n * // or with additional data:\n * end({ metadata: { user: 'abc' } });\n */\n measure(data) {\n return new Measurement(this, data);\n }\n /**\n * Tracks a telemetry event.\n *\n * @param data - The event data (without type)\n * @example\n * provider.trackEvent({ name: 'button_click', metadata: { button: 'save' } });\n */\n trackEvent(data) {\n this._track(TelemetryEventSchema.parse({ ...data, type: TelemetryType.Event }));\n }\n /**\n * Tracks a telemetry exception.\n *\n * @param data - The exception data (without type)\n * @example\n * provider.trackException({\n * name: 'api_error',\n * exception: new Error('API failed'),\n * metadata: { code: 500 }\n * });\n */\n trackException(data) {\n this._track(TelemetryExceptionSchema.parse({ ...data, type: TelemetryType.Exception }));\n }\n /**\n * Tracks a telemetry metric.\n *\n * @param data - The metric data (without type)\n * @example\n * provider.trackMetric({ name: 'response_time', value: 123 });\n */\n trackMetric(data) {\n this._track(TelemetryMetricSchema.parse({ ...data, type: TelemetryType.Metric }));\n }\n /**\n * Tracks a custom telemetry event.\n *\n * @param data - The custom event data (without type)\n * @example\n * provider.trackCustom({ name: 'custom_event', metadata: { foo: 'bar' } });\n */\n trackCustom(data) {\n this._track(TelemetryCustomEventSchema.parse({ ...data, type: TelemetryType.Custom }));\n }\n /**\n * Retrieves a telemetry adapter by its identifier.\n *\n * @typeParam T - The key of the `TelemetryAdapter` to retrieve.\n * @param identifier - The identifier of the telemetry adapter to retrieve.\n * @returns The telemetry adapter corresponding to the given identifier, or `undefined` if not found.\n */\n getAdapter(identifier) {\n const adapter = this.#adapters[identifier];\n // Report a missing adapter as a telemetry exception rather than throwing\n if (!adapter) {\n this.trackException({\n name: 'TelemetryAdapterNotFound',\n exception: new Error(`Telemetry adapter \"${identifier}\" not found`),\n metadata: {\n identifier,\n },\n });\n }\n return adapter;\n }\n /**\n * Check if a telemetry adapter exists by its identifier.\n * @param identifier - The unique identifier of the telemetry adapter to check.\n * @returns True if the adapter exists, false otherwise.\n */\n hasAdapter(identifier) {\n return identifier in this.#adapters;\n }\n}\n//# sourceMappingURL=TelemetryProvider.js.map","import { TelemetryConfigurator } from './TelemetryConfigurator.js';\nimport { TelemetryProvider } from './TelemetryProvider.js';\n/**\n * Telemetry module definition for the Fusion Framework.\n *\n * @remarks\n * This module provides telemetry capabilities by configuring and initializing a telemetry provider.\n * It optionally integrates with the 'event' module if available.\n *\n * @type {TelemetryModule}\n *\n * @property {string} name - The name of the module ('telemetry').\n * @property {() => TelemetryConfigurator} configure - Factory function to create a new TelemetryConfigurator instance.\n * @property {(args) => Promise<ITelemetryProvider>} initialize - Asynchronous initializer that creates and returns a TelemetryProvider.\n * - @param args - Initialization arguments, including configuration and module dependencies.\n * - @returns A promise that resolves to an instance of ITelemetryProvider.\n */\nexport const module = {\n name: 'telemetry',\n configure: () => new TelemetryConfigurator(),\n initialize: async (args) => {\n const config = await args.config.createConfigAsync(args);\n const event = args.hasModule('event') ? await args.requireInstance('event') : undefined;\n const provider = new TelemetryProvider(config, { event });\n await provider.initialize({\n parent: config.parent,\n initialItems: config.items$,\n });\n return provider;\n },\n};\nexport default module;\n//# sourceMappingURL=module.js.map","import { map } from 'rxjs/operators';\nimport { TelemetryType } from '@equinor/fusion-framework-module-telemetry';\n/**\n * Transforms events emitted by a given modules configurator into standardized telemetry items.\n *\n * @param configurator - The modules configurator instance emitting events to be mapped.\n * @returns An observable stream of `TelemetryItem` objects, each representing a mapped event.\n *\n * The function listens to the `event$` observable of the configurator and maps each event to a `TelemetryItem`.\n * - If the event contains an `error`, the item is marked as an exception.\n * - If the event contains a `metric`, the item is marked as a metric with its value.\n * - Otherwise, the item is treated as a standard event.\n *\n * The resulting telemetry items include event name, type, level, message, properties, and a fixed scope of `['configuration']`.\n */\nexport const mapConfiguratorEvents = (\n// biome-ignore lint/suspicious/noExplicitAny: must be any to support all module types\nconfigurator) => {\n // Map each configurator event into a standardized telemetry item shape\n return configurator.event$.pipe(map((event) => {\n const item = {\n name: event.name,\n type: TelemetryType.Event,\n level: Number(event.level),\n properties: {\n message: event.message,\n ...event.properties,\n },\n scope: ['configuration'],\n };\n // An event carrying an error is reported as a telemetry exception\n if (event.error) {\n return {\n ...item,\n type: TelemetryType.Exception,\n exception: event.error,\n };\n }\n // An event carrying a metric value is reported as a telemetry metric\n if (event.metric) {\n return {\n ...item,\n type: TelemetryType.Metric,\n value: event.metric,\n };\n }\n return item;\n }));\n};\nexport default mapConfiguratorEvents;\n//# sourceMappingURL=map-configurator-events.js.map","import { module } from './module.js';\nimport { mapConfiguratorEvents } from './utils/map-configurator-events.js';\n/**\n * Enables telemetry for a given module configurator.\n *\n * @param configurator - The module configurator instance to which telemetry should be attached.\n * @param options - Optional configuration for telemetry setup.\n * @param options.attachConfiguratorEvents - If true, attaches configurator events to the telemetry builder.\n * @param options.configure - An optional callback to further configure the telemetry builder. Can be synchronous or asynchronous.\n *\n * @remarks\n * This function adds telemetry configuration to the provided configurator. It supports attaching configurator events\n * and allows for additional custom configuration via the `configure` callback.\n *\n * @remarks\n * `attachConfiguratorEvents` allows for the automatic attachment of configurator events to the telemetry builder,\n * ensuring that relevant events are captured and processed. __NOTE__ if the configurator crashes before the telemetry\n * builder is fully initialized, some events may be missed.\n *\n * @example\n * ```typescript\n * import { enableTelemetry } from '@equinor/fusion-framework-module-telemetry';\n *\n * const configure = (configurator) => {\n * enableTelemetry(configurator, {\n * attachConfiguratorEvents: true,\n * configure: (builder) => {\n * builder.setAdapter('console', new ConsoleAdapter());\n * builder.setMetadata(() => ({ appVersion: '1.0.0' }));\n * },\n * });\n * };\n * ```\n */\nexport const enableTelemetry = (\n// biome-ignore lint/suspicious/noExplicitAny: must be any to support all module types\nconfigurator, options) => {\n configurator.addConfig({\n module,\n configure: async (builder, ref) => {\n // Attach configurator events to the telemetry builder only when opted in\n if (options?.attachConfiguratorEvents) {\n builder.attachItems(mapConfiguratorEvents(configurator));\n }\n // Run the caller-supplied configure callback when one was provided\n if (options?.configure) {\n await Promise.resolve(options.configure(builder, ref));\n }\n },\n });\n};\n//# sourceMappingURL=enable-telemetry.js.map","import { concatMap } from 'rxjs/operators';\n/**\n * Takes a function that transforms each item in a queue and returns an Observable.\n * It processes each item one after another, waiting for the current item to complete before\n * moving on to the next one. This is useful when you need to maintain the order of tasks\n * and ensure that they are executed sequentially without overlapping.\n *\n * @param cb - A callback function that takes a `QueryQueueItem` and returns an Observable.\n * @returns A function that takes an Observable stream of `QueryQueueItem` and returns an Observable\n * stream where each item is processed in sequence by the provided callback.\n */\nexport const concatQueue = (...args) => (source$) => {\n // process queue items one after another, waiting for each to complete before starting the next\n return source$.pipe(concatMap(...args));\n};\n//# sourceMappingURL=concat-queue.js.map","import { mergeMap } from 'rxjs/operators';\n/**\n * Takes a function that transforms each item in a queue and returns an Observable.\n * It processes each item concurrently, potentially leading to out-of-order execution.\n * This is useful when the order of tasks is not important and you want to maximize\n * throughput by running tasks in parallel.\n *\n * @param cb - A callback function that takes a `QueryQueueItem` and returns an Observable.\n * @returns A function that takes an Observable stream of `QueryQueueItem` and returns an Observable\n * stream where each item is processed concurrently by the provided callback.\n */\nexport const mergeQueue = (...args) => (source$) => \n// process all queue items concurrently, without waiting for previous items to complete\nsource$.pipe(mergeMap(...args));\n//# sourceMappingURL=merge-queue.js.map","import { switchMap } from 'rxjs/operators';\n/**\n * Takes a function that transforms each item in a queue and returns an Observable.\n * It processes each item by cancelling the current task if a new one arrives.\n * This is useful when only the result of the latest task is relevant and previous\n * tasks can be safely discarded.\n *\n * @param cb - A callback function that takes a `QueryQueueItem` and returns an Observable.\n * @returns A function that takes an Observable stream of `QueryQueueItem` and returns an Observable\n * stream where each item is processed by the provided callback, but only the latest\n * item's result is emitted.\n */\nexport const switchQueue = (...args) => (source$) => \n// cancel the previous in-flight item whenever a new item arrives\nsource$.pipe(switchMap(...args));\n//# sourceMappingURL=switch-queue.js.map","import { map } from 'rxjs/operators';\n/**\n * Transforms a query result Observable into a plain value Observable by extracting the `value` property.\n *\n * Use this operator to strip query metadata (status, transaction, timestamps) from\n * the result stream when only the raw data is needed.\n *\n * @template TType - The type of the data value extracted from the query result.\n * @template TArgs - The type of the query arguments.\n *\n * @param source$ - An Observable stream of query task results (cached or completed).\n * @returns An Observable stream of `TType` where each emission is the extracted value.\n *\n * @example\n * ```typescript\n * import { Query, operators } from '@equinor/fusion-query';\n *\n * const query = new Query({ client: { fn: fetchUser }, key: (args) => args.id });\n * query.query({ id: '123' }).pipe(operators.queryValue).subscribe(user => {\n * console.log(user.name);\n * });\n * ```\n */\nexport const queryValue = (source$) => \n// strip query metadata, keeping only the raw data value\nsource$.pipe(map((entry) => entry.value));\n//# sourceMappingURL=query-value.js.map","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;\n","import REGEX from './regex.js';\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\nexport default validate;\n","import validate from './validate.js';\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n let v;\n return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 0xff, ((v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000) & 0xff, (v / 0x100000000) & 0xff, (v >>> 24) & 0xff, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff);\n}\nexport default parse;\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","const rnds8 = new Uint8Array(16);\nexport default function rng() {\n return crypto.getRandomValues(rnds8);\n}\n","import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport function stringToBytes(str) {\n str = unescape(encodeURIComponent(str));\n const bytes = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n return bytes;\n}\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(version, hash, value, namespace, buf, offset) {\n const valueBytes = typeof value === 'string' ? stringToBytes(value) : value;\n const namespaceBytes = typeof namespace === 'string' ? parse(namespace) : namespace;\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n if (namespace?.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n }\n let bytes = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n if (buf) {\n offset ??= 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n return buf;\n }\n return unsafeStringify(bytes);\n}\n","import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (!buf && !options && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","function f(s, x, y, z) {\n switch (s) {\n case 0:\n return (x & y) ^ (~x & z);\n case 1:\n return x ^ y ^ z;\n case 2:\n return (x & y) ^ (x & z) ^ (y & z);\n case 3:\n return x ^ y ^ z;\n }\n}\nfunction ROTL(x, n) {\n return (x << n) | (x >>> (32 - n));\n}\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n const newBytes = new Uint8Array(bytes.length + 1);\n newBytes.set(bytes);\n newBytes[bytes.length] = 0x80;\n bytes = newBytes;\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n for (let j = 0; j < 16; ++j) {\n arr[j] =\n (bytes[i * 64 + j * 4] << 24) |\n (bytes[i * 64 + j * 4 + 1] << 16) |\n (bytes[i * 64 + j * 4 + 2] << 8) |\n bytes[i * 64 + j * 4 + 3];\n }\n M[i] = arr;\n }\n M[N - 1][14] = ((bytes.length - 1) * 8) / 2 ** 32;\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = (ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t]) >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n H[0] = (H[0] + a) >>> 0;\n H[1] = (H[1] + b) >>> 0;\n H[2] = (H[2] + c) >>> 0;\n H[3] = (H[3] + d) >>> 0;\n H[4] = (H[4] + e) >>> 0;\n }\n return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]);\n}\nexport default sha1;\n","import sha1 from './sha1.js';\nimport v35, { DNS, URL } from './v35.js';\nexport { DNS, URL } from './v35.js';\nfunction v5(value, namespace, buf, offset) {\n return v35(0x50, sha1, value, namespace, buf, offset);\n}\nv5.DNS = DNS;\nv5.URL = URL;\nexport default v5;\n","/**\n * Represents an error that occurs within the query client. This error class is used\n * to encapsulate errors related to query client requests, allowing consumers to handle\n * them in a unified way.\n *\n * The error can be of two types: 'error' for standard errors, and 'abort' for errors\n * resulting from aborted requests. Consumers can distinguish between these by checking\n * the `type` property.\n *\n * To get the actual error that caused this `QueryClientError`, you can access the `cause`\n * property of the instance. This property will contain the original error, if any, that\n * triggered this `QueryClientError`.\n *\n * Example usage:\n * ```\n * try {\n * // code that may throw a QueryClientError\n * } catch (error) {\n * if (error instanceof QueryClientError) {\n * console.log(error.message); // Access the message\n * if (error.cause) {\n * console.error(error.cause); // Access the original error\n * }\n * }\n * }\n * ```\n */\nexport class QueryClientError extends Error {\n type;\n /** The request that was being processed when this error occurred, if any. */\n request;\n /**\n * Creates a new `QueryClientError`.\n *\n * @param type - Whether this error represents a standard failure or an aborted request.\n * @param args - The error message, optional underlying cause, and optional request context.\n */\n constructor(type, args) {\n super(args.message, { cause: args.cause });\n this.type = type;\n this.name = 'QueryClientError';\n this.request = args.request;\n }\n}\n//# sourceMappingURL=QueryClientError.js.map","import { v4 as generateGUID } from 'uuid';\nimport { createAction, createAsyncAction, } from '@equinor/fusion-observable';\nconst createActions = () => ({\n /**\n * Action to initiate a request.\n *\n * @param args - The arguments for the request.\n * @param options - Optional parameters including a reference and retry options.\n * @returns An action with the request details and metadata.\n */\n request: createAction('client/request', (args, options) => ({\n payload: { args, options },\n meta: { transaction: generateGUID(), created: Date.now() },\n })),\n /**\n * Async action to execute a request.\n *\n * @param transaction - The unique identifier for the transaction.\n * @returns An async action with the transaction details and metadata.\n */\n execute: createAsyncAction('client/execute', (transaction) => ({\n payload: transaction,\n meta: { transaction, created: Date.now() },\n }), (result) => ({\n payload: result,\n meta: { transaction: result.transaction, created: Date.now() },\n }), (error, transaction) => ({\n payload: { error },\n meta: { transaction, created: Date.now() },\n })),\n /**\n * Action to cancel a request.\n *\n * @param transaction - The unique identifier for the transaction to cancel.\n * @param reason - Optional reason for cancellation.\n * @returns An action with the cancellation details and metadata.\n */\n cancel: createAction('client/cancel', (transaction, reason) => ({\n payload: { transaction, reason },\n meta: { transaction, created: Date.now() },\n })),\n /**\n * Action to report an error.\n *\n * @param transaction - The unique identifier for the transaction that errored.\n * @param error - The error that occurred.\n * @returns An action with the error details and metadata.\n */\n error: createAction('client/error', (transaction, error) => ({\n payload: { transaction, error },\n meta: { transaction, created: Date.now() },\n })),\n});\nexport const actions = createActions();\nexport default actions;\n//# sourceMappingURL=actions.js.map","import { filter, map } from 'rxjs';\nimport { actions } from './actions';\n/**\n * Handles incoming request actions by transforming them into execute actions.\n *\n * @param action$ - The stream of actions being dispatched in the system.\n * @returns An Observable that emits execute actions for each request action.\n */\nexport const handleRequests = (action$) => \n// convert each incoming request action into an execute action for its transaction\naction$.pipe(filter(actions.request.match), map((action) => actions.execute(action.meta.transaction)));\n//# sourceMappingURL=handle-requests.js.map","import { catchError, filter, from, map, mergeMap, of, takeUntil, tap, withLatestFrom } from 'rxjs';\nimport { actions } from './actions';\n/**\n * Handles the execution of a query.\n *\n * @param fetch - The function used to execute the query.\n * @returns A flow that handles the execution of the query.\n */\nexport const handleExecution = (fetch) => (action$, state$) => \n// execute the query for each request and translate the outcome back into actions\naction$.pipe(filter(actions.execute.match), withLatestFrom(state$), mergeMap(([action, state]) => {\n const transaction = action.payload;\n const request = state[transaction];\n // Create an AbortController instance to manage cancellation.\n const controller = new AbortController();\n // Listen for cancel actions specifically targeting this transaction.\n const cancel$ = action$.pipe(filter(actions.cancel.match), filter((next) => next.payload.transaction === transaction), tap(() => {\n // If the request hasn't been aborted yet, abort it.\n if (!controller.signal.aborted) {\n controller.abort();\n }\n }));\n try {\n // map the fetch outcome to a success/failure action, cancelling early if aborted\n return from(fetch(request.args, controller.signal)).pipe(map((value) => actions.execute.success({\n ...request,\n status: 'complete',\n completed: Date.now(),\n value,\n })), catchError((err) => of(actions.execute.failure(err, transaction))), takeUntil(cancel$));\n }\n catch (err) {\n // Normally errors thrown during the execution of the fetch function are caught by the `catchError` operator.\n // However, if the fetch function itself throws an error, it will be caught here.\n // This can happen if the fetch function is not a function or if it throws synchronously.\n return of(actions.execute.failure(err, transaction));\n }\n}));\n//# sourceMappingURL=handle-execution.js.map","import { catchError, filter, from, map, mergeMap, of, tap, timer, withLatestFrom, } from 'rxjs';\nimport { actions } from './actions';\nimport { QueryClientError } from './QueryClientError';\n/**\n * Handles execution failure by scheduling retries according to the provided retry options.\n * If the maximum number of retries is exceeded or no retry options are provided, it emits an error action.\n * Otherwise, it schedules a retry after a delay determined by the retry options.\n *\n * @param config - Optional configuration for retry behavior, including the maximum number of retries and delay between retries.\n */\nexport const handleFailure = (config) => {\n return (action$, state$) => {\n // filter for execution failures and decide whether to retry or report an error\n return action$.pipe(\n // Filter for actions that indicate an execution failure.\n filter(actions.execute.failure.match), \n // Combine each failure action with the latest state.\n withLatestFrom(state$), \n // Handle the retry logic for each failure.\n mergeMap(([action, state]) => {\n // Extract the transaction identifier from the action metadata.\n const { transaction } = action.meta;\n // Retrieve the corresponding request from the state.\n const request = state[transaction];\n // If the request no longer exists in the state, it cannot be retried.\n if (!request) {\n return of(actions.error(transaction, new QueryClientError('error', {\n message: 'request not found, cannot retry request, most likely removed while scheduled for retry!',\n })));\n }\n // Count the number of execution attempts made for this request.\n const executions = request.execution.length;\n // Merge the provided configuration with the request-specific retry options.\n const retryOptions = Object.assign({}, config, request.options?.retry);\n // Identify the cause of the failure, either the last known error or a generic message.\n const cause = request.errors?.slice(-1)[0] ??\n new QueryClientError('error', {\n message: 'no errors registered for request!',\n request,\n });\n // If the maximum number of retries has been reached, report an error.\n if (executions > retryOptions.count) {\n const error = \n // if retry is disabled return the last error, else return all registered errors\n retryOptions.count === 0\n ? cause\n : new QueryClientError('error', {\n message: 'maximum retries executed!',\n cause: request.errors,\n request,\n });\n return of(actions.error(transaction, error));\n }\n // Create an Observable that emits after the specified delay for the retry.\n const delay$ = typeof retryOptions.delay === 'function'\n ? from(retryOptions.delay(cause)).pipe(\n // Catch errors that occur within the delay calculation.\n catchError((cause) => of(actions.error(transaction, new QueryClientError('error', {\n message: 'retry delay callback failed!',\n cause: [...(request.errors ?? []), cause],\n request,\n })))))\n : timer(retryOptions.delay);\n // After the delay, check if the request is still present and initiate a retry.\n return delay$.pipe(withLatestFrom(state$), \n // Ensure the request has not been removed from the state during the delay.\n filter(([_, state]) => !!state[transaction]), \n // If the request has been removed, throw an error.\n tap(([, state]) => {\n // Re-check inside the tap since the request could have been removed during the delay\n if (!state[transaction]) {\n throw new QueryClientError('error', {\n message: 'request not found, most likely removed while scheduled for retry',\n cause: request.errors,\n request,\n });\n }\n }), \n // Emit an action to re-execute the request.\n map(() => actions.execute(transaction)));\n }));\n };\n};\n//# sourceMappingURL=handle-failure.js.map","import { castDraft, createReducer as makeReducer } from '@equinor/fusion-observable';\nimport { actions } from './actions';\n/**\n * Creates a reducer function for managing the state of query client operations.\n * The reducer updates the state based on actions dispatched related to query transactions.\n *\n * The state is an object where each key represents a unique transaction ID and its value\n * is a `QueryClientRequest` object that contains details about the request, its execution status,\n * any errors that occurred, and the results of the query execution.\n *\n * The reducer handles the following actions:\n * - `request`: Initializes a new query in the state with the given transaction ID.\n * The state is updated with a new `QueryClientRequest` object which includes the request details,\n * an empty execution log, an empty error log, and sets the status to 'idle'.\n * - `execute`: Marks a query as active by updating its status to 'active' and logs the execution time.\n * - `execute.success`: Removes a successfully executed query from the state, indicating the query has completed.\n * - `execute.failure`: Updates a query's status to 'failed' and logs the error information.\n * - `error`: Removes a query from the state due to an irrecoverable error, effectively cleaning up its state.\n * - `cancel`: Removes a query from the state if it's canceled, cleaning up any associated state.\n *\n * This reducer is created using a builder pattern provided by `makeReducer` from '@equinor/fusion-observable',\n * allowing for a declarative approach to defining how state is updated in response to actions.\n *\n * @param initial An optional initial state for the reducer. If not provided, defaults to an empty object.\n * @returns A reducer function tailored for managing the state of query client operations.\n */\nexport const createReducer = (initial = {}) => makeReducer(initial, (builder) => {\n builder.addCase(actions.request, (state, action) => {\n // When an action of type 'request' is dispatched, this case handler will be invoked.\n // It updates the state by setting a new `QueryClientRequest` object for the key specified by `action.meta.transaction`.\n // The new `QueryClientRequest` object is created by merging `action.payload` and `action.meta`, and initializing\n // `execution` as an empty array, `errors` as an empty array, and `status` as 'idle'.\n state[action.meta.transaction] = castDraft({\n ...action.payload,\n ...action.meta,\n execution: [],\n errors: [],\n status: 'idle',\n });\n });\n builder.addCase(actions.execute, (state, action) => {\n // Locates the query entry in the state using the transaction ID provided in `action.payload`.\n const entry = state[action.payload];\n // If the entry is found, logs the current timestamp to the `execution` array\n // to indicate when the execution action was triggered.\n if (entry) {\n entry.execution.push(Date.now());\n // Updates the status of the entry to 'active' to reflect that the execution\n // process has started.\n entry.status = 'active';\n }\n });\n builder.addCase(actions.execute.success, (state, action) => {\n // When an action of type 'execute.success' is dispatched, this case handler will be invoked.\n // It removes the query entry from the state using the transaction ID provided in `action.payload.transaction`.\n delete state[action.payload.transaction];\n });\n builder.addCase(actions.execute.failure, (state, action) => {\n // Locates the query entry in the state using the transaction ID provided in `action.meta`.\n const entry = state[action.meta.transaction];\n // If the entry is found, the error information from `action.payload.error` is added to the `errors` array of the entry.\n // This allows tracking of all errors that have occurred during the execution of the query.\n if (entry) {\n entry.errors.push(action.payload.error);\n // The status of the entry is updated to 'failed' to indicate that the query execution has encountered an error.\n entry.status = 'failed';\n }\n });\n builder.addCase(actions.error, (state, action) => {\n // When an action of type 'error' is dispatched, this case handler will be invoked.\n // This handler removes the query entry from the state using the transaction ID provided in `action.meta.transaction`.\n // This is typically used to clean up any state associated with a transaction that has encountered an irrecoverable error.\n delete state[action.meta.transaction];\n });\n builder.addCase(actions.cancel, (state, action) => {\n // When an action of type 'cancel' is dispatched, this case handler will be invoked.\n // It removes the query entry from the state using the transaction ID provided in `action.meta.transaction`.\n // This is useful for cleaning up any state associated with a transaction that is no longer needed, effectively canceling the operation.\n delete state[action.meta.transaction];\n });\n});\nexport default createReducer;\n//# sourceMappingURL=create-reducer.js.map","import { BehaviorSubject, Observable, fromEvent } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { QueryClientError } from './QueryClientError';\nimport { actions } from './actions';\n/**\n * Represents a job for the QueryClient that extends an Observable.\n * It manages the lifecycle of a query operation.\n */\nexport class QueryClientJob extends Observable {\n /**\n * The current status of the job.\n */\n #status$ = new BehaviorSubject('idle');\n /**\n * Returns the current status of the job.\n */\n get status() {\n return this.#status$.value;\n }\n /**\n * An Observable stream of the job's status, emitting whenever the status changes.\n */\n get status$() {\n return this.#status$.asObservable();\n }\n /**\n * The QueryClient instance associated with this job.\n */\n #client;\n /**\n * Returns the QueryClient instance associated with this job.\n */\n #transaction;\n /**\n * Returns the transaction identifier for this job.\n */\n get transaction() {\n return this.#transaction;\n }\n /** Timestamp, in milliseconds since epoch, when this job was created. */\n created = Date.now();\n /**\n * Indicates whether the query client job is closed.\n * A query client job is considered closed if its status is 'complete', 'error', or 'canceled'.\n */\n get closed() {\n return this.status === 'complete' || this.status === 'error' || this.status === 'canceled';\n }\n /**\n * Creates an instance of a QueryClientJob.\n * @param client The QueryClient instance.\n * @param args The arguments to be used for the query.\n * @param options Optional settings for the query client job.\n */\n constructor(client, args, options) {\n super((subscriber) => {\n const { transaction } = this;\n // Filters the actions stream for actions related to this job's transaction.\n const jobActions = client.action$.pipe(filter((action) => action.meta.transaction === transaction));\n // Subscribes to the state stream, updating the job's status when a related state entry is emitted.\n subscriber.add(client.state$\n .pipe(\n // Filters the state stream for entries related to this job's transaction.\n filter((state) => !!state[transaction]), \n // Maps the filtered state to the specific entry for this job, extracting its current status.\n map((state) => state[transaction]))\n .subscribe((entry) => {\n // Updates the internal BehaviorSubject with the new status.\n // This change is then propagated to all subscribers of the status$ Observable,\n // allowing them to react to status changes in real-time.\n this.#status$.next(entry.status);\n }));\n // Subscribes to the actions stream, completing the job when a successful execution action is emitted.\n subscriber.add(jobActions\n .pipe(filter(actions.execute.success.match), \n // Maps the successful execution action to its payload, effectively extracting the result of the query operation.\n // This result is then passed along to the subscribers of the QueryClientJob, allowing them to react to the successful completion of the job.\n map(({ payload }) => payload))\n .subscribe((result) => {\n // Updates the job's status to 'complete', indicating that the query operation has successfully finished.\n this.#status$.next('complete');\n // Notifies subscribers of the QueryClientJob with the result of the query operation.\n subscriber.next(result);\n // Completes the subscription, signaling that the job has finished and no more values will be emitted.\n // This is an important step to ensure that subscribers can perform any necessary cleanup or final actions.\n subscriber.complete();\n }));\n // Subscribes to the actions stream, emitting an error when an error action is emitted.\n subscriber.add(jobActions\n .pipe(filter(actions.error.match), map(({ payload }) => payload))\n .subscribe((err) => {\n this.#status$.next('error');\n // Emits an error to the subscriber with the error details from the payload.\n // This triggers the error handling mechanisms of the subscriber, allowing for\n // appropriate responses to the error condition.\n subscriber.error(err.error);\n }));\n // Subscribes to the actions stream, updating the job's status when a cancel action is emitted.\n subscriber.add(jobActions.pipe(filter(actions.cancel.match)).subscribe((action) => {\n this.#status$.next('canceled');\n // When a cancel action is received, it updates the job's status to 'canceled' and emits an error with a detailed message.\n // This includes the reason for cancellation if provided, or a default message indicating the job was canceled.\n // Additionally, it constructs a new `QueryClientError` with the 'abort' type, providing context about the request\n // associated with the canceled job, allowing for more informed error handling and debugging.\n subscriber.error(new QueryClientError('abort', {\n message: action.payload.reason || `job: ${transaction} was canceled`,\n request: this.#client.getRequest(action.meta.transaction),\n }));\n }));\n // If an abort signal is provided, subscribes to the abort event and dispatches a cancel action.\n if (options?.signal) {\n // Subscribes to the abort event on the provided signal. When the abort event is triggered,\n // it dispatches a cancel action with a specific message indicating the job was aborted\n // due to an external signal. This allows for external cancellation mechanisms to interact\n // with the job lifecycle.\n subscriber.add(fromEvent(options?.signal, 'abort')\n .pipe(\n // Maps the abort event to a cancel action, including a message that specifies\n // the transaction ID and an optional reference provided in the options.\n // This ensures that the cancellation is traceable to the abort signal.\n map(() => actions.cancel(transaction, `job: ${transaction} was aborted on signal from caller: ${options?.ref}`)))\n // Subscribes to the resulting Observable and dispatches the cancel action\n // to the QueryClient. This integrates the external abort mechanism with\n // the QueryClient's internal state management and action handling.\n .subscribe((action) => client.next(action)));\n }\n // Adds a teardown logic to cancel the job if it's still active upon unsubscription.\n subscriber.add(() => {\n this.complete();\n });\n });\n this.#client = client;\n // Dispatches a request action to start the job.\n const request = actions.request(args, { ref: options?.ref, retry: options?.retry });\n this.#transaction = request.meta.transaction;\n this.#client.next(request);\n }\n /**\n * Completes the job if it's not already closed, marking it as 'complete'.\n * This method should be called to gracefully end a job that has finished its task.\n * It will also attempt to cancel the job with a completion reason, transitioning its status to 'canceled'\n * if it was in an 'active' state but hadn't yet completed.\n * @param reason - Optional reason recorded for the completion/cancellation.\n */\n complete(reason) {\n // Only cancel/complete when the job isn't already in a terminal state\n if (!this.closed) {\n this.cancel(reason ?? `job: ${this.transaction} was completed`);\n }\n }\n /**\n * Cancels the job with an optional reason, marking its status as 'canceled'.\n * This method is used to prematurely end a job that cannot complete its task, either due to an error or a user-defined condition.\n * Upon cancellation, a cancellation action is dispatched to notify other parts of the application that the job has been canceled.\n * @param reason The reason for the cancellation, which will be included in the cancellation action.\n */\n cancel(reason) {\n const transaction = this.transaction;\n this.#client.cancel(transaction, reason ?? `job: ${transaction} was canceled`);\n }\n /**\n * Disposes of the job by completing it, releasing any held resources.\n */\n [Symbol.dispose]() {\n this.complete();\n }\n}\n//# sourceMappingURL=QueryClientJob.js.map","/**\n * Event class for QueryClient lifecycle events.\n *\n * This class represents events that track the various stages of query execution\n * within the QueryClient, providing type-safe event data and transaction tracking.\n *\n * @template TData - The type of data associated with this event\n */\nexport class QueryClientEvent {\n type;\n transaction;\n data;\n /**\n * Creates a new QueryClient event.\n *\n * @param type - The specific event type identifier\n * @param transaction - Unique transaction identifier for the query operation\n * @param data - Optional event-specific data payload\n */\n constructor(type, transaction, data) {\n this.type = type;\n this.transaction = transaction;\n this.data = data;\n }\n}\n//# sourceMappingURL=QueryClientEvent.js.map","import { firstValueFrom, Observable, ReplaySubject, Subject, Subscription } from 'rxjs';\nimport { filter, map, share, withLatestFrom } from 'rxjs/operators';\nimport { FlowSubject } from '@equinor/fusion-observable';\nimport { filterAction } from '@equinor/fusion-observable/operators';\nimport actions from './actions';\nimport { handleRequests } from './handle-requests';\nimport { handleExecution } from './handle-execution';\nimport { handleFailure } from './handle-failure';\nimport { QueryClientError } from './QueryClientError';\nimport createReducer from './create-reducer';\nimport { QueryClientJob } from './QueryClientJob';\nimport { QueryClientEvent, } from './QueryClientEvent';\n/**\n * QueryClient is a generic class that manages the state of asynchronous queries\n * and their lifecycle. It extends Observable to allow subscribers to react to state changes.\n *\n * It uses a FlowSubject to manage a stream of actions that describe the state changes and\n * side effects such as logging. The internal state is managed by a reducer function that\n * processes these actions.\n *\n * The QueryClient provides several specialized Observables (success$, error$, etc.) to\n * observe particular aspects of the query lifecycle, such as successful results or errors.\n *\n * @template TType The type of the data returned by the query function.\n * @template TArgs The type of the arguments passed to the query function.\n */\nexport class QueryClient extends Observable {\n /** Internal state managed by a FlowSubject. */\n #state;\n /** Subscription to manage cleanup of resources on completion. */\n #subscription;\n /**\n * Events subject for emitting QueryClient lifecycle events.\n *\n * This subject broadcasts events that track query execution stages,\n * allowing external observers to monitor query progress, success, and failures.\n */\n #events;\n /**\n * Protected method to emit QueryClient lifecycle events.\n *\n * This method creates and emits events that track the various stages of query execution,\n * allowing external observers to monitor query progress, success, failure, and cancellation.\n *\n * @template TType - The specific event type from QueryClientEvents\n * @param type - The event type identifier\n * @param transaction - Unique transaction identifier for the query operation\n * @param data - Optional event-specific data payload (type-safe based on event type)\n * @protected\n */\n _registerEvent(type, transaction, data) {\n this.#events.next(new QueryClientEvent(type, transaction, data));\n }\n /**\n * Indicates whether the QueryClient has been closed and is no longer accepting new actions.\n * @returns {boolean} A boolean value indicating if the state is closed.\n */\n get closed() {\n return this.#state.closed;\n }\n /**\n * An Observable of the current state. It emits the current state of the query client\n * whenever it changes.\n * @returns {Observable<QueryClientState<TArgs>>} An Observable stream of the current state.\n */\n get state$() {\n return this.#state.asObservable();\n }\n /**\n * An Observable stream of dispatched actions. It allows subscribers to react to\n * specific actions that are dispatched in the system.\n * @returns {Observable<Actions<TType, TArgs>>} An Observable stream of actions.\n */\n get action$() {\n return this.#state.action$;\n }\n /**\n * An Observable stream of QueryClient lifecycle events.\n *\n * This stream emits events that track the various stages of query execution,\n * including job requested, executing, completed, failed, canceled, and error events.\n * Subscribers can monitor query progress and handle different lifecycle events.\n *\n * @returns An Observable stream of QueryClient events\n */\n get event$() {\n return this.#events.asObservable();\n }\n /**\n * An Observable stream of successful query results. It emits the result of a query\n * when it completes successfully.\n * @returns {Observable<TType>} An Observable stream of successful results.\n */\n get success$() {\n // narrow the action stream down to successful execute actions and extract their payload\n return this.action$.pipe(filter(actions.execute.success.match), map(({ payload }) => payload));\n }\n /**\n * An Observable stream of query errors. It emits an instance of QueryClientError\n * when a query fails to complete.\n * @returns {Observable<QueryClientError>} An Observable stream of query errors.\n */\n get error$() {\n // narrow the action stream down to client errors and wrap them as QueryClientError instances\n return this.action$.pipe(filterAction('client/error'), withLatestFrom(this.#state), map(([action, state]) => {\n const { payload, meta: { transaction }, } = action;\n const request = state[transaction];\n return new QueryClientError('error', {\n request,\n message: `job: ${transaction} failed`,\n cause: payload,\n });\n }));\n }\n /**\n * Creates an instance of QueryClient.\n * @param {QueryFn<TType, TArgs>} queryFn A function that performs the asynchronous query.\n * @param {QueryClientCtorOptions} [options] Optional configuration options for the QueryClient.\n */\n constructor(queryFn, options) {\n super((subscriber) => {\n return this.#state.subscribe(subscriber);\n });\n this.#state = new FlowSubject(createReducer({}));\n // Set up subscription for cleanup, ensuring both state and events subjects are completed\n this.#subscription = new Subscription(() => {\n this.#state.complete();\n this.#events.complete();\n });\n // Initialize events subject for broadcasting lifecycle events\n this.#events = new Subject();\n // Add flows to handle different aspects of the query lifecycle.\n this.#subscription.add(this.#state.addFlow(handleRequests));\n this.#subscription.add(this.#state.addFlow(handleExecution(queryFn)));\n // merge caller-provided retry options over the defaults\n const retryOptions = Object.assign({ count: 0, delay: 0 }, options?.retry);\n this.#subscription.add(this.#state.addFlow(handleFailure(retryOptions)));\n /**\n * Register effects to emit lifecycle events for different query actions.\n *\n * These effects monitor the internal state changes and emit corresponding events\n * that external observers can subscribe to for tracking query progress.\n */\n // Emit event when a query request is initiated\n this.#state.addEffect(actions.request.type, ({ payload, meta: { transaction } }) => {\n this._registerEvent('query_client_job_requested', transaction, payload);\n });\n // Emit event when query execution begins\n this.#state.addEffect(actions.execute.type, ({ meta: { transaction } }) => {\n this._registerEvent('query_client_job_executing', transaction);\n });\n // Emit event when query execution completes successfully\n this.#state.addEffect(actions.execute.success.type, ({ payload, meta: { transaction } }) => {\n this._registerEvent('query_client_job_completed', transaction, { payload });\n });\n // Emit event when query execution fails\n this.#state.addEffect(actions.execute.failure.type, ({ payload, meta: { transaction } }) => {\n const error = payload.error instanceof Error ? payload.error : new Error(String(payload.error));\n this._registerEvent('query_client_job_failed', transaction, { error });\n });\n // Emit event when a query is canceled\n this.#state.addEffect(actions.cancel.type, ({ payload: { reason }, meta: { transaction } }) => {\n this._registerEvent('query_client_job_canceled', transaction, {\n reason: reason || 'no reason provided',\n });\n });\n // Emit event when a general error occurs during query processing\n this.#state.addEffect(actions.error.type, ({ payload, meta: { transaction } }) => {\n const error = payload.error instanceof Error ? payload.error : new Error(String(payload.error));\n this._registerEvent('query_client_job_error', transaction, { error });\n });\n }\n /**\n * Dispatches an action to the internal state subject, which will be processed by the reducer\n * and any registered effects.\n * @param {Actions} action The action to dispatch.\n */\n next(action) {\n this.#state.next(action);\n }\n /**\n * Initiates a query with the provided arguments and options. It returns a QueryClientJob\n * which is an Observable that represents the lifecycle of the query.\n * @param {TArgs} args Call arguments for the query function.\n * @param {Partial<QueryClientOptions>} [opt] Query options.\n * @returns {QueryClientJob<TType, TArgs>} The QueryClientJob representing the initiated query.\n */\n query(args, opt) {\n const job = new QueryClientJob(this, args, opt);\n // share a single underlying job execution across all subscribers, replaying past emissions to late subscribers\n const job$ = job.pipe(share({ connector: () => new ReplaySubject(), resetOnRefCountZero: false }));\n Object.defineProperties(job$, {\n transaction: { get: () => job.transaction },\n created: { get: () => job.created },\n status: { get: () => job.status },\n closed: { get: () => job.closed },\n cancel: { value: (reason) => job.cancel(reason) },\n complete: { value: () => job.complete() },\n });\n // `job$` is a plain shared Observable; the properties defined above give it the\n // `QueryClientJob` shape at runtime, which TypeScript can't infer structurally.\n return job$;\n }\n /**\n * Initiates a query and returns a promise that resolves with the result of the query.\n * It is a convenience method that wraps the query method for use with async/await syntax.\n * @param {TArgs} args Call arguments for the query function.\n * @param {QueryClientOptions} [opt] Query options.\n * @returns {Promise<QueryClientResult<TType>>} A promise that resolves with the result of the query.\n */\n async nextAsync(args, opt) {\n return firstValueFrom(this.query(args, opt));\n }\n /**\n * Retrieves the request associated with the specified transaction.\n *\n * @param transaction - The transaction identifier.\n * @returns The request associated with the specified transaction.\n */\n getRequest(transaction) {\n return this.#state.value[transaction];\n }\n /**\n * Retrieves the request associated with the specified reference string.\n *\n * @param ref - The reference identifier to search for.\n * @returns The request matching the reference, or `undefined` if not found.\n */\n getRequestByRef(ref) {\n const requests = Object.values(this.#state.value);\n // scan all tracked requests for the one matching the given ref\n const match = requests.find((x) => x.ref === ref);\n return match;\n }\n /**\n * Cancels a task by its reference string. If a reason is provided, it will be included\n * in the cancellation effect.\n * @param {string} ref The reference string of the task to cancel.\n * @param {string} [reason] The reason for cancellation.\n */\n cancelTaskByRef(ref, reason) {\n const entry = this.getRequestByRef(ref);\n // Only cancel when a matching request was actually found\n if (entry?.ref) {\n this.cancel(entry.transaction, reason);\n }\n }\n /**\n * Cancels a query. If a transaction id is provided, it cancels the specific query.\n * Otherwise, it cancels all queries.\n * @param {string} [transaction] The transaction id of the query to cancel.\n * @param {string} [reason] The reason for cancellation.\n */\n cancel(transaction, reason) {\n // No transaction targeted — cancel every tracked transaction\n if (!transaction) {\n // If no specific transaction is provided, iterate through all transactions\n // in the state and cancel each one, applying a generic cancellation reason.\n for (const key of Object.keys(this.#state.value)) {\n this.cancel(key, 'all transactions requested canceled');\n }\n }\n else if (this.#state.value[transaction]) {\n // If a specific transaction is provided and it exists in the state,\n // dispatch a cancellation action with an optional reason or a default message.\n reason ??= `cancelation requested for job: ${transaction}`;\n this.#state.next(actions.cancel(transaction, reason));\n }\n }\n /**\n * Registers a callback to be executed when an action of the specified type is dispatched.\n * It allows for custom behavior to be defined in response to specific actions.\n * @template TAction The type of the action to listen for.\n * @param {TAction} type The type of the action.\n * @param {(action: ActionMap[TAction], subject: QueryClient<TType, TArgs>) => void} cb The callback to execute.\n * @returns {Subscription} A Subscription that can be used to unregister the effect.\n */\n on(type, cb) {\n return this.#state.addEffect(actions[type].type, (action) => {\n cb(action, this);\n });\n }\n /**\n * Completes the QueryClient's internal state subject, effectively cleaning up all\n * resources and subscriptions. After calling complete, the QueryClient will no longer\n * accept new actions or emit new state changes.\n */\n complete() {\n this.#subscription.unsubscribe();\n }\n}\nexport default QueryClient;\n//# sourceMappingURL=QueryClient.js.map","import { createAction } from '@equinor/fusion-observable';\n/**\n * Creates a set of actions to manipulate cache entries.\n *\n * @template TType The type of the value being cached.\n * @template TArgs The type of the arguments associated with the cache entry.\n * @returns An object containing the cache actions.\n */\n// biome-ignore lint/suspicious/noExplicitAny: default must be bivariant `any`; `unknown` breaks assignability of concrete `Actions<TType, TArgs>` streams (e.g. in `Observable<Actions<TType, TArgs>>` subscriptions) to the default-typed generic\nfunction createActions() {\n return {\n /**\n * Action to set a cache entry.\n *\n * @param key The cache key.\n * @param record The cache record to set.\n * @returns An action object with the cache key and record.\n */\n set: createAction('cache/set', (key, record) => ({\n payload: { key, record },\n })),\n /**\n * Action to set a cache entry.\n *\n * @param key The cache key.\n * @param entry The cache entry, including value, arguments, and transaction identifier.\n * @returns An action object with the cache key and entry.\n */\n insert: createAction('cache/insert', (key, entry) => {\n return { payload: { key, entry } };\n }),\n /**\n * Action to remove a cache entry.\n *\n * @param key The cache key to remove.\n * @returns An action object with the cache key.\n */\n remove: createAction('cache/remove', (key) => ({ payload: key })),\n /**\n * Action to invalidate a cache entry.\n *\n * @param key The cache key to invalidate.\n * @returns An action object with the cache key.\n */\n invalidate: createAction('cache/invalidate', (key, item) => ({\n payload: key,\n meta: { item },\n })),\n /**\n * Action to mutate a cache entry.\n *\n * @param changes An object containing the cache key, new value, and optional updated timestamp and transaction identifier.\n * @param current The current cache record, if available.\n * @returns An action object with the changes to be applied to the cache entry and the current cache record as metadata.\n */\n mutate: createAction('cache/mutate', (key, changes, item) => ({\n payload: { ...changes, key },\n meta: { item },\n })),\n /**\n * Action to trim the cache based on certain criteria.\n *\n * @param payload Object containing optional sort function, validation function, and size limit.\n * @returns An action object with the payload.\n */\n trim: createAction('cache/trim', (payload) => {\n return { payload };\n }),\n };\n}\n/**\n * The singleton actions object containing all cache manipulation actions.\n */\nexport const actions = createActions();\n//# sourceMappingURL=actions.js.map","import { castDraft } from 'immer';\nimport { createReducer } from '@equinor/fusion-observable';\n/**\n * Sort function for ordering cache records based on their update time.\n * @param a First QueryCacheRecord for comparison.\n * @param b Second QueryCacheRecord for comparison.\n * @returns A number indicating the sort order.\n */\nconst sortCache = (a, b) => {\n return (b.updated ?? 0) - (a.updated ?? 0);\n};\n/**\n * Creates a reducer for managing the state of a query cache.\n * @param actions An object containing action creators for the cache.\n * @param initial The initial state data of the query cache.\n * @returns A reducer function tailored for the query cache state.\n */\nexport default function (actions, initial = {}) {\n return createReducer(initial, (builder) => builder\n .addCase(actions.set, (state, action) => {\n const { key, record } = action.payload;\n state[key] = castDraft(record);\n })\n // Handles the 'set' action to update or add a cache record.\n .addCase(actions.insert, (state, action) => {\n const { key, entry } = action.payload;\n const record = state[key];\n // Update the existing entry in place, or create a new one if none exists yet\n if (record) {\n // If the record exists, update the timestamp and increment the update count.\n record.updated = Date.now();\n record.updates ??= 0;\n record.updates++;\n record.value = entry.value;\n record.transaction = entry.transaction;\n // reset the mutated timestamp\n record.mutated = undefined;\n }\n else {\n // If the record does not exist, create a new one with the current timestamp.\n const created = Date.now();\n state[key] = castDraft({\n ...entry,\n created,\n updated: created, // Set `updated` to the creation time.\n });\n }\n })\n // Handles the 'remove' action to delete a cache record.\n .addCase(actions.remove, (state, action) => {\n delete state[action.payload];\n })\n // Handles the 'invalidate' action to invalidate a cache record.\n .addCase(actions.invalidate, (state, action) => {\n const invalidKey = action.payload ? [action.payload] : Object.keys(state);\n // Invalidate either the single targeted key, or every key when none was specified\n for (const key of invalidKey) {\n const entry = state[key];\n // Only reset the timestamp when the record actually exists\n if (entry) {\n // reset the updated timestamp\n entry.updated = undefined;\n }\n }\n })\n // Handles the 'mutate' action to modify a cache record's value and metadata.\n .addCase(actions.mutate, (state, action) => {\n const { key, value, updated } = action.payload;\n const record = state[key];\n // Only apply the mutation when a record exists for this key\n if (record) {\n // Update the record with the new value and metadata.\n record.value = value;\n record.updated = updated;\n record.mutated = Date.now();\n record.updates ??= 0;\n record.updates++;\n }\n })\n // Handles the 'trim' action to limit the number of cache records and remove invalid ones.\n .addCase(actions.trim, (state, action) => {\n const { payload } = action;\n const sortFn = payload.sort ?? sortCache; // Use custom sort function if provided.\n const currentKeys = Object.keys(state);\n const validKeys = Object.entries(state)\n // Filter out invalid entries based on the provided validation function.\n .filter(([_, value]) => !payload.validate || payload.validate(value))\n // Sort the remaining entries using the provided sort function.\n .sort((a, b) => sortFn(a[1], b[1]))\n // Limit the number of entries based on the specified size or default to MAX_SAFE_INTEGER.\n .slice(0, payload.size ?? Number.MAX_SAFE_INTEGER)\n // Map the entries to their keys.\n .map(([key]) => key);\n // Remove keys that are not in the list of valid keys.\n if (currentKeys.length !== validKeys.length) {\n // Walk all current keys and drop the ones that were trimmed away\n for (const key of currentKeys) {\n const validKeyIndex = validKeys.indexOf(key);\n // The key survived trimming — remove it from the search list so later lookups are faster\n if (validKeyIndex !== -1) {\n // If the key is valid, remove it from the search list.\n validKeys.splice(validKeyIndex, 1);\n }\n else {\n // If the key is not valid, remove it from the state.\n delete state[key];\n }\n }\n }\n }));\n}\n//# sourceMappingURL=create-reducer.js.map","/**\n * Event class for QueryCache lifecycle events.\n *\n * This class represents events that track the various operations performed\n * on the QueryCache, providing type-safe event data and cache key tracking.\n *\n * @template TData - The type of data associated with this event\n */\nexport class QueryCacheEvent {\n type;\n key;\n data;\n /**\n * Creates a new QueryCache event.\n *\n * @param type - The specific event type identifier\n * @param key - The cache key associated with this event\n * @param data - Optional event-specific data payload\n */\n constructor(type, key, data) {\n this.type = type;\n this.key = key;\n this.data = data;\n }\n}\n//# sourceMappingURL=QueryCacheEvent.js.map","import { Subject } from 'rxjs';\nimport { FlowSubject } from '@equinor/fusion-observable';\nimport { actions } from './actions';\nimport createReducer from './create-reducer';\nimport { QueryCacheEvent, } from './QueryCacheEvent';\n/**\n * A class that represents a cache for storing query results.\n * @template TType - The type of the response data.\n * @template TArgs - The type of the arguments used to fetch the data.\n */\nexport class QueryCache {\n /**\n * The internal state of the query cache, represented as a FlowSubject.\n */\n #state;\n /**\n * Events subject for emitting QueryCache lifecycle events.\n *\n * This subject broadcasts events that track cache operations,\n * allowing external observers to monitor cache changes and mutations.\n */\n #events;\n /**\n * Retrieves the current state of the query cache as a record.\n * @returns {Record<string, QueryCacheRecord<TType, TArgs>>} The current state.\n */\n get state() {\n return this.#state.value;\n }\n /**\n * Retrieves an Observable that emits the current state of the query cache.\n * @returns {Observable<Record<string, QueryCacheRecord<TType, TArgs>>>} An observable of the current state.\n */\n get state$() {\n return this.#state.asObservable();\n }\n /**\n * Retrieves an Observable that emits the actions dispatched to the query cache.\n * @returns {Observable<Actions<TType, TArgs>>} An observable of the dispatched actions.\n */\n get action$() {\n return this.#state.action$;\n }\n /**\n * Protected method to emit QueryCache lifecycle events.\n *\n * This method creates and emits events that track the various operations performed\n * on the cache, allowing external observers to monitor cache changes and mutations.\n *\n * @template TType - The specific event type from QueryCacheEvents\n * @param type - The event type identifier\n * @param key - The cache key associated with this event\n * @param data - Optional event-specific data payload (type-safe based on event type)\n * @protected\n */\n _registerEvent(type, args) {\n this.#events.next(new QueryCacheEvent(type, args?.key, args?.data));\n }\n /**\n * An Observable stream of QueryCache lifecycle events.\n *\n * This stream emits events that track the various operations performed on the cache,\n * including entry set, inserted, removed, invalidated, mutated, and trimmed events.\n * Subscribers can monitor cache changes and handle different lifecycle events.\n *\n * @returns An Observable stream of QueryCache events\n */\n get event$() {\n return this.#events.asObservable();\n }\n /**\n * Creates a new instance of QueryCache.\n * @param {QueryCacheCtorArgs<TType, TArgs>} args - The constructor arguments.\n */\n constructor(args) {\n const { trimming, initial } = args ?? {};\n this.#state = new FlowSubject(createReducer(actions, initial));\n // Only wire up automatic trimming when a trimming policy was provided\n if (trimming) {\n this.#state.addEffect('cache/set', () => this.#state.next(actions.trim(trimming)));\n }\n // Initialize events subject for broadcasting lifecycle events\n this.#events = new Subject();\n }\n /**\n * Checks if an item exists in the query cache by key.\n * @param {string} key - The key of the item to check.\n * @returns {boolean} True if the item exists, otherwise false.\n */\n has(key) {\n return key in this.#state.value;\n }\n /**\n * Sets the value of an item in the query cache.\n * @param {string} key - The key of the item to set.\n * @param {Pick<QueryCacheRecord<TType, TArgs>, 'value' | 'args' | 'transaction'>} record - The new value of the item.\n */\n setItem(key, record) {\n const { args, transaction, value } = record;\n this.#state.next(actions.insert(key, { args, transaction, value }));\n this._registerEvent('query_cache_entry_inserted', { key, data: { value, args, transaction } });\n }\n /**\n * Retrieves an item from the query cache by key.\n * @param {string} key - The key of the item to retrieve.\n * @returns {QueryCacheRecord<TType, TArgs> | undefined} The cached item or undefined if not found.\n */\n getItem(key) {\n return this.#state.value[key];\n }\n /**\n * Removes an item from the query cache by key.\n * @param {string} key - The key of the item to remove.\n */\n removeItem(key) {\n this.#state.next(actions.remove(key));\n this._registerEvent('query_cache_entry_removed', { key });\n }\n /**\n * Invalidates an item in the query cache by key, causing it to be refetched on next request.\n * @param {string} key - The key of the item to invalidate.\n */\n invalidate(key) {\n const item = key ? this.#state.value[key] : undefined;\n this.#state.next(actions.invalidate(key, item));\n // Only emit an event when a specific key was invalidated (not a full-cache clear)\n if (key) {\n this._registerEvent('query_cache_entry_invalidated', {\n key,\n data: { previousValue: item?.value },\n });\n }\n }\n /**\n * Mutates an item in the query cache by key.\n * @param {string} key - The key of the item to mutate.\n * @param {QueryCacheMutation | ((current: TType) => QueryCacheMutation)} changes - The changes to apply to the item.\n * @returns A function that reverts the mutation, restoring the previous value.\n * @throws {Error} When no cache entry exists for `key`.\n */\n mutate(key, changes) {\n const current = key in this.#state.value ? this.#state.value[key] : undefined;\n // A missing entry cannot be mutated — mutation only ever updates existing entries\n if (!current) {\n throw new Error(`Cannot mutate cache item with key ${key}: item not found`);\n }\n const next = typeof changes === 'function' ? changes(current?.value) : changes;\n this.#state.next(actions.mutate(key, next, current));\n this._registerEvent('query_cache_entry_mutated', {\n key,\n data: {\n previousValue: current.value,\n newValue: next,\n mutation: next,\n },\n });\n return () => this.#state.next(actions.set(key, current));\n }\n /**\n * Trims the query cache based on the provided options.\n * @param {TrimOptions<TType, TArgs>} options - The options for trimming the cache.\n */\n trim(options) {\n const beforeKeys = new Set(Object.keys(this.#state.value));\n this.#state.next(actions.trim(options));\n const afterKeys = new Set(Object.keys(this.#state.value));\n // keys that existed before trimming but not after were the ones removed\n const removedKeys = Array.from(beforeKeys).filter((key) => !afterKeys.has(key));\n this._registerEvent('query_cache_trimmed', {\n data: {\n removedKeys,\n criteria: options,\n },\n });\n }\n /**\n * Resets the query cache to its initial state.\n */\n reset() {\n this.#state.reset();\n this._registerEvent('query_cache_reset');\n }\n /**\n * Completes the query cache, signaling that no more items will be added to the cache.\n */\n complete() {\n this.#state.complete();\n this.#events.complete();\n }\n}\nexport default QueryCache;\n//# sourceMappingURL=QueryCache.js.map","import { Subject } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\nimport { v4 as generateGUID } from 'uuid';\n/**\n * The `QueryTask` class is designed to manage and execute query operations efficiently. It extends the RxJS `Subject` to\n * allow for easy subscription to the outcome of the query operation. This class is generic and can be used with any type\n * of query result (`TType`) and arguments (`TArgs`) necessary for executing the query.\n *\n * Upon instantiation, each `QueryTask` is assigned a unique identifier and a timestamp marking its creation. This\n * information, along with the key and arguments provided during construction, are used to manage and track the query\n * throughout its lifecycle.\n *\n * The primary method, `processJob`, takes a `QueryClientJob` and an optional `ILogger` for logging purposes. It processes\n * the job by mapping its result to a `QueryTaskCompleted` object, logging the completion, and then notifying all\n * subscribers of the completion. This method leverages RxJS operators for a clean and manageable implementation.\n *\n * ### Generics:\n * - `TType`: The expected type of the query result. This type will be used to type-check the result of the query operation,\n * ensuring type safety throughout the usage of this class.\n * - `TArgs`: The type of the arguments required to perform the query. This ensures that only the correct types of arguments\n * are passed to execute the query, preventing runtime errors and ensuring type safety.\n *\n * ### Properties:\n * - `key`: A string that represents the key associated with the query. This key is used to identify the query operation.\n * - `args`: The arguments required for performing the query. The type of `args` is generic and specified by `TArgs`.\n * - `options`: An optional parameter that allows for additional configuration of the query execution. This is a partial\n * of `QueryOptions<TType, TArgs>`, allowing for flexibility in specifying query options.\n * - `created`: A read-only property that returns the timestamp marking the creation of the `QueryTask` instance.\n * - `uuid`: A read-only property that returns the unique identifier of the `QueryTask` instance.\n *\n * ### Method:\n * - `processJob(job: QueryClientJob<TType, TArgs>, logger?: ILogger): Subscription`: Processes the provided `QueryClientJob`,\n * applying necessary transformations and finalizations. It returns a `Subscription` to the job's result, allowing for\n * further manipulation or cleanup if necessary.\n *\n * This class provides a robust and type-safe way to handle query operations, making it a valuable tool for managing\n * asynchronous data retrieval and processing within the application.\n *\n * @template TType - The type of the query result.\n * @template TArgs - The type of the query arguments.\n */\nexport class QueryTask extends Subject {\n key;\n args;\n options;\n #created = Date.now();\n /**\n * Gets the creation timestamp of the query task.\n * @returns The Unix timestamp (in milliseconds) when the task was created.\n */\n get created() {\n return this.#created;\n }\n #uuid = generateGUID();\n /**\n * Gets the unique identifier of the query task.\n * @returns The task's generated UUID.\n */\n get uuid() {\n return this.#uuid;\n }\n /**\n * Initializes a new instance of the QueryTask class.\n * @param key A string representing the key associated with the query.\n * @param args The arguments required for performing the query.\n * @param options Optional. Additional options that may influence the query execution.\n */\n constructor(key, args, options) {\n super();\n this.key = key;\n this.args = args;\n this.options = options;\n }\n /**\n * Processes the given `QueryClientJob`, applying necessary transformations and finalizations.\n * Once the job completes, it notifies all subscribers with the result and logs the completion.\n *\n * @param job The `QueryClientJob` to be processed.\n * @param logger Optional. A logger for logging the completion of the job.\n * @returns A subscription to the job's result.\n */\n processJob(job) {\n // map the job's completion into a QueryTaskCompleted record for subscribers\n return job\n .pipe(map((result) => {\n const { key, uuid, created } = this;\n return {\n key,\n uuid,\n created,\n status: 'complete',\n transaction: job.transaction,\n complete: result.completed,\n value: result.value,\n };\n }), finalize(() => {\n job.complete();\n }))\n .subscribe(this);\n }\n}\n//# sourceMappingURL=QueryTask.js.map","/**\n * Concrete event class emitted by the {@link Query} instance itself.\n *\n * Represents lifecycle events for query creation, completion, caching, and job management.\n * Subscribers can use `instanceof QueryEvent` to filter for query-level events\n * when the aggregated `event$` stream also contains client and cache events.\n *\n * @template TData - The type of data payload carried by this event.\n */\nexport class QueryEvent {\n type;\n key;\n data;\n /**\n * Creates a new Query event.\n *\n * @param type - The specific event type identifier.\n * @param key - The cache key associated with this event.\n * @param data - Optional event-specific data payload.\n */\n constructor(type, key, data) {\n this.type = type;\n this.key = key;\n this.data = data;\n }\n}\n//# sourceMappingURL=QueryEvent.js.map","import { EMPTY, firstValueFrom, fromEvent, interval, lastValueFrom, Observable, Subject, Subscription, } from 'rxjs';\nimport { catchError, distinctUntilChanged, filter, map, takeWhile, tap, throwIfEmpty, } from 'rxjs/operators';\nimport { v4 as generateGUID, v5 as generateUniqueKey } from 'uuid';\nimport { QueryClient } from './client';\nimport { QueryCache } from './cache';\nimport { concatQueue, mergeQueue, queryValue, switchQueue } from './operators';\nimport { filterAction } from '@equinor/fusion-observable/operators';\nimport { QueryTask } from './QueryTask';\nimport { QueryEvent } from './QueryEvent';\n/**\n * The default function for validating cache entries based on expiration time.\n * This function generates a validator that checks whether the cache entry has expired based on the current time\n * and the expiration time provided. If the expiration time is 0, the cache entry is always considered invalid.\n *\n * @template TDataType - The type of the data in the cache entry.\n * @template TQueryArguments - The type of the arguments used to validate the cache entry.\n *\n * @param expires - The expiration time in milliseconds. If 0, the cache entry is always considered invalid.\n *\n * @returns A function that takes a cache entry and returns a boolean indicating whether the entry is still valid.\n */\nconst defaultCacheValidator = (expires = 0) => (entry) => (entry.updated ?? 0) + expires > Date.now();\n/**\n * A utility function that returns a query queue function based on the provided operator type or custom function.\n * The queue function is responsible for controlling how query requests are processed in relation to each other.\n * Depending on the chosen strategy, requests can be canceled, run in parallel, or executed sequentially.\n *\n * The 'switch' operator (default) cancels any ongoing request when a new one comes in, ensuring that only the latest request is processed.\n * The 'merge' operator allows multiple requests to be processed in parallel without waiting for any to complete.\n * The 'concat' operator processes requests one after another, in the order they were added to the queue, waiting for each to complete before starting the next.\n *\n * @template TDataType - The type of the data returned by the query.\n * @template TQueryArguments - The type of the arguments passed to the query function.\n *\n * @param type - The operator type ('switch', 'merge', 'concat') or custom function to use for queuing requests. Defaults to 'switch'.\n *\n * @returns A function that takes a query request and returns an Observable representing the queued request.\n */\nconst getQueueOperator = (type = 'switch') => {\n // A custom queue function was provided, use it directly\n if (typeof type === 'function') {\n return type;\n }\n return (() => {\n // Map the named operator type to its concrete implementation\n switch (type) {\n case 'concat':\n return concatQueue;\n case 'merge':\n return mergeQueue;\n case 'switch':\n return switchQueue;\n default:\n throw new Error(`Invalid queue operator: ${type}`);\n }\n })();\n};\n/**\n * The primary use case for `Query` involves:\n * - Asynchronous Data Fetching: Seamlessly fetching data from APIs or databases asynchronously without blocking the UI, improving the user experience.\n * - Caching: Storing fetched data in a cache to improve performance by reducing the number of redundant requests to the server.\n * - Automatic Updates: Automatically updating the UI when the underlying data changes, without requiring explicit refresh actions from the user.\n * - Concurrent Requests Management: Efficiently handling multiple, concurrent data fetches through strategies like merging, switching, or concatenating requests.\n * - Retry and Error Handling: Automatically retrying failed requests and handling errors gracefully to ensure application stability.\n *\n * ## Benefits\n *\n * Using a `Query` mechanism offers numerous benefits, including:\n * 1. Improved Performance and Efficiency: By caching responses and reducing unnecessary server requests, applications load faster and use fewer resources, both on the client and server side.\n * 2. Simplified Data Fetching Logic: It abstracts away the boilerplate code associated with fetching data, handling errors, and managing response states, leading to cleaner and more maintainable code.\n * 3. Automatic Synchronization: `Query` libraries often come with features to automatically refetch data on certain triggers (e.g., window focus), ensuring the UI is always up-to-date with the latest server state without manual intervention.\n * 4. Built-in Asynchronous Management: Handling asynchronous data fetches becomes straightforward, with built-in support for loading states, error handling, and data updates.\n * 5. Scalability: Easily scalable for complex applications, supporting various fetching strategies to manage multiple data sources, endpoints, and concurrent requests effectively.\n * 6. Developer Experience: By standardizing the approach to data fetching and state management, it enhances developer experience, reducing the cognitive load and making it easier to onboard new developers.\n * 7. Robust Error and Retry Handling: Features to automatically retry requests and sophisticated mechanisms for error handling improve application reliability.\n * 8. Customizable and Extendable: While offering sensible defaults for most use cases, `Query` implementations are usually highly customizable, allowing developers to tailor their behavior for specific needs, such as custom caching strategies, query deduplication, and more.\n *\n * ## Examples\n * Example of creating a basic query with a query function:\n * @example\n * ```typescript\n * import { Query, QueryFn } from '@equinor/fusion-query';\n *\n * type ExampleData = {\n * id: string;\n * name: string;\n * value: number;\n * }\n *\n * // create a query function\n * const queryFn: QueryFn<ExampleData, {id: string}> = async (args, signal) => {\n * const response = await fetch(`https://api.example.com/data?id=${args.id}`, {signal});\n * return response.json();\n * };\n *\n * const queryOptions = QueryCtorOptions<ExampleData, {id: string}> = {\n * client: { fn: queryFn },\n * key: (args) => args.id,\n * // optional cache options\n * // optional queue operator\n * // optional logger\n * };\n *\n * // create a new Query instance with the options\n * const query = new Query(queryOptions);\n *\n * ```\n *\n * @see {@link QueryCtorOptions} for more details on the constructor options.\n * @see {@link Query.query} for more details on executing a query.\n * @see {@link Query.queryAsync} for more details on executing a query asynchronously.\n * @see {@link Query.mutate} for more details on mutating cache entries.\n * @see {@link Query.invalidate} for more details on invalidating cache entries.\n * @see {@link QueueOperatorType} for more details on the available queue operators.\n */\nexport class Query {\n /**\n * Static utility that extracts the raw value from a query result Observable.\n *\n * Transforms a stream of `QueryTaskValue<TType>` into a plain `Observable<TType>`,\n * stripping away query metadata such as status, transaction, and timestamps.\n *\n * @see {@link queryValue} for the standalone operator function.\n */\n static extractQueryValue = queryValue;\n /**\n * A private Subscription instance that holds all internal subscriptions.\n * It is used for cleanup when the query is completed or no longer needed.\n * This ensures that all resources are properly released and no memory leaks occur.\n */\n #subscription = new Subscription();\n /**\n * A private instance of QueryClient that is used to fetch data.\n * This client encapsulates the logic for making the actual query requests and handling their responses.\n */\n #client;\n /**\n * A private instance of QueryCache that is used to cache query results.\n * This cache stores the results of queries, allowing for quick retrieval of data without the need to make additional network requests.\n */\n #cache;\n /**\n * A private Subject that represents the queue of query requests.\n * This queue is used to manage the execution of concurrent query requests according to the chosen queuing strategy.\n */\n #queue$ = new Subject();\n /**\n * A private record object that stores ongoing query tasks, indexed by a unique reference key.\n * This record keeps track of all active query tasks, allowing for management and coordination of their execution.\n */\n #tasks = {};\n /**\n * A private function that generates a unique cache key for the provided arguments.\n * This key is used to store and retrieve cache entries, ensuring that each set of arguments has its own distinct entry.\n */\n #generateCacheKey;\n /**\n * A private function that validates cache entries.\n * This function is called to determine whether a cache entry is still valid or if it should be considered stale and discarded.\n */\n #validateCacheEntry;\n /**\n * A private unique namespace string generated using a UUID.\n * It is used to ensure cache keys are unique across different instances of the query.\n * This prevents cache collisions where different queries could otherwise end up using the same cache entry.\n */\n #namespace = generateGUID();\n /**\n * An optional observer for emitting query events.\n * If provided, events will be emitted instead of or in addition to logging.\n */\n #event$;\n /**\n * A public getter for the client instance.\n * TODO(#5144): Implement a proxy to control access to the client.\n * This proxy would allow for additional functionality or restrictions when accessing the client instance.\n * @returns The internal `QueryClient` instance used to fetch data.\n */\n get client() {\n // TODO(#5144): Proxy\n return this.#client;\n }\n /**\n * Protected helper method to register events if an event observer is configured.\n * @template TKey - The event type key, constrained to the keys of `QueryEvents`.\n * @param type - The event type\n * @param key - The cache/query key the event relates to\n * @param data - The event data\n */\n _registerEvent(type, key, data) {\n this.#event$.next(new QueryEvent(type, key, data));\n }\n /**\n * A public getter for the cache instance.\n * TODO(#5144): Implement a proxy to control access to the cache.\n * This proxy would allow for additional functionality or restrictions when accessing the cache instance.\n * @returns The internal `QueryCache` instance used to cache query results.\n */\n get cache() {\n // TODO(#5144): Proxy\n return this.#cache;\n }\n /**\n * An Observable stream of Query events. It allows subscribers to react to\n * query lifecycle events such as query creation, cache hits, task execution, etc.\n * Also includes QueryClient events for complete observability.\n * @returns {Observable<CombinedQueryEvent<TDataType, TQueryArguments>>} An Observable stream of events.\n */\n get event$() {\n return this.#event$.asObservable();\n }\n /**\n * The constructor for the Query class.\n * It initializes the query client, cache, and sets up the query request queue.\n * The constructor takes an options object which can include a custom client, cache, key generation function,\n * cache validation function, cache expiration time, queuing strategy, and a logger.\n *\n * @param options - The constructor options for the Query instance.\n */\n constructor(options) {\n this.#event$ = new Subject();\n this.#generateCacheKey = (args) => {\n // Use the provided key generation function from options and namespace to ensure unique cache keys across instances\n return generateUniqueKey(options.key(args), this.#namespace);\n };\n // Set the cache entry validation function. Use the provided one or the default based on expiration time\n this.#validateCacheEntry =\n options?.validate ?? defaultCacheValidator(options?.expire);\n // Initialize the query client. Use the provided client instance or create a new one with provided function and options\n if (options.client instanceof QueryClient) {\n this.#client = options.client;\n }\n else {\n this.#client = new QueryClient(options.client.fn, {\n // Spread any additional options provided for the client\n ...options.client.options,\n });\n // Ensure client resources are cleaned up when the query instance is disposed\n this.#subscription.add(() => this.#client.complete());\n }\n this.#subscription.add(this.#client.event$.subscribe({\n next: (event) => this.#event$.next(event),\n }));\n // Initialize the query cache. Use the provided cache instance or create a new one with provided constructor arguments\n if (options.cache instanceof QueryCache) {\n this.#cache = options.cache;\n }\n else {\n // If no cache is provided, create a new instance with default or provided constructor arguments\n this.#cache = new QueryCache(options.cache || {});\n // Ensure cache resources are cleaned up when the query instance is disposed\n this.#subscription.add(() => this.#cache.complete());\n }\n this.#subscription.add(this.#cache.event$.subscribe({\n next: (event) => this.#event$.next(event),\n }));\n // The queueOperator is a function that determines how query requests are handled when multiple requests are made concurrently.\n // It is derived from the useQueueOperator utility function, which takes the provided queueOperatorType or custom function\n // from the QueryCtorOptions and returns the corresponding queue function.\n // The queue function is then used in the observable pipeline to manage the execution of query requests according to the chosen strategy.\n const queueOperator = getQueueOperator(options.queueOperator);\n // shutdown the queue when the query is completed\n this.#subscription.add(() => this.#queue$.complete());\n this.#subscription.add(this.#queue$\n // register queued events, then apply the queue operator to the ongoing tasks\n .pipe(tap((key) => {\n this._registerEvent('query_queued', key);\n }), \n // skip tasks that are not in the ongoing tasks record\n filter((key) => !!(key in this.#tasks)), \n // Apply the queue operator to the query requests, which controls the execution order\n queueOperator((key) => {\n const task = this.#tasks[key];\n const { args, options, uuid } = task;\n this._registerEvent('query_job_selected', key, { taskId: uuid, args, options });\n // Check if the task is still observed, if not, skip it\n if (!task?.observed) {\n this._registerEvent('query_job_skipped', key, { taskId: uuid, args, options });\n delete this.#tasks[key];\n return EMPTY;\n }\n // Initiate a new query using the client, passing in the arguments and options\n // The 'ref' option is used to associate the task with a specific query request\n const job = this.#client.query(args, {\n ...options,\n ref: task.uuid,\n });\n return new Observable((subscriber) => {\n const { transaction } = job;\n this._registerEvent('query_job_started', key, {\n taskId: uuid,\n transaction,\n args,\n options,\n });\n // Add a cleanup function to the subscriber that will be called when the subscription is closed.\n // This function logs the task closure, cancels the job to prevent further processing, and removes the task from the ongoing tasks record.\n subscriber.add(() => {\n this._registerEvent('query_job_closed', key, {\n taskId: uuid,\n transaction,\n args,\n options,\n });\n job.complete('task closed');\n delete this.#tasks[key];\n });\n // Add a periodic check to the subscriber that will cancel the job if it is no longer observed.\n // This is to ensure resources are not wasted on tasks that are no longer of interest.\n subscriber.add(interval(10)\n .pipe(filter(() => !task.observed))\n .subscribe(() => {\n job.cancel(`task: ${task.uuid} is not observed`);\n subscriber.complete();\n }));\n // Process the job using the task's custom logic, which includes handling of the query response and any errors.\n // This processing is specific to the task and may involve updating the cache, logging, or other side effects.\n subscriber.add(task.processJob(job).add(() => {\n this._registerEvent('query_job_completed', key, {\n taskId: uuid,\n transaction,\n args,\n options,\n });\n }));\n // Map the job Observable to a QueryQueueResult object, which includes the result and request details.\n // This mapping allows the subscriber to receive a structured response including the task details and the query result.\n job\n .pipe(map((result) => ({\n result,\n task,\n })), \n // Catch any errors that occur during the job processing and complete the observable to prevent hanging subscriptions.\n // This ensures that errors are handled gracefully and do not prevent the completion of the observable chain.\n catchError(() => EMPTY))\n .subscribe(subscriber);\n });\n }), takeWhile(() => !this.#client.closed))\n // Subscribe to the processed tasks and update the cache with their results\n .subscribe((task) => {\n const { value, transaction } = task.result;\n const { args, key, uuid } = task.task;\n this._registerEvent('query_cache_added', key, {\n data: value,\n taskId: uuid,\n args,\n transaction,\n });\n this._registerEvent('query_completed', key, { data: value, hasValidCache: true });\n // Update the cache item with the new value, arguments, and transaction\n this.#cache.setItem(key, {\n value,\n args,\n transaction,\n });\n }));\n }\n /**\n * Executes a query and returns an Observable that emits the result.\n * It will throw an error if the query was skipped or canceled.\n * The returned Observable can be subscribed to in order to receive updates on the query's execution and results.\n *\n * @param args - The arguments to be passed to the query function.\n * @param options - Optional additional options for the query.\n * @returns An Observable that emits the result of the query.\n */\n query(args, options) {\n return this._query(args, options);\n }\n /**\n * Executes an asynchronous query and returns a Promise that resolves with the result.\n * If `skipResolve` is set to true, the Promise resolves as soon as the query is sent (using `firstValueFrom`).\n * If `skipResolve` is false or not provided, the Promise resolves with the final result of the query (using `lastValueFrom`).\n * This method is useful for cases where an asynchronous, one-time result is needed rather than a stream of updates.\n * Note that skipping resolution may result in returning invalid cache.\n *\n * @example\n * ```typescript\n * try{\n * const result = await query.queryAsync({ id: '123' });\n * console.log(result);\n * } catch (error) {\n * console.error(error);\n * }\n * ```\n *\n * @param payload - The arguments to be passed to the query function.\n * @param opt - Optional additional options for the query. The `skipResolve` option determines the resolution behavior of the Promise.\n * @returns A Promise that resolves with the result of the query or rejects with an Error.\n */\n queryAsync(payload, opt) {\n const { skipResolve, ...args } = opt || {};\n const fn = skipResolve ? firstValueFrom : lastValueFrom;\n return new Promise((resolve, reject) => {\n // Reject the promise early if the caller aborts via the signal\n if (opt?.signal) {\n opt.signal.addEventListener('abort', () => reject(new Error('Query aborted')));\n }\n // Throw if the query completes without emitting a value\n fn(this._query(payload, args).pipe(throwIfEmpty())).then(resolve, reject);\n });\n }\n /**\n * Executes a query that remains subscribed to cache mutations after the initial fetch completes.\n *\n * Unlike {@link Query.query}, which completes after emitting the result, `persistentQuery`\n * continues to emit whenever the underlying cache entry is updated or mutated.\n * This is useful for scenarios where the UI must reflect optimistic updates,\n * background refetches, or external cache mutations in real time.\n *\n * The returned Observable deduplicates emissions based on the transaction identifier\n * and mutation timestamp, so subscribers only receive meaningful state changes.\n *\n * @param args - The arguments to pass to the query function.\n * @param options - Optional query options including signal, retry, and cache validation overrides.\n * @returns An Observable that emits cached and completed results, and continues emitting on cache mutations.\n */\n persistentQuery(args, options) {\n const key = this.#generateCacheKey(args);\n const original = this._query(args, options);\n const cacheAwareStream = new Observable((subscriber) => {\n subscriber.add(original.subscribe({\n next: subscriber.next.bind(subscriber),\n error: subscriber.error.bind(subscriber),\n }));\n // Use the provided validation function or the default cache validator to determine if the cache entry is valid.\n const validateCache = options?.cache?.validate || this.#validateCacheEntry;\n // Subscribe to the cache state and filter for the specific cache entry based on the key.\n subscriber.add(this.cache.state$\n // narrow the cache state stream down to just this key's entry\n .pipe(filter((x) => key in x), map((x) => ({\n ...x[key],\n key,\n status: 'cache',\n hasValidCache: validateCache(x[key], args),\n })))\n .subscribe(subscriber));\n });\n // only emit when the transaction changes\n return cacheAwareStream.pipe(distinctUntilChanged((a, b) => a.transaction === b.transaction &&\n a.mutated === b.mutated));\n }\n /**\n * Generates a cache key based on the provided query arguments.\n * This method is used internally to uniquely identify cache entries.\n *\n * @param args - The query arguments to be used for generating the cache key.\n * @returns A string representing the cache key.\n */\n generateCacheKey(args) {\n return this.#generateCacheKey(args);\n }\n /**\n * Performs a mutation on the cache entry associated with the given arguments.\n * This method allows for updating the state of a cache entry without needing to perform a new query.\n * The changes are applied by invoking the `mutate` method on the cache with the generated key and the changes function.\n *\n * @param args - The arguments that identify the specific cache entry to be mutated.\n * @param changes - A function that defines the changes to be applied to the cache entry.\n * @param options - Optional settings; `allowCreation` controls whether a missing cache entry may be created.\n * @returns A function that reverts the mutation when called.\n * @throws {Error} When no cache entry exists for `args` and `options.allowCreation` is `undefined`.\n */\n mutate(args, changes, options) {\n const key = this.#generateCacheKey(args);\n // No existing cache entry for this key — decide whether to create one or fail\n if (key in this.cache.state === false) {\n // No explicit allowCreation setting provided — fail closed rather than silently creating\n if (options?.allowCreation === undefined) {\n throw new Error(`Cannot mutate cache item with key ${key}: item not found and option \"allowCreation\" is false`);\n }\n else if (options.allowCreation === false) {\n /** does not allow creation, can not mutate */\n return () => { };\n }\n const { value } = typeof changes === 'function' ? changes() : changes;\n this.cache.setItem(key, {\n args,\n transaction: generateGUID(),\n value,\n });\n }\n return this.#cache.mutate(key, changes);\n }\n /**\n * Invalidates a specific cache record or all records if no arguments are provided.\n * When a specific record is invalidated, it is identified by the provided arguments.\n * If no arguments are provided, all records in the cache are invalidated, effectively clearing the cache.\n *\n * @param args - Optional arguments that identify the specific cache record to be invalidated.\n * If not provided, all cache records will be invalidated.\n */\n invalidate(args) {\n this.#cache.invalidate(args && this.#generateCacheKey(args));\n }\n /**\n * Completes all subscriptions and cleans up resources.\n * This method should be called when the Query instance is no longer needed, to ensure that all resources are properly released.\n * Failing to call `complete` could result in memory leaks due to lingering subscriptions.\n */\n complete() {\n this.#subscription.unsubscribe();\n this.#event$?.complete();\n }\n //#region Event Handlers\n /**\n * Registers a callback function that will be invoked when a cache invalidation occurs.\n * The callback function will receive an event object containing the details of the invalidation,\n * including the affected cache entry, if available.\n * The returned function can be called to unsubscribe the callback from further invalidation events.\n *\n * @param cb - The callback function to be registered.\n * @returns A function that, when called, will unsubscribe the callback from further invalidation events.\n */\n onInvalidate(cb) {\n // only forward cache-invalidation actions to the callback\n const subscription = this.#cache.action$\n .pipe(filterAction('cache/invalidate'))\n .subscribe((action) => cb({ detail: { item: action.meta.item } }));\n return () => subscription.unsubscribe();\n }\n /**\n * Registers a callback function that will be invoked when a mutation occurs on the cache.\n * The callback function will receive an event object containing the details of the mutation,\n * including the changes made and the current state of the cache entry, if available.\n *\n * @param cb - The callback function to be registered.\n * @returns A function that, when called, will unsubscribe the callback from further mutation events.\n */\n onMutate(cb) {\n // only forward cache-mutation actions to the callback\n const subscription = this.#cache.action$\n .pipe(filterAction('cache/mutate'))\n .subscribe((action) => cb({ detail: { changes: action.payload, current: action.meta.item } }));\n return () => subscription.unsubscribe();\n }\n //#endregion\n /**\n * Internal method that executes a query and returns an Observable with the result.\n *\n * @param args - The arguments to be passed to the query function.\n * @param options - Optional additional options for the query.\n * @returns An Observable that emits the result of the query.\n */\n _query(args, options) {\n const key = this.#generateCacheKey(args);\n const task = this._createTask(key, args, options);\n this._registerEvent('query_created', key, { args, options });\n return task;\n }\n /**\n * The `_createTask` method is responsible for initiating a query task, which involves either returning a cached result or\n * starting a new query request. This method encapsulates the logic for creating and managing the lifecycle of a query task.\n * It ensures that if a query with the same arguments is initiated multiple times, they will all share the same task observable,\n * thus avoiding duplicate network requests and unnecessary computation.\n *\n * @param key - A string that uniquely identifies the cache entry associated with the query arguments. This key is used to\n * check if there is already a cached result that can be returned immediately, avoiding the need for a new network request.\n * @param args - The arguments that will be passed to the query function. These arguments are used to generate the cache key\n * and are also passed to the query function when making a new request.\n * @param options - An optional object containing additional options for the query. This can include custom cache validation\n * logic and retry strategies. For example, options can specify whether to suppress the emission of invalid\n * cache entries or to define a custom function for validating the cache.\n *\n * @returns An Observable that emits the result of the query task. If a valid cache entry is found, the Observable will emit\n * the cached result. If no valid cache entry exists, the Observable will emit the result of a new query request once\n * it completes. Subscribers to this Observable will receive updates on the query's execution and results.\n *\n * The method performs the following steps:\n * 1. Creates a new Observable that represents the task to be executed.\n * 2. Attempts to retrieve a cache entry using the provided `key`.\n * 3. If a cache entry is found, it checks whether the entry is still valid using the provided validation function or the default one.\n * - If the cache entry is valid, it emits the cached result and completes the Observable.\n * - If the cache entry is not valid or does not exist, it proceeds to the next step.\n * 4. Checks if there is already an ongoing task for the same query (identified by the `key`).\n * - If there is an ongoing task, it subscribes the new Observable to the existing task.\n * - If there is no ongoing task, it creates a new `QueryTask` instance and adds it to the ongoing tasks record.\n * 5. Subscribes to the new or existing task, forwarding any emissions to the subscriber of the returned Observable.\n * 6. Adds the new task to the query queue by emitting the `key` on the `#queue$` Subject, which will eventually trigger the processing\n * of the task based on the queuing strategy.\n * 7. The task is finalized (removed from the ongoing tasks record) when it completes or errors out.\n *\n * Note: The subscribers to the returned Observable are responsible for subscribing and unsubscribing to manage the lifecycle of the\n * subscription. The method ensures that the task is properly cleaned up when it is no longer needed.\n */\n _createTask(key, args, options) {\n // Create a new Observable that represents the query task and will be returned to the caller.\n return new Observable((subscriber) => {\n // Support cancellation via an AbortSignal\n if (options?.signal) {\n // Already aborted before subscription — complete immediately without doing any work\n if (options?.signal.aborted) {\n this._registerEvent('query_aborted', key);\n return subscriber.complete();\n }\n subscriber.add(fromEvent(options?.signal, 'abort').subscribe(() => {\n this._registerEvent('query_aborted', key);\n subscriber.complete();\n }));\n }\n // Attempt to retrieve the cache entry associated with the provided key.\n const cacheEntry = this.#cache.getItem(key);\n // If a cache entry exists and is valid, emit it as the next value to the subscriber.\n if (cacheEntry) {\n this._registerEvent('query_cache_hit', key, { cacheEntry });\n const suppressInvalid = options?.cache?.suppressInvalid ?? false;\n // Use the provided validation function or the default cache validator to determine if the cache entry is valid.\n const validateCache = options?.cache?.validate || this.#validateCacheEntry;\n // Check if the cache entry is valid based on the provided validation function.\n const hasValidCache = validateCache(cacheEntry, args);\n const record = {\n ...cacheEntry,\n key,\n status: 'cache',\n hasValidCache,\n };\n // Emit the cache entry as the next value to the subscriber. This step is crucial as it allows\n // the subscriber to receive the cached data immediately, without waiting for a new fetch operation.\n // The emitted record contains the cache entry data, along with metadata such as the cache key,\n // the status indicating that this is a cached response, and a flag indicating whether the cache\n // is considered valid based on the validation logic.\n subscriber.next(record);\n // Complete without fetching when the cache is valid, or invalid entries are intentionally suppressed\n if (hasValidCache || suppressInvalid) {\n this._registerEvent('query_completed', key, { data: cacheEntry.value, hasValidCache });\n // If the cache is valid, or if invalid cache entries should be suppressed (not re-fetched),\n // complete the subscription to prevent further actions.\n // This ensures that if the cache data is sufficient or if the strategy is to avoid using invalid cache without refetching,\n // the observable sequence completes here.\n return subscriber.complete();\n }\n // This will fetch new data and update the cache entry with the latest result.\n this._registerEvent('query_cache_miss', key);\n }\n // If the cache entry does not exist or is invalid, proceed to queue a new query request.\n const isExistingTask = key in this.#tasks;\n // No task is already tracking this key — create one and register it before queuing\n if (!isExistingTask) {\n this.#tasks[key] = new QueryTask(key, args, options);\n this._registerEvent('query_job_created', key, {\n taskId: this.#tasks[key].uuid,\n args,\n options,\n });\n }\n else {\n this._registerEvent('query_connected', key, { isExistingTask: true });\n }\n const task = this.#tasks[key];\n // Connect the subscriber to the task to receive updates on the query's execution and results.\n subscriber.add(task.subscribe(subscriber));\n // If this is a new task, add it to the query queue to be processed.\n if (!isExistingTask) {\n this.#queue$.next(key);\n }\n });\n }\n}\nexport default Query;\n//# sourceMappingURL=Query.js.map","import z from 'zod';\n/**\n * Zod schema for a single service object returned by the service\n * discovery API.\n *\n * Validates required fields (`key`, `uri`) and optional metadata, then\n * transforms the result to include a backward-compatible `defaultScopes`\n * accessor.\n */\nconst ApiService = z\n .object({\n key: z.string().describe('The key used to identify the service'),\n uri: z.string().describe('The URI of the service'),\n id: z.string().optional().describe('The ID of the service'),\n environment: z.string().optional().describe('The environment of the service'),\n name: z.string().optional().describe('The name of the service'),\n scopes: z.array(z.string()).optional().default([]).describe('Endpoint authentication scopes'),\n tags: z.array(z.string()).optional().describe('Tags for the service'),\n})\n .describe('A service from the service discovery API')\n .transform((value) => ({\n ...value,\n /** @deprecated use `scopes` */\n get defaultScopes() {\n return value.scopes ?? [];\n },\n}));\n/**\n * Zod schema for the service list returned by the service discovery API.\n *\n * Parses and validates an array of service objects, each conforming to the\n * `ApiService` schema above. Used internally by\n * {@link ServiceDiscoveryClient} to validate API responses.\n */\nexport const ApiServices = z\n .array(ApiService)\n .describe('A list of services from the service discovery API');\n//# sourceMappingURL=api-services.js.map","import { Query } from '@equinor/fusion-query';\nimport { firstValueFrom, from, lastValueFrom, map, } from 'rxjs';\nimport { jsonSelector } from '@equinor/fusion-framework-module-http/selectors';\nimport { ApiServices } from './api-services';\n/** Cache key used by the internal {@link Query} instance. */\nconst queryKey = 'services';\n/**\n * Transforms a fetch {@link Response} into an observable that emits a\n * validated array of {@link Service} objects.\n *\n * The response body is parsed as JSON, validated against the\n * {@link ApiServices} Zod schema, and optionally piped through a\n * `postProcess` operator (used for session overrides).\n *\n * @param response - Raw fetch response from the service discovery API.\n * @param postProcess - Optional RxJS operator to transform the parsed list.\n * @returns An `ObservableInput` emitting the final `Service[]`.\n */\nconst serviceResponseSelector = (response, postProcess) => {\n // parse response by using the jsonSelector\n const result$ = from(jsonSelector(response)).pipe(\n // parse and validate the response\n map((value) => ApiServices.default([]).parse(value)));\n // Only apply a transform pipeline when the caller supplied one\n if (postProcess) {\n // Apply the caller-supplied operator (e.g. session overrides) before emitting\n return result$.pipe(postProcess);\n }\n return result$;\n};\n/**\n * Default service discovery client that fetches endpoints from a remote API,\n * validates the response with Zod, caches results via {@link Query}, and\n * supports `sessionStorage`-based overrides.\n *\n * @remarks\n * Results are cached for 5 minutes. When `allow_cache` is `true`,\n * {@link resolveServices} returns the first cached value immediately;\n * otherwise it waits for the latest API response.\n */\nexport class ServiceDiscoveryClient {\n #query;\n /** Sub-path appended to the HTTP client's base URI when fetching services. */\n endpoint;\n /** HTTP client used to call the service discovery API. */\n http;\n /**\n * @param options - Construction options including the HTTP client,\n * optional endpoint path, and optional post-processing operator.\n */\n constructor(options) {\n this.http = options.http;\n this.endpoint = options.endpoint;\n const postProcess = options.postProcess;\n // setup api handler (queue and cache)\n this.#query = new Query({\n client: {\n fn: () => this.http.fetch$(this.endpoint ?? '', {\n selector: (response) => serviceResponseSelector(response, postProcess),\n }),\n },\n key: () => queryKey,\n // Cache for 5 minutes\n expire: 5 * 60 * 1000,\n });\n }\n /** {@inheritDoc IServiceDiscoveryClient.resolveServices} */\n resolveServices(allow_cache) {\n // firstValueFrom returns the cached snapshot; lastValueFrom waits for\n // the freshest value from the query\n const fn = allow_cache ? firstValueFrom : lastValueFrom;\n return fn(Query.extractQueryValue(this.#query.query()));\n }\n /** {@inheritDoc IServiceDiscoveryClient.resolveService} */\n async resolveService(key, allow_cache) {\n const services = await this.resolveServices(allow_cache);\n // Locate the service matching the requested key\n const service = services.find((s) => s.key === key);\n // Fail loudly when the requested key doesn't resolve to a known service\n if (!service) {\n throw Error(`Failed to resolve service, invalid key [${key}]`);\n }\n return service;\n }\n}\n//# sourceMappingURL=client.js.map","import { from, lastValueFrom, map } from 'rxjs';\nimport { BaseConfigBuilder, } from '@equinor/fusion-framework-module';\nimport { ServiceDiscoveryClient } from './client';\n/**\n * Configuration builder for the Service Discovery module.\n *\n * Provides a fluent API to set up how service endpoints are resolved.\n * The simplest path is to call\n * {@link ServiceDiscoveryConfigurator.configureServiceDiscoveryClientByClientKey | configureServiceDiscoveryClientByClientKey}\n * with the HTTP client key that points to the service discovery backend.\n *\n * For full control, use\n * {@link ServiceDiscoveryConfigurator.setServiceDiscoveryClient | setServiceDiscoveryClient}\n * to supply a custom {@link IServiceDiscoveryClient} implementation.\n *\n * @example\n * ```typescript\n * enableServiceDiscovery(configurator, async (builder) => {\n * builder.configureServiceDiscoveryClientByClientKey('sd_custom', '/services/v2');\n * });\n * ```\n */\nexport class ServiceDiscoveryConfigurator extends BaseConfigBuilder {\n /**\n * Creates the final {@link ServiceDiscoveryConfig}.\n *\n * When no explicit discovery client has been registered, this method\n * auto-detects an HTTP client with key `\"service_discovery\"` and uses it\n * as the default transport.\n *\n * @param init - Builder callback arguments providing module accessors.\n * @param initial - Optional partial config inherited from a parent module.\n * @returns The fully resolved configuration.\n * @throws {Error} When the HTTP module is not registered.\n */\n async _createConfig(init, initial) {\n // The service discovery client depends on the http module being registered\n if (!init.hasModule('http')) {\n throw new Error('http module is required');\n }\n // if discoveryClient is not configured, check if http module has a client with key 'service_discovery'\n if (!this._has('discoveryClient')) {\n // check if http module has a client with key 'service_discovery'\n const httpProvider = await init.requireInstance('http');\n // Auto-configure only when a matching http client has actually been registered\n if (httpProvider.hasClient('service_discovery')) {\n this.configureServiceDiscoveryClientByClientKey('service_discovery');\n }\n }\n // convert parent to promise\n return lastValueFrom(from(super._createConfig(init, initial)));\n }\n /**\n * Validates and finalizes the service discovery configuration.\n *\n * @param config - Partial configuration assembled by the builder.\n * @param init - Builder callback arguments.\n * @returns An observable that emits the complete {@link ServiceDiscoveryConfig}.\n * @throws {Error} When `discoveryClient` has not been configured.\n */\n _processConfig(config, init) {\n // A discovery client is mandatory before the config can be considered complete\n if (!config.discoveryClient) {\n throw new Error('discoveryClient is required, please configure it');\n }\n return super._processConfig(config, init);\n }\n /**\n * Sets the service discovery client directly.\n *\n * Accepts either a ready-made {@link IServiceDiscoveryClient} instance or a\n * {@link ConfigBuilderCallback} that will be invoked during module\n * initialization to produce one.\n *\n * Use this method when you need full control over service resolution\n * (e.g. a mock client for testing or a static service list).\n *\n * @param discoveryClient - A client instance or an async factory function.\n *\n * @example\n * ```typescript\n * // Static / mock client\n * builder.setServiceDiscoveryClient({\n * resolveServices: async () => [{ key: 'api', uri: 'https://localhost:5000', defaultScopes: [] }],\n * resolveService: async (key) => ({ key, uri: 'https://localhost:5000', defaultScopes: [] }),\n * });\n * ```\n */\n setServiceDiscoveryClient(discoveryClient) {\n this._set('discoveryClient', typeof discoveryClient === 'function' ? discoveryClient : async () => discoveryClient);\n }\n /**\n * Configures a {@link ServiceDiscoveryClient} with a custom HTTP client and\n * optional endpoint path.\n *\n * This is the mid-level configuration path: you supply the transport\n * details and the module constructs a standard\n * {@link ServiceDiscoveryClient} with built-in caching, response parsing,\n * and `sessionStorage` override support.\n *\n * @param configCallback - Async factory that must return\n * `{ httpClient, endpoint? }`. The `httpClient` is used to call the\n * service discovery API at the given `endpoint` (defaults to `\"\"`).\n * @throws {Error} When the factory does not return an `httpClient`.\n *\n * @example\n * ```typescript\n * builder.configureServiceDiscoveryClient(async ({ requireInstance }) => {\n * const http = await requireInstance('http');\n * return { httpClient: http.createClient('sd'), endpoint: '/services/v2' };\n * });\n * ```\n */\n configureServiceDiscoveryClient(configCallback) {\n this.setServiceDiscoveryClient(async (args) => {\n const { httpClient, endpoint } = (await lastValueFrom(from(configCallback(args)))) ?? {};\n // Only construct the client when the factory actually returned an http client\n if (httpClient) {\n return new ServiceDiscoveryClient({\n http: httpClient,\n endpoint,\n postProcess: map((input) => {\n // Get a reference to sessionStorage from globalThis\n const storage = typeof globalThis !== 'undefined' ? globalThis.sessionStorage : undefined;\n // Check if sessionStorage is available before attempting to access it.\n // If sessionStorage is not available, return the input as is without attempting to apply any overrides.\n if (!storage) {\n return input;\n }\n // Check if there are any session overrides in session storage.\n try {\n const sessionOverrides = JSON.parse(storage.getItem('overriddenServiceDiscoveryUrls') || '{}');\n // Apply each session override onto the service matching its key\n for (const [key, { url, scopes }] of Object.entries(sessionOverrides)) {\n // Locate the service this override applies to\n const service = input.find((service) => service.key === key);\n // If the service can be found, override the values with the values\n // from session override.\n if (service) {\n service.uri = url;\n service.scopes = scopes;\n service.overridden = true;\n }\n }\n }\n catch (e) {\n // Malformed or missing session storage overrides are not fatal — fall back to\n // the unmodified input and just log for visibility.\n console.error('Failed to JSON parse session overrides: \"overriddenServiceDiscoveryUrls\"', e);\n }\n return input;\n }),\n });\n }\n throw Error('httpClient is required');\n });\n }\n /**\n * Configures service discovery using a named HTTP client key.\n *\n * This is the simplest configuration path. The HTTP module must already\n * have a client registered under `clientKey`. If `endpoint` is omitted\n * the client calls the root path of the HTTP client's base URI.\n *\n * @param clientKey - Key of the HTTP client to use for service discovery\n * requests (must match an entry in the HTTP module configuration).\n * @param endpoint - Optional sub-path appended to the client's base URI\n * when fetching the service list.\n *\n * @example\n * ```typescript\n * builder.configureServiceDiscoveryClientByClientKey(\n * 'service_discovery',\n * '/custom/services',\n * );\n * ```\n */\n configureServiceDiscoveryClientByClientKey(clientKey, endpoint) {\n this.configureServiceDiscoveryClient(async ({ requireInstance }) => {\n const httpProvider = await requireInstance('http');\n const httpClient = httpProvider.createClient(clientKey);\n return {\n httpClient,\n endpoint,\n };\n });\n }\n}\n//# sourceMappingURL=configurator.js.map","// Generated by genversion.\nexport const version = '10.1.0';\n//# sourceMappingURL=version.js.map","import { configureHttpClient } from '@equinor/fusion-framework-module-http';\nimport { BaseModuleProvider } from '@equinor/fusion-framework-module/provider';\nimport { version } from './version';\n/**\n * Default implementation of {@link IServiceDiscoveryProvider}.\n *\n * Created during module initialization and delegates service resolution to\n * the underlying {@link IServiceDiscoveryClient} while using the\n * {@link HttpModule} to construct pre-configured HTTP clients.\n */\nexport class ServiceDiscoveryProvider extends BaseModuleProvider {\n config;\n _http;\n /**\n * @param config - Resolved service discovery configuration.\n * @param _http - HTTP module instance used to create clients.\n */\n constructor(config, _http) {\n super({\n version,\n config,\n });\n this.config = config;\n this._http = _http;\n }\n /** {@inheritDoc IServiceDiscoveryProvider.client} */\n get client() {\n return this.config.discoveryClient;\n }\n /** {@inheritDoc IServiceDiscoveryProvider.resolveServices} */\n resolveServices() {\n return this.config.discoveryClient.resolveServices();\n }\n /** {@inheritDoc IServiceDiscoveryProvider.resolveService} */\n async resolveService(key) {\n return this.config.discoveryClient.resolveService(key);\n }\n /** {@inheritDoc IServiceDiscoveryProvider.createClient} */\n async createClient(name, opt) {\n const service = await this.resolveService(name);\n // A missing service configuration means the http client can't be constructed\n if (!service) {\n throw Error(`Could not load configuration of service [${name}]`);\n }\n return this._http.createClient({\n ...opt,\n baseUri: service.uri,\n defaultScopes: service.scopes,\n });\n }\n /** {@inheritDoc IServiceDiscoveryProvider.configureClient} */\n async configureClient(serviceName, config) {\n const { key, alias } = typeof serviceName === 'string' ? { key: serviceName, alias: serviceName } : serviceName;\n const { uri: baseUri, scopes: defaultScopes } = await this.resolveService(key);\n config.addConfig(configureHttpClient(alias, { baseUri, defaultScopes }));\n }\n}\n//# sourceMappingURL=provider.js.map","import { ServiceDiscoveryConfigurator } from './configurator';\nimport { ServiceDiscoveryProvider } from './provider';\n/**\n * Module identifier used to register and look up the Service Discovery module\n * within the Fusion Framework module system.\n */\nexport const moduleName = 'serviceDiscovery';\n/**\n * Service Discovery module definition.\n *\n * Configures and initializes the service discovery mechanism within the\n * Fusion Framework module system. During initialization the module:\n *\n * 1. Creates the {@link ServiceDiscoveryConfig} (optionally inheriting the\n * parent module's discovery client so sub-modules share cache).\n * 2. Resolves the required {@link HttpModule} instance.\n * 3. Returns a {@link ServiceDiscoveryProvider} ready to resolve endpoints.\n *\n * @remarks\n * When a parent module exposes its own `serviceDiscovery` config, the child\n * module reuses that configuration by default. This enables shared caching\n * and consistent service resolution but means breaking changes in the\n * parent's client can affect child modules.\n */\nexport const module = {\n name: moduleName,\n configure: () => new ServiceDiscoveryConfigurator(),\n initialize: async (init) => {\n const { requireInstance, ref } = init;\n // create service discovery configuration\n const config = await init.config.createConfigAsync(init, {\n /**\n * @remarks\n * This is a dangerous pattern, as it allows the child module to access the parent module's client.\n * The client client could implement breaking changes that would affect the child module.\n * On the positive side, it allows the child module to reuse cache and always be up to date.\n */\n ...ref?.serviceDiscovery?.config,\n });\n // service discovery requires http module to be initialized\n const httpModule = await requireInstance('http');\n // return service discovery provider\n return new ServiceDiscoveryProvider(config, httpModule);\n },\n};\n/**\n * Creates a module configurator object for the Service Discovery module.\n *\n * Use this when you need to add service discovery to a\n * {@link ModulesConfigurator} via `addConfig` and want full control over\n * the configuration callback.\n *\n * For the simpler \"just enable it\" path, prefer {@link enableServiceDiscovery}.\n *\n * @template TRef - Module reference type forwarded to the configurator.\n * @param callback - Receives a {@link ServiceDiscoveryConfigurator} and must\n * return a `Promise` that resolves when configuration is complete.\n * @returns An `IModuleConfigurator` that can be passed to\n * `ModulesConfigurator.addConfig`.\n *\n * @example\n * ```typescript\n * import { configureServiceDiscovery } from '@equinor/fusion-framework-module-service-discovery';\n *\n * const configure = (configurator: ModulesConfigurator) => {\n * configurator.addConfig(\n * configureServiceDiscovery(async (builder) => {\n * builder.configureServiceDiscoveryClientByClientKey('my_sd_key');\n * }),\n * );\n * };\n * ```\n */\nexport const configureServiceDiscovery = (callback) => ({\n module,\n configure: (config) => callback(config),\n});\n/**\n * Enables the Service Discovery module on a {@link ModulesConfigurator}.\n *\n * This is the recommended entry point for most consumers. When called\n * without a callback the module auto-detects an HTTP client registered\n * under the key `\"service_discovery\"`. Pass a callback to override the\n * client key, endpoint, or provide a fully custom discovery client.\n *\n * @param configurator - The modules configurator to register the module on.\n * Must already include {@link HttpModule}.\n * @param callback - Optional callback receiving a\n * {@link ServiceDiscoveryConfigurator} for advanced setup. May be synchronous\n * or asynchronous.\n *\n * @example\n * ```typescript\n * import { enableServiceDiscovery } from '@equinor/fusion-framework-module-service-discovery';\n *\n * // Simplest usage — auto-detects the 'service_discovery' HTTP client\n * enableServiceDiscovery(configurator);\n *\n * // Custom HTTP client key\n * enableServiceDiscovery(configurator, async (builder) => {\n * builder.configureServiceDiscoveryClientByClientKey('sd_custom');\n * });\n * ```\n */\nexport const enableServiceDiscovery = (configurator, callback) => {\n configurator.addConfig(configureServiceDiscovery(callback ?? (() => Promise.resolve())));\n};\nexport default module;\n//# sourceMappingURL=module.js.map","/**\n * Abstract base class for telemetry adapters.\n *\n * Provides a common implementation for filtering telemetry items before processing.\n * Subclasses must implement the `_processItem` method to define how telemetry items are handled.\n *\n * @template TelemetryItem - The type representing a telemetry item.\n * @implements {ITelemetryAdapter}\n *\n * @remarks\n * - An optional filter function can be provided to determine which telemetry items should be processed.\n *\n * @example\n * class MyTelemetryAdapter extends BaseTelemetryAdapter {\n * protected _processItem(item: TelemetryItem): void {\n * // Custom processing logic\n * }\n * }\n */\nexport class BaseTelemetryAdapter {\n #filter;\n #initialized = false;\n /**\n * Creates a new instance of the TelemetryAdapter.\n *\n * @param filter - An optional function to filter telemetry items. If provided, only items for which the function returns true will be processed.\n */\n constructor(filter) {\n this.#filter = filter;\n }\n /**\n * Processes a telemetry item by applying an optional filter before handling it.\n *\n * If a filter is defined and the item does not pass the filter, the method returns early.\n * Otherwise, it delegates the processing of the item to the internal `_processItem` method.\n *\n * @param item - The telemetry item to be processed.\n */\n processItem(item) {\n // If the adapter is not initialized, do not process the item\n if (!this.#initialized) {\n return;\n }\n // If a filter is defined and the item does not pass the filter, do not process the item\n if (this.#filter && !this.#filter(item)) {\n return;\n }\n // Delegate the processing of the item to the internal `_processItem` method\n this._processItem(item);\n }\n /**\n * Initializes the telemetry adapter asynchronously.\n *\n * This method can only be called once. Subsequent calls will return immediately\n * without performing any initialization. It calls the protected `_initialize` method which\n * subclasses can override to provide custom initialization logic.\n *\n * TODO(#5112): Consider changing return type from Promise<void> to Promise<TelemetryItem[]>\n * to allow adapters to return telemetry items (errors/warnings) that occurred during\n * initialization, eliminating the chicken-and-egg problem with reporting init errors.\n *\n * @returns A promise that resolves when initialization is complete.\n * @sealed\n */\n async initialize() {\n // If the adapter is already initialized, do not initialize it again\n if (this.#initialized) {\n return;\n }\n // Initialize the adapter\n await this._initialize();\n // Mark the adapter as initialized\n this.#initialized = true;\n }\n /**\n * Protected initialization method that subclasses can override.\n *\n * This method is called only once during the adapter's lifetime.\n * Subclasses should override this method to perform any necessary async setup.\n * The base implementation is a no-op for adapters that don't need initialization.\n *\n * @returns A promise that resolves when initialization is complete.\n * @protected\n */\n async _initialize() {\n // Default implementation - no-op for adapters that don't need initialization\n }\n}\n//# sourceMappingURL=TelemetryAdapter.js.map","import { TelemetryType, TelemetryLevel, } from '@equinor/fusion-framework-module-telemetry';\nimport { BaseTelemetryAdapter } from '@equinor/fusion-framework-module-telemetry/adapter';\n/**\n * Telemetry adapter that outputs telemetry data to the browser console\n * with formatted titles and colour-coded log levels.\n *\n * Each telemetry item is logged using the console method that matches its\n * {@link TelemetryLevel} (e.g. `console.error` for `Error` / `Critical`,\n * `console.warn` for `Warning`). Event names are prefixed with a styled\n * application title badge.\n *\n * @example\n * ```typescript\n * import { ConsoleAdapter } from '@equinor/fusion-framework-module-telemetry/console-adapter';\n *\n * const adapter = new ConsoleAdapter({ title: 'MyApp' });\n * configurator.setAdapter(ConsoleAdapter.Identifier, adapter);\n * ```\n */\nexport class ConsoleAdapter extends BaseTelemetryAdapter {\n /** Default identifier for console adapter instances */\n static Identifier = 'console-adapter';\n #title;\n /**\n * Creates a new ConsoleAdapter instance\n * @param config - Optional configuration for the adapter\n */\n constructor(config) {\n super(config?.filter);\n this.#title = config?.title ?? 'Fusion';\n }\n /**\n * Generates background color CSS for the title based on telemetry level\n * @param lvl - The telemetry level\n * @returns CSS background color string\n */\n _generateTitleBackground(lvl) {\n // Pick a background color matching the severity of this telemetry level\n switch (lvl) {\n case TelemetryLevel.Critical:\n return 'rgb(255, 0, 0)';\n case TelemetryLevel.Error:\n // Light red/pink background\n return 'rgb(250, 138, 161)';\n case TelemetryLevel.Warning:\n // Light orange background\n return 'rgb(251, 203, 131)';\n case TelemetryLevel.Information:\n // Light gray background\n return 'rgb(200, 200, 200)';\n case TelemetryLevel.Debug:\n // Medium gray background\n return 'rgb(150, 150, 150)';\n default:\n // No background for unknown levels\n return 'none';\n }\n }\n /**\n * Formats a metric value into a human-readable time string\n * @param value - Time value in milliseconds\n * @returns Formatted time string (ms, s, or m s format)\n */\n _formatMetric = (value) => {\n // Show milliseconds for values under 1 second\n if (value < 1000) {\n return `${Math.round(value)}ms`;\n }\n // Show seconds with 1 decimal for values under 1 minute\n if (value < 60000) {\n return `${(value / 1000).toFixed(1)}s`;\n }\n // For longer durations, show minutes and seconds\n const minutes = Math.floor(value / 60000);\n const seconds = Math.floor((value % 60000) / 1000);\n return `${minutes}m ${seconds}s`;\n };\n /**\n * Generates formatted console log arguments with colored title styling\n * @param name - The telemetry item name\n * @param lvl - The telemetry level\n * @returns Array of arguments for console.log with CSS styling\n */\n _generateTitle(name, lvl) {\n return [\n // CSS format string: %c for CSS, %s for string substitution\n '%c %s %c %s %c',\n // Red background for app title\n 'background: rgb(179, 13, 47); color: white; padding: 1px;',\n // Application title (e.g., \"Fusion\")\n this.#title,\n // Level-specific background color\n `background: ${this._generateTitleBackground(lvl)}; color: rgb(50, 50, 50); padding: 1px;`,\n // Telemetry item name\n name,\n // Reset styling for remaining content\n 'background: none; color: inherit',\n ];\n }\n /**\n * Processes a telemetry item and outputs it to the console\n * @param item - The telemetry item to process\n */\n _processItem(item) {\n const { name, type, level, properties, metadata, scope } = item;\n // Common data structure included with all telemetry items\n const baseData = {\n properties,\n metadata,\n scope,\n };\n // Dispatch to the right console format based on the telemetry item's type\n switch (type) {\n case TelemetryType.Event:\n // Log events with base data\n this._log(level, name, baseData);\n break;\n case TelemetryType.Exception: {\n const exception = item.exception;\n // Include exception details\n this._log(level, name, baseData, exception);\n break;\n }\n case TelemetryType.Metric: {\n const metric = item.value;\n // Format metric with timer emoji\n this._log(level, name, `⏱️${this._formatMetric(metric)}`, baseData);\n break;\n }\n }\n }\n /**\n * Logs a message to the console using the appropriate console method based on level\n * @param lvl - The telemetry level determining which console method to use\n * @param title - The formatted title for the log entry\n * @param msg - Additional message arguments to log\n */\n _log(lvl, title, ...msg) {\n // Pick the console method matching this telemetry level's severity\n switch (lvl) {\n case TelemetryLevel.Critical:\n case TelemetryLevel.Error:\n // Use console.error for errors and critical issues\n console.error(...this._generateTitle(title, lvl), ...msg);\n break;\n case TelemetryLevel.Warning:\n // Use console.warn for warnings\n console.warn(...this._generateTitle(title, lvl), ...msg);\n break;\n case TelemetryLevel.Information:\n // Use console.info for info messages\n console.info(...this._generateTitle(title, lvl), ...msg);\n break;\n case TelemetryLevel.Debug:\n // Use console.debug for debug and verbose messages\n console.debug(...this._generateTitle(title, lvl), ...msg);\n break;\n default:\n // Fallback to console.log for unknown levels\n console.log(...this._generateTitle(title, lvl), ...msg);\n }\n }\n}\nexport default ConsoleAdapter;\n//# sourceMappingURL=ConsoleAdapter.js.map","/**\n * Builds the portal template entrypoint URL used by the SPA bootstrap loader.\n *\n * @param segments - Ordered URL/path segments such as proxy prefix, asset path, and template entry.\n * @returns A normalized entrypoint string with single slashes between segments.\n */\nexport const createPortalEntryPoint = (...segments) => {\n const normalized = segments\n // Drop undefined/null segments before further processing\n .filter((segment) => segment !== undefined && segment !== null)\n // Trim stray whitespace from each segment\n .map((segment) => segment.trim())\n // Drop any segments that became empty after trimming\n .filter(Boolean)\n // Strip leading slashes from every segment (and trailing slashes from the first)\n .map((segment, index) => {\n // The first segment may have a trailing slash (e.g. a base URL) that needs stripping\n if (index === 0) {\n return segment.replace(/\\/+$/g, '');\n }\n return segment.replace(/^\\/+|\\/+$/g, '');\n });\n return normalized.join('/');\n};\n//# sourceMappingURL=create-portal-entry-point.js.map","/**\n * Resolves a Vite environment toggle that may arrive as a parsed boolean or raw string.\n *\n * @param value - Environment value supplied through plugin configuration or a custom Vite define.\n * @returns `true` only for the boolean `true` or the string `'true'`.\n */\nexport function isEnabledEnvValue(value) {\n return value === true || value === 'true';\n}\n//# sourceMappingURL=is-enabled-env-value.js.map","import { TelemetryLevel } from '@equinor/fusion-framework-module-telemetry';\n/**\n * Registers the Fusion SPA service worker and wires token acquisition.\n *\n * @remarks\n * The service worker intercepts outgoing fetch requests that match\n * the configured {@link ResourceConfiguration | resource patterns},\n * rewrites URLs, and injects Bearer tokens obtained from the MSAL\n * module. This function:\n *\n * 1. Registers `/@fusion-spa-sw.js` as a module service worker.\n * 2. Listens for `GET_TOKEN` messages from the worker and responds\n * with MSAL access tokens.\n * 3. Sends the `INIT_CONFIG` message containing resource configurations\n * to the active worker once it is ready and controlling the page.\n *\n * @param framework - An initialized Fusion Framework instance that\n * includes the {@link MsalModule} (for token acquisition) and\n * {@link TelemetryModule} (for structured logging).\n * @throws {Error} When service workers are not supported by the browser.\n * @throws {Error} When the `FUSION_SPA_SERVICE_WORKER_RESOURCES`\n * environment variable is not defined.\n *\n * @example\n * ```ts\n * import { registerServiceWorker } from '@equinor/fusion-framework-vite-plugin-spa/html';\n *\n * const framework = await configurator.initialize();\n * await registerServiceWorker(framework);\n * ```\n */\nexport async function registerServiceWorker(framework) {\n const telemetry = framework.telemetry;\n // Bail out early when the browser has no service worker support at all\n if ('serviceWorker' in navigator === false) {\n const exception = new Error('Service workers are not supported in this browser.');\n exception.name = 'ServiceWorkerNotSupported';\n telemetry.trackException({\n name: `registerServiceWorker.${exception.name}`,\n exception,\n });\n throw exception;\n }\n const resourceConfigs = import.meta.env.FUSION_SPA_SERVICE_WORKER_RESOURCES;\n // The worker needs a resource config to know which requests to intercept\n if (!resourceConfigs) {\n const exception = new Error('Service worker config is not defined.');\n exception.name = 'ServiceWorkerConfigNotDefined';\n telemetry.trackException({\n name: `registerServiceWorker.${exception.name}`,\n exception,\n });\n throw exception;\n }\n /**\n * Helper function to send configuration to the service worker\n */\n const sendConfigToServiceWorker = (worker) => {\n worker.postMessage({\n type: 'INIT_CONFIG',\n config: resourceConfigs,\n });\n };\n try {\n // allow the service worker to start receiving messages early\n navigator.serviceWorker.startMessages();\n // listen for messages from the service worker (set up before registration)\n navigator.serviceWorker.addEventListener('message', async (event) => {\n // Only the GET_TOKEN message type requests a token from this handler\n if (event.data.type === 'GET_TOKEN') {\n try {\n // extract scopes from the event data\n const scopes = event.data.scopes;\n // Scopes must be a real array before they can be used to request a token\n if (!scopes || !Array.isArray(scopes)) {\n const error = new Error('Invalid scopes provided');\n error.name = 'InvalidScopesProvided';\n throw error;\n }\n // request a token from the MSAL module\n const token = await framework.auth.acquireToken({ request: { scopes } });\n // A missing token means acquisition failed and the worker can't proceed\n if (!token) {\n const error = new Error('Failed to acquire token');\n error.name = 'FailedToAcquireToken';\n throw error;\n }\n // send the token back to the service worker\n event.ports[0].postMessage({\n accessToken: token.accessToken,\n expiresOn: token.expiresOn?.getTime(),\n });\n }\n catch (error) {\n const exception = error;\n telemetry.trackException({\n name: `serviceWorker.onMessage.${exception.name}`,\n exception,\n });\n event.ports[0].postMessage({\n error: error.message,\n });\n }\n }\n });\n // register the service worker with telemetry\n // updateViaCache: 'none' ensures the service worker script is always fetched fresh\n // This is important during development to pick up code changes\n using measurement = telemetry.measure({\n name: 'registerServiceWorker',\n level: TelemetryLevel.Information,\n });\n const registration = await measurement.clone().resolve(navigator.serviceWorker.register('/@fusion-spa-sw.js', {\n type: 'module',\n scope: '/',\n updateViaCache: 'none',\n }), {\n data: {\n name: 'registerServiceWorker.register',\n level: TelemetryLevel.Debug,\n },\n });\n // Handle service worker updates/installations\n // If there's a service worker waiting or installing, send config when it activates\n if (registration.waiting) {\n sendConfigToServiceWorker(registration.waiting);\n }\n // A worker still installing needs to reach the 'activated' state before it can receive config\n if (registration.installing) {\n registration.installing.addEventListener('statechange', (event) => {\n const worker = event.target;\n // Only send config once the worker has fully activated\n if (worker.state === 'activated') {\n sendConfigToServiceWorker(worker);\n }\n });\n }\n // Listen for controller changes (happens during hard refresh or updates)\n navigator.serviceWorker.addEventListener('controllerchange', () => {\n // Only send config once this page is actually controlled by a worker\n if (navigator.serviceWorker.controller) {\n sendConfigToServiceWorker(navigator.serviceWorker.controller);\n }\n });\n // wait for the service worker to be ready\n const readyRegistration = await measurement.clone().resolve(navigator.serviceWorker.ready, {\n data: {\n name: 'registerServiceWorker.ready',\n level: TelemetryLevel.Debug,\n },\n });\n // ensure we have an active service worker before sending config\n const activeWorker = readyRegistration.active;\n // Without an active worker there's nothing to send config to\n if (!activeWorker) {\n console.error('[Service Worker Registration] Service worker is not active after ready state');\n return;\n }\n // CRITICAL: Wait for the service worker to become the controller\n // This ensures the service worker can intercept fetch requests\n if (!navigator.serviceWorker.controller) {\n await measurement.clone().resolve(new Promise((resolve) => {\n let checkInterval;\n const finish = () => {\n clearInterval(checkInterval);\n navigator.serviceWorker.removeEventListener('controllerchange', onControllerChange);\n resolve();\n };\n const onControllerChange = () => finish();\n // If controllerchange fires, the service worker has taken control\n navigator.serviceWorker.addEventListener('controllerchange', onControllerChange);\n // Polling fallback and timeout to prevent infinite waiting\n checkInterval = setInterval(() => {\n // Stop polling once a controller has taken over\n if (navigator.serviceWorker.controller)\n finish();\n }, 200);\n setTimeout(finish, 5000);\n }), {\n data: {\n name: 'registerServiceWorker.controllerWait',\n level: TelemetryLevel.Debug,\n },\n });\n }\n // send the config to the active service worker\n sendConfigToServiceWorker(activeWorker);\n // Also send to the controller if it exists and is different from active\n if (navigator.serviceWorker.controller && navigator.serviceWorker.controller !== activeWorker) {\n sendConfigToServiceWorker(navigator.serviceWorker.controller);\n }\n }\n catch (error) {\n telemetry.trackException({\n name: `registerServiceWorker.${error.name}`,\n exception: error,\n });\n }\n}\n//# sourceMappingURL=register-service-worker.js.map","// Generated by genversion.\nexport const version = '4.1.0';\n//# sourceMappingURL=version.js.map","import { ModulesConfigurator } from '@equinor/fusion-framework-module';\nimport { configureHttpClient } from '@equinor/fusion-framework-module-http';\nimport { enableMSAL } from '@equinor/fusion-framework-module-msal';\nimport { enableServiceDiscovery, } from '@equinor/fusion-framework-module-service-discovery';\nimport { enableTelemetry, TelemetryLevel, } from '@equinor/fusion-framework-module-telemetry';\nimport { ConsoleAdapter } from '@equinor/fusion-framework-module-telemetry/console-adapter';\nimport { createPortalEntryPoint } from './create-portal-entry-point.js';\nimport { isEnabledEnvValue } from './is-enabled-env-value.js';\nimport { registerServiceWorker } from './register-service-worker.js';\nimport { version } from '../version.js';\n// Allow dynamic import without vite\nconst importWithoutVite = (path) => import(/* @vite-ignore */ path);\n// Create Fusion Framework configurator\nconst configurator = new ModulesConfigurator();\nconst serviceDiscoveryUrl = new URL(import.meta.env.FUSION_SPA_SERVICE_DISCOVERY_URL, import.meta.env.FUSION_SPA_SERVICE_DISCOVERY_URL.startsWith('http')\n ? undefined\n : window.location.origin);\n// define service discovery client - this is used in the service discovery module\nconfigurator.addConfig(configureHttpClient('service_discovery', {\n baseUri: String(serviceDiscoveryUrl),\n defaultScopes: import.meta.env.FUSION_SPA_SERVICE_DISCOVERY_SCOPES,\n}));\n// setup service discovery - enable service discovery for the framework\nenableServiceDiscovery(configurator, async (builder) => {\n builder.configureServiceDiscoveryClientByClientKey('service_discovery');\n});\n// Avoid interactive Entra ID authentication when the SPA runs in CI or Playwright.\nif (isEnabledEnvValue(import.meta.env.FUSION_SPA_MSAL_MOCK)) {\n const { enableMsalMock } = await import('@equinor/fusion-framework-module-msal/mock');\n const mockToken = import.meta.env.FUSION_SPA_MSAL_MOCK_TOKEN;\n enableMsalMock(configurator, (builder) => {\n // Preserve the mock client's default identity when no backend-specific token is configured.\n if (!mockToken)\n return;\n builder.setToken(mockToken);\n });\n}\nelse {\n enableMSAL(configurator, (builder) => {\n builder.setClientConfig({\n auth: {\n clientId: import.meta.env.FUSION_SPA_MSAL_CLIENT_ID,\n tenantId: import.meta.env.FUSION_SPA_MSAL_TENANT_ID,\n redirectUri: import.meta.env.FUSION_SPA_MSAL_REDIRECT_URI,\n },\n });\n builder.setRequiresAuth(isEnabledEnvValue(import.meta.env.FUSION_SPA_MSAL_REQUIRES_AUTH));\n });\n}\nenableTelemetry(configurator, {\n attachConfiguratorEvents: true,\n configure: (builder) => {\n const consoleLevel = Number(import.meta.env.FUSION_SPA_TELEMETRY_CONSOLE_LEVEL ?? TelemetryLevel.Information);\n const consoleAdapter = new ConsoleAdapter({\n filter: Number.isNaN(consoleLevel) ? undefined : (item) => item.level >= consoleLevel,\n });\n builder.setAdapter('console', consoleAdapter);\n builder.setMetadata(({ modules }) => {\n const metadata = {\n fusion: {\n spa: {\n version,\n },\n },\n // biome-ignore lint/suspicious/noExplicitAny: we need to use any here to allow dynamic properties\n };\n // Only attach user metadata when the auth module has resolved an account\n if (modules?.auth) {\n metadata.fusion.user = {\n id: modules.auth.account?.homeAccountId,\n name: modules.auth.account?.name,\n email: modules.auth.account?.username,\n };\n }\n return metadata;\n });\n },\n});\n(async () => {\n // initialize the framework - this will create the framework instance and configure the modules\n const ref = await configurator.initialize();\n const telemetry = ref.telemetry;\n // attach service discovery to the framework - append auth token to configured endpoints\n using measurement = telemetry.measure({\n name: 'bootstrap',\n level: TelemetryLevel.Information,\n });\n await measurement.clone().resolve(registerServiceWorker(ref), {\n data: {\n level: TelemetryLevel.Debug,\n name: 'bootstrap::registerServiceWorker',\n },\n });\n // create a client for the portal service - this is used to fetch the portal manifest\n const portalClient = await ref.serviceDiscovery.createClient('portal-config');\n // fetch the portal manifest - this is used to load the portal template\n const portalId = import.meta.env.FUSION_SPA_PORTAL_ID;\n const portalTag = import.meta.env.FUSION_SPA_PORTAL_TAG ?? 'latest';\n const portalProxy = import.meta.env.FUSION_SPA_PORTAL_PROXY ?? false;\n const portal_manifest = await measurement\n .clone()\n .resolve(portalClient.json(`/portals/${portalId}@${portalTag}`), {\n data: (manifest) => ({\n name: 'bootstrap::loadPortalManifest',\n level: TelemetryLevel.Debug,\n properties: {\n portalId,\n portalTag,\n templateEntry: manifest.build.templateEntry,\n manifestVersion: manifest.build.config?.version,\n assetPath: manifest.build.assetPath,\n },\n }),\n });\n const portal_config = await measurement\n .clone()\n .resolve(portalClient.json(`/portals/${portalId}@${portalTag}/config`), {\n data: {\n name: 'bootstrap::loadPortalConfig',\n level: TelemetryLevel.Debug,\n properties: {\n portalId,\n portalTag,\n },\n },\n });\n // create a entrypoint for the portal - this is used to render the portal\n const el = document.createElement('div');\n document.body.innerHTML = '';\n document.body.appendChild(el);\n const portalEntryPoint = createPortalEntryPoint(portalProxy ? '/portal-proxy' : undefined, portal_manifest.build.assetPath, portal_manifest.build.templateEntry);\n // TODO(#5066): should test if the entrypoint is external or internal\n // TODO(#5066): add proper return type\n const { render } = await measurement\n .clone()\n .resolve(importWithoutVite(portalEntryPoint), {\n data: {\n name: 'bootstrap::loadPortalSourceCode',\n level: TelemetryLevel.Debug,\n properties: {\n portalId,\n portalTag,\n entryPoint: portalEntryPoint,\n },\n },\n });\n // render the portal - this will load the portal template and render it\n render(el, { ref, manifest: portal_manifest, config: portal_config });\n})();\n//# sourceMappingURL=bootstrap.js.map"],"names":["isFunction","isArray","asyncScheduler","finalize","version","z\n .string","z.enum","z.object","z\n .object","z.boolean","z\n .union","z.string","z.instanceof","z\n .enum","z.record","module","createNextState","createReducer","URL","createActions","generateGUID","actions","makeReducer","generateUniqueKey"],"mappings":"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CJ,IAAI,OAAO,CAAC,MAAM;AAClB;AACA,QAAQ,QAAQ,IAAI;AACpB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,OAAO,WAAW;AAClC,YAAY,KAAK,OAAO;AACxB,gBAAgB,OAAO,UAAU;AACjC,YAAY,KAAK,QAAQ;AACzB,gBAAgB,OAAO,WAAW;AAClC,YAAY;AACZ,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC,CAAC;AAClE;AACA,IAAI,CAAC,GAAG;AACR,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,KAAK,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,iBAAiB,GAAG,UAAU;AACzC;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG,IAAI,YAAY,EAAE;AACtC;AACA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA,IAAI,MAAM;AACV;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG,IAAI,OAAO,EAAE;AAC3B;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG,EAAE;AACf;AACA;AACA;AACA;AACA,IAAI,iBAAiB;AACrB;AACA;AACA;AACA;AACA,IAAI,mBAAmB;AACvB;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,GAAGiB,EAAY,EAAE;AAC/B;AACA;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB;AACA,QAAQ,OAAO,IAAI,CAAC,OAAO;AAC3B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AACpC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1D,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG;AAChB;AACA,QAAQ,OAAO,IAAI,CAAC,MAAM;AAC1B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAC1C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE;AACpC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,KAAK;AAC3C;AACA,YAAY,OAAOG,EAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AACxE,QAAQ,CAAC;AACT;AACA,QAAQ,IAAI,CAAC,mBAAmB;AAChC,YAAY,OAAO,EAAE,QAAQ,IAAI,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC;AACvE;AACA,QAAQ,IAAI,OAAO,CAAC,MAAM,YAAY,WAAW,EAAE;AACnD,YAAY,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM;AACzC,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE;AAC9D;AACA,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO;AACzC,aAAa,CAAC;AACd;AACA,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACjE,QAAQ;AACR,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AAC7D,YAAY,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACrD,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,IAAI,OAAO,CAAC,KAAK,YAAY,UAAU,EAAE;AACjD,YAAY,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK;AACvC,QAAQ;AACR,aAAa;AACb;AACA,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AAC7D;AACA,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChE,QAAQ;AACR,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AAC5D,YAAY,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACrD,SAAS,CAAC,CAAC;AACX;AACA;AACA;AACA;AACA,QAAQ,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC;AACrE;AACA,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC7D,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC;AACA,aAAa,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AAC/B,YAAY,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,GAAG,CAAC;AACpD,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/C;AACA,QAAQ,aAAa,CAAC,CAAC,GAAG,KAAK;AAC/B,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACzC,YAAY,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI;AAChD,YAAY,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3F;AACA,YAAY,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;AACjC,gBAAgB,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC9F,gBAAgB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACvC,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ;AACA;AACA,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;AACjD,gBAAgB,GAAG,OAAO;AAC1B,gBAAgB,GAAG,EAAE,IAAI,CAAC,IAAI;AAC9B,aAAa,CAAC;AACd,YAAY,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAK;AAClD,gBAAgB,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG;AAC3C,gBAAgB,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,GAAG,EAAE;AAC9D,oBAAoB,MAAM,EAAE,IAAI;AAChC,oBAAoB,WAAW;AAC/B,oBAAoB,IAAI;AACxB,oBAAoB,OAAO;AAC3B,iBAAiB,CAAC;AAClB;AACA;AACA,gBAAgB,UAAU,CAAC,GAAG,CAAC,MAAM;AACrC,oBAAoB,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,GAAG,EAAE;AACjE,wBAAwB,MAAM,EAAE,IAAI;AACpC,wBAAwB,WAAW;AACnC,wBAAwB,IAAI;AAC5B,wBAAwB,OAAO;AAC/B,qBAAqB,CAAC;AACtB,oBAAoB,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC/C,oBAAoB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAC3C,gBAAgB,CAAC,CAAC;AAClB;AACA;AACA,gBAAgB,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC1C,qBAAqB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtD,qBAAqB,SAAS,CAAC,MAAM;AACrC,oBAAoB,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACpE,oBAAoB,UAAU,CAAC,QAAQ,EAAE;AACzC,gBAAgB,CAAC,CAAC,CAAC;AACnB;AACA;AACA,gBAAgB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM;AAC9D,oBAAoB,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,GAAG,EAAE;AACpE,wBAAwB,MAAM,EAAE,IAAI;AACpC,wBAAwB,WAAW;AACnC,wBAAwB,IAAI;AAC5B,wBAAwB,OAAO;AAC/B,qBAAqB,CAAC;AACtB,gBAAgB,CAAC,CAAC,CAAC;AACnB;AACA;AACA,gBAAgB;AAChB,qBAAqB,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AAC3C,oBAAoB,MAAM;AAC1B,oBAAoB,IAAI;AACxB,iBAAiB,CAAC,CAAC;AACnB;AACA;AACA,gBAAgB,UAAU,CAAC,MAAM,KAAK,CAAC;AACvC,qBAAqB,SAAS,CAAC,UAAU,CAAC;AAC1C,YAAY,CAAC,CAAC;AACd,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACjD;AACA,aAAa,SAAS,CAAC,CAAC,IAAI,KAAK;AACjC,YAAY,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM;AACtD,YAAY,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI;AACjD,YAAY,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,GAAG,EAAE;AAC1D,gBAAgB,IAAI,EAAE,KAAK;AAC3B,gBAAgB,MAAM,EAAE,IAAI;AAC5B,gBAAgB,IAAI;AACpB,gBAAgB,WAAW;AAC3B,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC7F;AACA,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;AACrC,gBAAgB,KAAK;AACrB,gBAAgB,IAAI;AACpB,gBAAgB,WAAW;AAC3B,aAAa,CAAC;AACd,QAAQ,CAAC,CAAC,CAAC;AACX,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;AACzC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE;AAC7B,QAAQ,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE;AAClD,QAAQ,MAAM,EAAE,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa;AAC/D,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD;AACA,YAAY,IAAI,GAAG,EAAE,MAAM,EAAE;AAC7B,gBAAgB,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AAC9F,YAAY;AACZ;AACA,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AACrF,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE;AACnC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAChD,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;AACnD,QAAQ,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,CAAC,UAAU,KAAK;AAChE,YAAY,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC9C,gBAAgB,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACtD,gBAAgB,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;AACxD,aAAa,CAAC,CAAC;AACf;AACA,YAAY,MAAM,aAAa,GAAG,OAAO,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC,mBAAmB;AACtF;AACA,YAAY,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACtC;AACA,iBAAiB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AAC3D,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC;AACzB,gBAAgB,GAAG;AACnB,gBAAgB,MAAM,EAAE,OAAO;AAC/B,gBAAgB,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;AAC1D,aAAa,CAAC,CAAC;AACf,iBAAiB,SAAS,CAAC,UAAU,CAAC,CAAC;AACvC,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,OAAO,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;AACnG,YAAY,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;AACrC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC3C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;AACnC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAChD;AACA,QAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE;AAC/C;AACA,YAAY,IAAI,OAAO,EAAE,aAAa,KAAK,SAAS,EAAE;AACtD,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,kCAAkC,EAAE,GAAG,CAAC,oDAAoD,CAAC,CAAC;AAC/H,YAAY;AACZ,iBAAiB,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,EAAE;AACtD;AACA,gBAAgB,OAAO,MAAM,EAAE,CAAC;AAChC,YAAY;AACZ,YAAY,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,EAAE,GAAG,OAAO;AACjF,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;AACpC,gBAAgB,IAAI;AACpB,gBAAgB,WAAW,EAAEH,EAAY,EAAE;AAC3C,gBAAgB,KAAK;AACrB,aAAa,CAAC;AACd,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;AAC/C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACpE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;AACxC,QAAQ,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;AAChC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,EAAE,EAAE;AACrB;AACA,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;AACzC,aAAa,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;AAClD,aAAa,SAAS,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC9E,QAAQ,OAAO,MAAM,YAAY,CAAC,WAAW,EAAE;AAC/C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,EAAE,EAAE;AACjB;AACA,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;AACzC,aAAa,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;AAC9C,aAAa,SAAS,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC1G,QAAQ,OAAO,MAAM,YAAY,CAAC,WAAW,EAAE;AAC/C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AAC1B,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAChD,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC;AACzD,QAAQ,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACpE,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AACpC;AACA,QAAQ,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAK;AAC9C;AACA,YAAY,IAAI,OAAO,EAAE,MAAM,EAAE;AACjC;AACA,gBAAgB,IAAI,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;AAC7C,oBAAoB,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,GAAG,CAAC;AAC7D,oBAAoB,OAAO,UAAU,CAAC,QAAQ,EAAE;AAChD,gBAAgB;AAChB,gBAAgB,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM;AACnF,oBAAoB,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,GAAG,CAAC;AAC7D,oBAAoB,UAAU,CAAC,QAAQ,EAAE;AACzC,gBAAgB,CAAC,CAAC,CAAC;AACnB,YAAY;AACZ;AACA,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACvD;AACA,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC;AAC3E,gBAAgB,MAAM,eAAe,GAAG,OAAO,EAAE,KAAK,EAAE,eAAe,IAAI,KAAK;AAChF;AACA,gBAAgB,MAAM,aAAa,GAAG,OAAO,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI,CAAC,mBAAmB;AAC1F;AACA,gBAAgB,MAAM,aAAa,GAAG,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC;AACrE,gBAAgB,MAAM,MAAM,GAAG;AAC/B,oBAAoB,GAAG,UAAU;AACjC,oBAAoB,GAAG;AACvB,oBAAoB,MAAM,EAAE,OAAO;AACnC,oBAAoB,aAAa;AACjC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AACvC;AACA,gBAAgB,IAAI,aAAa,IAAI,eAAe,EAAE;AACtD,oBAAoB,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC;AAC1G;AACA;AACA;AACA;AACA,oBAAoB,OAAO,UAAU,CAAC,QAAQ,EAAE;AAChD,gBAAgB;AAChB;AACA,gBAAgB,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,GAAG,CAAC;AAC5D,YAAY;AACZ;AACA,YAAY,MAAM,cAAc,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM;AACrD;AACA,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC,gBAAgB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC;AACpE,gBAAgB,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,GAAG,EAAE;AAC9D,oBAAoB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI;AACjD,oBAAoB,IAAI;AACxB,oBAAoB,OAAO;AAC3B,iBAAiB,CAAC;AAClB,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AACrF,YAAY;AACZ,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACzC;AACA,YAAY,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACtD;AACA,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;;AChpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG;AACnB,KAAK,MAAM,CAAC;AACZ,IAAI,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;AACpE,IAAI,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;AACtD,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;AAC/D,IAAI,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;AACjF,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;AACnE,IAAI,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;AACjG,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;AACzE,CAAC;AACD,KAAK,QAAQ,CAAC,0CAA0C;AACxD,KAAK,SAAS,CAAC,CAAC,KAAK,MAAM;AAC3B,IAAI,GAAG,KAAK;AACZ;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,KAAK,CAAC,MAAM,IAAI,EAAE;AACjC,IAAI,CAAC;AACL,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,WAAW,GAAG;AAC3B,KAAK,KAAK,CAAC,UAAU;AACrB,KAAK,QAAQ,CAAC,mDAAmD,CAAC;;AChClE;AACA,MAAM,QAAQ,GAAG,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,WAAW,KAAK;AAC3D;AACA,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;AACrD;AACA,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACzD;AACA,IAAI,IAAI,WAAW,EAAE;AACrB;AACA,QAAQ,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AACxC,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,sBAAsB,CAAC;AACpC,IAAI,MAAM;AACV;AACA,IAAI,QAAQ;AACZ;AACA,IAAI,IAAI;AACR;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AAChC,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;AACxC,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;AAC/C;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC;AAChC,YAAY,MAAM,EAAE;AACpB,gBAAgB,EAAE,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE;AAChE,oBAAoB,QAAQ,EAAE,CAAC,QAAQ,KAAK,uBAAuB,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC1F,iBAAiB,CAAC;AAClB,aAAa;AACb,YAAY,GAAG,EAAE,MAAM,QAAQ;AAC/B;AACA,YAAY,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;AACjC,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,WAAW,EAAE;AACjC;AACA;AACA,QAAQ,MAAM,EAAE,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa;AAC/D,QAAQ,OAAO,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/D,IAAI;AACJ;AACA,IAAI,MAAM,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE;AAC3C,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;AAChE;AACA,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;AAC3D;AACA,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,MAAM,KAAK,CAAC,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1E,QAAQ;AACR,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,4BAA4B,SAAS,iBAAiB,CAAC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE;AACvC;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACrC,YAAY,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;AACtD,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;AAC3C;AACA,YAAY,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AACnE;AACA,YAAY,IAAI,YAAY,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE;AAC7D,gBAAgB,IAAI,CAAC,0CAA0C,CAAC,mBAAmB,CAAC;AACpF,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACtE,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;AACjC;AACA,QAAQ,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AACrC,YAAY,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;AAC/E,QAAQ;AACR,QAAQ,OAAO,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;AACjD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,yBAAyB,CAAC,eAAe,EAAE;AAC/C,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,YAAY,eAAe,CAAC;AAC3H,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,+BAA+B,CAAC,cAAc,EAAE;AACpD,QAAQ,IAAI,CAAC,yBAAyB,CAAC,OAAO,IAAI,KAAK;AACvD,YAAY,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AACpG;AACA,YAAY,IAAI,UAAU,EAAE;AAC5B,gBAAgB,OAAO,IAAI,sBAAsB,CAAC;AAClD,oBAAoB,IAAI,EAAE,UAAU;AACpC,oBAAoB,QAAQ;AAC5B,oBAAoB,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK;AAChD;AACA,wBAAwB,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK,WAAW,GAAG,UAAU,CAAC,cAAc,GAAG,SAAS;AACjH;AACA;AACA,wBAAwB,IAAI,CAAC,OAAO,EAAE;AACtC,4BAA4B,OAAO,KAAK;AACxC,wBAAwB;AACxB;AACA,wBAAwB,IAAI;AAC5B,4BAA4B,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,IAAI,IAAI,CAAC;AAC1H;AACA,4BAA4B,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AACnG;AACA,gCAAgC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC;AAC5F;AACA;AACA,gCAAgC,IAAI,OAAO,EAAE;AAC7C,oCAAoC,OAAO,CAAC,GAAG,GAAG,GAAG;AACrD,oCAAoC,OAAO,CAAC,MAAM,GAAG,MAAM;AAC3D,oCAAoC,OAAO,CAAC,UAAU,GAAG,IAAI;AAC7D,gCAAgC;AAChC,4BAA4B;AAC5B,wBAAwB;AACxB,wBAAwB,OAAO,CAAC,EAAE;AAClC;AACA;AACA,4BAA4B,OAAO,CAAC,KAAK,CAAC,0EAA0E,EAAE,CAAC,CAAC;AACxH,wBAAwB;AACxB,wBAAwB,OAAO,KAAK;AACpC,oBAAoB,CAAC,CAAC;AACtB,iBAAiB,CAAC;AAClB,YAAY;AACZ,YAAY,MAAM,KAAK,CAAC,wBAAwB,CAAC;AACjD,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0CAA0C,CAAC,SAAS,EAAE,QAAQ,EAAE;AACpE,QAAQ,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK;AAC5E,YAAY,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;AAC9D,YAAY,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC;AACnE,YAAY,OAAO;AACnB,gBAAgB,UAAU;AAC1B,gBAAgB,QAAQ;AACxB,aAAa;AACb,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;;AC3LA;AACO,MAAMhB,SAAO,GAAG,QAAQ;;ACE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,wBAAwB,SAAS,kBAAkB,CAAC;AACjE,IAAI,MAAM;AACV,IAAI,KAAK;AACT;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE;AAC/B,QAAQ,KAAK,CAAC;AACd,qBAAYA,SAAO;AACnB,YAAY,MAAM;AAClB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,IAAI;AACJ;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe;AAC1C,IAAI;AACJ;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,EAAE;AAC5D,IAAI;AACJ;AACA,IAAI,MAAM,cAAc,CAAC,GAAG,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC;AAC9D,IAAI;AACJ;AACA,IAAI,MAAM,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE;AAClC,QAAQ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvD;AACA,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,MAAM,KAAK,CAAC,CAAC,yCAAyC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5E,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;AACvC,YAAY,GAAG,GAAG;AAClB,YAAY,OAAO,EAAE,OAAO,CAAC,GAAG;AAChC,YAAY,aAAa,EAAE,OAAO,CAAC,MAAM;AACzC,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,MAAM,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE;AAC/C,QAAQ,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,WAAW,KAAK,QAAQ,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW;AACvH,QAAQ,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtF,QAAQ,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;AAChF,IAAI;AACJ;;ACtDA;AACA;AACA;AACA;AACO,MAAM,UAAU,GAAG,kBAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMW,QAAM,GAAG;AACtB,IAAI,IAAI,EAAE,UAAU;AACpB,IAAI,SAAS,EAAE,MAAM,IAAI,4BAA4B,EAAE;AACvD,IAAI,UAAU,EAAE,OAAO,IAAI,KAAK;AAChC,QAAQ,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,IAAI;AAC7C;AACA,QAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,GAAG,GAAG,EAAE,gBAAgB,EAAE,MAAM;AAC5C,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;AACxD;AACA,QAAQ,OAAO,IAAI,wBAAwB,CAAC,MAAM,EAAE,UAAU,CAAC;AAC/D,IAAI,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,yBAAyB,GAAG,CAAC,QAAQ,MAAM;AACxD,YAAIA,QAAM;AACV,IAAI,SAAS,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC;AAC3C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,sBAAsB,GAAG,CAAC,YAAY,EAAE,QAAQ,KAAK;AAClE,IAAI,YAAY,CAAC,SAAS,CAAC,yBAAyB,CAAC,QAAQ,KAAK,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC5F,CAAC;;AC1GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oBAAoB,CAAC;AAClC,IAAI,OAAO;AACX,IAAI,YAAY,GAAG,KAAK;AACxB;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACjD,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC/B,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB;AACA,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,MAAM,IAAI,CAAC,WAAW,EAAE;AAChC;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI;AAChC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB;AACA,IAAI;AACJ;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,cAAc,SAAS,oBAAoB,CAAC;AACzD;AACA,IAAI,OAAO,UAAU,GAAG,iBAAiB;AACzC,IAAI,MAAM;AACV;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,QAAQ;AAC/C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,wBAAwB,CAAC,GAAG,EAAE;AAClC;AACA,QAAQ,QAAQ,GAAG;AACnB,YAAY,KAAK,cAAc,CAAC,QAAQ;AACxC,gBAAgB,OAAO,gBAAgB;AACvC,YAAY,KAAK,cAAc,CAAC,KAAK;AACrC;AACA,gBAAgB,OAAO,oBAAoB;AAC3C,YAAY,KAAK,cAAc,CAAC,OAAO;AACvC;AACA,gBAAgB,OAAO,oBAAoB;AAC3C,YAAY,KAAK,cAAc,CAAC,WAAW;AAC3C;AACA,gBAAgB,OAAO,oBAAoB;AAC3C,YAAY,KAAK,cAAc,CAAC,KAAK;AACrC;AACA,gBAAgB,OAAO,oBAAoB;AAC3C,YAAY;AACZ;AACA,gBAAgB,OAAO,MAAM;AAC7B;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG,CAAC,KAAK,KAAK;AAC/B;AACA,QAAQ,IAAI,KAAK,GAAG,IAAI,EAAE;AAC1B,YAAY,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AAC3C,QAAQ;AACR;AACA,QAAQ,IAAI,KAAK,GAAG,KAAK,EAAE;AAC3B,YAAY,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ;AACR;AACA,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACjD,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;AAC1D,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACxC,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;AAC9B,QAAQ,OAAO;AACf;AACA,YAAY,gBAAgB;AAC5B;AACA,YAAY,2DAA2D;AACvE;AACA,YAAY,IAAI,CAAC,MAAM;AACvB;AACA,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,uCAAuC,CAAC;AACtG;AACA,YAAY,IAAI;AAChB;AACA,YAAY,kCAAkC;AAC9C,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI;AACvE;AACA,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,UAAU;AACtB,YAAY,QAAQ;AACpB,YAAY,KAAK;AACjB,SAAS;AACT;AACA,QAAQ,QAAQ,IAAI;AACpB,YAAY,KAAK,aAAa,CAAC,KAAK;AACpC;AACA,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC;AAChD,gBAAgB;AAChB,YAAY,KAAK,aAAa,CAAC,SAAS,EAAE;AAC1C,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;AAChD;AACA,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC3D,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,aAAa,CAAC,MAAM,EAAE;AACvC,gBAAgB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK;AACzC;AACA,gBAAgB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AACnF,gBAAgB;AAChB,YAAY;AACZ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE;AAC7B;AACA,QAAQ,QAAQ,GAAG;AACnB,YAAY,KAAK,cAAc,CAAC,QAAQ;AACxC,YAAY,KAAK,cAAc,CAAC,KAAK;AACrC;AACA,gBAAgB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;AACzE,gBAAgB;AAChB,YAAY,KAAK,cAAc,CAAC,OAAO;AACvC;AACA,gBAAgB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;AACxE,gBAAgB;AAChB,YAAY,KAAK,cAAc,CAAC,WAAW;AAC3C;AACA,gBAAgB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;AACxE,gBAAgB;AAChB,YAAY,KAAK,cAAc,CAAC,KAAK;AACrC;AACA,gBAAgB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;AACzE,gBAAgB;AAChB,YAAY;AACZ;AACA,gBAAgB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;AACvE;AACA,IAAI;AACJ;;AClKA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,sBAAsB,GAAG,CAAC,GAAG,QAAQ,KAAK;AACvD,IAAI,MAAM,UAAU,GAAG;AACvB;AACA,SAAS,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI;AACtE;AACA,SAAS,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE;AACxC;AACA,SAAS,MAAM,CAAC,OAAO;AACvB;AACA,SAAS,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK;AACjC;AACA,QAAQ,IAAI,KAAK,KAAK,CAAC,EAAE;AACzB,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;AAC/C,QAAQ;AACR,QAAQ,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;AAChD,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/B,CAAC;;ACvBD;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACzC,IAAI,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM;AAC7C;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,qBAAqB,CAAC,SAAS,EAAE;AACvD,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS;AACzC;AACA,IAAI,IAAI,eAAe,IAAI,SAAS,KAAK,KAAK,EAAE;AAChD,QAAQ,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,oDAAoD,CAAC;AACzF,QAAQ,SAAS,CAAC,IAAI,GAAG,2BAA2B;AACpD,QAAQ,SAAS,CAAC,cAAc,CAAC;AACjC,YAAY,IAAI,EAAE,CAAC,sBAAsB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AAC3D,YAAY,SAAS;AACrB,SAAS,CAAC;AACV,QAAQ,MAAM,SAAS;AACvB,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAmC;AAC/E;AACA,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1B,QAAQ,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,uCAAuC,CAAC;AAC5E,QAAQ,SAAS,CAAC,IAAI,GAAG,+BAA+B;AACxD,QAAQ,SAAS,CAAC,cAAc,CAAC;AACjC,YAAY,IAAI,EAAE,CAAC,sBAAsB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AAC3D,YAAY,SAAS;AACrB,SAAS,CAAC;AACV,QAAQ,MAAM,SAAS;AACvB,IAAI;AACJ;AACA;AACA;AACA,IAAI,MAAM,yBAAyB,GAAG,CAAC,MAAM,KAAK;AAClD,QAAQ,MAAM,CAAC,WAAW,CAAC;AAC3B,YAAY,IAAI,EAAE,aAAa;AAC/B,YAAY,MAAM,EAAE,eAAe;AACnC,SAAS,CAAC;AACV,IAAI,CAAC;AACL,IAAI,IAAI;AACR;AACA,QAAQ,SAAS,CAAC,aAAa,CAAC,aAAa,EAAE;AAC/C;AACA,QAAQ,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,KAAK,KAAK;AAC7E;AACA,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;AACjD,gBAAgB,IAAI;AACpB;AACA,oBAAoB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM;AACpD;AACA,oBAAoB,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC3D,wBAAwB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,yBAAyB,CAAC;AAC1E,wBAAwB,KAAK,CAAC,IAAI,GAAG,uBAAuB;AAC5D,wBAAwB,MAAM,KAAK;AACnC,oBAAoB;AACpB;AACA,oBAAoB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;AAC5F;AACA,oBAAoB,IAAI,CAAC,KAAK,EAAE;AAChC,wBAAwB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,yBAAyB,CAAC;AAC1E,wBAAwB,KAAK,CAAC,IAAI,GAAG,sBAAsB;AAC3D,wBAAwB,MAAM,KAAK;AACnC,oBAAoB;AACpB;AACA,oBAAoB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC/C,wBAAwB,WAAW,EAAE,KAAK,CAAC,WAAW;AACtD,wBAAwB,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE;AAC7D,qBAAqB,CAAC;AACtB,gBAAgB;AAChB,gBAAgB,OAAO,KAAK,EAAE;AAC9B,oBAAoB,MAAM,SAAS,GAAG,KAAK;AAC3C,oBAAoB,SAAS,CAAC,cAAc,CAAC;AAC7C,wBAAwB,IAAI,EAAE,CAAC,wBAAwB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;AACzE,wBAAwB,SAAS;AACjC,qBAAqB,CAAC;AACtB,oBAAoB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC/C,wBAAwB,KAAK,EAAE,KAAK,CAAC,OAAO;AAC5C,qBAAqB,CAAC;AACtB,gBAAgB;AAChB,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV;AACA;AACA;AACA,QAAQ,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC;AAC9C,YAAY,IAAI,EAAE,uBAAuB;AACzC,YAAY,KAAK,EAAE,cAAc,CAAC,WAAW;AAC7C,SAAS,CAAC;AACV,QAAQ,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,oBAAoB,EAAE;AACtH,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,KAAK,EAAE,GAAG;AACtB,YAAY,cAAc,EAAE,MAAM;AAClC,SAAS,CAAC,EAAE;AACZ,YAAY,IAAI,EAAE;AAClB,gBAAgB,IAAI,EAAE,gCAAgC;AACtD,gBAAgB,KAAK,EAAE,cAAc,CAAC,KAAK;AAC3C,aAAa;AACb,SAAS,CAAC;AACV;AACA;AACA,QAAQ,IAAI,YAAY,CAAC,OAAO,EAAE;AAClC,YAAY,yBAAyB,CAAC,YAAY,CAAC,OAAO,CAAC;AAC3D,QAAQ;AACR;AACA,QAAQ,IAAI,YAAY,CAAC,UAAU,EAAE;AACrC,YAAY,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK;AAC/E,gBAAgB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC3C;AACA,gBAAgB,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE;AAClD,oBAAoB,yBAAyB,CAAC,MAAM,CAAC;AACrD,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd,QAAQ;AACR;AACA,QAAQ,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,MAAM;AAC3E;AACA,YAAY,IAAI,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE;AACpD,gBAAgB,yBAAyB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;AAC7E,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,MAAM,iBAAiB,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE;AACnG,YAAY,IAAI,EAAE;AAClB,gBAAgB,IAAI,EAAE,6BAA6B;AACnD,gBAAgB,KAAK,EAAE,cAAc,CAAC,KAAK;AAC3C,aAAa;AACb,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM;AACrD;AACA,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAY,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC;AACzG,YAAY;AACZ,QAAQ;AACR;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE;AACjD,YAAY,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACvE,gBAAgB,IAAI,aAAa;AACjC,gBAAgB,MAAM,MAAM,GAAG,MAAM;AACrC,oBAAoB,aAAa,CAAC,aAAa,CAAC;AAChD,oBAAoB,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;AACvG,oBAAoB,OAAO,EAAE;AAC7B,gBAAgB,CAAC;AACjB,gBAAgB,MAAM,kBAAkB,GAAG,MAAM,MAAM,EAAE;AACzD;AACA,gBAAgB,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;AAChG;AACA,gBAAgB,aAAa,GAAG,WAAW,CAAC,MAAM;AAClD;AACA,oBAAoB,IAAI,SAAS,CAAC,aAAa,CAAC,UAAU;AAC1D,wBAAwB,MAAM,EAAE;AAChC,gBAAgB,CAAC,EAAE,GAAG,CAAC;AACvB,gBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;AACxC,YAAY,CAAC,CAAC,EAAE;AAChB,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,IAAI,EAAE,sCAAsC;AAChE,oBAAoB,KAAK,EAAE,cAAc,CAAC,KAAK;AAC/C,iBAAiB;AACjB,aAAa,CAAC;AACd,QAAQ;AACR;AACA,QAAQ,yBAAyB,CAAC,YAAY,CAAC;AAC/C;AACA,QAAQ,IAAI,SAAS,CAAC,aAAa,CAAC,UAAU,IAAI,SAAS,CAAC,aAAa,CAAC,UAAU,KAAK,YAAY,EAAE;AACvG,YAAY,yBAAyB,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;AACzE,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,SAAS,CAAC,cAAc,CAAC;AACjC,YAAY,IAAI,EAAE,CAAC,sBAAsB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACvD,YAAY,SAAS,EAAE,KAAK;AAC5B,SAAS,CAAC;AACV,IAAI;AACJ;;ACtMA;AACO,MAAM,OAAO,GAAG,OAAO;;ACS9B;AACA,MAAM,iBAAiB,GAAG,CAAC,IAAI,KAAK,0BAA0B,IAAI,CAAC;AACnE;AACA,MAAM,YAAY,GAAG,IAAI,mBAAmB,EAAE;AAC9C,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC,UAAU,CAAC,MAAM;AACxJ,MAAM;AACN,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7B;AACA,YAAY,CAAC,SAAS,CAAC,mBAAmB,CAAC,mBAAmB,EAAE;AAChE,IAAI,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC;AACxC,IAAI,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAmC;AACtE,CAAC,CAAC,CAAC;AACH;AACA,sBAAsB,CAAC,YAAY,EAAE,OAAO,OAAO,KAAK;AACxD,IAAI,OAAO,CAAC,0CAA0C,CAAC,mBAAmB,CAAC;AAC3E,CAAC,CAAC;AACF;AACA,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE;AAC7D,IAAI,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,OAAO,sBAA4C,CAAC;AACzF,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B;AAChE,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC,OAAO,KAAK;AAC9C;AACA,QAAQ,IAAI,CAAC,SAAS;AACtB,YAAY;AACZ,QAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;AACnC,IAAI,CAAC,CAAC;AACN;AACA,KAAK;AACL,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC,OAAO,KAAK;AAC1C,QAAQ,OAAO,CAAC,eAAe,CAAC;AAChC,YAAY,IAAI,EAAE;AAClB,gBAAgB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB;AACnE,gBAAgB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB;AACnE,gBAAgB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B;AACzE,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,OAAO,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AACjG,IAAI,CAAC,CAAC;AACN;AACA,eAAe,CAAC,YAAY,EAAE;AAC9B,IAAI,wBAAwB,EAAE,IAAI;AAClC,IAAI,SAAS,EAAE,CAAC,OAAO,KAAK;AAC5B,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,kCAAkC,IAAI,cAAc,CAAC,WAAW,CAAC;AACrH,QAAQ,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;AAClD,YAAY,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,IAAI,YAAY;AACjG,SAAS,CAAC;AACV,QAAQ,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,cAAc,CAAC;AACrD,QAAQ,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK;AAC7C,YAAY,MAAM,QAAQ,GAAG;AAC7B,gBAAgB,MAAM,EAAE;AACxB,oBAAoB,GAAG,EAAE;AACzB,wBAAwB,OAAO;AAC/B,qBAAqB;AACrB,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,YAAY,IAAI,OAAO,EAAE,IAAI,EAAE;AAC/B,gBAAgB,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG;AACvC,oBAAoB,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa;AAC3D,oBAAoB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI;AACpD,oBAAoB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ;AACzD,iBAAiB;AACjB,YAAY;AACZ,YAAY,OAAO,QAAQ;AAC3B,QAAQ,CAAC,CAAC;AACV,IAAI,CAAC;AACL,CAAC,CAAC;AACF,CAAC,YAAY;AACb;AACA,IAAI,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE;AAC/C,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS;AACnC;AACA,IAAI,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC;AAC1C,QAAQ,IAAI,EAAE,WAAW;AACzB,QAAQ,KAAK,EAAE,cAAc,CAAC,WAAW;AACzC,KAAK,CAAC;AACN,IAAI,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE;AAClE,QAAQ,IAAI,EAAE;AACd,YAAY,KAAK,EAAE,cAAc,CAAC,KAAK;AACvC,YAAY,IAAI,EAAE,kCAAkC;AACpD,SAAS;AACT,KAAK,CAAC;AACN;AACA,IAAI,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,eAAe,CAAC;AACjF;AACA,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB;AACzD,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,IAAI,QAAQ;AACvE,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,IAAI,KAAK;AACxE,IAAI,MAAM,eAAe,GAAG,MAAM;AAClC,SAAS,KAAK;AACd,SAAS,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;AACzE,QAAQ,IAAI,EAAE,CAAC,QAAQ,MAAM;AAC7B,YAAY,IAAI,EAAE,+BAA+B;AACjD,YAAY,KAAK,EAAE,cAAc,CAAC,KAAK;AACvC,YAAY,UAAU,EAAE;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,SAAS;AACzB,gBAAgB,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;AAC3D,gBAAgB,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO;AAC/D,gBAAgB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS;AACnD,aAAa;AACb,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,MAAM,aAAa,GAAG,MAAM;AAChC,SAAS,KAAK;AACd,SAAS,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE;AAChF,QAAQ,IAAI,EAAE;AACd,YAAY,IAAI,EAAE,6BAA6B;AAC/C,YAAY,KAAK,EAAE,cAAc,CAAC,KAAK;AACvC,YAAY,UAAU,EAAE;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,SAAS;AACzB,aAAa;AACb,SAAS;AACT,KAAK,CAAC;AACN;AACA,IAAI,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5C,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE;AAChC,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AACjC,IAAI,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,WAAW,GAAG,eAAe,GAAG,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC;AACpK;AACA;AACA,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM;AAC7B,SAAS,KAAK;AACd,SAAS,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,EAAE;AACtD,QAAQ,IAAI,EAAE;AACd,YAAY,IAAI,EAAE,iCAAiC;AACnD,YAAY,KAAK,EAAE,cAAc,CAAC,KAAK;AACvC,YAAY,UAAU,EAAE;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,SAAS;AACzB,gBAAgB,UAAU,EAAE,gBAAgB;AAC5C,aAAa;AACb,SAAS;AACT,KAAK,CAAC;AACN;AACA,IAAI,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACzE,CAAC,GAAG","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,68,74,99,100,101,102,103,104,105,106,107]}