@equinor/fusion-framework-vite-plugin-spa 5.2.4-next.1 → 5.2.4-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sources":["../../../../modules/module/dist/esm/utils/mark-telemetry-export-request.js","../../../../../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/operators/concatAll.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/concat.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/ignoreElements.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/exhaustMap.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/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/run-prepare-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.2.9/node_modules/immer/dist/immer.mjs","../../../../utils/observable/dist/esm/operators/filter-action.js","../../../../utils/observable/dist/esm/FlowSubject.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/telemetry/dist/esm/Measurement.js","../../../../modules/event/dist/esm/FrameworkEvent.js","../../../../modules/telemetry/dist/esm/TelemetryErrorEvent.js","../../../../modules/telemetry/dist/esm/TelemetryEvent.js","../../../../modules/telemetry/dist/esm/utils/relay-record.js","../../../../modules/telemetry/dist/esm/utils/resolve-metadata.js","../../../../modules/telemetry/dist/esm/TelemetryProviderState.reducer.js","../../../../modules/telemetry/dist/esm/TelemetryProviderState.flows.js","../../../../modules/telemetry/dist/esm/TelemetryProviderState.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/lib/StartupBuffer.js","../../../../modules/telemetry/dist/esm/lib/StartupCapture.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.3/node_modules/uuid/dist/regex.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/validate.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/parse.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/stringify.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/rng.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/v35.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/v4.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/sha1.js","../../../../../node_modules/.pnpm/uuid@14.0.3/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/ServiceDiscoveryUnavailableError.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/adapters/console/ConsoleAdapter.js","../esm/html/acquire-mock-server-token.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 { telemetryExportRequest } from './telemetry-export-request.js';\n/**\n * Marks request options as exporter-owned so operational instrumentation skips the export itself.\n * The marker applies only to this request, not unrelated concurrent traffic.\n * @param init - Options forwarded through the export transport's request pipeline.\n * @returns A copy retaining request options with the telemetry export request marker.\n * @template T - Request options type.\n * @example\n * ```ts\n * client.fetch('/v1/logs', markTelemetryExportRequest({ method: 'POST', body }));\n * ```\n */\nexport function markTelemetryExportRequest(init) {\n return { ...init, [telemetryExportRequest]: true };\n}\n//# sourceMappingURL=mark-telemetry-export-request.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { 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 { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period, scheduler) {\n if (period === void 0) { period = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n//# sourceMappingURL=interval.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { 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 { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n//# sourceMappingURL=ignoreElements.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 { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) {\n return source.pipe(exhaustMap(function (a, i) { return innerFrom(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }));\n };\n }\n return operate(function (source, subscriber) {\n var index = 0;\n var innerSub = null;\n var isComplete = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (outerValue) {\n if (!innerSub) {\n innerSub = createOperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=exhaustMap.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 { __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 PreparedConfigReplaced: `${ModuleConfiguratorEventBaseName}.module.preparedConfigReplaced`,\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 HostInitializeStarted: `${ModuleConfiguratorEventBaseName}.host.initializeStarted`,\n HostInitialized: `${ModuleConfiguratorEventBaseName}.host.initialized`,\n HostInitializeError: `${ModuleConfiguratorEventBaseName}.host.initializeError`,\n ConfiguratorCreated: `${ModuleConfiguratorEventBaseName}.configurator.created`,\n ConfiguratorPrepared: `${ModuleConfiguratorEventBaseName}.configurator.prepared`,\n ConfiguratorPrepareError: `${ModuleConfiguratorEventBaseName}.configurator.prepareError`,\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 // Explicitly registered builders must not be replaced by another factory-created instance.\n const configurator = ctx.configurators?.has(module)\n ? ctx.configurators.get(module)\n : 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} — reuse prepared builders or call `configure(ref)` factories.\n * 2. Apply all user-registered config callbacks (`_configs`) concurrently.\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 { ModuleEventLevel, } from '../../../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\n/**\n * Rejects asynchronous preparation without leaving rejected promises unobserved.\n * @param result - Factory or preparation callback result.\n * @param moduleName - Module to identify in the preparation error.\n * @throws {TypeError} When preparation returned a promise or thenable.\n */\nfunction assertSynchronous(result, moduleName) {\n // Preparation must finish before control returns to host configuration.\n if (result !== null &&\n (typeof result === 'object' || typeof result === 'function') &&\n 'then' in result &&\n typeof result.then === 'function') {\n // Invalid async work cannot be canceled, but its eventual rejection must remain visible.\n void Promise.resolve(result).catch(() => console.warn(`Asynchronous preparation failed for module \"${moduleName}\"`));\n throw new TypeError(`Preparation for module \"${moduleName}\" must be synchronous`);\n }\n}\n/**\n * Runs synchronous preparation at the registration boundary, without exposing stored builders.\n * Supplied builders bypass factories; opt-in factories run once per registered descriptor.\n * The ordinary configure phase later receives the same object.\n *\n * Preparation does not mutate orchestrator state: it returns the builder to commit, so a\n * failure leaves the previous registration untouched.\n *\n * @param ctx - Registration and the host's already prepared builders.\n * @returns The builder to commit, or `undefined` for an ordinary, unprepared registration.\n * @template TModule - Registered module descriptor.\n * @template TConfig - Configuration callback type associated with the registration.\n * @throws Rethrows preparation errors after emitting a lifecycle failure event.\n * @internal\n */\nexport function runPreparePhase(ctx) {\n const { registration, configurators, registerEvent } = ctx;\n const { module, configurator, prepare } = registration;\n // Ordinary registrations keep factory creation in the existing configure phase.\n if (configurator === undefined && !prepare) {\n return undefined;\n }\n try {\n // An explicit builder wins; otherwise reuse this descriptor's prepared builder.\n let builder = configurator ?? configurators.get(module);\n // Only opted-in, reference-independent factories may run before initialize(ref).\n if (builder === undefined) {\n // Never freeze an ordinary factory's missing parent reference by invoking it early.\n if (!module.prepare) {\n throw new TypeError(`Module \"${module.name}\" requires a prepare factory or an explicit configurator for preparation`);\n }\n builder = module.prepare();\n assertSynchronous(builder, module.name);\n }\n // Registered callbacks receive their module's builder only within this lifecycle boundary.\n if (prepare) {\n assertSynchronous(prepare(builder), module.name);\n }\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ConfiguratorPrepared,\n message: `Configuration prepared for ${module.name}`,\n properties: { moduleName: module.name },\n });\n return { configurator: builder };\n }\n catch (error) {\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.ConfiguratorPrepareError,\n message: `Configuration preparation failed for ${module.name}`,\n properties: { moduleName: module.name },\n error,\n });\n throw error;\n }\n}\n//# sourceMappingURL=run-prepare-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 'rxjs';\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 const moduleInitStart = performance.now();\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 metric: performance.now() - moduleInitStart,\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 let instance;\n try {\n instance = await module.initialize({\n ref,\n config: config[key],\n requireInstance,\n hasModule,\n });\n }\n catch (error) {\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.ModuleInitializeError,\n message: 'Module initialization failed',\n properties: { moduleName: module.name },\n metric: performance.now() - moduleInitStart,\n error,\n });\n throw error;\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 and rejects on the first failure; providers that\n * finish afterwards are passed to `onLateProvider` for cleanup. 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, instances = {}, onLateProvider } = 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(instances);\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 initStart = performance.now();\n let failed = false;\n // Start every initializer at once; peers wait on each other through requireInstance.\n const initializers = modules.map(async (module) => {\n const [name, provider] = await initializeModule(module, {\n config,\n ref,\n requireInstance,\n hasModule,\n registerEvent,\n });\n // Rollback already owns `instances`; a late provider is handed off rather than leaked.\n if (failed) {\n onLateProvider?.(module, provider);\n return;\n }\n instances[name] = provider;\n instance$.next({ ...instances });\n });\n try {\n // Reject on the first failure: a sibling that never settles must not hang startup.\n await Promise.all(initializers);\n }\n catch (error) {\n failed = true;\n // Reject outstanding dependency waits instead of waiting for their timeout.\n instance$.error(error);\n throw error;\n }\n instance$.complete();\n const initTime = Math.round(performance.now() - initStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModuleInitializeComplete,\n message: 'All modules initialized',\n properties: { modules: Object.keys(instances).join(', '), loadTime: initTime },\n metric: initTime,\n });\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.InitializeComplete,\n message: `Modules instance created in ${initTime}ms`,\n properties: {\n modules: Object.keys(instances).join(', '),\n initTime,\n },\n metric: initTime,\n });\n Object.seal(instances);\n return instances;\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';\n/** Fixed teardown order: ordinary modules first, so diagnostics and events can still record them. */\nconst disposePhaseOrder = ['default', 'diagnostics', 'events'];\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 module `dispose` hooks concurrently within each fixed phase:\n * default, diagnostics, then events. Rejections are isolated through\n * `Promise.allSettled`. 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 const start = performance.now();\n let failed = false;\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 failed = true;\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 const groups = {\n default: [],\n diagnostics: [],\n events: [],\n };\n // Partition once so invalid runtime input cannot silently omit a provider's cleanup.\n for (const module of modules) {\n const phase = module.disposePhase ?? 'default';\n // Only named lifecycle phases may delay cleanup until infrastructure shutdown.\n if (disposePhaseOrder.includes(phase)) {\n groups[phase].push(module);\n }\n else {\n failed = true;\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ModulesDispose,\n message: `Unsupported disposal phase for module ${module.name}; disposing during the default phase`,\n properties: { moduleName: module.name },\n error: new TypeError('Unsupported module disposal phase'),\n });\n groups.default.push(module);\n }\n }\n // Diagnostic infrastructure stays alive through ordinary module teardown.\n for (const phase of disposePhaseOrder) {\n await Promise.allSettled(groups[phase]\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 const moduleStart = performance.now();\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 metric: performance.now() - moduleStart,\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 failed = true;\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ModuleDisposeError,\n metric: performance.now() - moduleStart,\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 // Emit exactly one host outcome before flushing sinks, including when no sinks exist.\n if (phase === 'default') {\n registerEvent({\n level: failed ? ModuleEventLevel.Warning : ModuleEventLevel.Information,\n name: ModuleConfiguratorEventName.ModulesDisposed,\n message: 'Default module disposal complete; flushing lifecycle sinks',\n metric: performance.now() - start,\n properties: { count: modules.length, failed },\n });\n }\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.2.0-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 { runPreparePhase } from './phases/run-prepare-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 **prepare → 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 * | 0 | **Prepare** | `addConfig` | Opt-in synchronous preparation runs during registration, before startup callbacks can fail. |\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 /** Shared disposal per initialized instance, so repeated calls join instead of re-running hooks. */\n #disposals = new WeakMap();\n /** Builders supplied or created during preparation, keyed by their exact module descriptor. */\n #configurators = new Map();\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. Initialization now records teardowns per\n * instance; this list only collects those from `_registerPlugins` overrides that do not\n * forward the attempt's list.\n * @protected\n */\n _pluginTeardowns = [];\n /** Plugin teardowns owned by each initialized instance, so disposing one never tears down another. */\n #instanceTeardowns = new WeakMap();\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. An optional `prepare` callback runs\n * synchronously during registration against the same builder.\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 * @throws Rethrows preparation failures; async preparation and unprepared ordinary factories are rejected.\n */\n addConfig(config) {\n const { module, afterConfig, afterInit, configure } = config;\n // Prepare before touching registration state, so a failed preparation changes nothing.\n const prepared = runPreparePhase({\n registration: config,\n configurators: this.#configurators,\n registerEvent: (event) => this._registerEvent(event),\n });\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 // A host-prepared builder (for example telemetry identity and startup capture) is lost\n // with the old descriptor; duplicate package copies make this easy to miss, so say so.\n if (this.#configurators.has(existingModule)) {\n console.warn(`Prepared configuration for module \"${module.name}\" was replaced`);\n this._registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.PreparedConfigReplaced,\n message: `Prepared configuration for module ${module.name} was replaced by a different descriptor`,\n properties: { moduleName: module.name },\n });\n }\n this._removeModuleCallbacks(module.name);\n this.#configurators.delete(existingModule);\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 // Commit the prepared builder only once the registration itself is in place.\n if (prepared) {\n this.#configurators.set(module, prepared.configurator);\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 * @throws Rethrows the original configuration or initialization error after partial cleanup.\n */\n async initialize(ref) {\n const start = performance.now();\n const instances = {};\n // Plugin cleanup belongs to this attempt, so rollback never drains another instance's.\n const teardowns = [];\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.HostInitializeStarted,\n message: 'Starting host initialization',\n });\n try {\n const instance = await this._initializeModules(instances, teardowns, ref);\n this._registerEvent({\n level: ModuleEventLevel.Information,\n name: ModuleConfiguratorEventName.HostInitialized,\n message: 'Host initialized',\n metric: performance.now() - start,\n });\n return instance;\n }\n catch (error) {\n this._registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.HostInitializeError,\n message: 'Host initialization failed',\n metric: performance.now() - start,\n error,\n });\n // Rollback owns the same provider map as this attempt, even when startup cannot return it.\n try {\n // Never call disposal hooks for modules that did not produce a provider.\n const initializedModules = this.modules.filter((module) => Object.hasOwn(instances, module.name));\n await runDisposePhase({\n modules: initializedModules,\n registerEvent: this._registerEvent.bind(this),\n event$: this.#event$,\n pluginTeardowns: teardowns,\n }, instances, ref);\n }\n catch {\n // Cleanup health is secondary; callers must receive the original startup rejection.\n console.warn('Module initialization rollback failed');\n }\n throw error;\n }\n }\n /**\n * Runs initialization inside the host diagnostic boundary.\n * @param instances - Attempt-owned provider map shared by initialization and rollback.\n * @param teardowns - Attempt-owned plugin teardowns shared by rollback and disposal.\n * @param ref - Reference forwarded to module lifecycle hooks.\n * @returns The sealed module map.\n * @template T - Additional modules in the resulting instance.\n * @template R - Reference type accepted by this host.\n */\n async _initializeModules(instances, teardowns, 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, instances);\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 // The shorthand disposes the returned map itself, so it shares disposal with\n // `configurator.dispose(modules)` and teardown never runs twice or concurrently.\n const modules = Object.seal(Object.assign({}, instance, {\n dispose: () => this.dispose(modules),\n }));\n this.#instanceTeardowns.set(modules, teardowns);\n await this._registerPlugins(modules, ref, teardowns);\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 configurators: this.#configurators,\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 * @param instances - Attempt-owned provider map; forward to `super` when overriding to preserve rollback ownership.\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, instances = {}) {\n return runInitializePhase({\n modules: this.modules,\n registerEvent: this._registerEvent.bind(this),\n instances,\n onLateProvider: (module, provider) => {\n void ModulesConfigurator.#disposeLateProvider(module, provider, ref);\n },\n }, config, ref);\n }\n /**\n * Disposes a provider that finished initializing after startup already rejected.\n * The rollback has completed the event stream by then, so failures are only logged.\n * @param module - Module whose initializer resolved after the rejection.\n * @param provider - The late provider to dispose.\n * @param ref - Reference forwarded to the module dispose hook.\n * @returns A promise resolving once the dispose hook has settled.\n */\n static async #disposeLateProvider(module, provider, ref) {\n try {\n await module.dispose?.({ ref, modules: { [module.name]: provider }, instance: provider });\n }\n catch {\n // Startup already rejected with the original error; a late cleanup failure must not surface.\n console.warn('Module initialization rollback failed');\n }\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 * @param teardowns - Attempt-owned teardown list; forward to `super` when overriding so\n * disposing this instance runs only its own plugin cleanup.\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, teardowns = this._pluginTeardowns) {\n return runPluginPhase({\n plugins: this._plugins,\n teardowns,\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 dispose(instance, ref) {\n // Idempotence belongs to each initialized instance; another instance must still be disposed.\n let disposal = this.#disposals.get(instance);\n // First disposal of this instance starts teardown; later calls join it.\n if (!disposal) {\n // Own teardowns first; the shared list only holds those from non-forwarding overrides.\n const pluginTeardowns = [\n ...(this.#instanceTeardowns.get(instance)?.splice(0) ?? []),\n ...this._pluginTeardowns.splice(0),\n ];\n disposal = 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,\n }, instance, ref);\n this.#disposals.set(instance, disposal);\n }\n return disposal;\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.js';\nimport { requestOperatorHeader } from './request-operator-header.js';\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.js';\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.js';\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.js';\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/index.js';\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.5-next.0';\n//# sourceMappingURL=version.js.map","import { BaseModuleProvider } from '@equinor/fusion-framework-module/provider';\nimport { version } from './version.js';\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/index.js';\nimport { blobSelector, jsonSelector } from '../selectors/index.js';\nimport { HttpResponseError } from '../../errors/index.js';\nimport { createSseSelector, } from '../selectors/create-sse-selector.js';\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.js';\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/index.js';\nimport { HttpClientConfigurator, } from './configurator.js';\nimport { HttpClientProvider } from './provider.js';\nimport { markTelemetryExportRequest, telemetryExportRequest, } from '@equinor/fusion-framework-module';\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 options = { request: { scopes } };\n // A token for telemetry delivery belongs to the export, so it carries the same\n // request-local marker; auth telemetry then skips it instead of recording the export.\n const accessToken = await authProvider.acquireAccessToken(telemetryExportRequest in request ? markTelemetryExportRequest(options) : options);\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 isModified(value) {\n if (!isDraft(value))\n return false;\n return value[DRAFT_STATE].modified_;\n}\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_.delete(prop);\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_ || !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 const source = copy;\n if (isSet(copy))\n copy = /* @__PURE__ */ new Set();\n each(\n source,\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.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 if (state.parent_.type_ === 1 /* Array */ && state.parent_.allIndicesReassigned_) {\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 const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n return latest(state).size;\n }\n has(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n return latest(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 assertUnrevoked(state);\n prepareMapCopy(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 const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n return latest(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 const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n return latest(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 lengthBefore = state.copy_.length;\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(args[0] ?? 0, lengthBefore);\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 thisArg = args[1];\n const result = [];\n const length = source.length;\n for (let i = 0; i < length; i++) {\n if (predicate.call(thisArg, 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 thisArg = args[1];\n const length = source.length;\n const isForward = method === \"find\";\n const step = isForward ? 1 : -1;\n const start = isForward ? 0 : length - 1;\n for (let i = start; i >= 0 && i < length; i += step) {\n if (predicate.call(thisArg, 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 isModified,\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","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';\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 { EMPTY, defer, from } from 'rxjs';\nimport { concatMap, catchError, 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';\nimport { operationalIdentifier } from './schemas/operational-identifier.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, parent providers, host identity and\n * lifecycle records. Every setter records configuration; nothing is resolved until the\n * telemetry module builds its configuration.\n *\n * @example\n * ```typescript\n * const configurator = new TelemetryConfigurator()\n * .setAdapter('console', consoleAdapter)\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 #adapters = {};\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.#adapters)).pipe(mergeMap(([identifier, { configure }]) => \n // Drop adapters whose factory resolved to a falsy value\n defer(() => from(configure(args))).pipe(filter((adapter) => !!adapter), map((adapter) => [identifier, adapter]), catchError(() => {\n // Factory errors may carry credentials or URLs, so only the failure is reported.\n console.warn('Telemetry adapter factory failed');\n return EMPTY;\n }))), scan((acc, [identifier, adapter]) => {\n acc[identifier] = adapter;\n return acc;\n }, {}), defaultIfEmpty({}), shareReplay({ bufferSize: 1, refCount: true }));\n });\n // Ownership is declared configuration: a failed explicit exporter still owns delivery,\n // so its failure can never activate an ancestor's fallback exporter.\n this._set('ownsExport', async () => \n // Any explicit declaration owns delivery.\n Object.values(this.#adapters).some(({ explicit }) => explicit));\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) ?? {}, {}), defaultIfEmpty({}), last(), shareReplay({ bufferSize: 1, refCount: true }));\n });\n }\n /**\n * Registers a telemetry adapter with the configurator.\n *\n * A non-fallback adapter is an explicit exporter: it owns delivery, so the parent's fallback\n * exporters skip records this provider relays.\n *\n * @param identifier - The key used to register and later resolve this adapter.\n * @param adapter - The telemetry adapter to be added.\n * @returns The current instance of the configurator for method chaining.\n */\n setAdapter(identifier, adapter) {\n this.#adapters[identifier] = { configure: async () => adapter, explicit: !adapter.fallback };\n return this;\n }\n /**\n * Configures a telemetry adapter with the configurator.\n *\n * A factory's adapter is unknown until it resolves, so it is declared as an explicit exporter;\n * register fallback adapters with `setAdapter`.\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.#adapters[identifier] = { configure: adapterFn, explicit: true };\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 /** @inheritdoc */\n setSource(source) {\n // Fail at configuration time; an invalid label would otherwise drop every built-in record.\n if (source.source !== undefined && !operationalIdentifier.safeParse(source.source).success) {\n throw new RangeError('Telemetry source kind must be a lowercase kebab-case identifier, such as \"portal\"');\n }\n this._set('source', Object.freeze({ ...source }));\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 /** @inheritdoc */\n attachLifecycleItems(item$) {\n this._set('lifecycleItems$', item$);\n return this;\n }\n /** @inheritdoc */\n hasLifecycleItems() {\n return this._has('lifecycleItems$');\n }\n /** @inheritdoc */\n setLifecycleItemsEnabled(enabled) {\n this._set('lifecycleItemsEnabled', enabled);\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.2';\n//# sourceMappingURL=version.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","/**\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","/**\n * Relays one record to a parent provider under the child's routing policy.\n *\n * Shared by live provider relay and startup recovery, so both honour the same relay filter\n * and exporter ownership.\n *\n * @param target - Parent provider.\n * @param item - Record to relay.\n * @param policy - Child exporter ownership and relay filter.\n * @returns `true` when the parent accepted the record or the filter intentionally rejected it;\n * `false` when the parent cannot honour ownership (a legacy parent and an owned record).\n * @throws Rethrows relay filter and parent delivery errors for the caller's health reporting.\n */\nexport function relayRecord(target, item, policy) {\n // Reject intentionally filtered records without changing export ownership.\n if (policy.relay && !policy.relay(item)) {\n return true;\n }\n // Ownership-aware parents suppress their fallback exporters for records a child owns.\n if (target.trackRelayed) {\n target.trackRelayed(item, policy.ownsExport);\n return true;\n }\n // Legacy parents cannot honour ownership, so they only receive records no child owns.\n if (!policy.ownsExport) {\n target.track(item);\n return true;\n }\n return false;\n}\n//# sourceMappingURL=relay-record.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/telemetry-item-schema.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 { createReducer } from '@equinor/fusion-observable';\nimport { telemetryProviderActions as actions, } from './TelemetryProviderState.actions.js';\n/**\n * Creates the reducer recording telemetry provider transitions.\n * @returns A reducer with a fresh idle initial snapshot.\n */\nexport function createTelemetryProviderReducer() {\n return createReducer(() => ({\n status: 'idle',\n enrichment: { pending: 0, builtIn: 0 },\n processing: {},\n failures: {},\n }), (builder) => builder\n .addCase(actions.initialize, (state, { meta }) => {\n state.initialization = meta.operation;\n // Only an idle provider starts; disposal already in progress keeps its status.\n if (state.status === 'idle') {\n state.status = 'initializing';\n }\n })\n .addCase(actions.initialize.success, (state) => {\n // Disposal requested during initialization wins over late readiness.\n if (state.status === 'initializing') {\n state.status = 'ready';\n }\n })\n .addCase(actions.dispose, (state, { meta }) => {\n state.disposal = meta.operation;\n state.status = 'disposing';\n })\n .addCase(actions.close, (state) => {\n state.status = 'disposed';\n })\n .addCase(actions.enrichmentStarted, (state, { payload }) => {\n state.enrichment.pending++;\n // Only bounded built-in enrichment delays shutdown; custom enrichment is canceled.\n if (payload.builtIn) {\n state.enrichment.builtIn++;\n }\n })\n .addCase(actions.enrichmentSettled, (state, { payload }) => {\n state.enrichment.pending--;\n // Mirror the start transition so the shutdown drain condition stays exact.\n if (payload.builtIn) {\n state.enrichment.builtIn--;\n }\n })\n .addCase(actions.processingStarted, (state, { payload }) => {\n state.processing[payload] = (state.processing[payload] ?? 0) + 1;\n })\n .addCase(actions.processingSettled, (state, { payload }) => {\n state.processing[payload] = (state.processing[payload] ?? 1) - 1;\n })\n .addCase(actions.failed, (state, { payload }) => {\n const failure = state.failures[payload.message];\n // The first occurrence is retained for reporting; repeats only count.\n if (failure) {\n failure.count++;\n }\n else {\n state.failures[payload.message] = { error: payload, count: 1 };\n }\n }));\n}\n//# sourceMappingURL=TelemetryProviderState.reducer.js.map","import { catchError, concat, defer, exhaustMap, filter, from, ignoreElements, map, of, take, tap, withLatestFrom, } from 'rxjs';\nimport { telemetryProviderActions as actions, } from './TelemetryProviderState.actions.js';\n/**\n * Emits once state satisfies a condition, immediately when it already does.\n * @param state$ - Provider state stream.\n * @param predicate - Condition over the snapshot.\n * @returns A single emission of the first matching snapshot.\n */\nconst whenState = (state$, predicate) => \n// Only the first matching snapshot gates the next step.\nstate$.pipe(filter(predicate), take(1));\n/**\n * Connects the provider once per initialize request and settles the shared operation.\n * @param handlers - Engine work.\n * @returns A flow emitting `initialize.success` or `initialize.failure`.\n */\nconst initializeFlow = (handlers) => (action$) => \n// Repeated requests join the running operation, so ignore them while it is in flight.\naction$.pipe(filter(actions.initialize.match), exhaustMap(({ payload }) => \n// Connecting is the operation; its outcome settles every joined caller.\nfrom(handlers.connect(payload)).pipe(map(() => actions.initialize.success()), catchError((error) => of(actions.initialize.failure(error))))));\n/**\n * Drains owned work in order, closes delivery and shuts down exporters once.\n *\n * Order: initialization settles → bounded built-in enrichment drains → delivery closes\n * (canceling custom enrichment) → asynchronous adapter processing drains → repeated failures\n * are summarized → exporters shut down.\n *\n * @param handlers - Engine work.\n * @returns A flow emitting `close`, then `dispose.success` or `dispose.failure`.\n */\nconst disposeFlow = (handlers) => (action$, state$) => \n// Disposal runs once; later requests join the same operation instead.\naction$.pipe(filter(actions.dispose.match), exhaustMap(() => {\n // An in-flight initialization finishes before anything is torn down.\n const initialized$ = whenState(state$, () => true).pipe(exhaustMap(({ initialization }) => from(Promise.allSettled([initialization]))), ignoreElements());\n // Built-in enrichment has a deadline; retain terminal teardown records before closing.\n const closed$ = whenState(state$, ({ enrichment }) => enrichment.builtIn === 0).pipe(tap(() => handlers.close()), map(() => actions.close()));\n // Accepted asynchronous processing is owned and must settle before exporters shut down.\n const drained$ = whenState(state$, ({ processing }) => \n // Every adapter must be drained, not just the one that settled last.\n Object.values(processing).every((pending) => !pending)).pipe(tap(({ failures }) => {\n // Repeated failures stay visible without one event per failed record.\n for (const [failure, { count }] of Object.entries(failures)) {\n // A single occurrence was already reported; summarize only repeats.\n if (count > 1) {\n console.warn('Telemetry pipeline failure summary', { failure, count });\n }\n }\n }), ignoreElements());\n // Shutdown is attempted for every exporter; its outcome settles the operation.\n const shutdown$ = defer(() => from(handlers.shutdown())).pipe(map(() => actions.dispose.success()), catchError((error) => of(actions.dispose.failure(error))));\n return concat(initialized$, closed$, drained$, shutdown$);\n}));\n/**\n * Reports each pipeline failure once, when it first appears in state.\n * @param handlers - Engine work.\n * @returns A flow that only performs reporting and emits no actions.\n */\nconst failureFlow = (handlers) => (action$, state$) => \n// Pair each failure with the snapshot that already counted it.\naction$.pipe(filter(actions.failed.match), withLatestFrom(state$), \n// Only the first occurrence is actionable; repeats are summarized at teardown.\nfilter(([{ payload }, { failures }]) => failures[payload.message]?.count === 1), tap(([{ payload }, { status }]) => handlers.report(payload, status)), ignoreElements());\n/**\n * Creates the flows driving a telemetry provider's operations and health reporting.\n * @param handlers - Engine work the flows delegate to.\n * @returns Flows to register on provider state.\n */\nexport function createTelemetryProviderFlows(handlers) {\n return [initializeFlow(handlers), disposeFlow(handlers), failureFlow(handlers)];\n}\n//# sourceMappingURL=TelemetryProviderState.flows.js.map","import { Subject, Subscription, catchError, defer, filter, finalize, firstValueFrom, from, map, of, take, takeUntil, timeout, } from 'rxjs';\nimport { FlowSubject } from '@equinor/fusion-observable';\nimport { TelemetryErrorEvent, TelemetryEvent } from './TelemetryEvent.js';\nimport { TelemetryItemNames } from './static.js';\nimport { mergeTelemetryItem } from './utils/merge-telemetry-item.js';\nimport { relayRecord } from './utils/relay-record.js';\nimport { operationalScope } from './utils/operational-scope.js';\nimport { applyMetadata } from './utils/resolve-metadata.js';\nimport { telemetryProviderActions as actions, } from './TelemetryProviderState.actions.js';\nimport { createTelemetryProviderReducer, } from './TelemetryProviderState.reducer.js';\nimport { createTelemetryProviderFlows } from './TelemetryProviderState.flows.js';\n/** Pending metadata enrichment allowed per provider before built-in records skip enrichment. */\nconst METADATA_CAPACITY = 256;\n/** Deadline for built-in enrichment; on expiry the original safe record is emitted. */\nconst BUILT_IN_METADATA_TIMEOUT_MS = 1_000;\n/** Pending asynchronous processing allowed per adapter before records are dropped for it. */\nconst ADAPTER_PROCESSING_CAPACITY = 256;\n/**\n * The telemetry engine behind a `TelemetryProvider`.\n *\n * Owns the record pipeline (scope, built-in envelope protection, bounded metadata enrichment,\n * adapter delivery, parent relay and event dispatch) and a reactive state of lifecycle,\n * in-flight work and health. `initialize` and `dispose` are async actions whose flows perform\n * the work; failures are recorded in state and reported once by a flow.\n *\n * Records stay on a synchronous stream rather than becoming actions, so adapter delivery\n * happens within `track`. Operation outcomes are delivered as actions on the `asyncScheduler`,\n * so with fake timers, advance timers to settle `initialize` or `dispose`.\n *\n * @example\n * ```ts\n * const state = new TelemetryProviderState({ config, owner: provider });\n * await state.initialize({ parent });\n * state.track(record);\n * await state.dispose();\n * ```\n */\nexport class TelemetryProviderState {\n #subject;\n #records = new Subject();\n /** Delivery subscriptions, released together when delivery closes. */\n #connections = new Subscription();\n #config;\n #context;\n #modules;\n /**\n * Creates the engine and registers the flows driving its operations.\n * @param context - Configuration, event bus and the public provider.\n */\n constructor({ config, ...context }) {\n const adapters = config?.adapters ?? {};\n // Configuration, not delivery success, determines inherited fallback suppression.\n const ownsExport = config?.ownsExport ?? Object.values(adapters).some((adapter) => !adapter.fallback);\n this.#config = Object.freeze({\n ...config,\n adapters,\n defaultScope: config?.defaultScope ?? [],\n ownsExport,\n });\n this.#context = context;\n this.#subject = new FlowSubject(createTelemetryProviderReducer());\n const flows = createTelemetryProviderFlows({\n connect: (args) => this.#connect(args),\n close: () => this.#close(),\n shutdown: () => this.#shutdown(),\n report: (error, status) => this.#report(error, status),\n });\n // Every operation and health reaction is a flow over this state's actions.\n for (const flow of flows) {\n this.#subject.addFlow(flow);\n }\n }\n /**\n * Current snapshot of lifecycle, in-flight work and health.\n * @returns The latest reduced snapshot.\n */\n get value() {\n return this.#subject.value;\n }\n /**\n * Every record tracked by the provider, after scope and enrichment.\n * @returns The record stream without its internal ownership envelope.\n */\n get items() {\n // Expose records without their internal ownership envelope.\n return this.#records.pipe(map(({ item }) => item));\n }\n /**\n * Exporters configured for this provider, keyed by identifier.\n * @returns The resolved adapters.\n */\n get adapters() {\n return this.#config.adapters;\n }\n /**\n * Sets the resolved framework module instances used to resolve metadata.\n * @param value - The resolved framework module instances.\n */\n set modules(value) {\n this.#modules = value;\n }\n /**\n * Selects a derived value, emitting the current value and then only changes.\n * @param selector - Projection of the snapshot.\n * @returns The selected value stream.\n * @template T - Selected value type.\n */\n select(selector) {\n return this.#subject.select(selector);\n }\n /**\n * Emits once when the snapshot satisfies a condition, immediately when it already does.\n * @param predicate - Condition over the snapshot.\n * @returns A single-emission stream suited to cancellation with `takeUntil`.\n */\n when(predicate) {\n // Only the first matching transition matters for cancellation.\n return this.select(predicate).pipe(filter((matched) => matched), take(1));\n }\n /**\n * Connects exporters, the parent relay and startup streams once; repeated calls join.\n * @param args - Optional parent provider and startup records.\n * @returns Resolves when the provider is connected.\n * @throws {Error} When the provider has already been disposed.\n */\n initialize(args) {\n const { status, initialization } = this.value;\n // A disposed provider must not reconnect exporters or event subscriptions.\n if (status === 'disposed') {\n return Promise.reject(new Error('Cannot initialize disposed telemetry'));\n }\n // Repeated and reentrant initialization joins the same operation.\n if (initialization) {\n return initialization;\n }\n const operation = this.#settled(actions.initialize.success.match, actions.initialize.failure.match);\n this.#subject.next(actions.initialize(args, operation));\n return operation;\n }\n /**\n * Drains owned work, closes delivery and shuts down exporters once; repeated calls join.\n * @returns Resolves after every exporter has shut down.\n * @throws {AggregateError} When any exporter fails to shut down; all are still attempted.\n */\n dispose() {\n const { disposal } = this.value;\n // Direct disposal and module disposal must join the same pending shutdown.\n if (disposal) {\n return disposal;\n }\n const operation = this.#settled(actions.dispose.success.match, actions.dispose.failure.match);\n // Dispatch before any exporter callback runs, so reentrant disposal joins this operation.\n this.#subject.next(actions.dispose(operation));\n return operation;\n }\n /**\n * Records a pipeline health failure; the first occurrence of each is reported.\n * @param error - Controlled failure description; never a raw business error.\n */\n fail(error) {\n this.#subject.next(actions.failed(error));\n }\n /**\n * Tracks a validated record: applies scope, protects built-in envelopes, enriches metadata\n * within bounds and emits it to adapters, the parent and the event bus.\n *\n * @param item - Validated telemetry record.\n * @param handledByChild - Whether an explicit child exporter already handled the record.\n */\n track(item, handledByChild = false) {\n const { status, enrichment } = this.value;\n // Stop accepting records before flushing, while allowing already-owned enrichment to settle.\n if (status === 'disposing' || status === 'disposed') {\n return;\n }\n const mergedItem = mergeTelemetryItem(item, {\n scope: item.diagnostic ? undefined : this.#config.defaultScope,\n });\n // Snapshot before invoking consumer metadata; neither enrichment nor adapters may rewrite origin.\n const diagnostic = mergedItem.diagnostic\n ? Object.freeze({ ...mergedItem.diagnostic })\n : undefined;\n const operational = diagnostic\n ? {\n ...mergedItem,\n diagnostic,\n metadata: undefined,\n scope: [...mergedItem.scope],\n properties: mergedItem.properties ? { ...mergedItem.properties } : undefined,\n }\n : undefined;\n // Immutable built-in envelopes keep one adapter from contaminating sibling or parent delivery.\n if (operational) {\n Object.freeze(operational.scope);\n Object.freeze(operational.properties);\n Object.freeze(operational);\n }\n const emit = (nextItem) => {\n // Late custom metadata emissions cannot revive a completed provider.\n if (this.value.status !== 'disposed') {\n // Dynamic metadata is consumer-controlled; built-in records export only their safe envelope.\n this.#records.next({ item: operational ?? nextItem, handledByChild });\n }\n };\n const { metadata } = this.#config;\n // Skip metadata application for TelemetryMetadataError items to prevent infinite recursion\n if (!metadata || mergedItem.name === TelemetryItemNames.MetadataError) {\n // Providers without metadata still need the same fallback precedence.\n emit(mergedItem);\n return;\n }\n // Bounded built-in enrichment degrades to the safe original instead of dropping the outcome.\n if (diagnostic && enrichment.pending >= METADATA_CAPACITY) {\n this.fail(new Error('Built-in telemetry metadata capacity exceeded'));\n emit(mergedItem);\n return;\n }\n const builtIn = diagnostic !== undefined;\n this.#subject.next(actions.enrichmentStarted(builtIn));\n const metadata$ = defer(() => applyMetadata(metadata, { modules: this.#modules, item: mergedItem }));\n // Enrichment is a bounded, cancellable stage whose in-flight work is provider state.\n metadata$\n .pipe(\n // Custom records retain their legacy timing; built-in outcomes have a finite enrichment deadline.\n builtIn ? timeout({ first: BUILT_IN_METADATA_TIMEOUT_MS }) : (source$) => source$, \n // Failure recovery preserves the terminal outcome even when metadata throws or times out.\n catchError(() => {\n this.fail(new Error('Telemetry metadata resolution failed'));\n return of(mergedItem);\n }), \n // Closing cancels custom enrichment; built-in enrichment has already drained by then.\n takeUntil(this.when((snapshot) => snapshot.status === 'disposed')), \n // Leaving flight is state, so disposal can wait on the drained condition.\n finalize(() => this.#subject.next(actions.enrichmentSettled(builtIn))))\n .subscribe({\n next: (nextItem) => {\n // Raw enrichment errors are health failures, not exportable built-in exceptions.\n if (diagnostic && nextItem.name === TelemetryItemNames.MetadataError) {\n this.fail(new Error('Telemetry metadata resolution failed'));\n return;\n }\n emit(nextItem);\n },\n error: () => {\n this.fail(new Error('Telemetry metadata resolution failed'));\n emit(mergedItem);\n },\n });\n }\n /**\n * Settles an operation from its outcome action.\n * @param succeeded - Matches the operation's success action.\n * @param failed - Matches the operation's failure action.\n * @returns Resolves on success; rejects with the failure payload.\n * @throws The failure action's payload, normally the original operation error.\n */\n #settled(succeeded, failed) {\n // The first outcome of this operation settles every joined caller.\n const outcome$ = this.#subject.action$.pipe(filter((action) => succeeded(action) || failed(action)));\n return firstValueFrom(outcome$).then((action) => {\n // A failure outcome carries the original error as its payload.\n if (failed(action)) {\n throw 'payload' in action ? action.payload : action;\n }\n });\n }\n /**\n * Initializes exporters, then connects delivery, the parent relay and startup streams.\n * @param args - Optional parent provider and startup records.\n */\n async #connect(args) {\n const { parent, initialItems } = args ?? {};\n const exporters = Object.entries(this.#config.adapters);\n // Exporters initialize concurrently; one failing exporter must not block the others.\n const results = await Promise.allSettled(\n // Start every exporter's initialization; async wrapping turns synchronous throws into rejections.\n exporters.map(async ([, adapter]) => adapter.initialize()));\n // Report each exporter that failed to initialize, without its raw error.\n for (const [index, result] of results.entries()) {\n // Fulfilled exporters need no action.\n if (result.status === 'rejected') {\n this.fail(new Error(`Failed to initialize telemetry adapter \"${exporters[index][0]}\"`));\n }\n }\n // Disposal may have closed delivery while an asynchronous exporter initialized.\n if (this.value.status === 'disposed') {\n return;\n }\n this.#connections.add(this.#records.subscribe((record) => this.#deliver(record)));\n // Only a configured parent receives relayed records.\n if (parent) {\n this.#connections.add(this.#records.subscribe((record) => this.#relay(parent, record)));\n }\n this.#connections.add(this.#records.subscribe(({ item }) => this.#dispatchEvent(item)));\n // Keep subscriptions independent so a failed custom stream cannot terminate host lifecycle capture.\n // A disabled capture stays attached but unconsumed, so the host can still recover it on failure.\n if (this.#config.lifecycleItems$ && this.#config.lifecycleItemsEnabled !== false) {\n // The provider is the authority on host identity once it exists.\n this.#connections.add(this.#track(from(this.#config.lifecycleItems$).pipe(map((item) => this.#stamp(item)))));\n }\n // Startup records passed at initialization are tracked as given.\n if (initialItems) {\n this.#connections.add(this.#track(initialItems));\n }\n }\n /**\n * Stamps this provider's host identity on a built-in lifecycle record, so records captured\n * before the provider existed share its source and host ID.\n * @param item - Captured lifecycle record.\n * @returns The record carrying this provider's identity and scope.\n */\n #stamp(item) {\n const source = this.#context.owner.source;\n // Custom records and providers without identity are left as captured.\n if (!item.diagnostic || !source) {\n return item;\n }\n const { source: kind, hostId, hostName, hostVersion } = source;\n return {\n ...item,\n scope: operationalScope(source),\n diagnostic: { ...item.diagnostic, source: kind, hostId, hostName, hostVersion },\n };\n }\n /**\n * Tracks a startup stream through the public provider so each record is validated.\n * @param items - Startup records.\n * @returns The owned subscription.\n */\n #track(items) {\n return from(items).subscribe({\n next: (item) => this.#context.owner.track(item),\n error: () => this.fail(new Error('Initial telemetry stream failed')),\n });\n }\n /**\n * Delivers one record to every eligible exporter within per-exporter capacity.\n * @param record - Record and its fallback ownership.\n */\n #deliver({ item, handledByChild }) {\n const { adapter: adapterFilter } = this.#config.filter ?? {};\n try {\n // A host-level adapter filter intentionally rejects delivery without enabling fallback.\n if (adapterFilter && !adapterFilter(item)) {\n return;\n }\n }\n catch {\n this.fail(new Error('Telemetry adapter filter failed'));\n return;\n }\n // Every exporter is attempted independently.\n for (const [identifier, adapter] of Object.entries(this.#config.adapters)) {\n // Explicit child exporters take precedence over inherited development exporters.\n if (adapter.fallback && handledByChild) {\n // Keep application-owned records out of parent fallback exporters.\n continue;\n }\n // A slow exporter cannot consume a healthy sibling exporter's processing capacity.\n if ((this.value.processing[identifier] ?? 0) >= ADAPTER_PROCESSING_CAPACITY) {\n this.fail(new Error('Telemetry adapter processing capacity exceeded'));\n // Keep attempting sibling adapters even when this destination is saturated.\n continue;\n }\n try {\n const result = adapter.processItem(item);\n // Only asynchronous processing needs shutdown ownership and bounded pending capacity.\n if (result) {\n this.#subject.next(actions.processingStarted(identifier));\n Promise.resolve(result)\n .catch(() => this.fail(new Error(`Failed to process telemetry item with adapter \"${identifier}\"`)))\n .finally(() => this.#subject.next(actions.processingSettled(identifier)));\n }\n }\n catch {\n this.fail(new Error(`Failed to process telemetry item with adapter \"${identifier}\"`));\n }\n }\n }\n /**\n * Relays one record to the parent, carrying exporter ownership.\n * @param target - Parent provider.\n * @param record - Record and its fallback ownership.\n */\n #relay(target, { item, handledByChild }) {\n const policy = {\n // Carry exporter ownership across intermediate providers without changing record metadata.\n ownsExport: handledByChild || this.#config.ownsExport,\n relay: this.#config.filter?.relay,\n };\n try {\n // Legacy parents predate ownership; live relay keeps sending them every record.\n if (!relayRecord(target, item, policy)) {\n target.track(item);\n }\n }\n catch {\n this.fail(new Error('Telemetry parent relay failed'));\n }\n }\n /**\n * Dispatches one record as an event when an event bus is configured.\n * @param item - Delivered record.\n */\n #dispatchEvent(item) {\n const { event, owner } = this.#context;\n // Only dispatch when an event provider is configured\n if (!event) {\n return;\n }\n try {\n Promise.resolve(event.dispatchEvent(new TelemetryEvent(item, owner))).catch(() => this.fail(new Error('Telemetry event dispatch failed')));\n }\n catch {\n this.fail(new Error('Telemetry event dispatch failed'));\n }\n }\n /** Releases delivery subscriptions and completes the record stream. */\n #close() {\n this.#connections.unsubscribe();\n this.#records.complete();\n }\n /**\n * Shuts down every exporter, even when one rejects or throws synchronously.\n * @throws {AggregateError} When any exporter fails to shut down.\n */\n async #shutdown() {\n // Attempt every exporter; one failure must not skip the others.\n const shutdowns = Object.entries(this.#config.adapters).map(async ([identifier, adapter]) => {\n try {\n await adapter.shutdown?.();\n }\n catch (cause) {\n throw new Error(`Failed to shut down telemetry adapter \"${identifier}\"`, { cause });\n }\n });\n const results = await Promise.allSettled(shutdowns);\n // Keep only failures for the module lifecycle's structured disposal error event.\n const errors = results.flatMap((result) => \n // Successful shutdowns must not obscure another exporter's failure.\n result.status === 'rejected' ? [result.reason] : []);\n // Reject only after every exporter had a chance to release its resources.\n if (errors.length) {\n throw new AggregateError(errors, 'Failed to shut down telemetry adapters');\n }\n }\n /**\n * Reports a newly observed failure through the out-of-band health channel.\n * @param error - First occurrence of the failure.\n * @param status - Provider status when the failure was recorded.\n */\n #report(error, status) {\n const { event, owner } = this.#context;\n // The event bus is an out-of-band health sink, never an automatic telemetry exporter.\n if (event && status !== 'disposed') {\n try {\n Promise.resolve(event.dispatchEvent(new TelemetryErrorEvent(error, owner))).catch(() => console.warn('Telemetry health event delivery failed'));\n }\n catch {\n // A failed health channel must remain visible without recursively dispatching another event.\n console.warn('Telemetry health event delivery failed');\n }\n }\n else {\n console.warn(error.message);\n }\n }\n}\nexport default TelemetryProviderState;\n//# sourceMappingURL=TelemetryProviderState.js.map","import { BaseModuleProvider } from '@equinor/fusion-framework-module/provider';\nimport { version } from './version.js';\nimport { TelemetryType } from './static.js';\nimport { TelemetryExceptionSchema, TelemetryCustomEventSchema, TelemetryEventSchema, TelemetryMetricSchema, } from './schemas/telemetry-item-schema.js';\nimport { Measurement } from './Measurement.js';\nimport { TelemetryProviderState } from './TelemetryProviderState.js';\nimport { createOperationalTelemetry, } from './utils/create-operational-telemetry.js';\n/**\n * The telemetry provider applications and modules use to track events, exceptions, metrics\n * and custom telemetry.\n *\n * `TelemetryProvider` is a thin, consumer-facing facade: it validates input against the item\n * schemas and delegates everything else (scope, enrichment, exporter delivery, parent relay,\n * lifecycle and health) to its {@link TelemetryProviderState} engine.\n *\n * @example\n * ```typescript\n * const provider = new TelemetryProvider(config, { event: eventProvider });\n * await provider.initialize({ parent });\n * provider.trackEvent({ name: 'user_login', metadata: { userId: '123' } });\n * const end = provider.measure({ name: 'load_time' });\n * // ... do work ...\n * end();\n * await provider.dispose();\n * ```\n */\nexport class TelemetryProvider extends BaseModuleProvider {\n /** Immutable composition-root origin used by optional infrastructure reporters. */\n source;\n #state;\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.#state.items;\n }\n /**\n * Returns true once initialization has started.\n *\n * @returns `true` once {@link initialize} has been called, otherwise `false`.\n */\n get initialized() {\n return this.#state.value.status !== 'idle';\n }\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.#state.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.source = Object.freeze(config?.source ?? { hostId: crypto.randomUUID() });\n this.#state = new TelemetryProviderState({ config, event: deps?.event, owner: this });\n }\n /**\n * Connects exporters, the parent relay and startup streams. Exporter initialization failures\n * are reported but do not prevent the provider from becoming usable.\n *\n * Repeated and reentrant calls return the same promise.\n *\n * @param args - Optional parent provider to relay to, and startup records to track.\n * @returns Resolves when the provider is connected.\n * @throws {Error} When the provider has already been disposed.\n */\n initialize(args) {\n return this.#state.initialize(args);\n }\n /** {@inheritDoc ITelemetryProvider.scope} */\n scope(module, options) {\n const scope = createOperationalTelemetry(module, options);\n scope.connect(this);\n return scope;\n }\n /**\n * Stops telemetry subscriptions and waits for every adapter to flush and shut down.\n *\n * Repeated calls share the same completion promise so exporters are shut down only once.\n * The telemetry module awaits this promise during framework module disposal.\n *\n * @returns Resolves after all adapter shutdowns settle.\n * @throws {AggregateError} When any adapter fails to shut down; all adapters are still attempted.\n * @example\n * ```ts\n * await provider.dispose();\n * ```\n */\n dispose() {\n return this.#state.dispose();\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 an already validated child record, suppressing fallback exporters when appropriate.\n *\n * @param item - Record emitted by a child telemetry provider.\n * @param hasAdapters - Whether an explicit child adapter has already handled this record.\n */\n trackRelayed(item, hasAdapters) {\n this.#state.track(item, hasAdapters);\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.#state.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.#state.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.#state.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.#state.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.#state.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.#state.adapters;\n }\n}\n//# sourceMappingURL=TelemetryProvider.js.map","import { TelemetryConfigurator } from './TelemetryConfigurator.js';\nimport { TelemetryProvider } from './TelemetryProvider.js';\n/**\n * Creates a reference-independent builder for either preparation or normal configuration.\n * @returns A fresh telemetry configuration builder.\n */\nfunction createTelemetryConfigurator() {\n return new TelemetryConfigurator();\n}\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 disposePhase: 'diagnostics',\n prepare: createTelemetryConfigurator,\n configure: createTelemetryConfigurator,\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 /**\n * Joins exporter shutdown before the framework completes module disposal.\n * @param args - Module disposal context.\n * @param args.instance - Telemetry provider whose subscriptions and exporters must be released.\n * @returns Resolves after the provider finishes disposal.\n */\n dispose: async ({ instance }) => {\n await instance.dispose?.();\n },\n};\nexport default module;\n//# sourceMappingURL=module.js.map","import { mergeMap } from 'rxjs/operators';\nimport { ModuleConfiguratorEventName } from '@equinor/fusion-framework-module/configurator';\nimport { createOperationalRecords } from './create-operational-records.js';\nimport { operationalIdentifier } from '../schemas/operational-identifier.js';\n/**\n * Allowlist of terminal lifecycle events. Every other event, including dependency waits and\n * configuration chatter, is dropped rather than projected.\n */\nconst terminalBoundaries = new Map([\n [\n ModuleConfiguratorEventName.ModuleInitialized,\n { operation: 'initialize', perModule: true, failure: false },\n ],\n [\n ModuleConfiguratorEventName.ModuleInitializeError,\n { operation: 'initialize', perModule: true, failure: true },\n ],\n [\n ModuleConfiguratorEventName.ModuleDisposed,\n { operation: 'dispose', perModule: true, failure: false },\n ],\n [\n ModuleConfiguratorEventName.ModuleDisposeError,\n { operation: 'dispose', perModule: true, failure: true },\n ],\n [\n ModuleConfiguratorEventName.HostInitialized,\n { operation: 'initialize', perModule: false, failure: false },\n ],\n [\n ModuleConfiguratorEventName.HostInitializeError,\n { operation: 'initialize', perModule: false, failure: true },\n ],\n [\n ModuleConfiguratorEventName.ModulesDisposed,\n { operation: 'dispose', perModule: false, failure: false },\n ],\n]);\n/**\n * Projects only terminal lifecycle events into allowlisted operational records.\n * Raw messages, arbitrary properties, errors, and dependency-wait chatter are never forwarded.\n * @param configurator - Lifecycle stream to observe, preferably before user configuration runs.\n * @param source - Host identity, or a lookup into the owning configuration before each record is captured.\n * @returns Terminal duration metrics and controlled failure exceptions.\n */\nexport const mapConfiguratorEvents = (configurator, source = { hostId: crypto.randomUUID() }) => {\n // Project before buffering so raw lifecycle payloads never enter the diagnostic queue.\n return configurator.event$.pipe(mergeMap((event) => {\n // Hosts prefix event names with their class name; the boundary is the unprefixed name.\n const boundary = terminalBoundaries.get(event.name.split('::').at(-1) ?? '');\n // Only measured terminal boundaries belong to foundational operational telemetry.\n if (!boundary) {\n return [];\n }\n // Zero is a valid measurement; missing or invalid timings cannot form a duration record.\n if (event.metric === undefined || !Number.isFinite(event.metric) || event.metric < 0) {\n return [];\n }\n let module = 'host';\n // Module boundaries are attributed to a static, kebab-case module label.\n if (boundary.perModule) {\n const moduleName = event.properties?.moduleName;\n // Aggregate legacy errors cannot be attributed to an individual module.\n if (typeof moduleName !== 'string') {\n return [];\n }\n module = moduleName.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n // Reject dynamic labels rather than admitting paths or payloads into record names.\n if (!operationalIdentifier.safeParse(module).success) {\n console.warn('Unsupported module identifier in lifecycle telemetry');\n return [];\n }\n }\n return createOperationalRecords({\n source: typeof source === 'function' ? source() : source,\n module,\n operation: boundary.operation,\n // Error boundaries fail by kind; host disposal isolates module failures and reports `failed`.\n outcome: boundary.failure || event.properties?.failed ? 'failure' : 'success',\n duration: event.metric,\n });\n }));\n};\nexport default mapConfiguratorEvents;\n//# sourceMappingURL=map-configurator-events.js.map","import { TelemetryLevel } from '../static.js';\n/**\n * Startup records retained before a provider exists. One further slot is reserved for the\n * overflow summary, so a startup burst never retains more than 256 records.\n */\nconst STARTUP_RECORD_CAPACITY = 255;\n/**\n * Failure evidence: an error-level record, or a measurement whose outcome failed even though\n * the measurement itself is reported at a lower level.\n * @param record - Buffered startup record.\n * @returns Whether the record documents a failure.\n */\nconst isFailure = (record) => record.level >= TelemetryLevel.Error || record.diagnostic?.outcome === 'failure';\n/**\n * Bounded buffer for records captured before a telemetry provider exists.\n *\n * At capacity, a failure record replaces the oldest record that is not failure evidence, so\n * failures survive a startup burst; everything else is dropped and counted for an overflow\n * summary.\n *\n * @example\n * ```ts\n * const buffer = new StartupBuffer();\n * buffer.push(record);\n * const { items, dropped } = buffer.drain();\n * ```\n */\nexport class StartupBuffer {\n capacity;\n #items = [];\n #dropped = 0;\n /**\n * Creates an empty buffer.\n * @param capacity - Records retained before records are dropped.\n */\n constructor(capacity = STARTUP_RECORD_CAPACITY) {\n this.capacity = capacity;\n }\n /**\n * Retains a record, preferring failure records once the buffer is full.\n * @param item - Sanitized startup record.\n */\n push(item) {\n // Retain records until capacity.\n if (this.#items.length < this.capacity) {\n this.#items.push(item);\n return;\n }\n // Prefer failure evidence over successful startup measurements when capacity is exhausted.\n const replace = this.#items.findIndex((record) => !isFailure(record));\n // Replacing only non-failure entries prevents later successes from evicting failures.\n if (isFailure(item) && replace >= 0) {\n this.#items.splice(replace, 1, item);\n }\n this.#dropped++;\n }\n /**\n * Takes every retained record and the dropped count, leaving the buffer empty.\n * @returns Retained records, oldest first, and how many were dropped.\n */\n drain() {\n const drained = { items: this.#items, dropped: this.#dropped };\n this.#items = [];\n this.#dropped = 0;\n return drained;\n }\n}\nexport default StartupBuffer;\n//# sourceMappingURL=StartupBuffer.js.map","import { Observable, Subject } from 'rxjs';\nimport { TelemetryLevel, TelemetryType } from '../static.js';\nimport { mapConfiguratorEvents } from '../utils/map-configurator-events.js';\nimport { createOperationalRecords } from '../utils/create-operational-records.js';\nimport { createDiagnosticContext } from '../utils/create-diagnostic-context.js';\nimport { operationalScope } from '../utils/operational-scope.js';\nimport { relayRecord } from '../utils/relay-record.js';\nimport { StartupBuffer } from './StartupBuffer.js';\n/**\n * Captures safe host lifecycle outcomes from before any telemetry provider exists.\n *\n * Telemetry is itself a module, so it cannot observe the startup it is part of. A host creates\n * a capture as soon as it is configured, before any user code runs, and attaches its\n * {@link items} to the telemetry configurator with `attachLifecycleItems`. The capture:\n * - buffers sanitized terminal records (bounded, failures preferred) until the provider\n * consumes {@link items}, then forwards live;\n * - when startup fails before any provider exists, hands the buffer to the host's parent,\n * creating the host failure record when the host never emitted one (for example, a failing\n * host configuration callback). The child's exporters and relay filter are not known yet,\n * so recovery relays without ownership; nothing is dropped.\n *\n * @example\n * ```ts\n * const source = { source: 'portal', hostId: crypto.randomUUID() };\n * const capture = new StartupCapture(configurator, { source, parent });\n * configurator.addConfig({\n * module: telemetryModule,\n * prepare: (builder) => builder.setSource(source).setParent(parent).attachLifecycleItems(capture.items),\n * });\n * try {\n * await configureHost(configurator);\n * } catch (error) {\n * capture.fail();\n * throw error;\n * }\n * ```\n */\nexport class StartupCapture {\n /** Startup records followed by live outcomes, for the provider that consumes the capture. */\n items;\n #options;\n #buffer = new StartupBuffer();\n #live = new Subject();\n /** Buffering until a provider consumes, then live; closed once nothing more is captured. */\n #status = 'capturing';\n /** The host reported its own initialize outcome, so a failure must not create another. */\n #hostReported = false;\n #subscription;\n #startedAt = performance.now();\n /**\n * Starts capture immediately, not when the telemetry configuration eventually resolves.\n * @param host - Host lifecycle stream.\n * @param options - Host identity and the parent receiving records if startup fails.\n */\n constructor(host, options = {}) {\n this.#options = { ...options, source: options.source ?? { hostId: crypto.randomUUID() } };\n this.items = new Observable((subscriber) => {\n const closed = this.#status === 'closed';\n // Join live delivery first, so nothing captured while the buffer drains is lost. A closed\n // capture's live subject is complete and would end the subscriber before the drain.\n const live = closed ? undefined : this.#live.subscribe(subscriber);\n // A capture that already closed stays closed; an active one now forwards live.\n if (!closed) {\n this.#status = 'live';\n }\n const { items, dropped } = this.#buffer.drain();\n // Release the bounded startup buffer exactly once, to the provider that consumes it.\n for (const item of items) {\n subscriber.next(item);\n }\n // Overflow is reported once, alongside the records that survived it.\n if (dropped) {\n subscriber.next(this.#overflowSummary(dropped));\n }\n // A late consumer of a closed capture receives the buffer and nothing more.\n if (closed) {\n subscriber.complete();\n }\n return () => {\n live?.unsubscribe();\n this.#close();\n };\n });\n this.#subscription = mapConfiguratorEvents(host, this.#options.source).subscribe({\n next: (item) => {\n this.#capture(item);\n // Recover synchronously: a host rolling back completes its stream right after this record.\n if (item.name === 'fusion.host.initialize.failure') {\n this.fail();\n }\n },\n error: () => {\n console.warn('Startup telemetry capture failed');\n this.fail();\n },\n complete: () => {\n // Keep the buffer: a provider created after completion may still drain it.\n this.#status = 'closed';\n this.#live.complete();\n },\n });\n // Synchronous replay can close capture before the subscription is assigned.\n if (this.#status === 'closed') {\n this.#subscription.unsubscribe();\n }\n }\n /** Reports buffered startup outcomes once if no provider ever consumed the capture. */\n fail() {\n // Host failure callbacks and stream failures may converge on this same capture.\n if (this.#status === 'closed') {\n return;\n }\n // Configuration callback errors occur before the module host can emit its own boundary.\n if (!this.#hostReported) {\n // Keep the failure duration and sanitized exception together.\n for (const record of createOperationalRecords({\n source: this.#options.source,\n module: 'host',\n operation: 'initialize',\n outcome: 'failure',\n duration: performance.now() - this.#startedAt,\n })) {\n this.#capture(record);\n }\n }\n // An attached provider keeps its records through partial cleanup and sink flush.\n if (this.#status === 'live') {\n return;\n }\n const { items, dropped } = this.#buffer.drain();\n this.#close();\n this.#recover(items, dropped);\n }\n /** Stops capture when configuration explicitly opts out before initialization. */\n stop() {\n this.#buffer.drain();\n this.#close();\n }\n /**\n * Records one sanitized record: buffered until a provider consumes, then forwarded live.\n * @param item - Sanitized lifecycle record.\n */\n #capture(item) {\n // Avoid manufacturing a second host outcome once the host reported its own.\n if (item.diagnostic?.module === 'host' && item.diagnostic.operation === 'initialize') {\n this.#hostReported = true;\n }\n // Live delivery avoids retaining records after the provider is ready.\n if (this.#status === 'live') {\n this.#live.next(item);\n }\n else if (this.#status === 'capturing') {\n this.#buffer.push(item);\n }\n }\n /** Ends capture: releases the host subscription and completes live delivery. */\n #close() {\n this.#status = 'closed';\n this.#subscription?.unsubscribe();\n this.#live.complete();\n }\n /**\n * Hands buffered startup records to the parent after startup failed before a provider existed.\n * @param items - Records retained before recovery.\n * @param dropped - Records discarded at capacity.\n */\n #recover(items, dropped) {\n const { parent } = this.#options;\n let fallbackFailureReported = false;\n // Route only the already sanitized, bounded buffer.\n for (const item of items) {\n // Delivered or intentionally filtered records need no local fallback.\n if (this.#relayToParent(item)) {\n // Move on to the next buffered record.\n continue;\n }\n // A parent that cannot honour ownership is reported once, not once per record.\n if (parent && !fallbackFailureReported) {\n fallbackFailureReported = true;\n console.warn('Startup telemetry fallback delivery failed or could not preserve ownership');\n }\n else if (!parent && item.name === 'fusion.host.initialize.failure') {\n console.warn('Host initialization failed before telemetry became available');\n }\n }\n // Make overflow visible without retaining or forwarding dropped payloads.\n if (dropped) {\n const summary = this.#overflowSummary(dropped);\n // Local, sanitized health reporting is the last resort when no parent can take it.\n if (!this.#relayToParent(summary)) {\n console.warn('Startup telemetry queue overflow', summary.properties);\n }\n }\n }\n /**\n * Delivers one startup record to the host's parent.\n * @param item - Sanitized startup record.\n * @returns Whether the record was delivered or intentionally filtered.\n */\n #relayToParent(item) {\n const { parent } = this.#options;\n // Without a parent there is nowhere to recover to.\n if (!parent) {\n return false;\n }\n try {\n // The child's exporters are not configured yet, so it cannot claim ownership.\n return relayRecord(parent, item, { ownsExport: false });\n }\n catch {\n // Parent delivery failures fall through to local health reporting.\n return false;\n }\n }\n /**\n * Creates the summary standing in for records dropped at startup capacity.\n * @param dropped - Number of records discarded.\n * @returns A safe overflow event carrying only the dropped count.\n */\n #overflowSummary(dropped) {\n const { source } = this.#options;\n return {\n name: 'fusion.telemetry.startup-overflow',\n type: TelemetryType.Event,\n level: TelemetryLevel.Warning,\n properties: { dropped },\n // Scope the summary like the records it stands in for.\n scope: operationalScope(source),\n diagnostic: createDiagnosticContext({\n source,\n module: 'telemetry',\n operation: 'startup-overflow',\n outcome: 'failure',\n }),\n };\n }\n}\nexport default StartupCapture;\n//# sourceMappingURL=StartupCapture.js.map","import { module } from './module.js';\nimport { StartupCapture } from './lib/StartupCapture.js';\n/**\n * Enables telemetry for a given module configurator.\n *\n * Registers the telemetry module and an optional configuration callback. Framework, app and\n * widget hosts already capture their own startup lifecycle; `attachConfiguratorEvents` only\n * matters for custom hosts and for opting out.\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 - `true` captures this configurator's lifecycle unless\n * its host already does; `false` stops lifecycle records reaching this provider. A host still\n * reports a failed startup to its parent.\n * @param options.configure - An optional callback to further configure the telemetry builder. Can be synchronous or asynchronous.\n *\n * @remarks\n * The lifecycle option applies synchronously when this is called, so capture starts before any\n * later configuration code runs. The `configure` callback is deferred until module initialization.\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 const attach = options?.attachConfiguratorEvents;\n configurator.addConfig({\n module,\n // Lifecycle capture must start now, before later configuration code can run.\n prepare: attach === undefined\n ? undefined\n : (builder) => {\n // Opting out keeps the host's capture attached, so a later `true` restores it.\n builder.setLifecycleItemsEnabled(attach);\n // Hosts own their startup capture; only capture here when no host already does.\n if (attach && !builder.hasLifecycleItems()) {\n builder.attachLifecycleItems(new StartupCapture(configurator).items);\n }\n },\n configure: options?.configure,\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.js';\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.js';\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.js';\nimport { QueryClientError } from './QueryClientError.js';\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.js';\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.js';\nimport { actions } from './actions.js';\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.js';\nimport { handleRequests } from './handle-requests.js';\nimport { handleExecution } from './handle-execution.js';\nimport { handleFailure } from './handle-failure.js';\nimport { QueryClientError } from './QueryClientError.js';\nimport createReducer from './create-reducer.js';\nimport { QueryClientJob } from './QueryClientJob.js';\nimport { QueryClientEvent, } from './QueryClientEvent.js';\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.js';\nimport createReducer from './create-reducer.js';\nimport { QueryCacheEvent, } from './QueryCacheEvent.js';\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/index.js';\nimport { QueryCache } from './cache/index.js';\nimport { concatQueue, mergeQueue, queryValue, switchQueue } from './operators/index.js';\nimport { filterAction } from '@equinor/fusion-observable/operators';\nimport { QueryTask } from './QueryTask.js';\nimport { QueryEvent } from './QueryEvent.js';\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","/**\n * Error thrown by {@link ServiceDiscoveryClient} while service discovery is in a\n * failure cooldown and no recent service list is available as a fallback.\n *\n * After a failed service discovery request the client pauses outgoing requests\n * for a growing backoff period instead of calling the API again immediately.\n * Calls made during that pause fail fast with this error, so a misbehaving caller\n * (retry loop, reload loop, render loop) cannot flood the service discovery API.\n *\n * @remarks\n * Use `cause` to inspect the original failure (for example an\n * `HttpJsonResponseError` with status `401`) and `retryAt` to decide when it is\n * worth trying again.\n *\n * @example\n * ```ts\n * try {\n * await serviceDiscovery.resolveService('people');\n * } catch (error) {\n * if (error instanceof ServiceDiscoveryUnavailableError) {\n * console.warn(`service discovery paused until ${new Date(error.retryAt).toISOString()}`);\n * }\n * }\n * ```\n */\nexport class ServiceDiscoveryUnavailableError extends Error {\n /** Epoch milliseconds when the client will attempt a new service discovery request. */\n retryAt;\n /** Number of consecutive failed service discovery requests in the current failure streak. */\n attempt;\n /**\n * @param args - Failure details for the current cooldown.\n * @param args.cause - The error from the last failed service discovery request.\n * @param args.retryAt - Epoch milliseconds when requests resume.\n * @param args.attempt - Number of consecutive failures in the current streak.\n */\n constructor(args) {\n const seconds = Math.max(0, Math.ceil((args.retryAt - Date.now()) / 1000));\n super(`Service discovery is unavailable after ${args.attempt} failed attempt(s); requests are paused for ${seconds}s`, { cause: args.cause });\n this.name = 'ServiceDiscoveryUnavailableError';\n this.retryAt = args.retryAt;\n this.attempt = args.attempt;\n }\n}\n//# sourceMappingURL=ServiceDiscoveryUnavailableError.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 { ServiceDiscoveryUnavailableError } from './ServiceDiscoveryUnavailableError.js';\nimport { firstValueFrom, from, lastValueFrom, map, Subject, } from 'rxjs';\nimport { jsonSelector } from '@equinor/fusion-framework-module-http/selectors';\nimport { ApiServices } from './api-services.js';\n/** Cache key used by the internal {@link Query} instance. */\nconst queryKey = 'services';\n/** Pause after the first failed request; doubles per consecutive failure. */\nconst failureBackoffInitialMs = 1_000;\n/** Upper bound for the pause between failed requests. */\nconst failureBackoffMaxMs = 30_000;\n/** Maximum age of the last successful service list that may be returned when a refresh fails. */\nconst staleIfErrorMs = 24 * 60 * 60 * 1_000;\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 *\n * Failures are hardened so a broken caller cannot flood the service discovery API:\n * - After a failed request the client pauses outgoing requests with exponential\n * backoff (1s, 2s, 4s … capped at 30s). The pause resets on the first\n * successful response.\n * - When a refresh fails, or a call arrives during the pause, the last successful\n * service list is returned if it is younger than 24 hours.\n * - Without a usable fallback, the request that failed rethrows the original error,\n * and calls made during the pause throw {@link ServiceDiscoveryUnavailableError}.\n */\nexport class ServiceDiscoveryClient {\n #query;\n #failure;\n #lastKnownGood;\n #diagnostic = new Subject();\n /** {@inheritDoc IServiceDiscoveryClient.diagnostic$} */\n diagnostic$ = this.#diagnostic.asObservable();\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 async resolveServices(allow_cache) {\n const started = performance.now();\n // Fail fast while cooling down so retry/reload/render loops never reach the network\n if (this.#failure && Date.now() < this.#failure.retryAt) {\n return this.#resolveFallback(new ServiceDiscoveryUnavailableError({\n cause: this.#failure.error,\n retryAt: this.#failure.retryAt,\n attempt: this.#failure.attempt,\n }), started, 'cooldown');\n }\n const startedAt = Date.now();\n let record;\n try {\n // firstValueFrom returns the cached snapshot; lastValueFrom waits for\n // the freshest value from the query\n const fn = allow_cache ? firstValueFrom : lastValueFrom;\n record = await fn(this.#query.query());\n }\n catch (error) {\n this.#registerFailure(error, startedAt);\n return this.#resolveFallback(error, started, 'network');\n }\n // Only a fresh response proves discovery works; a cached (possibly expired) snapshot must\n // not reset the failure streak or renew the age of the fallback list\n if (record.status === 'complete') {\n this.#failure = undefined;\n this.#lastKnownGood = { services: record.value, receivedAt: Date.now() };\n }\n this.#emit({\n type: 'resolve',\n outcome: 'success',\n origin: record.status === 'complete' ? 'network' : 'cache',\n duration: performance.now() - started,\n });\n return record.value;\n }\n /**\n * Records a failed request and schedules the next allowed request time.\n *\n * Concurrent callers share one in-flight request through {@link Query}, so they all\n * reject with the same failure; only the first one to settle may extend the streak,\n * otherwise a single failed request would be counted once per waiting caller.\n *\n * @param error - The error from the failed request.\n * @param startedAt - Epoch milliseconds when the caller started waiting for the request.\n */\n #registerFailure(error, startedAt) {\n // A concurrent caller already recorded this same failed request\n if (this.#failure && this.#failure.failedAt >= startedAt) {\n return;\n }\n const attempt = (this.#failure?.attempt ?? 0) + 1;\n const delay = Math.min(failureBackoffMaxMs, failureBackoffInitialMs * 2 ** (attempt - 1));\n // Up to 20% jitter keeps many clients that failed together from retrying in lockstep\n const jittered = Math.round(delay * (0.8 + Math.random() * 0.2));\n const failedAt = Date.now();\n this.#failure = { error, attempt, failedAt, retryAt: failedAt + jittered };\n // Warn once per streak rather than once per call to keep consoles readable\n if (attempt === 1) {\n console.warn(`[service-discovery] request failed; pausing requests with backoff (max ${failureBackoffMaxMs}ms)`, error);\n }\n }\n /**\n * Returns the last successful service list when it is still fresh enough,\n * otherwise rethrows the given error.\n *\n * @param error - Error to throw when no usable fallback exists.\n * @param started - `performance.now()` timestamp when resolution started.\n * @param failedOrigin - Classification reported when no fallback can be served.\n * @returns The last known good service list.\n * @throws The provided `error` when no service list younger than 24 hours exists.\n */\n #resolveFallback(error, started, failedOrigin) {\n const lastKnownGood = this.#lastKnownGood;\n // Prefer a recent service list over an error so callers have nothing to retry\n if (lastKnownGood && Date.now() - lastKnownGood.receivedAt <= staleIfErrorMs) {\n this.#emit({\n type: 'resolve',\n outcome: 'success',\n origin: 'fallback',\n duration: performance.now() - started,\n });\n return lastKnownGood.services;\n }\n this.#emit({\n type: 'resolve',\n outcome: 'failure',\n origin: failedOrigin,\n duration: performance.now() - started,\n });\n throw error;\n }\n /**\n * Publishes a safe diagnostic outcome without letting an observer affect resolution.\n * @param diagnostic - Classified outcome without keys, URIs, scopes or errors.\n */\n #emit(diagnostic) {\n try {\n this.#diagnostic.next(diagnostic);\n }\n catch {\n // Observers are diagnostic only; resolution results must stay unchanged.\n }\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 this.#emit({ type: 'unknown-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.js';\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.3.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 { TelemetryLevel, } from '@equinor/fusion-framework-module-telemetry';\nimport { version } from './version.js';\nimport { createOperationalTelemetry } from '@equinor/fusion-framework-module-telemetry/utils';\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 this._addTeardown(() => {\n this.#diagnostics?.unsubscribe();\n this.#telemetry.disconnect();\n });\n }\n #telemetry = createOperationalTelemetry('service-discovery');\n #diagnostics;\n /**\n * Connects optional operational telemetry for the client this provider owns.\n *\n * Records one `fusion.service-discovery.resolve.duration` per resolution, plus\n * `cache-hit`, `fallback`, `cooldown` and `unknown-service` notifications. No keys,\n * URIs, scopes or errors are recorded, and HTTP attempts are left to HTTP telemetry.\n * Calling it again replaces the provider; `undefined` records nothing until reconnected.\n *\n * @param telemetry - Host telemetry provider, or `undefined` to record nothing.\n */\n connectTelemetry(telemetry) {\n this.#telemetry.connect(telemetry);\n const diagnostic$ = this.client.diagnostic$;\n // One subscription serves every connection; custom clients without a stream are skipped.\n if (this.#diagnostics || !this.#telemetry.connected || !diagnostic$) {\n return;\n }\n const report = this.#telemetry.report;\n this.#diagnostics = diagnostic$.subscribe((diagnostic) => {\n // An unmatched key is a notification only; it has no measured resolution of its own.\n if (diagnostic.type === 'unknown-service') {\n report({\n notification: true,\n operation: 'unknown-service',\n outcome: 'failure',\n level: TelemetryLevel.Warning,\n });\n return;\n }\n const { outcome, origin, duration } = diagnostic;\n report({ operation: 'resolve', outcome, duration });\n // Network resolutions are fully described by the measurement and the HTTP attempt.\n if (origin === 'cache') {\n report({\n notification: true,\n operation: 'cache-hit',\n outcome,\n level: TelemetryLevel.Information,\n });\n }\n else if (origin !== 'network') {\n report({\n notification: true,\n operation: origin,\n outcome,\n level: TelemetryLevel.Warning,\n });\n }\n });\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.js';\nimport { ServiceDiscoveryProvider } from './provider.js';\n/**\n * Providers this module created, so host disposal tears down only its own instances and\n * their telemetry, never a provider supplied or shared by another host.\n */\nconst ownedProviders = new WeakMap();\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 const provider = new ServiceDiscoveryProvider(config, httpModule);\n ownedProviders.set(provider, provider);\n return provider;\n },\n postInitialize: async ({ instance, modules, ref }) => {\n // A child reusing its parent's client leaves reporting to the parent, so each\n // resolution is recorded once, by the host that owns the client.\n if (instance.client !== ref?.serviceDiscovery?.client) {\n instance.connectTelemetry?.(modules.telemetry);\n }\n },\n dispose: ({ instance }) => {\n ownedProviders.get(instance)?.dispose();\n ownedProviders.delete(instance);\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","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 * Acquires a token for the active browser session from a Fusion mock server.\n *\n * @param mockServerUrl - Origin of the standalone mock server.\n * @param scopes - OAuth scopes requested by MSAL.\n * @param request - Fetch-compatible browser request function.\n * @returns The issued token, or `null` when the session has no selected user.\n * @throws When the mock server rejects the request or returns an unsupported response.\n */\nexport async function acquireMockServerToken(mockServerUrl, scopes, request = globalThis.fetch) {\n const response = await request(new URL('/@fusion-mock/auth/token', mockServerUrl), {\n method: 'POST',\n credentials: 'include',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ scopes }),\n });\n // Surface protocol and configuration failures instead of falling back to another identity.\n if (!response.ok) {\n throw new Error(`Mock auth token acquisition failed with status ${response.status}`);\n }\n const resolution = await response.json();\n // A missing persona deliberately restores the MSAL mock's built-in identity.\n if (typeof resolution === 'object' &&\n resolution !== null &&\n 'status' in resolution &&\n resolution.status === 'missing') {\n return null;\n }\n // Accept only the documented issued-token response shape.\n if (typeof resolution === 'object' &&\n resolution !== null &&\n 'status' in resolution &&\n resolution.status === 'issued' &&\n 'token' in resolution &&\n typeof resolution.token === 'string') {\n return resolution.token;\n }\n throw new Error('Mock auth token acquisition returned an unsupported status');\n}\n//# sourceMappingURL=acquire-mock-server-token.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 = '5.2.4-next.1';\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 { acquireMockServerToken } from './acquire-mock-server-token.js';\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 mockServerUrl = import.meta.env.FUSION_SPA_MSAL_MOCK_SERVER_URL;\n enableMsalMock(configurator, (builder) => {\n // The SPA owns the HTTP adapter; MSAL owns applying the returned token and account.\n if (mockServerUrl) {\n builder.setAcquireToken(({ scopes }) => acquireMockServerToken(mockServerUrl, scopes));\n }\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}\n// Initialize tracing before app startup so network requests and logs share active trace context.\nif (import.meta.env.FUSION_SPA_TELEMETRY_OTLP_TRACES_ENDPOINT) {\n const { enableDevServerTracing } = await import('./enable-dev-server-tracing.js');\n enableDevServerTracing(new URL(import.meta.env.FUSION_SPA_TELEMETRY_OTLP_TRACES_ENDPOINT, window.location.origin).href);\n}\n// The dev-server environment bridge owns activation; the SPA only consumes its endpoint.\nconst devServerOtlpAdapter = import.meta.env.FUSION_SPA_TELEMETRY_OTLP_ENDPOINT\n ? new (await import('@equinor/fusion-framework-module-telemetry/otlp-adapter')).OtlpAdapter({\n url: new URL(import.meta.env.FUSION_SPA_TELEMETRY_OTLP_ENDPOINT, window.location.origin).href,\n fallback: true,\n serviceName: 'fusion.dev-server',\n })\n : undefined;\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 // Only the dev-server environment bridge opts the shell into OTLP export.\n if (devServerOtlpAdapter) {\n builder.setAdapter('dev-server-otlp', devServerOtlpAdapter);\n }\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","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","finalize","module","createNextState","createReducer","actions","URL","createActions","generateGUID","makeReducer","generateUniqueKey","z\n .object","z.array","z\n .array"],"mappings":"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;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,mBAAmB,CAAC;AACjC;AACA;AACA;AACA;AACA,IAAI,OAAO,SAAS,GAAG,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAOA,SAAO;AACtB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC;AACpC;AACA,IAAI,UAAU,GAAG,IAAI,OAAO,EAAE;AAC9B;AACA,IAAI,cAAc,GAAG,IAAI,GAAG,EAAE;AAC9B;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,IAAI,QAAQ,GAAG,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,GAAG,EAAE;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,GAAG,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG,EAAE;AACzB;AACA,IAAI,kBAAkB,GAAG,IAAI,OAAO,EAAE;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ;AACZ;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAClF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AAO,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,GAAGO,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;AA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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,72,78,106,107,108,109,110,111,112,113,114]}
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sources":["../../../../modules/module/dist/esm/utils/mark-telemetry-export-request.js","../../../../../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/operators/concatAll.js","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/concat.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/ignoreElements.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/exhaustMap.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/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/run-prepare-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.2.9/node_modules/immer/dist/immer.mjs","../../../../utils/observable/dist/esm/operators/filter-action.js","../../../../utils/observable/dist/esm/FlowSubject.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/telemetry/dist/esm/Measurement.js","../../../../modules/event/dist/esm/FrameworkEvent.js","../../../../modules/telemetry/dist/esm/TelemetryErrorEvent.js","../../../../modules/telemetry/dist/esm/TelemetryEvent.js","../../../../modules/telemetry/dist/esm/utils/relay-record.js","../../../../modules/telemetry/dist/esm/utils/resolve-metadata.js","../../../../modules/telemetry/dist/esm/TelemetryProviderState.reducer.js","../../../../modules/telemetry/dist/esm/TelemetryProviderState.flows.js","../../../../modules/telemetry/dist/esm/TelemetryProviderState.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/lib/StartupBuffer.js","../../../../modules/telemetry/dist/esm/lib/StartupCapture.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.3/node_modules/uuid/dist/regex.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/validate.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/parse.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/stringify.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/rng.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/v35.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/v4.js","../../../../../node_modules/.pnpm/uuid@14.0.3/node_modules/uuid/dist/sha1.js","../../../../../node_modules/.pnpm/uuid@14.0.3/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/ServiceDiscoveryUnavailableError.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/adapters/console/ConsoleAdapter.js","../esm/html/acquire-mock-server-token.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 { telemetryExportRequest } from './telemetry-export-request.js';\n/**\n * Marks request options as exporter-owned so operational instrumentation skips the export itself.\n * The marker applies only to this request, not unrelated concurrent traffic.\n * @param init - Options forwarded through the export transport's request pipeline.\n * @returns A copy retaining request options with the telemetry export request marker.\n * @template T - Request options type.\n * @example\n * ```ts\n * client.fetch('/v1/logs', markTelemetryExportRequest({ method: 'POST', body }));\n * ```\n */\nexport function markTelemetryExportRequest(init) {\n return { ...init, [telemetryExportRequest]: true };\n}\n//# sourceMappingURL=mark-telemetry-export-request.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { 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 { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period, scheduler) {\n if (period === void 0) { period = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n//# sourceMappingURL=interval.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { 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 { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n//# sourceMappingURL=ignoreElements.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 { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) {\n return source.pipe(exhaustMap(function (a, i) { return innerFrom(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }));\n };\n }\n return operate(function (source, subscriber) {\n var index = 0;\n var innerSub = null;\n var isComplete = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (outerValue) {\n if (!innerSub) {\n innerSub = createOperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=exhaustMap.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 { __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 PreparedConfigReplaced: `${ModuleConfiguratorEventBaseName}.module.preparedConfigReplaced`,\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 HostInitializeStarted: `${ModuleConfiguratorEventBaseName}.host.initializeStarted`,\n HostInitialized: `${ModuleConfiguratorEventBaseName}.host.initialized`,\n HostInitializeError: `${ModuleConfiguratorEventBaseName}.host.initializeError`,\n ConfiguratorCreated: `${ModuleConfiguratorEventBaseName}.configurator.created`,\n ConfiguratorPrepared: `${ModuleConfiguratorEventBaseName}.configurator.prepared`,\n ConfiguratorPrepareError: `${ModuleConfiguratorEventBaseName}.configurator.prepareError`,\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 // Explicitly registered builders must not be replaced by another factory-created instance.\n const configurator = ctx.configurators?.has(module)\n ? ctx.configurators.get(module)\n : 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} — reuse prepared builders or call `configure(ref)` factories.\n * 2. Apply all user-registered config callbacks (`_configs`) concurrently.\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 { ModuleEventLevel, } from '../../../types.js';\nimport { ModuleConfiguratorEventName } from '../module-configurator-event-name.js';\n/**\n * Rejects asynchronous preparation without leaving rejected promises unobserved.\n * @param result - Factory or preparation callback result.\n * @param moduleName - Module to identify in the preparation error.\n * @throws {TypeError} When preparation returned a promise or thenable.\n */\nfunction assertSynchronous(result, moduleName) {\n // Preparation must finish before control returns to host configuration.\n if (result !== null &&\n (typeof result === 'object' || typeof result === 'function') &&\n 'then' in result &&\n typeof result.then === 'function') {\n // Invalid async work cannot be canceled, but its eventual rejection must remain visible.\n void Promise.resolve(result).catch(() => console.warn(`Asynchronous preparation failed for module \"${moduleName}\"`));\n throw new TypeError(`Preparation for module \"${moduleName}\" must be synchronous`);\n }\n}\n/**\n * Runs synchronous preparation at the registration boundary, without exposing stored builders.\n * Supplied builders bypass factories; opt-in factories run once per registered descriptor.\n * The ordinary configure phase later receives the same object.\n *\n * Preparation does not mutate orchestrator state: it returns the builder to commit, so a\n * failure leaves the previous registration untouched.\n *\n * @param ctx - Registration and the host's already prepared builders.\n * @returns The builder to commit, or `undefined` for an ordinary, unprepared registration.\n * @template TModule - Registered module descriptor.\n * @template TConfig - Configuration callback type associated with the registration.\n * @throws Rethrows preparation errors after emitting a lifecycle failure event.\n * @internal\n */\nexport function runPreparePhase(ctx) {\n const { registration, configurators, registerEvent } = ctx;\n const { module, configurator, prepare } = registration;\n // Ordinary registrations keep factory creation in the existing configure phase.\n if (configurator === undefined && !prepare) {\n return undefined;\n }\n try {\n // An explicit builder wins; otherwise reuse this descriptor's prepared builder.\n let builder = configurator ?? configurators.get(module);\n // Only opted-in, reference-independent factories may run before initialize(ref).\n if (builder === undefined) {\n // Never freeze an ordinary factory's missing parent reference by invoking it early.\n if (!module.prepare) {\n throw new TypeError(`Module \"${module.name}\" requires a prepare factory or an explicit configurator for preparation`);\n }\n builder = module.prepare();\n assertSynchronous(builder, module.name);\n }\n // Registered callbacks receive their module's builder only within this lifecycle boundary.\n if (prepare) {\n assertSynchronous(prepare(builder), module.name);\n }\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ConfiguratorPrepared,\n message: `Configuration prepared for ${module.name}`,\n properties: { moduleName: module.name },\n });\n return { configurator: builder };\n }\n catch (error) {\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.ConfiguratorPrepareError,\n message: `Configuration preparation failed for ${module.name}`,\n properties: { moduleName: module.name },\n error,\n });\n throw error;\n }\n}\n//# sourceMappingURL=run-prepare-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 'rxjs';\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 const moduleInitStart = performance.now();\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 metric: performance.now() - moduleInitStart,\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 let instance;\n try {\n instance = await module.initialize({\n ref,\n config: config[key],\n requireInstance,\n hasModule,\n });\n }\n catch (error) {\n registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.ModuleInitializeError,\n message: 'Module initialization failed',\n properties: { moduleName: module.name },\n metric: performance.now() - moduleInitStart,\n error,\n });\n throw error;\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 and rejects on the first failure; providers that\n * finish afterwards are passed to `onLateProvider` for cleanup. 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, instances = {}, onLateProvider } = 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(instances);\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 initStart = performance.now();\n let failed = false;\n // Start every initializer at once; peers wait on each other through requireInstance.\n const initializers = modules.map(async (module) => {\n const [name, provider] = await initializeModule(module, {\n config,\n ref,\n requireInstance,\n hasModule,\n registerEvent,\n });\n // Rollback already owns `instances`; a late provider is handed off rather than leaked.\n if (failed) {\n onLateProvider?.(module, provider);\n return;\n }\n instances[name] = provider;\n instance$.next({ ...instances });\n });\n try {\n // Reject on the first failure: a sibling that never settles must not hang startup.\n await Promise.all(initializers);\n }\n catch (error) {\n failed = true;\n // Reject outstanding dependency waits instead of waiting for their timeout.\n instance$.error(error);\n throw error;\n }\n instance$.complete();\n const initTime = Math.round(performance.now() - initStart);\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.ModuleInitializeComplete,\n message: 'All modules initialized',\n properties: { modules: Object.keys(instances).join(', '), loadTime: initTime },\n metric: initTime,\n });\n registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.InitializeComplete,\n message: `Modules instance created in ${initTime}ms`,\n properties: {\n modules: Object.keys(instances).join(', '),\n initTime,\n },\n metric: initTime,\n });\n Object.seal(instances);\n return instances;\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';\n/** Fixed teardown order: ordinary modules first, so diagnostics and events can still record them. */\nconst disposePhaseOrder = ['default', 'diagnostics', 'events'];\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 module `dispose` hooks concurrently within each fixed phase:\n * default, diagnostics, then events. Rejections are isolated through\n * `Promise.allSettled`. 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 const start = performance.now();\n let failed = false;\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 failed = true;\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 const groups = {\n default: [],\n diagnostics: [],\n events: [],\n };\n // Partition once so invalid runtime input cannot silently omit a provider's cleanup.\n for (const module of modules) {\n const phase = module.disposePhase ?? 'default';\n // Only named lifecycle phases may delay cleanup until infrastructure shutdown.\n if (disposePhaseOrder.includes(phase)) {\n groups[phase].push(module);\n }\n else {\n failed = true;\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ModulesDispose,\n message: `Unsupported disposal phase for module ${module.name}; disposing during the default phase`,\n properties: { moduleName: module.name },\n error: new TypeError('Unsupported module disposal phase'),\n });\n groups.default.push(module);\n }\n }\n // Diagnostic infrastructure stays alive through ordinary module teardown.\n for (const phase of disposePhaseOrder) {\n await Promise.allSettled(groups[phase]\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 const moduleStart = performance.now();\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 metric: performance.now() - moduleStart,\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 failed = true;\n registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.ModuleDisposeError,\n metric: performance.now() - moduleStart,\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 // Emit exactly one host outcome before flushing sinks, including when no sinks exist.\n if (phase === 'default') {\n registerEvent({\n level: failed ? ModuleEventLevel.Warning : ModuleEventLevel.Information,\n name: ModuleConfiguratorEventName.ModulesDisposed,\n message: 'Default module disposal complete; flushing lifecycle sinks',\n metric: performance.now() - start,\n properties: { count: modules.length, failed },\n });\n }\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.2.0-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 { runPreparePhase } from './phases/run-prepare-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 **prepare → 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 * | 0 | **Prepare** | `addConfig` | Opt-in synchronous preparation runs during registration, before startup callbacks can fail. |\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 /** Shared disposal per initialized instance, so repeated calls join instead of re-running hooks. */\n #disposals = new WeakMap();\n /** Builders supplied or created during preparation, keyed by their exact module descriptor. */\n #configurators = new Map();\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. Initialization now records teardowns per\n * instance; this list only collects those from `_registerPlugins` overrides that do not\n * forward the attempt's list.\n * @protected\n */\n _pluginTeardowns = [];\n /** Plugin teardowns owned by each initialized instance, so disposing one never tears down another. */\n #instanceTeardowns = new WeakMap();\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. An optional `prepare` callback runs\n * synchronously during registration against the same builder.\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 * @throws Rethrows preparation failures; async preparation and unprepared ordinary factories are rejected.\n */\n addConfig(config) {\n const { module, afterConfig, afterInit, configure } = config;\n // Prepare before touching registration state, so a failed preparation changes nothing.\n const prepared = runPreparePhase({\n registration: config,\n configurators: this.#configurators,\n registerEvent: (event) => this._registerEvent(event),\n });\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 // A host-prepared builder (for example telemetry identity and startup capture) is lost\n // with the old descriptor; duplicate package copies make this easy to miss, so say so.\n if (this.#configurators.has(existingModule)) {\n console.warn(`Prepared configuration for module \"${module.name}\" was replaced`);\n this._registerEvent({\n level: ModuleEventLevel.Warning,\n name: ModuleConfiguratorEventName.PreparedConfigReplaced,\n message: `Prepared configuration for module ${module.name} was replaced by a different descriptor`,\n properties: { moduleName: module.name },\n });\n }\n this._removeModuleCallbacks(module.name);\n this.#configurators.delete(existingModule);\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 // Commit the prepared builder only once the registration itself is in place.\n if (prepared) {\n this.#configurators.set(module, prepared.configurator);\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 * @throws Rethrows the original configuration or initialization error after partial cleanup.\n */\n async initialize(ref) {\n const start = performance.now();\n const instances = {};\n // Plugin cleanup belongs to this attempt, so rollback never drains another instance's.\n const teardowns = [];\n this._registerEvent({\n level: ModuleEventLevel.Debug,\n name: ModuleConfiguratorEventName.HostInitializeStarted,\n message: 'Starting host initialization',\n });\n try {\n const instance = await this._initializeModules(instances, teardowns, ref);\n this._registerEvent({\n level: ModuleEventLevel.Information,\n name: ModuleConfiguratorEventName.HostInitialized,\n message: 'Host initialized',\n metric: performance.now() - start,\n });\n return instance;\n }\n catch (error) {\n this._registerEvent({\n level: ModuleEventLevel.Error,\n name: ModuleConfiguratorEventName.HostInitializeError,\n message: 'Host initialization failed',\n metric: performance.now() - start,\n error,\n });\n // Rollback owns the same provider map as this attempt, even when startup cannot return it.\n try {\n // Never call disposal hooks for modules that did not produce a provider.\n const initializedModules = this.modules.filter((module) => Object.hasOwn(instances, module.name));\n await runDisposePhase({\n modules: initializedModules,\n registerEvent: this._registerEvent.bind(this),\n event$: this.#event$,\n pluginTeardowns: teardowns,\n }, instances, ref);\n }\n catch {\n // Cleanup health is secondary; callers must receive the original startup rejection.\n console.warn('Module initialization rollback failed');\n }\n throw error;\n }\n }\n /**\n * Runs initialization inside the host diagnostic boundary.\n * @param instances - Attempt-owned provider map shared by initialization and rollback.\n * @param teardowns - Attempt-owned plugin teardowns shared by rollback and disposal.\n * @param ref - Reference forwarded to module lifecycle hooks.\n * @returns The sealed module map.\n * @template T - Additional modules in the resulting instance.\n * @template R - Reference type accepted by this host.\n */\n async _initializeModules(instances, teardowns, 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, instances);\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 // The shorthand disposes the returned map itself, so it shares disposal with\n // `configurator.dispose(modules)` and teardown never runs twice or concurrently.\n const modules = Object.seal(Object.assign({}, instance, {\n dispose: () => this.dispose(modules),\n }));\n this.#instanceTeardowns.set(modules, teardowns);\n await this._registerPlugins(modules, ref, teardowns);\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 configurators: this.#configurators,\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 * @param instances - Attempt-owned provider map; forward to `super` when overriding to preserve rollback ownership.\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, instances = {}) {\n return runInitializePhase({\n modules: this.modules,\n registerEvent: this._registerEvent.bind(this),\n instances,\n onLateProvider: (module, provider) => {\n void ModulesConfigurator.#disposeLateProvider(module, provider, ref);\n },\n }, config, ref);\n }\n /**\n * Disposes a provider that finished initializing after startup already rejected.\n * The rollback has completed the event stream by then, so failures are only logged.\n * @param module - Module whose initializer resolved after the rejection.\n * @param provider - The late provider to dispose.\n * @param ref - Reference forwarded to the module dispose hook.\n * @returns A promise resolving once the dispose hook has settled.\n */\n static async #disposeLateProvider(module, provider, ref) {\n try {\n await module.dispose?.({ ref, modules: { [module.name]: provider }, instance: provider });\n }\n catch {\n // Startup already rejected with the original error; a late cleanup failure must not surface.\n console.warn('Module initialization rollback failed');\n }\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 * @param teardowns - Attempt-owned teardown list; forward to `super` when overriding so\n * disposing this instance runs only its own plugin cleanup.\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, teardowns = this._pluginTeardowns) {\n return runPluginPhase({\n plugins: this._plugins,\n teardowns,\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 dispose(instance, ref) {\n // Idempotence belongs to each initialized instance; another instance must still be disposed.\n let disposal = this.#disposals.get(instance);\n // First disposal of this instance starts teardown; later calls join it.\n if (!disposal) {\n // Own teardowns first; the shared list only holds those from non-forwarding overrides.\n const pluginTeardowns = [\n ...(this.#instanceTeardowns.get(instance)?.splice(0) ?? []),\n ...this._pluginTeardowns.splice(0),\n ];\n disposal = 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,\n }, instance, ref);\n this.#disposals.set(instance, disposal);\n }\n return disposal;\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.js';\nimport { requestOperatorHeader } from './request-operator-header.js';\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.js';\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.js';\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.js';\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/index.js';\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.5-next.0';\n//# sourceMappingURL=version.js.map","import { BaseModuleProvider } from '@equinor/fusion-framework-module/provider';\nimport { version } from './version.js';\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/index.js';\nimport { blobSelector, jsonSelector } from '../selectors/index.js';\nimport { HttpResponseError } from '../../errors/index.js';\nimport { createSseSelector, } from '../selectors/create-sse-selector.js';\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.js';\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/index.js';\nimport { HttpClientConfigurator, } from './configurator.js';\nimport { HttpClientProvider } from './provider.js';\nimport { markTelemetryExportRequest, telemetryExportRequest, } from '@equinor/fusion-framework-module';\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 options = { request: { scopes } };\n // A token for telemetry delivery belongs to the export, so it carries the same\n // request-local marker; auth telemetry then skips it instead of recording the export.\n const accessToken = await authProvider.acquireAccessToken(telemetryExportRequest in request ? markTelemetryExportRequest(options) : options);\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 isModified(value) {\n if (!isDraft(value))\n return false;\n return value[DRAFT_STATE].modified_;\n}\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_.delete(prop);\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_ || !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 const source = copy;\n if (isSet(copy))\n copy = /* @__PURE__ */ new Set();\n each(\n source,\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.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 if (state.parent_.type_ === 1 /* Array */ && state.parent_.allIndicesReassigned_) {\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 const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n return latest(state).size;\n }\n has(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n return latest(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 assertUnrevoked(state);\n prepareMapCopy(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 const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n return latest(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 const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n return latest(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 lengthBefore = state.copy_.length;\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(args[0] ?? 0, lengthBefore);\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 thisArg = args[1];\n const result = [];\n const length = source.length;\n for (let i = 0; i < length; i++) {\n if (predicate.call(thisArg, 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 thisArg = args[1];\n const length = source.length;\n const isForward = method === \"find\";\n const step = isForward ? 1 : -1;\n const start = isForward ? 0 : length - 1;\n for (let i = start; i >= 0 && i < length; i += step) {\n if (predicate.call(thisArg, 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 isModified,\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","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';\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 { EMPTY, defer, from } from 'rxjs';\nimport { concatMap, catchError, 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';\nimport { operationalIdentifier } from './schemas/operational-identifier.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, parent providers, host identity and\n * lifecycle records. Every setter records configuration; nothing is resolved until the\n * telemetry module builds its configuration.\n *\n * @example\n * ```typescript\n * const configurator = new TelemetryConfigurator()\n * .setAdapter('console', consoleAdapter)\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 #adapters = {};\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.#adapters)).pipe(mergeMap(([identifier, { configure }]) => \n // Drop adapters whose factory resolved to a falsy value\n defer(() => from(configure(args))).pipe(filter((adapter) => !!adapter), map((adapter) => [identifier, adapter]), catchError(() => {\n // Factory errors may carry credentials or URLs, so only the failure is reported.\n console.warn('Telemetry adapter factory failed');\n return EMPTY;\n }))), scan((acc, [identifier, adapter]) => {\n acc[identifier] = adapter;\n return acc;\n }, {}), defaultIfEmpty({}), shareReplay({ bufferSize: 1, refCount: true }));\n });\n // Ownership is declared configuration: a failed explicit exporter still owns delivery,\n // so its failure can never activate an ancestor's fallback exporter.\n this._set('ownsExport', async () => \n // Any explicit declaration owns delivery.\n Object.values(this.#adapters).some(({ explicit }) => explicit));\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) ?? {}, {}), defaultIfEmpty({}), last(), shareReplay({ bufferSize: 1, refCount: true }));\n });\n }\n /**\n * Registers a telemetry adapter with the configurator.\n *\n * A non-fallback adapter is an explicit exporter: it owns delivery, so the parent's fallback\n * exporters skip records this provider relays.\n *\n * @param identifier - The key used to register and later resolve this adapter.\n * @param adapter - The telemetry adapter to be added.\n * @returns The current instance of the configurator for method chaining.\n */\n setAdapter(identifier, adapter) {\n this.#adapters[identifier] = { configure: async () => adapter, explicit: !adapter.fallback };\n return this;\n }\n /**\n * Configures a telemetry adapter with the configurator.\n *\n * A factory's adapter is unknown until it resolves, so it is declared as an explicit exporter;\n * register fallback adapters with `setAdapter`.\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.#adapters[identifier] = { configure: adapterFn, explicit: true };\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 /** @inheritdoc */\n setSource(source) {\n // Fail at configuration time; an invalid label would otherwise drop every built-in record.\n if (source.source !== undefined && !operationalIdentifier.safeParse(source.source).success) {\n throw new RangeError('Telemetry source kind must be a lowercase kebab-case identifier, such as \"portal\"');\n }\n this._set('source', Object.freeze({ ...source }));\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 /** @inheritdoc */\n attachLifecycleItems(item$) {\n this._set('lifecycleItems$', item$);\n return this;\n }\n /** @inheritdoc */\n hasLifecycleItems() {\n return this._has('lifecycleItems$');\n }\n /** @inheritdoc */\n setLifecycleItemsEnabled(enabled) {\n this._set('lifecycleItemsEnabled', enabled);\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.3';\n//# sourceMappingURL=version.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","/**\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","/**\n * Relays one record to a parent provider under the child's routing policy.\n *\n * Shared by live provider relay and startup recovery, so both honour the same relay filter\n * and exporter ownership.\n *\n * @param target - Parent provider.\n * @param item - Record to relay.\n * @param policy - Child exporter ownership and relay filter.\n * @returns `true` when the parent accepted the record or the filter intentionally rejected it;\n * `false` when the parent cannot honour ownership (a legacy parent and an owned record).\n * @throws Rethrows relay filter and parent delivery errors for the caller's health reporting.\n */\nexport function relayRecord(target, item, policy) {\n // Reject intentionally filtered records without changing export ownership.\n if (policy.relay && !policy.relay(item)) {\n return true;\n }\n // Ownership-aware parents suppress their fallback exporters for records a child owns.\n if (target.trackRelayed) {\n target.trackRelayed(item, policy.ownsExport);\n return true;\n }\n // Legacy parents cannot honour ownership, so they only receive records no child owns.\n if (!policy.ownsExport) {\n target.track(item);\n return true;\n }\n return false;\n}\n//# sourceMappingURL=relay-record.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/telemetry-item-schema.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 { createReducer } from '@equinor/fusion-observable';\nimport { telemetryProviderActions as actions, } from './TelemetryProviderState.actions.js';\n/**\n * Creates the reducer recording telemetry provider transitions.\n * @returns A reducer with a fresh idle initial snapshot.\n */\nexport function createTelemetryProviderReducer() {\n return createReducer(() => ({\n status: 'idle',\n enrichment: { pending: 0, builtIn: 0 },\n processing: {},\n failures: {},\n }), (builder) => builder\n .addCase(actions.initialize, (state, { meta }) => {\n state.initialization = meta.operation;\n // Only an idle provider starts; disposal already in progress keeps its status.\n if (state.status === 'idle') {\n state.status = 'initializing';\n }\n })\n .addCase(actions.initialize.success, (state) => {\n // Disposal requested during initialization wins over late readiness.\n if (state.status === 'initializing') {\n state.status = 'ready';\n }\n })\n .addCase(actions.dispose, (state, { meta }) => {\n state.disposal = meta.operation;\n state.status = 'disposing';\n })\n .addCase(actions.close, (state) => {\n state.status = 'disposed';\n })\n .addCase(actions.enrichmentStarted, (state, { payload }) => {\n state.enrichment.pending++;\n // Only bounded built-in enrichment delays shutdown; custom enrichment is canceled.\n if (payload.builtIn) {\n state.enrichment.builtIn++;\n }\n })\n .addCase(actions.enrichmentSettled, (state, { payload }) => {\n state.enrichment.pending--;\n // Mirror the start transition so the shutdown drain condition stays exact.\n if (payload.builtIn) {\n state.enrichment.builtIn--;\n }\n })\n .addCase(actions.processingStarted, (state, { payload }) => {\n state.processing[payload] = (state.processing[payload] ?? 0) + 1;\n })\n .addCase(actions.processingSettled, (state, { payload }) => {\n state.processing[payload] = (state.processing[payload] ?? 1) - 1;\n })\n .addCase(actions.failed, (state, { payload }) => {\n const failure = state.failures[payload.message];\n // The first occurrence is retained for reporting; repeats only count.\n if (failure) {\n failure.count++;\n }\n else {\n state.failures[payload.message] = { error: payload, count: 1 };\n }\n }));\n}\n//# sourceMappingURL=TelemetryProviderState.reducer.js.map","import { catchError, concat, defer, exhaustMap, filter, from, ignoreElements, map, of, take, tap, withLatestFrom, } from 'rxjs';\nimport { telemetryProviderActions as actions, } from './TelemetryProviderState.actions.js';\n/**\n * Emits once state satisfies a condition, immediately when it already does.\n * @param state$ - Provider state stream.\n * @param predicate - Condition over the snapshot.\n * @returns A single emission of the first matching snapshot.\n */\nconst whenState = (state$, predicate) => \n// Only the first matching snapshot gates the next step.\nstate$.pipe(filter(predicate), take(1));\n/**\n * Connects the provider once per initialize request and settles the shared operation.\n * @param handlers - Engine work.\n * @returns A flow emitting `initialize.success` or `initialize.failure`.\n */\nconst initializeFlow = (handlers) => (action$) => \n// Repeated requests join the running operation, so ignore them while it is in flight.\naction$.pipe(filter(actions.initialize.match), exhaustMap(({ payload }) => \n// Connecting is the operation; its outcome settles every joined caller.\nfrom(handlers.connect(payload)).pipe(map(() => actions.initialize.success()), catchError((error) => of(actions.initialize.failure(error))))));\n/**\n * Drains owned work in order, closes delivery and shuts down exporters once.\n *\n * Order: initialization settles → bounded built-in enrichment drains → delivery closes\n * (canceling custom enrichment) → asynchronous adapter processing drains → repeated failures\n * are summarized → exporters shut down.\n *\n * @param handlers - Engine work.\n * @returns A flow emitting `close`, then `dispose.success` or `dispose.failure`.\n */\nconst disposeFlow = (handlers) => (action$, state$) => \n// Disposal runs once; later requests join the same operation instead.\naction$.pipe(filter(actions.dispose.match), exhaustMap(() => {\n // An in-flight initialization finishes before anything is torn down.\n const initialized$ = whenState(state$, () => true).pipe(exhaustMap(({ initialization }) => from(Promise.allSettled([initialization]))), ignoreElements());\n // Built-in enrichment has a deadline; retain terminal teardown records before closing.\n const closed$ = whenState(state$, ({ enrichment }) => enrichment.builtIn === 0).pipe(tap(() => handlers.close()), map(() => actions.close()));\n // Accepted asynchronous processing is owned and must settle before exporters shut down.\n const drained$ = whenState(state$, ({ processing }) => \n // Every adapter must be drained, not just the one that settled last.\n Object.values(processing).every((pending) => !pending)).pipe(tap(({ failures }) => {\n // Repeated failures stay visible without one event per failed record.\n for (const [failure, { count }] of Object.entries(failures)) {\n // A single occurrence was already reported; summarize only repeats.\n if (count > 1) {\n console.warn('Telemetry pipeline failure summary', { failure, count });\n }\n }\n }), ignoreElements());\n // Shutdown is attempted for every exporter; its outcome settles the operation.\n const shutdown$ = defer(() => from(handlers.shutdown())).pipe(map(() => actions.dispose.success()), catchError((error) => of(actions.dispose.failure(error))));\n return concat(initialized$, closed$, drained$, shutdown$);\n}));\n/**\n * Reports each pipeline failure once, when it first appears in state.\n * @param handlers - Engine work.\n * @returns A flow that only performs reporting and emits no actions.\n */\nconst failureFlow = (handlers) => (action$, state$) => \n// Pair each failure with the snapshot that already counted it.\naction$.pipe(filter(actions.failed.match), withLatestFrom(state$), \n// Only the first occurrence is actionable; repeats are summarized at teardown.\nfilter(([{ payload }, { failures }]) => failures[payload.message]?.count === 1), tap(([{ payload }, { status }]) => handlers.report(payload, status)), ignoreElements());\n/**\n * Creates the flows driving a telemetry provider's operations and health reporting.\n * @param handlers - Engine work the flows delegate to.\n * @returns Flows to register on provider state.\n */\nexport function createTelemetryProviderFlows(handlers) {\n return [initializeFlow(handlers), disposeFlow(handlers), failureFlow(handlers)];\n}\n//# sourceMappingURL=TelemetryProviderState.flows.js.map","import { Subject, Subscription, catchError, defer, filter, finalize, firstValueFrom, from, map, of, take, takeUntil, timeout, } from 'rxjs';\nimport { FlowSubject } from '@equinor/fusion-observable';\nimport { TelemetryErrorEvent, TelemetryEvent } from './TelemetryEvent.js';\nimport { TelemetryItemNames } from './static.js';\nimport { mergeTelemetryItem } from './utils/merge-telemetry-item.js';\nimport { relayRecord } from './utils/relay-record.js';\nimport { operationalScope } from './utils/operational-scope.js';\nimport { applyMetadata } from './utils/resolve-metadata.js';\nimport { telemetryProviderActions as actions, } from './TelemetryProviderState.actions.js';\nimport { createTelemetryProviderReducer, } from './TelemetryProviderState.reducer.js';\nimport { createTelemetryProviderFlows } from './TelemetryProviderState.flows.js';\n/** Pending metadata enrichment allowed per provider before built-in records skip enrichment. */\nconst METADATA_CAPACITY = 256;\n/** Deadline for built-in enrichment; on expiry the original safe record is emitted. */\nconst BUILT_IN_METADATA_TIMEOUT_MS = 1_000;\n/** Pending asynchronous processing allowed per adapter before records are dropped for it. */\nconst ADAPTER_PROCESSING_CAPACITY = 256;\n/**\n * The telemetry engine behind a `TelemetryProvider`.\n *\n * Owns the record pipeline (scope, built-in envelope protection, bounded metadata enrichment,\n * adapter delivery, parent relay and event dispatch) and a reactive state of lifecycle,\n * in-flight work and health. `initialize` and `dispose` are async actions whose flows perform\n * the work; failures are recorded in state and reported once by a flow.\n *\n * Records stay on a synchronous stream rather than becoming actions, so adapter delivery\n * happens within `track`. Operation outcomes are delivered as actions on the `asyncScheduler`,\n * so with fake timers, advance timers to settle `initialize` or `dispose`.\n *\n * @example\n * ```ts\n * const state = new TelemetryProviderState({ config, owner: provider });\n * await state.initialize({ parent });\n * state.track(record);\n * await state.dispose();\n * ```\n */\nexport class TelemetryProviderState {\n #subject;\n #records = new Subject();\n /** Delivery subscriptions, released together when delivery closes. */\n #connections = new Subscription();\n #config;\n #context;\n #modules;\n /**\n * Creates the engine and registers the flows driving its operations.\n * @param context - Configuration, event bus and the public provider.\n */\n constructor({ config, ...context }) {\n const adapters = config?.adapters ?? {};\n // Configuration, not delivery success, determines inherited fallback suppression.\n const ownsExport = config?.ownsExport ?? Object.values(adapters).some((adapter) => !adapter.fallback);\n this.#config = Object.freeze({\n ...config,\n adapters,\n defaultScope: config?.defaultScope ?? [],\n ownsExport,\n });\n this.#context = context;\n this.#subject = new FlowSubject(createTelemetryProviderReducer());\n const flows = createTelemetryProviderFlows({\n connect: (args) => this.#connect(args),\n close: () => this.#close(),\n shutdown: () => this.#shutdown(),\n report: (error, status) => this.#report(error, status),\n });\n // Every operation and health reaction is a flow over this state's actions.\n for (const flow of flows) {\n this.#subject.addFlow(flow);\n }\n }\n /**\n * Current snapshot of lifecycle, in-flight work and health.\n * @returns The latest reduced snapshot.\n */\n get value() {\n return this.#subject.value;\n }\n /**\n * Every record tracked by the provider, after scope and enrichment.\n * @returns The record stream without its internal ownership envelope.\n */\n get items() {\n // Expose records without their internal ownership envelope.\n return this.#records.pipe(map(({ item }) => item));\n }\n /**\n * Exporters configured for this provider, keyed by identifier.\n * @returns The resolved adapters.\n */\n get adapters() {\n return this.#config.adapters;\n }\n /**\n * Sets the resolved framework module instances used to resolve metadata.\n * @param value - The resolved framework module instances.\n */\n set modules(value) {\n this.#modules = value;\n }\n /**\n * Selects a derived value, emitting the current value and then only changes.\n * @param selector - Projection of the snapshot.\n * @returns The selected value stream.\n * @template T - Selected value type.\n */\n select(selector) {\n return this.#subject.select(selector);\n }\n /**\n * Emits once when the snapshot satisfies a condition, immediately when it already does.\n * @param predicate - Condition over the snapshot.\n * @returns A single-emission stream suited to cancellation with `takeUntil`.\n */\n when(predicate) {\n // Only the first matching transition matters for cancellation.\n return this.select(predicate).pipe(filter((matched) => matched), take(1));\n }\n /**\n * Connects exporters, the parent relay and startup streams once; repeated calls join.\n * @param args - Optional parent provider and startup records.\n * @returns Resolves when the provider is connected.\n * @throws {Error} When the provider has already been disposed.\n */\n initialize(args) {\n const { status, initialization } = this.value;\n // A disposed provider must not reconnect exporters or event subscriptions.\n if (status === 'disposed') {\n return Promise.reject(new Error('Cannot initialize disposed telemetry'));\n }\n // Repeated and reentrant initialization joins the same operation.\n if (initialization) {\n return initialization;\n }\n const operation = this.#settled(actions.initialize.success.match, actions.initialize.failure.match);\n this.#subject.next(actions.initialize(args, operation));\n return operation;\n }\n /**\n * Drains owned work, closes delivery and shuts down exporters once; repeated calls join.\n * @returns Resolves after every exporter has shut down.\n * @throws {AggregateError} When any exporter fails to shut down; all are still attempted.\n */\n dispose() {\n const { disposal } = this.value;\n // Direct disposal and module disposal must join the same pending shutdown.\n if (disposal) {\n return disposal;\n }\n const operation = this.#settled(actions.dispose.success.match, actions.dispose.failure.match);\n // Dispatch before any exporter callback runs, so reentrant disposal joins this operation.\n this.#subject.next(actions.dispose(operation));\n return operation;\n }\n /**\n * Records a pipeline health failure; the first occurrence of each is reported.\n * @param error - Controlled failure description; never a raw business error.\n */\n fail(error) {\n this.#subject.next(actions.failed(error));\n }\n /**\n * Tracks a validated record: applies scope, protects built-in envelopes, enriches metadata\n * within bounds and emits it to adapters, the parent and the event bus.\n *\n * @param item - Validated telemetry record.\n * @param handledByChild - Whether an explicit child exporter already handled the record.\n */\n track(item, handledByChild = false) {\n const { status, enrichment } = this.value;\n // Stop accepting records before flushing, while allowing already-owned enrichment to settle.\n if (status === 'disposing' || status === 'disposed') {\n return;\n }\n const mergedItem = mergeTelemetryItem(item, {\n scope: item.diagnostic ? undefined : this.#config.defaultScope,\n });\n // Snapshot before invoking consumer metadata; neither enrichment nor adapters may rewrite origin.\n const diagnostic = mergedItem.diagnostic\n ? Object.freeze({ ...mergedItem.diagnostic })\n : undefined;\n const operational = diagnostic\n ? {\n ...mergedItem,\n diagnostic,\n metadata: undefined,\n scope: [...mergedItem.scope],\n properties: mergedItem.properties ? { ...mergedItem.properties } : undefined,\n }\n : undefined;\n // Immutable built-in envelopes keep one adapter from contaminating sibling or parent delivery.\n if (operational) {\n Object.freeze(operational.scope);\n Object.freeze(operational.properties);\n Object.freeze(operational);\n }\n const emit = (nextItem) => {\n // Late custom metadata emissions cannot revive a completed provider.\n if (this.value.status !== 'disposed') {\n // Dynamic metadata is consumer-controlled; built-in records export only their safe envelope.\n this.#records.next({ item: operational ?? nextItem, handledByChild });\n }\n };\n const { metadata } = this.#config;\n // Skip metadata application for TelemetryMetadataError items to prevent infinite recursion\n if (!metadata || mergedItem.name === TelemetryItemNames.MetadataError) {\n // Providers without metadata still need the same fallback precedence.\n emit(mergedItem);\n return;\n }\n // Bounded built-in enrichment degrades to the safe original instead of dropping the outcome.\n if (diagnostic && enrichment.pending >= METADATA_CAPACITY) {\n this.fail(new Error('Built-in telemetry metadata capacity exceeded'));\n emit(mergedItem);\n return;\n }\n const builtIn = diagnostic !== undefined;\n this.#subject.next(actions.enrichmentStarted(builtIn));\n const metadata$ = defer(() => applyMetadata(metadata, { modules: this.#modules, item: mergedItem }));\n // Enrichment is a bounded, cancellable stage whose in-flight work is provider state.\n metadata$\n .pipe(\n // Custom records retain their legacy timing; built-in outcomes have a finite enrichment deadline.\n builtIn ? timeout({ first: BUILT_IN_METADATA_TIMEOUT_MS }) : (source$) => source$, \n // Failure recovery preserves the terminal outcome even when metadata throws or times out.\n catchError(() => {\n this.fail(new Error('Telemetry metadata resolution failed'));\n return of(mergedItem);\n }), \n // Closing cancels custom enrichment; built-in enrichment has already drained by then.\n takeUntil(this.when((snapshot) => snapshot.status === 'disposed')), \n // Leaving flight is state, so disposal can wait on the drained condition.\n finalize(() => this.#subject.next(actions.enrichmentSettled(builtIn))))\n .subscribe({\n next: (nextItem) => {\n // Raw enrichment errors are health failures, not exportable built-in exceptions.\n if (diagnostic && nextItem.name === TelemetryItemNames.MetadataError) {\n this.fail(new Error('Telemetry metadata resolution failed'));\n return;\n }\n emit(nextItem);\n },\n error: () => {\n this.fail(new Error('Telemetry metadata resolution failed'));\n emit(mergedItem);\n },\n });\n }\n /**\n * Settles an operation from its outcome action.\n * @param succeeded - Matches the operation's success action.\n * @param failed - Matches the operation's failure action.\n * @returns Resolves on success; rejects with the failure payload.\n * @throws The failure action's payload, normally the original operation error.\n */\n #settled(succeeded, failed) {\n // The first outcome of this operation settles every joined caller.\n const outcome$ = this.#subject.action$.pipe(filter((action) => succeeded(action) || failed(action)));\n return firstValueFrom(outcome$).then((action) => {\n // A failure outcome carries the original error as its payload.\n if (failed(action)) {\n throw 'payload' in action ? action.payload : action;\n }\n });\n }\n /**\n * Initializes exporters, then connects delivery, the parent relay and startup streams.\n * @param args - Optional parent provider and startup records.\n */\n async #connect(args) {\n const { parent, initialItems } = args ?? {};\n const exporters = Object.entries(this.#config.adapters);\n // Exporters initialize concurrently; one failing exporter must not block the others.\n const results = await Promise.allSettled(\n // Start every exporter's initialization; async wrapping turns synchronous throws into rejections.\n exporters.map(async ([, adapter]) => adapter.initialize()));\n // Report each exporter that failed to initialize, without its raw error.\n for (const [index, result] of results.entries()) {\n // Fulfilled exporters need no action.\n if (result.status === 'rejected') {\n this.fail(new Error(`Failed to initialize telemetry adapter \"${exporters[index][0]}\"`));\n }\n }\n // Disposal may have closed delivery while an asynchronous exporter initialized.\n if (this.value.status === 'disposed') {\n return;\n }\n this.#connections.add(this.#records.subscribe((record) => this.#deliver(record)));\n // Only a configured parent receives relayed records.\n if (parent) {\n this.#connections.add(this.#records.subscribe((record) => this.#relay(parent, record)));\n }\n this.#connections.add(this.#records.subscribe(({ item }) => this.#dispatchEvent(item)));\n // Keep subscriptions independent so a failed custom stream cannot terminate host lifecycle capture.\n // A disabled capture stays attached but unconsumed, so the host can still recover it on failure.\n if (this.#config.lifecycleItems$ && this.#config.lifecycleItemsEnabled !== false) {\n // The provider is the authority on host identity once it exists.\n this.#connections.add(this.#track(from(this.#config.lifecycleItems$).pipe(map((item) => this.#stamp(item)))));\n }\n // Startup records passed at initialization are tracked as given.\n if (initialItems) {\n this.#connections.add(this.#track(initialItems));\n }\n }\n /**\n * Stamps this provider's host identity on a built-in lifecycle record, so records captured\n * before the provider existed share its source and host ID.\n * @param item - Captured lifecycle record.\n * @returns The record carrying this provider's identity and scope.\n */\n #stamp(item) {\n const source = this.#context.owner.source;\n // Custom records and providers without identity are left as captured.\n if (!item.diagnostic || !source) {\n return item;\n }\n const { source: kind, hostId, hostName, hostVersion } = source;\n return {\n ...item,\n scope: operationalScope(source),\n diagnostic: { ...item.diagnostic, source: kind, hostId, hostName, hostVersion },\n };\n }\n /**\n * Tracks a startup stream through the public provider so each record is validated.\n * @param items - Startup records.\n * @returns The owned subscription.\n */\n #track(items) {\n return from(items).subscribe({\n next: (item) => this.#context.owner.track(item),\n error: () => this.fail(new Error('Initial telemetry stream failed')),\n });\n }\n /**\n * Delivers one record to every eligible exporter within per-exporter capacity.\n * @param record - Record and its fallback ownership.\n */\n #deliver({ item, handledByChild }) {\n const { adapter: adapterFilter } = this.#config.filter ?? {};\n try {\n // A host-level adapter filter intentionally rejects delivery without enabling fallback.\n if (adapterFilter && !adapterFilter(item)) {\n return;\n }\n }\n catch {\n this.fail(new Error('Telemetry adapter filter failed'));\n return;\n }\n // Every exporter is attempted independently.\n for (const [identifier, adapter] of Object.entries(this.#config.adapters)) {\n // Explicit child exporters take precedence over inherited development exporters.\n if (adapter.fallback && handledByChild) {\n // Keep application-owned records out of parent fallback exporters.\n continue;\n }\n // A slow exporter cannot consume a healthy sibling exporter's processing capacity.\n if ((this.value.processing[identifier] ?? 0) >= ADAPTER_PROCESSING_CAPACITY) {\n this.fail(new Error('Telemetry adapter processing capacity exceeded'));\n // Keep attempting sibling adapters even when this destination is saturated.\n continue;\n }\n try {\n const result = adapter.processItem(item);\n // Only asynchronous processing needs shutdown ownership and bounded pending capacity.\n if (result) {\n this.#subject.next(actions.processingStarted(identifier));\n Promise.resolve(result)\n .catch(() => this.fail(new Error(`Failed to process telemetry item with adapter \"${identifier}\"`)))\n .finally(() => this.#subject.next(actions.processingSettled(identifier)));\n }\n }\n catch {\n this.fail(new Error(`Failed to process telemetry item with adapter \"${identifier}\"`));\n }\n }\n }\n /**\n * Relays one record to the parent, carrying exporter ownership.\n * @param target - Parent provider.\n * @param record - Record and its fallback ownership.\n */\n #relay(target, { item, handledByChild }) {\n const policy = {\n // Carry exporter ownership across intermediate providers without changing record metadata.\n ownsExport: handledByChild || this.#config.ownsExport,\n relay: this.#config.filter?.relay,\n };\n try {\n // Legacy parents predate ownership; live relay keeps sending them every record.\n if (!relayRecord(target, item, policy)) {\n target.track(item);\n }\n }\n catch {\n this.fail(new Error('Telemetry parent relay failed'));\n }\n }\n /**\n * Dispatches one record as an event when an event bus is configured.\n * @param item - Delivered record.\n */\n #dispatchEvent(item) {\n const { event, owner } = this.#context;\n // Only dispatch when an event provider is configured\n if (!event) {\n return;\n }\n try {\n Promise.resolve(event.dispatchEvent(new TelemetryEvent(item, owner))).catch(() => this.fail(new Error('Telemetry event dispatch failed')));\n }\n catch {\n this.fail(new Error('Telemetry event dispatch failed'));\n }\n }\n /** Releases delivery subscriptions and completes the record stream. */\n #close() {\n this.#connections.unsubscribe();\n this.#records.complete();\n }\n /**\n * Shuts down every exporter, even when one rejects or throws synchronously.\n * @throws {AggregateError} When any exporter fails to shut down.\n */\n async #shutdown() {\n // Attempt every exporter; one failure must not skip the others.\n const shutdowns = Object.entries(this.#config.adapters).map(async ([identifier, adapter]) => {\n try {\n await adapter.shutdown?.();\n }\n catch (cause) {\n throw new Error(`Failed to shut down telemetry adapter \"${identifier}\"`, { cause });\n }\n });\n const results = await Promise.allSettled(shutdowns);\n // Keep only failures for the module lifecycle's structured disposal error event.\n const errors = results.flatMap((result) => \n // Successful shutdowns must not obscure another exporter's failure.\n result.status === 'rejected' ? [result.reason] : []);\n // Reject only after every exporter had a chance to release its resources.\n if (errors.length) {\n throw new AggregateError(errors, 'Failed to shut down telemetry adapters');\n }\n }\n /**\n * Reports a newly observed failure through the out-of-band health channel.\n * @param error - First occurrence of the failure.\n * @param status - Provider status when the failure was recorded.\n */\n #report(error, status) {\n const { event, owner } = this.#context;\n // The event bus is an out-of-band health sink, never an automatic telemetry exporter.\n if (event && status !== 'disposed') {\n try {\n Promise.resolve(event.dispatchEvent(new TelemetryErrorEvent(error, owner))).catch(() => console.warn('Telemetry health event delivery failed'));\n }\n catch {\n // A failed health channel must remain visible without recursively dispatching another event.\n console.warn('Telemetry health event delivery failed');\n }\n }\n else {\n console.warn(error.message);\n }\n }\n}\nexport default TelemetryProviderState;\n//# sourceMappingURL=TelemetryProviderState.js.map","import { BaseModuleProvider } from '@equinor/fusion-framework-module/provider';\nimport { version } from './version.js';\nimport { TelemetryType } from './static.js';\nimport { TelemetryExceptionSchema, TelemetryCustomEventSchema, TelemetryEventSchema, TelemetryMetricSchema, } from './schemas/telemetry-item-schema.js';\nimport { Measurement } from './Measurement.js';\nimport { TelemetryProviderState } from './TelemetryProviderState.js';\nimport { createOperationalTelemetry, } from './utils/create-operational-telemetry.js';\n/**\n * The telemetry provider applications and modules use to track events, exceptions, metrics\n * and custom telemetry.\n *\n * `TelemetryProvider` is a thin, consumer-facing facade: it validates input against the item\n * schemas and delegates everything else (scope, enrichment, exporter delivery, parent relay,\n * lifecycle and health) to its {@link TelemetryProviderState} engine.\n *\n * @example\n * ```typescript\n * const provider = new TelemetryProvider(config, { event: eventProvider });\n * await provider.initialize({ parent });\n * provider.trackEvent({ name: 'user_login', metadata: { userId: '123' } });\n * const end = provider.measure({ name: 'load_time' });\n * // ... do work ...\n * end();\n * await provider.dispose();\n * ```\n */\nexport class TelemetryProvider extends BaseModuleProvider {\n /** Immutable composition-root origin used by optional infrastructure reporters. */\n source;\n #state;\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.#state.items;\n }\n /**\n * Returns true once initialization has started.\n *\n * @returns `true` once {@link initialize} has been called, otherwise `false`.\n */\n get initialized() {\n return this.#state.value.status !== 'idle';\n }\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.#state.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.source = Object.freeze(config?.source ?? { hostId: crypto.randomUUID() });\n this.#state = new TelemetryProviderState({ config, event: deps?.event, owner: this });\n }\n /**\n * Connects exporters, the parent relay and startup streams. Exporter initialization failures\n * are reported but do not prevent the provider from becoming usable.\n *\n * Repeated and reentrant calls return the same promise.\n *\n * @param args - Optional parent provider to relay to, and startup records to track.\n * @returns Resolves when the provider is connected.\n * @throws {Error} When the provider has already been disposed.\n */\n initialize(args) {\n return this.#state.initialize(args);\n }\n /** {@inheritDoc ITelemetryProvider.scope} */\n scope(module, options) {\n const scope = createOperationalTelemetry(module, options);\n scope.connect(this);\n return scope;\n }\n /**\n * Stops telemetry subscriptions and waits for every adapter to flush and shut down.\n *\n * Repeated calls share the same completion promise so exporters are shut down only once.\n * The telemetry module awaits this promise during framework module disposal.\n *\n * @returns Resolves after all adapter shutdowns settle.\n * @throws {AggregateError} When any adapter fails to shut down; all adapters are still attempted.\n * @example\n * ```ts\n * await provider.dispose();\n * ```\n */\n dispose() {\n return this.#state.dispose();\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 an already validated child record, suppressing fallback exporters when appropriate.\n *\n * @param item - Record emitted by a child telemetry provider.\n * @param hasAdapters - Whether an explicit child adapter has already handled this record.\n */\n trackRelayed(item, hasAdapters) {\n this.#state.track(item, hasAdapters);\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.#state.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.#state.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.#state.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.#state.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.#state.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.#state.adapters;\n }\n}\n//# sourceMappingURL=TelemetryProvider.js.map","import { TelemetryConfigurator } from './TelemetryConfigurator.js';\nimport { TelemetryProvider } from './TelemetryProvider.js';\n/**\n * Creates a reference-independent builder for either preparation or normal configuration.\n * @returns A fresh telemetry configuration builder.\n */\nfunction createTelemetryConfigurator() {\n return new TelemetryConfigurator();\n}\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 disposePhase: 'diagnostics',\n prepare: createTelemetryConfigurator,\n configure: createTelemetryConfigurator,\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 /**\n * Joins exporter shutdown before the framework completes module disposal.\n * @param args - Module disposal context.\n * @param args.instance - Telemetry provider whose subscriptions and exporters must be released.\n * @returns Resolves after the provider finishes disposal.\n */\n dispose: async ({ instance }) => {\n await instance.dispose?.();\n },\n};\nexport default module;\n//# sourceMappingURL=module.js.map","import { mergeMap } from 'rxjs/operators';\nimport { ModuleConfiguratorEventName } from '@equinor/fusion-framework-module/configurator';\nimport { createOperationalRecords } from './create-operational-records.js';\nimport { operationalIdentifier } from '../schemas/operational-identifier.js';\n/**\n * Allowlist of terminal lifecycle events. Every other event, including dependency waits and\n * configuration chatter, is dropped rather than projected.\n */\nconst terminalBoundaries = new Map([\n [\n ModuleConfiguratorEventName.ModuleInitialized,\n { operation: 'initialize', perModule: true, failure: false },\n ],\n [\n ModuleConfiguratorEventName.ModuleInitializeError,\n { operation: 'initialize', perModule: true, failure: true },\n ],\n [\n ModuleConfiguratorEventName.ModuleDisposed,\n { operation: 'dispose', perModule: true, failure: false },\n ],\n [\n ModuleConfiguratorEventName.ModuleDisposeError,\n { operation: 'dispose', perModule: true, failure: true },\n ],\n [\n ModuleConfiguratorEventName.HostInitialized,\n { operation: 'initialize', perModule: false, failure: false },\n ],\n [\n ModuleConfiguratorEventName.HostInitializeError,\n { operation: 'initialize', perModule: false, failure: true },\n ],\n [\n ModuleConfiguratorEventName.ModulesDisposed,\n { operation: 'dispose', perModule: false, failure: false },\n ],\n]);\n/**\n * Projects only terminal lifecycle events into allowlisted operational records.\n * Raw messages, arbitrary properties, errors, and dependency-wait chatter are never forwarded.\n * @param configurator - Lifecycle stream to observe, preferably before user configuration runs.\n * @param source - Host identity, or a lookup into the owning configuration before each record is captured.\n * @returns Terminal duration metrics and controlled failure exceptions.\n */\nexport const mapConfiguratorEvents = (configurator, source = { hostId: crypto.randomUUID() }) => {\n // Project before buffering so raw lifecycle payloads never enter the diagnostic queue.\n return configurator.event$.pipe(mergeMap((event) => {\n // Hosts prefix event names with their class name; the boundary is the unprefixed name.\n const boundary = terminalBoundaries.get(event.name.split('::').at(-1) ?? '');\n // Only measured terminal boundaries belong to foundational operational telemetry.\n if (!boundary) {\n return [];\n }\n // Zero is a valid measurement; missing or invalid timings cannot form a duration record.\n if (event.metric === undefined || !Number.isFinite(event.metric) || event.metric < 0) {\n return [];\n }\n let module = 'host';\n // Module boundaries are attributed to a static, kebab-case module label.\n if (boundary.perModule) {\n const moduleName = event.properties?.moduleName;\n // Aggregate legacy errors cannot be attributed to an individual module.\n if (typeof moduleName !== 'string') {\n return [];\n }\n module = moduleName.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n // Reject dynamic labels rather than admitting paths or payloads into record names.\n if (!operationalIdentifier.safeParse(module).success) {\n console.warn('Unsupported module identifier in lifecycle telemetry');\n return [];\n }\n }\n return createOperationalRecords({\n source: typeof source === 'function' ? source() : source,\n module,\n operation: boundary.operation,\n // Error boundaries fail by kind; host disposal isolates module failures and reports `failed`.\n outcome: boundary.failure || event.properties?.failed ? 'failure' : 'success',\n duration: event.metric,\n });\n }));\n};\nexport default mapConfiguratorEvents;\n//# sourceMappingURL=map-configurator-events.js.map","import { TelemetryLevel } from '../static.js';\n/**\n * Startup records retained before a provider exists. One further slot is reserved for the\n * overflow summary, so a startup burst never retains more than 256 records.\n */\nconst STARTUP_RECORD_CAPACITY = 255;\n/**\n * Failure evidence: an error-level record, or a measurement whose outcome failed even though\n * the measurement itself is reported at a lower level.\n * @param record - Buffered startup record.\n * @returns Whether the record documents a failure.\n */\nconst isFailure = (record) => record.level >= TelemetryLevel.Error || record.diagnostic?.outcome === 'failure';\n/**\n * Bounded buffer for records captured before a telemetry provider exists.\n *\n * At capacity, a failure record replaces the oldest record that is not failure evidence, so\n * failures survive a startup burst; everything else is dropped and counted for an overflow\n * summary.\n *\n * @example\n * ```ts\n * const buffer = new StartupBuffer();\n * buffer.push(record);\n * const { items, dropped } = buffer.drain();\n * ```\n */\nexport class StartupBuffer {\n capacity;\n #items = [];\n #dropped = 0;\n /**\n * Creates an empty buffer.\n * @param capacity - Records retained before records are dropped.\n */\n constructor(capacity = STARTUP_RECORD_CAPACITY) {\n this.capacity = capacity;\n }\n /**\n * Retains a record, preferring failure records once the buffer is full.\n * @param item - Sanitized startup record.\n */\n push(item) {\n // Retain records until capacity.\n if (this.#items.length < this.capacity) {\n this.#items.push(item);\n return;\n }\n // Prefer failure evidence over successful startup measurements when capacity is exhausted.\n const replace = this.#items.findIndex((record) => !isFailure(record));\n // Replacing only non-failure entries prevents later successes from evicting failures.\n if (isFailure(item) && replace >= 0) {\n this.#items.splice(replace, 1, item);\n }\n this.#dropped++;\n }\n /**\n * Takes every retained record and the dropped count, leaving the buffer empty.\n * @returns Retained records, oldest first, and how many were dropped.\n */\n drain() {\n const drained = { items: this.#items, dropped: this.#dropped };\n this.#items = [];\n this.#dropped = 0;\n return drained;\n }\n}\nexport default StartupBuffer;\n//# sourceMappingURL=StartupBuffer.js.map","import { Observable, Subject } from 'rxjs';\nimport { TelemetryLevel, TelemetryType } from '../static.js';\nimport { mapConfiguratorEvents } from '../utils/map-configurator-events.js';\nimport { createOperationalRecords } from '../utils/create-operational-records.js';\nimport { createDiagnosticContext } from '../utils/create-diagnostic-context.js';\nimport { operationalScope } from '../utils/operational-scope.js';\nimport { relayRecord } from '../utils/relay-record.js';\nimport { StartupBuffer } from './StartupBuffer.js';\n/**\n * Captures safe host lifecycle outcomes from before any telemetry provider exists.\n *\n * Telemetry is itself a module, so it cannot observe the startup it is part of. A host creates\n * a capture as soon as it is configured, before any user code runs, and attaches its\n * {@link items} to the telemetry configurator with `attachLifecycleItems`. The capture:\n * - buffers sanitized terminal records (bounded, failures preferred) until the provider\n * consumes {@link items}, then forwards live;\n * - when startup fails before any provider exists, hands the buffer to the host's parent,\n * creating the host failure record when the host never emitted one (for example, a failing\n * host configuration callback). The child's exporters and relay filter are not known yet,\n * so recovery relays without ownership; nothing is dropped.\n *\n * @example\n * ```ts\n * const source = { source: 'portal', hostId: crypto.randomUUID() };\n * const capture = new StartupCapture(configurator, { source, parent });\n * configurator.addConfig({\n * module: telemetryModule,\n * prepare: (builder) => builder.setSource(source).setParent(parent).attachLifecycleItems(capture.items),\n * });\n * try {\n * await configureHost(configurator);\n * } catch (error) {\n * capture.fail();\n * throw error;\n * }\n * ```\n */\nexport class StartupCapture {\n /** Startup records followed by live outcomes, for the provider that consumes the capture. */\n items;\n #options;\n #buffer = new StartupBuffer();\n #live = new Subject();\n /** Buffering until a provider consumes, then live; closed once nothing more is captured. */\n #status = 'capturing';\n /** The host reported its own initialize outcome, so a failure must not create another. */\n #hostReported = false;\n #subscription;\n #startedAt = performance.now();\n /**\n * Starts capture immediately, not when the telemetry configuration eventually resolves.\n * @param host - Host lifecycle stream.\n * @param options - Host identity and the parent receiving records if startup fails.\n */\n constructor(host, options = {}) {\n this.#options = { ...options, source: options.source ?? { hostId: crypto.randomUUID() } };\n this.items = new Observable((subscriber) => {\n const closed = this.#status === 'closed';\n // Join live delivery first, so nothing captured while the buffer drains is lost. A closed\n // capture's live subject is complete and would end the subscriber before the drain.\n const live = closed ? undefined : this.#live.subscribe(subscriber);\n // A capture that already closed stays closed; an active one now forwards live.\n if (!closed) {\n this.#status = 'live';\n }\n const { items, dropped } = this.#buffer.drain();\n // Release the bounded startup buffer exactly once, to the provider that consumes it.\n for (const item of items) {\n subscriber.next(item);\n }\n // Overflow is reported once, alongside the records that survived it.\n if (dropped) {\n subscriber.next(this.#overflowSummary(dropped));\n }\n // A late consumer of a closed capture receives the buffer and nothing more.\n if (closed) {\n subscriber.complete();\n }\n return () => {\n live?.unsubscribe();\n this.#close();\n };\n });\n this.#subscription = mapConfiguratorEvents(host, this.#options.source).subscribe({\n next: (item) => {\n this.#capture(item);\n // Recover synchronously: a host rolling back completes its stream right after this record.\n if (item.name === 'fusion.host.initialize.failure') {\n this.fail();\n }\n },\n error: () => {\n console.warn('Startup telemetry capture failed');\n this.fail();\n },\n complete: () => {\n // Keep the buffer: a provider created after completion may still drain it.\n this.#status = 'closed';\n this.#live.complete();\n },\n });\n // Synchronous replay can close capture before the subscription is assigned.\n if (this.#status === 'closed') {\n this.#subscription.unsubscribe();\n }\n }\n /** Reports buffered startup outcomes once if no provider ever consumed the capture. */\n fail() {\n // Host failure callbacks and stream failures may converge on this same capture.\n if (this.#status === 'closed') {\n return;\n }\n // Configuration callback errors occur before the module host can emit its own boundary.\n if (!this.#hostReported) {\n // Keep the failure duration and sanitized exception together.\n for (const record of createOperationalRecords({\n source: this.#options.source,\n module: 'host',\n operation: 'initialize',\n outcome: 'failure',\n duration: performance.now() - this.#startedAt,\n })) {\n this.#capture(record);\n }\n }\n // An attached provider keeps its records through partial cleanup and sink flush.\n if (this.#status === 'live') {\n return;\n }\n const { items, dropped } = this.#buffer.drain();\n this.#close();\n this.#recover(items, dropped);\n }\n /** Stops capture when configuration explicitly opts out before initialization. */\n stop() {\n this.#buffer.drain();\n this.#close();\n }\n /**\n * Records one sanitized record: buffered until a provider consumes, then forwarded live.\n * @param item - Sanitized lifecycle record.\n */\n #capture(item) {\n // Avoid manufacturing a second host outcome once the host reported its own.\n if (item.diagnostic?.module === 'host' && item.diagnostic.operation === 'initialize') {\n this.#hostReported = true;\n }\n // Live delivery avoids retaining records after the provider is ready.\n if (this.#status === 'live') {\n this.#live.next(item);\n }\n else if (this.#status === 'capturing') {\n this.#buffer.push(item);\n }\n }\n /** Ends capture: releases the host subscription and completes live delivery. */\n #close() {\n this.#status = 'closed';\n this.#subscription?.unsubscribe();\n this.#live.complete();\n }\n /**\n * Hands buffered startup records to the parent after startup failed before a provider existed.\n * @param items - Records retained before recovery.\n * @param dropped - Records discarded at capacity.\n */\n #recover(items, dropped) {\n const { parent } = this.#options;\n let fallbackFailureReported = false;\n // Route only the already sanitized, bounded buffer.\n for (const item of items) {\n // Delivered or intentionally filtered records need no local fallback.\n if (this.#relayToParent(item)) {\n // Move on to the next buffered record.\n continue;\n }\n // A parent that cannot honour ownership is reported once, not once per record.\n if (parent && !fallbackFailureReported) {\n fallbackFailureReported = true;\n console.warn('Startup telemetry fallback delivery failed or could not preserve ownership');\n }\n else if (!parent && item.name === 'fusion.host.initialize.failure') {\n console.warn('Host initialization failed before telemetry became available');\n }\n }\n // Make overflow visible without retaining or forwarding dropped payloads.\n if (dropped) {\n const summary = this.#overflowSummary(dropped);\n // Local, sanitized health reporting is the last resort when no parent can take it.\n if (!this.#relayToParent(summary)) {\n console.warn('Startup telemetry queue overflow', summary.properties);\n }\n }\n }\n /**\n * Delivers one startup record to the host's parent.\n * @param item - Sanitized startup record.\n * @returns Whether the record was delivered or intentionally filtered.\n */\n #relayToParent(item) {\n const { parent } = this.#options;\n // Without a parent there is nowhere to recover to.\n if (!parent) {\n return false;\n }\n try {\n // The child's exporters are not configured yet, so it cannot claim ownership.\n return relayRecord(parent, item, { ownsExport: false });\n }\n catch {\n // Parent delivery failures fall through to local health reporting.\n return false;\n }\n }\n /**\n * Creates the summary standing in for records dropped at startup capacity.\n * @param dropped - Number of records discarded.\n * @returns A safe overflow event carrying only the dropped count.\n */\n #overflowSummary(dropped) {\n const { source } = this.#options;\n return {\n name: 'fusion.telemetry.startup-overflow',\n type: TelemetryType.Event,\n level: TelemetryLevel.Warning,\n properties: { dropped },\n // Scope the summary like the records it stands in for.\n scope: operationalScope(source),\n diagnostic: createDiagnosticContext({\n source,\n module: 'telemetry',\n operation: 'startup-overflow',\n outcome: 'failure',\n }),\n };\n }\n}\nexport default StartupCapture;\n//# sourceMappingURL=StartupCapture.js.map","import { module } from './module.js';\nimport { StartupCapture } from './lib/StartupCapture.js';\n/**\n * Enables telemetry for a given module configurator.\n *\n * Registers the telemetry module and an optional configuration callback. Framework, app and\n * widget hosts already capture their own startup lifecycle; `attachConfiguratorEvents` only\n * matters for custom hosts and for opting out.\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 - `true` captures this configurator's lifecycle unless\n * its host already does; `false` stops lifecycle records reaching this provider. A host still\n * reports a failed startup to its parent.\n * @param options.configure - An optional callback to further configure the telemetry builder. Can be synchronous or asynchronous.\n *\n * @remarks\n * The lifecycle option applies synchronously when this is called, so capture starts before any\n * later configuration code runs. The `configure` callback is deferred until module initialization.\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 const attach = options?.attachConfiguratorEvents;\n configurator.addConfig({\n module,\n // Lifecycle capture must start now, before later configuration code can run.\n prepare: attach === undefined\n ? undefined\n : (builder) => {\n // Opting out keeps the host's capture attached, so a later `true` restores it.\n builder.setLifecycleItemsEnabled(attach);\n // Hosts own their startup capture; only capture here when no host already does.\n if (attach && !builder.hasLifecycleItems()) {\n builder.attachLifecycleItems(new StartupCapture(configurator).items);\n }\n },\n configure: options?.configure,\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.js';\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.js';\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.js';\nimport { QueryClientError } from './QueryClientError.js';\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.js';\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.js';\nimport { actions } from './actions.js';\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.js';\nimport { handleRequests } from './handle-requests.js';\nimport { handleExecution } from './handle-execution.js';\nimport { handleFailure } from './handle-failure.js';\nimport { QueryClientError } from './QueryClientError.js';\nimport createReducer from './create-reducer.js';\nimport { QueryClientJob } from './QueryClientJob.js';\nimport { QueryClientEvent, } from './QueryClientEvent.js';\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.js';\nimport createReducer from './create-reducer.js';\nimport { QueryCacheEvent, } from './QueryCacheEvent.js';\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/index.js';\nimport { QueryCache } from './cache/index.js';\nimport { concatQueue, mergeQueue, queryValue, switchQueue } from './operators/index.js';\nimport { filterAction } from '@equinor/fusion-observable/operators';\nimport { QueryTask } from './QueryTask.js';\nimport { QueryEvent } from './QueryEvent.js';\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","/**\n * Error thrown by {@link ServiceDiscoveryClient} while service discovery is in a\n * failure cooldown and no recent service list is available as a fallback.\n *\n * After a failed service discovery request the client pauses outgoing requests\n * for a growing backoff period instead of calling the API again immediately.\n * Calls made during that pause fail fast with this error, so a misbehaving caller\n * (retry loop, reload loop, render loop) cannot flood the service discovery API.\n *\n * @remarks\n * Use `cause` to inspect the original failure (for example an\n * `HttpJsonResponseError` with status `401`) and `retryAt` to decide when it is\n * worth trying again.\n *\n * @example\n * ```ts\n * try {\n * await serviceDiscovery.resolveService('people');\n * } catch (error) {\n * if (error instanceof ServiceDiscoveryUnavailableError) {\n * console.warn(`service discovery paused until ${new Date(error.retryAt).toISOString()}`);\n * }\n * }\n * ```\n */\nexport class ServiceDiscoveryUnavailableError extends Error {\n /** Epoch milliseconds when the client will attempt a new service discovery request. */\n retryAt;\n /** Number of consecutive failed service discovery requests in the current failure streak. */\n attempt;\n /**\n * @param args - Failure details for the current cooldown.\n * @param args.cause - The error from the last failed service discovery request.\n * @param args.retryAt - Epoch milliseconds when requests resume.\n * @param args.attempt - Number of consecutive failures in the current streak.\n */\n constructor(args) {\n const seconds = Math.max(0, Math.ceil((args.retryAt - Date.now()) / 1000));\n super(`Service discovery is unavailable after ${args.attempt} failed attempt(s); requests are paused for ${seconds}s`, { cause: args.cause });\n this.name = 'ServiceDiscoveryUnavailableError';\n this.retryAt = args.retryAt;\n this.attempt = args.attempt;\n }\n}\n//# sourceMappingURL=ServiceDiscoveryUnavailableError.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 { ServiceDiscoveryUnavailableError } from './ServiceDiscoveryUnavailableError.js';\nimport { firstValueFrom, from, lastValueFrom, map, Subject, } from 'rxjs';\nimport { jsonSelector } from '@equinor/fusion-framework-module-http/selectors';\nimport { ApiServices } from './api-services.js';\n/** Cache key used by the internal {@link Query} instance. */\nconst queryKey = 'services';\n/** Pause after the first failed request; doubles per consecutive failure. */\nconst failureBackoffInitialMs = 1_000;\n/** Upper bound for the pause between failed requests. */\nconst failureBackoffMaxMs = 30_000;\n/** Maximum age of the last successful service list that may be returned when a refresh fails. */\nconst staleIfErrorMs = 24 * 60 * 60 * 1_000;\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 *\n * Failures are hardened so a broken caller cannot flood the service discovery API:\n * - After a failed request the client pauses outgoing requests with exponential\n * backoff (1s, 2s, 4s … capped at 30s). The pause resets on the first\n * successful response.\n * - When a refresh fails, or a call arrives during the pause, the last successful\n * service list is returned if it is younger than 24 hours.\n * - Without a usable fallback, the request that failed rethrows the original error,\n * and calls made during the pause throw {@link ServiceDiscoveryUnavailableError}.\n */\nexport class ServiceDiscoveryClient {\n #query;\n #failure;\n #lastKnownGood;\n #diagnostic = new Subject();\n /** {@inheritDoc IServiceDiscoveryClient.diagnostic$} */\n diagnostic$ = this.#diagnostic.asObservable();\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 async resolveServices(allow_cache) {\n const started = performance.now();\n // Fail fast while cooling down so retry/reload/render loops never reach the network\n if (this.#failure && Date.now() < this.#failure.retryAt) {\n return this.#resolveFallback(new ServiceDiscoveryUnavailableError({\n cause: this.#failure.error,\n retryAt: this.#failure.retryAt,\n attempt: this.#failure.attempt,\n }), started, 'cooldown');\n }\n const startedAt = Date.now();\n let record;\n try {\n // firstValueFrom returns the cached snapshot; lastValueFrom waits for\n // the freshest value from the query\n const fn = allow_cache ? firstValueFrom : lastValueFrom;\n record = await fn(this.#query.query());\n }\n catch (error) {\n this.#registerFailure(error, startedAt);\n return this.#resolveFallback(error, started, 'network');\n }\n // Only a fresh response proves discovery works; a cached (possibly expired) snapshot must\n // not reset the failure streak or renew the age of the fallback list\n if (record.status === 'complete') {\n this.#failure = undefined;\n this.#lastKnownGood = { services: record.value, receivedAt: Date.now() };\n }\n this.#emit({\n type: 'resolve',\n outcome: 'success',\n origin: record.status === 'complete' ? 'network' : 'cache',\n duration: performance.now() - started,\n });\n return record.value;\n }\n /**\n * Records a failed request and schedules the next allowed request time.\n *\n * Concurrent callers share one in-flight request through {@link Query}, so they all\n * reject with the same failure; only the first one to settle may extend the streak,\n * otherwise a single failed request would be counted once per waiting caller.\n *\n * @param error - The error from the failed request.\n * @param startedAt - Epoch milliseconds when the caller started waiting for the request.\n */\n #registerFailure(error, startedAt) {\n // A concurrent caller already recorded this same failed request\n if (this.#failure && this.#failure.failedAt >= startedAt) {\n return;\n }\n const attempt = (this.#failure?.attempt ?? 0) + 1;\n const delay = Math.min(failureBackoffMaxMs, failureBackoffInitialMs * 2 ** (attempt - 1));\n // Up to 20% jitter keeps many clients that failed together from retrying in lockstep\n const jittered = Math.round(delay * (0.8 + Math.random() * 0.2));\n const failedAt = Date.now();\n this.#failure = { error, attempt, failedAt, retryAt: failedAt + jittered };\n // Warn once per streak rather than once per call to keep consoles readable\n if (attempt === 1) {\n console.warn(`[service-discovery] request failed; pausing requests with backoff (max ${failureBackoffMaxMs}ms)`, error);\n }\n }\n /**\n * Returns the last successful service list when it is still fresh enough,\n * otherwise rethrows the given error.\n *\n * @param error - Error to throw when no usable fallback exists.\n * @param started - `performance.now()` timestamp when resolution started.\n * @param failedOrigin - Classification reported when no fallback can be served.\n * @returns The last known good service list.\n * @throws The provided `error` when no service list younger than 24 hours exists.\n */\n #resolveFallback(error, started, failedOrigin) {\n const lastKnownGood = this.#lastKnownGood;\n // Prefer a recent service list over an error so callers have nothing to retry\n if (lastKnownGood && Date.now() - lastKnownGood.receivedAt <= staleIfErrorMs) {\n this.#emit({\n type: 'resolve',\n outcome: 'success',\n origin: 'fallback',\n duration: performance.now() - started,\n });\n return lastKnownGood.services;\n }\n this.#emit({\n type: 'resolve',\n outcome: 'failure',\n origin: failedOrigin,\n duration: performance.now() - started,\n });\n throw error;\n }\n /**\n * Publishes a safe diagnostic outcome without letting an observer affect resolution.\n * @param diagnostic - Classified outcome without keys, URIs, scopes or errors.\n */\n #emit(diagnostic) {\n try {\n this.#diagnostic.next(diagnostic);\n }\n catch {\n // Observers are diagnostic only; resolution results must stay unchanged.\n }\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 this.#emit({ type: 'unknown-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.js';\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.3.0-next.1';\n//# sourceMappingURL=version.js.map","import { configureHttpClient } from '@equinor/fusion-framework-module-http';\nimport { BaseModuleProvider } from '@equinor/fusion-framework-module/provider';\nimport { TelemetryLevel, } from '@equinor/fusion-framework-module-telemetry';\nimport { version } from './version.js';\nimport { createOperationalTelemetry } from '@equinor/fusion-framework-module-telemetry/utils';\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 this._addTeardown(() => {\n this.#diagnostics?.unsubscribe();\n this.#telemetry.disconnect();\n });\n }\n #telemetry = createOperationalTelemetry('service-discovery');\n #diagnostics;\n /**\n * Connects optional operational telemetry for the client this provider owns.\n *\n * Records one `fusion.service-discovery.resolve.duration` per network, fallback or cooldown\n * resolution, plus `fallback`, `cooldown` and `unknown-service` notifications. Cached\n * resolutions record only a Debug-level `cache-hit` notification, so hosts filtering at\n * Information or above export nothing for them. No keys,\n * URIs, scopes or errors are recorded, and HTTP attempts are left to HTTP telemetry.\n * Calling it again replaces the provider; `undefined` records nothing until reconnected.\n *\n * @param telemetry - Host telemetry provider, or `undefined` to record nothing.\n */\n connectTelemetry(telemetry) {\n this.#telemetry.connect(telemetry);\n const diagnostic$ = this.client.diagnostic$;\n // One subscription serves every connection; custom clients without a stream are skipped.\n if (this.#diagnostics || !this.#telemetry.connected || !diagnostic$) {\n return;\n }\n const report = this.#telemetry.report;\n this.#diagnostics = diagnostic$.subscribe((diagnostic) => {\n // An unmatched key is a notification only; it has no measured resolution of its own.\n if (diagnostic.type === 'unknown-service') {\n report({\n notification: true,\n operation: 'unknown-service',\n outcome: 'failure',\n level: TelemetryLevel.Warning,\n });\n return;\n }\n const { outcome, origin, duration } = diagnostic;\n // Cache hits dominate lookup volume and carry no diagnostic value at default levels,\n // so they are a single Debug notification rather than a measured resolution.\n if (origin === 'cache') {\n report({\n notification: true,\n operation: 'cache-hit',\n outcome,\n level: TelemetryLevel.Debug,\n });\n return;\n }\n report({ operation: 'resolve', outcome, duration });\n // Network resolutions are fully described by the measurement and the HTTP attempt.\n if (origin !== 'network') {\n report({\n notification: true,\n operation: origin,\n outcome,\n level: TelemetryLevel.Warning,\n });\n }\n });\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.js';\nimport { ServiceDiscoveryProvider } from './provider.js';\n/**\n * Providers this module created, so host disposal tears down only its own instances and\n * their telemetry, never a provider supplied or shared by another host.\n */\nconst ownedProviders = new WeakMap();\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 const provider = new ServiceDiscoveryProvider(config, httpModule);\n ownedProviders.set(provider, provider);\n return provider;\n },\n postInitialize: async ({ instance, modules, ref }) => {\n // A child reusing its parent's client leaves reporting to the parent, so each\n // resolution is recorded once, by the host that owns the client.\n if (instance.client !== ref?.serviceDiscovery?.client) {\n instance.connectTelemetry?.(modules.telemetry);\n }\n },\n dispose: ({ instance }) => {\n ownedProviders.get(instance)?.dispose();\n ownedProviders.delete(instance);\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","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 * Acquires a token for the active browser session from a Fusion mock server.\n *\n * @param mockServerUrl - Origin of the standalone mock server.\n * @param scopes - OAuth scopes requested by MSAL.\n * @param request - Fetch-compatible browser request function.\n * @returns The issued token, or `null` when the session has no selected user.\n * @throws When the mock server rejects the request or returns an unsupported response.\n */\nexport async function acquireMockServerToken(mockServerUrl, scopes, request = globalThis.fetch) {\n const response = await request(new URL('/@fusion-mock/auth/token', mockServerUrl), {\n method: 'POST',\n credentials: 'include',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({ scopes }),\n });\n // Surface protocol and configuration failures instead of falling back to another identity.\n if (!response.ok) {\n throw new Error(`Mock auth token acquisition failed with status ${response.status}`);\n }\n const resolution = await response.json();\n // A missing persona deliberately restores the MSAL mock's built-in identity.\n if (typeof resolution === 'object' &&\n resolution !== null &&\n 'status' in resolution &&\n resolution.status === 'missing') {\n return null;\n }\n // Accept only the documented issued-token response shape.\n if (typeof resolution === 'object' &&\n resolution !== null &&\n 'status' in resolution &&\n resolution.status === 'issued' &&\n 'token' in resolution &&\n typeof resolution.token === 'string') {\n return resolution.token;\n }\n throw new Error('Mock auth token acquisition returned an unsupported status');\n}\n//# sourceMappingURL=acquire-mock-server-token.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 = '5.2.4-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 { acquireMockServerToken } from './acquire-mock-server-token.js';\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 mockServerUrl = import.meta.env.FUSION_SPA_MSAL_MOCK_SERVER_URL;\n enableMsalMock(configurator, (builder) => {\n // The SPA owns the HTTP adapter; MSAL owns applying the returned token and account.\n if (mockServerUrl) {\n builder.setAcquireToken(({ scopes }) => acquireMockServerToken(mockServerUrl, scopes));\n }\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}\n// Initialize tracing before app startup so network requests and logs share active trace context.\nif (import.meta.env.FUSION_SPA_TELEMETRY_OTLP_TRACES_ENDPOINT) {\n const { enableDevServerTracing } = await import('./enable-dev-server-tracing.js');\n enableDevServerTracing(new URL(import.meta.env.FUSION_SPA_TELEMETRY_OTLP_TRACES_ENDPOINT, window.location.origin).href);\n}\n// The dev-server environment bridge owns activation; the SPA only consumes its endpoint.\nconst devServerOtlpAdapter = import.meta.env.FUSION_SPA_TELEMETRY_OTLP_ENDPOINT\n ? new (await import('@equinor/fusion-framework-module-telemetry/otlp-adapter')).OtlpAdapter({\n url: new URL(import.meta.env.FUSION_SPA_TELEMETRY_OTLP_ENDPOINT, window.location.origin).href,\n fallback: true,\n serviceName: 'fusion.dev-server',\n })\n : undefined;\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 // Only the dev-server environment bridge opts the shell into OTLP export.\n if (devServerOtlpAdapter) {\n builder.setAdapter('dev-server-otlp', devServerOtlpAdapter);\n }\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","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","finalize","module","createNextState","createReducer","actions","URL","createActions","generateGUID","makeReducer","generateUniqueKey","z\n .object","z.array","z\n .array"],"mappings":"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;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,mBAAmB,CAAC;AACjC;AACA;AACA;AACA;AACA,IAAI,OAAO,SAAS,GAAG,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAOA,SAAO;AACtB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC;AACpC;AACA,IAAI,UAAU,GAAG,IAAI,OAAO,EAAE;AAC9B;AACA,IAAI,cAAc,GAAG,IAAI,GAAG,EAAE;AAC9B;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,IAAI,QAAQ,GAAG,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,GAAG,EAAE;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,GAAG,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,GAAG,EAAE;AACzB;AACA,IAAI,kBAAkB,GAAG,IAAI,OAAO,EAAE;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ;AACZ;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAClF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AAO,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,GAAGO,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;AA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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,72,78,106,107,108,109,110,111,112,113,114]}
|