ns-auth-sdk 1.14.2 → 1.14.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-index.cjs +11 -636
- package/dist/browser-index.cjs.map +1 -1
- package/dist/browser-index.d.cts +4 -98
- package/dist/browser-index.d.cts.map +1 -1
- package/dist/browser-index.d.mts +4 -98
- package/dist/browser-index.d.mts.map +1 -1
- package/dist/browser-index.mjs +12 -629
- package/dist/browser-index.mjs.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/zkm.service-B1MBvBEu.cjs +113 -0
- package/dist/zkm.service-B1MBvBEu.cjs.map +1 -0
- package/dist/zkm.service-B32BMC7s.mjs +112 -0
- package/dist/zkm.service-B32BMC7s.mjs.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-index.cjs","names":["#cacheOptions","#cachedEntry","#clearCachedEntry","#scheduleExpiry","#getCachedKeyIfValid","#clearKey","#expiryTimer","gcm","bin","bytes","secp256k1","sha256","loadPromise","#relays","#getIglooCore","#node","#config","#getPeersFallback","#iglooCore","secp256k1","#keyCache","#storageOptions","#prfOptions","#loadKeyInfoFromStorage","#currentKeyInfo","#saveKeyInfoToStorage","createPasskey","getPrfSecret","#signEventMultisig","#clearKey","isPrfSupported","#signWithKey","#encryptShareCredential","#decryptShareConfig","#getShareDetails","#resolveSecretKey","#dbName","#db","bytesToHex","hexToBytes","#backend","#storeName","from","from","b","b","err","b","from","b","b","BehaviorSubject","b","b","b","from","b","from","b","b","b","b","b","b","b","b","v","from","from","_i","i","sourceIndex","_a","i","from","sourceIndex","_a","from","from","from","from","from","from","from","from","from","from","_a","window","_a","window","window","from","i","from","from","exports","loadPromise","BehaviorSubject","#signer","#network","#relays","#dbName","#client","#unreadStore","#inviteReader","#unreadGroupIds$","#notifyGroupChange","#groupChangeHandlers","#fetchKeyPackageEvent","#messageHandlers","#unreadState","#persistUnreadState","#recomputeUnreadGroupIds","#running","#loadUnreadState","#loadProcessedEventIds","#setupIngestionPipeline","#live$","#mainSubscriptions","#ingest$","#startInviteSync","#startKeyPackageTracking","#subscriptions","#inviteSubscription","#keyPackageSubscription","#ingestResults","#processedEventIds","EMPTY","#getProcessedEventIds","#getIngestResults$","#persistProcessedEventId","#dispatchApplicationMessage","hexToBytes","secp256k1","hexToBytes","bytesToHex","base64urlEncode","base64urlDecode","bytesToHex","secp256k1","hexToBytes","parseShareMessage","parseSigningRequest","#resolveSecretKey","#clearKey","nip42Authenticate","filter","getPrfSecret","filter","#isSameRoleVLEITag","#connected","#config","#sessions","#generateNonce","#generateSessionId","#extractClaimsFromVP","sha256","bytesToHex","#connected","#config","#zkPassport","#currentSession","#eudiService","#zkpService","#connected","#url","#aidName","#aidPrefix","#client","#cachedCredentials","#keriaService","#eudiService","#fetchVPToken"],"sources":["../src/utils/utils.ts","../src/utils/key-cache.ts","../src/utils/prf-password-fallback.ts","../src/utils/multisig.ts","../src/utils/crypto-utils.ts","../src/utils/nosskey.ts","../src/utils/test-utils.ts","../src/utils/group-storage.ts","../node_modules/rxjs/dist/cjs/internal/util/isFunction.js","../node_modules/rxjs/dist/cjs/internal/util/createErrorClass.js","../node_modules/rxjs/dist/cjs/internal/util/UnsubscriptionError.js","../node_modules/rxjs/dist/cjs/internal/util/arrRemove.js","../node_modules/rxjs/dist/cjs/internal/Subscription.js","../node_modules/rxjs/dist/cjs/internal/config.js","../node_modules/rxjs/dist/cjs/internal/scheduler/timeoutProvider.js","../node_modules/rxjs/dist/cjs/internal/util/reportUnhandledError.js","../node_modules/rxjs/dist/cjs/internal/util/noop.js","../node_modules/rxjs/dist/cjs/internal/NotificationFactories.js","../node_modules/rxjs/dist/cjs/internal/util/errorContext.js","../node_modules/rxjs/dist/cjs/internal/Subscriber.js","../node_modules/rxjs/dist/cjs/internal/symbol/observable.js","../node_modules/rxjs/dist/cjs/internal/util/identity.js","../node_modules/rxjs/dist/cjs/internal/util/pipe.js","../node_modules/rxjs/dist/cjs/internal/Observable.js","../node_modules/rxjs/dist/cjs/internal/util/lift.js","../node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js","../node_modules/rxjs/dist/cjs/internal/operators/refCount.js","../node_modules/rxjs/dist/cjs/internal/observable/ConnectableObservable.js","../node_modules/rxjs/dist/cjs/internal/scheduler/performanceTimestampProvider.js","../node_modules/rxjs/dist/cjs/internal/scheduler/animationFrameProvider.js","../node_modules/rxjs/dist/cjs/internal/observable/dom/animationFrames.js","../node_modules/rxjs/dist/cjs/internal/util/ObjectUnsubscribedError.js","../node_modules/rxjs/dist/cjs/internal/Subject.js","../node_modules/rxjs/dist/cjs/internal/BehaviorSubject.js","../node_modules/rxjs/dist/cjs/internal/scheduler/dateTimestampProvider.js","../node_modules/rxjs/dist/cjs/internal/ReplaySubject.js","../node_modules/rxjs/dist/cjs/internal/AsyncSubject.js","../node_modules/rxjs/dist/cjs/internal/scheduler/Action.js","../node_modules/rxjs/dist/cjs/internal/scheduler/intervalProvider.js","../node_modules/rxjs/dist/cjs/internal/scheduler/AsyncAction.js","../node_modules/rxjs/dist/cjs/internal/util/Immediate.js","../node_modules/rxjs/dist/cjs/internal/scheduler/immediateProvider.js","../node_modules/rxjs/dist/cjs/internal/scheduler/AsapAction.js","../node_modules/rxjs/dist/cjs/internal/Scheduler.js","../node_modules/rxjs/dist/cjs/internal/scheduler/AsyncScheduler.js","../node_modules/rxjs/dist/cjs/internal/scheduler/AsapScheduler.js","../node_modules/rxjs/dist/cjs/internal/scheduler/asap.js","../node_modules/rxjs/dist/cjs/internal/scheduler/async.js","../node_modules/rxjs/dist/cjs/internal/scheduler/QueueAction.js","../node_modules/rxjs/dist/cjs/internal/scheduler/QueueScheduler.js","../node_modules/rxjs/dist/cjs/internal/scheduler/queue.js","../node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameAction.js","../node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameScheduler.js","../node_modules/rxjs/dist/cjs/internal/scheduler/animationFrame.js","../node_modules/rxjs/dist/cjs/internal/scheduler/VirtualTimeScheduler.js","../node_modules/rxjs/dist/cjs/internal/observable/empty.js","../node_modules/rxjs/dist/cjs/internal/util/isScheduler.js","../node_modules/rxjs/dist/cjs/internal/util/args.js","../node_modules/rxjs/dist/cjs/internal/util/isArrayLike.js","../node_modules/rxjs/dist/cjs/internal/util/isPromise.js","../node_modules/rxjs/dist/cjs/internal/util/isInteropObservable.js","../node_modules/rxjs/dist/cjs/internal/util/isAsyncIterable.js","../node_modules/rxjs/dist/cjs/internal/util/throwUnobservableError.js","../node_modules/rxjs/dist/cjs/internal/symbol/iterator.js","../node_modules/rxjs/dist/cjs/internal/util/isIterable.js","../node_modules/rxjs/dist/cjs/internal/util/isReadableStreamLike.js","../node_modules/rxjs/dist/cjs/internal/observable/innerFrom.js","../node_modules/rxjs/dist/cjs/internal/util/executeSchedule.js","../node_modules/rxjs/dist/cjs/internal/operators/observeOn.js","../node_modules/rxjs/dist/cjs/internal/operators/subscribeOn.js","../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleObservable.js","../node_modules/rxjs/dist/cjs/internal/scheduled/schedulePromise.js","../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleArray.js","../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleIterable.js","../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleAsyncIterable.js","../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleReadableStreamLike.js","../node_modules/rxjs/dist/cjs/internal/scheduled/scheduled.js","../node_modules/rxjs/dist/cjs/internal/observable/from.js","../node_modules/rxjs/dist/cjs/internal/observable/of.js","../node_modules/rxjs/dist/cjs/internal/observable/throwError.js","../node_modules/rxjs/dist/cjs/internal/Notification.js","../node_modules/rxjs/dist/cjs/internal/util/isObservable.js","../node_modules/rxjs/dist/cjs/internal/util/EmptyError.js","../node_modules/rxjs/dist/cjs/internal/lastValueFrom.js","../node_modules/rxjs/dist/cjs/internal/firstValueFrom.js","../node_modules/rxjs/dist/cjs/internal/util/ArgumentOutOfRangeError.js","../node_modules/rxjs/dist/cjs/internal/util/NotFoundError.js","../node_modules/rxjs/dist/cjs/internal/util/SequenceError.js","../node_modules/rxjs/dist/cjs/internal/util/isDate.js","../node_modules/rxjs/dist/cjs/internal/operators/timeout.js","../node_modules/rxjs/dist/cjs/internal/operators/map.js","../node_modules/rxjs/dist/cjs/internal/util/mapOneOrManyArgs.js","../node_modules/rxjs/dist/cjs/internal/observable/bindCallbackInternals.js","../node_modules/rxjs/dist/cjs/internal/observable/bindCallback.js","../node_modules/rxjs/dist/cjs/internal/observable/bindNodeCallback.js","../node_modules/rxjs/dist/cjs/internal/util/argsArgArrayOrObject.js","../node_modules/rxjs/dist/cjs/internal/util/createObject.js","../node_modules/rxjs/dist/cjs/internal/observable/combineLatest.js","../node_modules/rxjs/dist/cjs/internal/operators/mergeInternals.js","../node_modules/rxjs/dist/cjs/internal/operators/mergeMap.js","../node_modules/rxjs/dist/cjs/internal/operators/mergeAll.js","../node_modules/rxjs/dist/cjs/internal/operators/concatAll.js","../node_modules/rxjs/dist/cjs/internal/observable/concat.js","../node_modules/rxjs/dist/cjs/internal/observable/defer.js","../node_modules/rxjs/dist/cjs/internal/observable/connectable.js","../node_modules/rxjs/dist/cjs/internal/observable/forkJoin.js","../node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js","../node_modules/rxjs/dist/cjs/internal/observable/fromEventPattern.js","../node_modules/rxjs/dist/cjs/internal/observable/generate.js","../node_modules/rxjs/dist/cjs/internal/observable/iif.js","../node_modules/rxjs/dist/cjs/internal/observable/timer.js","../node_modules/rxjs/dist/cjs/internal/observable/interval.js","../node_modules/rxjs/dist/cjs/internal/observable/merge.js","../node_modules/rxjs/dist/cjs/internal/observable/never.js","../node_modules/rxjs/dist/cjs/internal/util/argsOrArgArray.js","../node_modules/rxjs/dist/cjs/internal/observable/onErrorResumeNext.js","../node_modules/rxjs/dist/cjs/internal/observable/pairs.js","../node_modules/rxjs/dist/cjs/internal/util/not.js","../node_modules/rxjs/dist/cjs/internal/operators/filter.js","../node_modules/rxjs/dist/cjs/internal/observable/partition.js","../node_modules/rxjs/dist/cjs/internal/observable/race.js","../node_modules/rxjs/dist/cjs/internal/observable/range.js","../node_modules/rxjs/dist/cjs/internal/observable/using.js","../node_modules/rxjs/dist/cjs/internal/observable/zip.js","../node_modules/rxjs/dist/cjs/internal/types.js","../node_modules/rxjs/dist/cjs/internal/operators/audit.js","../node_modules/rxjs/dist/cjs/internal/operators/auditTime.js","../node_modules/rxjs/dist/cjs/internal/operators/buffer.js","../node_modules/rxjs/dist/cjs/internal/operators/bufferCount.js","../node_modules/rxjs/dist/cjs/internal/operators/bufferTime.js","../node_modules/rxjs/dist/cjs/internal/operators/bufferToggle.js","../node_modules/rxjs/dist/cjs/internal/operators/bufferWhen.js","../node_modules/rxjs/dist/cjs/internal/operators/catchError.js","../node_modules/rxjs/dist/cjs/internal/operators/scanInternals.js","../node_modules/rxjs/dist/cjs/internal/operators/reduce.js","../node_modules/rxjs/dist/cjs/internal/operators/toArray.js","../node_modules/rxjs/dist/cjs/internal/operators/joinAllInternals.js","../node_modules/rxjs/dist/cjs/internal/operators/combineLatestAll.js","../node_modules/rxjs/dist/cjs/internal/operators/combineAll.js","../node_modules/rxjs/dist/cjs/internal/operators/combineLatest.js","../node_modules/rxjs/dist/cjs/internal/operators/combineLatestWith.js","../node_modules/rxjs/dist/cjs/internal/operators/concatMap.js","../node_modules/rxjs/dist/cjs/internal/operators/concatMapTo.js","../node_modules/rxjs/dist/cjs/internal/operators/concat.js","../node_modules/rxjs/dist/cjs/internal/operators/concatWith.js","../node_modules/rxjs/dist/cjs/internal/observable/fromSubscribable.js","../node_modules/rxjs/dist/cjs/internal/operators/connect.js","../node_modules/rxjs/dist/cjs/internal/operators/count.js","../node_modules/rxjs/dist/cjs/internal/operators/debounce.js","../node_modules/rxjs/dist/cjs/internal/operators/debounceTime.js","../node_modules/rxjs/dist/cjs/internal/operators/defaultIfEmpty.js","../node_modules/rxjs/dist/cjs/internal/operators/take.js","../node_modules/rxjs/dist/cjs/internal/operators/ignoreElements.js","../node_modules/rxjs/dist/cjs/internal/operators/mapTo.js","../node_modules/rxjs/dist/cjs/internal/operators/delayWhen.js","../node_modules/rxjs/dist/cjs/internal/operators/delay.js","../node_modules/rxjs/dist/cjs/internal/operators/dematerialize.js","../node_modules/rxjs/dist/cjs/internal/operators/distinct.js","../node_modules/rxjs/dist/cjs/internal/operators/distinctUntilChanged.js","../node_modules/rxjs/dist/cjs/internal/operators/distinctUntilKeyChanged.js","../node_modules/rxjs/dist/cjs/internal/operators/throwIfEmpty.js","../node_modules/rxjs/dist/cjs/internal/operators/elementAt.js","../node_modules/rxjs/dist/cjs/internal/operators/endWith.js","../node_modules/rxjs/dist/cjs/internal/operators/every.js","../node_modules/rxjs/dist/cjs/internal/operators/exhaustMap.js","../node_modules/rxjs/dist/cjs/internal/operators/exhaustAll.js","../node_modules/rxjs/dist/cjs/internal/operators/exhaust.js","../node_modules/rxjs/dist/cjs/internal/operators/expand.js","../node_modules/rxjs/dist/cjs/internal/operators/finalize.js","../node_modules/rxjs/dist/cjs/internal/operators/find.js","../node_modules/rxjs/dist/cjs/internal/operators/findIndex.js","../node_modules/rxjs/dist/cjs/internal/operators/first.js","../node_modules/rxjs/dist/cjs/internal/operators/groupBy.js","../node_modules/rxjs/dist/cjs/internal/operators/isEmpty.js","../node_modules/rxjs/dist/cjs/internal/operators/takeLast.js","../node_modules/rxjs/dist/cjs/internal/operators/last.js","../node_modules/rxjs/dist/cjs/internal/operators/materialize.js","../node_modules/rxjs/dist/cjs/internal/operators/max.js","../node_modules/rxjs/dist/cjs/internal/operators/flatMap.js","../node_modules/rxjs/dist/cjs/internal/operators/mergeMapTo.js","../node_modules/rxjs/dist/cjs/internal/operators/mergeScan.js","../node_modules/rxjs/dist/cjs/internal/operators/merge.js","../node_modules/rxjs/dist/cjs/internal/operators/mergeWith.js","../node_modules/rxjs/dist/cjs/internal/operators/min.js","../node_modules/rxjs/dist/cjs/internal/operators/multicast.js","../node_modules/rxjs/dist/cjs/internal/operators/onErrorResumeNextWith.js","../node_modules/rxjs/dist/cjs/internal/operators/pairwise.js","../node_modules/rxjs/dist/cjs/internal/operators/pluck.js","../node_modules/rxjs/dist/cjs/internal/operators/publish.js","../node_modules/rxjs/dist/cjs/internal/operators/publishBehavior.js","../node_modules/rxjs/dist/cjs/internal/operators/publishLast.js","../node_modules/rxjs/dist/cjs/internal/operators/publishReplay.js","../node_modules/rxjs/dist/cjs/internal/operators/raceWith.js","../node_modules/rxjs/dist/cjs/internal/operators/repeat.js","../node_modules/rxjs/dist/cjs/internal/operators/repeatWhen.js","../node_modules/rxjs/dist/cjs/internal/operators/retry.js","../node_modules/rxjs/dist/cjs/internal/operators/retryWhen.js","../node_modules/rxjs/dist/cjs/internal/operators/sample.js","../node_modules/rxjs/dist/cjs/internal/operators/sampleTime.js","../node_modules/rxjs/dist/cjs/internal/operators/scan.js","../node_modules/rxjs/dist/cjs/internal/operators/sequenceEqual.js","../node_modules/rxjs/dist/cjs/internal/operators/share.js","../node_modules/rxjs/dist/cjs/internal/operators/shareReplay.js","../node_modules/rxjs/dist/cjs/internal/operators/single.js","../node_modules/rxjs/dist/cjs/internal/operators/skip.js","../node_modules/rxjs/dist/cjs/internal/operators/skipLast.js","../node_modules/rxjs/dist/cjs/internal/operators/skipUntil.js","../node_modules/rxjs/dist/cjs/internal/operators/skipWhile.js","../node_modules/rxjs/dist/cjs/internal/operators/startWith.js","../node_modules/rxjs/dist/cjs/internal/operators/switchMap.js","../node_modules/rxjs/dist/cjs/internal/operators/switchAll.js","../node_modules/rxjs/dist/cjs/internal/operators/switchMapTo.js","../node_modules/rxjs/dist/cjs/internal/operators/switchScan.js","../node_modules/rxjs/dist/cjs/internal/operators/takeUntil.js","../node_modules/rxjs/dist/cjs/internal/operators/takeWhile.js","../node_modules/rxjs/dist/cjs/internal/operators/tap.js","../node_modules/rxjs/dist/cjs/internal/operators/throttle.js","../node_modules/rxjs/dist/cjs/internal/operators/throttleTime.js","../node_modules/rxjs/dist/cjs/internal/operators/timeInterval.js","../node_modules/rxjs/dist/cjs/internal/operators/timeoutWith.js","../node_modules/rxjs/dist/cjs/internal/operators/timestamp.js","../node_modules/rxjs/dist/cjs/internal/operators/window.js","../node_modules/rxjs/dist/cjs/internal/operators/windowCount.js","../node_modules/rxjs/dist/cjs/internal/operators/windowTime.js","../node_modules/rxjs/dist/cjs/internal/operators/windowToggle.js","../node_modules/rxjs/dist/cjs/internal/operators/windowWhen.js","../node_modules/rxjs/dist/cjs/internal/operators/withLatestFrom.js","../node_modules/rxjs/dist/cjs/internal/operators/zipAll.js","../node_modules/rxjs/dist/cjs/internal/operators/zip.js","../node_modules/rxjs/dist/cjs/internal/operators/zipWith.js","../node_modules/rxjs/dist/cjs/index.js","../src/utils/group.ts","../src/types/vlei.ts","../src/types/eudi.ts","../src/types/zkp.ts","../src/types/zkm.ts","../src/utils/root-of-trust-verification.ts","../src/services/did-nostr.ts","../src/services/siop.ts","../src/services/nip42.ts","../src/services/oauth.ts","../src/services/auth.service.ts","../src/utils/validation.ts","../src/services/relay.service.ts","../src/services/eudi.service.ts","../src/services/zkp.service.ts","../src/services/individual-trust.service.ts","../src/services/keria.service.ts","../src/services/organization-trust.service.ts","../src/types/trust.ts"],"sourcesContent":["/**\n * @packageDocumentation\n */\n\n/**\n * @param bytes\n * @returns\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n const key = '0123456789abcdef';\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n const firstNibble = bytes[i] >> 4;\n const secondNibble = bytes[i] & 15;\n hex += key[firstNibble] + key[secondNibble];\n }\n return hex;\n}\n\n/**\n * @param hex\n * @returns\n */\nexport function hexToBytes(hex: string): Uint8Array {\n const key = '0123456789abcdef';\n const bytes = [];\n let currentByte = 0;\n let highNibble = true;\n\n for (let i = 0; i < hex.length; i++) {\n const charValue = key.indexOf(hex[i].toLowerCase());\n if (charValue === -1) continue;\n\n if (highNibble) {\n currentByte = charValue << 4;\n highNibble = false;\n } else {\n currentByte += charValue;\n bytes.push(currentByte);\n highNibble = true;\n }\n }\n\n return new Uint8Array(bytes);\n}\n","/**\n * Key cache management for Nosskey\n * @packageDocumentation\n */\n\nimport type { KeyCacheOptions } from './types.js';\nimport { bytesToHex } from './utils.js';\n\n/**\n * Key cache entry with expiration time\n */\ninterface CacheEntry {\n id: string;\n sk: Uint8Array;\n expireAt: number;\n}\n\n/**\n * Key cache manager for managing temporary secret keys\n */\nexport class KeyCache {\n #cachedEntry: CacheEntry | null = null;\n\n #expiryTimer: ReturnType<typeof setTimeout> | null = null;\n\n #cacheOptions: KeyCacheOptions = {\n enabled: false,\n timeoutMs: 5 * 60 * 1000,\n };\n\n /**\n * KeyCache\n * @param options\n */\n constructor(options?: Partial<KeyCacheOptions>) {\n if (options) {\n this.#cacheOptions = { ...this.#cacheOptions, ...options };\n }\n }\n\n /**\n * @param options\n */\n setCacheOptions(options: Partial<KeyCacheOptions>): void {\n if (Object.keys(options).length > 0 && this.#cachedEntry !== null) {\n this.clearAllCachedKeys();\n }\n\n this.#cacheOptions = { ...this.#cacheOptions, ...options };\n }\n\n getCacheOptions(): KeyCacheOptions {\n return { ...this.#cacheOptions };\n }\n\n isEnabled(): boolean {\n return this.#cacheOptions.enabled;\n }\n\n /**\n * @param credentialId\n * @param sk\n */\n setKey(credentialId: Uint8Array | string, sk: Uint8Array): void {\n if (!this.#cacheOptions.enabled) return;\n\n const id = typeof credentialId === 'string' ? credentialId : bytesToHex(credentialId);\n const timeout =\n this.#cacheOptions.timeoutMs !== undefined ? this.#cacheOptions.timeoutMs : 5 * 60 * 1000;\n const expireAt = Date.now() + timeout;\n\n this.#clearCachedEntry();\n\n this.#cachedEntry = {\n id,\n sk: new Uint8Array(sk),\n expireAt,\n };\n\n try {\n this.#scheduleExpiry();\n } catch (error) {\n this.#clearCachedEntry();\n throw error;\n }\n }\n\n /**\n * @param credentialId\n * @returns undefined\n */\n getKey(credentialId: Uint8Array | string): Uint8Array | undefined {\n if (!this.#cacheOptions.enabled) return undefined;\n\n const id = typeof credentialId === 'string' ? credentialId : bytesToHex(credentialId);\n return this.#getCachedKeyIfValid(id);\n }\n\n /**\n * @param credentialId\n */\n clearCachedKey(credentialId: Uint8Array | string): void {\n const id = typeof credentialId === 'string' ? credentialId : bytesToHex(credentialId);\n\n if (this.#cachedEntry && this.#cachedEntry.id === id) {\n this.#clearCachedEntry();\n }\n }\n\n clearAllCachedKeys(): void {\n this.#clearCachedEntry();\n }\n\n /**\n * @param credentialId\n * @returns undefined\n */\n #getCachedKeyIfValid(credentialId: string): Uint8Array | undefined {\n if (!this.#cachedEntry || this.#cachedEntry.id !== credentialId) {\n return undefined;\n }\n\n if (Date.now() < this.#cachedEntry.expireAt) {\n return this.#cachedEntry.sk;\n }\n\n this.#clearCachedEntry();\n return undefined;\n }\n\n #clearCachedEntry(): void {\n if (this.#cachedEntry) {\n this.#clearKey(this.#cachedEntry.sk);\n this.#cachedEntry = null;\n }\n\n if (this.#expiryTimer) {\n clearTimeout(this.#expiryTimer);\n this.#expiryTimer = null;\n }\n }\n\n #scheduleExpiry(): void {\n if (!this.#cachedEntry) return;\n\n const now = Date.now();\n const timeToExpiry = this.#cachedEntry.expireAt - now;\n\n if (timeToExpiry <= 0) {\n this.#clearCachedEntry();\n return;\n }\n\n this.#expiryTimer = setTimeout(() => {\n this.#clearCachedEntry();\n }, timeToExpiry + 1);\n }\n\n /**\n * @param key\n */\n #clearKey(key: Uint8Array): void {\n key?.fill?.(0);\n }\n}\n","/**\n * PRF support check with a password-protected-key fallback.\n * If the PRF WebAuthn extension is unavailable, callers can fall back to a\n * password-protected private key. The private key is wrapped with a password-\n * derived AES-GCM key and stored alongside the public key (SPKI).\n *\n * This implementation uses @noble libraries for cryptographic operations,\n * ensuring functionality even when Web Crypto API is unavailable.\n */\n\nimport { getPublicKey } from 'applesauce-core/helpers';\nimport { secp256k1 } from '@noble/curves/secp256k1.js';\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { pbkdf2 } from '@noble/hashes/pbkdf2.js';\nimport { gcm } from '@noble/ciphers/aes.js';\nimport { randomBytes } from '@noble/hashes/utils.js';\n\nconst aesGcm = gcm;\n\nexport type PasswordProtectedBundle = {\n publicKeySpkiBase64: string;\n wrappedPrivateKeyBase64: string;\n saltBase64: string;\n ivBase64: string;\n};\n\nfunction toBase64(bytes: Uint8Array): string {\n let binary = '';\n for (let i = 0; i < bytes.byteLength; i++) binary += String.fromCharCode(bytes[i]);\n if (typeof window !== 'undefined' && (window as any).btoa) {\n return (window as any).btoa(binary);\n }\n return btoa(binary);\n}\n\nfunction fromBase64(b64: string): Uint8Array {\n if (typeof window !== 'undefined' && (window as any).atob) {\n const bin = (window as any).atob(b64);\n const bytes = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);\n return bytes;\n }\n const bin = atob(b64);\n const bytes = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);\n return bytes;\n}\n\nexport async function checkPRFSupport(): Promise<boolean> {\n try {\n const caps = typeof PublicKeyCredential !== 'undefined' ? await PublicKeyCredential.getClientCapabilities() : null;\n const supported = caps?.['extension:prf'] === true;\n if (supported) {\n console.log('PRF extension is supported.');\n } else {\n console.log('PRF extension is not supported.');\n }\n return !!supported;\n } catch (e) {\n console.log('Could not determine PRF support:', e);\n return false;\n }\n}\n\nexport async function generatePasswordProtectedKey(password: string): Promise<PasswordProtectedBundle> {\n const privateKey = secp256k1.utils.randomPrivateKey();\n const publicKey = secp256k1.getPublicKey(privateKey);\n\n const publicKeySpkiBase64 = toBase64(publicKey);\n\n const salt = randomBytes(16);\n const derivedKey = pbkdf2(sha256, new TextEncoder().encode(password), salt, { c: 100000, dkLen: 32 });\n const iv = randomBytes(12);\n const ct = aesGcm(derivedKey, iv).encrypt(privateKey);\n\n return {\n publicKeySpkiBase64,\n wrappedPrivateKeyBase64: toBase64(ct),\n saltBase64: toBase64(salt),\n ivBase64: toBase64(iv),\n };\n}\n\nexport async function unwrapPasswordProtectedPrivateKey(bundle: PasswordProtectedBundle, password: string): Promise<Uint8Array> {\n const salt = fromBase64(bundle.saltBase64);\n const derivedKey = pbkdf2(sha256, new TextEncoder().encode(password), salt, { c: 100000, dkLen: 32 });\n const iv = fromBase64(bundle.ivBase64);\n const ct = fromBase64(bundle.wrappedPrivateKeyBase64);\n const privateKey = aesGcm(derivedKey, iv).decrypt(ct);\n return privateKey;\n}\n\nexport function importPublicKeyFromBundle(bundle: PasswordProtectedBundle): Uint8Array {\n const spki = fromBase64(bundle.publicKeySpkiBase64);\n return spki;\n}\n\nconst DEFAULT_SALT = 'nostr-key-derivation';\n\nexport function deriveNostrPrivateKey(password: string, salt: string = DEFAULT_SALT): Uint8Array {\n const derivedBits = pbkdf2(sha256, new TextEncoder().encode(password), new TextEncoder().encode(salt), { c: 100000, dkLen: 32 });\n return derivedBits;\n}\n\nexport function getPublicKeyFromPassword(password: string, salt: string = DEFAULT_SALT): string {\n const sk = deriveNostrPrivateKey(password, salt);\n return getPublicKey(sk);\n}\n","import type { MultisigConfig, PeerInfo } from './types.js';\n\nlet IglooCoreClass: any = null;\nlet createAndConnectNodeFn: any = null;\nlet cleanupBifrostNodeFn: any = null;\nlet extractPeersFromCredentialsFn: any = null;\nlet checkPeerStatusFn: any = null;\nlet loadPromise: Promise<void> | null = null;\n\nasync function loadFrostrModules(): Promise<void> {\n if (IglooCoreClass) return;\n if (loadPromise) return loadPromise;\n\n loadPromise = (async () => {\n try {\n const [iglooCore] = await Promise.all([\n import('@frostr/igloo-core'),\n import('@frostr/bifrost'),\n ]);\n\n IglooCoreClass = iglooCore.IglooCore;\n createAndConnectNodeFn = iglooCore.createAndConnectNode;\n cleanupBifrostNodeFn = iglooCore.cleanupBifrostNode;\n extractPeersFromCredentialsFn = iglooCore.extractPeersFromCredentials;\n checkPeerStatusFn = iglooCore.checkPeerStatus;\n } catch {\n throw new Error(\n 'FROSTR multisig requires @frostr/bifrost and @frostr/igloo-core as peer dependencies. ' +\n 'Install them with: npm install @frostr/bifrost @frostr/igloo-core'\n );\n }\n })();\n\n return loadPromise;\n}\n\nexport class MultisigManager {\n #relays: string[];\n #iglooCore: any = null;\n #node: any = null;\n #config: MultisigConfig | null = null;\n\n constructor(relays: string[]) {\n if (!relays || relays.length === 0) {\n throw new Error('At least one relay URL is required for multisig');\n }\n this.#relays = relays;\n }\n\n async generateKeyset(\n threshold: number,\n totalMembers: number,\n secretHex: string\n ): Promise<{ groupCredential: string; shareCredentials: string[] }> {\n await loadFrostrModules();\n\n if (threshold < 1) {\n throw new Error('Threshold must be at least 1');\n }\n if (totalMembers < 1) {\n throw new Error('Total members must be at least 1');\n }\n if (threshold > totalMembers) {\n throw new Error('Threshold cannot exceed total members');\n }\n if (!secretHex || secretHex.length !== 64) {\n throw new Error('Secret key must be a 64-character hex string');\n }\n\n const igloo = this.#getIglooCore();\n const keyset = await igloo.generateKeyset(threshold, totalMembers, secretHex);\n\n return {\n groupCredential: keyset.groupCredential,\n shareCredentials: keyset.shareCredentials,\n };\n }\n\n async connectNode(config: MultisigConfig): Promise<any> {\n await loadFrostrModules();\n\n if (this.#node) {\n this.disconnect();\n }\n\n this.#config = config;\n this.#relays = config.relays;\n\n this.#node = await createAndConnectNodeFn({\n group: config.groupCredential,\n share: config.shareCredential,\n relays: config.relays,\n });\n\n return this.#node;\n }\n\n getNode(): any {\n if (!this.#node) {\n throw new Error('No connected node. Call connectNode() first.');\n }\n return this.#node;\n }\n\n async signMessage(message: string): Promise<string> {\n const node = this.getNode();\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n node.removeAllListeners?.('/sign/sender/sig');\n node.removeAllListeners?.('/sign/sender/rej');\n node.removeAllListeners?.('/sign/sender/err');\n reject(new Error('Multisig signing timed out after 60s'));\n }, 60_000);\n\n node.once('/sign/sender/sig', (_sigs: any, msgs: any) => {\n clearTimeout(timeout);\n if (msgs && msgs.length > 0 && msgs[0].signature) {\n resolve(msgs[0].signature);\n } else {\n reject(new Error('Signing completed but no signature returned'));\n }\n });\n\n node.once('/sign/sender/rej', (reason: any) => {\n clearTimeout(timeout);\n reject(new Error(`Signing rejected: ${reason}`));\n });\n\n node.once('/sign/sender/err', (reason: any) => {\n clearTimeout(timeout);\n reject(new Error(`Signing error: ${reason}`));\n });\n\n node.req?.sign?.(message).catch((err: Error) => {\n clearTimeout(timeout);\n reject(err);\n });\n });\n }\n\n async signBatch(messages: string[]): Promise<string[]> {\n const node = this.getNode();\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n node.removeAllListeners?.('/sign/sender/sig');\n node.removeAllListeners?.('/sign/sender/rej');\n node.removeAllListeners?.('/sign/sender/err');\n reject(new Error('Batch multisig signing timed out after 120s'));\n }, 120_000);\n\n node.once('/sign/sender/sig', (_sigs: any, msgs: any) => {\n clearTimeout(timeout);\n if (msgs && msgs.length > 0) {\n resolve(msgs.map((m: any) => m.signature ?? ''));\n } else {\n reject(new Error('Batch signing completed but no signatures returned'));\n }\n });\n\n node.once('/sign/sender/rej', (reason: any) => {\n clearTimeout(timeout);\n reject(new Error(`Batch signing rejected: ${reason}`));\n });\n\n node.once('/sign/sender/err', (reason: any) => {\n clearTimeout(timeout);\n reject(new Error(`Batch signing error: ${reason}`));\n });\n\n node.req?.sign_batch?.(messages).catch((err: Error) => {\n clearTimeout(timeout);\n reject(err);\n });\n });\n }\n\n async getPeers(): Promise<PeerInfo[]> {\n await loadFrostrModules();\n\n if (!this.#config) {\n throw new Error('No multisig config available. Connect a node first.');\n }\n\n if (!extractPeersFromCredentialsFn || !checkPeerStatusFn) {\n return this.#getPeersFallback();\n }\n\n const node = this.getNode();\n\n const statusResults = await checkPeerStatusFn(\n node,\n this.#config.groupCredential,\n this.#config.shareCredential\n );\n\n return statusResults.map((peer: any) => ({\n pubkey: peer.pubkey,\n status: peer.status as 'online' | 'offline' | 'unknown',\n latency: peer.latency,\n }));\n }\n\n async #getPeersFallback(): Promise<PeerInfo[]> {\n const node = this.getNode();\n const peers = node?.getPeers?.() ?? [];\n\n return peers.map((pubkey: string) => ({\n pubkey,\n status: 'unknown' as const,\n }));\n }\n\n disconnect(): void {\n if (this.#node) {\n if (cleanupBifrostNodeFn) {\n try {\n cleanupBifrostNodeFn(this.#node);\n } catch {\n try {\n this.#node.close?.();\n } catch {\n // best-effort cleanup\n }\n }\n } else {\n try {\n this.#node.close?.();\n } catch {\n // best-effort cleanup\n }\n }\n this.#node = null;\n }\n this.#config = null;\n }\n\n getConfig(): MultisigConfig | null {\n return this.#config;\n }\n\n isConnected(): boolean {\n return this.#node !== null;\n }\n\n #getIglooCore(): any {\n if (!this.#iglooCore) {\n void loadFrostrModules();\n this.#iglooCore = new IglooCoreClass(this.#relays);\n }\n return this.#iglooCore;\n }\n}\n","/**\n * Cryptographic utilities for Nosskey\n * @packageDocumentation\n */\n\nconst INFO_BYTES = new TextEncoder().encode('nostr-pwk');\nconst AES_LENGTH = 256; // bits\n\nfunction getSubtle(): SubtleCrypto {\n const subtle = globalThis.crypto?.subtle;\n if (!subtle) throw new Error('Web Crypto API not available');\n return subtle;\n}\n\n/**\n * PRF AES-GCM\n * @param secret PRF\n * @param salt\n * @returns AES-GCM\n */\nexport async function deriveAesGcmKey(secret: Uint8Array, salt: Uint8Array): Promise<CryptoKey> {\n const subtle = getSubtle();\n const keyMaterial = await subtle.importKey('raw', secret as BufferSource, 'HKDF', false, ['deriveKey']);\n\n return subtle.deriveKey(\n { name: 'HKDF', hash: 'SHA-256', salt: salt as BufferSource, info: INFO_BYTES },\n keyMaterial,\n { name: 'AES-GCM', length: AES_LENGTH },\n false,\n ['encrypt', 'decrypt']\n );\n}\n\n/**\n * AES-GCM\n * @param key\n * @param iv\n * @param plaintext\n * @returns\n */\nexport async function aesGcmEncrypt(key: CryptoKey, iv: Uint8Array, plaintext: Uint8Array) {\n const subtle = getSubtle();\n const buf = await subtle.encrypt({ name: 'AES-GCM', iv: iv as BufferSource }, key, plaintext as BufferSource);\n\n const bytes = new Uint8Array(buf);\n return {\n ciphertext: bytes.slice(0, -16),\n tag: bytes.slice(-16),\n };\n}\n\n/**\n * AES-GCM\n * @param key\n * @param iv\n * @param ct\n * @param tag\n * @returns\n */\nexport async function aesGcmDecrypt(\n key: CryptoKey,\n iv: Uint8Array,\n ct: Uint8Array,\n tag: Uint8Array\n): Promise<Uint8Array> {\n const subtle = getSubtle();\n const buf = await subtle.decrypt(\n { name: 'AES-GCM', iv: iv as BufferSource },\n key,\n new Uint8Array([...ct, ...tag]) as BufferSource\n );\n return new Uint8Array(buf);\n}\n","import { finalizeEvent, getPublicKey } from 'applesauce-core/helpers';\nimport { secp256k1 } from '@noble/curves/secp256k1.js';\nimport { sha256 as nobleSha256 } from '@noble/hashes/sha2.js';\nimport { KeyCache } from './key-cache.js';\nimport { createPasskey, getPrfSecret, isPrfSupported } from './prf-handler.js';\nimport { checkPRFSupport, deriveNostrPrivateKey, getPublicKeyFromPassword, unwrapPasswordProtectedPrivateKey } from './prf-password-fallback.js';\nimport type {\n GetPrfSecretOptions,\n KeyCacheOptions,\n KeyOptions,\n KeyManagerLike,\n KeyManagerOptions,\n Event,\n KeyInfo,\n NostrKeyStorageOptions,\n PasskeyCreationOptions,\n SignOptions,\n} from './types.js';\n/**\n * Nosskey class for Passkey-Derived Nostr Identity\n * @packageDocumentation\n */\nimport { bytesToHex, hexToBytes } from './utils.js';\nimport type { KeyRecovery, MultisigSetupOptions, MultisigSetupResult, PeerInfo, MultisigImportOptions, EncryptedMultisigBundle, MultisigConfig, MultisigMember } from './types.js';\nimport { MultisigManager } from './multisig.js';\nimport { deriveAesGcmKey, aesGcmEncrypt, aesGcmDecrypt } from './crypto-utils.js';\n\nexport function deriveSaltFromUsername(username?: string): string {\n if (!username) {\n return '';\n }\n \n const msgBuffer = new TextEncoder().encode(username.toLowerCase().trim());\n const hashBuffer = nobleSha256(msgBuffer);\n return bytesToHex(new Uint8Array(hashBuffer));\n}\n\nexport function parseRecoveryTag(tags: string[][]): KeyRecovery | null {\n const recoveryTag = tags.find(tag => tag[0] === 'r');\n if (!recoveryTag || recoveryTag.length < 3) return null;\n\n // Format: ['r', recoveryPubkey, recoverySalt, createdAt, signature]\n const createdAt = recoveryTag[3] ? parseInt(recoveryTag[3], 10) : undefined;\n return {\n recoveryPubkey: recoveryTag[1],\n recoverySalt: recoveryTag[2],\n createdAt: createdAt || undefined,\n signature: recoveryTag[4] || undefined,\n };\n}\n\nexport function createRecoveryTag(recovery: KeyRecovery): string[] {\n return [\n 'r',\n recovery.recoveryPubkey,\n recovery.recoverySalt,\n recovery.createdAt?.toString() || '',\n recovery.signature || '',\n ];\n}\n\nexport function getRecoverySignature(kind0: Event): string | null {\n const recovery = parseRecoveryTag(kind0.tags || []);\n if (!recovery) return null;\n \n const tag = kind0.tags?.find(t => t[0] === 'r');\n return tag && tag.length > 4 ? tag[4] || null : null;\n}\n\nexport async function verifyRecoverySignature(kind0: Event): Promise<boolean> {\n try {\n const recovery = parseRecoveryTag(kind0.tags || []);\n if (!recovery) return false;\n \n const signature = getRecoverySignature(kind0);\n if (!signature || !kind0.pubkey) return false;\n \n // Verify Schnorr signature: signature over current pubkey (as message)\n // using the recovery pubkey\n // Note: verify expects the message hash, not the message itself\n const messageHash = nobleSha256(new TextEncoder().encode(kind0.pubkey));\n const signatureBytes = hexToBytes(signature);\n const pubkeyBytes = hexToBytes(kind0.pubkey);\n \n return secp256k1.verify(signatureBytes, messageHash, pubkeyBytes);\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Nosskey - Passkey-Derived Nostr Keys\n */\nexport class KeyManager implements KeyManagerLike {\n #keyCache: KeyCache;\n\n #currentKeyInfo: KeyInfo | null = null;\n\n #storageOptions: NostrKeyStorageOptions = {\n enabled: true,\n storageKey: 'identity',\n };\n\n #prfOptions: GetPrfSecretOptions = {};\n\n constructor(options?: KeyManagerOptions) {\n this.#keyCache = new KeyCache(options?.cacheOptions);\n\n if (options?.storageOptions) {\n this.#storageOptions = { ...this.#storageOptions, ...options.storageOptions };\n }\n\n const userVerification = options?.prfOptions?.userVerification ?? 'required';\n if (options?.prfOptions) {\n this.#prfOptions = { ...options.prfOptions, userVerification };\n } else {\n this.#prfOptions = { userVerification };\n }\n\n if (this.#storageOptions.enabled) {\n const loadedKeyInfo = this.#loadKeyInfoFromStorage();\n if (loadedKeyInfo) {\n this.#currentKeyInfo = loadedKeyInfo;\n }\n }\n }\n\n /**\n * Storage options\n * @param options\n */\n setStorageOptions(options: Partial<NostrKeyStorageOptions>): void {\n this.#storageOptions = { ...this.#storageOptions, ...options };\n\n if (options.enabled === false) {\n this.clearStoredKeyInfo();\n }\n }\n\n /**\n * Storage options\n */\n getStorageOptions(): NostrKeyStorageOptions {\n return { ...this.#storageOptions };\n }\n\n /**\n * Current KeyInfo\n * @param keyInfo KeyInfo\n */\n setCurrentKeyInfo(keyInfo: KeyInfo): void {\n this.#currentKeyInfo = keyInfo;\n\n if (this.#storageOptions.enabled) {\n this.#saveKeyInfoToStorage(keyInfo);\n }\n }\n\n /**\n * Current KeyInfo\n */\n getCurrentKeyInfo(): KeyInfo | null {\n if (!this.#currentKeyInfo && this.#storageOptions.enabled) {\n this.#currentKeyInfo = this.#loadKeyInfoFromStorage();\n }\n return this.#currentKeyInfo;\n }\n\n /**\n * Has KeyInfo\n * @returns true if KeyInfo exists\n */\n hasKeyInfo(): boolean {\n if (this.#currentKeyInfo) {\n return true;\n }\n\n if (this.#storageOptions.enabled) {\n const loadedKeyInfo = this.#loadKeyInfoFromStorage();\n if (loadedKeyInfo) {\n this.#currentKeyInfo = loadedKeyInfo;\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Save KeyInfo to storage\n * @param keyInfo KeyInfo\n */\n #saveKeyInfoToStorage(keyInfo: KeyInfo): void {\n if (!this.#storageOptions.enabled) return;\n\n const storage =\n this.#storageOptions.storage || (typeof localStorage !== 'undefined' ? localStorage : null);\n\n if (!storage) return;\n\n const key = this.#storageOptions.storageKey || 'identity';\n storage.setItem(key, JSON.stringify(keyInfo));\n }\n\n /**\n * Load KeyInfo from storage\n */\n #loadKeyInfoFromStorage(): KeyInfo | null {\n if (!this.#storageOptions.enabled) return null;\n\n const storage =\n this.#storageOptions.storage || (typeof localStorage !== 'undefined' ? localStorage : null);\n\n if (!storage) return null;\n\n const key = this.#storageOptions.storageKey || 'identity';\n const data = storage.getItem(key);\n\n if (!data) return null;\n\n try {\n return JSON.parse(data) as KeyInfo;\n } catch (e) {\n console.error('Failed to parse stored KeyInfo', e);\n return null;\n }\n }\n\n /**\n * Clear stored KeyInfo\n */\n clearStoredKeyInfo(): void {\n const storage =\n this.#storageOptions.storage || (typeof localStorage !== 'undefined' ? localStorage : null);\n\n if (!storage) return;\n\n const key = this.#storageOptions.storageKey || 'identity';\n storage.removeItem(key);\n\n this.#currentKeyInfo = null;\n }\n\n /**\n * NIP-07\n * KeyInfo\n */\n async getPublicKey(): Promise<string> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No current KeyInfo set');\n }\n return keyInfo.pubkey;\n }\n\n /**\n * NIP-07\n * KeyInfo\n * @param event Nostr\n */\n async signEvent(event: Event): Promise<Event> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No current KeyInfo set');\n }\n return this.signEventWithKeyInfo(event, keyInfo);\n }\n\n /**\n * @param options\n */\n setCacheOptions(options: Partial<KeyCacheOptions>): void {\n this.#keyCache.setCacheOptions(options);\n }\n\n getCacheOptions(): KeyCacheOptions {\n return this.#keyCache.getCacheOptions();\n }\n\n getCachedSecretKey(credentialId: Uint8Array | string): Uint8Array | undefined {\n return this.#keyCache.getKey(credentialId);\n }\n\n /**\n * @param credentialId\n */\n clearCachedKey(credentialId: Uint8Array | string): void {\n this.#keyCache.clearCachedKey(credentialId);\n }\n\n clearAllCachedKeys(): void {\n this.#keyCache.clearAllCachedKeys();\n }\n\n /**\n * @param options\n * @returns Credential\n */\n async createPasskey(options: PasskeyCreationOptions = {}): Promise<Uint8Array> {\n return createPasskey({\n rp: {\n id: this.#prfOptions.rpId,\n name: this.#prfOptions.rpId,\n },\n authenticatorSelection: {\n userVerification: this.#prfOptions.userVerification,\n },\n ...options,\n });\n }\n\n/**\n * Check if PRF is supported\n */\n async checkPRFSupport(): Promise<boolean> {\n return checkPRFSupport();\n }\n\n /**\n * Create Nostr key - automatically uses password fallback if PRF unavailable\n * @param credentialId Passkey credential ID\n * @param password Password for encryption (required if PRF not supported)\n * @param options \n */\n async createKey(credentialId?: Uint8Array, password?: string, options: KeyOptions = {}): Promise<KeyInfo> {\n const prfSupported = await this.checkPRFSupport();\n \n let keyInfo: KeyInfo;\n \n if (prfSupported) {\n keyInfo = await this.createPrfNostrKey(credentialId, options);\n \n // Auto-add password recovery if requested and PRF is supported\n if (options.recoveryPassword) {\n keyInfo = await this.addPasswordRecovery(options.recoveryPassword, credentialId);\n }\n } else {\n if (!password) {\n throw new Error('Password is required when PRF is not supported');\n }\n if (!options.username) {\n throw new Error('Username is required when PRF is not supported');\n }\n keyInfo = await this.createPasswordProtectedNostrKey(password, options);\n }\n \n return keyInfo;\n }\n\n /**\n * Create Nostr key using PRF (standard passkey flow)\n */\n async createPrfNostrKey(credentialId?: Uint8Array, options: KeyOptions = {}): Promise<KeyInfo> {\n const { secret: sk, id: responseId } = await getPrfSecret(credentialId, this.#prfOptions);\n\n if (sk.every((byte) => byte === 0)) {\n throw new Error('Invalid PRF output: all zeros');\n }\n\n const publicKey = getPublicKey(sk);\n \n const salt = await deriveSaltFromUsername(options.username);\n\n const keyInfo: KeyInfo = {\n credentialId: bytesToHex(credentialId || responseId),\n pubkey: publicKey,\n salt: salt,\n ...(options.username && { username: options.username }),\n };\n\n if (this.#keyCache.isEnabled() && this.#keyCache.getCacheOptions().cacheOnCreation) {\n this.#keyCache.setKey(keyInfo.credentialId, sk);\n }\n\n return keyInfo;\n }\n\n /**\n * Create Nostr key using password-derived key (fallback when PRF unavailable)\n * @param password Password to derive the private key\n * @param options \n */\n async createPasswordProtectedNostrKey(password: string, options: KeyOptions = {}): Promise<KeyInfo> {\n const salt = await deriveSaltFromUsername(options.username);\n const pubkey = getPublicKeyFromPassword(password, salt);\n\n const credentialId = bytesToHex((typeof window !== 'undefined' ? window.crypto : (globalThis as any).crypto).getRandomValues(new Uint8Array(16)));\n\n const keyInfo: KeyInfo = {\n credentialId,\n pubkey: pubkey,\n salt: salt,\n ...(options.username && { username: options.username }),\n };\n\n return keyInfo;\n }\n\n/**\n * @param event Nostr\n * @param keyInfo KeyInfo\n * @param options\n */\n async signEventWithKeyInfo(\n event: Event,\n keyInfo: KeyInfo,\n options: SignOptions = {}\n ): Promise<Event> {\n const useMultisig = options.mode === 'multisig'\n || (options.mode !== 'individual' && keyInfo.multisig);\n\n if (useMultisig) {\n if (!keyInfo.multisig) {\n throw new Error('Multisig mode requested but not configured on this identity.');\n }\n return this.#signEventMultisig(event, keyInfo, options.password);\n }\n\n const { clearMemory = true, tags, password } = options;\n\n const shouldUseCache = this.#keyCache.isEnabled();\n const isPasswordDerived = !keyInfo.passwordProtectedBundle && keyInfo.salt;\n\n let sk: Uint8Array | undefined;\n\n if (isPasswordDerived) {\n if (shouldUseCache) {\n sk = this.#keyCache.getKey(keyInfo.credentialId);\n }\n if (!sk && password) {\n sk = deriveNostrPrivateKey(password, keyInfo.salt);\n if (shouldUseCache) {\n this.#keyCache.setKey(keyInfo.credentialId, sk);\n }\n }\n if (!sk) {\n throw new Error('Password required - key not in cache. Provide password to sign.');\n }\n } else if (keyInfo.passwordProtectedBundle) {\n if (shouldUseCache) {\n sk = this.#keyCache.getKey(keyInfo.credentialId);\n }\n if (!sk && password) {\n sk = await unwrapPasswordProtectedPrivateKey(keyInfo.passwordProtectedBundle!, password);\n if (shouldUseCache) {\n this.#keyCache.setKey(keyInfo.credentialId, sk);\n }\n }\n if (!sk) {\n throw new Error('Password required - key not in cache. Provide password or use createNostrKey to initialize.');\n }\n } else {\n if (shouldUseCache) {\n sk = this.#keyCache.getKey(keyInfo.credentialId);\n }\n\n if (!sk) {\n const { secret: prfSecret } = await getPrfSecret(\n hexToBytes(keyInfo.credentialId),\n this.#prfOptions\n );\n sk = prfSecret;\n\n if (shouldUseCache) {\n this.#keyCache.setKey(keyInfo.credentialId, sk);\n }\n }\n }\n\n const eventToSign = {\n kind: event.kind,\n content: event.content,\n created_at: event.created_at || Math.floor(Date.now() / 1000),\n tags: tags ? [...(event.tags || []), ...tags] : event.tags || [],\n };\n\n const signedEvent = finalizeEvent(eventToSign, sk);\n\n if (!shouldUseCache && clearMemory) {\n this.#clearKey(sk);\n }\n\n return signedEvent;\n }\n\n/**\n * @param keyInfo KeyInfo\n * @param credentialId KeyInfoのcredentialId\n * @param options\n * @returns \n */\n async exportNostrKey(keyInfo: KeyInfo, credentialId?: Uint8Array, options: KeyOptions = {}): Promise<string> {\n if (keyInfo.passwordProtectedBundle) {\n if (!options.password) {\n throw new Error('Password is required for password-protected keys');\n }\n const sk = await unwrapPasswordProtectedPrivateKey(keyInfo.passwordProtectedBundle, options.password);\n return bytesToHex(sk);\n }\n\n const isPasswordDerived = !keyInfo.passwordProtectedBundle && keyInfo.salt;\n if (isPasswordDerived) {\n if (!options.password) {\n throw new Error('Password is required for password-derived keys');\n }\n const sk = deriveNostrPrivateKey(options.password, keyInfo.salt);\n return bytesToHex(sk);\n }\n\n let usedCredentialId = credentialId;\n\n if (!usedCredentialId && keyInfo.credentialId) {\n usedCredentialId = hexToBytes(keyInfo.credentialId);\n }\n\n const { secret: sk } = await getPrfSecret(usedCredentialId, this.#prfOptions);\n const skHex = bytesToHex(sk);\n\n return skHex;\n }\n\n /**\n * PRF\n */\n async isPrfSupported(): Promise<boolean> {\n return isPrfSupported();\n }\n\n /**\n * Add password recovery to an existing PRF key\n * @param password Password for recovery key\n * @param currentCredentialId Current passkey credential ID\n */\n async addPasswordRecovery(password: string, currentCredentialId?: Uint8Array): Promise<KeyInfo> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No current KeyInfo set');\n }\n\n if (keyInfo.passwordProtectedBundle) {\n throw new Error('Password recovery already exists for password-derived key');\n }\n\n if (keyInfo.recovery) {\n throw new Error('Recovery already configured');\n }\n\n const usedCredentialId = currentCredentialId || (keyInfo.credentialId ? hexToBytes(keyInfo.credentialId) : undefined);\n if (!usedCredentialId) {\n throw new Error('Credential ID required');\n }\n\n const cryptoObj = typeof window !== 'undefined' ? window.crypto : (globalThis as any).crypto;\n\n // Generate recovery salt\n const recoverySalt = bytesToHex(cryptoObj.getRandomValues(new Uint8Array(16)));\n\n // Derive recovery pubkey from password\n const recoveryPubkey = getPublicKeyFromPassword(password, recoverySalt);\n\n // Sign current pubkey with recovery key\n const recoverySk = deriveNostrPrivateKey(password, recoverySalt);\n const signature = this.#signWithKey(recoverySk, keyInfo.pubkey);\n this.#clearKey(recoverySk);\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n recovery: {\n recoveryPubkey,\n recoverySalt,\n createdAt: Date.now(),\n signature,\n },\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n return updatedKeyInfo;\n }\n\n #signWithKey(sk: Uint8Array, _message: string): string {\n const event = finalizeEvent({\n kind: 0,\n content: '',\n tags: [],\n created_at: Math.floor(Date.now() / 1000),\n }, sk);\n return event.sig;\n }\n\n /**\n * Activate recovery using password\n * Requires new credential ID from new device\n * @param password Password for recovery key\n * @param newCredentialId New passkey credential ID (required)\n */\n async activateWithPassword(password: string, newCredentialId: Uint8Array): Promise<KeyInfo> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No current KeyInfo set');\n }\n\n if (!keyInfo.recovery) {\n throw new Error('No recovery key configured');\n }\n\n if (!newCredentialId) {\n throw new Error('New credential ID is required for recovery');\n }\n\n const { recoveryPubkey, recoverySalt } = keyInfo.recovery;\n\n // Verify password\n const derivedRecoveryPubkey = getPublicKeyFromPassword(password, recoverySalt);\n if (derivedRecoveryPubkey !== recoveryPubkey) {\n throw new Error('Invalid recovery password');\n }\n\n // Derive new key from new credential\n const { secret: newSk } = await getPrfSecret(newCredentialId, this.#prfOptions);\n const newPubkey = getPublicKey(newSk);\n this.#clearKey(newSk);\n\n // Generate new recovery for the new key\n const cryptoObj = typeof window !== 'undefined' ? window.crypto : (globalThis as any).crypto;\n const newRecoverySalt = bytesToHex(cryptoObj.getRandomValues(new Uint8Array(16)));\n const newRecoveryPubkey = getPublicKeyFromPassword(password, newRecoverySalt);\n\n // Sign new pubkey with recovery key\n const recoverySk = deriveNostrPrivateKey(password, recoverySalt);\n const signature = this.#signWithKey(recoverySk, newPubkey);\n this.#clearKey(recoverySk);\n\n const updatedKeyInfo: KeyInfo = {\n credentialId: bytesToHex(newCredentialId),\n pubkey: newPubkey,\n salt: keyInfo.salt,\n recovery: {\n recoveryPubkey: newRecoveryPubkey,\n recoverySalt: newRecoverySalt,\n createdAt: Date.now(),\n signature,\n },\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n return updatedKeyInfo;\n }\n\n /**\n * Get the recovery data for publishing to kind-0\n */\n getRecoveryForKind0(): { recoveryPubkey: string; recoverySalt: string; createdAt?: number; signature?: string } | null {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo || !keyInfo.recovery) return null;\n\n return {\n recoveryPubkey: keyInfo.recovery.recoveryPubkey,\n recoverySalt: keyInfo.recovery.recoverySalt,\n createdAt: keyInfo.recovery.createdAt,\n signature: keyInfo.recovery.signature,\n };\n }\n\n /**\n * Enable FROSTR multisig on the current identity\n * Derives the secret key from the passkey, splits it into shares, encrypts the local share, and stores the config\n * If members are provided with a GroupManager, shares are distributed via Marmot Welcome messages.\n * @param options Threshold, total members, relay configuration, and optional members for Welcome-based distribution\n */\n async enableMultisig(options: MultisigSetupOptions): Promise<MultisigSetupResult> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No current KeyInfo set. Create a key first.');\n }\n\n if (keyInfo.multisig) {\n throw new Error('Multisig is already enabled on this identity.');\n }\n\n const secretHex = await this.exportNostrKey(keyInfo);\n\n const multisig = new MultisigManager(options.relays);\n const keyset = await multisig.generateKeyset(\n options.threshold,\n options.totalMembers,\n secretHex\n );\n\n const shareIndex = 0;\n const shareCredential = keyset.shareCredentials[shareIndex];\n\n const encryptedBundle = await this.#encryptShareCredential(keyInfo, shareCredential);\n\n const multisigBundle: EncryptedMultisigBundle = {\n ...encryptedBundle,\n groupCredential: keyset.groupCredential,\n threshold: options.threshold,\n totalMembers: options.totalMembers,\n relays: options.relays,\n shareIndex,\n };\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n multisig: multisigBundle,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n\n // Distribute shares via Welcome messages if members and groupManager provided\n let membersInvited = 0;\n if (options.members && options.members.length > 0 && options.groupManager) {\n const gm = options.groupManager;\n const groupCredential = keyset.groupCredential;\n const relays = options.relays;\n\n for (let i = 1; i < keyset.shareCredentials.length && i <= options.members.length; i++) {\n const member = options.members[i - 1];\n const shareCred = keyset.shareCredentials[i];\n\n if (member.keyPackageEvent) {\n await gm.inviteMember(member.keyPackageEvent.group, member.pubkey);\n }\n\n await gm.sendShareToMember(\n member.keyPackageEvent?.group,\n member.pubkey,\n shareCred,\n groupCredential,\n relays\n );\n membersInvited++;\n }\n }\n\n return {\n keyInfo: updatedKeyInfo,\n groupCredential: keyset.groupCredential,\n shareCredential,\n membersInvited,\n };\n }\n\n /**\n * Check if multisig is enabled on the current key\n */\n isMultisigEnabled(): boolean {\n const keyInfo = this.getCurrentKeyInfo();\n return keyInfo?.multisig !== undefined && keyInfo?.multisig !== null;\n }\n\n /**\n * Get peer status for the current multisig group\n */\n async getPeerStatus(): Promise<PeerInfo[]> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.multisig) {\n throw new Error('Multisig is not enabled on this identity.');\n }\n\n const decryptedConfig = await this.#decryptShareConfig(keyInfo);\n\n const multisig = new MultisigManager(decryptedConfig.relays);\n await multisig.connectNode(decryptedConfig);\n\n try {\n return await multisig.getPeers();\n } finally {\n multisig.disconnect();\n }\n }\n\n /**\n * Rotate shares — generate a new keyset, invalidating old shares\n * If members are provided with a GroupManager, new shares are distributed via Welcome messages.\n * Otherwise, new share credentials are returned for manual distribution.\n * @param newThreshold New threshold (defaults to current)\n * @param newTotal New total members (defaults to current)\n * @param members Members to redistribute shares to via Welcome messages\n * @param groupManager GroupManager for sending Welcome messages\n * @returns Array of new share credentials (only if no members provided for Welcome distribution)\n */\n async rotateShares(newThreshold?: number, newTotal?: number, members?: MultisigMember[], groupManager?: any): Promise<string[]> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.multisig) {\n throw new Error('Multisig is not enabled on this identity.');\n }\n\n const current = keyInfo.multisig;\n const threshold = newThreshold ?? current.threshold;\n const total = newTotal ?? current.totalMembers;\n\n const secretHex = await this.exportNostrKey(keyInfo);\n\n const multisig = new MultisigManager(current.relays);\n const keyset = await multisig.generateKeyset(threshold, total, secretHex);\n\n const shareIndex = 0;\n const shareCredential = keyset.shareCredentials[shareIndex];\n\n const encryptedBundle = await this.#encryptShareCredential(keyInfo, shareCredential);\n\n const multisigBundle: EncryptedMultisigBundle = {\n ...encryptedBundle,\n groupCredential: keyset.groupCredential,\n threshold,\n totalMembers: total,\n relays: current.relays,\n shareIndex,\n };\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n multisig: multisigBundle,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n\n // Distribute new shares via Welcome messages if members and groupManager provided\n if (members && members.length > 0 && groupManager) {\n const gm = groupManager;\n const groupCredential = keyset.groupCredential;\n const relays = current.relays;\n\n for (let i = 1; i < keyset.shareCredentials.length && i <= members.length; i++) {\n const member = members[i - 1];\n const shareCred = keyset.shareCredentials[i];\n\n if (member.keyPackageEvent) {\n await gm.inviteMember(member.keyPackageEvent.group, member.pubkey);\n }\n\n await gm.sendShareToMember(\n member.keyPackageEvent?.group,\n member.pubkey,\n shareCred,\n groupCredential,\n relays\n );\n }\n return [];\n }\n\n return keyset.shareCredentials;\n }\n\n /**\n * Sign an event using FROSTR multisig\n * Routes the signing request through the threshold protocol\n */\n async #signEventMultisig(event: Event, keyInfo: KeyInfo, password?: string): Promise<Event> {\n if (!keyInfo.multisig) {\n throw new Error('Multisig config not found on this key.');\n }\n\n const decryptedConfig = await this.#decryptShareConfig(keyInfo, password);\n\n const eventToSign = {\n kind: event.kind,\n content: event.content,\n created_at: event.created_at || Math.floor(Date.now() / 1000),\n tags: event.tags || [],\n };\n\n const serializedEvent = JSON.stringify(eventToSign);\n\n const multisig = new MultisigManager(decryptedConfig.relays);\n await multisig.connectNode(decryptedConfig);\n\n try {\n const signature = await multisig.signMessage(serializedEvent);\n\n const signedEvent: Event = {\n ...eventToSign,\n pubkey: keyInfo.pubkey,\n sig: signature,\n id: event.id,\n };\n\n return signedEvent;\n } finally {\n multisig.disconnect();\n }\n }\n\n /**\n * Import a FROST share credential into the current identity\n * The identity must already exist (created via createKey)\n * @param options Group credential, share credential, and relay URLs\n */\n async importMultisigShare(options: MultisigImportOptions): Promise<KeyInfo> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No current KeyInfo set. Create a key first.');\n }\n\n if (keyInfo.multisig) {\n throw new Error('Multisig is already configured on this identity. Use rotateShares to change shares.');\n }\n\n const { groupCredential, shareCredential, relays } = options;\n\n const { idx: shareIndex, threshold, totalMembers } = await this.#getShareDetails(groupCredential, shareCredential);\n\n const encryptedBundle = await this.#encryptShareCredential(keyInfo, shareCredential);\n\n const multisigBundle: EncryptedMultisigBundle = {\n ...encryptedBundle,\n groupCredential,\n threshold,\n totalMembers,\n relays,\n shareIndex,\n };\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n multisig: multisigBundle,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n\n return updatedKeyInfo;\n }\n\n /**\n * Encrypt a share credential using the identity's secret (PRF or password-derived)\n */\n async #encryptShareCredential(keyInfo: KeyInfo, shareCredential: string): Promise<{ ciphertext: string; iv: string; tag: string }> {\n const sk = await this.#resolveSecretKey(keyInfo);\n const cryptoObj = typeof window !== 'undefined' ? window.crypto : (globalThis as any).crypto;\n const iv = cryptoObj.getRandomValues(new Uint8Array(12));\n\n const aesKey = await deriveAesGcmKey(sk, new Uint8Array(16));\n const plaintext = new TextEncoder().encode(shareCredential);\n const { ciphertext, tag } = await aesGcmEncrypt(aesKey, iv, plaintext);\n\n this.#clearKey(sk);\n\n return {\n ciphertext: btoa(String.fromCharCode(...ciphertext)),\n iv: btoa(String.fromCharCode(...iv)),\n tag: btoa(String.fromCharCode(...tag)),\n };\n }\n\n /**\n * Decrypt the share credential and return a full MultisigConfig\n */\n async #decryptShareConfig(keyInfo: KeyInfo, password?: string): Promise<MultisigConfig> {\n const bundle = keyInfo.multisig;\n if (!bundle) {\n throw new Error('No multisig config found.');\n }\n\n const sk = await this.#resolveSecretKey(keyInfo, password);\n\n const aesKey = await deriveAesGcmKey(sk, new Uint8Array(16));\n const ciphertext = Uint8Array.from(atob(bundle.ciphertext), c => c.charCodeAt(0));\n const iv = Uint8Array.from(atob(bundle.iv), c => c.charCodeAt(0));\n const tag = Uint8Array.from(atob(bundle.tag), c => c.charCodeAt(0));\n\n const plaintext = await aesGcmDecrypt(aesKey, iv, ciphertext, tag);\n const shareCredential = new TextDecoder().decode(plaintext);\n\n this.#clearKey(sk);\n\n return {\n threshold: bundle.threshold,\n totalMembers: bundle.totalMembers,\n relays: bundle.relays,\n groupCredential: bundle.groupCredential,\n shareCredential,\n shareIndex: bundle.shareIndex,\n };\n }\n\n /**\n * Resolve the secret key for encryption/decryption\n * Uses PRF secret or password-derived key depending on key type\n */\n async #resolveSecretKey(keyInfo: KeyInfo, password?: string): Promise<Uint8Array> {\n const shouldUseCache = this.#keyCache.isEnabled();\n\n if (shouldUseCache) {\n const cached = this.#keyCache.getKey(keyInfo.credentialId);\n if (cached) return cached;\n }\n\n if (keyInfo.passwordProtectedBundle) {\n if (!password) {\n throw new Error('Password is required for encryption/decryption of multisig shares on password-protected keys.');\n }\n const sk = await unwrapPasswordProtectedPrivateKey(keyInfo.passwordProtectedBundle, password);\n if (shouldUseCache) {\n this.#keyCache.setKey(keyInfo.credentialId, sk);\n }\n return sk;\n }\n\n const { secret: prfSecret } = await getPrfSecret(\n hexToBytes(keyInfo.credentialId),\n this.#prfOptions\n );\n\n if (shouldUseCache) {\n this.#keyCache.setKey(keyInfo.credentialId, prfSecret);\n }\n\n return prfSecret;\n }\n\n async #getShareDetails(groupCredential: string, shareCredential: string): Promise<{ idx: number; threshold: number; totalMembers: number }> {\n try {\n const { getShareDetailsWithGroup } = await import('@frostr/igloo-core');\n return getShareDetailsWithGroup(shareCredential, groupCredential);\n } catch {\n throw new Error(\n 'Failed to decode share credential. Ensure @frostr/igloo-core is installed and the credential strings are valid.'\n );\n }\n }\n\n /**\n * @param key\n */\n #clearKey(key: Uint8Array): void {\n key?.fill?.(0);\n }\n}\n","/**\n * Test utilities for sdk\n * @packageDocumentation\n */\n\n/**\n * Helper for testing/debugging\n * @param userId - User identifier\n * @returns Promise resolving to the dummy credential\n */\nexport async function registerDummyPasskey(userId: string): Promise<PublicKeyCredential> {\n // Create a dummy credential for testing\n const dummySignature = new Uint8Array(64);\n // Fill with some non-zero values for testing\n for (let i = 0; i < dummySignature.length; i++) {\n dummySignature[i] = (i + 1) % 256;\n }\n\n const dummyId = new Uint8Array(32);\n for (let i = 0; i < dummyId.length; i++) {\n dummyId[i] = (i + 1) % 256;\n }\n\n const credential = {\n id: 'dummy-credential-id',\n rawId: dummyId,\n type: 'public-key',\n response: {\n clientDataJSON: new Uint8Array(0),\n attestationObject: new Uint8Array(0),\n signature: dummySignature,\n authenticatorData: new Uint8Array(0),\n getAuthenticatorData: () => new Uint8Array(0),\n getPublicKey: () => new Uint8Array(0),\n getPublicKeyAlgorithm: () => -7,\n getTransports: () => ['internal'],\n },\n } as unknown as PublicKeyCredential;\n\n return credential;\n}\n","const DEFAULT_DB_NAME = 'group';\nconst DATA_STORE = 'data';\n\nclass IndexedDBBackendBase {\n #db: IDBDatabase | null = null;\n #dbName: string;\n\n constructor(dbName: string) {\n this.#dbName = dbName;\n }\n\n async open(): Promise<IDBDatabase> {\n if (this.#db) return this.#db;\n\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.#dbName, 1);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n this.#db = request.result;\n resolve(request.result);\n };\n\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(DATA_STORE)) {\n db.createObjectStore(DATA_STORE);\n }\n };\n });\n }\n\n async getBytes(key: Uint8Array | string): Promise<Uint8Array | null> {\n const db = await this.open();\n const storeKey = typeof key === 'string' ? key : bytesToHex(key);\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readonly');\n const store = tx.objectStore(DATA_STORE);\n const request = store.get(storeKey);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const result = request.result;\n resolve(result ? new Uint8Array(result) : null);\n };\n });\n }\n\n async setBytes(key: Uint8Array | string, value: Uint8Array): Promise<void> {\n const db = await this.open();\n const storeKey = typeof key === 'string' ? key : bytesToHex(key);\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readwrite');\n const store = tx.objectStore(DATA_STORE);\n const request = store.put(Array.from(value), storeKey);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n }\n\n async removeByKey(key: Uint8Array | string): Promise<void> {\n const db = await this.open();\n const storeKey = typeof key === 'string' ? key : bytesToHex(key);\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readwrite');\n const store = tx.objectStore(DATA_STORE);\n const request = store.delete(storeKey);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n }\n\n async listBytesKeys(): Promise<Uint8Array[]> {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readonly');\n const store = tx.objectStore(DATA_STORE);\n const request = store.getAllKeys();\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const keys = request.result as string[];\n resolve(keys.map(k => hexToBytes(k)));\n };\n });\n }\n\n async getItem<T>(key: string): Promise<T | null> {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readonly');\n const store = tx.objectStore(DATA_STORE);\n const request = store.get(key);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve(request.result ?? null);\n });\n }\n\n async setItem<T>(key: string, value: T): Promise<T> {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readwrite');\n const store = tx.objectStore(DATA_STORE);\n const request = store.put(value, key);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve(value);\n });\n }\n\n async removeItem(key: string): Promise<void> {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readwrite');\n const store = tx.objectStore(DATA_STORE);\n const request = store.delete(key);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n }\n\n async clearAll(): Promise<void> {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readwrite');\n const store = tx.objectStore(DATA_STORE);\n const request = store.clear();\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n }\n\n async listKeys(): Promise<string[]> {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readonly');\n const store = tx.objectStore(DATA_STORE);\n const request = store.getAllKeys();\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve(request.result as string[]);\n });\n }\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = parseInt(hex.slice(i, i + 2), 16);\n }\n return bytes;\n}\n\nexport class IndexedDBGroupStateBackend {\n #backend: IndexedDBBackendBase;\n\n constructor(dbName: string = DEFAULT_DB_NAME) {\n this.#backend = new IndexedDBBackendBase(dbName);\n }\n\n async getItem(key: string): Promise<Uint8Array | null> {\n return this.#backend.getBytes(key);\n }\n\n async setItem(key: string, value: Uint8Array): Promise<Uint8Array> {\n await this.#backend.setBytes(key, value);\n return value;\n }\n\n async removeItem(key: string): Promise<void> {\n return this.#backend.removeByKey(key);\n }\n\n async clear(): Promise<void> {\n return this.#backend.clearAll();\n }\n\n async keys(): Promise<string[]> {\n const bytesKeys = await this.#backend.listBytesKeys();\n return bytesKeys.map(k => bytesToHex(k));\n }\n}\n\nexport class IndexedDBKeyPackageStore {\n #backend: IndexedDBBackendBase;\n\n constructor(dbName: string = DEFAULT_DB_NAME) {\n this.#backend = new IndexedDBBackendBase(dbName);\n }\n\n async getItem<T>(key: string): Promise<T | null> {\n return this.#backend.getItem<T>(`kps:${key}`);\n }\n\n async setItem<T>(key: string, value: T): Promise<T> {\n return this.#backend.setItem(`kps:${key}`, value);\n }\n\n async removeItem(key: string): Promise<void> {\n return this.#backend.removeItem(`kps:${key}`);\n }\n\n async clear(): Promise<void> {\n const db = await this.#backend.open();\n const allKeys = await new Promise<string[]>((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readonly');\n const store = tx.objectStore(DATA_STORE);\n const request = store.getAllKeys();\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve(request.result as string[]);\n });\n\n for (const key of allKeys) {\n if (key.startsWith('kps:')) {\n await this.#backend.removeItem(key);\n }\n }\n }\n\n async keys(): Promise<string[]> {\n const allKeys = await this.#backend.listKeys();\n return allKeys\n .filter(k => k.startsWith('kps:'))\n .map(k => k.slice(4));\n }\n}\n\n/**\n * Generic IndexedDB key-value store backend.\n * Implements the KeyValueStoreBackend<T> interface expected by Marmot.\n */\nexport class IndexedDBKeyValueBackend {\n #backend: IndexedDBBackendBase;\n #storeName: string;\n\n constructor(dbName: string, storeName: string) {\n this.#backend = new IndexedDBBackendBase(dbName);\n this.#storeName = storeName;\n }\n\n async getItem<T>(key: string): Promise<T | null> {\n return this.#backend.getItem<T>(`${this.#storeName}:${key}`);\n }\n\n async setItem<T>(key: string, value: T): Promise<T> {\n return this.#backend.setItem(`${this.#storeName}:${key}`, value);\n }\n\n async removeItem(key: string): Promise<void> {\n return this.#backend.removeItem(`${this.#storeName}:${key}`);\n }\n\n async clear(): Promise<void> {\n return this.#backend.clearAll();\n }\n\n async keys(): Promise<string[]> {\n const allKeys = await this.#backend.listKeys();\n const prefix = `${this.#storeName}:`;\n return allKeys\n .filter(k => k.startsWith(prefix))\n .map(k => k.slice(prefix.length));\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isFunction = void 0;\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createErrorClass = void 0;\nfunction createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\nexports.createErrorClass = createErrorClass;\n//# sourceMappingURL=createErrorClass.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnsubscriptionError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.UnsubscriptionError = createErrorClass_1.createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.arrRemove = void 0;\nfunction arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\nexports.arrRemove = arrRemove;\n//# sourceMappingURL=arrRemove.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSubscription = exports.EMPTY_SUBSCRIPTION = exports.Subscription = void 0;\nvar isFunction_1 = require(\"./util/isFunction\");\nvar UnsubscriptionError_1 = require(\"./util/UnsubscriptionError\");\nvar arrRemove_1 = require(\"./util/arrRemove\");\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction_1.isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError_1.UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError_1.UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError_1.UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove_1.arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove_1.arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexports.Subscription = Subscription;\nexports.EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nfunction isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction_1.isFunction(value.remove) && isFunction_1.isFunction(value.add) && isFunction_1.isFunction(value.unsubscribe)));\n}\nexports.isSubscription = isSubscription;\nfunction execFinalizer(finalizer) {\n if (isFunction_1.isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.config = void 0;\nexports.config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timeoutProvider = void 0;\nexports.timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = exports.timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = exports.timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reportUnhandledError = void 0;\nvar config_1 = require(\"../config\");\nvar timeoutProvider_1 = require(\"../scheduler/timeoutProvider\");\nfunction reportUnhandledError(err) {\n timeoutProvider_1.timeoutProvider.setTimeout(function () {\n var onUnhandledError = config_1.config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\nexports.reportUnhandledError = reportUnhandledError;\n//# sourceMappingURL=reportUnhandledError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.noop = void 0;\nfunction noop() { }\nexports.noop = noop;\n//# sourceMappingURL=noop.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNotification = exports.nextNotification = exports.errorNotification = exports.COMPLETE_NOTIFICATION = void 0;\nexports.COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();\nfunction errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexports.errorNotification = errorNotification;\nfunction nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexports.nextNotification = nextNotification;\nfunction createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error,\n };\n}\nexports.createNotification = createNotification;\n//# sourceMappingURL=NotificationFactories.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.captureError = exports.errorContext = void 0;\nvar config_1 = require(\"../config\");\nvar context = null;\nfunction errorContext(cb) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexports.errorContext = errorContext;\nfunction captureError(err) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\nexports.captureError = captureError;\n//# sourceMappingURL=errorContext.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EMPTY_OBSERVER = exports.SafeSubscriber = exports.Subscriber = void 0;\nvar isFunction_1 = require(\"./util/isFunction\");\nvar Subscription_1 = require(\"./Subscription\");\nvar config_1 = require(\"./config\");\nvar reportUnhandledError_1 = require(\"./util/reportUnhandledError\");\nvar noop_1 = require(\"./util/noop\");\nvar NotificationFactories_1 = require(\"./NotificationFactories\");\nvar timeoutProvider_1 = require(\"./scheduler/timeoutProvider\");\nvar errorContext_1 = require(\"./util/errorContext\");\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (Subscription_1.isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = exports.EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(NotificationFactories_1.nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(NotificationFactories_1.errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(NotificationFactories_1.COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction_1.isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config_1.config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexports.SafeSubscriber = SafeSubscriber;\nfunction handleUnhandledError(error) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n errorContext_1.captureError(error);\n }\n else {\n reportUnhandledError_1.reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config_1.config.onStoppedNotification;\n onStoppedNotification && timeoutProvider_1.timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexports.EMPTY_OBSERVER = {\n closed: true,\n next: noop_1.noop,\n error: defaultErrorHandler,\n complete: noop_1.noop,\n};\n//# sourceMappingURL=Subscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observable = void 0;\nexports.observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.identity = void 0;\nfunction identity(x) {\n return x;\n}\nexports.identity = identity;\n//# sourceMappingURL=identity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pipeFromArray = exports.pipe = void 0;\nvar identity_1 = require(\"./identity\");\nfunction pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexports.pipe = pipe;\nfunction pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity_1.identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\nexports.pipeFromArray = pipeFromArray;\n//# sourceMappingURL=pipe.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Observable = void 0;\nvar Subscriber_1 = require(\"./Subscriber\");\nvar Subscription_1 = require(\"./Subscription\");\nvar observable_1 = require(\"./symbol/observable\");\nvar pipe_1 = require(\"./util/pipe\");\nvar config_1 = require(\"./config\");\nvar isFunction_1 = require(\"./util/isFunction\");\nvar errorContext_1 = require(\"./util/errorContext\");\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new Subscriber_1.SafeSubscriber(observerOrNext, error, complete);\n errorContext_1.errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new Subscriber_1.SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[observable_1.observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipe_1.pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexports.Observable = Observable;\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config_1.config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction_1.isFunction(value.next) && isFunction_1.isFunction(value.error) && isFunction_1.isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber_1.Subscriber) || (isObserver(value) && Subscription_1.isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.operate = exports.hasLift = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction hasLift(source) {\n return isFunction_1.isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexports.hasLift = hasLift;\nfunction operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\nexports.operate = operate;\n//# sourceMappingURL=lift.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OperatorSubscriber = exports.createOperatorSubscriber = void 0;\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nexports.createOperatorSubscriber = createOperatorSubscriber;\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber_1.Subscriber));\nexports.OperatorSubscriber = OperatorSubscriber;\n//# sourceMappingURL=OperatorSubscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.refCount = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction refCount() {\n return lift_1.operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, undefined, undefined, function () {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n var sharedConnection = source._connection;\n var conn = connection;\n connection = null;\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\nexports.refCount = refCount;\n//# sourceMappingURL=refCount.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectableObservable = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar Subscription_1 = require(\"../Subscription\");\nvar refCount_1 = require(\"../operators/refCount\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar lift_1 = require(\"../util/lift\");\nvar ConnectableObservable = (function (_super) {\n __extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._subject = null;\n _this._refCount = 0;\n _this._connection = null;\n if (lift_1.hasLift(source)) {\n _this.lift = source.lift;\n }\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype._teardown = function () {\n this._refCount = 0;\n var _connection = this._connection;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n };\n ConnectableObservable.prototype.connect = function () {\n var _this = this;\n var connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription_1.Subscription();\n var subject_1 = this.getSubject();\n connection.add(this.source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subject_1, undefined, function () {\n _this._teardown();\n subject_1.complete();\n }, function (err) {\n _this._teardown();\n subject_1.error(err);\n }, function () { return _this._teardown(); })));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription_1.Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return refCount_1.refCount()(this);\n };\n return ConnectableObservable;\n}(Observable_1.Observable));\nexports.ConnectableObservable = ConnectableObservable;\n//# sourceMappingURL=ConnectableObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.performanceTimestampProvider = void 0;\nexports.performanceTimestampProvider = {\n now: function () {\n return (exports.performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=performanceTimestampProvider.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.animationFrameProvider = void 0;\nvar Subscription_1 = require(\"../Subscription\");\nexports.animationFrameProvider = {\n schedule: function (callback) {\n var request = requestAnimationFrame;\n var cancel = cancelAnimationFrame;\n var delegate = exports.animationFrameProvider.delegate;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n var handle = request(function (timestamp) {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription_1.Subscription(function () { return cancel === null || cancel === void 0 ? void 0 : cancel(handle); });\n },\n requestAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = exports.animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n cancelAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = exports.animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n delegate: undefined,\n};\n//# sourceMappingURL=animationFrameProvider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.animationFrames = void 0;\nvar Observable_1 = require(\"../../Observable\");\nvar performanceTimestampProvider_1 = require(\"../../scheduler/performanceTimestampProvider\");\nvar animationFrameProvider_1 = require(\"../../scheduler/animationFrameProvider\");\nfunction animationFrames(timestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\nexports.animationFrames = animationFrames;\nfunction animationFramesFactory(timestampProvider) {\n return new Observable_1.Observable(function (subscriber) {\n var provider = timestampProvider || performanceTimestampProvider_1.performanceTimestampProvider;\n var start = provider.now();\n var id = 0;\n var run = function () {\n if (!subscriber.closed) {\n id = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function (timestamp) {\n id = 0;\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start,\n });\n run();\n });\n }\n };\n run();\n return function () {\n if (id) {\n animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id);\n }\n };\n });\n}\nvar DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\n//# sourceMappingURL=animationFrames.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectUnsubscribedError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.ObjectUnsubscribedError = createErrorClass_1.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","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnonymousSubject = exports.Subject = void 0;\nvar Observable_1 = require(\"./Observable\");\nvar Subscription_1 = require(\"./Subscription\");\nvar ObjectUnsubscribedError_1 = require(\"./util/ObjectUnsubscribedError\");\nvar arrRemove_1 = require(\"./util/arrRemove\");\nvar errorContext_1 = require(\"./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_1.ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext_1.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_1.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_1.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 Subscription_1.EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription_1.Subscription(function () {\n _this.currentObservers = null;\n arrRemove_1.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_1.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_1.Observable));\nexports.Subject = 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 : Subscription_1.EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexports.AnonymousSubject = AnonymousSubject;\n//# sourceMappingURL=Subject.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BehaviorSubject = void 0;\nvar Subject_1 = require(\"./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_1.Subject));\nexports.BehaviorSubject = BehaviorSubject;\n//# sourceMappingURL=BehaviorSubject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dateTimestampProvider = void 0;\nexports.dateTimestampProvider = {\n now: function () {\n return (exports.dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReplaySubject = void 0;\nvar Subject_1 = require(\"./Subject\");\nvar dateTimestampProvider_1 = require(\"./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_1.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_1.Subject));\nexports.ReplaySubject = ReplaySubject;\n//# sourceMappingURL=ReplaySubject.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncSubject = void 0;\nvar Subject_1 = require(\"./Subject\");\nvar AsyncSubject = (function (_super) {\n __extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._value = null;\n _this._hasValue = false;\n _this._isComplete = false;\n return _this;\n }\n AsyncSubject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, _hasValue = _a._hasValue, _value = _a._value, thrownError = _a.thrownError, isStopped = _a.isStopped, _isComplete = _a._isComplete;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped || _isComplete) {\n _hasValue && subscriber.next(_value);\n subscriber.complete();\n }\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.isStopped) {\n this._value = value;\n this._hasValue = true;\n }\n };\n AsyncSubject.prototype.complete = function () {\n var _a = this, _hasValue = _a._hasValue, _value = _a._value, _isComplete = _a._isComplete;\n if (!_isComplete) {\n this._isComplete = true;\n _hasValue && _super.prototype.next.call(this, _value);\n _super.prototype.complete.call(this);\n }\n };\n return AsyncSubject;\n}(Subject_1.Subject));\nexports.AsyncSubject = AsyncSubject;\n//# sourceMappingURL=AsyncSubject.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Action = void 0;\nvar Subscription_1 = require(\"../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_1.Subscription));\nexports.Action = Action;\n//# sourceMappingURL=Action.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.intervalProvider = void 0;\nexports.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 = exports.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 = exports.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","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncAction = void 0;\nvar Action_1 = require(\"./Action\");\nvar intervalProvider_1 = require(\"./intervalProvider\");\nvar arrRemove_1 = require(\"../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_1.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_1.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_1.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_1.Action));\nexports.AsyncAction = AsyncAction;\n//# sourceMappingURL=AsyncAction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TestTools = exports.Immediate = void 0;\nvar nextHandle = 1;\nvar resolved;\nvar activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexports.Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(function () { return findAndClearHandle(handle) && cb(); });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n },\n};\nexports.TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.immediateProvider = void 0;\nvar Immediate_1 = require(\"../util/Immediate\");\nvar setImmediate = Immediate_1.Immediate.setImmediate, clearImmediate = Immediate_1.Immediate.clearImmediate;\nexports.immediateProvider = {\n setImmediate: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = exports.immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args)));\n },\n clearImmediate: function (handle) {\n var delegate = exports.immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=immediateProvider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsapAction = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar immediateProvider_1 = require(\"./immediateProvider\");\nvar AsapAction = (function (_super) {\n __extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider_1.immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider_1.immediateProvider.clearImmediate(id);\n if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction_1.AsyncAction));\nexports.AsapAction = AsapAction;\n//# sourceMappingURL=AsapAction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Scheduler = void 0;\nvar dateTimestampProvider_1 = require(\"./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_1.dateTimestampProvider.now;\n return Scheduler;\n}());\nexports.Scheduler = Scheduler;\n//# sourceMappingURL=Scheduler.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncScheduler = void 0;\nvar Scheduler_1 = require(\"../Scheduler\");\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler_1.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_1.Scheduler));\nexports.AsyncScheduler = AsyncScheduler;\n//# sourceMappingURL=AsyncScheduler.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsapScheduler = void 0;\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar AsapScheduler = (function (_super) {\n __extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId = this._scheduled;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.AsapScheduler = AsapScheduler;\n//# sourceMappingURL=AsapScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.asap = exports.asapScheduler = void 0;\nvar AsapAction_1 = require(\"./AsapAction\");\nvar AsapScheduler_1 = require(\"./AsapScheduler\");\nexports.asapScheduler = new AsapScheduler_1.AsapScheduler(AsapAction_1.AsapAction);\nexports.asap = exports.asapScheduler;\n//# sourceMappingURL=asap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.async = exports.asyncScheduler = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nexports.asyncScheduler = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction);\nexports.async = exports.asyncScheduler;\n//# sourceMappingURL=async.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueueAction = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar QueueAction = (function (_super) {\n __extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return delay > 0 || this.closed ? _super.prototype.execute.call(this, state, delay) : this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.flush(this);\n return 0;\n };\n return QueueAction;\n}(AsyncAction_1.AsyncAction));\nexports.QueueAction = QueueAction;\n//# sourceMappingURL=QueueAction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueueScheduler = void 0;\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar QueueScheduler = (function (_super) {\n __extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.QueueScheduler = QueueScheduler;\n//# sourceMappingURL=QueueScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.queue = exports.queueScheduler = void 0;\nvar QueueAction_1 = require(\"./QueueAction\");\nvar QueueScheduler_1 = require(\"./QueueScheduler\");\nexports.queueScheduler = new QueueScheduler_1.QueueScheduler(QueueAction_1.QueueAction);\nexports.queue = exports.queueScheduler;\n//# sourceMappingURL=queue.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnimationFrameAction = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar animationFrameProvider_1 = require(\"./animationFrameProvider\");\nvar AnimationFrameAction = (function (_super) {\n __extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function () { return scheduler.flush(undefined); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && id === scheduler._scheduled && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction_1.AsyncAction));\nexports.AnimationFrameAction = AnimationFrameAction;\n//# sourceMappingURL=AnimationFrameAction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnimationFrameScheduler = void 0;\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar AnimationFrameScheduler = (function (_super) {\n __extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId;\n if (action) {\n flushId = action.id;\n }\n else {\n flushId = this._scheduled;\n this._scheduled = undefined;\n }\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.AnimationFrameScheduler = AnimationFrameScheduler;\n//# sourceMappingURL=AnimationFrameScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.animationFrame = exports.animationFrameScheduler = void 0;\nvar AnimationFrameAction_1 = require(\"./AnimationFrameAction\");\nvar AnimationFrameScheduler_1 = require(\"./AnimationFrameScheduler\");\nexports.animationFrameScheduler = new AnimationFrameScheduler_1.AnimationFrameScheduler(AnimationFrameAction_1.AnimationFrameAction);\nexports.animationFrame = exports.animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VirtualAction = exports.VirtualTimeScheduler = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar Subscription_1 = require(\"../Subscription\");\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar VirtualTimeScheduler = (function (_super) {\n __extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(schedulerActionCtor, maxFrames) {\n if (schedulerActionCtor === void 0) { schedulerActionCtor = VirtualAction; }\n if (maxFrames === void 0) { maxFrames = Infinity; }\n var _this = _super.call(this, schedulerActionCtor, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error;\n var action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n }\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.VirtualTimeScheduler = VirtualTimeScheduler;\nvar VirtualAction = (function (_super) {\n __extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) { index = (scheduler.index += 1); }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (Number.isFinite(delay)) {\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n else {\n return Subscription_1.Subscription.EMPTY;\n }\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return 1;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction_1.AsyncAction));\nexports.VirtualAction = VirtualAction;\n//# sourceMappingURL=VirtualTimeScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.empty = exports.EMPTY = void 0;\nvar Observable_1 = require(\"../Observable\");\nexports.EMPTY = new Observable_1.Observable(function (subscriber) { return subscriber.complete(); });\nfunction empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : exports.EMPTY;\n}\nexports.empty = empty;\nfunction emptyScheduled(scheduler) {\n return new Observable_1.Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isScheduler = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction isScheduler(value) {\n return value && isFunction_1.isFunction(value.schedule);\n}\nexports.isScheduler = isScheduler;\n//# sourceMappingURL=isScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.popNumber = exports.popScheduler = exports.popResultSelector = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nvar isScheduler_1 = require(\"./isScheduler\");\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nfunction popResultSelector(args) {\n return isFunction_1.isFunction(last(args)) ? args.pop() : undefined;\n}\nexports.popResultSelector = popResultSelector;\nfunction popScheduler(args) {\n return isScheduler_1.isScheduler(last(args)) ? args.pop() : undefined;\n}\nexports.popScheduler = popScheduler;\nfunction popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\nexports.popNumber = popNumber;\n//# sourceMappingURL=args.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArrayLike = void 0;\nexports.isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPromise = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction isPromise(value) {\n return isFunction_1.isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\nexports.isPromise = isPromise;\n//# sourceMappingURL=isPromise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isInteropObservable = void 0;\nvar observable_1 = require(\"../symbol/observable\");\nvar isFunction_1 = require(\"./isFunction\");\nfunction isInteropObservable(input) {\n return isFunction_1.isFunction(input[observable_1.observable]);\n}\nexports.isInteropObservable = isInteropObservable;\n//# sourceMappingURL=isInteropObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAsyncIterable = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction_1.isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\nexports.isAsyncIterable = isAsyncIterable;\n//# sourceMappingURL=isAsyncIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createInvalidObservableTypeError = void 0;\nfunction createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\nexports.createInvalidObservableTypeError = createInvalidObservableTypeError;\n//# sourceMappingURL=throwUnobservableError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.iterator = exports.getSymbolIterator = void 0;\nfunction getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexports.getSymbolIterator = getSymbolIterator;\nexports.iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIterable = void 0;\nvar iterator_1 = require(\"../symbol/iterator\");\nvar isFunction_1 = require(\"./isFunction\");\nfunction isIterable(input) {\n return isFunction_1.isFunction(input === null || input === void 0 ? void 0 : input[iterator_1.iterator]);\n}\nexports.isIterable = isIterable;\n//# sourceMappingURL=isIterable.js.map","\"use strict\";\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isReadableStreamLike = exports.readableStreamLikeToAsyncGenerator = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexports.readableStreamLikeToAsyncGenerator = readableStreamLikeToAsyncGenerator;\nfunction isReadableStreamLike(obj) {\n return isFunction_1.isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\nexports.isReadableStreamLike = isReadableStreamLike;\n//# sourceMappingURL=isReadableStreamLike.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromReadableStreamLike = exports.fromAsyncIterable = exports.fromIterable = exports.fromPromise = exports.fromArrayLike = exports.fromInteropObservable = exports.innerFrom = void 0;\nvar isArrayLike_1 = require(\"../util/isArrayLike\");\nvar isPromise_1 = require(\"../util/isPromise\");\nvar Observable_1 = require(\"../Observable\");\nvar isInteropObservable_1 = require(\"../util/isInteropObservable\");\nvar isAsyncIterable_1 = require(\"../util/isAsyncIterable\");\nvar throwUnobservableError_1 = require(\"../util/throwUnobservableError\");\nvar isIterable_1 = require(\"../util/isIterable\");\nvar isReadableStreamLike_1 = require(\"../util/isReadableStreamLike\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar reportUnhandledError_1 = require(\"../util/reportUnhandledError\");\nvar observable_1 = require(\"../symbol/observable\");\nfunction innerFrom(input) {\n if (input instanceof Observable_1.Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable_1.isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike_1.isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise_1.isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable_1.isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable_1.isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike_1.isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw throwUnobservableError_1.createInvalidObservableTypeError(input);\n}\nexports.innerFrom = innerFrom;\nfunction fromInteropObservable(obj) {\n return new Observable_1.Observable(function (subscriber) {\n var obs = obj[observable_1.observable]();\n if (isFunction_1.isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexports.fromInteropObservable = fromInteropObservable;\nfunction fromArrayLike(array) {\n return new Observable_1.Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexports.fromArrayLike = fromArrayLike;\nfunction fromPromise(promise) {\n return new Observable_1.Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError_1.reportUnhandledError);\n });\n}\nexports.fromPromise = fromPromise;\nfunction fromIterable(iterable) {\n return new Observable_1.Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexports.fromIterable = fromIterable;\nfunction fromAsyncIterable(asyncIterable) {\n return new Observable_1.Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexports.fromAsyncIterable = fromAsyncIterable;\nfunction fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(readableStream));\n}\nexports.fromReadableStreamLike = fromReadableStreamLike;\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.executeSchedule = void 0;\nfunction executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\nexports.executeSchedule = executeSchedule;\n//# sourceMappingURL=executeSchedule.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observeOn = void 0;\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return executeSchedule_1.executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule_1.executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule_1.executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\nexports.observeOn = observeOn;\n//# sourceMappingURL=observeOn.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscribeOn = void 0;\nvar lift_1 = require(\"../util/lift\");\nfunction subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return lift_1.operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\nexports.subscribeOn = subscribeOn;\n//# sourceMappingURL=subscribeOn.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleObservable = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar observeOn_1 = require(\"../operators/observeOn\");\nvar subscribeOn_1 = require(\"../operators/subscribeOn\");\nfunction scheduleObservable(input, scheduler) {\n return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));\n}\nexports.scheduleObservable = scheduleObservable;\n//# sourceMappingURL=scheduleObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.schedulePromise = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar observeOn_1 = require(\"../operators/observeOn\");\nvar subscribeOn_1 = require(\"../operators/subscribeOn\");\nfunction schedulePromise(input, scheduler) {\n return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));\n}\nexports.schedulePromise = schedulePromise;\n//# sourceMappingURL=schedulePromise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleArray = void 0;\nvar Observable_1 = require(\"../Observable\");\nfunction scheduleArray(input, scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\nexports.scheduleArray = scheduleArray;\n//# sourceMappingURL=scheduleArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleIterable = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar iterator_1 = require(\"../symbol/iterator\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction scheduleIterable(input, scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var iterator;\n executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n iterator = input[iterator_1.iterator]();\n executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction_1.isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\nexports.scheduleIterable = scheduleIterable;\n//# sourceMappingURL=scheduleIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleAsyncIterable = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable_1.Observable(function (subscriber) {\n executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\nexports.scheduleAsyncIterable = scheduleAsyncIterable;\n//# sourceMappingURL=scheduleAsyncIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleReadableStreamLike = void 0;\nvar scheduleAsyncIterable_1 = require(\"./scheduleAsyncIterable\");\nvar isReadableStreamLike_1 = require(\"../util/isReadableStreamLike\");\nfunction scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable_1.scheduleAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(input), scheduler);\n}\nexports.scheduleReadableStreamLike = scheduleReadableStreamLike;\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduled = void 0;\nvar scheduleObservable_1 = require(\"./scheduleObservable\");\nvar schedulePromise_1 = require(\"./schedulePromise\");\nvar scheduleArray_1 = require(\"./scheduleArray\");\nvar scheduleIterable_1 = require(\"./scheduleIterable\");\nvar scheduleAsyncIterable_1 = require(\"./scheduleAsyncIterable\");\nvar isInteropObservable_1 = require(\"../util/isInteropObservable\");\nvar isPromise_1 = require(\"../util/isPromise\");\nvar isArrayLike_1 = require(\"../util/isArrayLike\");\nvar isIterable_1 = require(\"../util/isIterable\");\nvar isAsyncIterable_1 = require(\"../util/isAsyncIterable\");\nvar throwUnobservableError_1 = require(\"../util/throwUnobservableError\");\nvar isReadableStreamLike_1 = require(\"../util/isReadableStreamLike\");\nvar scheduleReadableStreamLike_1 = require(\"./scheduleReadableStreamLike\");\nfunction scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable_1.isInteropObservable(input)) {\n return scheduleObservable_1.scheduleObservable(input, scheduler);\n }\n if (isArrayLike_1.isArrayLike(input)) {\n return scheduleArray_1.scheduleArray(input, scheduler);\n }\n if (isPromise_1.isPromise(input)) {\n return schedulePromise_1.schedulePromise(input, scheduler);\n }\n if (isAsyncIterable_1.isAsyncIterable(input)) {\n return scheduleAsyncIterable_1.scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable_1.isIterable(input)) {\n return scheduleIterable_1.scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike_1.isReadableStreamLike(input)) {\n return scheduleReadableStreamLike_1.scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw throwUnobservableError_1.createInvalidObservableTypeError(input);\n}\nexports.scheduled = scheduled;\n//# sourceMappingURL=scheduled.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.from = void 0;\nvar scheduled_1 = require(\"../scheduled/scheduled\");\nvar innerFrom_1 = require(\"./innerFrom\");\nfunction from(input, scheduler) {\n return scheduler ? scheduled_1.scheduled(input, scheduler) : innerFrom_1.innerFrom(input);\n}\nexports.from = from;\n//# sourceMappingURL=from.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.of = void 0;\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"./from\");\nfunction of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n return from_1.from(args, scheduler);\n}\nexports.of = of;\n//# sourceMappingURL=of.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throwError = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction throwError(errorOrErrorFactory, scheduler) {\n var errorFactory = isFunction_1.isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function () { return errorOrErrorFactory; };\n var init = function (subscriber) { return subscriber.error(errorFactory()); };\n return new Observable_1.Observable(scheduler ? function (subscriber) { return scheduler.schedule(init, 0, subscriber); } : init);\n}\nexports.throwError = throwError;\n//# sourceMappingURL=throwError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observeNotification = exports.Notification = exports.NotificationKind = void 0;\nvar empty_1 = require(\"./observable/empty\");\nvar of_1 = require(\"./observable/of\");\nvar throwError_1 = require(\"./observable/throwError\");\nvar isFunction_1 = require(\"./util/isFunction\");\nvar NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind = exports.NotificationKind || (exports.NotificationKind = {}));\nvar Notification = (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n return observeNotification(this, observer);\n };\n Notification.prototype.do = function (nextHandler, errorHandler, completeHandler) {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n var _a;\n return isFunction_1.isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next)\n ? this.observe(nextOrObserver)\n : this.do(nextOrObserver, error, complete);\n };\n Notification.prototype.toObservable = function () {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n var result = kind === 'N'\n ?\n of_1.of(value)\n :\n kind === 'E'\n ?\n throwError_1.throwError(function () { return error; })\n :\n kind === 'C'\n ?\n empty_1.EMPTY\n :\n 0;\n if (!result) {\n throw new TypeError(\"Unexpected notification kind \" + kind);\n }\n return result;\n };\n Notification.createNext = function (value) {\n return new Notification('N', value);\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n return Notification;\n}());\nexports.Notification = Notification;\nfunction observeNotification(notification, observer) {\n var _a, _b, _c;\n var _d = notification, kind = _d.kind, value = _d.value, error = _d.error;\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n}\nexports.observeNotification = observeNotification;\n//# sourceMappingURL=Notification.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isObservable = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar isFunction_1 = require(\"./isFunction\");\nfunction isObservable(obj) {\n return !!obj && (obj instanceof Observable_1.Observable || (isFunction_1.isFunction(obj.lift) && isFunction_1.isFunction(obj.subscribe)));\n}\nexports.isObservable = isObservable;\n//# sourceMappingURL=isObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EmptyError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.EmptyError = createErrorClass_1.createErrorClass(function (_super) {\n return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n };\n});\n//# sourceMappingURL=EmptyError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lastValueFrom = void 0;\nvar EmptyError_1 = require(\"./util/EmptyError\");\nfunction lastValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var _hasValue = false;\n var _value;\n source.subscribe({\n next: function (value) {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: function () {\n if (_hasValue) {\n resolve(_value);\n }\n else if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError_1.EmptyError());\n }\n },\n });\n });\n}\nexports.lastValueFrom = lastValueFrom;\n//# sourceMappingURL=lastValueFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.firstValueFrom = void 0;\nvar EmptyError_1 = require(\"./util/EmptyError\");\nvar Subscriber_1 = require(\"./Subscriber\");\nfunction firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new Subscriber_1.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_1.EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\nexports.firstValueFrom = firstValueFrom;\n//# sourceMappingURL=firstValueFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArgumentOutOfRangeError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.ArgumentOutOfRangeError = createErrorClass_1.createErrorClass(function (_super) {\n return function ArgumentOutOfRangeErrorImpl() {\n _super(this);\n this.name = 'ArgumentOutOfRangeError';\n this.message = 'argument out of range';\n };\n});\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotFoundError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.NotFoundError = createErrorClass_1.createErrorClass(function (_super) {\n return function NotFoundErrorImpl(message) {\n _super(this);\n this.name = 'NotFoundError';\n this.message = message;\n };\n});\n//# sourceMappingURL=NotFoundError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SequenceError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.SequenceError = createErrorClass_1.createErrorClass(function (_super) {\n return function SequenceErrorImpl(message) {\n _super(this);\n this.name = 'SequenceError';\n this.message = message;\n };\n});\n//# sourceMappingURL=SequenceError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidDate = void 0;\nfunction isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\nexports.isValidDate = isValidDate;\n//# sourceMappingURL=isDate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timeout = exports.TimeoutError = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar isDate_1 = require(\"../util/isDate\");\nvar lift_1 = require(\"../util/lift\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar createErrorClass_1 = require(\"../util/createErrorClass\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nexports.TimeoutError = createErrorClass_1.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});\nfunction timeout(config, schedulerArg) {\n var _a = (isDate_1.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 : async_1.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 lift_1.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_1.executeSchedule(subscriber, scheduler, function () {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom_1.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(OperatorSubscriber_1.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}\nexports.timeout = timeout;\nfunction timeoutErrorFactory(info) {\n throw new exports.TimeoutError(info);\n}\n//# sourceMappingURL=timeout.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.map = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction map(project, thisArg) {\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\nexports.map = map;\n//# sourceMappingURL=map.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapOneOrManyArgs = void 0;\nvar map_1 = require(\"../operators/map\");\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nfunction mapOneOrManyArgs(fn) {\n return map_1.map(function (args) { return callOrApply(fn, args); });\n}\nexports.mapOneOrManyArgs = mapOneOrManyArgs;\n//# sourceMappingURL=mapOneOrManyArgs.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindCallbackInternals = void 0;\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar Observable_1 = require(\"../Observable\");\nvar subscribeOn_1 = require(\"../operators/subscribeOn\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar observeOn_1 = require(\"../operators/observeOn\");\nvar AsyncSubject_1 = require(\"../AsyncSubject\");\nfunction bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler_1.isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler)\n .apply(this, args)\n .pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));\n };\n }\n }\n if (scheduler) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallbackInternals(isNodeStyle, callbackFunc)\n .apply(this, args)\n .pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));\n };\n }\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var subject = new AsyncSubject_1.AsyncSubject();\n var uninitialized = true;\n return new Observable_1.Observable(function (subscriber) {\n var subs = subject.subscribe(subscriber);\n if (uninitialized) {\n uninitialized = false;\n var isAsync_1 = false;\n var isComplete_1 = false;\n callbackFunc.apply(_this, __spreadArray(__spreadArray([], __read(args)), [\n function () {\n var results = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n results[_i] = arguments[_i];\n }\n if (isNodeStyle) {\n var err = results.shift();\n if (err != null) {\n subject.error(err);\n return;\n }\n }\n subject.next(1 < results.length ? results : results[0]);\n isComplete_1 = true;\n if (isAsync_1) {\n subject.complete();\n }\n },\n ]));\n if (isComplete_1) {\n subject.complete();\n }\n isAsync_1 = true;\n }\n return subs;\n });\n };\n}\nexports.bindCallbackInternals = bindCallbackInternals;\n//# sourceMappingURL=bindCallbackInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindCallback = void 0;\nvar bindCallbackInternals_1 = require(\"./bindCallbackInternals\");\nfunction bindCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals_1.bindCallbackInternals(false, callbackFunc, resultSelector, scheduler);\n}\nexports.bindCallback = bindCallback;\n//# sourceMappingURL=bindCallback.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindNodeCallback = void 0;\nvar bindCallbackInternals_1 = require(\"./bindCallbackInternals\");\nfunction bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals_1.bindCallbackInternals(true, callbackFunc, resultSelector, scheduler);\n}\nexports.bindNodeCallback = bindNodeCallback;\n//# sourceMappingURL=bindNodeCallback.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.argsArgArrayOrObject = void 0;\nvar isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nfunction argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n if (isArray(first_1)) {\n return { args: first_1, keys: null };\n }\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) { return first_1[key]; }),\n keys: keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nexports.argsArgArrayOrObject = argsArgArrayOrObject;\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createObject = void 0;\nfunction createObject(keys, values) {\n return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\nexports.createObject = createObject;\n//# sourceMappingURL=createObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineLatestInit = exports.combineLatest = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar argsArgArrayOrObject_1 = require(\"../util/argsArgArrayOrObject\");\nvar from_1 = require(\"./from\");\nvar identity_1 = require(\"../util/identity\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar args_1 = require(\"../util/args\");\nvar createObject_1 = require(\"../util/createObject\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n var resultSelector = args_1.popResultSelector(args);\n var _a = argsArgArrayOrObject_1.argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n if (observables.length === 0) {\n return from_1.from([], scheduler);\n }\n var result = new Observable_1.Observable(combineLatestInit(observables, scheduler, keys\n ?\n function (values) { return createObject_1.createObject(keys, values); }\n :\n identity_1.identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result;\n}\nexports.combineLatest = combineLatest;\nfunction combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) { valueTransform = identity_1.identity; }\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from_1.from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\nexports.combineLatestInit = combineLatestInit;\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule_1.executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n//# sourceMappingURL=combineLatest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeInternals = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom_1.innerFrom(project(value, index++)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule_1.executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\nexports.mergeInternals = mergeInternals;\n//# sourceMappingURL=mergeInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeMap = void 0;\nvar map_1 = require(\"./map\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar mergeInternals_1 = require(\"./mergeInternals\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction_1.isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map_1.map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom_1.innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return lift_1.operate(function (source, subscriber) { return mergeInternals_1.mergeInternals(source, subscriber, project, concurrent); });\n}\nexports.mergeMap = mergeMap;\n//# sourceMappingURL=mergeMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeAll = void 0;\nvar mergeMap_1 = require(\"./mergeMap\");\nvar identity_1 = require(\"../util/identity\");\nfunction mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap_1.mergeMap(identity_1.identity, concurrent);\n}\nexports.mergeAll = mergeAll;\n//# sourceMappingURL=mergeAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatAll = void 0;\nvar mergeAll_1 = require(\"./mergeAll\");\nfunction concatAll() {\n return mergeAll_1.mergeAll(1);\n}\nexports.concatAll = concatAll;\n//# sourceMappingURL=concatAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concat = void 0;\nvar concatAll_1 = require(\"../operators/concatAll\");\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"./from\");\nfunction concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll_1.concatAll()(from_1.from(args, args_1.popScheduler(args)));\n}\nexports.concat = concat;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defer = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"./innerFrom\");\nfunction defer(observableFactory) {\n return new Observable_1.Observable(function (subscriber) {\n innerFrom_1.innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\nexports.defer = defer;\n//# sourceMappingURL=defer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.connectable = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar Observable_1 = require(\"../Observable\");\nvar defer_1 = require(\"./defer\");\nvar DEFAULT_CONFIG = {\n connector: function () { return new Subject_1.Subject(); },\n resetOnDisconnect: true,\n};\nfunction connectable(source, config) {\n if (config === void 0) { config = DEFAULT_CONFIG; }\n var connection = null;\n var connector = config.connector, _a = config.resetOnDisconnect, resetOnDisconnect = _a === void 0 ? true : _a;\n var subject = connector();\n var result = new Observable_1.Observable(function (subscriber) {\n return subject.subscribe(subscriber);\n });\n result.connect = function () {\n if (!connection || connection.closed) {\n connection = defer_1.defer(function () { return source; }).subscribe(subject);\n if (resetOnDisconnect) {\n connection.add(function () { return (subject = connector()); });\n }\n }\n return connection;\n };\n return result;\n}\nexports.connectable = connectable;\n//# sourceMappingURL=connectable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.forkJoin = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar argsArgArrayOrObject_1 = require(\"../util/argsArgArrayOrObject\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar args_1 = require(\"../util/args\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar createObject_1 = require(\"../util/createObject\");\nfunction forkJoin() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = args_1.popResultSelector(args);\n var _a = argsArgArrayOrObject_1.argsArgArrayOrObject(args), sources = _a.args, keys = _a.keys;\n var result = new Observable_1.Observable(function (subscriber) {\n var length = sources.length;\n if (!length) {\n subscriber.complete();\n return;\n }\n var values = new Array(length);\n var remainingCompletions = length;\n var remainingEmissions = length;\n var _loop_1 = function (sourceIndex) {\n var hasValue = false;\n innerFrom_1.innerFrom(sources[sourceIndex]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n }, function () { return remainingCompletions--; }, undefined, function () {\n if (!remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject_1.createObject(keys, values) : values);\n }\n subscriber.complete();\n }\n }));\n };\n for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n _loop_1(sourceIndex);\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result;\n}\nexports.forkJoin = forkJoin;\n//# sourceMappingURL=forkJoin.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromEvent = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Observable_1 = require(\"../Observable\");\nvar mergeMap_1 = require(\"../operators/mergeMap\");\nvar isArrayLike_1 = require(\"../util/isArrayLike\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nfunction fromEvent(target, eventName, options, resultSelector) {\n if (isFunction_1.isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs_1.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_1.isArrayLike(target)) {\n return mergeMap_1.mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom_1.innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable_1.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}\nexports.fromEvent = fromEvent;\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction_1.isFunction(target.addListener) && isFunction_1.isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction_1.isFunction(target.on) && isFunction_1.isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction_1.isFunction(target.addEventListener) && isFunction_1.isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromEventPattern = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nfunction fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));\n }\n return new Observable_1.Observable(function (subscriber) {\n var handler = function () {\n var e = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n e[_i] = arguments[_i];\n }\n return subscriber.next(e.length === 1 ? e[0] : e);\n };\n var retValue = addHandler(handler);\n return isFunction_1.isFunction(removeHandler) ? function () { return removeHandler(handler, retValue); } : undefined;\n });\n}\nexports.fromEventPattern = fromEventPattern;\n//# sourceMappingURL=fromEventPattern.js.map","\"use strict\";\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generate = void 0;\nvar identity_1 = require(\"../util/identity\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar defer_1 = require(\"./defer\");\nvar scheduleIterable_1 = require(\"../scheduled/scheduleIterable\");\nfunction generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) {\n var _a, _b;\n var resultSelector;\n var initialState;\n if (arguments.length === 1) {\n (_a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? identity_1.identity : _b, scheduler = _a.scheduler);\n }\n else {\n initialState = initialStateOrOptions;\n if (!resultSelectorOrScheduler || isScheduler_1.isScheduler(resultSelectorOrScheduler)) {\n resultSelector = identity_1.identity;\n scheduler = resultSelectorOrScheduler;\n }\n else {\n resultSelector = resultSelectorOrScheduler;\n }\n }\n function gen() {\n var state;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n state = initialState;\n _a.label = 1;\n case 1:\n if (!(!condition || condition(state))) return [3, 4];\n return [4, resultSelector(state)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n state = iterate(state);\n return [3, 1];\n case 4: return [2];\n }\n });\n }\n return defer_1.defer((scheduler\n ?\n function () { return scheduleIterable_1.scheduleIterable(gen(), scheduler); }\n :\n gen));\n}\nexports.generate = generate;\n//# sourceMappingURL=generate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.iif = void 0;\nvar defer_1 = require(\"./defer\");\nfunction iif(condition, trueResult, falseResult) {\n return defer_1.defer(function () { return (condition() ? trueResult : falseResult); });\n}\nexports.iif = iif;\n//# sourceMappingURL=iif.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timer = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar async_1 = require(\"../scheduler/async\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar isDate_1 = require(\"../util/isDate\");\nfunction timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = async_1.async; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler_1.isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable_1.Observable(function (subscriber) {\n var due = isDate_1.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}\nexports.timer = timer;\n//# sourceMappingURL=timer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.interval = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar timer_1 = require(\"./timer\");\nfunction interval(period, scheduler) {\n if (period === void 0) { period = 0; }\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n if (period < 0) {\n period = 0;\n }\n return timer_1.timer(period, period, scheduler);\n}\nexports.interval = interval;\n//# sourceMappingURL=interval.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\nvar mergeAll_1 = require(\"../operators/mergeAll\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar empty_1 = require(\"./empty\");\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"./from\");\nfunction merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n var concurrent = args_1.popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n empty_1.EMPTY\n : sources.length === 1\n ?\n innerFrom_1.innerFrom(sources[0])\n :\n mergeAll_1.mergeAll(concurrent)(from_1.from(sources, scheduler));\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.never = exports.NEVER = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar noop_1 = require(\"../util/noop\");\nexports.NEVER = new Observable_1.Observable(noop_1.noop);\nfunction never() {\n return exports.NEVER;\n}\nexports.never = never;\n//# sourceMappingURL=never.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.argsOrArgArray = void 0;\nvar isArray = Array.isArray;\nfunction argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\nexports.argsOrArgArray = argsOrArgArray;\n//# sourceMappingURL=argsOrArgArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onErrorResumeNext = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar innerFrom_1 = require(\"./innerFrom\");\nfunction onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var nextSources = argsOrArgArray_1.argsOrArgArray(sources);\n return new Observable_1.Observable(function (subscriber) {\n var sourceIndex = 0;\n var subscribeNext = function () {\n if (sourceIndex < nextSources.length) {\n var nextSource = void 0;\n try {\n nextSource = innerFrom_1.innerFrom(nextSources[sourceIndex++]);\n }\n catch (err) {\n subscribeNext();\n return;\n }\n var innerSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, undefined, noop_1.noop, noop_1.noop);\n nextSource.subscribe(innerSubscriber);\n innerSubscriber.add(subscribeNext);\n }\n else {\n subscriber.complete();\n }\n };\n subscribeNext();\n });\n}\nexports.onErrorResumeNext = onErrorResumeNext;\n//# sourceMappingURL=onErrorResumeNext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pairs = void 0;\nvar from_1 = require(\"./from\");\nfunction pairs(obj, scheduler) {\n return from_1.from(Object.entries(obj), scheduler);\n}\nexports.pairs = pairs;\n//# sourceMappingURL=pairs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.not = void 0;\nfunction not(pred, thisArg) {\n return function (value, index) { return !pred.call(thisArg, value, index); };\n}\nexports.not = not;\n//# sourceMappingURL=not.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filter = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction filter(predicate, thisArg) {\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\nexports.filter = filter;\n//# sourceMappingURL=filter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partition = void 0;\nvar not_1 = require(\"../util/not\");\nvar filter_1 = require(\"../operators/filter\");\nvar innerFrom_1 = require(\"./innerFrom\");\nfunction partition(source, predicate, thisArg) {\n return [filter_1.filter(predicate, thisArg)(innerFrom_1.innerFrom(source)), filter_1.filter(not_1.not(predicate, thisArg))(innerFrom_1.innerFrom(source))];\n}\nexports.partition = partition;\n//# sourceMappingURL=partition.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.raceInit = exports.race = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nfunction race() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n sources = argsOrArgArray_1.argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom_1.innerFrom(sources[0]) : new Observable_1.Observable(raceInit(sources));\n}\nexports.race = race;\nfunction raceInit(sources) {\n return function (subscriber) {\n var subscriptions = [];\n var _loop_1 = function (i) {\n subscriptions.push(innerFrom_1.innerFrom(sources[i]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (subscriptions) {\n for (var s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n subscriptions = null;\n }\n subscriber.next(value);\n })));\n };\n for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n _loop_1(i);\n }\n };\n}\nexports.raceInit = raceInit;\n//# sourceMappingURL=race.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.range = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar empty_1 = require(\"./empty\");\nfunction range(start, count, scheduler) {\n if (count == null) {\n count = start;\n start = 0;\n }\n if (count <= 0) {\n return empty_1.EMPTY;\n }\n var end = count + start;\n return new Observable_1.Observable(scheduler\n ?\n function (subscriber) {\n var n = start;\n return scheduler.schedule(function () {\n if (n < end) {\n subscriber.next(n++);\n this.schedule();\n }\n else {\n subscriber.complete();\n }\n });\n }\n :\n function (subscriber) {\n var n = start;\n while (n < end && !subscriber.closed) {\n subscriber.next(n++);\n }\n subscriber.complete();\n });\n}\nexports.range = range;\n//# sourceMappingURL=range.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.using = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar empty_1 = require(\"./empty\");\nfunction using(resourceFactory, observableFactory) {\n return new Observable_1.Observable(function (subscriber) {\n var resource = resourceFactory();\n var result = observableFactory(resource);\n var source = result ? innerFrom_1.innerFrom(result) : empty_1.EMPTY;\n source.subscribe(subscriber);\n return function () {\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\nexports.using = using;\n//# sourceMappingURL=using.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zip = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar empty_1 = require(\"./empty\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar args_1 = require(\"../util/args\");\nfunction zip() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = args_1.popResultSelector(args);\n var sources = argsOrArgArray_1.argsOrArgArray(args);\n return sources.length\n ? new Observable_1.Observable(function (subscriber) {\n var buffers = sources.map(function () { return []; });\n var completed = sources.map(function () { return false; });\n subscriber.add(function () {\n buffers = completed = null;\n });\n var _loop_1 = function (sourceIndex) {\n innerFrom_1.innerFrom(sources[sourceIndex]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n buffers[sourceIndex].push(value);\n if (buffers.every(function (buffer) { return buffer.length; })) {\n var result = buffers.map(function (buffer) { return buffer.shift(); });\n subscriber.next(resultSelector ? resultSelector.apply(void 0, __spreadArray([], __read(result))) : result);\n if (buffers.some(function (buffer, i) { return !buffer.length && completed[i]; })) {\n subscriber.complete();\n }\n }\n }, function () {\n completed[sourceIndex] = true;\n !buffers[sourceIndex].length && subscriber.complete();\n }));\n };\n for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {\n _loop_1(sourceIndex);\n }\n return function () {\n buffers = completed = null;\n };\n })\n : empty_1.EMPTY;\n}\nexports.zip = zip;\n//# sourceMappingURL=zip.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.audit = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction audit(durationSelector) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n var isComplete = false;\n var endDuration = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n var cleanupDuration = function () {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom_1.innerFrom(durationSelector(value)).subscribe((durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, function () {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\nexports.audit = audit;\n//# sourceMappingURL=audit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.auditTime = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar audit_1 = require(\"./audit\");\nvar timer_1 = require(\"../observable/timer\");\nfunction auditTime(duration, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n return audit_1.audit(function () { return timer_1.timer(duration, scheduler); });\n}\nexports.auditTime = auditTime;\n//# sourceMappingURL=auditTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buffer = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar noop_1 = require(\"../util/noop\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction buffer(closingNotifier) {\n return lift_1.operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n innerFrom_1.innerFrom(closingNotifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n var b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n }, noop_1.noop));\n return function () {\n currentBuffer = null;\n };\n });\n}\nexports.buffer = buffer;\n//# sourceMappingURL=buffer.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferCount = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nfunction bufferCount(bufferSize, startBufferEvery) {\n if (startBufferEvery === void 0) { startBufferEvery = null; }\n startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize;\n return lift_1.operate(function (source, subscriber) {\n var buffers = [];\n var count = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a, e_2, _b;\n var toEmit = null;\n if (count++ % startBufferEvery === 0) {\n buffers.push([]);\n }\n try {\n for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n var buffer = buffers_1_1.value;\n buffer.push(value);\n if (bufferSize <= buffer.length) {\n toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : [];\n toEmit.push(buffer);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (toEmit) {\n try {\n for (var toEmit_1 = __values(toEmit), toEmit_1_1 = toEmit_1.next(); !toEmit_1_1.done; toEmit_1_1 = toEmit_1.next()) {\n var buffer = toEmit_1_1.value;\n arrRemove_1.arrRemove(buffers, buffer);\n subscriber.next(buffer);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (toEmit_1_1 && !toEmit_1_1.done && (_b = toEmit_1.return)) _b.call(toEmit_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }, function () {\n var e_3, _a;\n try {\n for (var buffers_2 = __values(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) {\n var buffer = buffers_2_1.value;\n subscriber.next(buffer);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (buffers_2_1 && !buffers_2_1.done && (_a = buffers_2.return)) _a.call(buffers_2);\n }\n finally { if (e_3) throw e_3.error; }\n }\n subscriber.complete();\n }, undefined, function () {\n buffers = null;\n }));\n });\n}\nexports.bufferCount = bufferCount;\n//# sourceMappingURL=bufferCount.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferTime = void 0;\nvar Subscription_1 = require(\"../Subscription\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nvar async_1 = require(\"../scheduler/async\");\nvar args_1 = require(\"../util/args\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction bufferTime(bufferTimeSpan) {\n var _a, _b;\n var otherArgs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n var scheduler = (_a = args_1.popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : async_1.asyncScheduler;\n var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxBufferSize = otherArgs[1] || Infinity;\n return lift_1.operate(function (source, subscriber) {\n var bufferRecords = [];\n var restartOnEmit = false;\n var emit = function (record) {\n var buffer = record.buffer, subs = record.subs;\n subs.unsubscribe();\n arrRemove_1.arrRemove(bufferRecords, record);\n subscriber.next(buffer);\n restartOnEmit && startBuffer();\n };\n var startBuffer = function () {\n if (bufferRecords) {\n var subs = new Subscription_1.Subscription();\n subscriber.add(subs);\n var buffer = [];\n var record_1 = {\n buffer: buffer,\n subs: subs,\n };\n bufferRecords.push(record_1);\n executeSchedule_1.executeSchedule(subs, scheduler, function () { return emit(record_1); }, bufferTimeSpan);\n }\n };\n if (bufferCreationInterval !== null && bufferCreationInterval >= 0) {\n executeSchedule_1.executeSchedule(subscriber, scheduler, startBuffer, bufferCreationInterval, true);\n }\n else {\n restartOnEmit = true;\n }\n startBuffer();\n var bufferTimeSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n var recordsCopy = bufferRecords.slice();\n try {\n for (var recordsCopy_1 = __values(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) {\n var record = recordsCopy_1_1.value;\n var buffer = record.buffer;\n buffer.push(value);\n maxBufferSize <= buffer.length && emit(record);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a = recordsCopy_1.return)) _a.call(recordsCopy_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, function () {\n while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) {\n subscriber.next(bufferRecords.shift().buffer);\n }\n bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe();\n subscriber.complete();\n subscriber.unsubscribe();\n }, undefined, function () { return (bufferRecords = null); });\n source.subscribe(bufferTimeSubscriber);\n });\n}\nexports.bufferTime = bufferTime;\n//# sourceMappingURL=bufferTime.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferToggle = void 0;\nvar Subscription_1 = require(\"../Subscription\");\nvar lift_1 = require(\"../util/lift\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nfunction bufferToggle(openings, closingSelector) {\n return lift_1.operate(function (source, subscriber) {\n var buffers = [];\n innerFrom_1.innerFrom(openings).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (openValue) {\n var buffer = [];\n buffers.push(buffer);\n var closingSubscription = new Subscription_1.Subscription();\n var emitBuffer = function () {\n arrRemove_1.arrRemove(buffers, buffer);\n subscriber.next(buffer);\n closingSubscription.unsubscribe();\n };\n closingSubscription.add(innerFrom_1.innerFrom(closingSelector(openValue)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, emitBuffer, noop_1.noop)));\n }, noop_1.noop));\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n try {\n for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n var buffer = buffers_1_1.value;\n buffer.push(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, function () {\n while (buffers.length > 0) {\n subscriber.next(buffers.shift());\n }\n subscriber.complete();\n }));\n });\n}\nexports.bufferToggle = bufferToggle;\n//# sourceMappingURL=bufferToggle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferWhen = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar noop_1 = require(\"../util/noop\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction bufferWhen(closingSelector) {\n return lift_1.operate(function (source, subscriber) {\n var buffer = null;\n var closingSubscriber = null;\n var openBuffer = function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n var b = buffer;\n buffer = [];\n b && subscriber.next(b);\n innerFrom_1.innerFrom(closingSelector()).subscribe((closingSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, openBuffer, noop_1.noop)));\n };\n openBuffer();\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return buffer === null || buffer === void 0 ? void 0 : buffer.push(value); }, function () {\n buffer && subscriber.next(buffer);\n subscriber.complete();\n }, undefined, function () { return (buffer = closingSubscriber = null); }));\n });\n}\nexports.bufferWhen = bufferWhen;\n//# sourceMappingURL=bufferWhen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.catchError = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar lift_1 = require(\"../util/lift\");\nfunction catchError(selector) {\n return lift_1.operate(function (source, subscriber) {\n var innerSub = null;\n var syncUnsub = false;\n var handledResult;\n innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, undefined, function (err) {\n handledResult = innerFrom_1.innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\nexports.catchError = catchError;\n//# sourceMappingURL=catchError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scanInternals = void 0;\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return function (source, subscriber) {\n var hasState = hasSeed;\n var state = seed;\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (function () {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\nexports.scanInternals = scanInternals;\n//# sourceMappingURL=scanInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reduce = void 0;\nvar scanInternals_1 = require(\"./scanInternals\");\nvar lift_1 = require(\"../util/lift\");\nfunction reduce(accumulator, seed) {\n return lift_1.operate(scanInternals_1.scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\nexports.reduce = reduce;\n//# sourceMappingURL=reduce.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toArray = void 0;\nvar reduce_1 = require(\"./reduce\");\nvar lift_1 = require(\"../util/lift\");\nvar arrReducer = function (arr, value) { return (arr.push(value), arr); };\nfunction toArray() {\n return lift_1.operate(function (source, subscriber) {\n reduce_1.reduce(arrReducer, [])(source).subscribe(subscriber);\n });\n}\nexports.toArray = toArray;\n//# sourceMappingURL=toArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinAllInternals = void 0;\nvar identity_1 = require(\"../util/identity\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar pipe_1 = require(\"../util/pipe\");\nvar mergeMap_1 = require(\"./mergeMap\");\nvar toArray_1 = require(\"./toArray\");\nfunction joinAllInternals(joinFn, project) {\n return pipe_1.pipe(toArray_1.toArray(), mergeMap_1.mergeMap(function (sources) { return joinFn(sources); }), project ? mapOneOrManyArgs_1.mapOneOrManyArgs(project) : identity_1.identity);\n}\nexports.joinAllInternals = joinAllInternals;\n//# sourceMappingURL=joinAllInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineLatestAll = void 0;\nvar combineLatest_1 = require(\"../observable/combineLatest\");\nvar joinAllInternals_1 = require(\"./joinAllInternals\");\nfunction combineLatestAll(project) {\n return joinAllInternals_1.joinAllInternals(combineLatest_1.combineLatest, project);\n}\nexports.combineLatestAll = combineLatestAll;\n//# sourceMappingURL=combineLatestAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineAll = void 0;\nvar combineLatestAll_1 = require(\"./combineLatestAll\");\nexports.combineAll = combineLatestAll_1.combineLatestAll;\n//# sourceMappingURL=combineAll.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineLatest = void 0;\nvar combineLatest_1 = require(\"../observable/combineLatest\");\nvar lift_1 = require(\"../util/lift\");\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar pipe_1 = require(\"../util/pipe\");\nvar args_1 = require(\"../util/args\");\nfunction combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = args_1.popResultSelector(args);\n return resultSelector\n ? pipe_1.pipe(combineLatest.apply(void 0, __spreadArray([], __read(args))), mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector))\n : lift_1.operate(function (source, subscriber) {\n combineLatest_1.combineLatestInit(__spreadArray([source], __read(argsOrArgArray_1.argsOrArgArray(args))))(subscriber);\n });\n}\nexports.combineLatest = combineLatest;\n//# sourceMappingURL=combineLatest.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineLatestWith = void 0;\nvar combineLatest_1 = require(\"./combineLatest\");\nfunction combineLatestWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return combineLatest_1.combineLatest.apply(void 0, __spreadArray([], __read(otherSources)));\n}\nexports.combineLatestWith = combineLatestWith;\n//# sourceMappingURL=combineLatestWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatMap = void 0;\nvar mergeMap_1 = require(\"./mergeMap\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction concatMap(project, resultSelector) {\n return isFunction_1.isFunction(resultSelector) ? mergeMap_1.mergeMap(project, resultSelector, 1) : mergeMap_1.mergeMap(project, 1);\n}\nexports.concatMap = concatMap;\n//# sourceMappingURL=concatMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatMapTo = void 0;\nvar concatMap_1 = require(\"./concatMap\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction concatMapTo(innerObservable, resultSelector) {\n return isFunction_1.isFunction(resultSelector) ? concatMap_1.concatMap(function () { return innerObservable; }, resultSelector) : concatMap_1.concatMap(function () { return innerObservable; });\n}\nexports.concatMapTo = concatMapTo;\n//# sourceMappingURL=concatMapTo.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concat = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar concatAll_1 = require(\"./concatAll\");\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"../observable/from\");\nfunction concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n return lift_1.operate(function (source, subscriber) {\n concatAll_1.concatAll()(from_1.from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\nexports.concat = concat;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatWith = void 0;\nvar concat_1 = require(\"./concat\");\nfunction concatWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return concat_1.concat.apply(void 0, __spreadArray([], __read(otherSources)));\n}\nexports.concatWith = concatWith;\n//# sourceMappingURL=concatWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromSubscribable = void 0;\nvar Observable_1 = require(\"../Observable\");\nfunction fromSubscribable(subscribable) {\n return new Observable_1.Observable(function (subscriber) { return subscribable.subscribe(subscriber); });\n}\nexports.fromSubscribable = fromSubscribable;\n//# sourceMappingURL=fromSubscribable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.connect = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar fromSubscribable_1 = require(\"../observable/fromSubscribable\");\nvar DEFAULT_CONFIG = {\n connector: function () { return new Subject_1.Subject(); },\n};\nfunction connect(selector, config) {\n if (config === void 0) { config = DEFAULT_CONFIG; }\n var connector = config.connector;\n return lift_1.operate(function (source, subscriber) {\n var subject = connector();\n innerFrom_1.innerFrom(selector(fromSubscribable_1.fromSubscribable(subject))).subscribe(subscriber);\n subscriber.add(source.subscribe(subject));\n });\n}\nexports.connect = connect;\n//# sourceMappingURL=connect.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.count = void 0;\nvar reduce_1 = require(\"./reduce\");\nfunction count(predicate) {\n return reduce_1.reduce(function (total, value, i) { return (!predicate || predicate(value, i) ? total + 1 : total); }, 0);\n}\nexports.count = count;\n//# sourceMappingURL=count.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.debounce = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar noop_1 = require(\"../util/noop\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction debounce(durationSelector) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n var emit = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, emit, noop_1.noop);\n innerFrom_1.innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = durationSubscriber = null;\n }));\n });\n}\nexports.debounce = debounce;\n//# sourceMappingURL=debounce.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.debounceTime = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n return lift_1.operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\nexports.debounceTime = debounceTime;\n//# sourceMappingURL=debounceTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultIfEmpty = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction defaultIfEmpty(defaultValue) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(OperatorSubscriber_1.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}\nexports.defaultIfEmpty = defaultIfEmpty;\n//# sourceMappingURL=defaultIfEmpty.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.take = void 0;\nvar empty_1 = require(\"../observable/empty\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction take(count) {\n return count <= 0\n ?\n function () { return empty_1.EMPTY; }\n : lift_1.operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\nexports.take = take;\n//# sourceMappingURL=take.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ignoreElements = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nfunction ignoreElements() {\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, noop_1.noop));\n });\n}\nexports.ignoreElements = ignoreElements;\n//# sourceMappingURL=ignoreElements.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapTo = void 0;\nvar map_1 = require(\"./map\");\nfunction mapTo(value) {\n return map_1.map(function () { return value; });\n}\nexports.mapTo = mapTo;\n//# sourceMappingURL=mapTo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delayWhen = void 0;\nvar concat_1 = require(\"../observable/concat\");\nvar take_1 = require(\"./take\");\nvar ignoreElements_1 = require(\"./ignoreElements\");\nvar mapTo_1 = require(\"./mapTo\");\nvar mergeMap_1 = require(\"./mergeMap\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat_1.concat(subscriptionDelay.pipe(take_1.take(1), ignoreElements_1.ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap_1.mergeMap(function (value, index) { return innerFrom_1.innerFrom(delayDurationSelector(value, index)).pipe(take_1.take(1), mapTo_1.mapTo(value)); });\n}\nexports.delayWhen = delayWhen;\n//# sourceMappingURL=delayWhen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar delayWhen_1 = require(\"./delayWhen\");\nvar timer_1 = require(\"../observable/timer\");\nfunction delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n var duration = timer_1.timer(due, scheduler);\n return delayWhen_1.delayWhen(function () { return duration; });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dematerialize = void 0;\nvar Notification_1 = require(\"../Notification\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction dematerialize() {\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (notification) { return Notification_1.observeNotification(notification, subscriber); }));\n });\n}\nexports.dematerialize = dematerialize;\n//# sourceMappingURL=dematerialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.distinct = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction distinct(keySelector, flushes) {\n return lift_1.operate(function (source, subscriber) {\n var distinctKeys = new Set();\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var key = keySelector ? keySelector(value) : value;\n if (!distinctKeys.has(key)) {\n distinctKeys.add(key);\n subscriber.next(value);\n }\n }));\n flushes && innerFrom_1.innerFrom(flushes).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () { return distinctKeys.clear(); }, noop_1.noop));\n });\n}\nexports.distinct = distinct;\n//# sourceMappingURL=distinct.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.distinctUntilChanged = void 0;\nvar identity_1 = require(\"../util/identity\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity_1.identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return lift_1.operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(OperatorSubscriber_1.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}\nexports.distinctUntilChanged = distinctUntilChanged;\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.distinctUntilKeyChanged = void 0;\nvar distinctUntilChanged_1 = require(\"./distinctUntilChanged\");\nfunction distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged_1.distinctUntilChanged(function (x, y) { return (compare ? compare(x[key], y[key]) : x[key] === y[key]); });\n}\nexports.distinctUntilKeyChanged = distinctUntilKeyChanged;\n//# sourceMappingURL=distinctUntilKeyChanged.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throwIfEmpty = void 0;\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); }));\n });\n}\nexports.throwIfEmpty = throwIfEmpty;\nfunction defaultErrorFactory() {\n return new EmptyError_1.EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementAt = void 0;\nvar ArgumentOutOfRangeError_1 = require(\"../util/ArgumentOutOfRangeError\");\nvar filter_1 = require(\"./filter\");\nvar throwIfEmpty_1 = require(\"./throwIfEmpty\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar take_1 = require(\"./take\");\nfunction elementAt(index, defaultValue) {\n if (index < 0) {\n throw new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError();\n }\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(filter_1.filter(function (v, i) { return i === index; }), take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function () { return new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError(); }));\n };\n}\nexports.elementAt = elementAt;\n//# sourceMappingURL=elementAt.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.endWith = void 0;\nvar concat_1 = require(\"../observable/concat\");\nvar of_1 = require(\"../observable/of\");\nfunction endWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return function (source) { return concat_1.concat(source, of_1.of.apply(void 0, __spreadArray([], __read(values)))); };\n}\nexports.endWith = endWith;\n//# sourceMappingURL=endWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.every = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction every(predicate, thisArg) {\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (!predicate.call(thisArg, value, index++, source)) {\n subscriber.next(false);\n subscriber.complete();\n }\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\nexports.every = every;\n//# sourceMappingURL=every.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exhaustMap = void 0;\nvar map_1 = require(\"./map\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) {\n return source.pipe(exhaustMap(function (a, i) { return innerFrom_1.innerFrom(project(a, i)).pipe(map_1.map(function (b, ii) { return resultSelector(a, b, i, ii); })); }));\n };\n }\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n var innerSub = null;\n var isComplete = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (outerValue) {\n if (!innerSub) {\n innerSub = OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom_1.innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\nexports.exhaustMap = exhaustMap;\n//# sourceMappingURL=exhaustMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exhaustAll = void 0;\nvar exhaustMap_1 = require(\"./exhaustMap\");\nvar identity_1 = require(\"../util/identity\");\nfunction exhaustAll() {\n return exhaustMap_1.exhaustMap(identity_1.identity);\n}\nexports.exhaustAll = exhaustAll;\n//# sourceMappingURL=exhaustAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exhaust = void 0;\nvar exhaustAll_1 = require(\"./exhaustAll\");\nexports.exhaust = exhaustAll_1.exhaustAll;\n//# sourceMappingURL=exhaust.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expand = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar mergeInternals_1 = require(\"./mergeInternals\");\nfunction expand(project, concurrent, scheduler) {\n if (concurrent === void 0) { concurrent = Infinity; }\n concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;\n return lift_1.operate(function (source, subscriber) {\n return mergeInternals_1.mergeInternals(source, subscriber, project, concurrent, undefined, true, scheduler);\n });\n}\nexports.expand = expand;\n//# sourceMappingURL=expand.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.finalize = void 0;\nvar lift_1 = require(\"../util/lift\");\nfunction finalize(callback) {\n return lift_1.operate(function (source, subscriber) {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\nexports.finalize = finalize;\n//# sourceMappingURL=finalize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFind = exports.find = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction find(predicate, thisArg) {\n return lift_1.operate(createFind(predicate, thisArg, 'value'));\n}\nexports.find = find;\nfunction createFind(predicate, thisArg, emit) {\n var findIndex = emit === 'index';\n return function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var i = index++;\n if (predicate.call(thisArg, value, i, source)) {\n subscriber.next(findIndex ? i : value);\n subscriber.complete();\n }\n }, function () {\n subscriber.next(findIndex ? -1 : undefined);\n subscriber.complete();\n }));\n };\n}\nexports.createFind = createFind;\n//# sourceMappingURL=find.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findIndex = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar find_1 = require(\"./find\");\nfunction findIndex(predicate, thisArg) {\n return lift_1.operate(find_1.createFind(predicate, thisArg, 'index'));\n}\nexports.findIndex = findIndex;\n//# sourceMappingURL=findIndex.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.first = void 0;\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar filter_1 = require(\"./filter\");\nvar take_1 = require(\"./take\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar throwIfEmpty_1 = require(\"./throwIfEmpty\");\nvar identity_1 = require(\"../util/identity\");\nfunction first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter_1.filter(function (v, i) { return predicate(v, i, source); }) : identity_1.identity, take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function () { return new EmptyError_1.EmptyError(); }));\n };\n}\nexports.first = first;\n//# sourceMappingURL=first.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.groupBy = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction groupBy(keySelector, elementOrOptions, duration, connector) {\n return lift_1.operate(function (source, subscriber) {\n var element;\n if (!elementOrOptions || typeof elementOrOptions === 'function') {\n element = elementOrOptions;\n }\n else {\n (duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector);\n }\n var groups = new Map();\n var notify = function (cb) {\n groups.forEach(cb);\n cb(subscriber);\n };\n var handleError = function (err) { return notify(function (consumer) { return consumer.error(err); }); };\n var activeGroups = 0;\n var teardownAttempted = false;\n var groupBySourceSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, function (value) {\n try {\n var key_1 = keySelector(value);\n var group_1 = groups.get(key_1);\n if (!group_1) {\n groups.set(key_1, (group_1 = connector ? connector() : new Subject_1.Subject()));\n var grouped = createGroupedObservable(key_1, group_1);\n subscriber.next(grouped);\n if (duration) {\n var durationSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(group_1, function () {\n group_1.complete();\n durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe();\n }, undefined, undefined, function () { return groups.delete(key_1); });\n groupBySourceSubscriber.add(innerFrom_1.innerFrom(duration(grouped)).subscribe(durationSubscriber_1));\n }\n }\n group_1.next(element ? element(value) : value);\n }\n catch (err) {\n handleError(err);\n }\n }, function () { return notify(function (consumer) { return consumer.complete(); }); }, handleError, function () { return groups.clear(); }, function () {\n teardownAttempted = true;\n return activeGroups === 0;\n });\n source.subscribe(groupBySourceSubscriber);\n function createGroupedObservable(key, groupSubject) {\n var result = new Observable_1.Observable(function (groupSubscriber) {\n activeGroups++;\n var innerSub = groupSubject.subscribe(groupSubscriber);\n return function () {\n innerSub.unsubscribe();\n --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\nexports.groupBy = groupBy;\n//# sourceMappingURL=groupBy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEmpty = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction isEmpty() {\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n subscriber.next(false);\n subscriber.complete();\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\nexports.isEmpty = isEmpty;\n//# sourceMappingURL=isEmpty.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.takeLast = void 0;\nvar empty_1 = require(\"../observable/empty\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction takeLast(count) {\n return count <= 0\n ? function () { return empty_1.EMPTY; }\n : lift_1.operate(function (source, subscriber) {\n var buffer = [];\n source.subscribe(OperatorSubscriber_1.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}\nexports.takeLast = takeLast;\n//# sourceMappingURL=takeLast.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.last = void 0;\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar filter_1 = require(\"./filter\");\nvar takeLast_1 = require(\"./takeLast\");\nvar throwIfEmpty_1 = require(\"./throwIfEmpty\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar identity_1 = require(\"../util/identity\");\nfunction last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter_1.filter(function (v, i) { return predicate(v, i, source); }) : identity_1.identity, takeLast_1.takeLast(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function () { return new EmptyError_1.EmptyError(); }));\n };\n}\nexports.last = last;\n//# sourceMappingURL=last.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.materialize = void 0;\nvar Notification_1 = require(\"../Notification\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction materialize() {\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(Notification_1.Notification.createNext(value));\n }, function () {\n subscriber.next(Notification_1.Notification.createComplete());\n subscriber.complete();\n }, function (err) {\n subscriber.next(Notification_1.Notification.createError(err));\n subscriber.complete();\n }));\n });\n}\nexports.materialize = materialize;\n//# sourceMappingURL=materialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.max = void 0;\nvar reduce_1 = require(\"./reduce\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction max(comparer) {\n return reduce_1.reduce(isFunction_1.isFunction(comparer) ? function (x, y) { return (comparer(x, y) > 0 ? x : y); } : function (x, y) { return (x > y ? x : y); });\n}\nexports.max = max;\n//# sourceMappingURL=max.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flatMap = void 0;\nvar mergeMap_1 = require(\"./mergeMap\");\nexports.flatMap = mergeMap_1.mergeMap;\n//# sourceMappingURL=flatMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeMapTo = void 0;\nvar mergeMap_1 = require(\"./mergeMap\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction mergeMapTo(innerObservable, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction_1.isFunction(resultSelector)) {\n return mergeMap_1.mergeMap(function () { return innerObservable; }, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap_1.mergeMap(function () { return innerObservable; }, concurrent);\n}\nexports.mergeMapTo = mergeMapTo;\n//# sourceMappingURL=mergeMapTo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeScan = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar mergeInternals_1 = require(\"./mergeInternals\");\nfunction mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return lift_1.operate(function (source, subscriber) {\n var state = seed;\n return mergeInternals_1.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}\nexports.mergeScan = mergeScan;\n//# sourceMappingURL=mergeScan.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar mergeAll_1 = require(\"./mergeAll\");\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"../observable/from\");\nfunction merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n var concurrent = args_1.popNumber(args, Infinity);\n return lift_1.operate(function (source, subscriber) {\n mergeAll_1.mergeAll(concurrent)(from_1.from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeWith = void 0;\nvar merge_1 = require(\"./merge\");\nfunction mergeWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return merge_1.merge.apply(void 0, __spreadArray([], __read(otherSources)));\n}\nexports.mergeWith = mergeWith;\n//# sourceMappingURL=mergeWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.min = void 0;\nvar reduce_1 = require(\"./reduce\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction min(comparer) {\n return reduce_1.reduce(isFunction_1.isFunction(comparer) ? function (x, y) { return (comparer(x, y) < 0 ? x : y); } : function (x, y) { return (x < y ? x : y); });\n}\nexports.min = min;\n//# sourceMappingURL=min.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multicast = void 0;\nvar ConnectableObservable_1 = require(\"../observable/ConnectableObservable\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar connect_1 = require(\"./connect\");\nfunction multicast(subjectOrSubjectFactory, selector) {\n var subjectFactory = isFunction_1.isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () { return subjectOrSubjectFactory; };\n if (isFunction_1.isFunction(selector)) {\n return connect_1.connect(selector, {\n connector: subjectFactory,\n });\n }\n return function (source) { return new ConnectableObservable_1.ConnectableObservable(source, subjectFactory); };\n}\nexports.multicast = multicast;\n//# sourceMappingURL=multicast.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onErrorResumeNext = exports.onErrorResumeNextWith = void 0;\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar onErrorResumeNext_1 = require(\"../observable/onErrorResumeNext\");\nfunction onErrorResumeNextWith() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var nextSources = argsOrArgArray_1.argsOrArgArray(sources);\n return function (source) { return onErrorResumeNext_1.onErrorResumeNext.apply(void 0, __spreadArray([source], __read(nextSources))); };\n}\nexports.onErrorResumeNextWith = onErrorResumeNextWith;\nexports.onErrorResumeNext = onErrorResumeNextWith;\n//# sourceMappingURL=onErrorResumeNextWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pairwise = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction pairwise() {\n return lift_1.operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\nexports.pairwise = pairwise;\n//# sourceMappingURL=pairwise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pluck = void 0;\nvar map_1 = require(\"./map\");\nfunction pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = arguments[_i];\n }\n var length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return map_1.map(function (x) {\n var currentProp = x;\n for (var i = 0; i < length; i++) {\n var p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n });\n}\nexports.pluck = pluck;\n//# sourceMappingURL=pluck.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.publish = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar multicast_1 = require(\"./multicast\");\nvar connect_1 = require(\"./connect\");\nfunction publish(selector) {\n return selector ? function (source) { return connect_1.connect(selector)(source); } : function (source) { return multicast_1.multicast(new Subject_1.Subject())(source); };\n}\nexports.publish = publish;\n//# sourceMappingURL=publish.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.publishBehavior = void 0;\nvar BehaviorSubject_1 = require(\"../BehaviorSubject\");\nvar ConnectableObservable_1 = require(\"../observable/ConnectableObservable\");\nfunction publishBehavior(initialValue) {\n return function (source) {\n var subject = new BehaviorSubject_1.BehaviorSubject(initialValue);\n return new ConnectableObservable_1.ConnectableObservable(source, function () { return subject; });\n };\n}\nexports.publishBehavior = publishBehavior;\n//# sourceMappingURL=publishBehavior.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.publishLast = void 0;\nvar AsyncSubject_1 = require(\"../AsyncSubject\");\nvar ConnectableObservable_1 = require(\"../observable/ConnectableObservable\");\nfunction publishLast() {\n return function (source) {\n var subject = new AsyncSubject_1.AsyncSubject();\n return new ConnectableObservable_1.ConnectableObservable(source, function () { return subject; });\n };\n}\nexports.publishLast = publishLast;\n//# sourceMappingURL=publishLast.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.publishReplay = void 0;\nvar ReplaySubject_1 = require(\"../ReplaySubject\");\nvar multicast_1 = require(\"./multicast\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {\n if (selectorOrScheduler && !isFunction_1.isFunction(selectorOrScheduler)) {\n timestampProvider = selectorOrScheduler;\n }\n var selector = isFunction_1.isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;\n return function (source) { return multicast_1.multicast(new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source); };\n}\nexports.publishReplay = publishReplay;\n//# sourceMappingURL=publishReplay.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.raceWith = void 0;\nvar race_1 = require(\"../observable/race\");\nvar lift_1 = require(\"../util/lift\");\nvar identity_1 = require(\"../util/identity\");\nfunction raceWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return !otherSources.length\n ? identity_1.identity\n : lift_1.operate(function (source, subscriber) {\n race_1.raceInit(__spreadArray([source], __read(otherSources)))(subscriber);\n });\n}\nexports.raceWith = raceWith;\n//# sourceMappingURL=raceWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.repeat = void 0;\nvar empty_1 = require(\"../observable/empty\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar timer_1 = require(\"../observable/timer\");\nfunction repeat(countOrConfig) {\n var _a;\n var count = Infinity;\n var delay;\n if (countOrConfig != null) {\n if (typeof countOrConfig === 'object') {\n (_a = countOrConfig.count, count = _a === void 0 ? Infinity : _a, delay = countOrConfig.delay);\n }\n else {\n count = countOrConfig;\n }\n }\n return count <= 0\n ? function () { return empty_1.EMPTY; }\n : lift_1.operate(function (source, subscriber) {\n var soFar = 0;\n var sourceSub;\n var resubscribe = function () {\n sourceSub === null || sourceSub === void 0 ? void 0 : sourceSub.unsubscribe();\n sourceSub = null;\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer_1.timer(delay) : innerFrom_1.innerFrom(delay(soFar));\n var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n subscribeToSource();\n });\n notifier.subscribe(notifierSubscriber_1);\n }\n else {\n subscribeToSource();\n }\n };\n var subscribeToSource = function () {\n var syncUnsub = false;\n sourceSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, function () {\n if (++soFar < count) {\n if (sourceSub) {\n resubscribe();\n }\n else {\n syncUnsub = true;\n }\n }\n else {\n subscriber.complete();\n }\n }));\n if (syncUnsub) {\n resubscribe();\n }\n };\n subscribeToSource();\n });\n}\nexports.repeat = repeat;\n//# sourceMappingURL=repeat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.repeatWhen = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction repeatWhen(notifier) {\n return lift_1.operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var completions$;\n var isNotifierComplete = false;\n var isMainComplete = false;\n var checkComplete = function () { return isMainComplete && isNotifierComplete && (subscriber.complete(), true); };\n var getCompletionSubject = function () {\n if (!completions$) {\n completions$ = new Subject_1.Subject();\n innerFrom_1.innerFrom(notifier(completions$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n if (innerSub) {\n subscribeForRepeatWhen();\n }\n else {\n syncResub = true;\n }\n }, function () {\n isNotifierComplete = true;\n checkComplete();\n }));\n }\n return completions$;\n };\n var subscribeForRepeatWhen = function () {\n isMainComplete = false;\n innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, function () {\n isMainComplete = true;\n !checkComplete() && getCompletionSubject().next();\n }));\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRepeatWhen();\n }\n };\n subscribeForRepeatWhen();\n });\n}\nexports.repeatWhen = repeatWhen;\n//# sourceMappingURL=repeatWhen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retry = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar identity_1 = require(\"../util/identity\");\nvar timer_1 = require(\"../observable/timer\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction retry(configOrCount) {\n if (configOrCount === void 0) { configOrCount = Infinity; }\n var config;\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n }\n else {\n config = {\n count: configOrCount,\n };\n }\n var _a = config.count, count = _a === void 0 ? Infinity : _a, delay = config.delay, _b = config.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b;\n return count <= 0\n ? identity_1.identity\n : lift_1.operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n var subscribeForRetry = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (resetOnSuccess) {\n soFar = 0;\n }\n subscriber.next(value);\n }, undefined, function (err) {\n if (soFar++ < count) {\n var resub_1 = function () {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n else {\n syncUnsub = true;\n }\n };\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer_1.timer(delay) : innerFrom_1.innerFrom(delay(err, soFar));\n var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n resub_1();\n }, function () {\n subscriber.complete();\n });\n notifier.subscribe(notifierSubscriber_1);\n }\n else {\n resub_1();\n }\n }\n else {\n subscriber.error(err);\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n subscribeForRetry();\n });\n}\nexports.retry = retry;\n//# sourceMappingURL=retry.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retryWhen = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction retryWhen(notifier) {\n return lift_1.operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var errors$;\n var subscribeForRetryWhen = function () {\n innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, undefined, function (err) {\n if (!errors$) {\n errors$ = new Subject_1.Subject();\n innerFrom_1.innerFrom(notifier(errors$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n return innerSub ? subscribeForRetryWhen() : (syncResub = true);\n }));\n }\n if (errors$) {\n errors$.next(err);\n }\n }));\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRetryWhen();\n }\n };\n subscribeForRetryWhen();\n });\n}\nexports.retryWhen = retryWhen;\n//# sourceMappingURL=retryWhen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sample = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar noop_1 = require(\"../util/noop\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction sample(notifier) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n }));\n innerFrom_1.innerFrom(notifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n }, noop_1.noop));\n });\n}\nexports.sample = sample;\n//# sourceMappingURL=sample.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sampleTime = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar sample_1 = require(\"./sample\");\nvar interval_1 = require(\"../observable/interval\");\nfunction sampleTime(period, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n return sample_1.sample(interval_1.interval(period, scheduler));\n}\nexports.sampleTime = sampleTime;\n//# sourceMappingURL=sampleTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scan = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar scanInternals_1 = require(\"./scanInternals\");\nfunction scan(accumulator, seed) {\n return lift_1.operate(scanInternals_1.scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\nexports.scan = scan;\n//# sourceMappingURL=scan.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sequenceEqual = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction sequenceEqual(compareTo, comparator) {\n if (comparator === void 0) { comparator = function (a, b) { return a === b; }; }\n return lift_1.operate(function (source, subscriber) {\n var aState = createState();\n var bState = createState();\n var emit = function (isEqual) {\n subscriber.next(isEqual);\n subscriber.complete();\n };\n var createSubscriber = function (selfState, otherState) {\n var sequenceEqualSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (a) {\n var buffer = otherState.buffer, complete = otherState.complete;\n if (buffer.length === 0) {\n complete ? emit(false) : selfState.buffer.push(a);\n }\n else {\n !comparator(a, buffer.shift()) && emit(false);\n }\n }, function () {\n selfState.complete = true;\n var complete = otherState.complete, buffer = otherState.buffer;\n complete && emit(buffer.length === 0);\n sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe();\n });\n return sequenceEqualSubscriber;\n };\n source.subscribe(createSubscriber(aState, bState));\n innerFrom_1.innerFrom(compareTo).subscribe(createSubscriber(bState, aState));\n });\n}\nexports.sequenceEqual = sequenceEqual;\nfunction createState() {\n return {\n buffer: [],\n complete: false,\n };\n}\n//# sourceMappingURL=sequenceEqual.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.share = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Subject_1 = require(\"../Subject\");\nvar Subscriber_1 = require(\"../Subscriber\");\nvar lift_1 = require(\"../util/lift\");\nfunction share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject_1.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 lift_1.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 Subscriber_1.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_1.innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nexports.share = share;\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 Subscriber_1.SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom_1.innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shareReplay = void 0;\nvar ReplaySubject_1 = require(\"../ReplaySubject\");\nvar share_1 = require(\"./share\");\nfunction 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_1.share({\n connector: function () { return new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, scheduler); },\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\nexports.shareReplay = shareReplay;\n//# sourceMappingURL=shareReplay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.single = void 0;\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar SequenceError_1 = require(\"../util/SequenceError\");\nvar NotFoundError_1 = require(\"../util/NotFoundError\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction single(predicate) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n var singleValue;\n var seenValue = false;\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n seenValue = true;\n if (!predicate || predicate(value, index++, source)) {\n hasValue && subscriber.error(new SequenceError_1.SequenceError('Too many matching values'));\n hasValue = true;\n singleValue = value;\n }\n }, function () {\n if (hasValue) {\n subscriber.next(singleValue);\n subscriber.complete();\n }\n else {\n subscriber.error(seenValue ? new NotFoundError_1.NotFoundError('No matching values') : new EmptyError_1.EmptyError());\n }\n }));\n });\n}\nexports.single = single;\n//# sourceMappingURL=single.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.skip = void 0;\nvar filter_1 = require(\"./filter\");\nfunction skip(count) {\n return filter_1.filter(function (_, index) { return count <= index; });\n}\nexports.skip = skip;\n//# sourceMappingURL=skip.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.skipLast = void 0;\nvar identity_1 = require(\"../util/identity\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction skipLast(skipCount) {\n return skipCount <= 0\n ?\n identity_1.identity\n : lift_1.operate(function (source, subscriber) {\n var ring = new Array(skipCount);\n var seen = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var valueIndex = seen++;\n if (valueIndex < skipCount) {\n ring[valueIndex] = value;\n }\n else {\n var index = valueIndex % skipCount;\n var oldValue = ring[index];\n ring[index] = value;\n subscriber.next(oldValue);\n }\n }));\n return function () {\n ring = null;\n };\n });\n}\nexports.skipLast = skipLast;\n//# sourceMappingURL=skipLast.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.skipUntil = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar noop_1 = require(\"../util/noop\");\nfunction skipUntil(notifier) {\n return lift_1.operate(function (source, subscriber) {\n var taking = false;\n var skipSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe();\n taking = true;\n }, noop_1.noop);\n innerFrom_1.innerFrom(notifier).subscribe(skipSubscriber);\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return taking && subscriber.next(value); }));\n });\n}\nexports.skipUntil = skipUntil;\n//# sourceMappingURL=skipUntil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.skipWhile = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction skipWhile(predicate) {\n return lift_1.operate(function (source, subscriber) {\n var taking = false;\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); }));\n });\n}\nexports.skipWhile = skipWhile;\n//# sourceMappingURL=skipWhile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.startWith = void 0;\nvar concat_1 = require(\"../observable/concat\");\nvar args_1 = require(\"../util/args\");\nvar lift_1 = require(\"../util/lift\");\nfunction startWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(values);\n return lift_1.operate(function (source, subscriber) {\n (scheduler ? concat_1.concat(values, source, scheduler) : concat_1.concat(values, source)).subscribe(subscriber);\n });\n}\nexports.startWith = startWith;\n//# sourceMappingURL=startWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.switchMap = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction switchMap(project, resultSelector) {\n return lift_1.operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom_1.innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\nexports.switchMap = switchMap;\n//# sourceMappingURL=switchMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.switchAll = void 0;\nvar switchMap_1 = require(\"./switchMap\");\nvar identity_1 = require(\"../util/identity\");\nfunction switchAll() {\n return switchMap_1.switchMap(identity_1.identity);\n}\nexports.switchAll = switchAll;\n//# sourceMappingURL=switchAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.switchMapTo = void 0;\nvar switchMap_1 = require(\"./switchMap\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction switchMapTo(innerObservable, resultSelector) {\n return isFunction_1.isFunction(resultSelector) ? switchMap_1.switchMap(function () { return innerObservable; }, resultSelector) : switchMap_1.switchMap(function () { return innerObservable; });\n}\nexports.switchMapTo = switchMapTo;\n//# sourceMappingURL=switchMapTo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.switchScan = void 0;\nvar switchMap_1 = require(\"./switchMap\");\nvar lift_1 = require(\"../util/lift\");\nfunction switchScan(accumulator, seed) {\n return lift_1.operate(function (source, subscriber) {\n var state = seed;\n switchMap_1.switchMap(function (value, index) { return accumulator(state, value, index); }, function (_, innerValue) { return ((state = innerValue), innerValue); })(source).subscribe(subscriber);\n return function () {\n state = null;\n };\n });\n}\nexports.switchScan = switchScan;\n//# sourceMappingURL=switchScan.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.takeUntil = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar noop_1 = require(\"../util/noop\");\nfunction takeUntil(notifier) {\n return lift_1.operate(function (source, subscriber) {\n innerFrom_1.innerFrom(notifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop_1.noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\nexports.takeUntil = takeUntil;\n//# sourceMappingURL=takeUntil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.takeWhile = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction takeWhile(predicate, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\nexports.takeWhile = takeWhile;\n//# sourceMappingURL=takeWhile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tap = void 0;\nvar isFunction_1 = require(\"../util/isFunction\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar identity_1 = require(\"../util/identity\");\nfunction tap(observerOrNext, error, complete) {\n var tapObserver = isFunction_1.isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error: error, complete: complete }\n : observerOrNext;\n return tapObserver\n ? lift_1.operate(function (source, subscriber) {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity_1.identity;\n}\nexports.tap = tap;\n//# sourceMappingURL=tap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throttle = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction throttle(durationSelector, config) {\n return lift_1.operate(function (source, subscriber) {\n var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n var startThrottle = function (value) {\n return (throttled = innerFrom_1.innerFrom(durationSelector(value)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n };\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\nexports.throttle = throttle;\n//# sourceMappingURL=throttle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throttleTime = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar throttle_1 = require(\"./throttle\");\nvar timer_1 = require(\"../observable/timer\");\nfunction throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n var duration$ = timer_1.timer(duration, scheduler);\n return throttle_1.throttle(function () { return duration$; }, config);\n}\nexports.throttleTime = throttleTime;\n//# sourceMappingURL=throttleTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TimeInterval = exports.timeInterval = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction timeInterval(scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n return lift_1.operate(function (source, subscriber) {\n var last = scheduler.now();\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var now = scheduler.now();\n var interval = now - last;\n last = now;\n subscriber.next(new TimeInterval(value, interval));\n }));\n });\n}\nexports.timeInterval = timeInterval;\nvar TimeInterval = (function () {\n function TimeInterval(value, interval) {\n this.value = value;\n this.interval = interval;\n }\n return TimeInterval;\n}());\nexports.TimeInterval = TimeInterval;\n//# sourceMappingURL=timeInterval.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timeoutWith = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar isDate_1 = require(\"../util/isDate\");\nvar timeout_1 = require(\"./timeout\");\nfunction timeoutWith(due, withObservable, scheduler) {\n var first;\n var each;\n var _with;\n scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : async_1.async;\n if (isDate_1.isValidDate(due)) {\n first = due;\n }\n else if (typeof due === 'number') {\n each = due;\n }\n if (withObservable) {\n _with = function () { return withObservable; };\n }\n else {\n throw new TypeError('No observable provided to switch to');\n }\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return timeout_1.timeout({\n first: first,\n each: each,\n scheduler: scheduler,\n with: _with,\n });\n}\nexports.timeoutWith = timeoutWith;\n//# sourceMappingURL=timeoutWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timestamp = void 0;\nvar dateTimestampProvider_1 = require(\"../scheduler/dateTimestampProvider\");\nvar map_1 = require(\"./map\");\nfunction timestamp(timestampProvider) {\n if (timestampProvider === void 0) { timestampProvider = dateTimestampProvider_1.dateTimestampProvider; }\n return map_1.map(function (value) { return ({ value: value, timestamp: timestampProvider.now() }); });\n}\nexports.timestamp = timestamp;\n//# sourceMappingURL=timestamp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.window = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction window(windowBoundaries) {\n return lift_1.operate(function (source, subscriber) {\n var windowSubject = new Subject_1.Subject();\n subscriber.next(windowSubject.asObservable());\n var errorHandler = function (err) {\n windowSubject.error(err);\n subscriber.error(err);\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value); }, function () {\n windowSubject.complete();\n subscriber.complete();\n }, errorHandler));\n innerFrom_1.innerFrom(windowBoundaries).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n windowSubject.complete();\n subscriber.next((windowSubject = new Subject_1.Subject()));\n }, noop_1.noop, errorHandler));\n return function () {\n windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe();\n windowSubject = null;\n };\n });\n}\nexports.window = window;\n//# sourceMappingURL=window.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.windowCount = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction windowCount(windowSize, startWindowEvery) {\n if (startWindowEvery === void 0) { startWindowEvery = 0; }\n var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;\n return lift_1.operate(function (source, subscriber) {\n var windows = [new Subject_1.Subject()];\n var starts = [];\n var count = 0;\n subscriber.next(windows[0].asObservable());\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n try {\n for (var windows_1 = __values(windows), windows_1_1 = windows_1.next(); !windows_1_1.done; windows_1_1 = windows_1.next()) {\n var window_1 = windows_1_1.value;\n window_1.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (windows_1_1 && !windows_1_1.done && (_a = windows_1.return)) _a.call(windows_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var c = count - windowSize + 1;\n if (c >= 0 && c % startEvery === 0) {\n windows.shift().complete();\n }\n if (++count % startEvery === 0) {\n var window_2 = new Subject_1.Subject();\n windows.push(window_2);\n subscriber.next(window_2.asObservable());\n }\n }, function () {\n while (windows.length > 0) {\n windows.shift().complete();\n }\n subscriber.complete();\n }, function (err) {\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n subscriber.error(err);\n }, function () {\n starts = null;\n windows = null;\n }));\n });\n}\nexports.windowCount = windowCount;\n//# sourceMappingURL=windowCount.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.windowTime = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar async_1 = require(\"../scheduler/async\");\nvar Subscription_1 = require(\"../Subscription\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nvar args_1 = require(\"../util/args\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction windowTime(windowTimeSpan) {\n var _a, _b;\n var otherArgs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n var scheduler = (_a = args_1.popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : async_1.asyncScheduler;\n var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxWindowSize = otherArgs[1] || Infinity;\n return lift_1.operate(function (source, subscriber) {\n var windowRecords = [];\n var restartOnClose = false;\n var closeWindow = function (record) {\n var window = record.window, subs = record.subs;\n window.complete();\n subs.unsubscribe();\n arrRemove_1.arrRemove(windowRecords, record);\n restartOnClose && startWindow();\n };\n var startWindow = function () {\n if (windowRecords) {\n var subs = new Subscription_1.Subscription();\n subscriber.add(subs);\n var window_1 = new Subject_1.Subject();\n var record_1 = {\n window: window_1,\n subs: subs,\n seen: 0,\n };\n windowRecords.push(record_1);\n subscriber.next(window_1.asObservable());\n executeSchedule_1.executeSchedule(subs, scheduler, function () { return closeWindow(record_1); }, windowTimeSpan);\n }\n };\n if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n executeSchedule_1.executeSchedule(subscriber, scheduler, startWindow, windowCreationInterval, true);\n }\n else {\n restartOnClose = true;\n }\n startWindow();\n var loop = function (cb) { return windowRecords.slice().forEach(cb); };\n var terminate = function (cb) {\n loop(function (_a) {\n var window = _a.window;\n return cb(window);\n });\n cb(subscriber);\n subscriber.unsubscribe();\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n loop(function (record) {\n record.window.next(value);\n maxWindowSize <= ++record.seen && closeWindow(record);\n });\n }, function () { return terminate(function (consumer) { return consumer.complete(); }); }, function (err) { return terminate(function (consumer) { return consumer.error(err); }); }));\n return function () {\n windowRecords = null;\n };\n });\n}\nexports.windowTime = windowTime;\n//# sourceMappingURL=windowTime.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.windowToggle = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar Subscription_1 = require(\"../Subscription\");\nvar lift_1 = require(\"../util/lift\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nfunction windowToggle(openings, closingSelector) {\n return lift_1.operate(function (source, subscriber) {\n var windows = [];\n var handleError = function (err) {\n while (0 < windows.length) {\n windows.shift().error(err);\n }\n subscriber.error(err);\n };\n innerFrom_1.innerFrom(openings).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (openValue) {\n var window = new Subject_1.Subject();\n windows.push(window);\n var closingSubscription = new Subscription_1.Subscription();\n var closeWindow = function () {\n arrRemove_1.arrRemove(windows, window);\n window.complete();\n closingSubscription.unsubscribe();\n };\n var closingNotifier;\n try {\n closingNotifier = innerFrom_1.innerFrom(closingSelector(openValue));\n }\n catch (err) {\n handleError(err);\n return;\n }\n subscriber.next(window.asObservable());\n closingSubscription.add(closingNotifier.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, closeWindow, noop_1.noop, handleError)));\n }, noop_1.noop));\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n var windowsCopy = windows.slice();\n try {\n for (var windowsCopy_1 = __values(windowsCopy), windowsCopy_1_1 = windowsCopy_1.next(); !windowsCopy_1_1.done; windowsCopy_1_1 = windowsCopy_1.next()) {\n var window_1 = windowsCopy_1_1.value;\n window_1.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (windowsCopy_1_1 && !windowsCopy_1_1.done && (_a = windowsCopy_1.return)) _a.call(windowsCopy_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, function () {\n while (0 < windows.length) {\n windows.shift().complete();\n }\n subscriber.complete();\n }, handleError, function () {\n while (0 < windows.length) {\n windows.shift().unsubscribe();\n }\n }));\n });\n}\nexports.windowToggle = windowToggle;\n//# sourceMappingURL=windowToggle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.windowWhen = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction windowWhen(closingSelector) {\n return lift_1.operate(function (source, subscriber) {\n var window;\n var closingSubscriber;\n var handleError = function (err) {\n window.error(err);\n subscriber.error(err);\n };\n var openWindow = function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n window === null || window === void 0 ? void 0 : window.complete();\n window = new Subject_1.Subject();\n subscriber.next(window.asObservable());\n var closingNotifier;\n try {\n closingNotifier = innerFrom_1.innerFrom(closingSelector());\n }\n catch (err) {\n handleError(err);\n return;\n }\n closingNotifier.subscribe((closingSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, openWindow, openWindow, handleError)));\n };\n openWindow();\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return window.next(value); }, function () {\n window.complete();\n subscriber.complete();\n }, handleError, function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n window = null;\n }));\n });\n}\nexports.windowWhen = windowWhen;\n//# sourceMappingURL=windowWhen.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withLatestFrom = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar identity_1 = require(\"../util/identity\");\nvar noop_1 = require(\"../util/noop\");\nvar args_1 = require(\"../util/args\");\nfunction withLatestFrom() {\n var inputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputs[_i] = arguments[_i];\n }\n var project = args_1.popResultSelector(inputs);\n return lift_1.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_1.innerFrom(inputs[i]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity_1.identity)) && (hasValue = null);\n }\n }, noop_1.noop));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n source.subscribe(OperatorSubscriber_1.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}\nexports.withLatestFrom = withLatestFrom;\n//# sourceMappingURL=withLatestFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zipAll = void 0;\nvar zip_1 = require(\"../observable/zip\");\nvar joinAllInternals_1 = require(\"./joinAllInternals\");\nfunction zipAll(project) {\n return joinAllInternals_1.joinAllInternals(zip_1.zip, project);\n}\nexports.zipAll = zipAll;\n//# sourceMappingURL=zipAll.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zip = void 0;\nvar zip_1 = require(\"../observable/zip\");\nvar lift_1 = require(\"../util/lift\");\nfunction zip() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return lift_1.operate(function (source, subscriber) {\n zip_1.zip.apply(void 0, __spreadArray([source], __read(sources))).subscribe(subscriber);\n });\n}\nexports.zip = zip;\n//# sourceMappingURL=zip.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zipWith = void 0;\nvar zip_1 = require(\"./zip\");\nfunction zipWith() {\n var otherInputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherInputs[_i] = arguments[_i];\n }\n return zip_1.zip.apply(void 0, __spreadArray([], __read(otherInputs)));\n}\nexports.zipWith = zipWith;\n//# sourceMappingURL=zipWith.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.interval = exports.iif = exports.generate = exports.fromEventPattern = exports.fromEvent = exports.from = exports.forkJoin = exports.empty = exports.defer = exports.connectable = exports.concat = exports.combineLatest = exports.bindNodeCallback = exports.bindCallback = exports.UnsubscriptionError = exports.TimeoutError = exports.SequenceError = exports.ObjectUnsubscribedError = exports.NotFoundError = exports.EmptyError = exports.ArgumentOutOfRangeError = exports.firstValueFrom = exports.lastValueFrom = exports.isObservable = exports.identity = exports.noop = exports.pipe = exports.NotificationKind = exports.Notification = exports.Subscriber = exports.Subscription = exports.Scheduler = exports.VirtualAction = exports.VirtualTimeScheduler = exports.animationFrameScheduler = exports.animationFrame = exports.queueScheduler = exports.queue = exports.asyncScheduler = exports.async = exports.asapScheduler = exports.asap = exports.AsyncSubject = exports.ReplaySubject = exports.BehaviorSubject = exports.Subject = exports.animationFrames = exports.observable = exports.ConnectableObservable = exports.Observable = void 0;\nexports.filter = exports.expand = exports.exhaustMap = exports.exhaustAll = exports.exhaust = exports.every = exports.endWith = exports.elementAt = exports.distinctUntilKeyChanged = exports.distinctUntilChanged = exports.distinct = exports.dematerialize = exports.delayWhen = exports.delay = exports.defaultIfEmpty = exports.debounceTime = exports.debounce = exports.count = exports.connect = exports.concatWith = exports.concatMapTo = exports.concatMap = exports.concatAll = exports.combineLatestWith = exports.combineLatestAll = exports.combineAll = exports.catchError = exports.bufferWhen = exports.bufferToggle = exports.bufferTime = exports.bufferCount = exports.buffer = exports.auditTime = exports.audit = exports.config = exports.NEVER = exports.EMPTY = exports.scheduled = exports.zip = exports.using = exports.timer = exports.throwError = exports.range = exports.race = exports.partition = exports.pairs = exports.onErrorResumeNext = exports.of = exports.never = exports.merge = void 0;\nexports.switchMap = exports.switchAll = exports.subscribeOn = exports.startWith = exports.skipWhile = exports.skipUntil = exports.skipLast = exports.skip = exports.single = exports.shareReplay = exports.share = exports.sequenceEqual = exports.scan = exports.sampleTime = exports.sample = exports.refCount = exports.retryWhen = exports.retry = exports.repeatWhen = exports.repeat = exports.reduce = exports.raceWith = exports.publishReplay = exports.publishLast = exports.publishBehavior = exports.publish = exports.pluck = exports.pairwise = exports.onErrorResumeNextWith = exports.observeOn = exports.multicast = exports.min = exports.mergeWith = exports.mergeScan = exports.mergeMapTo = exports.mergeMap = exports.flatMap = exports.mergeAll = exports.max = exports.materialize = exports.mapTo = exports.map = exports.last = exports.isEmpty = exports.ignoreElements = exports.groupBy = exports.first = exports.findIndex = exports.find = exports.finalize = void 0;\nexports.zipWith = exports.zipAll = exports.withLatestFrom = exports.windowWhen = exports.windowToggle = exports.windowTime = exports.windowCount = exports.window = exports.toArray = exports.timestamp = exports.timeoutWith = exports.timeout = exports.timeInterval = exports.throwIfEmpty = exports.throttleTime = exports.throttle = exports.tap = exports.takeWhile = exports.takeUntil = exports.takeLast = exports.take = exports.switchScan = exports.switchMapTo = void 0;\nvar Observable_1 = require(\"./internal/Observable\");\nObject.defineProperty(exports, \"Observable\", { enumerable: true, get: function () { return Observable_1.Observable; } });\nvar ConnectableObservable_1 = require(\"./internal/observable/ConnectableObservable\");\nObject.defineProperty(exports, \"ConnectableObservable\", { enumerable: true, get: function () { return ConnectableObservable_1.ConnectableObservable; } });\nvar observable_1 = require(\"./internal/symbol/observable\");\nObject.defineProperty(exports, \"observable\", { enumerable: true, get: function () { return observable_1.observable; } });\nvar animationFrames_1 = require(\"./internal/observable/dom/animationFrames\");\nObject.defineProperty(exports, \"animationFrames\", { enumerable: true, get: function () { return animationFrames_1.animationFrames; } });\nvar Subject_1 = require(\"./internal/Subject\");\nObject.defineProperty(exports, \"Subject\", { enumerable: true, get: function () { return Subject_1.Subject; } });\nvar BehaviorSubject_1 = require(\"./internal/BehaviorSubject\");\nObject.defineProperty(exports, \"BehaviorSubject\", { enumerable: true, get: function () { return BehaviorSubject_1.BehaviorSubject; } });\nvar ReplaySubject_1 = require(\"./internal/ReplaySubject\");\nObject.defineProperty(exports, \"ReplaySubject\", { enumerable: true, get: function () { return ReplaySubject_1.ReplaySubject; } });\nvar AsyncSubject_1 = require(\"./internal/AsyncSubject\");\nObject.defineProperty(exports, \"AsyncSubject\", { enumerable: true, get: function () { return AsyncSubject_1.AsyncSubject; } });\nvar asap_1 = require(\"./internal/scheduler/asap\");\nObject.defineProperty(exports, \"asap\", { enumerable: true, get: function () { return asap_1.asap; } });\nObject.defineProperty(exports, \"asapScheduler\", { enumerable: true, get: function () { return asap_1.asapScheduler; } });\nvar async_1 = require(\"./internal/scheduler/async\");\nObject.defineProperty(exports, \"async\", { enumerable: true, get: function () { return async_1.async; } });\nObject.defineProperty(exports, \"asyncScheduler\", { enumerable: true, get: function () { return async_1.asyncScheduler; } });\nvar queue_1 = require(\"./internal/scheduler/queue\");\nObject.defineProperty(exports, \"queue\", { enumerable: true, get: function () { return queue_1.queue; } });\nObject.defineProperty(exports, \"queueScheduler\", { enumerable: true, get: function () { return queue_1.queueScheduler; } });\nvar animationFrame_1 = require(\"./internal/scheduler/animationFrame\");\nObject.defineProperty(exports, \"animationFrame\", { enumerable: true, get: function () { return animationFrame_1.animationFrame; } });\nObject.defineProperty(exports, \"animationFrameScheduler\", { enumerable: true, get: function () { return animationFrame_1.animationFrameScheduler; } });\nvar VirtualTimeScheduler_1 = require(\"./internal/scheduler/VirtualTimeScheduler\");\nObject.defineProperty(exports, \"VirtualTimeScheduler\", { enumerable: true, get: function () { return VirtualTimeScheduler_1.VirtualTimeScheduler; } });\nObject.defineProperty(exports, \"VirtualAction\", { enumerable: true, get: function () { return VirtualTimeScheduler_1.VirtualAction; } });\nvar Scheduler_1 = require(\"./internal/Scheduler\");\nObject.defineProperty(exports, \"Scheduler\", { enumerable: true, get: function () { return Scheduler_1.Scheduler; } });\nvar Subscription_1 = require(\"./internal/Subscription\");\nObject.defineProperty(exports, \"Subscription\", { enumerable: true, get: function () { return Subscription_1.Subscription; } });\nvar Subscriber_1 = require(\"./internal/Subscriber\");\nObject.defineProperty(exports, \"Subscriber\", { enumerable: true, get: function () { return Subscriber_1.Subscriber; } });\nvar Notification_1 = require(\"./internal/Notification\");\nObject.defineProperty(exports, \"Notification\", { enumerable: true, get: function () { return Notification_1.Notification; } });\nObject.defineProperty(exports, \"NotificationKind\", { enumerable: true, get: function () { return Notification_1.NotificationKind; } });\nvar pipe_1 = require(\"./internal/util/pipe\");\nObject.defineProperty(exports, \"pipe\", { enumerable: true, get: function () { return pipe_1.pipe; } });\nvar noop_1 = require(\"./internal/util/noop\");\nObject.defineProperty(exports, \"noop\", { enumerable: true, get: function () { return noop_1.noop; } });\nvar identity_1 = require(\"./internal/util/identity\");\nObject.defineProperty(exports, \"identity\", { enumerable: true, get: function () { return identity_1.identity; } });\nvar isObservable_1 = require(\"./internal/util/isObservable\");\nObject.defineProperty(exports, \"isObservable\", { enumerable: true, get: function () { return isObservable_1.isObservable; } });\nvar lastValueFrom_1 = require(\"./internal/lastValueFrom\");\nObject.defineProperty(exports, \"lastValueFrom\", { enumerable: true, get: function () { return lastValueFrom_1.lastValueFrom; } });\nvar firstValueFrom_1 = require(\"./internal/firstValueFrom\");\nObject.defineProperty(exports, \"firstValueFrom\", { enumerable: true, get: function () { return firstValueFrom_1.firstValueFrom; } });\nvar ArgumentOutOfRangeError_1 = require(\"./internal/util/ArgumentOutOfRangeError\");\nObject.defineProperty(exports, \"ArgumentOutOfRangeError\", { enumerable: true, get: function () { return ArgumentOutOfRangeError_1.ArgumentOutOfRangeError; } });\nvar EmptyError_1 = require(\"./internal/util/EmptyError\");\nObject.defineProperty(exports, \"EmptyError\", { enumerable: true, get: function () { return EmptyError_1.EmptyError; } });\nvar NotFoundError_1 = require(\"./internal/util/NotFoundError\");\nObject.defineProperty(exports, \"NotFoundError\", { enumerable: true, get: function () { return NotFoundError_1.NotFoundError; } });\nvar ObjectUnsubscribedError_1 = require(\"./internal/util/ObjectUnsubscribedError\");\nObject.defineProperty(exports, \"ObjectUnsubscribedError\", { enumerable: true, get: function () { return ObjectUnsubscribedError_1.ObjectUnsubscribedError; } });\nvar SequenceError_1 = require(\"./internal/util/SequenceError\");\nObject.defineProperty(exports, \"SequenceError\", { enumerable: true, get: function () { return SequenceError_1.SequenceError; } });\nvar timeout_1 = require(\"./internal/operators/timeout\");\nObject.defineProperty(exports, \"TimeoutError\", { enumerable: true, get: function () { return timeout_1.TimeoutError; } });\nvar UnsubscriptionError_1 = require(\"./internal/util/UnsubscriptionError\");\nObject.defineProperty(exports, \"UnsubscriptionError\", { enumerable: true, get: function () { return UnsubscriptionError_1.UnsubscriptionError; } });\nvar bindCallback_1 = require(\"./internal/observable/bindCallback\");\nObject.defineProperty(exports, \"bindCallback\", { enumerable: true, get: function () { return bindCallback_1.bindCallback; } });\nvar bindNodeCallback_1 = require(\"./internal/observable/bindNodeCallback\");\nObject.defineProperty(exports, \"bindNodeCallback\", { enumerable: true, get: function () { return bindNodeCallback_1.bindNodeCallback; } });\nvar combineLatest_1 = require(\"./internal/observable/combineLatest\");\nObject.defineProperty(exports, \"combineLatest\", { enumerable: true, get: function () { return combineLatest_1.combineLatest; } });\nvar concat_1 = require(\"./internal/observable/concat\");\nObject.defineProperty(exports, \"concat\", { enumerable: true, get: function () { return concat_1.concat; } });\nvar connectable_1 = require(\"./internal/observable/connectable\");\nObject.defineProperty(exports, \"connectable\", { enumerable: true, get: function () { return connectable_1.connectable; } });\nvar defer_1 = require(\"./internal/observable/defer\");\nObject.defineProperty(exports, \"defer\", { enumerable: true, get: function () { return defer_1.defer; } });\nvar empty_1 = require(\"./internal/observable/empty\");\nObject.defineProperty(exports, \"empty\", { enumerable: true, get: function () { return empty_1.empty; } });\nvar forkJoin_1 = require(\"./internal/observable/forkJoin\");\nObject.defineProperty(exports, \"forkJoin\", { enumerable: true, get: function () { return forkJoin_1.forkJoin; } });\nvar from_1 = require(\"./internal/observable/from\");\nObject.defineProperty(exports, \"from\", { enumerable: true, get: function () { return from_1.from; } });\nvar fromEvent_1 = require(\"./internal/observable/fromEvent\");\nObject.defineProperty(exports, \"fromEvent\", { enumerable: true, get: function () { return fromEvent_1.fromEvent; } });\nvar fromEventPattern_1 = require(\"./internal/observable/fromEventPattern\");\nObject.defineProperty(exports, \"fromEventPattern\", { enumerable: true, get: function () { return fromEventPattern_1.fromEventPattern; } });\nvar generate_1 = require(\"./internal/observable/generate\");\nObject.defineProperty(exports, \"generate\", { enumerable: true, get: function () { return generate_1.generate; } });\nvar iif_1 = require(\"./internal/observable/iif\");\nObject.defineProperty(exports, \"iif\", { enumerable: true, get: function () { return iif_1.iif; } });\nvar interval_1 = require(\"./internal/observable/interval\");\nObject.defineProperty(exports, \"interval\", { enumerable: true, get: function () { return interval_1.interval; } });\nvar merge_1 = require(\"./internal/observable/merge\");\nObject.defineProperty(exports, \"merge\", { enumerable: true, get: function () { return merge_1.merge; } });\nvar never_1 = require(\"./internal/observable/never\");\nObject.defineProperty(exports, \"never\", { enumerable: true, get: function () { return never_1.never; } });\nvar of_1 = require(\"./internal/observable/of\");\nObject.defineProperty(exports, \"of\", { enumerable: true, get: function () { return of_1.of; } });\nvar onErrorResumeNext_1 = require(\"./internal/observable/onErrorResumeNext\");\nObject.defineProperty(exports, \"onErrorResumeNext\", { enumerable: true, get: function () { return onErrorResumeNext_1.onErrorResumeNext; } });\nvar pairs_1 = require(\"./internal/observable/pairs\");\nObject.defineProperty(exports, \"pairs\", { enumerable: true, get: function () { return pairs_1.pairs; } });\nvar partition_1 = require(\"./internal/observable/partition\");\nObject.defineProperty(exports, \"partition\", { enumerable: true, get: function () { return partition_1.partition; } });\nvar race_1 = require(\"./internal/observable/race\");\nObject.defineProperty(exports, \"race\", { enumerable: true, get: function () { return race_1.race; } });\nvar range_1 = require(\"./internal/observable/range\");\nObject.defineProperty(exports, \"range\", { enumerable: true, get: function () { return range_1.range; } });\nvar throwError_1 = require(\"./internal/observable/throwError\");\nObject.defineProperty(exports, \"throwError\", { enumerable: true, get: function () { return throwError_1.throwError; } });\nvar timer_1 = require(\"./internal/observable/timer\");\nObject.defineProperty(exports, \"timer\", { enumerable: true, get: function () { return timer_1.timer; } });\nvar using_1 = require(\"./internal/observable/using\");\nObject.defineProperty(exports, \"using\", { enumerable: true, get: function () { return using_1.using; } });\nvar zip_1 = require(\"./internal/observable/zip\");\nObject.defineProperty(exports, \"zip\", { enumerable: true, get: function () { return zip_1.zip; } });\nvar scheduled_1 = require(\"./internal/scheduled/scheduled\");\nObject.defineProperty(exports, \"scheduled\", { enumerable: true, get: function () { return scheduled_1.scheduled; } });\nvar empty_2 = require(\"./internal/observable/empty\");\nObject.defineProperty(exports, \"EMPTY\", { enumerable: true, get: function () { return empty_2.EMPTY; } });\nvar never_2 = require(\"./internal/observable/never\");\nObject.defineProperty(exports, \"NEVER\", { enumerable: true, get: function () { return never_2.NEVER; } });\n__exportStar(require(\"./internal/types\"), exports);\nvar config_1 = require(\"./internal/config\");\nObject.defineProperty(exports, \"config\", { enumerable: true, get: function () { return config_1.config; } });\nvar audit_1 = require(\"./internal/operators/audit\");\nObject.defineProperty(exports, \"audit\", { enumerable: true, get: function () { return audit_1.audit; } });\nvar auditTime_1 = require(\"./internal/operators/auditTime\");\nObject.defineProperty(exports, \"auditTime\", { enumerable: true, get: function () { return auditTime_1.auditTime; } });\nvar buffer_1 = require(\"./internal/operators/buffer\");\nObject.defineProperty(exports, \"buffer\", { enumerable: true, get: function () { return buffer_1.buffer; } });\nvar bufferCount_1 = require(\"./internal/operators/bufferCount\");\nObject.defineProperty(exports, \"bufferCount\", { enumerable: true, get: function () { return bufferCount_1.bufferCount; } });\nvar bufferTime_1 = require(\"./internal/operators/bufferTime\");\nObject.defineProperty(exports, \"bufferTime\", { enumerable: true, get: function () { return bufferTime_1.bufferTime; } });\nvar bufferToggle_1 = require(\"./internal/operators/bufferToggle\");\nObject.defineProperty(exports, \"bufferToggle\", { enumerable: true, get: function () { return bufferToggle_1.bufferToggle; } });\nvar bufferWhen_1 = require(\"./internal/operators/bufferWhen\");\nObject.defineProperty(exports, \"bufferWhen\", { enumerable: true, get: function () { return bufferWhen_1.bufferWhen; } });\nvar catchError_1 = require(\"./internal/operators/catchError\");\nObject.defineProperty(exports, \"catchError\", { enumerable: true, get: function () { return catchError_1.catchError; } });\nvar combineAll_1 = require(\"./internal/operators/combineAll\");\nObject.defineProperty(exports, \"combineAll\", { enumerable: true, get: function () { return combineAll_1.combineAll; } });\nvar combineLatestAll_1 = require(\"./internal/operators/combineLatestAll\");\nObject.defineProperty(exports, \"combineLatestAll\", { enumerable: true, get: function () { return combineLatestAll_1.combineLatestAll; } });\nvar combineLatestWith_1 = require(\"./internal/operators/combineLatestWith\");\nObject.defineProperty(exports, \"combineLatestWith\", { enumerable: true, get: function () { return combineLatestWith_1.combineLatestWith; } });\nvar concatAll_1 = require(\"./internal/operators/concatAll\");\nObject.defineProperty(exports, \"concatAll\", { enumerable: true, get: function () { return concatAll_1.concatAll; } });\nvar concatMap_1 = require(\"./internal/operators/concatMap\");\nObject.defineProperty(exports, \"concatMap\", { enumerable: true, get: function () { return concatMap_1.concatMap; } });\nvar concatMapTo_1 = require(\"./internal/operators/concatMapTo\");\nObject.defineProperty(exports, \"concatMapTo\", { enumerable: true, get: function () { return concatMapTo_1.concatMapTo; } });\nvar concatWith_1 = require(\"./internal/operators/concatWith\");\nObject.defineProperty(exports, \"concatWith\", { enumerable: true, get: function () { return concatWith_1.concatWith; } });\nvar connect_1 = require(\"./internal/operators/connect\");\nObject.defineProperty(exports, \"connect\", { enumerable: true, get: function () { return connect_1.connect; } });\nvar count_1 = require(\"./internal/operators/count\");\nObject.defineProperty(exports, \"count\", { enumerable: true, get: function () { return count_1.count; } });\nvar debounce_1 = require(\"./internal/operators/debounce\");\nObject.defineProperty(exports, \"debounce\", { enumerable: true, get: function () { return debounce_1.debounce; } });\nvar debounceTime_1 = require(\"./internal/operators/debounceTime\");\nObject.defineProperty(exports, \"debounceTime\", { enumerable: true, get: function () { return debounceTime_1.debounceTime; } });\nvar defaultIfEmpty_1 = require(\"./internal/operators/defaultIfEmpty\");\nObject.defineProperty(exports, \"defaultIfEmpty\", { enumerable: true, get: function () { return defaultIfEmpty_1.defaultIfEmpty; } });\nvar delay_1 = require(\"./internal/operators/delay\");\nObject.defineProperty(exports, \"delay\", { enumerable: true, get: function () { return delay_1.delay; } });\nvar delayWhen_1 = require(\"./internal/operators/delayWhen\");\nObject.defineProperty(exports, \"delayWhen\", { enumerable: true, get: function () { return delayWhen_1.delayWhen; } });\nvar dematerialize_1 = require(\"./internal/operators/dematerialize\");\nObject.defineProperty(exports, \"dematerialize\", { enumerable: true, get: function () { return dematerialize_1.dematerialize; } });\nvar distinct_1 = require(\"./internal/operators/distinct\");\nObject.defineProperty(exports, \"distinct\", { enumerable: true, get: function () { return distinct_1.distinct; } });\nvar distinctUntilChanged_1 = require(\"./internal/operators/distinctUntilChanged\");\nObject.defineProperty(exports, \"distinctUntilChanged\", { enumerable: true, get: function () { return distinctUntilChanged_1.distinctUntilChanged; } });\nvar distinctUntilKeyChanged_1 = require(\"./internal/operators/distinctUntilKeyChanged\");\nObject.defineProperty(exports, \"distinctUntilKeyChanged\", { enumerable: true, get: function () { return distinctUntilKeyChanged_1.distinctUntilKeyChanged; } });\nvar elementAt_1 = require(\"./internal/operators/elementAt\");\nObject.defineProperty(exports, \"elementAt\", { enumerable: true, get: function () { return elementAt_1.elementAt; } });\nvar endWith_1 = require(\"./internal/operators/endWith\");\nObject.defineProperty(exports, \"endWith\", { enumerable: true, get: function () { return endWith_1.endWith; } });\nvar every_1 = require(\"./internal/operators/every\");\nObject.defineProperty(exports, \"every\", { enumerable: true, get: function () { return every_1.every; } });\nvar exhaust_1 = require(\"./internal/operators/exhaust\");\nObject.defineProperty(exports, \"exhaust\", { enumerable: true, get: function () { return exhaust_1.exhaust; } });\nvar exhaustAll_1 = require(\"./internal/operators/exhaustAll\");\nObject.defineProperty(exports, \"exhaustAll\", { enumerable: true, get: function () { return exhaustAll_1.exhaustAll; } });\nvar exhaustMap_1 = require(\"./internal/operators/exhaustMap\");\nObject.defineProperty(exports, \"exhaustMap\", { enumerable: true, get: function () { return exhaustMap_1.exhaustMap; } });\nvar expand_1 = require(\"./internal/operators/expand\");\nObject.defineProperty(exports, \"expand\", { enumerable: true, get: function () { return expand_1.expand; } });\nvar filter_1 = require(\"./internal/operators/filter\");\nObject.defineProperty(exports, \"filter\", { enumerable: true, get: function () { return filter_1.filter; } });\nvar finalize_1 = require(\"./internal/operators/finalize\");\nObject.defineProperty(exports, \"finalize\", { enumerable: true, get: function () { return finalize_1.finalize; } });\nvar find_1 = require(\"./internal/operators/find\");\nObject.defineProperty(exports, \"find\", { enumerable: true, get: function () { return find_1.find; } });\nvar findIndex_1 = require(\"./internal/operators/findIndex\");\nObject.defineProperty(exports, \"findIndex\", { enumerable: true, get: function () { return findIndex_1.findIndex; } });\nvar first_1 = require(\"./internal/operators/first\");\nObject.defineProperty(exports, \"first\", { enumerable: true, get: function () { return first_1.first; } });\nvar groupBy_1 = require(\"./internal/operators/groupBy\");\nObject.defineProperty(exports, \"groupBy\", { enumerable: true, get: function () { return groupBy_1.groupBy; } });\nvar ignoreElements_1 = require(\"./internal/operators/ignoreElements\");\nObject.defineProperty(exports, \"ignoreElements\", { enumerable: true, get: function () { return ignoreElements_1.ignoreElements; } });\nvar isEmpty_1 = require(\"./internal/operators/isEmpty\");\nObject.defineProperty(exports, \"isEmpty\", { enumerable: true, get: function () { return isEmpty_1.isEmpty; } });\nvar last_1 = require(\"./internal/operators/last\");\nObject.defineProperty(exports, \"last\", { enumerable: true, get: function () { return last_1.last; } });\nvar map_1 = require(\"./internal/operators/map\");\nObject.defineProperty(exports, \"map\", { enumerable: true, get: function () { return map_1.map; } });\nvar mapTo_1 = require(\"./internal/operators/mapTo\");\nObject.defineProperty(exports, \"mapTo\", { enumerable: true, get: function () { return mapTo_1.mapTo; } });\nvar materialize_1 = require(\"./internal/operators/materialize\");\nObject.defineProperty(exports, \"materialize\", { enumerable: true, get: function () { return materialize_1.materialize; } });\nvar max_1 = require(\"./internal/operators/max\");\nObject.defineProperty(exports, \"max\", { enumerable: true, get: function () { return max_1.max; } });\nvar mergeAll_1 = require(\"./internal/operators/mergeAll\");\nObject.defineProperty(exports, \"mergeAll\", { enumerable: true, get: function () { return mergeAll_1.mergeAll; } });\nvar flatMap_1 = require(\"./internal/operators/flatMap\");\nObject.defineProperty(exports, \"flatMap\", { enumerable: true, get: function () { return flatMap_1.flatMap; } });\nvar mergeMap_1 = require(\"./internal/operators/mergeMap\");\nObject.defineProperty(exports, \"mergeMap\", { enumerable: true, get: function () { return mergeMap_1.mergeMap; } });\nvar mergeMapTo_1 = require(\"./internal/operators/mergeMapTo\");\nObject.defineProperty(exports, \"mergeMapTo\", { enumerable: true, get: function () { return mergeMapTo_1.mergeMapTo; } });\nvar mergeScan_1 = require(\"./internal/operators/mergeScan\");\nObject.defineProperty(exports, \"mergeScan\", { enumerable: true, get: function () { return mergeScan_1.mergeScan; } });\nvar mergeWith_1 = require(\"./internal/operators/mergeWith\");\nObject.defineProperty(exports, \"mergeWith\", { enumerable: true, get: function () { return mergeWith_1.mergeWith; } });\nvar min_1 = require(\"./internal/operators/min\");\nObject.defineProperty(exports, \"min\", { enumerable: true, get: function () { return min_1.min; } });\nvar multicast_1 = require(\"./internal/operators/multicast\");\nObject.defineProperty(exports, \"multicast\", { enumerable: true, get: function () { return multicast_1.multicast; } });\nvar observeOn_1 = require(\"./internal/operators/observeOn\");\nObject.defineProperty(exports, \"observeOn\", { enumerable: true, get: function () { return observeOn_1.observeOn; } });\nvar onErrorResumeNextWith_1 = require(\"./internal/operators/onErrorResumeNextWith\");\nObject.defineProperty(exports, \"onErrorResumeNextWith\", { enumerable: true, get: function () { return onErrorResumeNextWith_1.onErrorResumeNextWith; } });\nvar pairwise_1 = require(\"./internal/operators/pairwise\");\nObject.defineProperty(exports, \"pairwise\", { enumerable: true, get: function () { return pairwise_1.pairwise; } });\nvar pluck_1 = require(\"./internal/operators/pluck\");\nObject.defineProperty(exports, \"pluck\", { enumerable: true, get: function () { return pluck_1.pluck; } });\nvar publish_1 = require(\"./internal/operators/publish\");\nObject.defineProperty(exports, \"publish\", { enumerable: true, get: function () { return publish_1.publish; } });\nvar publishBehavior_1 = require(\"./internal/operators/publishBehavior\");\nObject.defineProperty(exports, \"publishBehavior\", { enumerable: true, get: function () { return publishBehavior_1.publishBehavior; } });\nvar publishLast_1 = require(\"./internal/operators/publishLast\");\nObject.defineProperty(exports, \"publishLast\", { enumerable: true, get: function () { return publishLast_1.publishLast; } });\nvar publishReplay_1 = require(\"./internal/operators/publishReplay\");\nObject.defineProperty(exports, \"publishReplay\", { enumerable: true, get: function () { return publishReplay_1.publishReplay; } });\nvar raceWith_1 = require(\"./internal/operators/raceWith\");\nObject.defineProperty(exports, \"raceWith\", { enumerable: true, get: function () { return raceWith_1.raceWith; } });\nvar reduce_1 = require(\"./internal/operators/reduce\");\nObject.defineProperty(exports, \"reduce\", { enumerable: true, get: function () { return reduce_1.reduce; } });\nvar repeat_1 = require(\"./internal/operators/repeat\");\nObject.defineProperty(exports, \"repeat\", { enumerable: true, get: function () { return repeat_1.repeat; } });\nvar repeatWhen_1 = require(\"./internal/operators/repeatWhen\");\nObject.defineProperty(exports, \"repeatWhen\", { enumerable: true, get: function () { return repeatWhen_1.repeatWhen; } });\nvar retry_1 = require(\"./internal/operators/retry\");\nObject.defineProperty(exports, \"retry\", { enumerable: true, get: function () { return retry_1.retry; } });\nvar retryWhen_1 = require(\"./internal/operators/retryWhen\");\nObject.defineProperty(exports, \"retryWhen\", { enumerable: true, get: function () { return retryWhen_1.retryWhen; } });\nvar refCount_1 = require(\"./internal/operators/refCount\");\nObject.defineProperty(exports, \"refCount\", { enumerable: true, get: function () { return refCount_1.refCount; } });\nvar sample_1 = require(\"./internal/operators/sample\");\nObject.defineProperty(exports, \"sample\", { enumerable: true, get: function () { return sample_1.sample; } });\nvar sampleTime_1 = require(\"./internal/operators/sampleTime\");\nObject.defineProperty(exports, \"sampleTime\", { enumerable: true, get: function () { return sampleTime_1.sampleTime; } });\nvar scan_1 = require(\"./internal/operators/scan\");\nObject.defineProperty(exports, \"scan\", { enumerable: true, get: function () { return scan_1.scan; } });\nvar sequenceEqual_1 = require(\"./internal/operators/sequenceEqual\");\nObject.defineProperty(exports, \"sequenceEqual\", { enumerable: true, get: function () { return sequenceEqual_1.sequenceEqual; } });\nvar share_1 = require(\"./internal/operators/share\");\nObject.defineProperty(exports, \"share\", { enumerable: true, get: function () { return share_1.share; } });\nvar shareReplay_1 = require(\"./internal/operators/shareReplay\");\nObject.defineProperty(exports, \"shareReplay\", { enumerable: true, get: function () { return shareReplay_1.shareReplay; } });\nvar single_1 = require(\"./internal/operators/single\");\nObject.defineProperty(exports, \"single\", { enumerable: true, get: function () { return single_1.single; } });\nvar skip_1 = require(\"./internal/operators/skip\");\nObject.defineProperty(exports, \"skip\", { enumerable: true, get: function () { return skip_1.skip; } });\nvar skipLast_1 = require(\"./internal/operators/skipLast\");\nObject.defineProperty(exports, \"skipLast\", { enumerable: true, get: function () { return skipLast_1.skipLast; } });\nvar skipUntil_1 = require(\"./internal/operators/skipUntil\");\nObject.defineProperty(exports, \"skipUntil\", { enumerable: true, get: function () { return skipUntil_1.skipUntil; } });\nvar skipWhile_1 = require(\"./internal/operators/skipWhile\");\nObject.defineProperty(exports, \"skipWhile\", { enumerable: true, get: function () { return skipWhile_1.skipWhile; } });\nvar startWith_1 = require(\"./internal/operators/startWith\");\nObject.defineProperty(exports, \"startWith\", { enumerable: true, get: function () { return startWith_1.startWith; } });\nvar subscribeOn_1 = require(\"./internal/operators/subscribeOn\");\nObject.defineProperty(exports, \"subscribeOn\", { enumerable: true, get: function () { return subscribeOn_1.subscribeOn; } });\nvar switchAll_1 = require(\"./internal/operators/switchAll\");\nObject.defineProperty(exports, \"switchAll\", { enumerable: true, get: function () { return switchAll_1.switchAll; } });\nvar switchMap_1 = require(\"./internal/operators/switchMap\");\nObject.defineProperty(exports, \"switchMap\", { enumerable: true, get: function () { return switchMap_1.switchMap; } });\nvar switchMapTo_1 = require(\"./internal/operators/switchMapTo\");\nObject.defineProperty(exports, \"switchMapTo\", { enumerable: true, get: function () { return switchMapTo_1.switchMapTo; } });\nvar switchScan_1 = require(\"./internal/operators/switchScan\");\nObject.defineProperty(exports, \"switchScan\", { enumerable: true, get: function () { return switchScan_1.switchScan; } });\nvar take_1 = require(\"./internal/operators/take\");\nObject.defineProperty(exports, \"take\", { enumerable: true, get: function () { return take_1.take; } });\nvar takeLast_1 = require(\"./internal/operators/takeLast\");\nObject.defineProperty(exports, \"takeLast\", { enumerable: true, get: function () { return takeLast_1.takeLast; } });\nvar takeUntil_1 = require(\"./internal/operators/takeUntil\");\nObject.defineProperty(exports, \"takeUntil\", { enumerable: true, get: function () { return takeUntil_1.takeUntil; } });\nvar takeWhile_1 = require(\"./internal/operators/takeWhile\");\nObject.defineProperty(exports, \"takeWhile\", { enumerable: true, get: function () { return takeWhile_1.takeWhile; } });\nvar tap_1 = require(\"./internal/operators/tap\");\nObject.defineProperty(exports, \"tap\", { enumerable: true, get: function () { return tap_1.tap; } });\nvar throttle_1 = require(\"./internal/operators/throttle\");\nObject.defineProperty(exports, \"throttle\", { enumerable: true, get: function () { return throttle_1.throttle; } });\nvar throttleTime_1 = require(\"./internal/operators/throttleTime\");\nObject.defineProperty(exports, \"throttleTime\", { enumerable: true, get: function () { return throttleTime_1.throttleTime; } });\nvar throwIfEmpty_1 = require(\"./internal/operators/throwIfEmpty\");\nObject.defineProperty(exports, \"throwIfEmpty\", { enumerable: true, get: function () { return throwIfEmpty_1.throwIfEmpty; } });\nvar timeInterval_1 = require(\"./internal/operators/timeInterval\");\nObject.defineProperty(exports, \"timeInterval\", { enumerable: true, get: function () { return timeInterval_1.timeInterval; } });\nvar timeout_2 = require(\"./internal/operators/timeout\");\nObject.defineProperty(exports, \"timeout\", { enumerable: true, get: function () { return timeout_2.timeout; } });\nvar timeoutWith_1 = require(\"./internal/operators/timeoutWith\");\nObject.defineProperty(exports, \"timeoutWith\", { enumerable: true, get: function () { return timeoutWith_1.timeoutWith; } });\nvar timestamp_1 = require(\"./internal/operators/timestamp\");\nObject.defineProperty(exports, \"timestamp\", { enumerable: true, get: function () { return timestamp_1.timestamp; } });\nvar toArray_1 = require(\"./internal/operators/toArray\");\nObject.defineProperty(exports, \"toArray\", { enumerable: true, get: function () { return toArray_1.toArray; } });\nvar window_1 = require(\"./internal/operators/window\");\nObject.defineProperty(exports, \"window\", { enumerable: true, get: function () { return window_1.window; } });\nvar windowCount_1 = require(\"./internal/operators/windowCount\");\nObject.defineProperty(exports, \"windowCount\", { enumerable: true, get: function () { return windowCount_1.windowCount; } });\nvar windowTime_1 = require(\"./internal/operators/windowTime\");\nObject.defineProperty(exports, \"windowTime\", { enumerable: true, get: function () { return windowTime_1.windowTime; } });\nvar windowToggle_1 = require(\"./internal/operators/windowToggle\");\nObject.defineProperty(exports, \"windowToggle\", { enumerable: true, get: function () { return windowToggle_1.windowToggle; } });\nvar windowWhen_1 = require(\"./internal/operators/windowWhen\");\nObject.defineProperty(exports, \"windowWhen\", { enumerable: true, get: function () { return windowWhen_1.windowWhen; } });\nvar withLatestFrom_1 = require(\"./internal/operators/withLatestFrom\");\nObject.defineProperty(exports, \"withLatestFrom\", { enumerable: true, get: function () { return withLatestFrom_1.withLatestFrom; } });\nvar zipAll_1 = require(\"./internal/operators/zipAll\");\nObject.defineProperty(exports, \"zipAll\", { enumerable: true, get: function () { return zipAll_1.zipAll; } });\nvar zipWith_1 = require(\"./internal/operators/zipWith\");\nObject.defineProperty(exports, \"zipWith\", { enumerable: true, get: function () { return zipWith_1.zipWith; } });\n//# sourceMappingURL=index.js.map","import type { Event, GroupMessage, CreateGroupOptions, ShareCredentialMessage } from './types.js';\nimport { IndexedDBGroupStateBackend, IndexedDBKeyPackageStore, IndexedDBKeyValueBackend } from './group-storage.js';\nimport {\n Observable,\n Subscription,\n merge,\n from,\n EMPTY,\n exhaustMap,\n tap,\n map,\n filter,\n share,\n BehaviorSubject,\n switchMap,\n} from 'rxjs';\n\nlet MarmotClientClass: any = null;\nlet InviteReaderClass: any = null;\nlet deserializeApplicationRumorFn: any = null;\nlet KEY_PACKAGE_KIND: number = 443;\nlet GIFT_WRAP_KIND: number = 1059;\nlet loadPromise: Promise<void> | null = null;\n\nasync function loadMarmotModules(): Promise<void> {\n if (MarmotClientClass) return;\n if (loadPromise) return loadPromise;\n\n loadPromise = (async () => {\n try {\n const marmot = await import('@internet-privacy/marmot-ts');\n MarmotClientClass = marmot.MarmotClient;\n InviteReaderClass = marmot.InviteReader;\n deserializeApplicationRumorFn = marmot.deserializeApplicationRumor;\n KEY_PACKAGE_KIND = marmot.KEY_PACKAGE_KIND ?? 443;\n GIFT_WRAP_KIND = 1059;\n } catch {\n throw new Error(\n 'Group messaging requires @internet-privacy/marmot-ts as a peer dependency. ' +\n 'Install it with: npm install @internet-privacy/marmot-ts'\n );\n }\n })();\n\n return loadPromise;\n}\n\ninterface IngestRecord {\n kind: string;\n eventId: string;\n groupId: string;\n timestamp: number;\n}\n\ninterface UnreadState {\n lastMessageAt: number;\n lastSeenAt: number;\n}\n\nexport class GroupManager {\n #client: any = null;\n #signer: any;\n #network: any;\n #relays: string[];\n #subscriptions: Map<string, Subscription> = new Map();\n #dbName: string;\n #running = false;\n #mainSubscriptions: Subscription[] = [];\n #processedEventIds = new Map<string, Set<string>>();\n #ingestResults = new Map<string, BehaviorSubject<IngestRecord[]>>();\n #messageHandlers: Set<(msg: GroupMessage) => void> = new Set();\n #live$: Observable<any> | null = null;\n #ingest$: Observable<any> | null = null;\n #inviteReader: any = null;\n #inviteSubscription: Subscription | null = null;\n #keyPackageSubscription: Subscription | null = null;\n #unreadState = new Map<string, UnreadState>();\n #unreadGroupIds$ = new BehaviorSubject<string[]>([]);\n #unreadStore: IndexedDBKeyValueBackend | null = null;\n #groupChangeHandlers: Set<(event: { type: 'created' | 'joined'; group: any }) => void> = new Set();\n\n constructor(options: {\n signer: any;\n network: any;\n relays: string[];\n dbName?: string;\n }) {\n if (!options.relays || options.relays.length === 0) {\n throw new Error('At least one relay URL is required for group messaging.');\n }\n this.#signer = options.signer;\n this.#network = options.network;\n this.#relays = options.relays;\n this.#dbName = options.dbName || 'group';\n }\n\nasync initialize(): Promise<void> {\n await loadMarmotModules();\n\n const groupStateStore = new IndexedDBGroupStateBackend(this.#dbName);\n const keyPackageBackend = new IndexedDBKeyPackageStore(this.#dbName);\n\n this.#client = new MarmotClientClass({\n signer: this.#signer,\n network: this.#network,\n groupStateStore,\n keyPackageBackend,\n });\n\n this.#unreadStore = new IndexedDBKeyValueBackend(this.#dbName, 'marmot-unread');\n}\n\n getClient(): any {\n if (!this.#client) {\n throw new Error('GroupManager not initialized. Call initialize() first.');\n }\n return this.#client;\n }\n\n getInviteReader(): any {\n if (!this.#inviteReader) {\n throw new Error('InviteReader not initialized. Call start() first.');\n }\n return this.#inviteReader;\n }\n\n /**\n * Observable of unread group IDs.\n * Emits whenever the unread state changes.\n */\n get unreadGroupIds$(): BehaviorSubject<string[]> {\n return this.#unreadGroupIds$;\n }\n\n async createGroup(name: string, options: CreateGroupOptions = {}): Promise<any> {\n const client = this.getClient();\n\n const group = await client.createGroup(name, {\n description: options.description,\n adminPubkeys: options.adminPubkeys,\n relays: options.relays || this.#relays,\n });\n\n try {\n await group.selfUpdate();\n } catch {\n // Non-critical — group is still usable\n }\n\n this.#notifyGroupChange({ type: 'created', group });\n return group;\n }\n\n onGroupChange(handler: (event: { type: 'created' | 'joined'; group: any }) => void): () => void {\n this.#groupChangeHandlers.add(handler);\n return () => this.#groupChangeHandlers.delete(handler);\n }\n\n #notifyGroupChange(event: { type: 'created' | 'joined'; group: any }): void {\n for (const handler of this.#groupChangeHandlers) {\n try {\n handler(event);\n } catch {\n // Non-critical\n }\n }\n }\n\n async joinGroupFromWelcome(welcomeRumor: any): Promise<any> {\n const client = this.getClient();\n\n const result = await client.joinGroupFromWelcome({ welcomeRumor });\n\n try {\n await result.group.selfUpdate();\n } catch {\n // Non-critical — group is still usable\n }\n\n this.#notifyGroupChange({ type: 'joined', group: result.group });\n return result.group;\n }\n\n async inviteMember(group: any, _memberPubkey: string): Promise<void> {\n this.getClient();\n\n const keyPackageEvent = await this.#fetchKeyPackageEvent(_memberPubkey);\n if (!keyPackageEvent) {\n throw new Error(`No key package found for member ${_memberPubkey}. They must publish one first.`);\n }\n\n await group.inviteByKeyPackageEvent(keyPackageEvent);\n }\n\n async sendMessage(group: any, content: string, kind: number = 9): Promise<void> {\n const rumor: Event = {\n kind,\n content,\n created_at: Math.floor(Date.now() / 1000),\n tags: [],\n };\n\n await group.sendApplicationRumor(rumor);\n }\n\n async sendShareToMember(group: any, _memberPubkey: string, shareCredential: string, groupCredential: string, relays: string[]): Promise<void> {\n const message: ShareCredentialMessage = {\n type: 'share-credential',\n shareCredential,\n groupCredential,\n relays,\n timestamp: Date.now(),\n };\n\n await this.sendMessage(group, JSON.stringify(message));\n }\n\n onMessage(handler: (msg: GroupMessage) => void): () => void {\n this.#messageHandlers.add(handler);\n\n return () => {\n this.#messageHandlers.delete(handler);\n };\n }\n\n parseGroupMessage(message: GroupMessage): ShareCredentialMessage | { type: 'signing-request'; description: string } | null {\n try {\n const parsed = JSON.parse(message.content);\n\n if (parsed.type === 'share-credential') {\n return parsed as ShareCredentialMessage;\n }\n\n if (parsed.type === 'signing-request') {\n return { type: 'signing-request', description: parsed.description || '' };\n }\n } catch {\n // Not a structured message\n }\n\n return null;\n }\n\n async getGroups(): Promise<any[]> {\n const client = this.getClient();\n return await client.loadAllGroups();\n }\n\n async leaveGroup(groupId: Uint8Array | string): Promise<void> {\n const client = this.getClient();\n await client.leaveGroup(groupId);\n }\n\n async destroyGroup(groupId: Uint8Array | string): Promise<void> {\n const client = this.getClient();\n await client.destroyGroup(groupId);\n }\n\n /**\n * Mark a group as read — clears the unread state up to the given timestamp.\n * @param groupIdHex Group ID (hex string)\n * @param seenAt Timestamp to mark as seen (seconds since epoch, defaults to now)\n */\n async markGroupSeen(groupIdHex: string, seenAt?: number): Promise<void> {\n const timestamp = seenAt ?? Math.floor(Date.now() / 1000);\n const state = this.#unreadState.get(groupIdHex) ?? { lastMessageAt: 0, lastSeenAt: 0 };\n state.lastSeenAt = Math.max(state.lastSeenAt, timestamp);\n this.#unreadState.set(groupIdHex, state);\n\n await this.#persistUnreadState(groupIdHex, state);\n this.#recomputeUnreadGroupIds();\n }\n\n /**\n * Start the full event pipeline: ingestion, invite sync, and key package tracking.\n * Must be called after initialize() and before any group operations that expect incoming messages.\n */\n async start(): Promise<void> {\n if (this.#running) return;\n this.#running = true;\n\n await loadMarmotModules();\n\n // Initialize InviteReader\n this.getClient();\n const inviteStore = {\n received: new IndexedDBKeyValueBackend(this.#dbName, 'marmot-invites-received'),\n unread: new IndexedDBKeyValueBackend(this.#dbName, 'marmot-invites-unread'),\n seen: new IndexedDBKeyValueBackend(this.#dbName, 'marmot-invites-seen'),\n };\n this.#inviteReader = new InviteReaderClass({\n signer: this.#signer,\n store: inviteStore,\n });\n\n // Load persisted unread state\n await this.#loadUnreadState();\n\n // Load persisted processed event IDs\n await this.#loadProcessedEventIds();\n\n // Setup ingestion pipeline\n await this.#setupIngestionPipeline();\n\n // Start live event stream\n if (this.#live$) {\n this.#mainSubscriptions.push(this.#live$.subscribe());\n }\n\n // Start ingestion stream\n if (this.#ingest$) {\n this.#mainSubscriptions.push(this.#ingest$.subscribe());\n }\n\n // Start invite sync\n this.#startInviteSync();\n\n // Start key package tracking\n this.#startKeyPackageTracking();\n }\n\n /**\n * Stop all subscriptions and clean up resources.\n */\n stop(): void {\n this.#running = false;\n\n for (const sub of this.#mainSubscriptions) {\n sub.unsubscribe();\n }\n this.#mainSubscriptions = [];\n\n for (const [_id, sub] of this.#subscriptions) {\n sub.unsubscribe();\n }\n this.#subscriptions.clear();\n\n this.#inviteSubscription?.unsubscribe();\n this.#inviteSubscription = null;\n\n this.#keyPackageSubscription?.unsubscribe();\n this.#keyPackageSubscription = null;\n\n this.#ingestResults.forEach((s) => s.complete());\n this.#ingestResults.clear();\n this.#processedEventIds.clear();\n this.#live$ = null;\n this.#ingest$ = null;\n this.#inviteReader = null;\n }\n\n close(): void {\n this.stop();\n }\n\n // ---------------------------------------------------------------------------\n // Invite Sync\n // ---------------------------------------------------------------------------\n\n #startInviteSync(): void {\n if (!this.#inviteReader) return;\n\n const pubkey = this.#signer?.pubkey;\n if (!pubkey) return;\n\n // Historical: last 2 weeks of gift wraps\n const historical$ = (from(\n this.#network.request(this.#relays, {\n kinds: [GIFT_WRAP_KIND],\n '#p': [pubkey],\n since: Math.floor(Date.now() / 1000) - 60 * 60 * 24 * 7 * 2,\n })\n ) as Observable<any[]>).pipe(\n map((events: any[]) => events ?? []),\n tap((events: any[]) => {\n for (const event of events) {\n this.#inviteReader.ingestEvent(event);\n }\n }),\n );\n\n // Live: ongoing subscription\n const live$ = this.#network.subscription(this.#relays, {\n kinds: [GIFT_WRAP_KIND],\n '#p': [pubkey],\n }).pipe(\n tap((event: any) => {\n this.#inviteReader.ingestEvent(event);\n }),\n );\n\n this.#inviteSubscription = merge(historical$, live$).subscribe();\n }\n\n /**\n * Decrypt pending gift wraps and process invites.\n * Call this after user interaction to trigger decryption prompts.\n */\n async processInvites(): Promise<void> {\n if (!this.#inviteReader) return;\n\n await this.#inviteReader.decryptGiftWraps();\n\n const unread = await this.#inviteReader.getUnread();\n for (const invite of unread) {\n try {\n await this.joinGroupFromWelcome(invite);\n await this.#inviteReader.markAsRead(invite.id);\n } catch (err) {\n console.error('[GroupManager] Failed to process invite:', err);\n }\n }\n }\n\n // ---------------------------------------------------------------------------\n // Key Package Tracking\n // ---------------------------------------------------------------------------\n\n #startKeyPackageTracking(): void {\n const client = this.getClient();\n const pubkey = this.#signer?.pubkey;\n if (!pubkey || !client) return;\n\n const filters = [\n { kinds: [KEY_PACKAGE_KIND], authors: [pubkey] },\n { kinds: [5], '#k': [String(KEY_PACKAGE_KIND)], authors: [pubkey] },\n ];\n\n this.#keyPackageSubscription = this.#network.subscription(this.#relays, filters).pipe(\n tap((event: any) => {\n client.keyPackages.track(event);\n }),\n ).subscribe();\n }\n\n // ---------------------------------------------------------------------------\n // Ingestion Pipeline\n // ---------------------------------------------------------------------------\n\n async #setupIngestionPipeline(): Promise<void> {\n const client = this.getClient();\n\n this.#live$ = (from(client.watchGroups()) as Observable<any[]>).pipe(\n switchMap(async (groups: any[]) => {\n const validGroups = (groups ?? []).filter((g: any) => g.relays && g.groupData);\n if (validGroups.length === 0) return EMPTY;\n\n return merge(\n ...validGroups.map((group: any) => {\n const groupIdTag = group.groupData.nostrGroupId;\n\n return this.#network.subscription(group.relays, {\n kinds: [445],\n '#h': [groupIdTag],\n }).pipe(\n filter((event: any) => event.kind === 445),\n tap((event: any) => {\n const processed = this.#getProcessedEventIds(group.idStr);\n processed.add(event.id);\n }),\n );\n })\n );\n }),\n switchMap((merged$: Observable<any>) => merged$),\n share(),\n );\n\n this.#ingest$ = (from(client.watchGroups()) as Observable<any[]>).pipe(\n switchMap(async (groups: any[]) => {\n const validGroups = (groups ?? []).filter((g: any) => g.relays && g.groupData);\n if (validGroups.length === 0) return EMPTY;\n\n return merge(\n ...validGroups.map((group: any) => {\n const groupIdHex = group.idStr;\n const groupIdTag = group.groupData.nostrGroupId;\n const processed = this.#getProcessedEventIds(groupIdHex);\n\n return this.#network.subscription(group.relays, {\n kinds: [445],\n '#h': [groupIdTag],\n }).pipe(\n filter((event: any) => event.kind === 445 && !processed.has(event.id)),\n exhaustMap((events: any) => {\n const eventArray = Array.isArray(events) ? events : [events];\n const newEvents = eventArray.filter((e: any) => !processed.has(e.id));\n if (newEvents.length === 0) return EMPTY;\n\n return from(group.ingest(newEvents));\n }),\n tap((result: any) => {\n processed.add(result.event.id);\n\n const record: IngestRecord = {\n kind: result.kind,\n eventId: result.event.id,\n groupId: groupIdHex,\n timestamp: Date.now(),\n };\n\n const log$ = this.#getIngestResults$(groupIdHex);\n log$.next([...log$.getValue(), record]);\n\n // Persist processed event ID\n void this.#persistProcessedEventId(groupIdHex, result.event.id);\n\n // Track unread for application messages\n if (result.kind === 'processed' && result.result?.kind === 'applicationMessage') {\n this.#dispatchApplicationMessage(result.result.message, group);\n }\n }),\n );\n })\n );\n }),\n switchMap((merged$: Observable<any>) => merged$),\n );\n }\n\n // ---------------------------------------------------------------------------\n // Application Message Dispatch\n // ---------------------------------------------------------------------------\n\n #dispatchApplicationMessage(messageBytes: Uint8Array, group: any): void {\n try {\n if (!deserializeApplicationRumorFn) {\n return;\n }\n const rumor = deserializeApplicationRumorFn(messageBytes);\n\n const groupIdHex = group.idStr;\n const state = this.#unreadState.get(groupIdHex) ?? { lastMessageAt: 0, lastSeenAt: 0 };\n\n if (rumor.created_at > state.lastMessageAt) {\n state.lastMessageAt = rumor.created_at;\n this.#unreadState.set(groupIdHex, state);\n void this.#persistUnreadState(groupIdHex, state);\n this.#recomputeUnreadGroupIds();\n }\n\n const groupMessage: GroupMessage = {\n groupId: group.id,\n senderPubkey: rumor.pubkey || '',\n content: rumor.content || '',\n kind: rumor.kind || 0,\n timestamp: rumor.created_at || 0,\n tags: rumor.tags || [],\n };\n\n this.#messageHandlers.forEach((handler) => {\n handler(groupMessage);\n });\n } catch (err) {\n console.error('[GroupManager] Failed to parse application message:', err);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Unread State Management\n // ---------------------------------------------------------------------------\n\n #recomputeUnreadGroupIds(): void {\n const unread: string[] = [];\n for (const [groupIdHex, state] of this.#unreadState) {\n if (state.lastMessageAt > state.lastSeenAt) {\n unread.push(groupIdHex);\n }\n }\n unread.sort();\n this.#unreadGroupIds$.next(unread);\n }\n\n async #persistUnreadState(groupIdHex: string, state: UnreadState): Promise<void> {\n if (!this.#unreadStore) return;\n try {\n await this.#unreadStore.setItem(`unread:${groupIdHex}`, state);\n } catch {\n // Non-critical\n }\n }\n\n async #loadUnreadState(): Promise<void> {\n if (!this.#unreadStore) return;\n try {\n const keys = await this.#unreadStore.keys();\n for (const key of keys) {\n if (key.startsWith('unread:')) {\n const groupIdHex = key.replace('unread:', '');\n const state = await this.#unreadStore.getItem<UnreadState>(key);\n if (state) {\n this.#unreadState.set(groupIdHex, state);\n }\n }\n }\n } catch {\n // Non-critical\n }\n }\n\n // ---------------------------------------------------------------------------\n // Persistent Processed Event IDs\n // ---------------------------------------------------------------------------\n\n async #persistProcessedEventId(groupIdHex: string, eventId: string): Promise<void> {\n if (!this.#unreadStore) return;\n try {\n await this.#unreadStore.setItem(`processed:${groupIdHex}:${eventId}`, true);\n } catch {\n // Non-critical\n }\n }\n\n async #loadProcessedEventIds(): Promise<void> {\n if (!this.#unreadStore) return;\n try {\n const keys = await this.#unreadStore.keys();\n for (const key of keys) {\n if (key.startsWith('processed:')) {\n const parts = key.split(':');\n if (parts.length >= 3) {\n const groupIdHex = parts[1];\n const eventId = parts.slice(2).join(':');\n const processed = this.#getProcessedEventIds(groupIdHex);\n processed.add(eventId);\n }\n }\n }\n } catch {\n // Non-critical\n }\n }\n\n // ---------------------------------------------------------------------------\n // Internal Helpers\n // ---------------------------------------------------------------------------\n\n #getProcessedEventIds(groupIdHex: string): Set<string> {\n const existing = this.#processedEventIds.get(groupIdHex);\n if (existing) return existing;\n\n const events = new Set<string>();\n this.#processedEventIds.set(groupIdHex, events);\n return events;\n }\n\n #getIngestResults$(groupIdHex: string): BehaviorSubject<IngestRecord[]> {\n const existing = this.#ingestResults.get(groupIdHex);\n if (existing) return existing;\n\n const subject = new BehaviorSubject<IngestRecord[]>([]);\n this.#ingestResults.set(groupIdHex, subject);\n return subject;\n }\n\n async #fetchKeyPackageEvent(memberPubkey: string): Promise<any | null> {\n const network = this.#network;\n if (!network || typeof network.request !== 'function') {\n return null;\n }\n\n try {\n const events = await network.request(\n this.#relays,\n [{ kinds: [KEY_PACKAGE_KIND], authors: [memberPubkey], limit: 1 }]\n );\n return events?.[0] ?? null;\n } catch {\n return null;\n }\n }\n}\n","/**\n * vLEI Root of Trust Types\n * @packageDocumentation\n */\n\nexport const VLEI_SCHEMAS = {\n legalEntity: 'E46jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A',\n officialRole: 'EDg-Ji3kmi_G97Jctxeajpmp1-A8gSpeyElm-XCzTxiE',\n} as const;\n\nexport type VLEISchema = (typeof VLEI_SCHEMAS)[keyof typeof VLEI_SCHEMAS];\n\nexport type VLEITagData = [string, string, string, string, string, string, string, string, string?];\n\nexport interface RootOfTrustInfo {\n aidPrefix: string;\n lei: string;\n legalName: string;\n role: string;\n roleCredentialSaid: string;\n entityCredentialSaid: string;\n verifiedAt: string;\n expiresAt?: string;\n}\n\nexport function parseVLEITag(tag: string[]): RootOfTrustInfo | null {\n if (tag[0] !== 'vlei' || tag.length < 8) return null;\n \n return {\n aidPrefix: tag[1],\n lei: tag[2],\n legalName: tag[3],\n role: tag[4],\n roleCredentialSaid: tag[5],\n entityCredentialSaid: tag[6],\n verifiedAt: tag[7],\n expiresAt: tag[8] || undefined,\n };\n}\n\nexport function createVLEITag(info: RootOfTrustInfo): VLEITagData {\n return [\n 'vlei',\n info.aidPrefix,\n info.lei,\n info.legalName,\n info.role,\n info.roleCredentialSaid,\n info.entityCredentialSaid,\n info.verifiedAt,\n info.expiresAt,\n ];\n}\n\nexport interface KERIAConnection {\n url: string;\n aidName: string;\n aidPrefix: string;\n}\n\nexport interface KERIACredential {\n said: string;\n schema: string;\n issuer: string;\n subject: Record<string, unknown>;\n issuanceDate: string;\n raw: unknown;\n}\n\nexport interface VLEICredentials {\n entity: KERIACredential;\n role: KERIACredential;\n}\n\nexport interface KERISignature {\n signature: string;\n signer: string;\n}\n\nexport interface MultisigVLEIConfig {\n requireVLEI: boolean;\n organization?: {\n lei: string;\n legalName: string;\n };\n}","/**\n * EUDI Wallet Root of Trust Types\n * @packageDocumentation\n */\n\n/**\n * Full EUDI claims - for internal verification only (never published)\n */\nexport interface EUDIFullClaims {\n holderDID: string;\n givenName?: string;\n familyName?: string;\n dateOfBirth?: string;\n nationality?: string;\n verifiedAt: string;\n expiresAt?: string;\n}\n\n/**\n * Minimal EUDI claims for publishing - privacy-preserving like ZKPassport\n */\nexport interface EUDIClaims {\n /** Unique identifier (hashed holderDID, for verification) */\n uniqueIdentifier: string;\n /** Signature from Nostr key proving ownership of holderDID */\n signature?: string;\n /** Age verification status */\n isOver18?: boolean;\n /** Nationality (optional, only if user chooses to reveal) */\n nationality?: string;\n /** Verification timestamp */\n verifiedAt: string;\n /** Expiration timestamp */\n expiresAt?: string;\n}\n\nexport type EUDITagData = [string, string, string?, string?, string?, string?, string?, string?];\n\nexport function parseEUDITag(tag: string[]): EUDIClaims | null {\n if (tag[0] !== 'eudi' || tag.length < 3 || !tag[1]) return null;\n \n return {\n uniqueIdentifier: tag[1],\n signature: tag[2] || undefined,\n isOver18: tag[3] === 'true' ? true : undefined,\n nationality: tag[4] || undefined,\n verifiedAt: tag[5] || new Date().toISOString(),\n expiresAt: tag[6] || undefined,\n };\n}\n\nexport function createEUDITag(claims: EUDIClaims): EUDITagData {\n const tag: EUDITagData = [\n 'eudi',\n claims.uniqueIdentifier,\n claims.signature || '',\n ];\n if (claims.isOver18) tag.push('true');\n if (claims.nationality) tag.push(claims.nationality);\n tag.push(claims.verifiedAt);\n if (claims.expiresAt) tag.push(claims.expiresAt);\n return tag;\n}\n\nexport interface EUDISession {\n sessionId: string;\n challenge: string;\n verificationUrl: string;\n requestUri: string;\n expiresAt: number;\n}\n\nexport interface EUDIVerifierConfig {\n url: string;\n clientId: string;\n clientSecret?: string;\n}\n\nexport interface EUDISessionRequest {\n presentation_definition: {\n id: string;\n input_descriptors: Array<{\n id: string;\n constraints: {\n fields: Array<{\n path: string[];\n filter?: {\n type: string;\n const: string;\n };\n }>;\n };\n }>;\n };\n nonce: string;\n state?: string;\n response_uri?: string;\n}\n\nexport interface EUDIVerificationResponse {\n vp_token?: string;\n presentation_submission?: {\n id: string;\n definition_id: string;\n descriptor_map: Array<{\n id: string;\n format: string;\n path: string;\n }>;\n };\n error?: string;\n error_description?: string;\n}\n\nexport const EUDI_PID_SCHEMA = 'eu.europa.ec.eudi.pid.1';\n\nexport const EUDI_CREDENTIAL_FORMATS = {\n sd_jwt: 'vc+sd-jwt',\n mdoc: 'mso_mdoc',\n} as const;\n\nexport type EUDICredentialFormat = (typeof EUDI_CREDENTIAL_FORMATS)[keyof typeof EUDI_CREDENTIAL_FORMATS];\n\nexport interface EUDILegalClaims {\n holderDID: string;\n legalName: string;\n lei: string;\n legalForm?: string;\n registeredAddress?: string;\n vatNumber?: string;\n taxReference?: string;\n verifiedAt: string;\n expiresAt?: string;\n}\n\nexport type EUDILegalTagData = [string, string, string, string, string?, string?, string?, string?, string?, string?];\n\nexport function parseEUDILegalTag(tag: string[]): EUDILegalClaims | null {\n if (tag[0] !== 'eudil' || tag.length < 5) return null;\n \n return {\n holderDID: tag[1],\n legalName: tag[2],\n lei: tag[3],\n legalForm: tag[4] || undefined,\n registeredAddress: tag[5] || undefined,\n vatNumber: tag[6] || undefined,\n taxReference: tag[7] || undefined,\n verifiedAt: tag[8] || new Date().toISOString(),\n expiresAt: tag[9] || undefined,\n };\n}\n\nexport function createEUDILegalTag(claims: EUDILegalClaims): EUDILegalTagData {\n const tag: EUDILegalTagData = [\n 'eudil',\n claims.holderDID,\n claims.legalName,\n claims.lei,\n ];\n if (claims.legalForm) tag.push(claims.legalForm);\n if (claims.registeredAddress) tag.push(claims.registeredAddress);\n if (claims.vatNumber) tag.push(claims.vatNumber);\n if (claims.taxReference) tag.push(claims.taxReference);\n tag.push(claims.verifiedAt);\n if (claims.expiresAt) tag.push(claims.expiresAt);\n return tag;\n}\n\nexport const EUDI_LEGAL_PID_SCHEMA = 'eu.europa.ec.eudi.lpid.1';","/**\n * ZKPassport Root of Trust Types\n * @packageDocumentation\n */\n\nexport type { VerificationStatus } from './trust.js';\n\nexport interface ZKPClaims {\n uniqueIdentifier: string;\n proofSaid?: string;\n firstName?: string;\n nationality?: string;\n isOver18?: boolean;\n isEUCitizen?: boolean;\n documentType?: string;\n verifiedAt: string;\n expiresAt?: string;\n}\n\nexport type ZKPTagData = [string, string, string?, string?, string?, string?];\n\nexport function parseZKPTag(tag: string[]): ZKPClaims | null {\n if (tag[0] !== 'zkp' || tag.length < 2) return null;\n \n return {\n uniqueIdentifier: tag[1],\n proofSaid: tag[2] || undefined,\n firstName: tag[3] || undefined,\n nationality: tag[4] || undefined,\n verifiedAt: new Date().toISOString(),\n expiresAt: tag[5] || undefined,\n };\n}\n\nexport function createZKPTag(claims: ZKPClaims): ZKPTagData {\n return [\n 'zkp',\n claims.uniqueIdentifier,\n claims.proofSaid,\n claims.firstName,\n claims.nationality,\n claims.expiresAt,\n ];\n}\n\nexport interface ZKPVerifierConfig {\n appId: string;\n}\n\nexport type ZKPScope = 'eu-adult' | 'global-adult' | 'eu-citizen';\n\nexport interface ZKPVerificationRequest {\n name: string;\n logo?: string;\n purpose: string;\n scope: ZKPScope;\n mode?: 'fast' | 'secure';\n devMode?: boolean;\n}","/**\n * ZK Membership Root of Trust Types\n * Semaphore-style: only root is published, members prove anonymously\n * @packageDocumentation\n */\n\nexport interface ZKMGroup {\n id: string;\n root: string;\n members: ZKMIdentity[];\n createdAt: string;\n}\n\nexport interface ZKMIdentity {\n /** Private key - never exposed */\n privateKey: string;\n /** Public commitment - can be shared */\n commitment: string;\n}\n\nexport interface ZKMGroupInfo {\n groupId: string;\n root: string;\n adminCommitment?: string;\n createdAt: string;\n expiresAt?: string;\n}\n\nexport interface ZKMMembershipProof {\n groupId: string;\n root: string;\n proof: string;\n nullifier: string;\n scope: string;\n issuedAt: string;\n expiresAt?: string;\n}\n\nexport type ZKMTagData = [string, string, string, string, string?, string?];\n\nexport function parseZKMTag(tag: string[]): ZKMGroupInfo | null {\n if (tag[0] !== 'zkm' || tag.length < 3) return null;\n \n return {\n groupId: tag[1],\n root: tag[2],\n createdAt: tag[3] || new Date().toISOString(),\n expiresAt: tag[4] || undefined,\n };\n}\n\nexport function createZKMGroupTag(group: ZKMGroupInfo): ZKMTagData {\n const tag: ZKMTagData = [\n 'zkm',\n group.groupId,\n group.root,\n group.createdAt,\n ];\n if (group.expiresAt) tag.push(group.expiresAt);\n return tag;\n}\n\nexport interface ZKMVerifierConfig {\n circuitUrl?: string;\n verificationKey?: any;\n}\n\nexport interface ZKMScheme {\n identitySecret: string;\n groupId: string;\n groupRoot: string;\n scope?: string;\n}\n\nexport type ZKMSchemeType = 'membership' | 'anonymous';\n\nexport interface ZKMVerificationRequest {\n identity: ZKMIdentity;\n group: ZKMGroup;\n scope?: string;\n}","/**\n * Unified Root of Trust Verification Utilities\n * @packageDocumentation\n */\n\nimport type { Event } from '../types/nostr.js';\nimport { parseVLEITag } from '../types/vlei.js';\nimport { parseEUDITag } from '../types/eudi.js';\nimport { parseEUDILegalTag } from '../types/eudi.js';\nimport { parseZKPTag } from '../types/zkp.js';\nimport { parseZKMTag } from '../types/zkm.js';\n\n/**\n * Result of any root of trust verification\n */\nexport interface RootOfTrustVerificationResult {\n type: 'vlei' | 'eudi' | 'eudil' | 'zkp' | 'zkm';\n valid: boolean;\n claims?: any;\n error?: string;\n}\n\n/**\n * Verification status for all root of trust types\n */\nexport interface AllVerificationResults {\n vlei?: RootOfTrustVerificationResult;\n eudi?: RootOfTrustVerificationResult;\n eudil?: RootOfTrustVerificationResult;\n zkp?: RootOfTrustVerificationResult;\n zkm?: RootOfTrustVerificationResult;\n}\n\n/**\n * Verify vLEI tag from kind-0 event\n * vLEI verifies organizational identity via KERIA/ACDC credentials\n */\nexport function verifyVLEITag(kind0Event: Event): RootOfTrustVerificationResult {\n const vleiTag = kind0Event.tags?.find((tag) => tag[0] === 'vlei');\n \n if (!vleiTag) {\n return { type: 'vlei', valid: false, error: 'No vlei tag found' };\n }\n\n const claims = parseVLEITag(vleiTag);\n if (!claims) {\n return { type: 'vlei', valid: false, error: 'Invalid vlei tag format' };\n }\n\n try {\n const now = new Date();\n if (claims.expiresAt && new Date(claims.expiresAt) < now) {\n return { type: 'vlei', valid: false, error: 'vLEI credentials expired' };\n }\n\n return { type: 'vlei', valid: true, claims };\n } catch (error) {\n return { type: 'vlei', valid: false, error: `Verification error: ${error}` };\n }\n}\n\n/**\n * Verify EUDI tag from kind-0 event\n * EUDI verifies individual identity with signature linking to Nostr key\n */\nexport async function verifyEUDITag(kind0Event: Event): Promise<RootOfTrustVerificationResult> {\n const eudiTag = kind0Event.tags?.find((tag) => tag[0] === 'eudi');\n \n if (!eudiTag) {\n return { type: 'eudi', valid: false, error: 'No eudi tag found' };\n }\n\n const claims = parseEUDITag(eudiTag);\n if (!claims) {\n return { type: 'eudi', valid: false, error: 'Invalid eudi tag format' };\n }\n\n if (!claims.signature) {\n return { type: 'eudi', valid: false, error: 'No signature in eudi tag' };\n }\n\n try {\n const pubkey = kind0Event.pubkey;\n if (!pubkey) {\n return { type: 'eudi', valid: false, error: 'No pubkey in event' };\n }\n \n const message = `EUDI:${claims.uniqueIdentifier}:${claims.verifiedAt}`;\n \n const signatureBytes = Uint8Array.from(atob(claims.signature), c => c.charCodeAt(0));\n const messageBytes = new TextEncoder().encode(message);\n const pubkeyBytes = hexToBytes(pubkey);\n \n const { secp256k1 } = await import('@noble/curves/secp256k1.js');\n const isValid = secp256k1.verify(signatureBytes, messageBytes, pubkeyBytes);\n \n if (!isValid) {\n return { type: 'eudi', valid: false, error: 'Invalid signature - EUDI not linked to Nostr key' };\n }\n\n const now = new Date();\n if (claims.expiresAt && new Date(claims.expiresAt) < now) {\n return { type: 'eudi', valid: false, error: 'EUDI claims expired' };\n }\n\n return { type: 'eudi', valid: true, claims };\n } catch (error) {\n return { type: 'eudi', valid: false, error: `Verification error: ${error}` };\n }\n}\n\n/**\n * Verify EUDI Legal PID tag from kind-0 event\n * EUDI Legal verifies organizational identity via OpenID4VCI\n */\nexport async function verifyEUDILegalTag(kind0Event: Event): Promise<RootOfTrustVerificationResult> {\n const eudilTag = kind0Event.tags?.find((tag) => tag[0] === 'eudil');\n \n if (!eudilTag) {\n return { type: 'eudil', valid: false, error: 'No eudil tag found' };\n }\n\n const claims = parseEUDILegalTag(eudilTag);\n if (!claims) {\n return { type: 'eudil', valid: false, error: 'Invalid eudil tag format' };\n }\n\n try {\n const now = new Date();\n if (claims.expiresAt && new Date(claims.expiresAt) < now) {\n return { type: 'eudil', valid: false, error: 'EUDI Legal PID expired' };\n }\n\n return { type: 'eudil', valid: true, claims };\n } catch (error) {\n return { type: 'eudil', valid: false, error: `Verification error: ${error}` };\n }\n}\n\n/**\n * Verify ZKPassport tag from kind-0 event\n * ZKP verifies zero-knowledge proofs without revealing identity\n */\nexport function verifyZKPTag(kind0Event: Event): RootOfTrustVerificationResult {\n const zkpTag = kind0Event.tags?.find((tag) => tag[0] === 'zkp');\n \n if (!zkpTag) {\n return { type: 'zkp', valid: false, error: 'No zkp tag found' };\n }\n\n const claims = parseZKPTag(zkpTag);\n if (!claims) {\n return { type: 'zkp', valid: false, error: 'Invalid zkp tag format' };\n }\n\n try {\n const now = new Date();\n if (claims.expiresAt && new Date(claims.expiresAt) < now) {\n return { type: 'zkp', valid: false, error: 'ZKPassport proof expired' };\n }\n\n return { type: 'zkp', valid: true, claims };\n } catch (error) {\n return { type: 'zkp', valid: false, error: `Verification error: ${error}` };\n }\n}\n\n/**\n * Verify ZK Membership tag from kind-0 event\n * ZKM proves group membership without revealing identity\n */\nexport function verifyZKMTag(kind0Event: Event): RootOfTrustVerificationResult {\n const zkmTag = kind0Event.tags?.find((tag) => tag[0] === 'zkm');\n \n if (!zkmTag) {\n return { type: 'zkm', valid: false, error: 'No zkm tag found' };\n }\n\n const claims = parseZKMTag(zkmTag);\n if (!claims) {\n return { type: 'zkm', valid: false, error: 'Invalid zkm tag format' };\n }\n\n try {\n const now = new Date();\n if (claims.expiresAt && new Date(claims.expiresAt) < now) {\n return { type: 'zkm', valid: false, error: 'ZK Membership proof expired' };\n }\n\n return { type: 'zkm', valid: true, claims };\n } catch (error) {\n return { type: 'zkm', valid: false, error: `Verification error: ${error}` };\n }\n}\n\n/**\n * Verify all root of trust tags in a kind-0 event\n */\nexport async function verifyAllRootOfTrusts(kind0Event: Event): Promise<AllVerificationResults> {\n const [vleiResult, eudiResult, eudilResult, zkpResult, zkmResult] = await Promise.all([\n Promise.resolve(verifyVLEITag(kind0Event)),\n verifyEUDITag(kind0Event),\n verifyEUDILegalTag(kind0Event),\n Promise.resolve(verifyZKPTag(kind0Event)),\n Promise.resolve(verifyZKMTag(kind0Event)),\n ]);\n\n return {\n vlei: vleiResult.valid ? vleiResult : undefined,\n eudi: eudiResult.valid ? eudiResult : undefined,\n eudil: eudilResult.valid ? eudilResult : undefined,\n zkp: zkpResult.valid ? zkpResult : undefined,\n zkm: zkmResult.valid ? zkmResult : undefined,\n };\n}\n\n/**\n * Check if any root of trust is verified on a profile\n */\nexport async function hasAnyVerifiedRootOfTrust(kind0Event: Event): Promise<boolean> {\n const results = await verifyAllRootOfTrusts(kind0Event);\n return !!(results.vlei || results.eudi || results.eudil || results.zkp || results.zkm);\n}\n\n/**\n * Get a summary of verification status\n */\nexport async function getVerificationSummary(kind0Event: Event): Promise<{\n hasAnyTrust: boolean;\n individualVerified: boolean;\n organizationVerified: boolean;\n membershipVerified: boolean;\n details: string[];\n}> {\n const results = await verifyAllRootOfTrusts(kind0Event);\n const details: string[] = [];\n \n if (results.vlei) details.push('vLEI verified');\n if (results.eudil) details.push('EUDI Legal verified');\n if (results.eudi) details.push('EUDI verified');\n if (results.zkp) details.push('ZKPassport verified');\n if (results.zkm) details.push('ZK Membership verified');\n\n return {\n hasAnyTrust: details.length > 0,\n individualVerified: !!(results.eudi || results.zkp),\n organizationVerified: !!(results.vlei || results.eudil),\n membershipVerified: !!results.zkm,\n details,\n };\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);\n }\n return bytes;\n}","/**\n * DID:nostr offline-first document generation\n * @packageDocumentation\n */\n\nimport type {\n DidNostrDocument,\n DidNostrVerificationMethod,\n DidNostrProfile,\n} from '../types/auth.js';\n\nconst DID_CONTEXT = [\n 'https://w3id.org/did',\n 'https://w3id.org/nostr/context',\n];\n\nconst MULTICODEC_SECP256K1_COMPRESSED = new Uint8Array([0xe7, 0x01]);\nconst MULTIBASE_BASE16_LOWER_PREFIX = 'f';\n\n/**\n * Generate a did:nostr identifier from a hex pubkey\n */\nexport function pubkeyToDid(pubkey: string): string {\n return `did:nostr:${pubkey.toLowerCase()}`;\n}\n\n/**\n * Extract the hex pubkey from a did:nostr identifier\n */\nexport function didToPubkey(did: string): string {\n if (!did.startsWith('did:nostr:')) {\n throw new Error(`Invalid did:nostr identifier: ${did}`);\n }\n return did.slice(10);\n}\n\n/**\n * Convert a hex pubkey to a Multikey publicKeyMultibase value\n * per the did:nostr spec: prepend 0x02 (even y), then multicodec varint, then multibase base16-lower\n */\nexport function pubkeyToMultikey(pubkey: string): string {\n const pubkeyBytes = hexToBytes(pubkey);\n if (pubkeyBytes.length !== 32) {\n throw new Error('Invalid pubkey length: expected 32 bytes (x-only secp256k1)');\n }\n\n const compressed = new Uint8Array(33);\n compressed[0] = 0x02;\n compressed.set(pubkeyBytes, 1);\n\n const multicodec = new Uint8Array(MULTICODEC_SECP256K1_COMPRESSED.length + compressed.length);\n multicodec.set(MULTICODEC_SECP256K1_COMPRESSED, 0);\n multicodec.set(compressed, MULTICODEC_SECP256K1_COMPRESSED.length);\n\n return MULTIBASE_BASE16_LOWER_PREFIX + bytesToHex(multicodec);\n}\n\n/**\n * Generate a minimal DID:nostr document from a pubkey alone (offline, no network)\n */\nexport function generateMinimalDidDocument(pubkey: string): DidNostrDocument {\n const did = pubkeyToDid(pubkey);\n const publicKeyMultibase = pubkeyToMultikey(pubkey);\n\n const verificationMethod: DidNostrVerificationMethod = {\n id: `${did}#key1`,\n type: 'Multikey',\n controller: did,\n publicKeyMultibase,\n };\n\n return {\n '@context': DID_CONTEXT,\n id: did,\n type: 'DIDNostr',\n verificationMethod: [verificationMethod],\n authentication: ['#key1'],\n assertionMethod: ['#key1'],\n };\n}\n\n/**\n * Generate an enhanced DID:nostr document with relay services\n */\nexport function generateEnhancedDidDocument(\n pubkey: string,\n options: {\n relays?: string[];\n alsoKnownAs?: string[];\n profile?: DidNostrProfile;\n follows?: string[];\n } = {}\n): DidNostrDocument {\n const doc = generateMinimalDidDocument(pubkey);\n\n if (options.alsoKnownAs && options.alsoKnownAs.length > 0) {\n doc.alsoKnownAs = options.alsoKnownAs;\n }\n\n if (options.relays && options.relays.length > 0) {\n doc.service = options.relays.map((relay, i) => ({\n id: `${doc.id}#relay${i + 1}`,\n type: 'Relay',\n serviceEndpoint: relay.endsWith('/') ? relay : `${relay}/`,\n }));\n }\n\n if (options.profile) {\n doc.profile = options.profile;\n }\n\n if (options.follows && options.follows.length > 0) {\n doc.follows = options.follows;\n }\n\n return doc;\n}\n\n/**\n * Resolve a did:nostr identifier to a DID document\n * This is offline-first — generates the minimal document from the pubkey alone\n */\nexport function resolveDidNostr(did: string): DidNostrDocument {\n const pubkey = didToPubkey(did);\n return generateMinimalDidDocument(pubkey);\n}\n\n/**\n * Validate a did:nostr identifier\n */\nexport function isValidDidNostr(did: string): boolean {\n if (!did.startsWith('did:nostr:')) return false;\n const pubkey = did.slice(10);\n return /^[a-f0-9]{64}$/.test(pubkey);\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = parseInt(hex.slice(i, i + 2), 16);\n }\n return bytes;\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n}\n","/**\n * SIOP v2 Self-Issued OpenID Provider implementation\n * Generates self-issued ID Tokens using did:nostr as the subject syntax type\n * Spec: https://openid.net/specs/openid-connect-self-issued-v2-1_0.html\n * @packageDocumentation\n */\n\nimport { secp256k1 } from '@noble/curves/secp256k1.js';\nimport { sha256 as nobleSha256 } from '@noble/hashes/sha2.js';\nimport { pubkeyToDid } from './did-nostr.js';\nimport type { SiopConfig, SiopClientMetadata } from '../types/auth.js';\n\nconst DEFAULT_ALG = 'ES256K';\n\nfunction getDefaultIssuer(): string {\n if (typeof window !== 'undefined' && window.location.origin) {\n return window.location.origin;\n }\n return 'http://localhost';\n}\n\n/**\n * Base64url encode without padding\n */\nfunction base64urlEncode(data: Uint8Array): string {\n let binary = '';\n for (let i = 0; i < data.length; i++) {\n binary += String.fromCharCode(data[i]);\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\n/**\n * Base64url decode\n */\nfunction base64urlDecode(encoded: string): Uint8Array {\n let base64 = encoded.replace(/-/g, '+').replace(/_/g, '/');\n while (base64.length % 4) {\n base64 += '=';\n }\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n\n/**\n * Build a SIOP v2 authorization request URL\n * Used by RPs to invoke the Self-Issued OP\n */\nexport function buildSiopAuthorizationUrl(config: {\n clientId: string;\n redirectUri: string;\n nonce: string;\n authorizationEndpoint?: string;\n scope?: string;\n idTokenType?: string;\n clientMetadata?: SiopClientMetadata;\n requestUri?: string;\n}): string {\n const endpoint = config.authorizationEndpoint || 'siopv2://';\n const params = new URLSearchParams();\n\n params.set('response_type', 'id_token');\n params.set('client_id', config.clientId);\n params.set('redirect_uri', config.redirectUri);\n params.set('scope', config.scope || 'openid');\n params.set('nonce', config.nonce);\n\n if (config.idTokenType) {\n params.set('id_token_type', config.idTokenType);\n }\n\n if (config.clientMetadata) {\n params.set('client_metadata', JSON.stringify(config.clientMetadata));\n }\n\n if (config.requestUri) {\n params.set('request_uri', config.requestUri);\n }\n\n return `${endpoint}?${params.toString()}`;\n}\n\n/**\n * Parse a SIOP v2 authorization request URL\n * Used by the Self-Issued OP to extract the RP's request parameters\n */\nexport function parseSiopAuthorizationRequest(url: string): SiopConfig & {\n clientId: string;\n redirectUri: string;\n} {\n const parsed = new URL(url);\n const params = parsed.searchParams;\n\n const config: SiopConfig & { clientId: string; redirectUri: string } = {\n nonce: params.get('nonce') || '',\n clientId: params.get('client_id') || '',\n redirectUri: params.get('redirect_uri') || '',\n };\n\n const scope = params.get('scope');\n if (scope) {\n config.claims = { scope };\n }\n\n const idTokenType = params.get('id_token_type');\n if (idTokenType === 'subject_signed_id_token' || idTokenType === 'attester_signed_id_token') {\n config.idTokenType = idTokenType;\n }\n\n const clientMetadata = params.get('client_metadata');\n if (clientMetadata) {\n try {\n config.clientMetadata = JSON.parse(clientMetadata);\n } catch {\n // Ignore malformed client metadata\n }\n }\n\n return config;\n}\n\n/**\n * Generate a SIOP v2 Self-Issued ID Token\n * Signs with ES256K using the user's Nostr secp256k1 private key\n * iss = sub = did:nostr:<hex_pubkey>\n *\n * Note: Uses @noble/secp256k1 directly because Web Crypto (which jose relies on)\n * does not support the P-256K (secp256k1) curve in most environments.\n */\nexport async function generateSiopIdToken(\n config: SiopConfig & { secretKey: Uint8Array },\n): Promise<string> {\n const { secretKey, nonce, clientId, redirectUri, idTokenType, claims, clientMetadata } = config;\n\n if (!nonce) {\n throw new Error('nonce is required for SIOP v2 ID Token');\n }\n\n const publicKey = secp256k1.getPublicKey(secretKey);\n const pubkeyHex = bytesToHex(publicKey.slice(1));\n const did = pubkeyToDid(pubkeyHex);\n\n const aud = clientId || redirectUri || getDefaultIssuer();\n const now = Math.floor(Date.now() / 1000);\n const expiresIn = 3600;\n\n const payload: Record<string, unknown> = {\n iss: did,\n sub: did,\n aud,\n iat: now,\n exp: now + expiresIn,\n nonce,\n };\n\n if (idTokenType) {\n payload.id_token_type = idTokenType;\n }\n\n if (clientMetadata) {\n payload.client_metadata = clientMetadata;\n }\n\n if (claims) {\n Object.assign(payload, claims);\n }\n\n const header = {\n alg: DEFAULT_ALG,\n typ: 'JWT',\n kid: `${did}#key1`,\n };\n\n const headerEncoded = base64urlEncode(new TextEncoder().encode(JSON.stringify(header)));\n const payloadEncoded = base64urlEncode(new TextEncoder().encode(JSON.stringify(payload)));\n const signingInput = `${headerEncoded}.${payloadEncoded}`;\n\n const messageHash = nobleSha256(new TextEncoder().encode(signingInput));\n const signature = secp256k1.sign(messageHash, secretKey);\n\n const sigBytes = signature.toCompactRawBytes();\n const signatureEncoded = base64urlEncode(sigBytes);\n\n return `${signingInput}.${signatureEncoded}`;\n}\n\n/**\n * Verify a SIOP v2 Self-Issued ID Token\n * Validates signature using the pubkey from the did:nostr sub claim\n */\nexport async function verifySiopIdToken(token: string): Promise<{\n valid: boolean;\n payload: Record<string, unknown>;\n error?: string;\n}> {\n try {\n const parts = token.split('.');\n if (parts.length !== 3) {\n return { valid: false, payload: {}, error: 'Invalid JWT format' };\n }\n\n const [headerEncoded, payloadEncoded, signatureEncoded] = parts;\n\n const header = JSON.parse(new TextDecoder().decode(base64urlDecode(headerEncoded)));\n const payload = JSON.parse(new TextDecoder().decode(base64urlDecode(payloadEncoded)));\n\n if (header.alg !== DEFAULT_ALG) {\n return { valid: false, payload, error: `Unsupported algorithm: ${header.alg}` };\n }\n\n const sub = payload.sub as string;\n if (!sub || !sub.startsWith('did:nostr:')) {\n return { valid: false, payload, error: 'Invalid sub claim: must be did:nostr:<pubkey>' };\n }\n\n if (payload.iss !== payload.sub) {\n return { valid: false, payload, error: 'iss must equal sub for Self-Issued ID Token' };\n }\n\n const pubkeyHex = sub.slice(10);\n const pubkeyXOnly = hexToBytes(pubkeyHex);\n\n const signingInput = `${headerEncoded}.${payloadEncoded}`;\n const messageHash = nobleSha256(new TextEncoder().encode(signingInput));\n const signatureBytes = base64urlDecode(signatureEncoded);\n\n let isValid = false;\n for (const prefix of [0x02, 0x03]) {\n const pubkeyBytes = new Uint8Array(33);\n pubkeyBytes[0] = prefix;\n pubkeyBytes.set(pubkeyXOnly, 1);\n if (secp256k1.verify(signatureBytes, messageHash, pubkeyBytes)) {\n isValid = true;\n break;\n }\n }\n\n if (!isValid) {\n return { valid: false, payload, error: 'Invalid signature' };\n }\n\n const now = Math.floor(Date.now() / 1000);\n if (typeof payload.exp === 'number' && now > payload.exp) {\n return { valid: false, payload, error: 'Token expired' };\n }\n\n if (typeof payload.iat === 'number' && now < payload.iat - 300) {\n return { valid: false, payload, error: 'Token not yet valid' };\n }\n\n return { valid: true, payload };\n } catch (e) {\n return {\n valid: false,\n payload: {},\n error: e instanceof Error ? e.message : 'Unknown error',\n };\n }\n}\n\n/**\n * Generate a SIOP v2 authorization response (redirect back to RP)\n */\nexport function buildSiopAuthorizationResponse(\n redirectUri: string,\n idToken: string,\n state?: string,\n): string {\n const params = new URLSearchParams();\n params.set('id_token', idToken);\n if (state) {\n params.set('state', state);\n }\n return `${redirectUri}#${params.toString()}`;\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = parseInt(hex.slice(i, i + 2), 16);\n }\n return bytes;\n}\n","/**\n * NIP-42 client authentication protocol\n * Handles WebSocket challenge/response with Nostr relays\n * Spec: https://github.com/nostr-protocol/nips/blob/master/42.md\n * @packageDocumentation\n */\n\nimport { finalizeEvent } from 'applesauce-core/helpers';\nimport type { Event as NostrEvent } from '../utils/types.js';\nimport type { Nip42AuthOptions, Nip42AuthResult } from '../types/auth.js';\n\nconst DEFAULT_TIMEOUT_MS = 30000;\nconst AUTH_EVENT_KIND = 22242;\n\n/**\n * Normalize a relay URL per NIP-42 conventions\n */\nexport function normalizeRelayUrl(url: string): string {\n let normalized = url.trim().toLowerCase();\n normalized = normalized.replace(/\\/+$/, '');\n if (!normalized.startsWith('ws://') && !normalized.startsWith('wss://')) {\n normalized = `wss://${normalized}`;\n }\n return normalized;\n}\n\n/**\n * Build a NIP-42 AUTH event (kind 22242)\n */\nexport async function buildAuthEvent(\n challenge: string,\n relayUrl: string,\n secretKey: Uint8Array,\n jwt?: string,\n): Promise<NostrEvent> {\n const normalizedRelayUrl = normalizeRelayUrl(relayUrl);\n const now = Math.floor(Date.now() / 1000);\n\n const tags: string[][] = [\n ['challenge', challenge],\n ['relay', normalizedRelayUrl],\n ];\n\n if (jwt) {\n tags.push(['auth_token', jwt]);\n }\n\n const eventToSign = {\n kind: AUTH_EVENT_KIND,\n content: '',\n created_at: now,\n tags,\n };\n\n return finalizeEvent(eventToSign, secretKey);\n}\n\n/**\n * Authenticate to a Nostr relay using NIP-42\n * Full WebSocket handshake: connect → receive challenge → sign → send → await OK\n */\nexport async function authenticateToRelay(\n options: Nip42AuthOptions & { secretKey: Uint8Array },\n): Promise<Nip42AuthResult> {\n const { relayUrl, secretKey, jwt, timeoutMs = DEFAULT_TIMEOUT_MS } = options;\n const normalizedUrl = normalizeRelayUrl(relayUrl);\n\n return new Promise((resolve, reject) => {\n let ws: WebSocket;\n let settled = false;\n\n const timeout = setTimeout(() => {\n if (!settled) {\n settled = true;\n ws?.close();\n reject(new Error(`NIP-42 authentication timed out after ${timeoutMs}ms`));\n }\n }, timeoutMs);\n\n try {\n ws = new WebSocket(normalizedUrl);\n } catch (e) {\n clearTimeout(timeout);\n reject(new Error(`Failed to connect to relay: ${e instanceof Error ? e.message : String(e)}`));\n return;\n }\n\n ws.onopen = () => {\n // Connection established, wait for AUTH challenge\n };\n\n ws.onerror = (error) => {\n if (!settled) {\n settled = true;\n clearTimeout(timeout);\n reject(new Error('WebSocket connection error'));\n }\n };\n\n ws.onclose = (event) => {\n if (!settled) {\n settled = true;\n clearTimeout(timeout);\n reject(new Error(`WebSocket closed: ${event.code} ${event.reason}`));\n }\n };\n\n ws.onmessage = async (event: MessageEvent) => {\n try {\n const data = JSON.parse(event.data);\n\n if (!Array.isArray(data)) return;\n\n if (data[0] === 'AUTH' && data[1] && typeof data[1] === 'string') {\n const challenge = data[1] as string;\n\n const authEvent = await buildAuthEvent(challenge, relayUrl, secretKey, jwt);\n\n ws.send(JSON.stringify(['AUTH', authEvent]));\n }\n\n if (data[0] === 'OK' && data[1] && typeof data[1] === 'string') {\n const eventId = data[1];\n const success = data[2] === true;\n const message = data[3] || '';\n\n if (success) {\n if (!settled) {\n settled = true;\n clearTimeout(timeout);\n resolve({\n success: true,\n challenge: '',\n pubkey: '',\n websocket: ws,\n });\n }\n } else {\n if (!settled) {\n settled = true;\n clearTimeout(timeout);\n ws.close();\n reject(new Error(`Relay rejected AUTH event: ${message}`));\n }\n }\n }\n } catch {\n // Ignore non-JSON messages\n }\n };\n });\n}\n\n/**\n * Wait for AUTH challenge from relay\n * Returns the challenge string\n */\nexport function waitForAuthChallenge(\n websocket: WebSocket,\n timeoutMs = DEFAULT_TIMEOUT_MS,\n): Promise<string> {\n return new Promise((resolve, reject) => {\n let settled = false;\n\n const timeout = setTimeout(() => {\n if (!settled) {\n settled = true;\n reject(new Error('Timed out waiting for AUTH challenge'));\n }\n }, timeoutMs);\n\n const handler = (event: MessageEvent) => {\n try {\n const data = JSON.parse(event.data);\n if (Array.isArray(data) && data[0] === 'AUTH' && data[1]) {\n if (!settled) {\n settled = true;\n clearTimeout(timeout);\n websocket.removeEventListener('message', handler);\n resolve(data[1] as string);\n }\n }\n } catch {\n // Ignore non-JSON messages\n }\n };\n\n websocket.addEventListener('message', handler);\n });\n}\n\n/**\n * Send AUTH event to relay and wait for OK response\n */\nexport async function sendAuthEvent(\n websocket: WebSocket,\n authEvent: NostrEvent,\n timeoutMs = DEFAULT_TIMEOUT_MS,\n): Promise<boolean> {\n return new Promise((resolve, reject) => {\n let settled = false;\n\n const timeout = setTimeout(() => {\n if (!settled) {\n settled = true;\n reject(new Error('Timed out waiting for AUTH OK response'));\n }\n }, timeoutMs);\n\n websocket.send(JSON.stringify(['AUTH', authEvent]));\n\n const handler = (event: MessageEvent) => {\n try {\n const data = JSON.parse(event.data);\n if (Array.isArray(data) && data[0] === 'OK' && data[1] === authEvent.id) {\n if (!settled) {\n settled = true;\n clearTimeout(timeout);\n websocket.removeEventListener('message', handler);\n resolve(data[2] === true);\n }\n }\n } catch {\n // Ignore non-JSON messages\n }\n };\n\n websocket.addEventListener('message', handler);\n });\n}\n","/**\n * OAuth 2.0 authentication + identity linking + encrypted refresh token SSO\n * Supports built-in provider presets (Google, GitHub) and custom providers\n * @packageDocumentation\n */\n\nimport { deriveAesGcmKey, aesGcmEncrypt, aesGcmDecrypt } from '../utils/crypto-utils.js';\nimport type {\n OAuthProviderPreset,\n OAuthAuthResult,\n EncryptedOAuthBundle,\n} from '../types/auth.js';\n\n/**\n * Built-in OAuth provider presets\n */\nexport const BUILTIN_PROVIDERS: Record<string, OAuthProviderPreset> = {\n google: {\n authorizationUrl: 'https://accounts.google.com/o/oauth2/v2/auth',\n tokenUrl: 'https://oauth2.googleapis.com/token',\n defaultScope: 'openid profile email',\n },\n github: {\n authorizationUrl: 'https://github.com/login/oauth/authorize',\n tokenUrl: 'https://github.com/login/oauth/access_token',\n defaultScope: 'user:email',\n },\n apple: {\n authorizationUrl: 'https://appleid.apple.com/auth/authorize',\n tokenUrl: 'https://appleid.apple.com/auth/token',\n defaultScope: 'openid name email',\n },\n microsoft: {\n authorizationUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',\n tokenUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',\n defaultScope: 'openid profile email',\n },\n facebook: {\n authorizationUrl: 'https://www.facebook.com/v18.0/dialog/oauth',\n tokenUrl: 'https://graph.facebook.com/v18.0/oauth/access_token',\n defaultScope: 'openid email public_profile',\n }\n};\n\n/**\n * Generate PKCE code verifier and challenge\n */\nexport function generatePKCE(): { codeVerifier: string; codeChallenge: string } {\n const cryptoObj = typeof window !== 'undefined' ? window.crypto : globalThis.crypto;\n const verifierBytes = cryptoObj.getRandomValues(new Uint8Array(32));\n const codeVerifier = base64urlEncode(verifierBytes);\n\n const encoder = new TextEncoder();\n return cryptoObj.subtle\n .digest('SHA-256', encoder.encode(codeVerifier))\n .then((hash) => ({\n codeVerifier,\n codeChallenge: base64urlEncode(new Uint8Array(hash)),\n })) as unknown as { codeVerifier: string; codeChallenge: string };\n}\n\n/**\n * Build OAuth authorization URL with PKCE\n */\nexport function buildAuthorizationUrl(config: {\n authorizationUrl: string;\n clientId: string;\n redirectUri: string;\n scope: string;\n codeChallenge: string;\n state?: string;\n}): string {\n const params = new URLSearchParams();\n params.set('response_type', 'code');\n params.set('client_id', config.clientId);\n params.set('redirect_uri', config.redirectUri);\n params.set('scope', config.scope);\n params.set('code_challenge', config.codeChallenge);\n params.set('code_challenge_method', 'S256');\n\n if (config.state) {\n params.set('state', config.state);\n }\n\n return `${config.authorizationUrl}?${params.toString()}`;\n}\n\n/**\n * Exchange authorization code for tokens\n */\nexport async function exchangeCodeForTokens(config: {\n tokenUrl: string;\n clientId: string;\n redirectUri: string;\n code: string;\n codeVerifier: string;\n}): Promise<{\n accessToken: string;\n refreshToken?: string;\n expiresIn: number;\n scope: string;\n idToken?: string;\n}> {\n const params = new URLSearchParams();\n params.set('grant_type', 'authorization_code');\n params.set('client_id', config.clientId);\n params.set('redirect_uri', config.redirectUri);\n params.set('code', config.code);\n params.set('code_verifier', config.codeVerifier);\n\n const response = await fetch(config.tokenUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: params.toString(),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(`Token exchange failed: ${response.status} ${errorText}`);\n }\n\n const data = await response.json();\n\n return {\n accessToken: data.access_token,\n refreshToken: data.refresh_token,\n expiresIn: data.expires_in || 3600,\n scope: data.scope || '',\n idToken: data.id_token,\n };\n}\n\n/**\n * Decode a JWT payload (no signature verification)\n */\nexport function decodeJwtPayload(token: string): Record<string, unknown> {\n const parts = token.split('.');\n if (parts.length < 2) {\n throw new Error('Invalid JWT format');\n }\n const payload = parts[1];\n const decoded = atob(payload.replace(/-/g, '+').replace(/_/g, '/'));\n return JSON.parse(decoded);\n}\n\n/**\n * Extract pubkey from JWT claims\n */\nexport function getPubkeyFromJwt(token: string, claimName = 'nostr_pubkey'): string {\n const payload = decodeJwtPayload(token);\n const pubkey = payload[claimName] as string | undefined;\n if (!pubkey) {\n throw new Error(`Nostr pubkey claim '${claimName}' not found in JWT`);\n }\n return pubkey;\n}\n\n/**\n * Encrypt a refresh token with AES-GCM using a PRF-derived key\n */\nexport async function encryptRefreshToken(\n refreshToken: string,\n secretKey: Uint8Array,\n): Promise<EncryptedOAuthBundle> {\n const cryptoObj = typeof window !== 'undefined' ? window.crypto : globalThis.crypto;\n const iv = cryptoObj.getRandomValues(new Uint8Array(12));\n const aesKey = await deriveAesGcmKey(secretKey, new Uint8Array(16));\n const plaintext = new TextEncoder().encode(refreshToken);\n const { ciphertext, tag } = await aesGcmEncrypt(aesKey, iv, plaintext);\n\n return {\n ciphertext: btoa(String.fromCharCode(...ciphertext)),\n iv: btoa(String.fromCharCode(...iv)),\n tag: btoa(String.fromCharCode(...tag)),\n };\n}\n\n/**\n * Decrypt a refresh token with AES-GCM using a PRF-derived key\n */\nexport async function decryptRefreshToken(\n bundle: EncryptedOAuthBundle,\n secretKey: Uint8Array,\n): Promise<string> {\n const ciphertext = Uint8Array.from(atob(bundle.ciphertext), (c) => c.charCodeAt(0));\n const iv = Uint8Array.from(atob(bundle.iv), (c) => c.charCodeAt(0));\n const tag = Uint8Array.from(atob(bundle.tag), (c) => c.charCodeAt(0));\n\n const aesKey = await deriveAesGcmKey(secretKey, new Uint8Array(16));\n const plaintext = await aesGcmDecrypt(aesKey, iv, ciphertext, tag);\n\n return new TextDecoder().decode(plaintext);\n}\n\n/**\n * Refresh an access token using a stored refresh token\n */\nexport async function refreshAccessToken(config: {\n tokenUrl: string;\n clientId: string;\n refreshToken: string;\n}): Promise<{\n accessToken: string;\n refreshToken?: string;\n expiresIn: number;\n scope: string;\n}> {\n const params = new URLSearchParams();\n params.set('grant_type', 'refresh_token');\n params.set('client_id', config.clientId);\n params.set('refresh_token', config.refreshToken);\n\n const response = await fetch(config.tokenUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: params.toString(),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(`Token refresh failed: ${response.status} ${errorText}`);\n }\n\n const data = await response.json();\n\n return {\n accessToken: data.access_token,\n refreshToken: data.refresh_token,\n expiresIn: data.expires_in || 3600,\n scope: data.scope || '',\n };\n}\n\n/**\n * Initiate OAuth flow — redirects to provider's authorization page\n */\nexport function initiateOAuthFlow(config: {\n provider: string;\n clientId: string;\n redirectUri: string;\n scope: string;\n authorizationUrl?: string;\n state?: string;\n}): Promise<{ codeVerifier: string; state: string }> {\n return new Promise(async (resolve, reject) => {\n try {\n const preset = BUILTIN_PROVIDERS[config.provider];\n const authorizationUrl = config.authorizationUrl || preset?.authorizationUrl;\n\n if (!authorizationUrl) {\n reject(new Error(`Unknown provider '${config.provider}' and no authorizationUrl provided`));\n return;\n }\n\n const { codeVerifier, codeChallenge } = await generatePKCE();\n const state = config.state || generateRandomState();\n\n const url = buildAuthorizationUrl({\n authorizationUrl,\n clientId: config.clientId,\n redirectUri: config.redirectUri,\n scope: config.scope,\n codeChallenge,\n state,\n });\n\n // Store PKCE state for callback handling\n const pkceState = {\n codeVerifier,\n state,\n provider: config.provider,\n clientId: config.clientId,\n redirectUri: config.redirectUri,\n scope: config.scope,\n tokenUrl: preset?.tokenUrl,\n createdAt: Date.now(),\n };\n\n sessionStorage.setItem(\n `oauth_pkce_${state}`,\n JSON.stringify(pkceState),\n );\n\n window.location.href = url;\n resolve({ codeVerifier, state });\n } catch (e) {\n reject(e);\n }\n });\n}\n\n/**\n * Handle OAuth callback — extract code, exchange for tokens\n */\nexport async function handleOAuthCallback(\n currentUrl?: string,\n): Promise<{\n code: string;\n state: string;\n pkceState: {\n codeVerifier: string;\n provider: string;\n clientId: string;\n redirectUri: string;\n scope: string;\n tokenUrl?: string;\n };\n}> {\n const url = currentUrl || window.location.href;\n const parsed = new URL(url);\n const code = parsed.searchParams.get('code');\n const state = parsed.searchParams.get('state');\n\n if (!code || !state) {\n throw new Error('Missing code or state parameter in callback URL');\n }\n\n const stored = sessionStorage.getItem(`oauth_pkce_${state}`);\n if (!stored) {\n throw new Error('No PKCE state found. OAuth flow may have been initiated in a different session.');\n }\n\n const pkceState = JSON.parse(stored);\n sessionStorage.removeItem(`oauth_pkce_${state}`);\n\n return { code, state, pkceState };\n}\n\n/**\n * Complete OAuth flow — exchange code for tokens and return result\n */\nexport async function completeOAuthFlow(\n currentUrl?: string,\n): Promise<OAuthAuthResult> {\n const { code, pkceState } = await handleOAuthCallback(currentUrl);\n\n const tokenUrl = pkceState.tokenUrl || BUILTIN_PROVIDERS[pkceState.provider]?.tokenUrl;\n if (!tokenUrl) {\n throw new Error(`No token URL available for provider '${pkceState.provider}'`);\n }\n\n const tokens = await exchangeCodeForTokens({\n tokenUrl,\n clientId: pkceState.clientId,\n redirectUri: pkceState.redirectUri,\n code,\n codeVerifier: pkceState.codeVerifier,\n });\n\n let sub = '';\n if (tokens.idToken) {\n const payload = decodeJwtPayload(tokens.idToken);\n sub = (payload.sub as string) || '';\n }\n\n return {\n provider: pkceState.provider,\n accessToken: tokens.accessToken,\n refreshToken: tokens.refreshToken,\n expiresAt: Date.now() + tokens.expiresIn * 1000,\n sub,\n scope: tokens.scope || pkceState.scope,\n linked: false,\n };\n}\n\nfunction base64urlEncode(data: Uint8Array): string {\n let binary = '';\n for (let i = 0; i < data.length; i++) {\n binary += String.fromCharCode(data[i]);\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\nfunction generateRandomState(): string {\n const cryptoObj = typeof window !== 'undefined' ? window.crypto : globalThis.crypto;\n const bytes = cryptoObj.getRandomValues(new Uint8Array(16));\n return base64urlEncode(bytes);\n}\n","import { KeyManager, type KeyInfo, type Event, type PasskeyCreationOptions, type SignOptions, type KeyOptions, type MultisigSetupOptions, type MultisigSetupResult, type PeerInfo, type MultisigConfig, type MultisigImportOptions, type CreateGroupOptions, type GroupMessage, type ShareCredentialMessage } from '../utils/index.js';\nimport type {\n AuthServiceConfig,\n Nip42AuthOptions,\n Nip42AuthResult,\n OAuthProviderConfig,\n OAuthAuthResult,\n LinkedProviderStatus,\n TrustProviderEntry,\n SiopConfig,\n SiopAuthResult,\n} from '../types/auth.js';\nimport { RelayService } from './relay.service.js';\nimport { GroupManager } from '../utils/group.js';\nimport { generateSiopIdToken } from './siop.js';\nimport { authenticateToRelay as nip42Authenticate } from './nip42.js';\nimport {\n initiateOAuthFlow,\n completeOAuthFlow,\n encryptRefreshToken,\n decryptRefreshToken,\n refreshAccessToken,\n BUILTIN_PROVIDERS,\n} from './oauth.js';\nimport { hexToBytes } from '../utils/utils.js';\nimport { pubkeyToDid } from './did-nostr.js';\n\n/**\n * Service wrapper around KeyManager\n * Handles WebAuthn/Passkey integration with Nostr\n */\nexport class AuthService {\n private manager: KeyManager | null = null;\n private groupManager: GroupManager | null = null;\n private config: AuthServiceConfig;\n\n constructor(config: AuthServiceConfig = {}) {\n this.config = {\n rpId: config.rpId || (typeof window !== 'undefined' ? window.location.hostname.replace(/^www\\./, '') : 'localhost'),\n rpName: config.rpName || this.getDefaultRpName(),\n storageKey: config.storageKey || 'identity',\n cacheTimeoutMs: config.cacheTimeoutMs || 30 * 60 * 1000,\n cacheOnCreation: config.cacheOnCreation !== undefined ? config.cacheOnCreation : true,\n };\n }\n\n private getDefaultRpName(): string {\n if (typeof window === 'undefined') return 'localhost';\n const hostname = window.location.hostname;\n if (hostname.includes('nosskey.app')) return 'nosskey.app';\n return hostname.replace(/^www\\./, '');\n }\n\n /**\n * Initialize the KeyManager instance\n */\n private getManager(): KeyManager {\n if (!this.manager) {\n this.manager = new KeyManager({\n cacheOptions: {\n enabled: true,\n timeoutMs: this.config.cacheTimeoutMs,\n cacheOnCreation: this.config.cacheOnCreation,\n },\n storageOptions: {\n enabled: true,\n storageKey: this.config.storageKey,\n },\n });\n }\n return this.manager;\n }\n\n /**\n * Create a new passkey\n * Uses platform authenticator only (Touch ID, Face ID, Windows Hello)\n */\n async createPasskey(username?: string): Promise<Uint8Array> {\n const manager = this.getManager();\n \n const rpId = this.config.rpId === 'localhost' ? 'localhost' : this.config.rpId;\n const rpName = this.config.rpName;\n \n const trimmedUsername = username?.trim();\n const uniqueUsername = trimmedUsername \n ? trimmedUsername \n : `user-${Date.now()}@example.com`;\n \n const options: PasskeyCreationOptions = {\n rp: {\n id: rpId,\n name: rpName,\n },\n user: {\n name: uniqueUsername,\n displayName: trimmedUsername || 'User',\n },\n authenticatorSelection: {\n authenticatorAttachment: 'platform',\n residentKey: 'preferred',\n userVerification: 'preferred',\n },\n extensions: {\n prf: {},\n },\n };\n \n return await manager.createPasskey(options);\n }\n\n/**\n * Create a new Nostr key from a credential ID\n * Automatically uses password fallback if PRF is not supported\n * @param credentialId Passkey credential ID\n * @param password Password (required if PRF not supported)\n * @param options.username Username for the key\n * @param options.recoveryPassword Password for recovery (enables recovery on new device)\n */\n async createKey(credentialId?: Uint8Array, password?: string, options?: KeyOptions): Promise<KeyInfo> {\n const manager = this.getManager();\n return await manager.createKey(credentialId, password, options);\n }\n\n /**\n * Check if PRF is supported, otherwise password fallback is needed\n */\n async checkPRFSupport(): Promise<boolean> {\n const manager = this.getManager();\n return await manager.checkPRFSupport();\n }\n\n /**\n * Get the current public key\n */\n async getPublicKey(): Promise<string> {\n const manager = this.getManager();\n return await manager.getPublicKey();\n }\n\n /**\n * Sign a Nostr event\n * @param event Event to sign\n * @param options.mode 'individual' for direct signing, 'multisig' for threshold signing. Defaults to multisig if configured.\n */\n async signEvent(event: Event, options?: SignOptions): Promise<Event> {\n const manager = this.getManager();\n return await manager.signEventWithKeyInfo(event, manager.getCurrentKeyInfo()!, options);\n }\n\n /**\n * Get current key info\n */\n getCurrentKeyInfo(): KeyInfo | null {\n const manager = this.getManager();\n return manager.getCurrentKeyInfo();\n }\n\n /**\n * Set current key info\n */\n setCurrentKeyInfo(keyInfo: KeyInfo): void {\n const manager = this.getManager();\n manager.setCurrentKeyInfo(keyInfo);\n }\n\n /**\n * Check if key info exists\n */\n hasKeyInfo(): boolean {\n const manager = this.getManager();\n return manager.hasKeyInfo();\n }\n\n /**\n * Clear stored key info\n */\n clearStoredKeyInfo(): void {\n const manager = this.getManager();\n manager.clearStoredKeyInfo();\n }\n\n/**\n * Check if PRF is supported (legacy alias)\n */\n async isPrfSupported(): Promise<boolean> {\n return this.checkPRFSupport();\n }\n\n /**\n * Add password recovery to an existing PRF key\n * @param password Password for recovery key\n */\n async addPasswordRecovery(password: string): Promise<KeyInfo> {\n const manager = this.getManager();\n return await manager.addPasswordRecovery(password);\n }\n\n /**\n * Activate recovery using password\n * Requires new credential ID from new device\n * @param password Password for recovery key\n * @param newCredentialId New passkey credential ID (required)\n */\n async activateWithPassword(password: string, newCredentialId: Uint8Array): Promise<KeyInfo> {\n const manager = this.getManager();\n return await manager.activateWithPassword(password, newCredentialId);\n }\n\n /**\n * Get recovery data for kind-0\n */\n getRecoveryForKind0(): { recoveryPubkey: string; recoverySalt: string; createdAt?: number; signature?: string } | null {\n const manager = this.getManager();\n return manager.getRecoveryForKind0();\n }\n\n /**\n * Publish recovery data to a kind-0 event on relays\n * Fetches the existing kind-0, preserves all content and tags, and amends the recovery \"r\" tag\n * @param relayService RelayService instance for publishing\n * @param content Optional content to use instead of fetching the existing kind-0\n */\n async publishRecoveryToKind0(\n relayService: RelayService,\n content?: string\n ): Promise<boolean> {\n const manager = this.getManager();\n const pubkey = await manager.getPublicKey();\n const recoveryData = manager.getRecoveryForKind0();\n\n if (!recoveryData) {\n throw new Error('No recovery data configured. Call addPasswordRecovery() first.');\n }\n\n return relayService.publishRecoveryToKind0(\n pubkey,\n recoveryData,\n (event) => manager.signEvent(event),\n content\n );\n }\n\n /**\n * Enable FROSTR multisig on the current identity\n * Derives the secret from the passkey, splits into shares, stores config\n * @param options Threshold, total members, and relay configuration\n */\n async enableMultisig(options: MultisigSetupOptions): Promise<MultisigSetupResult> {\n const manager = this.getManager();\n return await manager.enableMultisig(options);\n }\n\n /**\n * Check if the current identity is multisig-enabled\n */\n isMultisig(): boolean {\n const manager = this.getManager();\n return manager.isMultisigEnabled();\n }\n\n /**\n * Get the full multisig config (for sharing with other devices)\n */\n getMultisigConfig(): MultisigConfig | null {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.multisig) return null;\n return {\n threshold: keyInfo.multisig.threshold,\n totalMembers: keyInfo.multisig.totalMembers,\n relays: keyInfo.multisig.relays,\n groupCredential: keyInfo.multisig.groupCredential,\n shareCredential: '',\n shareIndex: keyInfo.multisig.shareIndex,\n };\n }\n\n /**\n * Get peer status — which other signers are online\n */\n async getPeerStatus(): Promise<PeerInfo[]> {\n const manager = this.getManager();\n return await manager.getPeerStatus();\n }\n\n /**\n * Rotate shares — generate a new keyset, invalidating old shares\n * If members and groupManager are provided, new shares are distributed via Welcome messages.\n * Otherwise, returns new share credentials for manual distribution.\n * @param newThreshold New threshold (defaults to current)\n * @param newTotal New total members (defaults to current)\n * @param members Members to redistribute shares to via Welcome messages\n * @param groupManager GroupManager for sending Welcome messages\n * @returns Array of new share credentials (empty if distributed via Welcome)\n */\n async rotateShares(newThreshold?: number, newTotal?: number, members?: any[], groupManager?: any): Promise<string[]> {\n const manager = this.getManager();\n return await manager.rotateShares(newThreshold, newTotal, members, groupManager);\n }\n\n /**\n * Import a FROST share credential into the current identity\n * Used by members who receive a share from the group admin\n * @param options Group credential, share credential, and relay URLs\n */\n async importMultisigShare(options: MultisigImportOptions): Promise<KeyInfo> {\n const manager = this.getManager();\n return await manager.importMultisigShare(options);\n }\n\n /**\n * Get or create the GroupManager instance for Marmot group messaging\n * @param network Network interface (e.g., RelayService or NostrNetworkInterface)\n * @param relays Relay URLs for group communication\n * @param dbName Optional IndexedDB database name (default: 'nosskey')\n */\n getGroupManager(network: any, relays: string[], dbName?: string): GroupManager {\n if (!this.groupManager) {\n this.groupManager = new GroupManager({\n signer: this.getManager(),\n network,\n relays,\n dbName,\n });\n }\n return this.groupManager;\n }\n\n /**\n * Create a new Marmot group and optionally enable multisig for it\n * @param network Network interface\n * @param relays Relay URLs\n * @param name Group name\n * @param options Group creation options\n */\n async createGroup(network: any, relays: string[], name: string, options?: CreateGroupOptions): Promise<any> {\n const gm = this.getGroupManager(network, relays);\n await gm.initialize();\n return gm.createGroup(name, options);\n }\n\n /**\n * Subscribe to group messages\n * @param group The Marmot group instance\n * @param handler Message handler callback\n * @returns Unsubscribe function\n */\n onGroupMessage(group: any, handler: (msg: GroupMessage) => void): () => void {\n const gm = this.getGroupManager(\n (group as any).network,\n group.relays || [],\n );\n return gm.onMessage(handler);\n }\n\n /**\n * Set ZK Membership trust in KeyInfo\n * @param proof ZK Membership proof\n */\n async setMembershipTrust(proof: import('../types/zkm.js').ZKMMembershipProof): Promise<void> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n const updatedKeyInfo: import('../utils').KeyInfo = {\n ...keyInfo,\n membershipTrust: proof,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n }\n\n /**\n * Set ZK Membership group trust in KeyInfo\n * @param group ZKM Group info (Semaphore-style - only root published)\n */\n async setGroupTrust(group: import('../types/zkm.js').ZKMGroupInfo): Promise<void> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n const updatedKeyInfo: import('../utils').KeyInfo = {\n ...keyInfo,\n groupTrust: group,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n }\n\n /**\n * Publish ZK Membership proof to kind-0 profile\n * Can be called manually or automatically after group join\n * @param relayService RelayService instance\n */\n async publishMembershipToProfile(relayService: import('./relay.service.js').RelayService): Promise<boolean> {\n const keyInfo = this.getCurrentKeyInfo();\n const group = keyInfo?.groupTrust;\n if (!group) {\n throw new Error('No group trust set. Call setGroupTrust() first or join a group.');\n }\n\n const pubkey = await this.getPublicKey();\n return relayService.publishZKMGroupToKind0(\n pubkey,\n group,\n (event: Event) => this.signEvent(event)\n );\n }\n\n /**\n * Get membership verification status\n */\n getMembershipTrust(): import('../types/zkm.js').ZKMMembershipProof | undefined {\n return this.getCurrentKeyInfo()?.membershipTrust;\n }\n\n /**\n * Subscribe to group changes (created/joined) to optionally auto-publish ZK membership\n * @param relayService RelayService instance\n * @param zkmService ZKMService for generating proofs\n * @param groupMembers Array of group member secrets\n * @returns Unsubscribe function\n */\n onGroupChange(\n relayService: import('./relay.service.js').RelayService,\n _groupMembers: string[]\n ): () => void {\n const handlers: Set<(event: { type: 'created' | 'joined'; group: any }) => void> = new Set();\n\n const handler = async (_event: { type: 'created' | 'joined'; group: any }) => {\n try {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n console.error('No key info available for ZK membership');\n return;\n }\n\n const _zkmService = new (await import('./zkm.service.js')).ZKMService();\n \n await _zkmService.generateIdentity();\n \n const _group = await _zkmService.createGroup(`group-${Date.now()}`);\n \n const proof = await _zkmService.generateProof();\n \n await this.setGroupTrust(_group);\n await this.setMembershipTrust(proof);\n await this.publishMembershipToProfile(relayService);\n console.log(`ZK Membership group published`);\n } catch (error) {\n console.error('Failed to auto-publish ZK membership:', error);\n }\n };\n\n handlers.add(handler);\n\n const keyInfo = this.getCurrentKeyInfo();\n if (keyInfo?.multisig?.groupCredential) {\n const gm = this.getGroupManager(keyInfo.multisig, keyInfo.multisig.relays || []);\n return gm.onGroupChange(handler);\n }\n\n return () => handlers.delete(handler);\n }\n\n /**\n * Clear membership trust from KeyInfo\n */\n async clearMembershipTrust(): Promise<void> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set.');\n }\n\n const { membershipTrust: _, ...keyInfoWithoutMembership } = keyInfo;\n this.setCurrentKeyInfo(keyInfoWithoutMembership as import('../utils').KeyInfo);\n }\n\n /**\n * Fetch membership tags from a profile\n * @param relayService RelayService instance\n * @param pubkey Public key to fetch from\n */\n async fetchGroupTags(relayService: import('./relay.service.js').RelayService, pubkey: string): Promise<import('../types/zkm.js').ZKMGroupInfo[]> {\n return relayService.fetchZKMGroups(pubkey);\n }\n\n /**\n * Parse a group message to check if it's a share credential\n * @param message The group message to parse\n */\n async parseShareMessage(message: GroupMessage): Promise<ShareCredentialMessage | null> {\n const { parseShareMessage } = await import('../utils/group-coordination.js');\n return parseShareMessage(message);\n }\n\n /**\n * Parse a group message to check if it's a signing request\n * @param message The group message to parse\n */\n async parseSigningRequest(message: GroupMessage): Promise<{ type: 'signing-request'; description: string } | null> {\n const { parseSigningRequest } = await import('../utils/group-coordination.js');\n return parseSigningRequest(message);\n }\n\n // ─── SIOP v2 Methods ─────────────────────────────────────────────\n\n /**\n * Generate a SIOP v2 Self-Issued ID Token\n * Auto-generates on demand — signs with the user's Nostr keypair\n * iss = sub = did:nostr:<hex_pubkey>\n */\n async generateSiopIdToken(config: SiopConfig): Promise<SiopAuthResult> {\n const manager = this.getManager();\n const keyInfo = manager.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n const secretKey = await this.#resolveSecretKey(manager, keyInfo);\n const idToken = await generateSiopIdToken({\n ...config,\n secretKey,\n });\n this.#clearKey(secretKey);\n\n const did = pubkeyToDid(keyInfo.pubkey);\n\n return {\n idToken,\n pubkey: keyInfo.pubkey,\n did,\n };\n }\n\n // ─── NIP-42 Methods ──────────────────────────────────────────────\n\n /**\n * Authenticate to a Nostr relay using NIP-42\n * Auto-generates SIOP ID Token if siop.nonce is provided\n */\n async authenticateToRelay(options: Nip42AuthOptions): Promise<Nip42AuthResult> {\n const manager = this.getManager();\n const keyInfo = manager.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n const secretKey = await this.#resolveSecretKey(manager, keyInfo);\n\n let jwt = options.jwt;\n\n if (options.siop?.nonce && !jwt) {\n const siopResult = await this.generateSiopIdToken({\n nonce: options.siop.nonce,\n clientId: typeof window !== 'undefined' ? window.location.origin : undefined,\n redirectUri: typeof window !== 'undefined' ? `${window.location.origin}/callback` : undefined,\n });\n jwt = siopResult.idToken;\n }\n\n const result = await nip42Authenticate({\n relayUrl: options.relayUrl,\n secretKey,\n jwt,\n timeoutMs: options.timeoutMs,\n });\n\n this.#clearKey(secretKey);\n\n return {\n ...result,\n pubkey: keyInfo.pubkey,\n };\n }\n\n // ─── OAuth 2.0 Methods ───────────────────────────────────────────\n\n /**\n * Authenticate with an OAuth provider (Google, GitHub, etc.)\n * Initiates the OAuth flow — redirects to provider's authorization page\n * On callback, exchanges code for tokens and automatically links the identity\n */\n async authenticateWithProvider(config: OAuthProviderConfig): Promise<OAuthAuthResult> {\n const manager = this.getManager();\n const keyInfo = manager.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n const preset = BUILTIN_PROVIDERS[config.provider];\n const scope = config.scope || preset?.defaultScope || 'openid profile';\n\n const result = await completeOAuthFlow();\n\n const secretKey = await this.#resolveSecretKey(manager, keyInfo);\n\n let encryptedBundle: import('../types/auth.js').EncryptedOAuthBundle | undefined;\n if (result.refreshToken) {\n encryptedBundle = await encryptRefreshToken(result.refreshToken, secretKey);\n }\n\n this.#clearKey(secretKey);\n\n const category = config.category || 'authentication';\n\n const trustEntry: TrustProviderEntry = {\n type: 'oauth',\n category,\n sub: result.sub,\n verifiedAt: Date.now(),\n expiresAt: result.expiresAt,\n scope: result.scope,\n encryptedBundle,\n accessToken: result.accessToken,\n };\n\n const trustProviders = {\n ...(keyInfo.trustProviders || {}),\n [config.provider]: trustEntry,\n };\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n trustProviders,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n\n return {\n ...result,\n linked: true,\n };\n }\n\n /**\n * Initiate OAuth flow (redirects to provider)\n * Call this to start the flow, then handle the callback with completeOAuthCallback\n */\n async initiateProviderAuth(config: OAuthProviderConfig): Promise<void> {\n const preset = BUILTIN_PROVIDERS[config.provider];\n const scope = config.scope || preset?.defaultScope || 'openid profile';\n const authorizationUrl = preset?.authorizationUrl;\n\n if (!authorizationUrl && config.provider !== 'custom') {\n throw new Error(`Unknown provider '${config.provider}'. Provide authorizationUrl or use a built-in provider.`);\n }\n\n await initiateOAuthFlow({\n provider: config.provider,\n clientId: config.clientId,\n redirectUri: config.redirectUri,\n scope,\n authorizationUrl: config.provider === 'custom' ? config.redirectUri : undefined,\n });\n }\n\n /**\n * Complete OAuth flow after callback\n * Exchanges code for tokens and links the identity\n */\n async completeOAuthCallback(config: OAuthProviderConfig): Promise<OAuthAuthResult> {\n const manager = this.getManager();\n const keyInfo = manager.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n const result = await completeOAuthFlow();\n\n const secretKey = await this.#resolveSecretKey(manager, keyInfo);\n\n let encryptedBundle: import('../types/auth.js').EncryptedOAuthBundle | undefined;\n if (result.refreshToken) {\n encryptedBundle = await encryptRefreshToken(result.refreshToken, secretKey);\n }\n\n this.#clearKey(secretKey);\n\n const category = config.category || 'authentication';\n\n const trustEntry: TrustProviderEntry = {\n type: 'oauth',\n category,\n sub: result.sub,\n verifiedAt: Date.now(),\n expiresAt: result.expiresAt,\n scope: result.scope,\n encryptedBundle,\n accessToken: result.accessToken,\n };\n\n const trustProviders = {\n ...(keyInfo.trustProviders || {}),\n [config.provider]: trustEntry,\n };\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n trustProviders,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n\n return {\n ...result,\n linked: true,\n };\n }\n\n /**\n * Link an OAuth identity to the current Nostr key\n * Stores encrypted refresh token for silent re-auth\n */\n async linkProvider(config: OAuthProviderConfig): Promise<void> {\n const manager = this.getManager();\n const keyInfo = manager.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n await this.initiateProviderAuth(config);\n }\n\n /**\n * Unlink a provider from the current Nostr key\n * Works for all provider types: OAuth, EUDI, vLEI, ZKP\n */\n async unlinkProvider(provider: string): Promise<void> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n if (!keyInfo.trustProviders?.[provider]) {\n throw new Error(`Provider '${provider}' is not linked.`);\n }\n\n const { [provider]: _, ...rest } = keyInfo.trustProviders;\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n trustProviders: Object.keys(rest).length > 0 ? rest : undefined,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n }\n\n /**\n * Get all linked providers\n */\n getLinkedProviders(filter?: { type?: string; category?: string }): LinkedProviderStatus[] {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.trustProviders) return [];\n\n return Object.entries(keyInfo.trustProviders)\n .filter(([_, entry]) => {\n if (filter?.type && entry.type !== filter.type) return false;\n if (filter?.category && entry.category !== filter.category) return false;\n return true;\n })\n .map(([provider, entry]) => ({\n provider,\n type: entry.type,\n category: entry.category,\n sub: entry.sub,\n expiresAt: entry.expiresAt,\n }));\n }\n\n /**\n * Get an access token for a linked provider\n * Auto-refreshes if the stored token is expired\n */\n async getProviderAccessToken(provider: string): Promise<string> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.trustProviders?.[provider]) {\n throw new Error(`Provider '${provider}' is not linked.`);\n }\n\n const entry = keyInfo.trustProviders[provider];\n\n if (entry.type !== 'oauth') {\n throw new Error(`Provider '${provider}' is not an OAuth provider.`);\n }\n\n if (entry.accessToken && (!entry.expiresAt || Date.now() < entry.expiresAt - 60000)) {\n return entry.accessToken;\n }\n\n if (!entry.encryptedBundle) {\n throw new Error(`No refresh token available for provider '${provider}'. Re-authenticate.`);\n }\n\n const manager = this.getManager();\n const secretKey = await this.#resolveSecretKey(manager, keyInfo);\n const refreshToken = await decryptRefreshToken(entry.encryptedBundle, secretKey);\n this.#clearKey(secretKey);\n\n const preset = BUILTIN_PROVIDERS[provider];\n if (!preset) {\n throw new Error(`Cannot refresh token for provider '${provider}' — no token URL configured.`);\n }\n\n const refreshed = await refreshAccessToken({\n tokenUrl: preset.tokenUrl,\n clientId: provider,\n refreshToken,\n });\n\n const updatedEntry: TrustProviderEntry = {\n ...entry,\n accessToken: refreshed.accessToken,\n expiresAt: Date.now() + refreshed.expiresIn * 1000,\n scope: refreshed.scope || entry.scope || '',\n };\n\n if (refreshed.refreshToken) {\n const manager2 = this.getManager();\n const secretKey2 = await this.#resolveSecretKey(manager2, keyInfo);\n updatedEntry.encryptedBundle = await encryptRefreshToken(refreshed.refreshToken, secretKey2);\n this.#clearKey(secretKey2);\n }\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n trustProviders: {\n ...keyInfo.trustProviders,\n [provider]: updatedEntry,\n },\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n\n return refreshed.accessToken;\n }\n\n /**\n * Publish a provider link to kind-0 profile\n */\n async publishProviderLink(\n relayService: RelayService,\n provider: string,\n ): Promise<boolean> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.trustProviders?.[provider]) {\n throw new Error(`Provider '${provider}' is not linked.`);\n }\n\n const entry = keyInfo.trustProviders[provider];\n\n if (entry.type === 'oauth') {\n const pubkey = await this.getPublicKey();\n const tags: string[][] = [\n ['oauth', provider, entry.sub, entry.verifiedAt.toString()],\n ];\n if (entry.expiresAt) {\n tags[0].push(entry.expiresAt.toString());\n }\n\n const event: Event = {\n kind: 0,\n content: '',\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await this.signEvent(event);\n return relayService.publishEvent(signedEvent);\n }\n\n throw new Error(`Publishing provider type '${entry.type}' to kind-0 is not yet supported.`);\n }\n\n /**\n * Unpublish a provider link from kind-0 profile\n */\n async unpublishProviderLink(\n relayService: RelayService,\n provider: string,\n ): Promise<boolean> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.trustProviders?.[provider]) {\n throw new Error(`Provider '${provider}' is not linked.`);\n }\n\n await this.unlinkProvider(provider);\n\n const pubkey = await this.getPublicKey();\n const existing = await relayService.fetchKind0Event(pubkey);\n if (!existing) return true;\n\n const tags = existing.tags.filter(\n (tag) => tag[0] !== 'oauth' || tag[1] !== provider,\n );\n\n const event: Event = {\n kind: 0,\n content: existing.content,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await this.signEvent(event);\n return relayService.publishEvent(signedEvent);\n }\n\n // ─── Internal Helpers ────────────────────────────────────────────\n\n async #resolveSecretKey(manager: KeyManager, keyInfo: KeyInfo): Promise<Uint8Array> {\n if (keyInfo.passwordProtectedBundle) {\n throw new Error('Password required for OAuth operations on password-protected keys.');\n }\n\n const { getPrfSecret } = await import('../utils/prf-handler.js');\n const { secret } = await getPrfSecret(hexToBytes(keyInfo.credentialId));\n return secret;\n }\n\n #clearKey(key: Uint8Array): void {\n key?.fill?.(0);\n }\n}\n\n","export const MAX_ROLE_LENGTH = 100;\nconst ROLE_PATTERN = /^[a-zA-Z0-9\\s\\-_]+$/;\n\nexport const isValidRoleTag = (role: string): boolean => {\n const trimmed = role.trim();\n return (\n trimmed.length > 0 &&\n trimmed.length <= MAX_ROLE_LENGTH &&\n ROLE_PATTERN.test(trimmed)\n );\n};\n\nexport const isValidPubkey = (pubkey: string): boolean =>\n pubkey.length === 64 && /^[0-9a-fA-F]+$/.test(pubkey);\n\nexport const isValidHttpUrl = (url: string): boolean => {\n try {\n const parsed = new URL(url);\n return ['http:', 'https:'].includes(parsed.protocol);\n } catch {\n return false;\n }\n};\n\nexport const isValidRelayUrl = (url: string): boolean => {\n try {\n const parsed = new URL(url);\n return ['ws:', 'wss:'].includes(parsed.protocol) && parsed.hostname.length > 0;\n } catch {\n return false;\n }\n};\n","import type { EventStore } from 'applesauce-core';\nimport type { Event } from '../types/nostr.js';\nimport type { ProfileMetadata, FollowEntry } from '../types/nostr.js';\nimport type { RelayServiceConfig } from '../types/auth.js';\nimport type { RootOfTrustInfo } from '../types/vlei.js';\nimport { parseVLEITag, createVLEITag } from '../types/vlei.js';\nimport type { EUDIClaims } from '../types/eudi.js';\nimport { parseEUDITag, createEUDITag } from '../types/eudi.js';\nimport type { ZKPClaims } from '../types/zkp.js';\nimport { createZKPTag, parseZKPTag } from '../types/zkp.js';\nimport type { EUDILegalClaims } from '../types/eudi.js';\nimport { createEUDILegalTag, parseEUDILegalTag } from '../types/eudi.js';\nimport { createZKMGroupTag, parseZKMTag, type ZKMGroupInfo } from '../types/zkm.js';\nimport { isValidPubkey, isValidRelayUrl, isValidRoleTag } from '../utils/validation.js';\n\n/**\n * Service for communicating with Nostr relays using applesauce-core\n */\nexport class RelayService {\n private eventStore: EventStore | null = null;\n private relayUrls: string[];\n private readonly maxProfileContentSize = 10000;\n private readonly minProfileQueryIntervalMs = 300;\n private readonly minPublishIntervalMs = 750;\n private readonly lastActionAt = new Map<string, number>();\n\n constructor(config: RelayServiceConfig) {\n if (!config.relayUrls || config.relayUrls.length === 0) {\n throw new Error('relayUrls is required. Provide at least one relay URL.');\n }\n this.relayUrls = this.validateRelayUrls(config.relayUrls);\n }\n\n /**\n * Initialize with applesauce EventStore\n */\n initialize(eventStore: EventStore): void {\n this.eventStore = eventStore;\n // Set default relays if EventStore has a method for it\n if (eventStore && 'setRelays' in eventStore && typeof eventStore.setRelays === 'function') {\n (eventStore as any).setRelays(this.relayUrls);\n }\n }\n\n /**\n * Set relay URLs\n */\n setRelays(urls: string[]): void {\n this.relayUrls = this.validateRelayUrls(urls);\n if (this.eventStore && 'setRelays' in this.eventStore && typeof this.eventStore.setRelays === 'function') {\n (this.eventStore as any).setRelays(this.relayUrls);\n }\n }\n\n /**\n * Get current relay URLs\n */\n getRelays(): string[] {\n return [...this.relayUrls];\n }\n\n /**\n * Publish an event to relays\n */\n async publishEvent(event: Event, timeoutMs = 1000): Promise<boolean> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n await this.enforceRateLimit('publish', this.minPublishIntervalMs);\n return new Promise((resolve, reject) => {\n if (this.relayUrls.length === 0) {\n reject(new Error('No relays configured'));\n return;\n }\n\n // Use EventStore's publish method\n // Note: This is a simplified implementation - actual applesauce API may differ\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.publish !== 'function') {\n reject(new Error('EventStore does not support publish method'));\n return;\n }\n const subscription = eventStore.publish(event).subscribe({\n next: (response: any) => {\n if (response?.type === 'OK') {\n subscription.unsubscribe();\n resolve(true);\n }\n },\n error: (error: Error) => {\n subscription.unsubscribe();\n reject(error);\n },\n });\n\n // Timeout fallback\n setTimeout(() => {\n subscription.unsubscribe();\n resolve(false);\n }, timeoutMs);\n });\n }\n\n /**\n * Fetch a profile (Kind 0 event)\n */\n async fetchProfile(pubkey: string): Promise<ProfileMetadata | null> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n await this.enforceRateLimit('fetch-profile', this.minProfileQueryIntervalMs);\n return new Promise((resolve) => {\n const filter = {\n kinds: [0],\n authors: [pubkey],\n limit: 1,\n };\n\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.query !== 'function') {\n resolve(null);\n return;\n }\n const subscription = eventStore.query(filter).subscribe({\n next: (packet: any) => {\n if (packet?.event && packet.event.kind === 0) {\n const metadata = this.parseProfileMetadata(packet.event.content);\n if (metadata) {\n subscription.unsubscribe();\n resolve(metadata);\n return;\n }\n console.error('Failed to parse profile metadata');\n }\n },\n complete: () => {\n subscription.unsubscribe();\n resolve(null);\n },\n error: (error: Error) => {\n console.error('Error fetching profile:', error);\n subscription.unsubscribe();\n resolve(null);\n },\n });\n\n // Timeout\n setTimeout(() => {\n subscription.unsubscribe();\n resolve(null);\n }, 5000);\n });\n }\n\n /**\n * Fetch role tag from profile event (Kind 0)\n */\n async fetchProfileRoleTag(pubkey: string): Promise<string | null> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n await this.enforceRateLimit('fetch-role-tag', this.minProfileQueryIntervalMs);\n return new Promise((resolve) => {\n const filter = {\n kinds: [0],\n authors: [pubkey],\n limit: 1,\n };\n\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.query !== 'function') {\n resolve(null);\n return;\n }\n const subscription = eventStore.query(filter).subscribe({\n next: (packet: any) => {\n if (packet?.event && packet.event.kind === 0) {\n const tags = packet.event.tags || [];\n for (const tag of tags) {\n if (tag[0] === 'role' && tag[1]) {\n const candidate = tag[1].trim();\n if (isValidRoleTag(candidate)) {\n subscription.unsubscribe();\n resolve(candidate);\n return;\n }\n }\n }\n subscription.unsubscribe();\n resolve(null);\n }\n },\n complete: () => {\n subscription.unsubscribe();\n resolve(null);\n },\n error: (error: Error) => {\n console.error('Error fetching profile role tag:', error);\n subscription.unsubscribe();\n resolve(null);\n },\n });\n\n setTimeout(() => {\n subscription.unsubscribe();\n resolve(null);\n }, 5000);\n });\n }\n\n /**\n * Fetch a follow list (Kind 3 event)\n */\n async fetchFollowList(pubkey: string): Promise<FollowEntry[]> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n await this.enforceRateLimit('fetch-follow-list', this.minProfileQueryIntervalMs);\n return new Promise((resolve) => {\n const filter = {\n kinds: [3],\n authors: [pubkey],\n limit: 1,\n };\n\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.query !== 'function') {\n resolve([]);\n return;\n }\n const subscription = eventStore.query(filter).subscribe({\n next: (packet: any) => {\n if (packet?.event && packet.event.kind === 3) {\n const followList: FollowEntry[] = [];\n const tags = packet.event.tags || [];\n\n for (const tag of tags) {\n if (tag[0] === 'p' && tag[1]) {\n followList.push({\n pubkey: tag[1],\n relay: tag[2] || undefined,\n petname: tag[3] || undefined,\n });\n }\n }\n\n subscription.unsubscribe();\n resolve(followList);\n }\n },\n complete: () => {\n subscription.unsubscribe();\n resolve([]);\n },\n error: (error: Error) => {\n console.error('Error fetching follow list:', error);\n subscription.unsubscribe();\n resolve([]);\n },\n });\n\n setTimeout(() => {\n subscription.unsubscribe();\n resolve([]);\n }, 10000);\n });\n }\n\n /**\n * Fetch multiple profiles in batch\n */\n async fetchMultipleProfiles(pubkeys: string[]): Promise<Map<string, ProfileMetadata>> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n if (pubkeys.length === 0) {\n return new Map();\n }\n\n await this.enforceRateLimit('fetch-multiple-profiles', this.minProfileQueryIntervalMs);\n return new Promise((resolve) => {\n const profiles = new Map<string, ProfileMetadata>();\n const filter = {\n kinds: [0],\n authors: pubkeys,\n };\n\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.query !== 'function') {\n resolve(new Map());\n return;\n }\n const subscription = eventStore.query(filter).subscribe({\n next: (packet: any) => {\n if (packet?.event && packet.event.kind === 0 && packet.event.pubkey) {\n const metadata = this.parseProfileMetadata(packet.event.content);\n if (metadata) {\n profiles.set(packet.event.pubkey, metadata);\n } else {\n console.error('Failed to parse profile metadata');\n }\n }\n },\n complete: () => {\n subscription.unsubscribe();\n resolve(profiles);\n },\n error: (error: Error) => {\n console.error('Error fetching profiles:', error);\n subscription.unsubscribe();\n resolve(profiles);\n },\n });\n\n setTimeout(() => {\n subscription.unsubscribe();\n resolve(profiles);\n }, 1000);\n });\n }\n\n /**\n * Query kind 0 events (profiles) by pubkey\n * If pubkeys array is empty, fetches recent kind 0 events\n */\n async queryProfiles(pubkeys: string[] = [], limit = 100): Promise<Map<string, ProfileMetadata>> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n await this.enforceRateLimit('query-profiles', this.minProfileQueryIntervalMs);\n return new Promise((resolve) => {\n const profiles = new Map<string, { metadata: ProfileMetadata; timestamp: number }>();\n const filter: any = {\n kinds: [0],\n limit,\n };\n\n if (pubkeys.length > 0) {\n filter.authors = pubkeys;\n }\n\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.query !== 'function') {\n resolve(new Map());\n return;\n }\n const subscription = eventStore.query(filter).subscribe({\n next: (packet: any) => {\n if (packet?.event && packet.event.kind === 0 && packet.event.pubkey) {\n const metadata = this.parseProfileMetadata(packet.event.content);\n if (metadata) {\n const timestamp = packet.event.created_at || 0;\n const existing = profiles.get(packet.event.pubkey);\n if (!existing || timestamp > existing.timestamp) {\n profiles.set(packet.event.pubkey, { metadata, timestamp });\n }\n } else {\n console.error('Failed to parse profile metadata');\n }\n }\n },\n complete: () => {\n subscription.unsubscribe();\n const result = new Map<string, ProfileMetadata>();\n profiles.forEach((value, pubkey) => {\n result.set(pubkey, value.metadata);\n });\n resolve(result);\n },\n error: (error: Error) => {\n console.error('Error querying profiles:', error);\n subscription.unsubscribe();\n const result = new Map<string, ProfileMetadata>();\n profiles.forEach((value, pubkey) => {\n result.set(pubkey, value.metadata);\n });\n resolve(result);\n },\n });\n\n setTimeout(() => {\n subscription.unsubscribe();\n const result = new Map<string, ProfileMetadata>();\n profiles.forEach((value, pubkey) => {\n result.set(pubkey, value.metadata);\n });\n resolve(result);\n }, 10000);\n });\n }\n\n /**\n * Publish or update a kind 3 event (follow list/contacts)\n */\n async publishFollowList(\n _pubkey: string,\n followList: FollowEntry[],\n signEvent: (event: Event) => Promise<Event>\n ): Promise<boolean> {\n const tags: string[][] = followList.map((entry) => {\n if (!isValidPubkey(entry.pubkey)) {\n throw new Error('Invalid pubkey format for follow list entry.');\n }\n if (entry.relay && !isValidRelayUrl(entry.relay)) {\n throw new Error('Invalid relay URL format for follow list entry.');\n }\n const tag: string[] = ['p', entry.pubkey];\n if (entry.relay) {\n tag.push(entry.relay);\n }\n if (entry.petname) {\n tag.push(entry.petname);\n }\n return tag;\n });\n\n const event: Event = {\n kind: 3,\n content: '',\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Fetch the latest kind 0 event for a pubkey, returning the full event (content + tags)\n */\n async fetchKind0Event(pubkey: string): Promise<{ content: string; tags: string[][] } | null> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n return new Promise((resolve) => {\n const filter = {\n kinds: [0],\n authors: [pubkey],\n limit: 1,\n };\n\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.query !== 'function') {\n resolve(null);\n return;\n }\n\n let found: { content: string; tags: string[][] } | null = null;\n\n const subscription = eventStore.query(filter).subscribe({\n next: (packet: any) => {\n if (packet?.event && packet.event.kind === 0) {\n found = {\n content: packet.event.content || '{}',\n tags: packet.event.tags || [],\n };\n }\n },\n complete: () => {\n subscription.unsubscribe();\n resolve(found);\n },\n error: () => {\n subscription.unsubscribe();\n resolve(found);\n },\n });\n\n setTimeout(() => {\n subscription.unsubscribe();\n resolve(found);\n }, 5000);\n });\n }\n\n /**\n * Publish or update a kind 0 event with recovery data\n * Fetches the existing kind-0, preserves all content and tags, and amends the recovery \"r\" tag\n * @param pubkey The identity's public key\n * @param recoveryData Recovery data { recoveryPubkey, recoverySalt, createdAt, signature }\n * @param signEvent Callback to sign the event\n * @param content Optional content to use instead of fetching the existing kind-0. If not provided, the existing kind-0 content is preserved. Falls back to \"{}\" if no existing event.\n */\n async publishRecoveryToKind0(\n pubkey: string,\n recoveryData: { recoveryPubkey: string; recoverySalt: string; createdAt?: number; signature?: string },\n signEvent: (event: Event) => Promise<Event>,\n content?: string\n ): Promise<boolean> {\n let existingContent = content;\n let existingTags: string[][] = [];\n\n if (!existingContent) {\n const existing = await this.fetchKind0Event(pubkey);\n if (existing) {\n existingContent = existing.content;\n existingTags = existing.tags;\n } else {\n existingContent = '{}';\n }\n }\n\n const recoveryTag: string[] = [\n 'r',\n recoveryData.recoveryPubkey,\n recoveryData.recoverySalt,\n recoveryData.createdAt?.toString() || '',\n recoveryData.signature || '',\n ];\n\n const tags = existingTags.filter((tag) => tag[0] !== 'r');\n tags.push(recoveryTag);\n\n const event: Event = {\n kind: 0,\n content: existingContent,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Publish or update a kind 0 event with vLEI root of trust data\n * Fetches the existing kind-0, preserves all content and tags, and adds/replaces vLEI tag\n * Supports multiple roles via multiple vLEI tags\n * @param pubkey The identity's public key\n * @param rootOfTrust vLEI root of trust info\n * @param signEvent Callback to sign the event\n */\n async publishVLEIToKind0(\n pubkey: string,\n rootOfTrust: RootOfTrustInfo,\n signEvent: (event: Event) => Promise<Event>\n ): Promise<boolean> {\n const existing = await this.fetchKind0Event(pubkey);\n const existingContent = existing?.content || '{}';\n const existingTags = existing?.tags || [];\n\n const vleiTag = createVLEITag(rootOfTrust);\n\n const tags = existingTags.filter((tag) => tag[0] !== 'vlei' || !this.#isSameRoleVLEITag(tag, rootOfTrust.role));\n tags.push(vleiTag as string[]);\n\n const event: Event = {\n kind: 0,\n content: existingContent,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Fetch all vLEI tags from a kind-0 event\n * @param pubkey The identity's public key\n */\n async fetchVLEITags(pubkey: string): Promise<RootOfTrustInfo[]> {\n const existing = await this.fetchKind0Event(pubkey);\n if (!existing?.tags) return [];\n\n const vleiTags: RootOfTrustInfo[] = [];\n for (const tag of existing.tags) {\n if (tag[0] === 'vlei' && tag.length >= 8) {\n const parsed = parseVLEITag(tag);\n if (parsed) {\n vleiTags.push(parsed);\n }\n }\n }\n return vleiTags;\n }\n\n #isSameRoleVLEITag(tag: string[], role: string): boolean {\n if (tag[0] !== 'vlei' || tag.length < 5) return false;\n return tag[4] === role;\n }\n\n /**\n * Publish or update a kind-0 event with EUDI root of trust data\n * Fetches the existing kind-0, preserves all content and tags, and adds/replaces eudi tag\n * @param pubkey The identity's public key\n * @param eudiClaims EUDI claims info\n * @param signEvent Callback to sign the event\n */\n async publishEUDIToKind0(\n pubkey: string,\n eudiClaims: EUDIClaims,\n signEvent: (event: Event) => Promise<Event>\n ): Promise<boolean> {\n const existing = await this.fetchKind0Event(pubkey);\n const existingContent = existing?.content || '{}';\n const existingTags = existing?.tags || [];\n\n const eudiTag = createEUDITag(eudiClaims);\n\n const tags = existingTags.filter((tag) => tag[0] !== 'eudi');\n tags.push(eudiTag as string[]);\n\n const event: Event = {\n kind: 0,\n content: existingContent,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Fetch all EUDI tags from a kind-0 event\n * @param pubkey The identity's public key\n */\n async fetchEUDITags(pubkey: string): Promise<EUDIClaims[]> {\n const existing = await this.fetchKind0Event(pubkey);\n if (!existing?.tags) return [];\n\n const eudiTags: EUDIClaims[] = [];\n for (const tag of existing.tags) {\n if (tag[0] === 'eudi' && tag.length >= 7) {\n const parsed = parseEUDITag(tag);\n if (parsed) {\n eudiTags.push(parsed);\n }\n }\n }\n return eudiTags;\n }\n\n private validateRelayUrls(urls: string[]): string[] {\n if (urls.length === 0) {\n return [];\n }\n const validUrls = urls.filter((url) => isValidRelayUrl(url));\n if (validUrls.length !== urls.length) {\n throw new Error('Invalid relay URL format');\n }\n return validUrls;\n }\n\n private parseProfileMetadata(content: string): ProfileMetadata | null {\n if (content.length > this.maxProfileContentSize) {\n return null;\n }\n try {\n const parsed = JSON.parse(content);\n if (!parsed || typeof parsed !== 'object') {\n return null;\n }\n const metadata: ProfileMetadata = {};\n if (typeof (parsed as ProfileMetadata).name === 'string') {\n metadata.name = (parsed as ProfileMetadata).name;\n }\n if (typeof (parsed as ProfileMetadata).display_name === 'string') {\n metadata.display_name = (parsed as ProfileMetadata).display_name;\n }\n if (typeof (parsed as ProfileMetadata).about === 'string') {\n metadata.about = (parsed as ProfileMetadata).about;\n }\n if (typeof (parsed as ProfileMetadata).picture === 'string') {\n metadata.picture = (parsed as ProfileMetadata).picture;\n }\n if (typeof (parsed as ProfileMetadata).website === 'string') {\n metadata.website = (parsed as ProfileMetadata).website;\n }\n return metadata;\n } catch (error) {\n console.error('Failed to parse profile metadata:', error);\n return null;\n }\n }\n\n private async enforceRateLimit(action: string, minIntervalMs: number): Promise<void> {\n const lastAt = this.lastActionAt.get(action) ?? 0;\n const now = Date.now();\n const waitMs = minIntervalMs - (now - lastAt);\n if (waitMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.lastActionAt.set(action, Date.now());\n }\n\n /**\n * Publish or update a kind-0 event with ZKPassport root of trust data\n * Fetches the existing kind-0, preserves all content and tags, and adds/replaces zkp tag\n * @param pubkey The identity's public key\n * @param zkpClaims ZKPassport claims\n * @param signEvent Callback to sign the event\n */\n async publishZKPToKind0(\n pubkey: string,\n zkpClaims: ZKPClaims,\n signEvent: (event: Event) => Promise<Event>\n ): Promise<boolean> {\n const existing = await this.fetchKind0Event(pubkey);\n const existingContent = existing?.content || '{}';\n const existingTags = existing?.tags || [];\n\n const zkpTag = createZKPTag(zkpClaims);\n\n const tags = existingTags.filter((tag) => tag[0] !== 'zkp');\n tags.push(zkpTag as string[]);\n\n const event: Event = {\n kind: 0,\n content: existingContent,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Fetch all ZKP tags from a kind-0 event\n * @param pubkey The identity's public key\n */\n async fetchZKPTags(pubkey: string): Promise<ZKPClaims[]> {\n const existing = await this.fetchKind0Event(pubkey);\n if (!existing?.tags) return [];\n\n const zkpTags: ZKPClaims[] = [];\n for (const tag of existing.tags) {\n if (tag[0] === 'zkp' && tag.length >= 2) {\n const parsed = parseZKPTag(tag);\n if (parsed) {\n zkpTags.push(parsed);\n }\n }\n }\n return zkpTags;\n }\n\n /**\n * Publish or update a kind-0 event with EUDI Legal PID root of trust data\n * Fetches the existing kind-0, preserves all content and tags, and adds/replaces eudil tag\n * @param pubkey The identity's public key\n * @param legalClaims EUDI Legal PID claims\n * @param signEvent Callback to sign the event\n */\n async publishEUDILegalToKind0(\n pubkey: string,\n legalClaims: EUDILegalClaims,\n signEvent: (event: Event) => Promise<Event>\n ): Promise<boolean> {\n const existing = await this.fetchKind0Event(pubkey);\n const existingContent = existing?.content || '{}';\n const existingTags = existing?.tags || [];\n\n const eudilTag = createEUDILegalTag(legalClaims);\n\n const tags = existingTags.filter((tag) => tag[0] !== 'eudil');\n tags.push(eudilTag as string[]);\n\n const event: Event = {\n kind: 0,\n content: existingContent,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Fetch all EUDI Legal PID tags from a kind-0 event\n * @param pubkey The identity's public key\n */\n async fetchEUDILegalTags(pubkey: string): Promise<EUDILegalClaims[]> {\n const existing = await this.fetchKind0Event(pubkey);\n if (!existing?.tags) return [];\n\n const eudilTags: EUDILegalClaims[] = [];\n for (const tag of existing.tags) {\n if (tag[0] === 'eudil' && tag.length >= 4) {\n const parsed = parseEUDILegalTag(tag);\n if (parsed) {\n eudilTags.push(parsed);\n }\n }\n }\n return eudilTags;\n }\n\n /**\n * Publish ZK Membership group root to kind-0 profile (Semaphore-style)\n * Only publishes root, not individual members or proofs\n * @param pubkey The identity's public key\n * @param group ZKM Group with root\n * @param signEvent Callback to sign the event\n */\n async publishZKMGroupToKind0(\n pubkey: string,\n group: ZKMGroupInfo,\n signEvent: (event: Event) => Promise<Event>\n ): Promise<boolean> {\n const existing = await this.fetchKind0Event(pubkey);\n const existingContent = existing?.content || '{}';\n const existingTags = existing?.tags || [];\n\n const zkmTag = createZKMGroupTag(group);\n\n const tags = existingTags.filter((tag) => tag[0] !== 'zkm' || tag[1] !== group.groupId);\n tags.push(zkmTag as string[]);\n\n const event: Event = {\n kind: 0,\n content: existingContent,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Fetch all ZK Membership group roots from a kind-0 event (Semaphore-style)\n * @param pubkey The identity's public key\n */\n async fetchZKMGroups(pubkey: string): Promise<ZKMGroupInfo[]> {\n const existing = await this.fetchKind0Event(pubkey);\n if (!existing?.tags) return [];\n\n const zkmTags: ZKMGroupInfo[] = [];\n for (const tag of existing.tags) {\n if (tag[0] === 'zkm' && tag.length >= 3) {\n const parsed = parseZKMTag(tag);\n if (parsed) {\n zkmTags.push(parsed);\n }\n }\n }\n return zkmTags;\n }\n}\n\n","/**\n * EUDI Service - OpenID4VP verification with walt.id\n * @packageDocumentation\n */\n\nimport type {\n EUDIClaims,\n EUDILegalClaims,\n EUDISession,\n EUDIVerifierConfig,\n EUDISessionRequest,\n} from '../types/eudi.js';\nimport { EUDI_PID_SCHEMA, EUDI_LEGAL_PID_SCHEMA } from '../types/eudi.js';\n\nfunction base64urlDecode(encoded: string): Uint8Array {\n let base64 = encoded.replace(/-/g, '+').replace(/_/g, '/');\n while (base64.length % 4) {\n base64 += '=';\n }\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n\nexport class EUDIService {\n #config: EUDIVerifierConfig | null = null;\n #connected = false;\n #sessions: Map<string, EUDISession> = new Map();\n\n async connect(config: EUDIVerifierConfig): Promise<void> {\n if (this.#connected && this.#config?.url === config.url) {\n return;\n }\n\n const testResponse = await fetch(`${config.url}/health`, {\n method: 'GET',\n });\n\n if (!testResponse.ok) {\n throw new Error(`EUDI verifier not available at ${config.url}`);\n }\n\n this.#config = config;\n this.#connected = true;\n }\n\n async disconnect(): Promise<void> {\n this.#config = null;\n this.#connected = false;\n this.#sessions.clear();\n }\n\n isConnected(): boolean {\n return this.#connected && this.#config !== null;\n }\n\n getConfig(): EUDIVerifierConfig | null {\n return this.#config;\n }\n\n /**\n * Create a new verification session\n * Returns session info including verification URL and request URI\n */\n async createVerificationSession(): Promise<EUDISession> {\n if (!this.#config) {\n throw new Error('Not connected to EUDI verifier. Call connect() first.');\n }\n\n const nonce = this.#generateNonce();\n const sessionId = this.#generateSessionId();\n const expiresAt = Math.floor(Date.now() / 1000) + 300;\n\n const presentationDefinition: EUDISessionRequest['presentation_definition'] = {\n id: 'pid-request',\n input_descriptors: [\n {\n id: 'pid',\n constraints: {\n fields: [\n {\n path: ['$.vct'],\n filter: {\n type: 'string',\n const: EUDI_PID_SCHEMA,\n },\n },\n ],\n },\n },\n ],\n };\n\n const sessionRequest: EUDISessionRequest = {\n presentation_definition: presentationDefinition,\n nonce,\n state: sessionId,\n };\n\n const response = await fetch(`${this.#config.url}/api/v1/presentations/sessions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n body: JSON.stringify(sessionRequest),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(`Failed to create verification session: ${response.status} ${errorText}`);\n }\n\n const result = await response.json() as {\n session_id: string;\n session_url: string;\n expiry: number;\n };\n\n const session: EUDISession = {\n sessionId: result.session_id,\n challenge: nonce,\n verificationUrl: result.session_url,\n requestUri: `${this.#config.url}/api/v1/presentations/sessions/${result.session_id}/request`,\n expiresAt: result.expiry || expiresAt,\n };\n\n this.#sessions.set(session.sessionId, session);\n return session;\n }\n\n /**\n * Poll for verification result\n */\n async pollVerificationResult(sessionId: string): Promise<{\n status: 'pending' | 'verified' | 'failed';\n claims?: EUDIClaims;\n }> {\n if (!this.#config) {\n throw new Error('Not connected to EUDI verifier');\n }\n\n const session = this.#sessions.get(sessionId);\n if (!session) {\n throw new Error('Session not found');\n }\n\n if (Math.floor(Date.now() / 1000) > session.expiresAt) {\n return { status: 'failed' };\n }\n\n const response = await fetch(\n `${this.#config.url}/api/v1/presentations/sessions/${sessionId}`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to check verification status: ${response.status}`);\n }\n\n const result = await response.json() as {\n status: string;\n vp_token?: string;\n presentation_submission?: unknown;\n };\n\n switch (result.status) {\n case 'REQUESTED':\n case 'PRESENTED':\n return { status: 'pending' };\n case 'VERIFIED':\n case 'ACCEPTED':\n if (result.vp_token) {\n const claims = await this.#extractClaimsFromVP(result.vp_token, session.challenge);\n return { status: 'verified', claims };\n }\n return { status: 'failed' };\n case 'REJECTED':\n case 'EXPIRED':\n case 'ERROR':\n return { status: 'failed' };\n default:\n return { status: 'pending' };\n }\n }\n\n /**\n * Verify EUDI credentials and return claims\n * This is the main entry point for verification\n */\n async verifyEUDI(): Promise<EUDIClaims> {\n if (!this.#config) {\n throw new Error('Not connected to EUDI verifier. Call connect() first.');\n }\n\n const session = await this.createVerificationSession();\n\n const maxAttempts = 60;\n const pollInterval = 2000;\n let attempts = 0;\n\n while (attempts < maxAttempts) {\n const result = await this.pollVerificationResult(session.sessionId);\n\n if (result.status === 'verified' && result.claims) {\n return result.claims;\n }\n\n if (result.status === 'failed') {\n throw new Error('EUDI verification failed or was rejected');\n }\n\n await new Promise((resolve) => setTimeout(resolve, pollInterval));\n attempts++;\n }\n\n throw new Error('EUDI verification timed out');\n }\n\n /**\n * Get active sessions\n */\n getActiveSessions(): EUDISession[] {\n const now = Math.floor(Date.now() / 1000);\n return Array.from(this.#sessions.values()).filter((s) => s.expiresAt > now);\n }\n\n /**\n * Clear expired sessions\n */\n clearExpiredSessions(): void {\n const now = Math.floor(Date.now() / 1000);\n for (const [id, session] of this.#sessions.entries()) {\n if (session.expiresAt <= now) {\n this.#sessions.delete(id);\n }\n }\n }\n\n #generateNonce(): string {\n const array = new Uint8Array(32);\n crypto.getRandomValues(array);\n return Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join('');\n }\n\n #generateSessionId(): string {\n const array = new Uint8Array(16);\n crypto.getRandomValues(array);\n return Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join('');\n }\n\n async #extractClaimsFromVP(vpToken: string, _challenge: string): Promise<EUDIClaims> {\n const parts = vpToken.split('.');\n if (parts.length < 2) {\n throw new Error('Invalid VP token format');\n }\n\n const payload = base64urlDecode(parts[1]);\n const payloadObj = JSON.parse(new TextDecoder().decode(payload)) as {\n iss?: string;\n sub?: string;\n claims?: {\n given_name?: string;\n family_name?: string;\n birthdate?: string;\n nationality?: string;\n };\n _sd_claim?: unknown;\n };\n\n const holderDID = payloadObj.iss || payloadObj.sub || '';\n if (!holderDID) {\n throw new Error('No holderDID found in VP token');\n }\n const sha256 = (await import('@noble/hashes/sha2.js')).sha256;\n const bytesToHex = (await import('@noble/hashes/utils.js')).bytesToHex;\n const uniqueIdentifier = bytesToHex(sha256(new TextEncoder().encode(holderDID))).slice(0, 16);\n \n let nationality = '';\n let isOver18 = false;\n\n if (payloadObj.claims) {\n nationality = payloadObj.claims.nationality || '';\n \n if (payloadObj.claims.birthdate) {\n const birthYear = parseInt(payloadObj.claims.birthdate.slice(0, 4), 10);\n const currentYear = new Date().getFullYear();\n isOver18 = currentYear - birthYear >= 18;\n }\n }\n\n const now = new Date().toISOString();\n\n return {\n uniqueIdentifier,\n isOver18,\n nationality: nationality || undefined,\n verifiedAt: now,\n };\n }\n\n /**\n * Create a verification session for Legal PID credentials\n */\n async createLegalPIDVerificationSession(): Promise<EUDISession> {\n if (!this.#config) {\n throw new Error('Not connected to EUDI verifier. Call connect() first.');\n }\n\n const nonce = this.#generateNonce();\n const sessionId = this.#generateSessionId();\n const expiresAt = Math.floor(Date.now() / 1000) + 300;\n\n const presentationDefinition: EUDISessionRequest['presentation_definition'] = {\n id: 'lpid-request',\n input_descriptors: [\n {\n id: 'lpid',\n constraints: {\n fields: [\n {\n path: ['$.vct'],\n filter: {\n type: 'string',\n const: EUDI_LEGAL_PID_SCHEMA,\n },\n },\n ],\n },\n },\n ],\n };\n\n const sessionRequest: EUDISessionRequest = {\n presentation_definition: presentationDefinition,\n nonce,\n state: sessionId,\n };\n\n const response = await fetch(`${this.#config.url}/api/v1/presentations/sessions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n body: JSON.stringify(sessionRequest),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(`Failed to create Legal PID verification session: ${response.status} ${errorText}`);\n }\n\n const result = await response.json() as {\n session_id: string;\n session_url: string;\n expiry: number;\n };\n\n const session: EUDISession = {\n sessionId: result.session_id,\n challenge: nonce,\n verificationUrl: result.session_url,\n requestUri: `${this.#config.url}/api/v1/presentations/sessions/${result.session_id}/request`,\n expiresAt: result.expiry || expiresAt,\n };\n\n this.#sessions.set(session.sessionId, session);\n return session;\n }\n\n /**\n * Verify EUDI Legal PID credentials and return claims\n */\n async verifyEUDILegalPID(): Promise<EUDILegalClaims> {\n if (!this.#config) {\n throw new Error('Not connected to EUDI verifier. Call connect() first.');\n }\n\n const session = await this.createLegalPIDVerificationSession();\n\n const maxAttempts = 60;\n const pollInterval = 2000;\n let attempts = 0;\n\n while (attempts < maxAttempts) {\n const result = await this.pollVerificationResult(session.sessionId);\n\n if (result.status === 'verified' && result.claims) {\n throw new Error('Use verifyEUDILegalPIDClaims() to extract legal claims from VP');\n }\n\n if (result.status === 'failed') {\n throw new Error('EUDI Legal PID verification failed or was rejected');\n }\n\n await new Promise((resolve) => setTimeout(resolve, pollInterval));\n attempts++;\n }\n\n throw new Error('EUDI Legal PID verification timed out');\n }\n\n /**\n * Extract Legal PID claims from a verified VP token\n */\n async extractLegalPIDClaims(vpToken: string, _challenge: string): Promise<EUDILegalClaims> {\n const parts = vpToken.split('.');\n if (parts.length < 2) {\n throw new Error('Invalid VP token format');\n }\n\n const payload = base64urlDecode(parts[1]);\n const payloadObj = JSON.parse(new TextDecoder().decode(payload)) as {\n iss?: string;\n sub?: string;\n claims?: {\n legal_name?: string;\n lei?: string;\n legal_form?: string;\n registered_address?: string;\n vat_number?: string;\n tax_reference?: string;\n };\n _sd_claim?: unknown;\n };\n\n const holderDID = payloadObj.iss || payloadObj.sub || '';\n const claims = payloadObj.claims || {};\n const now = new Date().toISOString();\n\n return {\n holderDID,\n legalName: claims.legal_name || '',\n lei: claims.lei || '',\n legalForm: claims.legal_form,\n registeredAddress: claims.registered_address,\n vatNumber: claims.vat_number,\n taxReference: claims.tax_reference,\n verifiedAt: now,\n };\n }\n}\n\nexport function isEUDIAvailable(): Promise<boolean> {\n return Promise.resolve(true);\n}","/**\n * ZKPassport Service - Zero-knowledge passport verification\n * @packageDocumentation\n */\n\nimport type {\n ZKPClaims,\n ZKPVerifierConfig,\n ZKPVerificationRequest,\n} from '../types/zkp.js';\n\nlet ZKPPackage: any = null;\n\nasync function loadZKPassport(): Promise<any> {\n if (!ZKPPackage) {\n ZKPPackage = await import('@zkpassport/sdk');\n }\n return ZKPPackage;\n}\n\nexport interface ZKPSession {\n queryUrl: string;\n resolve: (claims: ZKPClaims) => void;\n reject: (error: Error) => void;\n}\n\nexport class ZKPService {\n #config: ZKPVerifierConfig | null = null;\n #connected = false;\n #zkPassport: any = null;\n #currentSession: ZKPSession | null = null;\n\n async connect(config: ZKPVerifierConfig): Promise<void> {\n if (this.#connected && this.#config?.appId === config.appId) {\n return;\n }\n\n const ZKP = await loadZKPassport();\n this.#zkPassport = new ZKP.ZKPassport(window.location.hostname);\n this.#config = config;\n this.#connected = true;\n }\n\n async disconnect(): Promise<void> {\n this.#config = null;\n this.#connected = false;\n this.#zkPassport = null;\n this.#currentSession = null;\n }\n\n isConnected(): boolean {\n return this.#connected && this.#zkPassport !== null;\n }\n\n getConfig(): ZKPVerifierConfig | null {\n return this.#config;\n }\n\n async verifyZKP(options: Partial<ZKPVerificationRequest> = {}): Promise<ZKPClaims> {\n if (!this.#zkPassport) {\n throw new Error('Not connected to ZKP verifier. Call connect() first.');\n }\n\n return new Promise((resolve, reject) => {\n const requestOptions = {\n name: options.name || 'ZKPassport Verification',\n logo: options.logo || 'https://zkpassport.id/favicon.png',\n purpose: options.purpose || 'Proof of identity',\n scope: options.scope || 'eu-adult',\n mode: options.mode || 'fast',\n devMode: options.devMode ?? true,\n };\n\n const queryBuilder = this.#zkPassport.request(requestOptions);\n\n const query = queryBuilder\n .in('nationality', [...getAllCountryCodes(), 'Zero Knowledge Republic'])\n .disclose('firstname')\n .gte('age', 18)\n .disclose('document_type')\n .facematch('strict')\n .sanctions()\n .gte('age', 18)\n .done();\n\n const { url } = query;\n\n this.#currentSession = {\n queryUrl: url,\n resolve,\n reject,\n };\n\n query\n .onRequestReceived(() => {\n console.log('ZKPassport: Request received');\n })\n .onGeneratingProof(() => {\n console.log('ZKPassport: Generating proof');\n })\n .onProofGenerated((result: unknown) => {\n console.log('ZKPassport: Proof generated', result);\n })\n .onResult(async (result: any) => {\n console.log('ZKPassport: Result', result);\n\n const verified = result.verified;\n const uniqueIdentifier = result.uniqueIdentifier;\n const data = result.result;\n const proofSaid = result.proofId || result.proofSaid || uniqueIdentifier;\n const expiresAt = result.expiresAt ? new Date(result.expiresAt).toISOString() : undefined;\n\n if (!verified || !uniqueIdentifier) {\n this.#currentSession?.reject(new Error('ZKPassport verification failed'));\n this.#currentSession = null;\n return;\n }\n\n const claims: ZKPClaims = {\n uniqueIdentifier,\n proofSaid,\n firstName: data?.firstname?.disclose?.result,\n nationality: data?.nationality?.in?.result,\n isOver18: data?.age?.gte?.result,\n isEUCitizen: data?.nationality?.in?.result !== undefined,\n documentType: data?.document_type?.disclose?.result,\n verifiedAt: new Date().toISOString(),\n expiresAt,\n };\n\n this.#currentSession?.resolve(claims);\n this.#currentSession = null;\n })\n .onReject(() => {\n this.#currentSession?.reject(new Error('User rejected ZKPassport request'));\n this.#currentSession = null;\n })\n .onError((error: unknown) => {\n this.#currentSession?.reject(error as Error);\n this.#currentSession = null;\n });\n });\n }\n\n getCurrentQueryUrl(): string | null {\n return this.#currentSession?.queryUrl || null;\n }\n\n cancelVerification(): void {\n if (this.#currentSession) {\n this.#currentSession.reject(new Error('Verification cancelled'));\n this.#currentSession = null;\n }\n }\n}\n\nfunction getAllCountryCodes(): string[] {\n return [\n 'AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR',\n 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE',\n 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ',\n 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD',\n 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR',\n 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM',\n 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI',\n 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF',\n 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS',\n 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU',\n 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT',\n 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN',\n 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK',\n 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME',\n 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ',\n 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA',\n 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU',\n 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM',\n 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS',\n 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI',\n 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV',\n 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK',\n 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA',\n 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI',\n 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW',\n ];\n}\n\nexport function isZKPAvailable(): Promise<boolean> {\n return import('@zkpassport/sdk')\n .then(() => true)\n .catch(() => false);\n}","/**\n * Individual Trust Service - EUDI PID + ZKPassport\n * @packageDocumentation\n */\n\nimport type { EUDIClaims, EUDIVerifierConfig } from '../types/eudi.js';\nimport type { ZKPClaims, ZKPVerifierConfig, ZKPVerificationRequest } from '../types/zkp.js';\nimport { EUDIService } from './eudi.service.js';\nimport { ZKPService } from './zkp.service.js';\n\nexport interface IndividualTrustVerification {\n eudi?: EUDIClaims;\n zkp?: ZKPClaims;\n}\n\nexport class IndividualTrustService {\n #eudiService: EUDIService;\n #zkpService: ZKPService;\n\n constructor() {\n this.#eudiService = new EUDIService();\n this.#zkpService = new ZKPService();\n }\n\n get eudi(): EUDIService {\n return this.#eudiService;\n }\n\n get zkp(): ZKPService {\n return this.#zkpService;\n }\n\n async connectEUDI(config: EUDIVerifierConfig): Promise<void> {\n await this.#eudiService.connect(config);\n }\n\n async connectZKP(config: ZKPVerifierConfig): Promise<void> {\n await this.#zkpService.connect(config);\n }\n\n async disconnect(): Promise<void> {\n await this.#eudiService.disconnect();\n await this.#zkpService.disconnect();\n }\n\n isConnected(): boolean {\n return this.#eudiService.isConnected() || this.#zkpService.isConnected();\n }\n\n async verifyEUDI(): Promise<EUDIClaims> {\n return this.#eudiService.verifyEUDI();\n }\n\n async verifyZKP(options?: Partial<ZKPVerificationRequest>): Promise<ZKPClaims> {\n return this.#zkpService.verifyZKP(options);\n }\n\n getVerificationStatus(): { eudi: boolean; zkp: boolean } {\n return {\n eudi: this.#eudiService.isConnected(),\n zkp: this.#zkpService.isConnected(),\n };\n }\n}","/**\n * KERIA Service - Lazy-loaded KERIA/ACDC credential management\n * @packageDocumentation\n */\n\nimport type {\n KERIAConnection,\n KERIACredential,\n VLEICredentials,\n RootOfTrustInfo,\n KERISignature,\n} from '../types/vlei.js';\nimport { VLEI_SCHEMAS } from '../types/vlei.js';\n\nlet SignifyClientClass: typeof import('@global-vlei/signify-ts').SignifyClient | null = null;\nlet loadPromise: Promise<typeof import('@global-vlei/signify-ts')> | null = null;\n\nasync function loadSignify(): Promise<typeof import('@global-vlei/signify-ts')> {\n if (loadPromise) return loadPromise;\n\n loadPromise = import('@global-vlei/signify-ts');\n const signify = await loadPromise;\n SignifyClientClass = signify.SignifyClient;\n return signify;\n}\n\nexport class KERIAService {\n #client: any = null;\n #aidName: string | null = null;\n #aidPrefix: string | null = null;\n #url: string | null = null;\n #connected = false;\n #cachedCredentials: KERIACredential[] | null = null;\n\n async connect(url: string, bran: string): Promise<KERIAConnection> {\n if (this.#connected && this.#url === url) {\n return {\n url: this.#url,\n aidName: this.#aidName!,\n aidPrefix: this.#aidPrefix!,\n };\n }\n\n const signify = await loadSignify();\n const { ready, Tier } = signify;\n\n await ready();\n\n const bootUrl = url.replace(/:\\d+$/, ':3903');\n const client = new SignifyClientClass!(url, bran, Tier.low, bootUrl);\n\n try {\n await client.connect();\n } catch (e: unknown) {\n const error = e as Error;\n if (error.message?.includes('404') || error.message?.includes('boot')) {\n try {\n await client.boot();\n await client.approveDelegation();\n await client.connect();\n } catch (bootError: unknown) {\n throw new Error(`Failed to boot KERIA agent: ${(bootError as Error).message}`);\n }\n } else {\n throw new Error(`Failed to connect to KERIA: ${error.message}`);\n }\n }\n\n const identifiers = await client.identifiers().list();\n if (!identifiers || identifiers.length === 0) {\n throw new Error('No identifiers found in KERIA agent. Create an AID first.');\n }\n\n const aid = identifiers[0];\n\n this.#client = client;\n this.#aidName = aid.name;\n this.#aidPrefix = aid.prefix;\n this.#url = url;\n this.#connected = true;\n this.#cachedCredentials = null;\n\n return {\n url,\n aidName: aid.name,\n aidPrefix: aid.prefix,\n };\n }\n\n async disconnect(): Promise<void> {\n this.#client = null;\n this.#aidName = null;\n this.#aidPrefix = null;\n this.#url = null;\n this.#connected = false;\n this.#cachedCredentials = null;\n }\n\n isConnected(): boolean {\n return this.#connected && this.#client !== null;\n }\n\n getConnection(): KERIAConnection | null {\n if (!this.#connected || !this.#aidName || !this.#aidPrefix || !this.#url) {\n return null;\n }\n return {\n url: this.#url,\n aidName: this.#aidName,\n aidPrefix: this.#aidPrefix,\n };\n }\n\n async fetchCredentials(): Promise<KERIACredential[]> {\n if (!this.#client) {\n throw new Error('Not connected to KERIA');\n }\n\n if (this.#cachedCredentials) {\n return this.#cachedCredentials;\n }\n\n const creds = await this.#client.credentials().list({ limit: 100 });\n\n this.#cachedCredentials = creds.map((c: unknown) => {\n const cred = c as { sad?: { d?: string; s?: string; i?: string; a?: Record<string, unknown> }; said?: string; schema?: string; attributes?: Record<string, unknown> };\n return {\n said: cred.sad?.d || cred.said || '',\n schema: cred.sad?.s || cred.schema || '',\n issuer: cred.sad?.i || '',\n subject: cred.sad?.a || cred.attributes || {},\n issuanceDate: cred.sad?.a?.dt || '',\n raw: c,\n };\n });\n\n return this.#cachedCredentials!;\n }\n\n async findVLEICredentials(): Promise<VLEICredentials | null> {\n const creds = await this.fetchCredentials();\n\n const entityCred = creds.find((c) => c.schema === VLEI_SCHEMAS.legalEntity);\n const roleCred = creds.find((c) => c.schema === VLEI_SCHEMAS.officialRole);\n\n if (!entityCred || !roleCred) {\n return null;\n }\n\n return {\n entity: entityCred,\n role: roleCred,\n };\n }\n\n async verifyCredentials(): Promise<RootOfTrustInfo> {\n const vlei = await this.findVLEICredentials();\n\n if (!vlei) {\n throw new Error('No vLEI credentials found');\n }\n\n const roleSubject = vlei.role.subject as Record<string, unknown>;\n const entitySubject = vlei.entity.subject as Record<string, unknown>;\n\n const now = new Date().toISOString();\n const expiresAt = roleSubject['e'] as number | undefined;\n const expiresAtISO = expiresAt ? new Date(expiresAt * 1000).toISOString() : undefined;\n\n if (expiresAt && expiresAt < Math.floor(Date.now() / 1000)) {\n throw new Error('vLEI credentials have expired');\n }\n\n return {\n aidPrefix: this.#aidPrefix!,\n lei: (entitySubject['lei'] as string) || '',\n legalName: (entitySubject['legalName'] as string) || '',\n role: (roleSubject['role'] as string) || '',\n roleCredentialSaid: vlei.role.said,\n entityCredentialSaid: vlei.entity.said,\n verifiedAt: now,\n expiresAt: expiresAtISO,\n };\n }\n\n async signChallenge(challenge: string): Promise<KERISignature> {\n if (!this.#client || !this.#aidName) {\n throw new Error('Not connected to KERIA');\n }\n\n const hab = await this.#client.identifiers().get(this.#aidName);\n const keeper = this.#client.manager!.get(hab);\n const challengeBytes = new TextEncoder().encode(challenge);\n const sigs = await keeper.sign(challengeBytes);\n\n return {\n signature: sigs[0],\n signer: this.#aidPrefix!,\n };\n }\n\n getCachedCredentials(): KERIACredential[] {\n return this.#cachedCredentials ?? [];\n }\n\n clearCache(): void {\n this.#cachedCredentials = null;\n }\n}\n\nexport function isKERIAAvailable(): Promise<boolean> {\n return import('@global-vlei/signify-ts')\n .then(() => true)\n .catch(() => false);\n}","/**\n * Organization Trust Service - vLEI + EUDI Legal PID\n * @packageDocumentation\n */\n\nimport type { KERIAConnection, RootOfTrustInfo } from '../types/vlei.js';\nimport type { EUDILegalClaims, EUDIVerifierConfig } from '../types/eudi.js';\nimport { KERIAService } from './keria.service.js';\nimport { EUDIService } from './eudi.service.js';\n\nexport interface OrganizationTrustVerification {\n vlei?: RootOfTrustInfo;\n eudiLegal?: EUDILegalClaims;\n}\n\nexport class OrganizationTrustService {\n #keriaService: KERIAService;\n #eudiService: EUDIService;\n\n constructor() {\n this.#keriaService = new KERIAService();\n this.#eudiService = new EUDIService();\n }\n\n get keria(): KERIAService {\n return this.#keriaService;\n }\n\n get eudi(): EUDIService {\n return this.#eudiService;\n }\n\n async connectKERIA(url: string, bran: string): Promise<KERIAConnection> {\n return this.#keriaService.connect(url, bran);\n }\n\n async connectEUDI(config: EUDIVerifierConfig): Promise<void> {\n await this.#eudiService.connect(config);\n }\n\n async disconnect(): Promise<void> {\n await this.#keriaService.disconnect();\n await this.#eudiService.disconnect();\n }\n\n isConnected(): boolean {\n return this.#keriaService.isConnected() || this.#eudiService.isConnected();\n }\n\n async verifyVLEI(): Promise<RootOfTrustInfo> {\n return this.#keriaService.verifyCredentials();\n }\n\n async verifyEUDILegal(): Promise<EUDILegalClaims> {\n const session = await this.#eudiService.createLegalPIDVerificationSession();\n \n const maxAttempts = 60;\n const pollInterval = 2000;\n let attempts = 0;\n\n while (attempts < maxAttempts) {\n const result = await this.#eudiService.pollVerificationResult(session.sessionId);\n\n if (result.status === 'verified') {\n const config = this.#eudiService.getConfig();\n if (!config) {\n throw new Error('EUDI service not configured');\n }\n const vpResponse = await this.#fetchVPToken(config.url, session.sessionId);\n if (vpResponse?.vp_token) {\n return this.#eudiService.extractLegalPIDClaims(vpResponse.vp_token, session.challenge);\n }\n }\n\n if (result.status === 'failed') {\n throw new Error('EUDI Legal PID verification failed or was rejected');\n }\n\n await new Promise((resolve) => setTimeout(resolve, pollInterval));\n attempts++;\n }\n\n throw new Error('EUDI Legal PID verification timed out');\n }\n\n async #fetchVPToken(baseUrl: string, sessionId: string): Promise<{ vp_token?: string } | null> {\n try {\n const response = await fetch(`${baseUrl}/api/v1/presentations/sessions/${sessionId}`, {\n method: 'GET',\n headers: { Accept: 'application/json' },\n });\n return response.ok ? await response.json() : null;\n } catch {\n return null;\n }\n }\n\n getVerificationStatus(): { vlei: boolean; eudiLegal: boolean } {\n return {\n vlei: this.#keriaService.isConnected(),\n eudiLegal: this.#eudiService.isConnected(),\n };\n }\n}","/**\n * Unified Trust Status Types\n * @packageDocumentation\n */\n\nimport type { EUDIClaims, EUDILegalClaims } from './eudi.js';\nimport type { RootOfTrustInfo } from './vlei.js';\nimport type { ZKPClaims } from './zkp.js';\nimport type { ZKMMembershipProof } from './zkm.js';\n\nexport interface VerificationStatus {\n verified: boolean;\n individual?: {\n eudi?: EUDIClaims & { expired?: boolean };\n zkp?: ZKPClaims & { expired?: boolean };\n };\n organization?: {\n vlei?: RootOfTrustInfo & { expired?: boolean };\n eudiLegal?: EUDILegalClaims & { expired?: boolean };\n };\n /** ZK Membership proofs - privacy-preserving group membership verification */\n membership?: {\n zkm?: ZKMMembershipProof & { expired?: boolean };\n };\n}\n\nexport type TrustLevel = 'none' | 'verified';\n\nexport function isTrustExpired(trust: { expiresAt?: string }): boolean {\n if (!trust.expiresAt) return false;\n return new Date(trust.expiresAt) < new Date();\n}\n\nexport function getTrustLevelLabel(verified: boolean): string {\n return verified ? 'Verified' : 'Not verified';\n}"],"x_google_ignoreList":[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser-index.cjs","names":["#cacheOptions","#cachedEntry","#clearCachedEntry","#scheduleExpiry","#getCachedKeyIfValid","#clearKey","#expiryTimer","gcm","bin","bytes","secp256k1","sha256","loadPromise","#relays","#getIglooCore","#node","#config","#getPeersFallback","#iglooCore","secp256k1","#keyCache","#storageOptions","#prfOptions","#loadKeyInfoFromStorage","#currentKeyInfo","#saveKeyInfoToStorage","createPasskey","getPrfSecret","#signEventMultisig","#clearKey","isPrfSupported","#signWithKey","#encryptShareCredential","#decryptShareConfig","#getShareDetails","#resolveSecretKey","#dbName","#db","bytesToHex","hexToBytes","#backend","#storeName","from","from","b","b","err","b","from","b","b","BehaviorSubject","b","b","b","from","b","from","b","b","b","b","b","b","b","b","v","from","from","_i","i","sourceIndex","_a","i","from","sourceIndex","_a","from","from","from","from","from","from","from","from","from","from","_a","window","_a","window","window","from","i","from","from","exports","BehaviorSubject","#signer","#network","#relays","#dbName","#client","#unreadStore","#inviteReader","#unreadGroupIds$","#notifyGroupChange","#groupChangeHandlers","#fetchKeyPackageEvent","#messageHandlers","#unreadState","#persistUnreadState","#recomputeUnreadGroupIds","#running","#loadUnreadState","#loadProcessedEventIds","#setupIngestionPipeline","#live$","#mainSubscriptions","#ingest$","#startInviteSync","#startKeyPackageTracking","#subscriptions","#inviteSubscription","#keyPackageSubscription","#ingestResults","#processedEventIds","EMPTY","#getProcessedEventIds","#getIngestResults$","#persistProcessedEventId","#dispatchApplicationMessage","hexToBytes","secp256k1","hexToBytes","bytesToHex","base64urlEncode","base64urlDecode","bytesToHex","secp256k1","hexToBytes","parseShareMessage","parseSigningRequest","#resolveSecretKey","#clearKey","nip42Authenticate","filter","getPrfSecret","filter","#isSameRoleVLEITag","#connected","#config","#sessions","#generateNonce","#generateSessionId","#extractClaimsFromVP","sha256","bytesToHex"],"sources":["../src/utils/utils.ts","../src/utils/key-cache.ts","../src/utils/prf-password-fallback.ts","../src/utils/multisig.ts","../src/utils/crypto-utils.ts","../src/utils/nosskey.ts","../src/utils/test-utils.ts","../src/utils/group-storage.ts","../node_modules/rxjs/dist/cjs/internal/util/isFunction.js","../node_modules/rxjs/dist/cjs/internal/util/createErrorClass.js","../node_modules/rxjs/dist/cjs/internal/util/UnsubscriptionError.js","../node_modules/rxjs/dist/cjs/internal/util/arrRemove.js","../node_modules/rxjs/dist/cjs/internal/Subscription.js","../node_modules/rxjs/dist/cjs/internal/config.js","../node_modules/rxjs/dist/cjs/internal/scheduler/timeoutProvider.js","../node_modules/rxjs/dist/cjs/internal/util/reportUnhandledError.js","../node_modules/rxjs/dist/cjs/internal/util/noop.js","../node_modules/rxjs/dist/cjs/internal/NotificationFactories.js","../node_modules/rxjs/dist/cjs/internal/util/errorContext.js","../node_modules/rxjs/dist/cjs/internal/Subscriber.js","../node_modules/rxjs/dist/cjs/internal/symbol/observable.js","../node_modules/rxjs/dist/cjs/internal/util/identity.js","../node_modules/rxjs/dist/cjs/internal/util/pipe.js","../node_modules/rxjs/dist/cjs/internal/Observable.js","../node_modules/rxjs/dist/cjs/internal/util/lift.js","../node_modules/rxjs/dist/cjs/internal/operators/OperatorSubscriber.js","../node_modules/rxjs/dist/cjs/internal/operators/refCount.js","../node_modules/rxjs/dist/cjs/internal/observable/ConnectableObservable.js","../node_modules/rxjs/dist/cjs/internal/scheduler/performanceTimestampProvider.js","../node_modules/rxjs/dist/cjs/internal/scheduler/animationFrameProvider.js","../node_modules/rxjs/dist/cjs/internal/observable/dom/animationFrames.js","../node_modules/rxjs/dist/cjs/internal/util/ObjectUnsubscribedError.js","../node_modules/rxjs/dist/cjs/internal/Subject.js","../node_modules/rxjs/dist/cjs/internal/BehaviorSubject.js","../node_modules/rxjs/dist/cjs/internal/scheduler/dateTimestampProvider.js","../node_modules/rxjs/dist/cjs/internal/ReplaySubject.js","../node_modules/rxjs/dist/cjs/internal/AsyncSubject.js","../node_modules/rxjs/dist/cjs/internal/scheduler/Action.js","../node_modules/rxjs/dist/cjs/internal/scheduler/intervalProvider.js","../node_modules/rxjs/dist/cjs/internal/scheduler/AsyncAction.js","../node_modules/rxjs/dist/cjs/internal/util/Immediate.js","../node_modules/rxjs/dist/cjs/internal/scheduler/immediateProvider.js","../node_modules/rxjs/dist/cjs/internal/scheduler/AsapAction.js","../node_modules/rxjs/dist/cjs/internal/Scheduler.js","../node_modules/rxjs/dist/cjs/internal/scheduler/AsyncScheduler.js","../node_modules/rxjs/dist/cjs/internal/scheduler/AsapScheduler.js","../node_modules/rxjs/dist/cjs/internal/scheduler/asap.js","../node_modules/rxjs/dist/cjs/internal/scheduler/async.js","../node_modules/rxjs/dist/cjs/internal/scheduler/QueueAction.js","../node_modules/rxjs/dist/cjs/internal/scheduler/QueueScheduler.js","../node_modules/rxjs/dist/cjs/internal/scheduler/queue.js","../node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameAction.js","../node_modules/rxjs/dist/cjs/internal/scheduler/AnimationFrameScheduler.js","../node_modules/rxjs/dist/cjs/internal/scheduler/animationFrame.js","../node_modules/rxjs/dist/cjs/internal/scheduler/VirtualTimeScheduler.js","../node_modules/rxjs/dist/cjs/internal/observable/empty.js","../node_modules/rxjs/dist/cjs/internal/util/isScheduler.js","../node_modules/rxjs/dist/cjs/internal/util/args.js","../node_modules/rxjs/dist/cjs/internal/util/isArrayLike.js","../node_modules/rxjs/dist/cjs/internal/util/isPromise.js","../node_modules/rxjs/dist/cjs/internal/util/isInteropObservable.js","../node_modules/rxjs/dist/cjs/internal/util/isAsyncIterable.js","../node_modules/rxjs/dist/cjs/internal/util/throwUnobservableError.js","../node_modules/rxjs/dist/cjs/internal/symbol/iterator.js","../node_modules/rxjs/dist/cjs/internal/util/isIterable.js","../node_modules/rxjs/dist/cjs/internal/util/isReadableStreamLike.js","../node_modules/rxjs/dist/cjs/internal/observable/innerFrom.js","../node_modules/rxjs/dist/cjs/internal/util/executeSchedule.js","../node_modules/rxjs/dist/cjs/internal/operators/observeOn.js","../node_modules/rxjs/dist/cjs/internal/operators/subscribeOn.js","../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleObservable.js","../node_modules/rxjs/dist/cjs/internal/scheduled/schedulePromise.js","../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleArray.js","../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleIterable.js","../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleAsyncIterable.js","../node_modules/rxjs/dist/cjs/internal/scheduled/scheduleReadableStreamLike.js","../node_modules/rxjs/dist/cjs/internal/scheduled/scheduled.js","../node_modules/rxjs/dist/cjs/internal/observable/from.js","../node_modules/rxjs/dist/cjs/internal/observable/of.js","../node_modules/rxjs/dist/cjs/internal/observable/throwError.js","../node_modules/rxjs/dist/cjs/internal/Notification.js","../node_modules/rxjs/dist/cjs/internal/util/isObservable.js","../node_modules/rxjs/dist/cjs/internal/util/EmptyError.js","../node_modules/rxjs/dist/cjs/internal/lastValueFrom.js","../node_modules/rxjs/dist/cjs/internal/firstValueFrom.js","../node_modules/rxjs/dist/cjs/internal/util/ArgumentOutOfRangeError.js","../node_modules/rxjs/dist/cjs/internal/util/NotFoundError.js","../node_modules/rxjs/dist/cjs/internal/util/SequenceError.js","../node_modules/rxjs/dist/cjs/internal/util/isDate.js","../node_modules/rxjs/dist/cjs/internal/operators/timeout.js","../node_modules/rxjs/dist/cjs/internal/operators/map.js","../node_modules/rxjs/dist/cjs/internal/util/mapOneOrManyArgs.js","../node_modules/rxjs/dist/cjs/internal/observable/bindCallbackInternals.js","../node_modules/rxjs/dist/cjs/internal/observable/bindCallback.js","../node_modules/rxjs/dist/cjs/internal/observable/bindNodeCallback.js","../node_modules/rxjs/dist/cjs/internal/util/argsArgArrayOrObject.js","../node_modules/rxjs/dist/cjs/internal/util/createObject.js","../node_modules/rxjs/dist/cjs/internal/observable/combineLatest.js","../node_modules/rxjs/dist/cjs/internal/operators/mergeInternals.js","../node_modules/rxjs/dist/cjs/internal/operators/mergeMap.js","../node_modules/rxjs/dist/cjs/internal/operators/mergeAll.js","../node_modules/rxjs/dist/cjs/internal/operators/concatAll.js","../node_modules/rxjs/dist/cjs/internal/observable/concat.js","../node_modules/rxjs/dist/cjs/internal/observable/defer.js","../node_modules/rxjs/dist/cjs/internal/observable/connectable.js","../node_modules/rxjs/dist/cjs/internal/observable/forkJoin.js","../node_modules/rxjs/dist/cjs/internal/observable/fromEvent.js","../node_modules/rxjs/dist/cjs/internal/observable/fromEventPattern.js","../node_modules/rxjs/dist/cjs/internal/observable/generate.js","../node_modules/rxjs/dist/cjs/internal/observable/iif.js","../node_modules/rxjs/dist/cjs/internal/observable/timer.js","../node_modules/rxjs/dist/cjs/internal/observable/interval.js","../node_modules/rxjs/dist/cjs/internal/observable/merge.js","../node_modules/rxjs/dist/cjs/internal/observable/never.js","../node_modules/rxjs/dist/cjs/internal/util/argsOrArgArray.js","../node_modules/rxjs/dist/cjs/internal/observable/onErrorResumeNext.js","../node_modules/rxjs/dist/cjs/internal/observable/pairs.js","../node_modules/rxjs/dist/cjs/internal/util/not.js","../node_modules/rxjs/dist/cjs/internal/operators/filter.js","../node_modules/rxjs/dist/cjs/internal/observable/partition.js","../node_modules/rxjs/dist/cjs/internal/observable/race.js","../node_modules/rxjs/dist/cjs/internal/observable/range.js","../node_modules/rxjs/dist/cjs/internal/observable/using.js","../node_modules/rxjs/dist/cjs/internal/observable/zip.js","../node_modules/rxjs/dist/cjs/internal/types.js","../node_modules/rxjs/dist/cjs/internal/operators/audit.js","../node_modules/rxjs/dist/cjs/internal/operators/auditTime.js","../node_modules/rxjs/dist/cjs/internal/operators/buffer.js","../node_modules/rxjs/dist/cjs/internal/operators/bufferCount.js","../node_modules/rxjs/dist/cjs/internal/operators/bufferTime.js","../node_modules/rxjs/dist/cjs/internal/operators/bufferToggle.js","../node_modules/rxjs/dist/cjs/internal/operators/bufferWhen.js","../node_modules/rxjs/dist/cjs/internal/operators/catchError.js","../node_modules/rxjs/dist/cjs/internal/operators/scanInternals.js","../node_modules/rxjs/dist/cjs/internal/operators/reduce.js","../node_modules/rxjs/dist/cjs/internal/operators/toArray.js","../node_modules/rxjs/dist/cjs/internal/operators/joinAllInternals.js","../node_modules/rxjs/dist/cjs/internal/operators/combineLatestAll.js","../node_modules/rxjs/dist/cjs/internal/operators/combineAll.js","../node_modules/rxjs/dist/cjs/internal/operators/combineLatest.js","../node_modules/rxjs/dist/cjs/internal/operators/combineLatestWith.js","../node_modules/rxjs/dist/cjs/internal/operators/concatMap.js","../node_modules/rxjs/dist/cjs/internal/operators/concatMapTo.js","../node_modules/rxjs/dist/cjs/internal/operators/concat.js","../node_modules/rxjs/dist/cjs/internal/operators/concatWith.js","../node_modules/rxjs/dist/cjs/internal/observable/fromSubscribable.js","../node_modules/rxjs/dist/cjs/internal/operators/connect.js","../node_modules/rxjs/dist/cjs/internal/operators/count.js","../node_modules/rxjs/dist/cjs/internal/operators/debounce.js","../node_modules/rxjs/dist/cjs/internal/operators/debounceTime.js","../node_modules/rxjs/dist/cjs/internal/operators/defaultIfEmpty.js","../node_modules/rxjs/dist/cjs/internal/operators/take.js","../node_modules/rxjs/dist/cjs/internal/operators/ignoreElements.js","../node_modules/rxjs/dist/cjs/internal/operators/mapTo.js","../node_modules/rxjs/dist/cjs/internal/operators/delayWhen.js","../node_modules/rxjs/dist/cjs/internal/operators/delay.js","../node_modules/rxjs/dist/cjs/internal/operators/dematerialize.js","../node_modules/rxjs/dist/cjs/internal/operators/distinct.js","../node_modules/rxjs/dist/cjs/internal/operators/distinctUntilChanged.js","../node_modules/rxjs/dist/cjs/internal/operators/distinctUntilKeyChanged.js","../node_modules/rxjs/dist/cjs/internal/operators/throwIfEmpty.js","../node_modules/rxjs/dist/cjs/internal/operators/elementAt.js","../node_modules/rxjs/dist/cjs/internal/operators/endWith.js","../node_modules/rxjs/dist/cjs/internal/operators/every.js","../node_modules/rxjs/dist/cjs/internal/operators/exhaustMap.js","../node_modules/rxjs/dist/cjs/internal/operators/exhaustAll.js","../node_modules/rxjs/dist/cjs/internal/operators/exhaust.js","../node_modules/rxjs/dist/cjs/internal/operators/expand.js","../node_modules/rxjs/dist/cjs/internal/operators/finalize.js","../node_modules/rxjs/dist/cjs/internal/operators/find.js","../node_modules/rxjs/dist/cjs/internal/operators/findIndex.js","../node_modules/rxjs/dist/cjs/internal/operators/first.js","../node_modules/rxjs/dist/cjs/internal/operators/groupBy.js","../node_modules/rxjs/dist/cjs/internal/operators/isEmpty.js","../node_modules/rxjs/dist/cjs/internal/operators/takeLast.js","../node_modules/rxjs/dist/cjs/internal/operators/last.js","../node_modules/rxjs/dist/cjs/internal/operators/materialize.js","../node_modules/rxjs/dist/cjs/internal/operators/max.js","../node_modules/rxjs/dist/cjs/internal/operators/flatMap.js","../node_modules/rxjs/dist/cjs/internal/operators/mergeMapTo.js","../node_modules/rxjs/dist/cjs/internal/operators/mergeScan.js","../node_modules/rxjs/dist/cjs/internal/operators/merge.js","../node_modules/rxjs/dist/cjs/internal/operators/mergeWith.js","../node_modules/rxjs/dist/cjs/internal/operators/min.js","../node_modules/rxjs/dist/cjs/internal/operators/multicast.js","../node_modules/rxjs/dist/cjs/internal/operators/onErrorResumeNextWith.js","../node_modules/rxjs/dist/cjs/internal/operators/pairwise.js","../node_modules/rxjs/dist/cjs/internal/operators/pluck.js","../node_modules/rxjs/dist/cjs/internal/operators/publish.js","../node_modules/rxjs/dist/cjs/internal/operators/publishBehavior.js","../node_modules/rxjs/dist/cjs/internal/operators/publishLast.js","../node_modules/rxjs/dist/cjs/internal/operators/publishReplay.js","../node_modules/rxjs/dist/cjs/internal/operators/raceWith.js","../node_modules/rxjs/dist/cjs/internal/operators/repeat.js","../node_modules/rxjs/dist/cjs/internal/operators/repeatWhen.js","../node_modules/rxjs/dist/cjs/internal/operators/retry.js","../node_modules/rxjs/dist/cjs/internal/operators/retryWhen.js","../node_modules/rxjs/dist/cjs/internal/operators/sample.js","../node_modules/rxjs/dist/cjs/internal/operators/sampleTime.js","../node_modules/rxjs/dist/cjs/internal/operators/scan.js","../node_modules/rxjs/dist/cjs/internal/operators/sequenceEqual.js","../node_modules/rxjs/dist/cjs/internal/operators/share.js","../node_modules/rxjs/dist/cjs/internal/operators/shareReplay.js","../node_modules/rxjs/dist/cjs/internal/operators/single.js","../node_modules/rxjs/dist/cjs/internal/operators/skip.js","../node_modules/rxjs/dist/cjs/internal/operators/skipLast.js","../node_modules/rxjs/dist/cjs/internal/operators/skipUntil.js","../node_modules/rxjs/dist/cjs/internal/operators/skipWhile.js","../node_modules/rxjs/dist/cjs/internal/operators/startWith.js","../node_modules/rxjs/dist/cjs/internal/operators/switchMap.js","../node_modules/rxjs/dist/cjs/internal/operators/switchAll.js","../node_modules/rxjs/dist/cjs/internal/operators/switchMapTo.js","../node_modules/rxjs/dist/cjs/internal/operators/switchScan.js","../node_modules/rxjs/dist/cjs/internal/operators/takeUntil.js","../node_modules/rxjs/dist/cjs/internal/operators/takeWhile.js","../node_modules/rxjs/dist/cjs/internal/operators/tap.js","../node_modules/rxjs/dist/cjs/internal/operators/throttle.js","../node_modules/rxjs/dist/cjs/internal/operators/throttleTime.js","../node_modules/rxjs/dist/cjs/internal/operators/timeInterval.js","../node_modules/rxjs/dist/cjs/internal/operators/timeoutWith.js","../node_modules/rxjs/dist/cjs/internal/operators/timestamp.js","../node_modules/rxjs/dist/cjs/internal/operators/window.js","../node_modules/rxjs/dist/cjs/internal/operators/windowCount.js","../node_modules/rxjs/dist/cjs/internal/operators/windowTime.js","../node_modules/rxjs/dist/cjs/internal/operators/windowToggle.js","../node_modules/rxjs/dist/cjs/internal/operators/windowWhen.js","../node_modules/rxjs/dist/cjs/internal/operators/withLatestFrom.js","../node_modules/rxjs/dist/cjs/internal/operators/zipAll.js","../node_modules/rxjs/dist/cjs/internal/operators/zip.js","../node_modules/rxjs/dist/cjs/internal/operators/zipWith.js","../node_modules/rxjs/dist/cjs/index.js","../src/utils/group.ts","../src/types/vlei.ts","../src/types/eudi.ts","../src/types/zkp.ts","../src/types/zkm.ts","../src/utils/root-of-trust-verification.ts","../src/services/did-nostr.ts","../src/services/siop.ts","../src/services/nip42.ts","../src/services/oauth.ts","../src/services/auth.service.ts","../src/utils/validation.ts","../src/services/relay.service.ts","../src/services/eudi.service.ts","../src/types/trust.ts"],"sourcesContent":["/**\n * @packageDocumentation\n */\n\n/**\n * @param bytes\n * @returns\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n const key = '0123456789abcdef';\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n const firstNibble = bytes[i] >> 4;\n const secondNibble = bytes[i] & 15;\n hex += key[firstNibble] + key[secondNibble];\n }\n return hex;\n}\n\n/**\n * @param hex\n * @returns\n */\nexport function hexToBytes(hex: string): Uint8Array {\n const key = '0123456789abcdef';\n const bytes = [];\n let currentByte = 0;\n let highNibble = true;\n\n for (let i = 0; i < hex.length; i++) {\n const charValue = key.indexOf(hex[i].toLowerCase());\n if (charValue === -1) continue;\n\n if (highNibble) {\n currentByte = charValue << 4;\n highNibble = false;\n } else {\n currentByte += charValue;\n bytes.push(currentByte);\n highNibble = true;\n }\n }\n\n return new Uint8Array(bytes);\n}\n","/**\n * Key cache management for Nosskey\n * @packageDocumentation\n */\n\nimport type { KeyCacheOptions } from './types.js';\nimport { bytesToHex } from './utils.js';\n\n/**\n * Key cache entry with expiration time\n */\ninterface CacheEntry {\n id: string;\n sk: Uint8Array;\n expireAt: number;\n}\n\n/**\n * Key cache manager for managing temporary secret keys\n */\nexport class KeyCache {\n #cachedEntry: CacheEntry | null = null;\n\n #expiryTimer: ReturnType<typeof setTimeout> | null = null;\n\n #cacheOptions: KeyCacheOptions = {\n enabled: false,\n timeoutMs: 5 * 60 * 1000,\n };\n\n /**\n * KeyCache\n * @param options\n */\n constructor(options?: Partial<KeyCacheOptions>) {\n if (options) {\n this.#cacheOptions = { ...this.#cacheOptions, ...options };\n }\n }\n\n /**\n * @param options\n */\n setCacheOptions(options: Partial<KeyCacheOptions>): void {\n if (Object.keys(options).length > 0 && this.#cachedEntry !== null) {\n this.clearAllCachedKeys();\n }\n\n this.#cacheOptions = { ...this.#cacheOptions, ...options };\n }\n\n getCacheOptions(): KeyCacheOptions {\n return { ...this.#cacheOptions };\n }\n\n isEnabled(): boolean {\n return this.#cacheOptions.enabled;\n }\n\n /**\n * @param credentialId\n * @param sk\n */\n setKey(credentialId: Uint8Array | string, sk: Uint8Array): void {\n if (!this.#cacheOptions.enabled) return;\n\n const id = typeof credentialId === 'string' ? credentialId : bytesToHex(credentialId);\n const timeout =\n this.#cacheOptions.timeoutMs !== undefined ? this.#cacheOptions.timeoutMs : 5 * 60 * 1000;\n const expireAt = Date.now() + timeout;\n\n this.#clearCachedEntry();\n\n this.#cachedEntry = {\n id,\n sk: new Uint8Array(sk),\n expireAt,\n };\n\n try {\n this.#scheduleExpiry();\n } catch (error) {\n this.#clearCachedEntry();\n throw error;\n }\n }\n\n /**\n * @param credentialId\n * @returns undefined\n */\n getKey(credentialId: Uint8Array | string): Uint8Array | undefined {\n if (!this.#cacheOptions.enabled) return undefined;\n\n const id = typeof credentialId === 'string' ? credentialId : bytesToHex(credentialId);\n return this.#getCachedKeyIfValid(id);\n }\n\n /**\n * @param credentialId\n */\n clearCachedKey(credentialId: Uint8Array | string): void {\n const id = typeof credentialId === 'string' ? credentialId : bytesToHex(credentialId);\n\n if (this.#cachedEntry && this.#cachedEntry.id === id) {\n this.#clearCachedEntry();\n }\n }\n\n clearAllCachedKeys(): void {\n this.#clearCachedEntry();\n }\n\n /**\n * @param credentialId\n * @returns undefined\n */\n #getCachedKeyIfValid(credentialId: string): Uint8Array | undefined {\n if (!this.#cachedEntry || this.#cachedEntry.id !== credentialId) {\n return undefined;\n }\n\n if (Date.now() < this.#cachedEntry.expireAt) {\n return this.#cachedEntry.sk;\n }\n\n this.#clearCachedEntry();\n return undefined;\n }\n\n #clearCachedEntry(): void {\n if (this.#cachedEntry) {\n this.#clearKey(this.#cachedEntry.sk);\n this.#cachedEntry = null;\n }\n\n if (this.#expiryTimer) {\n clearTimeout(this.#expiryTimer);\n this.#expiryTimer = null;\n }\n }\n\n #scheduleExpiry(): void {\n if (!this.#cachedEntry) return;\n\n const now = Date.now();\n const timeToExpiry = this.#cachedEntry.expireAt - now;\n\n if (timeToExpiry <= 0) {\n this.#clearCachedEntry();\n return;\n }\n\n this.#expiryTimer = setTimeout(() => {\n this.#clearCachedEntry();\n }, timeToExpiry + 1);\n }\n\n /**\n * @param key\n */\n #clearKey(key: Uint8Array): void {\n key?.fill?.(0);\n }\n}\n","/**\n * PRF support check with a password-protected-key fallback.\n * If the PRF WebAuthn extension is unavailable, callers can fall back to a\n * password-protected private key. The private key is wrapped with a password-\n * derived AES-GCM key and stored alongside the public key (SPKI).\n *\n * This implementation uses @noble libraries for cryptographic operations,\n * ensuring functionality even when Web Crypto API is unavailable.\n */\n\nimport { getPublicKey } from 'applesauce-core/helpers';\nimport { secp256k1 } from '@noble/curves/secp256k1.js';\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { pbkdf2 } from '@noble/hashes/pbkdf2.js';\nimport { gcm } from '@noble/ciphers/aes.js';\nimport { randomBytes } from '@noble/hashes/utils.js';\n\nconst aesGcm = gcm;\n\nexport type PasswordProtectedBundle = {\n publicKeySpkiBase64: string;\n wrappedPrivateKeyBase64: string;\n saltBase64: string;\n ivBase64: string;\n};\n\nfunction toBase64(bytes: Uint8Array): string {\n let binary = '';\n for (let i = 0; i < bytes.byteLength; i++) binary += String.fromCharCode(bytes[i]);\n if (typeof window !== 'undefined' && (window as any).btoa) {\n return (window as any).btoa(binary);\n }\n return btoa(binary);\n}\n\nfunction fromBase64(b64: string): Uint8Array {\n if (typeof window !== 'undefined' && (window as any).atob) {\n const bin = (window as any).atob(b64);\n const bytes = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);\n return bytes;\n }\n const bin = atob(b64);\n const bytes = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);\n return bytes;\n}\n\nexport async function checkPRFSupport(): Promise<boolean> {\n try {\n const caps = typeof PublicKeyCredential !== 'undefined' ? await PublicKeyCredential.getClientCapabilities() : null;\n const supported = caps?.['extension:prf'] === true;\n if (supported) {\n console.log('PRF extension is supported.');\n } else {\n console.log('PRF extension is not supported.');\n }\n return !!supported;\n } catch (e) {\n console.log('Could not determine PRF support:', e);\n return false;\n }\n}\n\nexport async function generatePasswordProtectedKey(password: string): Promise<PasswordProtectedBundle> {\n const privateKey = secp256k1.utils.randomSecretKey();\n const publicKey = secp256k1.getPublicKey(privateKey);\n\n const publicKeySpkiBase64 = toBase64(publicKey);\n\n const salt = randomBytes(16);\n const derivedKey = pbkdf2(sha256, new TextEncoder().encode(password), salt, { c: 100000, dkLen: 32 });\n const iv = randomBytes(12);\n const ct = aesGcm(derivedKey, iv).encrypt(privateKey);\n\n return {\n publicKeySpkiBase64,\n wrappedPrivateKeyBase64: toBase64(ct),\n saltBase64: toBase64(salt),\n ivBase64: toBase64(iv),\n };\n}\n\nexport async function unwrapPasswordProtectedPrivateKey(bundle: PasswordProtectedBundle, password: string): Promise<Uint8Array> {\n const salt = fromBase64(bundle.saltBase64);\n const derivedKey = pbkdf2(sha256, new TextEncoder().encode(password), salt, { c: 100000, dkLen: 32 });\n const iv = fromBase64(bundle.ivBase64);\n const ct = fromBase64(bundle.wrappedPrivateKeyBase64);\n const privateKey = aesGcm(derivedKey, iv).decrypt(ct);\n return privateKey;\n}\n\nexport function importPublicKeyFromBundle(bundle: PasswordProtectedBundle): Uint8Array {\n const spki = fromBase64(bundle.publicKeySpkiBase64);\n return spki;\n}\n\nconst DEFAULT_SALT = 'nostr-key-derivation';\n\nexport function deriveNostrPrivateKey(password: string, salt: string = DEFAULT_SALT): Uint8Array {\n const derivedBits = pbkdf2(sha256, new TextEncoder().encode(password), new TextEncoder().encode(salt), { c: 100000, dkLen: 32 });\n return derivedBits;\n}\n\nexport function getPublicKeyFromPassword(password: string, salt: string = DEFAULT_SALT): string {\n const sk = deriveNostrPrivateKey(password, salt);\n return getPublicKey(sk);\n}\n","import type { MultisigConfig, PeerInfo } from './types.js';\n\nlet IglooCoreClass: any = null;\nlet createAndConnectNodeFn: any = null;\nlet cleanupBifrostNodeFn: any = null;\nlet extractPeersFromCredentialsFn: any = null;\nlet checkPeerStatusFn: any = null;\nlet loadPromise: Promise<void> | null = null;\n\nasync function loadFrostrModules(): Promise<void> {\n if (IglooCoreClass) return;\n if (loadPromise) return loadPromise;\n\n loadPromise = (async () => {\n try {\n const [iglooCore] = await Promise.all([\n import('@frostr/igloo-core'),\n import('@frostr/bifrost'),\n ]);\n\n IglooCoreClass = iglooCore.IglooCore;\n createAndConnectNodeFn = iglooCore.createAndConnectNode;\n cleanupBifrostNodeFn = iglooCore.cleanupBifrostNode;\n extractPeersFromCredentialsFn = iglooCore.extractPeersFromCredentials;\n checkPeerStatusFn = iglooCore.checkPeerStatus;\n } catch {\n throw new Error(\n 'FROSTR multisig requires @frostr/bifrost and @frostr/igloo-core as peer dependencies. ' +\n 'Install them with: npm install @frostr/bifrost @frostr/igloo-core'\n );\n }\n })();\n\n return loadPromise;\n}\n\nexport class MultisigManager {\n #relays: string[];\n #iglooCore: any = null;\n #node: any = null;\n #config: MultisigConfig | null = null;\n\n constructor(relays: string[]) {\n if (!relays || relays.length === 0) {\n throw new Error('At least one relay URL is required for multisig');\n }\n this.#relays = relays;\n }\n\n async generateKeyset(\n threshold: number,\n totalMembers: number,\n secretHex: string\n ): Promise<{ groupCredential: string; shareCredentials: string[] }> {\n await loadFrostrModules();\n\n if (threshold < 1) {\n throw new Error('Threshold must be at least 1');\n }\n if (totalMembers < 1) {\n throw new Error('Total members must be at least 1');\n }\n if (threshold > totalMembers) {\n throw new Error('Threshold cannot exceed total members');\n }\n if (!secretHex || secretHex.length !== 64) {\n throw new Error('Secret key must be a 64-character hex string');\n }\n\n const igloo = this.#getIglooCore();\n const keyset = await igloo.generateKeyset(threshold, totalMembers, secretHex);\n\n return {\n groupCredential: keyset.groupCredential,\n shareCredentials: keyset.shareCredentials,\n };\n }\n\n async connectNode(config: MultisigConfig): Promise<any> {\n await loadFrostrModules();\n\n if (this.#node) {\n this.disconnect();\n }\n\n this.#config = config;\n this.#relays = config.relays;\n\n this.#node = await createAndConnectNodeFn({\n group: config.groupCredential,\n share: config.shareCredential,\n relays: config.relays,\n });\n\n return this.#node;\n }\n\n getNode(): any {\n if (!this.#node) {\n throw new Error('No connected node. Call connectNode() first.');\n }\n return this.#node;\n }\n\n async signMessage(message: string): Promise<string> {\n const node = this.getNode();\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n node.removeAllListeners?.('/sign/sender/sig');\n node.removeAllListeners?.('/sign/sender/rej');\n node.removeAllListeners?.('/sign/sender/err');\n reject(new Error('Multisig signing timed out after 60s'));\n }, 60_000);\n\n node.once('/sign/sender/sig', (_sigs: any, msgs: any) => {\n clearTimeout(timeout);\n if (msgs && msgs.length > 0 && msgs[0].signature) {\n resolve(msgs[0].signature);\n } else {\n reject(new Error('Signing completed but no signature returned'));\n }\n });\n\n node.once('/sign/sender/rej', (reason: any) => {\n clearTimeout(timeout);\n reject(new Error(`Signing rejected: ${reason}`));\n });\n\n node.once('/sign/sender/err', (reason: any) => {\n clearTimeout(timeout);\n reject(new Error(`Signing error: ${reason}`));\n });\n\n node.req?.sign?.(message).catch((err: Error) => {\n clearTimeout(timeout);\n reject(err);\n });\n });\n }\n\n async signBatch(messages: string[]): Promise<string[]> {\n const node = this.getNode();\n\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n node.removeAllListeners?.('/sign/sender/sig');\n node.removeAllListeners?.('/sign/sender/rej');\n node.removeAllListeners?.('/sign/sender/err');\n reject(new Error('Batch multisig signing timed out after 120s'));\n }, 120_000);\n\n node.once('/sign/sender/sig', (_sigs: any, msgs: any) => {\n clearTimeout(timeout);\n if (msgs && msgs.length > 0) {\n resolve(msgs.map((m: any) => m.signature ?? ''));\n } else {\n reject(new Error('Batch signing completed but no signatures returned'));\n }\n });\n\n node.once('/sign/sender/rej', (reason: any) => {\n clearTimeout(timeout);\n reject(new Error(`Batch signing rejected: ${reason}`));\n });\n\n node.once('/sign/sender/err', (reason: any) => {\n clearTimeout(timeout);\n reject(new Error(`Batch signing error: ${reason}`));\n });\n\n node.req?.sign_batch?.(messages).catch((err: Error) => {\n clearTimeout(timeout);\n reject(err);\n });\n });\n }\n\n async getPeers(): Promise<PeerInfo[]> {\n await loadFrostrModules();\n\n if (!this.#config) {\n throw new Error('No multisig config available. Connect a node first.');\n }\n\n if (!extractPeersFromCredentialsFn || !checkPeerStatusFn) {\n return this.#getPeersFallback();\n }\n\n const node = this.getNode();\n\n const statusResults = await checkPeerStatusFn(\n node,\n this.#config.groupCredential,\n this.#config.shareCredential\n );\n\n return statusResults.map((peer: any) => ({\n pubkey: peer.pubkey,\n status: peer.status as 'online' | 'offline' | 'unknown',\n latency: peer.latency,\n }));\n }\n\n async #getPeersFallback(): Promise<PeerInfo[]> {\n const node = this.getNode();\n const peers = node?.getPeers?.() ?? [];\n\n return peers.map((pubkey: string) => ({\n pubkey,\n status: 'unknown' as const,\n }));\n }\n\n disconnect(): void {\n if (this.#node) {\n if (cleanupBifrostNodeFn) {\n try {\n cleanupBifrostNodeFn(this.#node);\n } catch {\n try {\n this.#node.close?.();\n } catch {\n // best-effort cleanup\n }\n }\n } else {\n try {\n this.#node.close?.();\n } catch {\n // best-effort cleanup\n }\n }\n this.#node = null;\n }\n this.#config = null;\n }\n\n getConfig(): MultisigConfig | null {\n return this.#config;\n }\n\n isConnected(): boolean {\n return this.#node !== null;\n }\n\n #getIglooCore(): any {\n if (!this.#iglooCore) {\n void loadFrostrModules();\n this.#iglooCore = new IglooCoreClass(this.#relays);\n }\n return this.#iglooCore;\n }\n}\n","/**\n * Cryptographic utilities for Nosskey\n * @packageDocumentation\n */\n\nconst INFO_BYTES = new TextEncoder().encode('nostr-pwk');\nconst AES_LENGTH = 256; // bits\n\nfunction getSubtle(): SubtleCrypto {\n const subtle = globalThis.crypto?.subtle;\n if (!subtle) throw new Error('Web Crypto API not available');\n return subtle;\n}\n\n/**\n * PRF AES-GCM\n * @param secret PRF\n * @param salt\n * @returns AES-GCM\n */\nexport async function deriveAesGcmKey(secret: Uint8Array, salt: Uint8Array): Promise<CryptoKey> {\n const subtle = getSubtle();\n const keyMaterial = await subtle.importKey('raw', secret as BufferSource, 'HKDF', false, ['deriveKey']);\n\n return subtle.deriveKey(\n { name: 'HKDF', hash: 'SHA-256', salt: salt as BufferSource, info: INFO_BYTES },\n keyMaterial,\n { name: 'AES-GCM', length: AES_LENGTH },\n false,\n ['encrypt', 'decrypt']\n );\n}\n\n/**\n * AES-GCM\n * @param key\n * @param iv\n * @param plaintext\n * @returns\n */\nexport async function aesGcmEncrypt(key: CryptoKey, iv: Uint8Array, plaintext: Uint8Array) {\n const subtle = getSubtle();\n const buf = await subtle.encrypt({ name: 'AES-GCM', iv: iv as BufferSource }, key, plaintext as BufferSource);\n\n const bytes = new Uint8Array(buf);\n return {\n ciphertext: bytes.slice(0, -16),\n tag: bytes.slice(-16),\n };\n}\n\n/**\n * AES-GCM\n * @param key\n * @param iv\n * @param ct\n * @param tag\n * @returns\n */\nexport async function aesGcmDecrypt(\n key: CryptoKey,\n iv: Uint8Array,\n ct: Uint8Array,\n tag: Uint8Array\n): Promise<Uint8Array> {\n const subtle = getSubtle();\n const buf = await subtle.decrypt(\n { name: 'AES-GCM', iv: iv as BufferSource },\n key,\n new Uint8Array([...ct, ...tag]) as BufferSource\n );\n return new Uint8Array(buf);\n}\n","import { finalizeEvent, getPublicKey } from 'applesauce-core/helpers';\nimport { secp256k1 } from '@noble/curves/secp256k1.js';\nimport { sha256 as nobleSha256 } from '@noble/hashes/sha2.js';\nimport { KeyCache } from './key-cache.js';\nimport { createPasskey, getPrfSecret, isPrfSupported } from './prf-handler.js';\nimport { checkPRFSupport, deriveNostrPrivateKey, getPublicKeyFromPassword, unwrapPasswordProtectedPrivateKey } from './prf-password-fallback.js';\nimport type {\n GetPrfSecretOptions,\n KeyCacheOptions,\n KeyOptions,\n KeyManagerLike,\n KeyManagerOptions,\n Event,\n KeyInfo,\n NostrKeyStorageOptions,\n PasskeyCreationOptions,\n SignOptions,\n} from './types.js';\n/**\n * Nosskey class for Passkey-Derived Nostr Identity\n * @packageDocumentation\n */\nimport { bytesToHex, hexToBytes } from './utils.js';\nimport type { KeyRecovery, MultisigSetupOptions, MultisigSetupResult, PeerInfo, MultisigImportOptions, EncryptedMultisigBundle, MultisigConfig, MultisigMember } from './types.js';\nimport { MultisigManager } from './multisig.js';\nimport { deriveAesGcmKey, aesGcmEncrypt, aesGcmDecrypt } from './crypto-utils.js';\n\nexport function deriveSaltFromUsername(username?: string): string {\n if (!username) {\n return '';\n }\n \n const msgBuffer = new TextEncoder().encode(username.toLowerCase().trim());\n const hashBuffer = nobleSha256(msgBuffer);\n return bytesToHex(new Uint8Array(hashBuffer));\n}\n\nexport function parseRecoveryTag(tags: string[][]): KeyRecovery | null {\n const recoveryTag = tags.find(tag => tag[0] === 'r');\n if (!recoveryTag || recoveryTag.length < 3) return null;\n\n // Format: ['r', recoveryPubkey, recoverySalt, createdAt, signature]\n const createdAt = recoveryTag[3] ? parseInt(recoveryTag[3], 10) : undefined;\n return {\n recoveryPubkey: recoveryTag[1],\n recoverySalt: recoveryTag[2],\n createdAt: createdAt || undefined,\n signature: recoveryTag[4] || undefined,\n };\n}\n\nexport function createRecoveryTag(recovery: KeyRecovery): string[] {\n return [\n 'r',\n recovery.recoveryPubkey,\n recovery.recoverySalt,\n recovery.createdAt?.toString() || '',\n recovery.signature || '',\n ];\n}\n\nexport function getRecoverySignature(kind0: Event): string | null {\n const recovery = parseRecoveryTag(kind0.tags || []);\n if (!recovery) return null;\n \n const tag = kind0.tags?.find(t => t[0] === 'r');\n return tag && tag.length > 4 ? tag[4] || null : null;\n}\n\nexport async function verifyRecoverySignature(kind0: Event): Promise<boolean> {\n try {\n const recovery = parseRecoveryTag(kind0.tags || []);\n if (!recovery) return false;\n \n const signature = getRecoverySignature(kind0);\n if (!signature || !kind0.pubkey) return false;\n \n // Verify Schnorr signature: signature over current pubkey (as message)\n // using the recovery pubkey\n // Note: verify expects the message hash, not the message itself\n const messageHash = nobleSha256(new TextEncoder().encode(kind0.pubkey));\n const signatureBytes = hexToBytes(signature);\n const pubkeyBytes = hexToBytes(kind0.pubkey);\n \n return secp256k1.verify(signatureBytes, messageHash, pubkeyBytes);\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Nosskey - Passkey-Derived Nostr Keys\n */\nexport class KeyManager implements KeyManagerLike {\n #keyCache: KeyCache;\n\n #currentKeyInfo: KeyInfo | null = null;\n\n #storageOptions: NostrKeyStorageOptions = {\n enabled: true,\n storageKey: 'identity',\n };\n\n #prfOptions: GetPrfSecretOptions = {};\n\n constructor(options?: KeyManagerOptions) {\n this.#keyCache = new KeyCache(options?.cacheOptions);\n\n if (options?.storageOptions) {\n this.#storageOptions = { ...this.#storageOptions, ...options.storageOptions };\n }\n\n const userVerification = options?.prfOptions?.userVerification ?? 'required';\n if (options?.prfOptions) {\n this.#prfOptions = { ...options.prfOptions, userVerification };\n } else {\n this.#prfOptions = { userVerification };\n }\n\n if (this.#storageOptions.enabled) {\n const loadedKeyInfo = this.#loadKeyInfoFromStorage();\n if (loadedKeyInfo) {\n this.#currentKeyInfo = loadedKeyInfo;\n }\n }\n }\n\n /**\n * Storage options\n * @param options\n */\n setStorageOptions(options: Partial<NostrKeyStorageOptions>): void {\n this.#storageOptions = { ...this.#storageOptions, ...options };\n\n if (options.enabled === false) {\n this.clearStoredKeyInfo();\n }\n }\n\n /**\n * Storage options\n */\n getStorageOptions(): NostrKeyStorageOptions {\n return { ...this.#storageOptions };\n }\n\n /**\n * Current KeyInfo\n * @param keyInfo KeyInfo\n */\n setCurrentKeyInfo(keyInfo: KeyInfo): void {\n this.#currentKeyInfo = keyInfo;\n\n if (this.#storageOptions.enabled) {\n this.#saveKeyInfoToStorage(keyInfo);\n }\n }\n\n /**\n * Current KeyInfo\n */\n getCurrentKeyInfo(): KeyInfo | null {\n if (!this.#currentKeyInfo && this.#storageOptions.enabled) {\n this.#currentKeyInfo = this.#loadKeyInfoFromStorage();\n }\n return this.#currentKeyInfo;\n }\n\n /**\n * Has KeyInfo\n * @returns true if KeyInfo exists\n */\n hasKeyInfo(): boolean {\n if (this.#currentKeyInfo) {\n return true;\n }\n\n if (this.#storageOptions.enabled) {\n const loadedKeyInfo = this.#loadKeyInfoFromStorage();\n if (loadedKeyInfo) {\n this.#currentKeyInfo = loadedKeyInfo;\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Save KeyInfo to storage\n * @param keyInfo KeyInfo\n */\n #saveKeyInfoToStorage(keyInfo: KeyInfo): void {\n if (!this.#storageOptions.enabled) return;\n\n const storage =\n this.#storageOptions.storage || (typeof localStorage !== 'undefined' ? localStorage : null);\n\n if (!storage) return;\n\n const key = this.#storageOptions.storageKey || 'identity';\n storage.setItem(key, JSON.stringify(keyInfo));\n }\n\n /**\n * Load KeyInfo from storage\n */\n #loadKeyInfoFromStorage(): KeyInfo | null {\n if (!this.#storageOptions.enabled) return null;\n\n const storage =\n this.#storageOptions.storage || (typeof localStorage !== 'undefined' ? localStorage : null);\n\n if (!storage) return null;\n\n const key = this.#storageOptions.storageKey || 'identity';\n const data = storage.getItem(key);\n\n if (!data) return null;\n\n try {\n return JSON.parse(data) as KeyInfo;\n } catch (e) {\n console.error('Failed to parse stored KeyInfo', e);\n return null;\n }\n }\n\n /**\n * Clear stored KeyInfo\n */\n clearStoredKeyInfo(): void {\n const storage =\n this.#storageOptions.storage || (typeof localStorage !== 'undefined' ? localStorage : null);\n\n if (!storage) return;\n\n const key = this.#storageOptions.storageKey || 'identity';\n storage.removeItem(key);\n\n this.#currentKeyInfo = null;\n }\n\n /**\n * NIP-07\n * KeyInfo\n */\n async getPublicKey(): Promise<string> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No current KeyInfo set');\n }\n return keyInfo.pubkey;\n }\n\n /**\n * NIP-07\n * KeyInfo\n * @param event Nostr\n */\n async signEvent(event: Event): Promise<Event> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No current KeyInfo set');\n }\n return this.signEventWithKeyInfo(event, keyInfo);\n }\n\n /**\n * @param options\n */\n setCacheOptions(options: Partial<KeyCacheOptions>): void {\n this.#keyCache.setCacheOptions(options);\n }\n\n getCacheOptions(): KeyCacheOptions {\n return this.#keyCache.getCacheOptions();\n }\n\n getCachedSecretKey(credentialId: Uint8Array | string): Uint8Array | undefined {\n return this.#keyCache.getKey(credentialId);\n }\n\n /**\n * @param credentialId\n */\n clearCachedKey(credentialId: Uint8Array | string): void {\n this.#keyCache.clearCachedKey(credentialId);\n }\n\n clearAllCachedKeys(): void {\n this.#keyCache.clearAllCachedKeys();\n }\n\n /**\n * @param options\n * @returns Credential\n */\n async createPasskey(options: PasskeyCreationOptions = {}): Promise<Uint8Array> {\n return createPasskey({\n rp: {\n id: this.#prfOptions.rpId,\n name: this.#prfOptions.rpId,\n },\n authenticatorSelection: {\n userVerification: this.#prfOptions.userVerification,\n },\n ...options,\n });\n }\n\n/**\n * Check if PRF is supported\n */\n async checkPRFSupport(): Promise<boolean> {\n return checkPRFSupport();\n }\n\n /**\n * Create Nostr key - automatically uses password fallback if PRF unavailable\n * @param credentialId Passkey credential ID\n * @param password Password for encryption (required if PRF not supported)\n * @param options \n */\n async createKey(credentialId?: Uint8Array, password?: string, options: KeyOptions = {}): Promise<KeyInfo> {\n const prfSupported = await this.checkPRFSupport();\n \n let keyInfo: KeyInfo;\n \n if (prfSupported) {\n keyInfo = await this.createPrfNostrKey(credentialId, options);\n \n // Auto-add password recovery if requested and PRF is supported\n if (options.recoveryPassword) {\n keyInfo = await this.addPasswordRecovery(options.recoveryPassword, credentialId);\n }\n } else {\n if (!password) {\n throw new Error('Password is required when PRF is not supported');\n }\n if (!options.username) {\n throw new Error('Username is required when PRF is not supported');\n }\n keyInfo = await this.createPasswordProtectedNostrKey(password, options);\n }\n \n return keyInfo;\n }\n\n /**\n * Create Nostr key using PRF (standard passkey flow)\n */\n async createPrfNostrKey(credentialId?: Uint8Array, options: KeyOptions = {}): Promise<KeyInfo> {\n const { secret: sk, id: responseId } = await getPrfSecret(credentialId, this.#prfOptions);\n\n if (sk.every((byte) => byte === 0)) {\n throw new Error('Invalid PRF output: all zeros');\n }\n\n const publicKey = getPublicKey(sk);\n \n const salt = await deriveSaltFromUsername(options.username);\n\n const keyInfo: KeyInfo = {\n credentialId: bytesToHex(credentialId || responseId),\n pubkey: publicKey,\n salt: salt,\n ...(options.username && { username: options.username }),\n };\n\n if (this.#keyCache.isEnabled() && this.#keyCache.getCacheOptions().cacheOnCreation) {\n this.#keyCache.setKey(keyInfo.credentialId, sk);\n }\n\n return keyInfo;\n }\n\n /**\n * Create Nostr key using password-derived key (fallback when PRF unavailable)\n * @param password Password to derive the private key\n * @param options \n */\n async createPasswordProtectedNostrKey(password: string, options: KeyOptions = {}): Promise<KeyInfo> {\n const salt = await deriveSaltFromUsername(options.username);\n const pubkey = getPublicKeyFromPassword(password, salt);\n\n const credentialId = bytesToHex((typeof window !== 'undefined' ? window.crypto : (globalThis as any).crypto).getRandomValues(new Uint8Array(16)));\n\n const keyInfo: KeyInfo = {\n credentialId,\n pubkey: pubkey,\n salt: salt,\n ...(options.username && { username: options.username }),\n };\n\n return keyInfo;\n }\n\n/**\n * @param event Nostr\n * @param keyInfo KeyInfo\n * @param options\n */\n async signEventWithKeyInfo(\n event: Event,\n keyInfo: KeyInfo,\n options: SignOptions = {}\n ): Promise<Event> {\n const useMultisig = options.mode === 'multisig'\n || (options.mode !== 'individual' && keyInfo.multisig);\n\n if (useMultisig) {\n if (!keyInfo.multisig) {\n throw new Error('Multisig mode requested but not configured on this identity.');\n }\n return this.#signEventMultisig(event, keyInfo, options.password);\n }\n\n const { clearMemory = true, tags, password } = options;\n\n const shouldUseCache = this.#keyCache.isEnabled();\n const isPasswordDerived = !keyInfo.passwordProtectedBundle && keyInfo.salt;\n\n let sk: Uint8Array | undefined;\n\n if (isPasswordDerived) {\n if (shouldUseCache) {\n sk = this.#keyCache.getKey(keyInfo.credentialId);\n }\n if (!sk && password) {\n sk = deriveNostrPrivateKey(password, keyInfo.salt);\n if (shouldUseCache) {\n this.#keyCache.setKey(keyInfo.credentialId, sk);\n }\n }\n if (!sk) {\n throw new Error('Password required - key not in cache. Provide password to sign.');\n }\n } else if (keyInfo.passwordProtectedBundle) {\n if (shouldUseCache) {\n sk = this.#keyCache.getKey(keyInfo.credentialId);\n }\n if (!sk && password) {\n sk = await unwrapPasswordProtectedPrivateKey(keyInfo.passwordProtectedBundle!, password);\n if (shouldUseCache) {\n this.#keyCache.setKey(keyInfo.credentialId, sk);\n }\n }\n if (!sk) {\n throw new Error('Password required - key not in cache. Provide password or use createNostrKey to initialize.');\n }\n } else {\n if (shouldUseCache) {\n sk = this.#keyCache.getKey(keyInfo.credentialId);\n }\n\n if (!sk) {\n const { secret: prfSecret } = await getPrfSecret(\n hexToBytes(keyInfo.credentialId),\n this.#prfOptions\n );\n sk = prfSecret;\n\n if (shouldUseCache) {\n this.#keyCache.setKey(keyInfo.credentialId, sk);\n }\n }\n }\n\n const eventToSign = {\n kind: event.kind,\n content: event.content,\n created_at: event.created_at || Math.floor(Date.now() / 1000),\n tags: tags ? [...(event.tags || []), ...tags] : event.tags || [],\n };\n\n const signedEvent = finalizeEvent(eventToSign, sk);\n\n if (!shouldUseCache && clearMemory) {\n this.#clearKey(sk);\n }\n\n return signedEvent;\n }\n\n/**\n * @param keyInfo KeyInfo\n * @param credentialId KeyInfoのcredentialId\n * @param options\n * @returns \n */\n async exportNostrKey(keyInfo: KeyInfo, credentialId?: Uint8Array, options: KeyOptions = {}): Promise<string> {\n if (keyInfo.passwordProtectedBundle) {\n if (!options.password) {\n throw new Error('Password is required for password-protected keys');\n }\n const sk = await unwrapPasswordProtectedPrivateKey(keyInfo.passwordProtectedBundle, options.password);\n return bytesToHex(sk);\n }\n\n const isPasswordDerived = !keyInfo.passwordProtectedBundle && keyInfo.salt;\n if (isPasswordDerived) {\n if (!options.password) {\n throw new Error('Password is required for password-derived keys');\n }\n const sk = deriveNostrPrivateKey(options.password, keyInfo.salt);\n return bytesToHex(sk);\n }\n\n let usedCredentialId = credentialId;\n\n if (!usedCredentialId && keyInfo.credentialId) {\n usedCredentialId = hexToBytes(keyInfo.credentialId);\n }\n\n const { secret: sk } = await getPrfSecret(usedCredentialId, this.#prfOptions);\n const skHex = bytesToHex(sk);\n\n return skHex;\n }\n\n /**\n * PRF\n */\n async isPrfSupported(): Promise<boolean> {\n return isPrfSupported();\n }\n\n /**\n * Add password recovery to an existing PRF key\n * @param password Password for recovery key\n * @param currentCredentialId Current passkey credential ID\n */\n async addPasswordRecovery(password: string, currentCredentialId?: Uint8Array): Promise<KeyInfo> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No current KeyInfo set');\n }\n\n if (keyInfo.passwordProtectedBundle) {\n throw new Error('Password recovery already exists for password-derived key');\n }\n\n if (keyInfo.recovery) {\n throw new Error('Recovery already configured');\n }\n\n const usedCredentialId = currentCredentialId || (keyInfo.credentialId ? hexToBytes(keyInfo.credentialId) : undefined);\n if (!usedCredentialId) {\n throw new Error('Credential ID required');\n }\n\n const cryptoObj = typeof window !== 'undefined' ? window.crypto : (globalThis as any).crypto;\n\n // Generate recovery salt\n const recoverySalt = bytesToHex(cryptoObj.getRandomValues(new Uint8Array(16)));\n\n // Derive recovery pubkey from password\n const recoveryPubkey = getPublicKeyFromPassword(password, recoverySalt);\n\n // Sign current pubkey with recovery key\n const recoverySk = deriveNostrPrivateKey(password, recoverySalt);\n const signature = this.#signWithKey(recoverySk, keyInfo.pubkey);\n this.#clearKey(recoverySk);\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n recovery: {\n recoveryPubkey,\n recoverySalt,\n createdAt: Date.now(),\n signature,\n },\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n return updatedKeyInfo;\n }\n\n #signWithKey(sk: Uint8Array, _message: string): string {\n const event = finalizeEvent({\n kind: 0,\n content: '',\n tags: [],\n created_at: Math.floor(Date.now() / 1000),\n }, sk);\n return event.sig;\n }\n\n /**\n * Activate recovery using password\n * Requires new credential ID from new device\n * @param password Password for recovery key\n * @param newCredentialId New passkey credential ID (required)\n */\n async activateWithPassword(password: string, newCredentialId: Uint8Array): Promise<KeyInfo> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No current KeyInfo set');\n }\n\n if (!keyInfo.recovery) {\n throw new Error('No recovery key configured');\n }\n\n if (!newCredentialId) {\n throw new Error('New credential ID is required for recovery');\n }\n\n const { recoveryPubkey, recoverySalt } = keyInfo.recovery;\n\n // Verify password\n const derivedRecoveryPubkey = getPublicKeyFromPassword(password, recoverySalt);\n if (derivedRecoveryPubkey !== recoveryPubkey) {\n throw new Error('Invalid recovery password');\n }\n\n // Derive new key from new credential\n const { secret: newSk } = await getPrfSecret(newCredentialId, this.#prfOptions);\n const newPubkey = getPublicKey(newSk);\n this.#clearKey(newSk);\n\n // Generate new recovery for the new key\n const cryptoObj = typeof window !== 'undefined' ? window.crypto : (globalThis as any).crypto;\n const newRecoverySalt = bytesToHex(cryptoObj.getRandomValues(new Uint8Array(16)));\n const newRecoveryPubkey = getPublicKeyFromPassword(password, newRecoverySalt);\n\n // Sign new pubkey with recovery key\n const recoverySk = deriveNostrPrivateKey(password, recoverySalt);\n const signature = this.#signWithKey(recoverySk, newPubkey);\n this.#clearKey(recoverySk);\n\n const updatedKeyInfo: KeyInfo = {\n credentialId: bytesToHex(newCredentialId),\n pubkey: newPubkey,\n salt: keyInfo.salt,\n recovery: {\n recoveryPubkey: newRecoveryPubkey,\n recoverySalt: newRecoverySalt,\n createdAt: Date.now(),\n signature,\n },\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n return updatedKeyInfo;\n }\n\n /**\n * Get the recovery data for publishing to kind-0\n */\n getRecoveryForKind0(): { recoveryPubkey: string; recoverySalt: string; createdAt?: number; signature?: string } | null {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo || !keyInfo.recovery) return null;\n\n return {\n recoveryPubkey: keyInfo.recovery.recoveryPubkey,\n recoverySalt: keyInfo.recovery.recoverySalt,\n createdAt: keyInfo.recovery.createdAt,\n signature: keyInfo.recovery.signature,\n };\n }\n\n /**\n * Enable FROSTR multisig on the current identity\n * Derives the secret key from the passkey, splits it into shares, encrypts the local share, and stores the config\n * If members are provided with a GroupManager, shares are distributed via Marmot Welcome messages.\n * @param options Threshold, total members, relay configuration, and optional members for Welcome-based distribution\n */\n async enableMultisig(options: MultisigSetupOptions): Promise<MultisigSetupResult> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No current KeyInfo set. Create a key first.');\n }\n\n if (keyInfo.multisig) {\n throw new Error('Multisig is already enabled on this identity.');\n }\n\n const secretHex = await this.exportNostrKey(keyInfo);\n\n const multisig = new MultisigManager(options.relays);\n const keyset = await multisig.generateKeyset(\n options.threshold,\n options.totalMembers,\n secretHex\n );\n\n const shareIndex = 0;\n const shareCredential = keyset.shareCredentials[shareIndex];\n\n const encryptedBundle = await this.#encryptShareCredential(keyInfo, shareCredential);\n\n const multisigBundle: EncryptedMultisigBundle = {\n ...encryptedBundle,\n groupCredential: keyset.groupCredential,\n threshold: options.threshold,\n totalMembers: options.totalMembers,\n relays: options.relays,\n shareIndex,\n };\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n multisig: multisigBundle,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n\n // Distribute shares via Welcome messages if members and groupManager provided\n let membersInvited = 0;\n if (options.members && options.members.length > 0 && options.groupManager) {\n const gm = options.groupManager;\n const groupCredential = keyset.groupCredential;\n const relays = options.relays;\n\n for (let i = 1; i < keyset.shareCredentials.length && i <= options.members.length; i++) {\n const member = options.members[i - 1];\n const shareCred = keyset.shareCredentials[i];\n\n if (member.keyPackageEvent) {\n await gm.inviteMember(member.keyPackageEvent.group, member.pubkey);\n }\n\n await gm.sendShareToMember(\n member.keyPackageEvent?.group,\n member.pubkey,\n shareCred,\n groupCredential,\n relays\n );\n membersInvited++;\n }\n }\n\n return {\n keyInfo: updatedKeyInfo,\n groupCredential: keyset.groupCredential,\n shareCredential,\n membersInvited,\n };\n }\n\n /**\n * Check if multisig is enabled on the current key\n */\n isMultisigEnabled(): boolean {\n const keyInfo = this.getCurrentKeyInfo();\n return keyInfo?.multisig !== undefined && keyInfo?.multisig !== null;\n }\n\n /**\n * Get peer status for the current multisig group\n */\n async getPeerStatus(): Promise<PeerInfo[]> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.multisig) {\n throw new Error('Multisig is not enabled on this identity.');\n }\n\n const decryptedConfig = await this.#decryptShareConfig(keyInfo);\n\n const multisig = new MultisigManager(decryptedConfig.relays);\n await multisig.connectNode(decryptedConfig);\n\n try {\n return await multisig.getPeers();\n } finally {\n multisig.disconnect();\n }\n }\n\n /**\n * Rotate shares — generate a new keyset, invalidating old shares\n * If members are provided with a GroupManager, new shares are distributed via Welcome messages.\n * Otherwise, new share credentials are returned for manual distribution.\n * @param newThreshold New threshold (defaults to current)\n * @param newTotal New total members (defaults to current)\n * @param members Members to redistribute shares to via Welcome messages\n * @param groupManager GroupManager for sending Welcome messages\n * @returns Array of new share credentials (only if no members provided for Welcome distribution)\n */\n async rotateShares(newThreshold?: number, newTotal?: number, members?: MultisigMember[], groupManager?: any): Promise<string[]> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.multisig) {\n throw new Error('Multisig is not enabled on this identity.');\n }\n\n const current = keyInfo.multisig;\n const threshold = newThreshold ?? current.threshold;\n const total = newTotal ?? current.totalMembers;\n\n const secretHex = await this.exportNostrKey(keyInfo);\n\n const multisig = new MultisigManager(current.relays);\n const keyset = await multisig.generateKeyset(threshold, total, secretHex);\n\n const shareIndex = 0;\n const shareCredential = keyset.shareCredentials[shareIndex];\n\n const encryptedBundle = await this.#encryptShareCredential(keyInfo, shareCredential);\n\n const multisigBundle: EncryptedMultisigBundle = {\n ...encryptedBundle,\n groupCredential: keyset.groupCredential,\n threshold,\n totalMembers: total,\n relays: current.relays,\n shareIndex,\n };\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n multisig: multisigBundle,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n\n // Distribute new shares via Welcome messages if members and groupManager provided\n if (members && members.length > 0 && groupManager) {\n const gm = groupManager;\n const groupCredential = keyset.groupCredential;\n const relays = current.relays;\n\n for (let i = 1; i < keyset.shareCredentials.length && i <= members.length; i++) {\n const member = members[i - 1];\n const shareCred = keyset.shareCredentials[i];\n\n if (member.keyPackageEvent) {\n await gm.inviteMember(member.keyPackageEvent.group, member.pubkey);\n }\n\n await gm.sendShareToMember(\n member.keyPackageEvent?.group,\n member.pubkey,\n shareCred,\n groupCredential,\n relays\n );\n }\n return [];\n }\n\n return keyset.shareCredentials;\n }\n\n /**\n * Sign an event using FROSTR multisig\n * Routes the signing request through the threshold protocol\n */\n async #signEventMultisig(event: Event, keyInfo: KeyInfo, password?: string): Promise<Event> {\n if (!keyInfo.multisig) {\n throw new Error('Multisig config not found on this key.');\n }\n\n const decryptedConfig = await this.#decryptShareConfig(keyInfo, password);\n\n const eventToSign = {\n kind: event.kind,\n content: event.content,\n created_at: event.created_at || Math.floor(Date.now() / 1000),\n tags: event.tags || [],\n };\n\n const serializedEvent = JSON.stringify(eventToSign);\n\n const multisig = new MultisigManager(decryptedConfig.relays);\n await multisig.connectNode(decryptedConfig);\n\n try {\n const signature = await multisig.signMessage(serializedEvent);\n\n const signedEvent: Event = {\n ...eventToSign,\n pubkey: keyInfo.pubkey,\n sig: signature,\n id: event.id,\n };\n\n return signedEvent;\n } finally {\n multisig.disconnect();\n }\n }\n\n /**\n * Import a FROST share credential into the current identity\n * The identity must already exist (created via createKey)\n * @param options Group credential, share credential, and relay URLs\n */\n async importMultisigShare(options: MultisigImportOptions): Promise<KeyInfo> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No current KeyInfo set. Create a key first.');\n }\n\n if (keyInfo.multisig) {\n throw new Error('Multisig is already configured on this identity. Use rotateShares to change shares.');\n }\n\n const { groupCredential, shareCredential, relays } = options;\n\n const { idx: shareIndex, threshold, totalMembers } = await this.#getShareDetails(groupCredential, shareCredential);\n\n const encryptedBundle = await this.#encryptShareCredential(keyInfo, shareCredential);\n\n const multisigBundle: EncryptedMultisigBundle = {\n ...encryptedBundle,\n groupCredential,\n threshold,\n totalMembers,\n relays,\n shareIndex,\n };\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n multisig: multisigBundle,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n\n return updatedKeyInfo;\n }\n\n /**\n * Encrypt a share credential using the identity's secret (PRF or password-derived)\n */\n async #encryptShareCredential(keyInfo: KeyInfo, shareCredential: string): Promise<{ ciphertext: string; iv: string; tag: string }> {\n const sk = await this.#resolveSecretKey(keyInfo);\n const cryptoObj = typeof window !== 'undefined' ? window.crypto : (globalThis as any).crypto;\n const iv = cryptoObj.getRandomValues(new Uint8Array(12));\n\n const aesKey = await deriveAesGcmKey(sk, new Uint8Array(16));\n const plaintext = new TextEncoder().encode(shareCredential);\n const { ciphertext, tag } = await aesGcmEncrypt(aesKey, iv, plaintext);\n\n this.#clearKey(sk);\n\n return {\n ciphertext: btoa(String.fromCharCode(...ciphertext)),\n iv: btoa(String.fromCharCode(...iv)),\n tag: btoa(String.fromCharCode(...tag)),\n };\n }\n\n /**\n * Decrypt the share credential and return a full MultisigConfig\n */\n async #decryptShareConfig(keyInfo: KeyInfo, password?: string): Promise<MultisigConfig> {\n const bundle = keyInfo.multisig;\n if (!bundle) {\n throw new Error('No multisig config found.');\n }\n\n const sk = await this.#resolveSecretKey(keyInfo, password);\n\n const aesKey = await deriveAesGcmKey(sk, new Uint8Array(16));\n const ciphertext = Uint8Array.from(atob(bundle.ciphertext), c => c.charCodeAt(0));\n const iv = Uint8Array.from(atob(bundle.iv), c => c.charCodeAt(0));\n const tag = Uint8Array.from(atob(bundle.tag), c => c.charCodeAt(0));\n\n const plaintext = await aesGcmDecrypt(aesKey, iv, ciphertext, tag);\n const shareCredential = new TextDecoder().decode(plaintext);\n\n this.#clearKey(sk);\n\n return {\n threshold: bundle.threshold,\n totalMembers: bundle.totalMembers,\n relays: bundle.relays,\n groupCredential: bundle.groupCredential,\n shareCredential,\n shareIndex: bundle.shareIndex,\n };\n }\n\n /**\n * Resolve the secret key for encryption/decryption\n * Uses PRF secret or password-derived key depending on key type\n */\n async #resolveSecretKey(keyInfo: KeyInfo, password?: string): Promise<Uint8Array> {\n const shouldUseCache = this.#keyCache.isEnabled();\n\n if (shouldUseCache) {\n const cached = this.#keyCache.getKey(keyInfo.credentialId);\n if (cached) return cached;\n }\n\n if (keyInfo.passwordProtectedBundle) {\n if (!password) {\n throw new Error('Password is required for encryption/decryption of multisig shares on password-protected keys.');\n }\n const sk = await unwrapPasswordProtectedPrivateKey(keyInfo.passwordProtectedBundle, password);\n if (shouldUseCache) {\n this.#keyCache.setKey(keyInfo.credentialId, sk);\n }\n return sk;\n }\n\n const { secret: prfSecret } = await getPrfSecret(\n hexToBytes(keyInfo.credentialId),\n this.#prfOptions\n );\n\n if (shouldUseCache) {\n this.#keyCache.setKey(keyInfo.credentialId, prfSecret);\n }\n\n return prfSecret;\n }\n\n async #getShareDetails(groupCredential: string, shareCredential: string): Promise<{ idx: number; threshold: number; totalMembers: number }> {\n try {\n const { getShareDetailsWithGroup } = await import('@frostr/igloo-core');\n return getShareDetailsWithGroup(shareCredential, groupCredential);\n } catch {\n throw new Error(\n 'Failed to decode share credential. Ensure @frostr/igloo-core is installed and the credential strings are valid.'\n );\n }\n }\n\n /**\n * @param key\n */\n #clearKey(key: Uint8Array): void {\n key?.fill?.(0);\n }\n}\n","/**\n * Test utilities for sdk\n * @packageDocumentation\n */\n\n/**\n * Helper for testing/debugging\n * @param userId - User identifier\n * @returns Promise resolving to the dummy credential\n */\nexport async function registerDummyPasskey(userId: string): Promise<PublicKeyCredential> {\n // Create a dummy credential for testing\n const dummySignature = new Uint8Array(64);\n // Fill with some non-zero values for testing\n for (let i = 0; i < dummySignature.length; i++) {\n dummySignature[i] = (i + 1) % 256;\n }\n\n const dummyId = new Uint8Array(32);\n for (let i = 0; i < dummyId.length; i++) {\n dummyId[i] = (i + 1) % 256;\n }\n\n const credential = {\n id: 'dummy-credential-id',\n rawId: dummyId,\n type: 'public-key',\n response: {\n clientDataJSON: new Uint8Array(0),\n attestationObject: new Uint8Array(0),\n signature: dummySignature,\n authenticatorData: new Uint8Array(0),\n getAuthenticatorData: () => new Uint8Array(0),\n getPublicKey: () => new Uint8Array(0),\n getPublicKeyAlgorithm: () => -7,\n getTransports: () => ['internal'],\n },\n } as unknown as PublicKeyCredential;\n\n return credential;\n}\n","const DEFAULT_DB_NAME = 'group';\nconst DATA_STORE = 'data';\n\nclass IndexedDBBackendBase {\n #db: IDBDatabase | null = null;\n #dbName: string;\n\n constructor(dbName: string) {\n this.#dbName = dbName;\n }\n\n async open(): Promise<IDBDatabase> {\n if (this.#db) return this.#db;\n\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.#dbName, 1);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n this.#db = request.result;\n resolve(request.result);\n };\n\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(DATA_STORE)) {\n db.createObjectStore(DATA_STORE);\n }\n };\n });\n }\n\n async getBytes(key: Uint8Array | string): Promise<Uint8Array | null> {\n const db = await this.open();\n const storeKey = typeof key === 'string' ? key : bytesToHex(key);\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readonly');\n const store = tx.objectStore(DATA_STORE);\n const request = store.get(storeKey);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const result = request.result;\n resolve(result ? new Uint8Array(result) : null);\n };\n });\n }\n\n async setBytes(key: Uint8Array | string, value: Uint8Array): Promise<void> {\n const db = await this.open();\n const storeKey = typeof key === 'string' ? key : bytesToHex(key);\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readwrite');\n const store = tx.objectStore(DATA_STORE);\n const request = store.put(Array.from(value), storeKey);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n }\n\n async removeByKey(key: Uint8Array | string): Promise<void> {\n const db = await this.open();\n const storeKey = typeof key === 'string' ? key : bytesToHex(key);\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readwrite');\n const store = tx.objectStore(DATA_STORE);\n const request = store.delete(storeKey);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n }\n\n async listBytesKeys(): Promise<Uint8Array[]> {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readonly');\n const store = tx.objectStore(DATA_STORE);\n const request = store.getAllKeys();\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const keys = request.result as string[];\n resolve(keys.map(k => hexToBytes(k)));\n };\n });\n }\n\n async getItem<T>(key: string): Promise<T | null> {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readonly');\n const store = tx.objectStore(DATA_STORE);\n const request = store.get(key);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve(request.result ?? null);\n });\n }\n\n async setItem<T>(key: string, value: T): Promise<T> {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readwrite');\n const store = tx.objectStore(DATA_STORE);\n const request = store.put(value, key);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve(value);\n });\n }\n\n async removeItem(key: string): Promise<void> {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readwrite');\n const store = tx.objectStore(DATA_STORE);\n const request = store.delete(key);\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n }\n\n async clearAll(): Promise<void> {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readwrite');\n const store = tx.objectStore(DATA_STORE);\n const request = store.clear();\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve();\n });\n }\n\n async listKeys(): Promise<string[]> {\n const db = await this.open();\n\n return new Promise((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readonly');\n const store = tx.objectStore(DATA_STORE);\n const request = store.getAllKeys();\n\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve(request.result as string[]);\n });\n }\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = parseInt(hex.slice(i, i + 2), 16);\n }\n return bytes;\n}\n\nexport class IndexedDBGroupStateBackend {\n #backend: IndexedDBBackendBase;\n\n constructor(dbName: string = DEFAULT_DB_NAME) {\n this.#backend = new IndexedDBBackendBase(dbName);\n }\n\n async getItem(key: string): Promise<Uint8Array | null> {\n return this.#backend.getBytes(key);\n }\n\n async setItem(key: string, value: Uint8Array): Promise<Uint8Array> {\n await this.#backend.setBytes(key, value);\n return value;\n }\n\n async removeItem(key: string): Promise<void> {\n return this.#backend.removeByKey(key);\n }\n\n async clear(): Promise<void> {\n return this.#backend.clearAll();\n }\n\n async keys(): Promise<string[]> {\n const bytesKeys = await this.#backend.listBytesKeys();\n return bytesKeys.map(k => bytesToHex(k));\n }\n}\n\nexport class IndexedDBKeyPackageStore {\n #backend: IndexedDBBackendBase;\n\n constructor(dbName: string = DEFAULT_DB_NAME) {\n this.#backend = new IndexedDBBackendBase(dbName);\n }\n\n async getItem<T>(key: string): Promise<T | null> {\n return this.#backend.getItem<T>(`kps:${key}`);\n }\n\n async setItem<T>(key: string, value: T): Promise<T> {\n return this.#backend.setItem(`kps:${key}`, value);\n }\n\n async removeItem(key: string): Promise<void> {\n return this.#backend.removeItem(`kps:${key}`);\n }\n\n async clear(): Promise<void> {\n const db = await this.#backend.open();\n const allKeys = await new Promise<string[]>((resolve, reject) => {\n const tx = db.transaction(DATA_STORE, 'readonly');\n const store = tx.objectStore(DATA_STORE);\n const request = store.getAllKeys();\n request.onerror = () => reject(request.error);\n request.onsuccess = () => resolve(request.result as string[]);\n });\n\n for (const key of allKeys) {\n if (key.startsWith('kps:')) {\n await this.#backend.removeItem(key);\n }\n }\n }\n\n async keys(): Promise<string[]> {\n const allKeys = await this.#backend.listKeys();\n return allKeys\n .filter(k => k.startsWith('kps:'))\n .map(k => k.slice(4));\n }\n}\n\n/**\n * Generic IndexedDB key-value store backend.\n * Implements the KeyValueStoreBackend<T> interface expected by Marmot.\n */\nexport class IndexedDBKeyValueBackend {\n #backend: IndexedDBBackendBase;\n #storeName: string;\n\n constructor(dbName: string, storeName: string) {\n this.#backend = new IndexedDBBackendBase(dbName);\n this.#storeName = storeName;\n }\n\n async getItem<T>(key: string): Promise<T | null> {\n return this.#backend.getItem<T>(`${this.#storeName}:${key}`);\n }\n\n async setItem<T>(key: string, value: T): Promise<T> {\n return this.#backend.setItem(`${this.#storeName}:${key}`, value);\n }\n\n async removeItem(key: string): Promise<void> {\n return this.#backend.removeItem(`${this.#storeName}:${key}`);\n }\n\n async clear(): Promise<void> {\n return this.#backend.clearAll();\n }\n\n async keys(): Promise<string[]> {\n const allKeys = await this.#backend.listKeys();\n const prefix = `${this.#storeName}:`;\n return allKeys\n .filter(k => k.startsWith(prefix))\n .map(k => k.slice(prefix.length));\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isFunction = void 0;\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createErrorClass = void 0;\nfunction createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\nexports.createErrorClass = createErrorClass;\n//# sourceMappingURL=createErrorClass.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnsubscriptionError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.UnsubscriptionError = createErrorClass_1.createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.arrRemove = void 0;\nfunction arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\nexports.arrRemove = arrRemove;\n//# sourceMappingURL=arrRemove.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSubscription = exports.EMPTY_SUBSCRIPTION = exports.Subscription = void 0;\nvar isFunction_1 = require(\"./util/isFunction\");\nvar UnsubscriptionError_1 = require(\"./util/UnsubscriptionError\");\nvar arrRemove_1 = require(\"./util/arrRemove\");\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction_1.isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError_1.UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError_1.UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError_1.UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove_1.arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove_1.arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexports.Subscription = Subscription;\nexports.EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nfunction isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction_1.isFunction(value.remove) && isFunction_1.isFunction(value.add) && isFunction_1.isFunction(value.unsubscribe)));\n}\nexports.isSubscription = isSubscription;\nfunction execFinalizer(finalizer) {\n if (isFunction_1.isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.config = void 0;\nexports.config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timeoutProvider = void 0;\nexports.timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = exports.timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = exports.timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reportUnhandledError = void 0;\nvar config_1 = require(\"../config\");\nvar timeoutProvider_1 = require(\"../scheduler/timeoutProvider\");\nfunction reportUnhandledError(err) {\n timeoutProvider_1.timeoutProvider.setTimeout(function () {\n var onUnhandledError = config_1.config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\nexports.reportUnhandledError = reportUnhandledError;\n//# sourceMappingURL=reportUnhandledError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.noop = void 0;\nfunction noop() { }\nexports.noop = noop;\n//# sourceMappingURL=noop.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNotification = exports.nextNotification = exports.errorNotification = exports.COMPLETE_NOTIFICATION = void 0;\nexports.COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();\nfunction errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexports.errorNotification = errorNotification;\nfunction nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexports.nextNotification = nextNotification;\nfunction createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error,\n };\n}\nexports.createNotification = createNotification;\n//# sourceMappingURL=NotificationFactories.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.captureError = exports.errorContext = void 0;\nvar config_1 = require(\"../config\");\nvar context = null;\nfunction errorContext(cb) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexports.errorContext = errorContext;\nfunction captureError(err) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\nexports.captureError = captureError;\n//# sourceMappingURL=errorContext.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EMPTY_OBSERVER = exports.SafeSubscriber = exports.Subscriber = void 0;\nvar isFunction_1 = require(\"./util/isFunction\");\nvar Subscription_1 = require(\"./Subscription\");\nvar config_1 = require(\"./config\");\nvar reportUnhandledError_1 = require(\"./util/reportUnhandledError\");\nvar noop_1 = require(\"./util/noop\");\nvar NotificationFactories_1 = require(\"./NotificationFactories\");\nvar timeoutProvider_1 = require(\"./scheduler/timeoutProvider\");\nvar errorContext_1 = require(\"./util/errorContext\");\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (Subscription_1.isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = exports.EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(NotificationFactories_1.nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(NotificationFactories_1.errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(NotificationFactories_1.COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction_1.isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config_1.config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexports.SafeSubscriber = SafeSubscriber;\nfunction handleUnhandledError(error) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n errorContext_1.captureError(error);\n }\n else {\n reportUnhandledError_1.reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config_1.config.onStoppedNotification;\n onStoppedNotification && timeoutProvider_1.timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexports.EMPTY_OBSERVER = {\n closed: true,\n next: noop_1.noop,\n error: defaultErrorHandler,\n complete: noop_1.noop,\n};\n//# sourceMappingURL=Subscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observable = void 0;\nexports.observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.identity = void 0;\nfunction identity(x) {\n return x;\n}\nexports.identity = identity;\n//# sourceMappingURL=identity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pipeFromArray = exports.pipe = void 0;\nvar identity_1 = require(\"./identity\");\nfunction pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexports.pipe = pipe;\nfunction pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity_1.identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\nexports.pipeFromArray = pipeFromArray;\n//# sourceMappingURL=pipe.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Observable = void 0;\nvar Subscriber_1 = require(\"./Subscriber\");\nvar Subscription_1 = require(\"./Subscription\");\nvar observable_1 = require(\"./symbol/observable\");\nvar pipe_1 = require(\"./util/pipe\");\nvar config_1 = require(\"./config\");\nvar isFunction_1 = require(\"./util/isFunction\");\nvar errorContext_1 = require(\"./util/errorContext\");\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new Subscriber_1.SafeSubscriber(observerOrNext, error, complete);\n errorContext_1.errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new Subscriber_1.SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[observable_1.observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipe_1.pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexports.Observable = Observable;\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config_1.config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction_1.isFunction(value.next) && isFunction_1.isFunction(value.error) && isFunction_1.isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber_1.Subscriber) || (isObserver(value) && Subscription_1.isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.operate = exports.hasLift = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction hasLift(source) {\n return isFunction_1.isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexports.hasLift = hasLift;\nfunction operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\nexports.operate = operate;\n//# sourceMappingURL=lift.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OperatorSubscriber = exports.createOperatorSubscriber = void 0;\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nexports.createOperatorSubscriber = createOperatorSubscriber;\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber_1.Subscriber));\nexports.OperatorSubscriber = OperatorSubscriber;\n//# sourceMappingURL=OperatorSubscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.refCount = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction refCount() {\n return lift_1.operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, undefined, undefined, function () {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n var sharedConnection = source._connection;\n var conn = connection;\n connection = null;\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\nexports.refCount = refCount;\n//# sourceMappingURL=refCount.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectableObservable = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar Subscription_1 = require(\"../Subscription\");\nvar refCount_1 = require(\"../operators/refCount\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar lift_1 = require(\"../util/lift\");\nvar ConnectableObservable = (function (_super) {\n __extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._subject = null;\n _this._refCount = 0;\n _this._connection = null;\n if (lift_1.hasLift(source)) {\n _this.lift = source.lift;\n }\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype._teardown = function () {\n this._refCount = 0;\n var _connection = this._connection;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n };\n ConnectableObservable.prototype.connect = function () {\n var _this = this;\n var connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription_1.Subscription();\n var subject_1 = this.getSubject();\n connection.add(this.source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subject_1, undefined, function () {\n _this._teardown();\n subject_1.complete();\n }, function (err) {\n _this._teardown();\n subject_1.error(err);\n }, function () { return _this._teardown(); })));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription_1.Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return refCount_1.refCount()(this);\n };\n return ConnectableObservable;\n}(Observable_1.Observable));\nexports.ConnectableObservable = ConnectableObservable;\n//# sourceMappingURL=ConnectableObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.performanceTimestampProvider = void 0;\nexports.performanceTimestampProvider = {\n now: function () {\n return (exports.performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=performanceTimestampProvider.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.animationFrameProvider = void 0;\nvar Subscription_1 = require(\"../Subscription\");\nexports.animationFrameProvider = {\n schedule: function (callback) {\n var request = requestAnimationFrame;\n var cancel = cancelAnimationFrame;\n var delegate = exports.animationFrameProvider.delegate;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n var handle = request(function (timestamp) {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription_1.Subscription(function () { return cancel === null || cancel === void 0 ? void 0 : cancel(handle); });\n },\n requestAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = exports.animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n cancelAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = exports.animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n delegate: undefined,\n};\n//# sourceMappingURL=animationFrameProvider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.animationFrames = void 0;\nvar Observable_1 = require(\"../../Observable\");\nvar performanceTimestampProvider_1 = require(\"../../scheduler/performanceTimestampProvider\");\nvar animationFrameProvider_1 = require(\"../../scheduler/animationFrameProvider\");\nfunction animationFrames(timestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\nexports.animationFrames = animationFrames;\nfunction animationFramesFactory(timestampProvider) {\n return new Observable_1.Observable(function (subscriber) {\n var provider = timestampProvider || performanceTimestampProvider_1.performanceTimestampProvider;\n var start = provider.now();\n var id = 0;\n var run = function () {\n if (!subscriber.closed) {\n id = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function (timestamp) {\n id = 0;\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start,\n });\n run();\n });\n }\n };\n run();\n return function () {\n if (id) {\n animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id);\n }\n };\n });\n}\nvar DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\n//# sourceMappingURL=animationFrames.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectUnsubscribedError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.ObjectUnsubscribedError = createErrorClass_1.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","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnonymousSubject = exports.Subject = void 0;\nvar Observable_1 = require(\"./Observable\");\nvar Subscription_1 = require(\"./Subscription\");\nvar ObjectUnsubscribedError_1 = require(\"./util/ObjectUnsubscribedError\");\nvar arrRemove_1 = require(\"./util/arrRemove\");\nvar errorContext_1 = require(\"./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_1.ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext_1.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_1.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_1.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 Subscription_1.EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription_1.Subscription(function () {\n _this.currentObservers = null;\n arrRemove_1.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_1.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_1.Observable));\nexports.Subject = 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 : Subscription_1.EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexports.AnonymousSubject = AnonymousSubject;\n//# sourceMappingURL=Subject.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BehaviorSubject = void 0;\nvar Subject_1 = require(\"./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_1.Subject));\nexports.BehaviorSubject = BehaviorSubject;\n//# sourceMappingURL=BehaviorSubject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dateTimestampProvider = void 0;\nexports.dateTimestampProvider = {\n now: function () {\n return (exports.dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReplaySubject = void 0;\nvar Subject_1 = require(\"./Subject\");\nvar dateTimestampProvider_1 = require(\"./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_1.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_1.Subject));\nexports.ReplaySubject = ReplaySubject;\n//# sourceMappingURL=ReplaySubject.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncSubject = void 0;\nvar Subject_1 = require(\"./Subject\");\nvar AsyncSubject = (function (_super) {\n __extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._value = null;\n _this._hasValue = false;\n _this._isComplete = false;\n return _this;\n }\n AsyncSubject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, _hasValue = _a._hasValue, _value = _a._value, thrownError = _a.thrownError, isStopped = _a.isStopped, _isComplete = _a._isComplete;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped || _isComplete) {\n _hasValue && subscriber.next(_value);\n subscriber.complete();\n }\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.isStopped) {\n this._value = value;\n this._hasValue = true;\n }\n };\n AsyncSubject.prototype.complete = function () {\n var _a = this, _hasValue = _a._hasValue, _value = _a._value, _isComplete = _a._isComplete;\n if (!_isComplete) {\n this._isComplete = true;\n _hasValue && _super.prototype.next.call(this, _value);\n _super.prototype.complete.call(this);\n }\n };\n return AsyncSubject;\n}(Subject_1.Subject));\nexports.AsyncSubject = AsyncSubject;\n//# sourceMappingURL=AsyncSubject.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Action = void 0;\nvar Subscription_1 = require(\"../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_1.Subscription));\nexports.Action = Action;\n//# sourceMappingURL=Action.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.intervalProvider = void 0;\nexports.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 = exports.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 = exports.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","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncAction = void 0;\nvar Action_1 = require(\"./Action\");\nvar intervalProvider_1 = require(\"./intervalProvider\");\nvar arrRemove_1 = require(\"../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_1.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_1.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_1.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_1.Action));\nexports.AsyncAction = AsyncAction;\n//# sourceMappingURL=AsyncAction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TestTools = exports.Immediate = void 0;\nvar nextHandle = 1;\nvar resolved;\nvar activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexports.Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(function () { return findAndClearHandle(handle) && cb(); });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n },\n};\nexports.TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.immediateProvider = void 0;\nvar Immediate_1 = require(\"../util/Immediate\");\nvar setImmediate = Immediate_1.Immediate.setImmediate, clearImmediate = Immediate_1.Immediate.clearImmediate;\nexports.immediateProvider = {\n setImmediate: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = exports.immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args)));\n },\n clearImmediate: function (handle) {\n var delegate = exports.immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=immediateProvider.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsapAction = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar immediateProvider_1 = require(\"./immediateProvider\");\nvar AsapAction = (function (_super) {\n __extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider_1.immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider_1.immediateProvider.clearImmediate(id);\n if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction_1.AsyncAction));\nexports.AsapAction = AsapAction;\n//# sourceMappingURL=AsapAction.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Scheduler = void 0;\nvar dateTimestampProvider_1 = require(\"./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_1.dateTimestampProvider.now;\n return Scheduler;\n}());\nexports.Scheduler = Scheduler;\n//# sourceMappingURL=Scheduler.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncScheduler = void 0;\nvar Scheduler_1 = require(\"../Scheduler\");\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler_1.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_1.Scheduler));\nexports.AsyncScheduler = AsyncScheduler;\n//# sourceMappingURL=AsyncScheduler.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsapScheduler = void 0;\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar AsapScheduler = (function (_super) {\n __extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId = this._scheduled;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.AsapScheduler = AsapScheduler;\n//# sourceMappingURL=AsapScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.asap = exports.asapScheduler = void 0;\nvar AsapAction_1 = require(\"./AsapAction\");\nvar AsapScheduler_1 = require(\"./AsapScheduler\");\nexports.asapScheduler = new AsapScheduler_1.AsapScheduler(AsapAction_1.AsapAction);\nexports.asap = exports.asapScheduler;\n//# sourceMappingURL=asap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.async = exports.asyncScheduler = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nexports.asyncScheduler = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction);\nexports.async = exports.asyncScheduler;\n//# sourceMappingURL=async.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueueAction = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar QueueAction = (function (_super) {\n __extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return delay > 0 || this.closed ? _super.prototype.execute.call(this, state, delay) : this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.flush(this);\n return 0;\n };\n return QueueAction;\n}(AsyncAction_1.AsyncAction));\nexports.QueueAction = QueueAction;\n//# sourceMappingURL=QueueAction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueueScheduler = void 0;\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar QueueScheduler = (function (_super) {\n __extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.QueueScheduler = QueueScheduler;\n//# sourceMappingURL=QueueScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.queue = exports.queueScheduler = void 0;\nvar QueueAction_1 = require(\"./QueueAction\");\nvar QueueScheduler_1 = require(\"./QueueScheduler\");\nexports.queueScheduler = new QueueScheduler_1.QueueScheduler(QueueAction_1.QueueAction);\nexports.queue = exports.queueScheduler;\n//# sourceMappingURL=queue.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnimationFrameAction = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar animationFrameProvider_1 = require(\"./animationFrameProvider\");\nvar AnimationFrameAction = (function (_super) {\n __extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider_1.animationFrameProvider.requestAnimationFrame(function () { return scheduler.flush(undefined); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && id === scheduler._scheduled && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n animationFrameProvider_1.animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction_1.AsyncAction));\nexports.AnimationFrameAction = AnimationFrameAction;\n//# sourceMappingURL=AnimationFrameAction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnimationFrameScheduler = void 0;\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar AnimationFrameScheduler = (function (_super) {\n __extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId;\n if (action) {\n flushId = action.id;\n }\n else {\n flushId = this._scheduled;\n this._scheduled = undefined;\n }\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.AnimationFrameScheduler = AnimationFrameScheduler;\n//# sourceMappingURL=AnimationFrameScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.animationFrame = exports.animationFrameScheduler = void 0;\nvar AnimationFrameAction_1 = require(\"./AnimationFrameAction\");\nvar AnimationFrameScheduler_1 = require(\"./AnimationFrameScheduler\");\nexports.animationFrameScheduler = new AnimationFrameScheduler_1.AnimationFrameScheduler(AnimationFrameAction_1.AnimationFrameAction);\nexports.animationFrame = exports.animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VirtualAction = exports.VirtualTimeScheduler = void 0;\nvar AsyncAction_1 = require(\"./AsyncAction\");\nvar Subscription_1 = require(\"../Subscription\");\nvar AsyncScheduler_1 = require(\"./AsyncScheduler\");\nvar VirtualTimeScheduler = (function (_super) {\n __extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(schedulerActionCtor, maxFrames) {\n if (schedulerActionCtor === void 0) { schedulerActionCtor = VirtualAction; }\n if (maxFrames === void 0) { maxFrames = Infinity; }\n var _this = _super.call(this, schedulerActionCtor, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error;\n var action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n }\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler_1.AsyncScheduler));\nexports.VirtualTimeScheduler = VirtualTimeScheduler;\nvar VirtualAction = (function (_super) {\n __extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) { index = (scheduler.index += 1); }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (Number.isFinite(delay)) {\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n else {\n return Subscription_1.Subscription.EMPTY;\n }\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return 1;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction_1.AsyncAction));\nexports.VirtualAction = VirtualAction;\n//# sourceMappingURL=VirtualTimeScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.empty = exports.EMPTY = void 0;\nvar Observable_1 = require(\"../Observable\");\nexports.EMPTY = new Observable_1.Observable(function (subscriber) { return subscriber.complete(); });\nfunction empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : exports.EMPTY;\n}\nexports.empty = empty;\nfunction emptyScheduled(scheduler) {\n return new Observable_1.Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isScheduler = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction isScheduler(value) {\n return value && isFunction_1.isFunction(value.schedule);\n}\nexports.isScheduler = isScheduler;\n//# sourceMappingURL=isScheduler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.popNumber = exports.popScheduler = exports.popResultSelector = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nvar isScheduler_1 = require(\"./isScheduler\");\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nfunction popResultSelector(args) {\n return isFunction_1.isFunction(last(args)) ? args.pop() : undefined;\n}\nexports.popResultSelector = popResultSelector;\nfunction popScheduler(args) {\n return isScheduler_1.isScheduler(last(args)) ? args.pop() : undefined;\n}\nexports.popScheduler = popScheduler;\nfunction popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\nexports.popNumber = popNumber;\n//# sourceMappingURL=args.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArrayLike = void 0;\nexports.isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPromise = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction isPromise(value) {\n return isFunction_1.isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\nexports.isPromise = isPromise;\n//# sourceMappingURL=isPromise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isInteropObservable = void 0;\nvar observable_1 = require(\"../symbol/observable\");\nvar isFunction_1 = require(\"./isFunction\");\nfunction isInteropObservable(input) {\n return isFunction_1.isFunction(input[observable_1.observable]);\n}\nexports.isInteropObservable = isInteropObservable;\n//# sourceMappingURL=isInteropObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAsyncIterable = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction_1.isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\nexports.isAsyncIterable = isAsyncIterable;\n//# sourceMappingURL=isAsyncIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createInvalidObservableTypeError = void 0;\nfunction createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\nexports.createInvalidObservableTypeError = createInvalidObservableTypeError;\n//# sourceMappingURL=throwUnobservableError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.iterator = exports.getSymbolIterator = void 0;\nfunction getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexports.getSymbolIterator = getSymbolIterator;\nexports.iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIterable = void 0;\nvar iterator_1 = require(\"../symbol/iterator\");\nvar isFunction_1 = require(\"./isFunction\");\nfunction isIterable(input) {\n return isFunction_1.isFunction(input === null || input === void 0 ? void 0 : input[iterator_1.iterator]);\n}\nexports.isIterable = isIterable;\n//# sourceMappingURL=isIterable.js.map","\"use strict\";\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isReadableStreamLike = exports.readableStreamLikeToAsyncGenerator = void 0;\nvar isFunction_1 = require(\"./isFunction\");\nfunction readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexports.readableStreamLikeToAsyncGenerator = readableStreamLikeToAsyncGenerator;\nfunction isReadableStreamLike(obj) {\n return isFunction_1.isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\nexports.isReadableStreamLike = isReadableStreamLike;\n//# sourceMappingURL=isReadableStreamLike.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromReadableStreamLike = exports.fromAsyncIterable = exports.fromIterable = exports.fromPromise = exports.fromArrayLike = exports.fromInteropObservable = exports.innerFrom = void 0;\nvar isArrayLike_1 = require(\"../util/isArrayLike\");\nvar isPromise_1 = require(\"../util/isPromise\");\nvar Observable_1 = require(\"../Observable\");\nvar isInteropObservable_1 = require(\"../util/isInteropObservable\");\nvar isAsyncIterable_1 = require(\"../util/isAsyncIterable\");\nvar throwUnobservableError_1 = require(\"../util/throwUnobservableError\");\nvar isIterable_1 = require(\"../util/isIterable\");\nvar isReadableStreamLike_1 = require(\"../util/isReadableStreamLike\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar reportUnhandledError_1 = require(\"../util/reportUnhandledError\");\nvar observable_1 = require(\"../symbol/observable\");\nfunction innerFrom(input) {\n if (input instanceof Observable_1.Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable_1.isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike_1.isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise_1.isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable_1.isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable_1.isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike_1.isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw throwUnobservableError_1.createInvalidObservableTypeError(input);\n}\nexports.innerFrom = innerFrom;\nfunction fromInteropObservable(obj) {\n return new Observable_1.Observable(function (subscriber) {\n var obs = obj[observable_1.observable]();\n if (isFunction_1.isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexports.fromInteropObservable = fromInteropObservable;\nfunction fromArrayLike(array) {\n return new Observable_1.Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexports.fromArrayLike = fromArrayLike;\nfunction fromPromise(promise) {\n return new Observable_1.Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError_1.reportUnhandledError);\n });\n}\nexports.fromPromise = fromPromise;\nfunction fromIterable(iterable) {\n return new Observable_1.Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexports.fromIterable = fromIterable;\nfunction fromAsyncIterable(asyncIterable) {\n return new Observable_1.Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexports.fromAsyncIterable = fromAsyncIterable;\nfunction fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(readableStream));\n}\nexports.fromReadableStreamLike = fromReadableStreamLike;\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.executeSchedule = void 0;\nfunction executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\nexports.executeSchedule = executeSchedule;\n//# sourceMappingURL=executeSchedule.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observeOn = void 0;\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return executeSchedule_1.executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule_1.executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule_1.executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\nexports.observeOn = observeOn;\n//# sourceMappingURL=observeOn.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscribeOn = void 0;\nvar lift_1 = require(\"../util/lift\");\nfunction subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return lift_1.operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\nexports.subscribeOn = subscribeOn;\n//# sourceMappingURL=subscribeOn.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleObservable = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar observeOn_1 = require(\"../operators/observeOn\");\nvar subscribeOn_1 = require(\"../operators/subscribeOn\");\nfunction scheduleObservable(input, scheduler) {\n return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));\n}\nexports.scheduleObservable = scheduleObservable;\n//# sourceMappingURL=scheduleObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.schedulePromise = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar observeOn_1 = require(\"../operators/observeOn\");\nvar subscribeOn_1 = require(\"../operators/subscribeOn\");\nfunction schedulePromise(input, scheduler) {\n return innerFrom_1.innerFrom(input).pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));\n}\nexports.schedulePromise = schedulePromise;\n//# sourceMappingURL=schedulePromise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleArray = void 0;\nvar Observable_1 = require(\"../Observable\");\nfunction scheduleArray(input, scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\nexports.scheduleArray = scheduleArray;\n//# sourceMappingURL=scheduleArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleIterable = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar iterator_1 = require(\"../symbol/iterator\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction scheduleIterable(input, scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var iterator;\n executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n iterator = input[iterator_1.iterator]();\n executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction_1.isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\nexports.scheduleIterable = scheduleIterable;\n//# sourceMappingURL=scheduleIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleAsyncIterable = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable_1.Observable(function (subscriber) {\n executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule_1.executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\nexports.scheduleAsyncIterable = scheduleAsyncIterable;\n//# sourceMappingURL=scheduleAsyncIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduleReadableStreamLike = void 0;\nvar scheduleAsyncIterable_1 = require(\"./scheduleAsyncIterable\");\nvar isReadableStreamLike_1 = require(\"../util/isReadableStreamLike\");\nfunction scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable_1.scheduleAsyncIterable(isReadableStreamLike_1.readableStreamLikeToAsyncGenerator(input), scheduler);\n}\nexports.scheduleReadableStreamLike = scheduleReadableStreamLike;\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scheduled = void 0;\nvar scheduleObservable_1 = require(\"./scheduleObservable\");\nvar schedulePromise_1 = require(\"./schedulePromise\");\nvar scheduleArray_1 = require(\"./scheduleArray\");\nvar scheduleIterable_1 = require(\"./scheduleIterable\");\nvar scheduleAsyncIterable_1 = require(\"./scheduleAsyncIterable\");\nvar isInteropObservable_1 = require(\"../util/isInteropObservable\");\nvar isPromise_1 = require(\"../util/isPromise\");\nvar isArrayLike_1 = require(\"../util/isArrayLike\");\nvar isIterable_1 = require(\"../util/isIterable\");\nvar isAsyncIterable_1 = require(\"../util/isAsyncIterable\");\nvar throwUnobservableError_1 = require(\"../util/throwUnobservableError\");\nvar isReadableStreamLike_1 = require(\"../util/isReadableStreamLike\");\nvar scheduleReadableStreamLike_1 = require(\"./scheduleReadableStreamLike\");\nfunction scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable_1.isInteropObservable(input)) {\n return scheduleObservable_1.scheduleObservable(input, scheduler);\n }\n if (isArrayLike_1.isArrayLike(input)) {\n return scheduleArray_1.scheduleArray(input, scheduler);\n }\n if (isPromise_1.isPromise(input)) {\n return schedulePromise_1.schedulePromise(input, scheduler);\n }\n if (isAsyncIterable_1.isAsyncIterable(input)) {\n return scheduleAsyncIterable_1.scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable_1.isIterable(input)) {\n return scheduleIterable_1.scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike_1.isReadableStreamLike(input)) {\n return scheduleReadableStreamLike_1.scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw throwUnobservableError_1.createInvalidObservableTypeError(input);\n}\nexports.scheduled = scheduled;\n//# sourceMappingURL=scheduled.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.from = void 0;\nvar scheduled_1 = require(\"../scheduled/scheduled\");\nvar innerFrom_1 = require(\"./innerFrom\");\nfunction from(input, scheduler) {\n return scheduler ? scheduled_1.scheduled(input, scheduler) : innerFrom_1.innerFrom(input);\n}\nexports.from = from;\n//# sourceMappingURL=from.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.of = void 0;\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"./from\");\nfunction of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n return from_1.from(args, scheduler);\n}\nexports.of = of;\n//# sourceMappingURL=of.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throwError = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction throwError(errorOrErrorFactory, scheduler) {\n var errorFactory = isFunction_1.isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function () { return errorOrErrorFactory; };\n var init = function (subscriber) { return subscriber.error(errorFactory()); };\n return new Observable_1.Observable(scheduler ? function (subscriber) { return scheduler.schedule(init, 0, subscriber); } : init);\n}\nexports.throwError = throwError;\n//# sourceMappingURL=throwError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observeNotification = exports.Notification = exports.NotificationKind = void 0;\nvar empty_1 = require(\"./observable/empty\");\nvar of_1 = require(\"./observable/of\");\nvar throwError_1 = require(\"./observable/throwError\");\nvar isFunction_1 = require(\"./util/isFunction\");\nvar NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind = exports.NotificationKind || (exports.NotificationKind = {}));\nvar Notification = (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n return observeNotification(this, observer);\n };\n Notification.prototype.do = function (nextHandler, errorHandler, completeHandler) {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n var _a;\n return isFunction_1.isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next)\n ? this.observe(nextOrObserver)\n : this.do(nextOrObserver, error, complete);\n };\n Notification.prototype.toObservable = function () {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n var result = kind === 'N'\n ?\n of_1.of(value)\n :\n kind === 'E'\n ?\n throwError_1.throwError(function () { return error; })\n :\n kind === 'C'\n ?\n empty_1.EMPTY\n :\n 0;\n if (!result) {\n throw new TypeError(\"Unexpected notification kind \" + kind);\n }\n return result;\n };\n Notification.createNext = function (value) {\n return new Notification('N', value);\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n return Notification;\n}());\nexports.Notification = Notification;\nfunction observeNotification(notification, observer) {\n var _a, _b, _c;\n var _d = notification, kind = _d.kind, value = _d.value, error = _d.error;\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n}\nexports.observeNotification = observeNotification;\n//# sourceMappingURL=Notification.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isObservable = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar isFunction_1 = require(\"./isFunction\");\nfunction isObservable(obj) {\n return !!obj && (obj instanceof Observable_1.Observable || (isFunction_1.isFunction(obj.lift) && isFunction_1.isFunction(obj.subscribe)));\n}\nexports.isObservable = isObservable;\n//# sourceMappingURL=isObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EmptyError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.EmptyError = createErrorClass_1.createErrorClass(function (_super) {\n return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n };\n});\n//# sourceMappingURL=EmptyError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.lastValueFrom = void 0;\nvar EmptyError_1 = require(\"./util/EmptyError\");\nfunction lastValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var _hasValue = false;\n var _value;\n source.subscribe({\n next: function (value) {\n _value = value;\n _hasValue = true;\n },\n error: reject,\n complete: function () {\n if (_hasValue) {\n resolve(_value);\n }\n else if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError_1.EmptyError());\n }\n },\n });\n });\n}\nexports.lastValueFrom = lastValueFrom;\n//# sourceMappingURL=lastValueFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.firstValueFrom = void 0;\nvar EmptyError_1 = require(\"./util/EmptyError\");\nvar Subscriber_1 = require(\"./Subscriber\");\nfunction firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new Subscriber_1.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_1.EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\nexports.firstValueFrom = firstValueFrom;\n//# sourceMappingURL=firstValueFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArgumentOutOfRangeError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.ArgumentOutOfRangeError = createErrorClass_1.createErrorClass(function (_super) {\n return function ArgumentOutOfRangeErrorImpl() {\n _super(this);\n this.name = 'ArgumentOutOfRangeError';\n this.message = 'argument out of range';\n };\n});\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotFoundError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.NotFoundError = createErrorClass_1.createErrorClass(function (_super) {\n return function NotFoundErrorImpl(message) {\n _super(this);\n this.name = 'NotFoundError';\n this.message = message;\n };\n});\n//# sourceMappingURL=NotFoundError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SequenceError = void 0;\nvar createErrorClass_1 = require(\"./createErrorClass\");\nexports.SequenceError = createErrorClass_1.createErrorClass(function (_super) {\n return function SequenceErrorImpl(message) {\n _super(this);\n this.name = 'SequenceError';\n this.message = message;\n };\n});\n//# sourceMappingURL=SequenceError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidDate = void 0;\nfunction isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\nexports.isValidDate = isValidDate;\n//# sourceMappingURL=isDate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timeout = exports.TimeoutError = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar isDate_1 = require(\"../util/isDate\");\nvar lift_1 = require(\"../util/lift\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar createErrorClass_1 = require(\"../util/createErrorClass\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nexports.TimeoutError = createErrorClass_1.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});\nfunction timeout(config, schedulerArg) {\n var _a = (isDate_1.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 : async_1.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 lift_1.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_1.executeSchedule(subscriber, scheduler, function () {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom_1.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(OperatorSubscriber_1.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}\nexports.timeout = timeout;\nfunction timeoutErrorFactory(info) {\n throw new exports.TimeoutError(info);\n}\n//# sourceMappingURL=timeout.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.map = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction map(project, thisArg) {\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\nexports.map = map;\n//# sourceMappingURL=map.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapOneOrManyArgs = void 0;\nvar map_1 = require(\"../operators/map\");\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nfunction mapOneOrManyArgs(fn) {\n return map_1.map(function (args) { return callOrApply(fn, args); });\n}\nexports.mapOneOrManyArgs = mapOneOrManyArgs;\n//# sourceMappingURL=mapOneOrManyArgs.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindCallbackInternals = void 0;\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar Observable_1 = require(\"../Observable\");\nvar subscribeOn_1 = require(\"../operators/subscribeOn\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar observeOn_1 = require(\"../operators/observeOn\");\nvar AsyncSubject_1 = require(\"../AsyncSubject\");\nfunction bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler_1.isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler)\n .apply(this, args)\n .pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));\n };\n }\n }\n if (scheduler) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallbackInternals(isNodeStyle, callbackFunc)\n .apply(this, args)\n .pipe(subscribeOn_1.subscribeOn(scheduler), observeOn_1.observeOn(scheduler));\n };\n }\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var subject = new AsyncSubject_1.AsyncSubject();\n var uninitialized = true;\n return new Observable_1.Observable(function (subscriber) {\n var subs = subject.subscribe(subscriber);\n if (uninitialized) {\n uninitialized = false;\n var isAsync_1 = false;\n var isComplete_1 = false;\n callbackFunc.apply(_this, __spreadArray(__spreadArray([], __read(args)), [\n function () {\n var results = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n results[_i] = arguments[_i];\n }\n if (isNodeStyle) {\n var err = results.shift();\n if (err != null) {\n subject.error(err);\n return;\n }\n }\n subject.next(1 < results.length ? results : results[0]);\n isComplete_1 = true;\n if (isAsync_1) {\n subject.complete();\n }\n },\n ]));\n if (isComplete_1) {\n subject.complete();\n }\n isAsync_1 = true;\n }\n return subs;\n });\n };\n}\nexports.bindCallbackInternals = bindCallbackInternals;\n//# sourceMappingURL=bindCallbackInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindCallback = void 0;\nvar bindCallbackInternals_1 = require(\"./bindCallbackInternals\");\nfunction bindCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals_1.bindCallbackInternals(false, callbackFunc, resultSelector, scheduler);\n}\nexports.bindCallback = bindCallback;\n//# sourceMappingURL=bindCallback.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindNodeCallback = void 0;\nvar bindCallbackInternals_1 = require(\"./bindCallbackInternals\");\nfunction bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals_1.bindCallbackInternals(true, callbackFunc, resultSelector, scheduler);\n}\nexports.bindNodeCallback = bindNodeCallback;\n//# sourceMappingURL=bindNodeCallback.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.argsArgArrayOrObject = void 0;\nvar isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nfunction argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n if (isArray(first_1)) {\n return { args: first_1, keys: null };\n }\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) { return first_1[key]; }),\n keys: keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nexports.argsArgArrayOrObject = argsArgArrayOrObject;\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createObject = void 0;\nfunction createObject(keys, values) {\n return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\nexports.createObject = createObject;\n//# sourceMappingURL=createObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineLatestInit = exports.combineLatest = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar argsArgArrayOrObject_1 = require(\"../util/argsArgArrayOrObject\");\nvar from_1 = require(\"./from\");\nvar identity_1 = require(\"../util/identity\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar args_1 = require(\"../util/args\");\nvar createObject_1 = require(\"../util/createObject\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n var resultSelector = args_1.popResultSelector(args);\n var _a = argsArgArrayOrObject_1.argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n if (observables.length === 0) {\n return from_1.from([], scheduler);\n }\n var result = new Observable_1.Observable(combineLatestInit(observables, scheduler, keys\n ?\n function (values) { return createObject_1.createObject(keys, values); }\n :\n identity_1.identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result;\n}\nexports.combineLatest = combineLatest;\nfunction combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) { valueTransform = identity_1.identity; }\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from_1.from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\nexports.combineLatestInit = combineLatestInit;\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule_1.executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n//# sourceMappingURL=combineLatest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeInternals = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom_1.innerFrom(project(value, index++)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule_1.executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\nexports.mergeInternals = mergeInternals;\n//# sourceMappingURL=mergeInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeMap = void 0;\nvar map_1 = require(\"./map\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar mergeInternals_1 = require(\"./mergeInternals\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction_1.isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map_1.map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom_1.innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return lift_1.operate(function (source, subscriber) { return mergeInternals_1.mergeInternals(source, subscriber, project, concurrent); });\n}\nexports.mergeMap = mergeMap;\n//# sourceMappingURL=mergeMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeAll = void 0;\nvar mergeMap_1 = require(\"./mergeMap\");\nvar identity_1 = require(\"../util/identity\");\nfunction mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap_1.mergeMap(identity_1.identity, concurrent);\n}\nexports.mergeAll = mergeAll;\n//# sourceMappingURL=mergeAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatAll = void 0;\nvar mergeAll_1 = require(\"./mergeAll\");\nfunction concatAll() {\n return mergeAll_1.mergeAll(1);\n}\nexports.concatAll = concatAll;\n//# sourceMappingURL=concatAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concat = void 0;\nvar concatAll_1 = require(\"../operators/concatAll\");\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"./from\");\nfunction concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll_1.concatAll()(from_1.from(args, args_1.popScheduler(args)));\n}\nexports.concat = concat;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defer = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"./innerFrom\");\nfunction defer(observableFactory) {\n return new Observable_1.Observable(function (subscriber) {\n innerFrom_1.innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\nexports.defer = defer;\n//# sourceMappingURL=defer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.connectable = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar Observable_1 = require(\"../Observable\");\nvar defer_1 = require(\"./defer\");\nvar DEFAULT_CONFIG = {\n connector: function () { return new Subject_1.Subject(); },\n resetOnDisconnect: true,\n};\nfunction connectable(source, config) {\n if (config === void 0) { config = DEFAULT_CONFIG; }\n var connection = null;\n var connector = config.connector, _a = config.resetOnDisconnect, resetOnDisconnect = _a === void 0 ? true : _a;\n var subject = connector();\n var result = new Observable_1.Observable(function (subscriber) {\n return subject.subscribe(subscriber);\n });\n result.connect = function () {\n if (!connection || connection.closed) {\n connection = defer_1.defer(function () { return source; }).subscribe(subject);\n if (resetOnDisconnect) {\n connection.add(function () { return (subject = connector()); });\n }\n }\n return connection;\n };\n return result;\n}\nexports.connectable = connectable;\n//# sourceMappingURL=connectable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.forkJoin = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar argsArgArrayOrObject_1 = require(\"../util/argsArgArrayOrObject\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar args_1 = require(\"../util/args\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar createObject_1 = require(\"../util/createObject\");\nfunction forkJoin() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = args_1.popResultSelector(args);\n var _a = argsArgArrayOrObject_1.argsArgArrayOrObject(args), sources = _a.args, keys = _a.keys;\n var result = new Observable_1.Observable(function (subscriber) {\n var length = sources.length;\n if (!length) {\n subscriber.complete();\n return;\n }\n var values = new Array(length);\n var remainingCompletions = length;\n var remainingEmissions = length;\n var _loop_1 = function (sourceIndex) {\n var hasValue = false;\n innerFrom_1.innerFrom(sources[sourceIndex]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n }, function () { return remainingCompletions--; }, undefined, function () {\n if (!remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject_1.createObject(keys, values) : values);\n }\n subscriber.complete();\n }\n }));\n };\n for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n _loop_1(sourceIndex);\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector)) : result;\n}\nexports.forkJoin = forkJoin;\n//# sourceMappingURL=forkJoin.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromEvent = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Observable_1 = require(\"../Observable\");\nvar mergeMap_1 = require(\"../operators/mergeMap\");\nvar isArrayLike_1 = require(\"../util/isArrayLike\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nfunction fromEvent(target, eventName, options, resultSelector) {\n if (isFunction_1.isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs_1.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_1.isArrayLike(target)) {\n return mergeMap_1.mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom_1.innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable_1.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}\nexports.fromEvent = fromEvent;\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction_1.isFunction(target.addListener) && isFunction_1.isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction_1.isFunction(target.on) && isFunction_1.isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction_1.isFunction(target.addEventListener) && isFunction_1.isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromEventPattern = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nfunction fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector));\n }\n return new Observable_1.Observable(function (subscriber) {\n var handler = function () {\n var e = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n e[_i] = arguments[_i];\n }\n return subscriber.next(e.length === 1 ? e[0] : e);\n };\n var retValue = addHandler(handler);\n return isFunction_1.isFunction(removeHandler) ? function () { return removeHandler(handler, retValue); } : undefined;\n });\n}\nexports.fromEventPattern = fromEventPattern;\n//# sourceMappingURL=fromEventPattern.js.map","\"use strict\";\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generate = void 0;\nvar identity_1 = require(\"../util/identity\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar defer_1 = require(\"./defer\");\nvar scheduleIterable_1 = require(\"../scheduled/scheduleIterable\");\nfunction generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) {\n var _a, _b;\n var resultSelector;\n var initialState;\n if (arguments.length === 1) {\n (_a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? identity_1.identity : _b, scheduler = _a.scheduler);\n }\n else {\n initialState = initialStateOrOptions;\n if (!resultSelectorOrScheduler || isScheduler_1.isScheduler(resultSelectorOrScheduler)) {\n resultSelector = identity_1.identity;\n scheduler = resultSelectorOrScheduler;\n }\n else {\n resultSelector = resultSelectorOrScheduler;\n }\n }\n function gen() {\n var state;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n state = initialState;\n _a.label = 1;\n case 1:\n if (!(!condition || condition(state))) return [3, 4];\n return [4, resultSelector(state)];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n state = iterate(state);\n return [3, 1];\n case 4: return [2];\n }\n });\n }\n return defer_1.defer((scheduler\n ?\n function () { return scheduleIterable_1.scheduleIterable(gen(), scheduler); }\n :\n gen));\n}\nexports.generate = generate;\n//# sourceMappingURL=generate.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.iif = void 0;\nvar defer_1 = require(\"./defer\");\nfunction iif(condition, trueResult, falseResult) {\n return defer_1.defer(function () { return (condition() ? trueResult : falseResult); });\n}\nexports.iif = iif;\n//# sourceMappingURL=iif.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timer = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar async_1 = require(\"../scheduler/async\");\nvar isScheduler_1 = require(\"../util/isScheduler\");\nvar isDate_1 = require(\"../util/isDate\");\nfunction timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = async_1.async; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler_1.isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable_1.Observable(function (subscriber) {\n var due = isDate_1.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}\nexports.timer = timer;\n//# sourceMappingURL=timer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.interval = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar timer_1 = require(\"./timer\");\nfunction interval(period, scheduler) {\n if (period === void 0) { period = 0; }\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n if (period < 0) {\n period = 0;\n }\n return timer_1.timer(period, period, scheduler);\n}\nexports.interval = interval;\n//# sourceMappingURL=interval.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\nvar mergeAll_1 = require(\"../operators/mergeAll\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar empty_1 = require(\"./empty\");\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"./from\");\nfunction merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n var concurrent = args_1.popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n empty_1.EMPTY\n : sources.length === 1\n ?\n innerFrom_1.innerFrom(sources[0])\n :\n mergeAll_1.mergeAll(concurrent)(from_1.from(sources, scheduler));\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.never = exports.NEVER = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar noop_1 = require(\"../util/noop\");\nexports.NEVER = new Observable_1.Observable(noop_1.noop);\nfunction never() {\n return exports.NEVER;\n}\nexports.never = never;\n//# sourceMappingURL=never.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.argsOrArgArray = void 0;\nvar isArray = Array.isArray;\nfunction argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\nexports.argsOrArgArray = argsOrArgArray;\n//# sourceMappingURL=argsOrArgArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onErrorResumeNext = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar innerFrom_1 = require(\"./innerFrom\");\nfunction onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var nextSources = argsOrArgArray_1.argsOrArgArray(sources);\n return new Observable_1.Observable(function (subscriber) {\n var sourceIndex = 0;\n var subscribeNext = function () {\n if (sourceIndex < nextSources.length) {\n var nextSource = void 0;\n try {\n nextSource = innerFrom_1.innerFrom(nextSources[sourceIndex++]);\n }\n catch (err) {\n subscribeNext();\n return;\n }\n var innerSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, undefined, noop_1.noop, noop_1.noop);\n nextSource.subscribe(innerSubscriber);\n innerSubscriber.add(subscribeNext);\n }\n else {\n subscriber.complete();\n }\n };\n subscribeNext();\n });\n}\nexports.onErrorResumeNext = onErrorResumeNext;\n//# sourceMappingURL=onErrorResumeNext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pairs = void 0;\nvar from_1 = require(\"./from\");\nfunction pairs(obj, scheduler) {\n return from_1.from(Object.entries(obj), scheduler);\n}\nexports.pairs = pairs;\n//# sourceMappingURL=pairs.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.not = void 0;\nfunction not(pred, thisArg) {\n return function (value, index) { return !pred.call(thisArg, value, index); };\n}\nexports.not = not;\n//# sourceMappingURL=not.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filter = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction filter(predicate, thisArg) {\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\nexports.filter = filter;\n//# sourceMappingURL=filter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partition = void 0;\nvar not_1 = require(\"../util/not\");\nvar filter_1 = require(\"../operators/filter\");\nvar innerFrom_1 = require(\"./innerFrom\");\nfunction partition(source, predicate, thisArg) {\n return [filter_1.filter(predicate, thisArg)(innerFrom_1.innerFrom(source)), filter_1.filter(not_1.not(predicate, thisArg))(innerFrom_1.innerFrom(source))];\n}\nexports.partition = partition;\n//# sourceMappingURL=partition.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.raceInit = exports.race = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nfunction race() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n sources = argsOrArgArray_1.argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom_1.innerFrom(sources[0]) : new Observable_1.Observable(raceInit(sources));\n}\nexports.race = race;\nfunction raceInit(sources) {\n return function (subscriber) {\n var subscriptions = [];\n var _loop_1 = function (i) {\n subscriptions.push(innerFrom_1.innerFrom(sources[i]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (subscriptions) {\n for (var s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n subscriptions = null;\n }\n subscriber.next(value);\n })));\n };\n for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n _loop_1(i);\n }\n };\n}\nexports.raceInit = raceInit;\n//# sourceMappingURL=race.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.range = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar empty_1 = require(\"./empty\");\nfunction range(start, count, scheduler) {\n if (count == null) {\n count = start;\n start = 0;\n }\n if (count <= 0) {\n return empty_1.EMPTY;\n }\n var end = count + start;\n return new Observable_1.Observable(scheduler\n ?\n function (subscriber) {\n var n = start;\n return scheduler.schedule(function () {\n if (n < end) {\n subscriber.next(n++);\n this.schedule();\n }\n else {\n subscriber.complete();\n }\n });\n }\n :\n function (subscriber) {\n var n = start;\n while (n < end && !subscriber.closed) {\n subscriber.next(n++);\n }\n subscriber.complete();\n });\n}\nexports.range = range;\n//# sourceMappingURL=range.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.using = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar empty_1 = require(\"./empty\");\nfunction using(resourceFactory, observableFactory) {\n return new Observable_1.Observable(function (subscriber) {\n var resource = resourceFactory();\n var result = observableFactory(resource);\n var source = result ? innerFrom_1.innerFrom(result) : empty_1.EMPTY;\n source.subscribe(subscriber);\n return function () {\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\nexports.using = using;\n//# sourceMappingURL=using.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zip = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"./innerFrom\");\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar empty_1 = require(\"./empty\");\nvar OperatorSubscriber_1 = require(\"../operators/OperatorSubscriber\");\nvar args_1 = require(\"../util/args\");\nfunction zip() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = args_1.popResultSelector(args);\n var sources = argsOrArgArray_1.argsOrArgArray(args);\n return sources.length\n ? new Observable_1.Observable(function (subscriber) {\n var buffers = sources.map(function () { return []; });\n var completed = sources.map(function () { return false; });\n subscriber.add(function () {\n buffers = completed = null;\n });\n var _loop_1 = function (sourceIndex) {\n innerFrom_1.innerFrom(sources[sourceIndex]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n buffers[sourceIndex].push(value);\n if (buffers.every(function (buffer) { return buffer.length; })) {\n var result = buffers.map(function (buffer) { return buffer.shift(); });\n subscriber.next(resultSelector ? resultSelector.apply(void 0, __spreadArray([], __read(result))) : result);\n if (buffers.some(function (buffer, i) { return !buffer.length && completed[i]; })) {\n subscriber.complete();\n }\n }\n }, function () {\n completed[sourceIndex] = true;\n !buffers[sourceIndex].length && subscriber.complete();\n }));\n };\n for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {\n _loop_1(sourceIndex);\n }\n return function () {\n buffers = completed = null;\n };\n })\n : empty_1.EMPTY;\n}\nexports.zip = zip;\n//# sourceMappingURL=zip.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.audit = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction audit(durationSelector) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n var isComplete = false;\n var endDuration = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n var cleanupDuration = function () {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom_1.innerFrom(durationSelector(value)).subscribe((durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, function () {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\nexports.audit = audit;\n//# sourceMappingURL=audit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.auditTime = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar audit_1 = require(\"./audit\");\nvar timer_1 = require(\"../observable/timer\");\nfunction auditTime(duration, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n return audit_1.audit(function () { return timer_1.timer(duration, scheduler); });\n}\nexports.auditTime = auditTime;\n//# sourceMappingURL=auditTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buffer = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar noop_1 = require(\"../util/noop\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction buffer(closingNotifier) {\n return lift_1.operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n innerFrom_1.innerFrom(closingNotifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n var b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n }, noop_1.noop));\n return function () {\n currentBuffer = null;\n };\n });\n}\nexports.buffer = buffer;\n//# sourceMappingURL=buffer.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferCount = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nfunction bufferCount(bufferSize, startBufferEvery) {\n if (startBufferEvery === void 0) { startBufferEvery = null; }\n startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize;\n return lift_1.operate(function (source, subscriber) {\n var buffers = [];\n var count = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a, e_2, _b;\n var toEmit = null;\n if (count++ % startBufferEvery === 0) {\n buffers.push([]);\n }\n try {\n for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n var buffer = buffers_1_1.value;\n buffer.push(value);\n if (bufferSize <= buffer.length) {\n toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : [];\n toEmit.push(buffer);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (toEmit) {\n try {\n for (var toEmit_1 = __values(toEmit), toEmit_1_1 = toEmit_1.next(); !toEmit_1_1.done; toEmit_1_1 = toEmit_1.next()) {\n var buffer = toEmit_1_1.value;\n arrRemove_1.arrRemove(buffers, buffer);\n subscriber.next(buffer);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (toEmit_1_1 && !toEmit_1_1.done && (_b = toEmit_1.return)) _b.call(toEmit_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }, function () {\n var e_3, _a;\n try {\n for (var buffers_2 = __values(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) {\n var buffer = buffers_2_1.value;\n subscriber.next(buffer);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (buffers_2_1 && !buffers_2_1.done && (_a = buffers_2.return)) _a.call(buffers_2);\n }\n finally { if (e_3) throw e_3.error; }\n }\n subscriber.complete();\n }, undefined, function () {\n buffers = null;\n }));\n });\n}\nexports.bufferCount = bufferCount;\n//# sourceMappingURL=bufferCount.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferTime = void 0;\nvar Subscription_1 = require(\"../Subscription\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nvar async_1 = require(\"../scheduler/async\");\nvar args_1 = require(\"../util/args\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction bufferTime(bufferTimeSpan) {\n var _a, _b;\n var otherArgs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n var scheduler = (_a = args_1.popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : async_1.asyncScheduler;\n var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxBufferSize = otherArgs[1] || Infinity;\n return lift_1.operate(function (source, subscriber) {\n var bufferRecords = [];\n var restartOnEmit = false;\n var emit = function (record) {\n var buffer = record.buffer, subs = record.subs;\n subs.unsubscribe();\n arrRemove_1.arrRemove(bufferRecords, record);\n subscriber.next(buffer);\n restartOnEmit && startBuffer();\n };\n var startBuffer = function () {\n if (bufferRecords) {\n var subs = new Subscription_1.Subscription();\n subscriber.add(subs);\n var buffer = [];\n var record_1 = {\n buffer: buffer,\n subs: subs,\n };\n bufferRecords.push(record_1);\n executeSchedule_1.executeSchedule(subs, scheduler, function () { return emit(record_1); }, bufferTimeSpan);\n }\n };\n if (bufferCreationInterval !== null && bufferCreationInterval >= 0) {\n executeSchedule_1.executeSchedule(subscriber, scheduler, startBuffer, bufferCreationInterval, true);\n }\n else {\n restartOnEmit = true;\n }\n startBuffer();\n var bufferTimeSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n var recordsCopy = bufferRecords.slice();\n try {\n for (var recordsCopy_1 = __values(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) {\n var record = recordsCopy_1_1.value;\n var buffer = record.buffer;\n buffer.push(value);\n maxBufferSize <= buffer.length && emit(record);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a = recordsCopy_1.return)) _a.call(recordsCopy_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, function () {\n while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) {\n subscriber.next(bufferRecords.shift().buffer);\n }\n bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe();\n subscriber.complete();\n subscriber.unsubscribe();\n }, undefined, function () { return (bufferRecords = null); });\n source.subscribe(bufferTimeSubscriber);\n });\n}\nexports.bufferTime = bufferTime;\n//# sourceMappingURL=bufferTime.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferToggle = void 0;\nvar Subscription_1 = require(\"../Subscription\");\nvar lift_1 = require(\"../util/lift\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nfunction bufferToggle(openings, closingSelector) {\n return lift_1.operate(function (source, subscriber) {\n var buffers = [];\n innerFrom_1.innerFrom(openings).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (openValue) {\n var buffer = [];\n buffers.push(buffer);\n var closingSubscription = new Subscription_1.Subscription();\n var emitBuffer = function () {\n arrRemove_1.arrRemove(buffers, buffer);\n subscriber.next(buffer);\n closingSubscription.unsubscribe();\n };\n closingSubscription.add(innerFrom_1.innerFrom(closingSelector(openValue)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, emitBuffer, noop_1.noop)));\n }, noop_1.noop));\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n try {\n for (var buffers_1 = __values(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) {\n var buffer = buffers_1_1.value;\n buffer.push(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, function () {\n while (buffers.length > 0) {\n subscriber.next(buffers.shift());\n }\n subscriber.complete();\n }));\n });\n}\nexports.bufferToggle = bufferToggle;\n//# sourceMappingURL=bufferToggle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bufferWhen = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar noop_1 = require(\"../util/noop\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction bufferWhen(closingSelector) {\n return lift_1.operate(function (source, subscriber) {\n var buffer = null;\n var closingSubscriber = null;\n var openBuffer = function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n var b = buffer;\n buffer = [];\n b && subscriber.next(b);\n innerFrom_1.innerFrom(closingSelector()).subscribe((closingSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, openBuffer, noop_1.noop)));\n };\n openBuffer();\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return buffer === null || buffer === void 0 ? void 0 : buffer.push(value); }, function () {\n buffer && subscriber.next(buffer);\n subscriber.complete();\n }, undefined, function () { return (buffer = closingSubscriber = null); }));\n });\n}\nexports.bufferWhen = bufferWhen;\n//# sourceMappingURL=bufferWhen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.catchError = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar lift_1 = require(\"../util/lift\");\nfunction catchError(selector) {\n return lift_1.operate(function (source, subscriber) {\n var innerSub = null;\n var syncUnsub = false;\n var handledResult;\n innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, undefined, function (err) {\n handledResult = innerFrom_1.innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\nexports.catchError = catchError;\n//# sourceMappingURL=catchError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scanInternals = void 0;\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return function (source, subscriber) {\n var hasState = hasSeed;\n var state = seed;\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (function () {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\nexports.scanInternals = scanInternals;\n//# sourceMappingURL=scanInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reduce = void 0;\nvar scanInternals_1 = require(\"./scanInternals\");\nvar lift_1 = require(\"../util/lift\");\nfunction reduce(accumulator, seed) {\n return lift_1.operate(scanInternals_1.scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\nexports.reduce = reduce;\n//# sourceMappingURL=reduce.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toArray = void 0;\nvar reduce_1 = require(\"./reduce\");\nvar lift_1 = require(\"../util/lift\");\nvar arrReducer = function (arr, value) { return (arr.push(value), arr); };\nfunction toArray() {\n return lift_1.operate(function (source, subscriber) {\n reduce_1.reduce(arrReducer, [])(source).subscribe(subscriber);\n });\n}\nexports.toArray = toArray;\n//# sourceMappingURL=toArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.joinAllInternals = void 0;\nvar identity_1 = require(\"../util/identity\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar pipe_1 = require(\"../util/pipe\");\nvar mergeMap_1 = require(\"./mergeMap\");\nvar toArray_1 = require(\"./toArray\");\nfunction joinAllInternals(joinFn, project) {\n return pipe_1.pipe(toArray_1.toArray(), mergeMap_1.mergeMap(function (sources) { return joinFn(sources); }), project ? mapOneOrManyArgs_1.mapOneOrManyArgs(project) : identity_1.identity);\n}\nexports.joinAllInternals = joinAllInternals;\n//# sourceMappingURL=joinAllInternals.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineLatestAll = void 0;\nvar combineLatest_1 = require(\"../observable/combineLatest\");\nvar joinAllInternals_1 = require(\"./joinAllInternals\");\nfunction combineLatestAll(project) {\n return joinAllInternals_1.joinAllInternals(combineLatest_1.combineLatest, project);\n}\nexports.combineLatestAll = combineLatestAll;\n//# sourceMappingURL=combineLatestAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineAll = void 0;\nvar combineLatestAll_1 = require(\"./combineLatestAll\");\nexports.combineAll = combineLatestAll_1.combineLatestAll;\n//# sourceMappingURL=combineAll.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineLatest = void 0;\nvar combineLatest_1 = require(\"../observable/combineLatest\");\nvar lift_1 = require(\"../util/lift\");\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar mapOneOrManyArgs_1 = require(\"../util/mapOneOrManyArgs\");\nvar pipe_1 = require(\"../util/pipe\");\nvar args_1 = require(\"../util/args\");\nfunction combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = args_1.popResultSelector(args);\n return resultSelector\n ? pipe_1.pipe(combineLatest.apply(void 0, __spreadArray([], __read(args))), mapOneOrManyArgs_1.mapOneOrManyArgs(resultSelector))\n : lift_1.operate(function (source, subscriber) {\n combineLatest_1.combineLatestInit(__spreadArray([source], __read(argsOrArgArray_1.argsOrArgArray(args))))(subscriber);\n });\n}\nexports.combineLatest = combineLatest;\n//# sourceMappingURL=combineLatest.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineLatestWith = void 0;\nvar combineLatest_1 = require(\"./combineLatest\");\nfunction combineLatestWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return combineLatest_1.combineLatest.apply(void 0, __spreadArray([], __read(otherSources)));\n}\nexports.combineLatestWith = combineLatestWith;\n//# sourceMappingURL=combineLatestWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatMap = void 0;\nvar mergeMap_1 = require(\"./mergeMap\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction concatMap(project, resultSelector) {\n return isFunction_1.isFunction(resultSelector) ? mergeMap_1.mergeMap(project, resultSelector, 1) : mergeMap_1.mergeMap(project, 1);\n}\nexports.concatMap = concatMap;\n//# sourceMappingURL=concatMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatMapTo = void 0;\nvar concatMap_1 = require(\"./concatMap\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction concatMapTo(innerObservable, resultSelector) {\n return isFunction_1.isFunction(resultSelector) ? concatMap_1.concatMap(function () { return innerObservable; }, resultSelector) : concatMap_1.concatMap(function () { return innerObservable; });\n}\nexports.concatMapTo = concatMapTo;\n//# sourceMappingURL=concatMapTo.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concat = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar concatAll_1 = require(\"./concatAll\");\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"../observable/from\");\nfunction concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n return lift_1.operate(function (source, subscriber) {\n concatAll_1.concatAll()(from_1.from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\nexports.concat = concat;\n//# sourceMappingURL=concat.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.concatWith = void 0;\nvar concat_1 = require(\"./concat\");\nfunction concatWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return concat_1.concat.apply(void 0, __spreadArray([], __read(otherSources)));\n}\nexports.concatWith = concatWith;\n//# sourceMappingURL=concatWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromSubscribable = void 0;\nvar Observable_1 = require(\"../Observable\");\nfunction fromSubscribable(subscribable) {\n return new Observable_1.Observable(function (subscriber) { return subscribable.subscribe(subscriber); });\n}\nexports.fromSubscribable = fromSubscribable;\n//# sourceMappingURL=fromSubscribable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.connect = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar fromSubscribable_1 = require(\"../observable/fromSubscribable\");\nvar DEFAULT_CONFIG = {\n connector: function () { return new Subject_1.Subject(); },\n};\nfunction connect(selector, config) {\n if (config === void 0) { config = DEFAULT_CONFIG; }\n var connector = config.connector;\n return lift_1.operate(function (source, subscriber) {\n var subject = connector();\n innerFrom_1.innerFrom(selector(fromSubscribable_1.fromSubscribable(subject))).subscribe(subscriber);\n subscriber.add(source.subscribe(subject));\n });\n}\nexports.connect = connect;\n//# sourceMappingURL=connect.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.count = void 0;\nvar reduce_1 = require(\"./reduce\");\nfunction count(predicate) {\n return reduce_1.reduce(function (total, value, i) { return (!predicate || predicate(value, i) ? total + 1 : total); }, 0);\n}\nexports.count = count;\n//# sourceMappingURL=count.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.debounce = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar noop_1 = require(\"../util/noop\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction debounce(durationSelector) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n var durationSubscriber = null;\n var emit = function () {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, emit, noop_1.noop);\n innerFrom_1.innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = durationSubscriber = null;\n }));\n });\n}\nexports.debounce = debounce;\n//# sourceMappingURL=debounce.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.debounceTime = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n return lift_1.operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\nexports.debounceTime = debounceTime;\n//# sourceMappingURL=debounceTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultIfEmpty = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction defaultIfEmpty(defaultValue) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(OperatorSubscriber_1.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}\nexports.defaultIfEmpty = defaultIfEmpty;\n//# sourceMappingURL=defaultIfEmpty.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.take = void 0;\nvar empty_1 = require(\"../observable/empty\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction take(count) {\n return count <= 0\n ?\n function () { return empty_1.EMPTY; }\n : lift_1.operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\nexports.take = take;\n//# sourceMappingURL=take.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ignoreElements = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nfunction ignoreElements() {\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, noop_1.noop));\n });\n}\nexports.ignoreElements = ignoreElements;\n//# sourceMappingURL=ignoreElements.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapTo = void 0;\nvar map_1 = require(\"./map\");\nfunction mapTo(value) {\n return map_1.map(function () { return value; });\n}\nexports.mapTo = mapTo;\n//# sourceMappingURL=mapTo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delayWhen = void 0;\nvar concat_1 = require(\"../observable/concat\");\nvar take_1 = require(\"./take\");\nvar ignoreElements_1 = require(\"./ignoreElements\");\nvar mapTo_1 = require(\"./mapTo\");\nvar mergeMap_1 = require(\"./mergeMap\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat_1.concat(subscriptionDelay.pipe(take_1.take(1), ignoreElements_1.ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap_1.mergeMap(function (value, index) { return innerFrom_1.innerFrom(delayDurationSelector(value, index)).pipe(take_1.take(1), mapTo_1.mapTo(value)); });\n}\nexports.delayWhen = delayWhen;\n//# sourceMappingURL=delayWhen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.delay = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar delayWhen_1 = require(\"./delayWhen\");\nvar timer_1 = require(\"../observable/timer\");\nfunction delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n var duration = timer_1.timer(due, scheduler);\n return delayWhen_1.delayWhen(function () { return duration; });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dematerialize = void 0;\nvar Notification_1 = require(\"../Notification\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction dematerialize() {\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (notification) { return Notification_1.observeNotification(notification, subscriber); }));\n });\n}\nexports.dematerialize = dematerialize;\n//# sourceMappingURL=dematerialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.distinct = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction distinct(keySelector, flushes) {\n return lift_1.operate(function (source, subscriber) {\n var distinctKeys = new Set();\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var key = keySelector ? keySelector(value) : value;\n if (!distinctKeys.has(key)) {\n distinctKeys.add(key);\n subscriber.next(value);\n }\n }));\n flushes && innerFrom_1.innerFrom(flushes).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () { return distinctKeys.clear(); }, noop_1.noop));\n });\n}\nexports.distinct = distinct;\n//# sourceMappingURL=distinct.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.distinctUntilChanged = void 0;\nvar identity_1 = require(\"../util/identity\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity_1.identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return lift_1.operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(OperatorSubscriber_1.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}\nexports.distinctUntilChanged = distinctUntilChanged;\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.distinctUntilKeyChanged = void 0;\nvar distinctUntilChanged_1 = require(\"./distinctUntilChanged\");\nfunction distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged_1.distinctUntilChanged(function (x, y) { return (compare ? compare(x[key], y[key]) : x[key] === y[key]); });\n}\nexports.distinctUntilKeyChanged = distinctUntilKeyChanged;\n//# sourceMappingURL=distinctUntilKeyChanged.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throwIfEmpty = void 0;\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); }));\n });\n}\nexports.throwIfEmpty = throwIfEmpty;\nfunction defaultErrorFactory() {\n return new EmptyError_1.EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.elementAt = void 0;\nvar ArgumentOutOfRangeError_1 = require(\"../util/ArgumentOutOfRangeError\");\nvar filter_1 = require(\"./filter\");\nvar throwIfEmpty_1 = require(\"./throwIfEmpty\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar take_1 = require(\"./take\");\nfunction elementAt(index, defaultValue) {\n if (index < 0) {\n throw new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError();\n }\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(filter_1.filter(function (v, i) { return i === index; }), take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function () { return new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError(); }));\n };\n}\nexports.elementAt = elementAt;\n//# sourceMappingURL=elementAt.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.endWith = void 0;\nvar concat_1 = require(\"../observable/concat\");\nvar of_1 = require(\"../observable/of\");\nfunction endWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return function (source) { return concat_1.concat(source, of_1.of.apply(void 0, __spreadArray([], __read(values)))); };\n}\nexports.endWith = endWith;\n//# sourceMappingURL=endWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.every = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction every(predicate, thisArg) {\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (!predicate.call(thisArg, value, index++, source)) {\n subscriber.next(false);\n subscriber.complete();\n }\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\nexports.every = every;\n//# sourceMappingURL=every.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exhaustMap = void 0;\nvar map_1 = require(\"./map\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) {\n return source.pipe(exhaustMap(function (a, i) { return innerFrom_1.innerFrom(project(a, i)).pipe(map_1.map(function (b, ii) { return resultSelector(a, b, i, ii); })); }));\n };\n }\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n var innerSub = null;\n var isComplete = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (outerValue) {\n if (!innerSub) {\n innerSub = OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom_1.innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\nexports.exhaustMap = exhaustMap;\n//# sourceMappingURL=exhaustMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exhaustAll = void 0;\nvar exhaustMap_1 = require(\"./exhaustMap\");\nvar identity_1 = require(\"../util/identity\");\nfunction exhaustAll() {\n return exhaustMap_1.exhaustMap(identity_1.identity);\n}\nexports.exhaustAll = exhaustAll;\n//# sourceMappingURL=exhaustAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exhaust = void 0;\nvar exhaustAll_1 = require(\"./exhaustAll\");\nexports.exhaust = exhaustAll_1.exhaustAll;\n//# sourceMappingURL=exhaust.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expand = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar mergeInternals_1 = require(\"./mergeInternals\");\nfunction expand(project, concurrent, scheduler) {\n if (concurrent === void 0) { concurrent = Infinity; }\n concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;\n return lift_1.operate(function (source, subscriber) {\n return mergeInternals_1.mergeInternals(source, subscriber, project, concurrent, undefined, true, scheduler);\n });\n}\nexports.expand = expand;\n//# sourceMappingURL=expand.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.finalize = void 0;\nvar lift_1 = require(\"../util/lift\");\nfunction finalize(callback) {\n return lift_1.operate(function (source, subscriber) {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\nexports.finalize = finalize;\n//# sourceMappingURL=finalize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createFind = exports.find = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction find(predicate, thisArg) {\n return lift_1.operate(createFind(predicate, thisArg, 'value'));\n}\nexports.find = find;\nfunction createFind(predicate, thisArg, emit) {\n var findIndex = emit === 'index';\n return function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var i = index++;\n if (predicate.call(thisArg, value, i, source)) {\n subscriber.next(findIndex ? i : value);\n subscriber.complete();\n }\n }, function () {\n subscriber.next(findIndex ? -1 : undefined);\n subscriber.complete();\n }));\n };\n}\nexports.createFind = createFind;\n//# sourceMappingURL=find.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findIndex = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar find_1 = require(\"./find\");\nfunction findIndex(predicate, thisArg) {\n return lift_1.operate(find_1.createFind(predicate, thisArg, 'index'));\n}\nexports.findIndex = findIndex;\n//# sourceMappingURL=findIndex.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.first = void 0;\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar filter_1 = require(\"./filter\");\nvar take_1 = require(\"./take\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar throwIfEmpty_1 = require(\"./throwIfEmpty\");\nvar identity_1 = require(\"../util/identity\");\nfunction first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter_1.filter(function (v, i) { return predicate(v, i, source); }) : identity_1.identity, take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function () { return new EmptyError_1.EmptyError(); }));\n };\n}\nexports.first = first;\n//# sourceMappingURL=first.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.groupBy = void 0;\nvar Observable_1 = require(\"../Observable\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction groupBy(keySelector, elementOrOptions, duration, connector) {\n return lift_1.operate(function (source, subscriber) {\n var element;\n if (!elementOrOptions || typeof elementOrOptions === 'function') {\n element = elementOrOptions;\n }\n else {\n (duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector);\n }\n var groups = new Map();\n var notify = function (cb) {\n groups.forEach(cb);\n cb(subscriber);\n };\n var handleError = function (err) { return notify(function (consumer) { return consumer.error(err); }); };\n var activeGroups = 0;\n var teardownAttempted = false;\n var groupBySourceSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, function (value) {\n try {\n var key_1 = keySelector(value);\n var group_1 = groups.get(key_1);\n if (!group_1) {\n groups.set(key_1, (group_1 = connector ? connector() : new Subject_1.Subject()));\n var grouped = createGroupedObservable(key_1, group_1);\n subscriber.next(grouped);\n if (duration) {\n var durationSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(group_1, function () {\n group_1.complete();\n durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe();\n }, undefined, undefined, function () { return groups.delete(key_1); });\n groupBySourceSubscriber.add(innerFrom_1.innerFrom(duration(grouped)).subscribe(durationSubscriber_1));\n }\n }\n group_1.next(element ? element(value) : value);\n }\n catch (err) {\n handleError(err);\n }\n }, function () { return notify(function (consumer) { return consumer.complete(); }); }, handleError, function () { return groups.clear(); }, function () {\n teardownAttempted = true;\n return activeGroups === 0;\n });\n source.subscribe(groupBySourceSubscriber);\n function createGroupedObservable(key, groupSubject) {\n var result = new Observable_1.Observable(function (groupSubscriber) {\n activeGroups++;\n var innerSub = groupSubject.subscribe(groupSubscriber);\n return function () {\n innerSub.unsubscribe();\n --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\nexports.groupBy = groupBy;\n//# sourceMappingURL=groupBy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEmpty = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction isEmpty() {\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n subscriber.next(false);\n subscriber.complete();\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\nexports.isEmpty = isEmpty;\n//# sourceMappingURL=isEmpty.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.takeLast = void 0;\nvar empty_1 = require(\"../observable/empty\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction takeLast(count) {\n return count <= 0\n ? function () { return empty_1.EMPTY; }\n : lift_1.operate(function (source, subscriber) {\n var buffer = [];\n source.subscribe(OperatorSubscriber_1.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}\nexports.takeLast = takeLast;\n//# sourceMappingURL=takeLast.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.last = void 0;\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar filter_1 = require(\"./filter\");\nvar takeLast_1 = require(\"./takeLast\");\nvar throwIfEmpty_1 = require(\"./throwIfEmpty\");\nvar defaultIfEmpty_1 = require(\"./defaultIfEmpty\");\nvar identity_1 = require(\"../util/identity\");\nfunction last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter_1.filter(function (v, i) { return predicate(v, i, source); }) : identity_1.identity, takeLast_1.takeLast(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function () { return new EmptyError_1.EmptyError(); }));\n };\n}\nexports.last = last;\n//# sourceMappingURL=last.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.materialize = void 0;\nvar Notification_1 = require(\"../Notification\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction materialize() {\n return lift_1.operate(function (source, subscriber) {\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(Notification_1.Notification.createNext(value));\n }, function () {\n subscriber.next(Notification_1.Notification.createComplete());\n subscriber.complete();\n }, function (err) {\n subscriber.next(Notification_1.Notification.createError(err));\n subscriber.complete();\n }));\n });\n}\nexports.materialize = materialize;\n//# sourceMappingURL=materialize.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.max = void 0;\nvar reduce_1 = require(\"./reduce\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction max(comparer) {\n return reduce_1.reduce(isFunction_1.isFunction(comparer) ? function (x, y) { return (comparer(x, y) > 0 ? x : y); } : function (x, y) { return (x > y ? x : y); });\n}\nexports.max = max;\n//# sourceMappingURL=max.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flatMap = void 0;\nvar mergeMap_1 = require(\"./mergeMap\");\nexports.flatMap = mergeMap_1.mergeMap;\n//# sourceMappingURL=flatMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeMapTo = void 0;\nvar mergeMap_1 = require(\"./mergeMap\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction mergeMapTo(innerObservable, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction_1.isFunction(resultSelector)) {\n return mergeMap_1.mergeMap(function () { return innerObservable; }, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap_1.mergeMap(function () { return innerObservable; }, concurrent);\n}\nexports.mergeMapTo = mergeMapTo;\n//# sourceMappingURL=mergeMapTo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeScan = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar mergeInternals_1 = require(\"./mergeInternals\");\nfunction mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return lift_1.operate(function (source, subscriber) {\n var state = seed;\n return mergeInternals_1.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}\nexports.mergeScan = mergeScan;\n//# sourceMappingURL=mergeScan.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar mergeAll_1 = require(\"./mergeAll\");\nvar args_1 = require(\"../util/args\");\nvar from_1 = require(\"../observable/from\");\nfunction merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(args);\n var concurrent = args_1.popNumber(args, Infinity);\n return lift_1.operate(function (source, subscriber) {\n mergeAll_1.mergeAll(concurrent)(from_1.from(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\nexports.merge = merge;\n//# sourceMappingURL=merge.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeWith = void 0;\nvar merge_1 = require(\"./merge\");\nfunction mergeWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return merge_1.merge.apply(void 0, __spreadArray([], __read(otherSources)));\n}\nexports.mergeWith = mergeWith;\n//# sourceMappingURL=mergeWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.min = void 0;\nvar reduce_1 = require(\"./reduce\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction min(comparer) {\n return reduce_1.reduce(isFunction_1.isFunction(comparer) ? function (x, y) { return (comparer(x, y) < 0 ? x : y); } : function (x, y) { return (x < y ? x : y); });\n}\nexports.min = min;\n//# sourceMappingURL=min.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.multicast = void 0;\nvar ConnectableObservable_1 = require(\"../observable/ConnectableObservable\");\nvar isFunction_1 = require(\"../util/isFunction\");\nvar connect_1 = require(\"./connect\");\nfunction multicast(subjectOrSubjectFactory, selector) {\n var subjectFactory = isFunction_1.isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () { return subjectOrSubjectFactory; };\n if (isFunction_1.isFunction(selector)) {\n return connect_1.connect(selector, {\n connector: subjectFactory,\n });\n }\n return function (source) { return new ConnectableObservable_1.ConnectableObservable(source, subjectFactory); };\n}\nexports.multicast = multicast;\n//# sourceMappingURL=multicast.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onErrorResumeNext = exports.onErrorResumeNextWith = void 0;\nvar argsOrArgArray_1 = require(\"../util/argsOrArgArray\");\nvar onErrorResumeNext_1 = require(\"../observable/onErrorResumeNext\");\nfunction onErrorResumeNextWith() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var nextSources = argsOrArgArray_1.argsOrArgArray(sources);\n return function (source) { return onErrorResumeNext_1.onErrorResumeNext.apply(void 0, __spreadArray([source], __read(nextSources))); };\n}\nexports.onErrorResumeNextWith = onErrorResumeNextWith;\nexports.onErrorResumeNext = onErrorResumeNextWith;\n//# sourceMappingURL=onErrorResumeNextWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pairwise = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction pairwise() {\n return lift_1.operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\nexports.pairwise = pairwise;\n//# sourceMappingURL=pairwise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pluck = void 0;\nvar map_1 = require(\"./map\");\nfunction pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = arguments[_i];\n }\n var length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return map_1.map(function (x) {\n var currentProp = x;\n for (var i = 0; i < length; i++) {\n var p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n });\n}\nexports.pluck = pluck;\n//# sourceMappingURL=pluck.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.publish = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar multicast_1 = require(\"./multicast\");\nvar connect_1 = require(\"./connect\");\nfunction publish(selector) {\n return selector ? function (source) { return connect_1.connect(selector)(source); } : function (source) { return multicast_1.multicast(new Subject_1.Subject())(source); };\n}\nexports.publish = publish;\n//# sourceMappingURL=publish.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.publishBehavior = void 0;\nvar BehaviorSubject_1 = require(\"../BehaviorSubject\");\nvar ConnectableObservable_1 = require(\"../observable/ConnectableObservable\");\nfunction publishBehavior(initialValue) {\n return function (source) {\n var subject = new BehaviorSubject_1.BehaviorSubject(initialValue);\n return new ConnectableObservable_1.ConnectableObservable(source, function () { return subject; });\n };\n}\nexports.publishBehavior = publishBehavior;\n//# sourceMappingURL=publishBehavior.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.publishLast = void 0;\nvar AsyncSubject_1 = require(\"../AsyncSubject\");\nvar ConnectableObservable_1 = require(\"../observable/ConnectableObservable\");\nfunction publishLast() {\n return function (source) {\n var subject = new AsyncSubject_1.AsyncSubject();\n return new ConnectableObservable_1.ConnectableObservable(source, function () { return subject; });\n };\n}\nexports.publishLast = publishLast;\n//# sourceMappingURL=publishLast.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.publishReplay = void 0;\nvar ReplaySubject_1 = require(\"../ReplaySubject\");\nvar multicast_1 = require(\"./multicast\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {\n if (selectorOrScheduler && !isFunction_1.isFunction(selectorOrScheduler)) {\n timestampProvider = selectorOrScheduler;\n }\n var selector = isFunction_1.isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;\n return function (source) { return multicast_1.multicast(new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source); };\n}\nexports.publishReplay = publishReplay;\n//# sourceMappingURL=publishReplay.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.raceWith = void 0;\nvar race_1 = require(\"../observable/race\");\nvar lift_1 = require(\"../util/lift\");\nvar identity_1 = require(\"../util/identity\");\nfunction raceWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return !otherSources.length\n ? identity_1.identity\n : lift_1.operate(function (source, subscriber) {\n race_1.raceInit(__spreadArray([source], __read(otherSources)))(subscriber);\n });\n}\nexports.raceWith = raceWith;\n//# sourceMappingURL=raceWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.repeat = void 0;\nvar empty_1 = require(\"../observable/empty\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar timer_1 = require(\"../observable/timer\");\nfunction repeat(countOrConfig) {\n var _a;\n var count = Infinity;\n var delay;\n if (countOrConfig != null) {\n if (typeof countOrConfig === 'object') {\n (_a = countOrConfig.count, count = _a === void 0 ? Infinity : _a, delay = countOrConfig.delay);\n }\n else {\n count = countOrConfig;\n }\n }\n return count <= 0\n ? function () { return empty_1.EMPTY; }\n : lift_1.operate(function (source, subscriber) {\n var soFar = 0;\n var sourceSub;\n var resubscribe = function () {\n sourceSub === null || sourceSub === void 0 ? void 0 : sourceSub.unsubscribe();\n sourceSub = null;\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer_1.timer(delay) : innerFrom_1.innerFrom(delay(soFar));\n var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n subscribeToSource();\n });\n notifier.subscribe(notifierSubscriber_1);\n }\n else {\n subscribeToSource();\n }\n };\n var subscribeToSource = function () {\n var syncUnsub = false;\n sourceSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, function () {\n if (++soFar < count) {\n if (sourceSub) {\n resubscribe();\n }\n else {\n syncUnsub = true;\n }\n }\n else {\n subscriber.complete();\n }\n }));\n if (syncUnsub) {\n resubscribe();\n }\n };\n subscribeToSource();\n });\n}\nexports.repeat = repeat;\n//# sourceMappingURL=repeat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.repeatWhen = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction repeatWhen(notifier) {\n return lift_1.operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var completions$;\n var isNotifierComplete = false;\n var isMainComplete = false;\n var checkComplete = function () { return isMainComplete && isNotifierComplete && (subscriber.complete(), true); };\n var getCompletionSubject = function () {\n if (!completions$) {\n completions$ = new Subject_1.Subject();\n innerFrom_1.innerFrom(notifier(completions$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n if (innerSub) {\n subscribeForRepeatWhen();\n }\n else {\n syncResub = true;\n }\n }, function () {\n isNotifierComplete = true;\n checkComplete();\n }));\n }\n return completions$;\n };\n var subscribeForRepeatWhen = function () {\n isMainComplete = false;\n innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, function () {\n isMainComplete = true;\n !checkComplete() && getCompletionSubject().next();\n }));\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRepeatWhen();\n }\n };\n subscribeForRepeatWhen();\n });\n}\nexports.repeatWhen = repeatWhen;\n//# sourceMappingURL=repeatWhen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retry = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar identity_1 = require(\"../util/identity\");\nvar timer_1 = require(\"../observable/timer\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction retry(configOrCount) {\n if (configOrCount === void 0) { configOrCount = Infinity; }\n var config;\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n }\n else {\n config = {\n count: configOrCount,\n };\n }\n var _a = config.count, count = _a === void 0 ? Infinity : _a, delay = config.delay, _b = config.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b;\n return count <= 0\n ? identity_1.identity\n : lift_1.operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n var subscribeForRetry = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n if (resetOnSuccess) {\n soFar = 0;\n }\n subscriber.next(value);\n }, undefined, function (err) {\n if (soFar++ < count) {\n var resub_1 = function () {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n else {\n syncUnsub = true;\n }\n };\n if (delay != null) {\n var notifier = typeof delay === 'number' ? timer_1.timer(delay) : innerFrom_1.innerFrom(delay(err, soFar));\n var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n notifierSubscriber_1.unsubscribe();\n resub_1();\n }, function () {\n subscriber.complete();\n });\n notifier.subscribe(notifierSubscriber_1);\n }\n else {\n resub_1();\n }\n }\n else {\n subscriber.error(err);\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n subscribeForRetry();\n });\n}\nexports.retry = retry;\n//# sourceMappingURL=retry.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retryWhen = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction retryWhen(notifier) {\n return lift_1.operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var errors$;\n var subscribeForRetryWhen = function () {\n innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, undefined, function (err) {\n if (!errors$) {\n errors$ = new Subject_1.Subject();\n innerFrom_1.innerFrom(notifier(errors$)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n return innerSub ? subscribeForRetryWhen() : (syncResub = true);\n }));\n }\n if (errors$) {\n errors$.next(err);\n }\n }));\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRetryWhen();\n }\n };\n subscribeForRetryWhen();\n });\n}\nexports.retryWhen = retryWhen;\n//# sourceMappingURL=retryWhen.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sample = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar noop_1 = require(\"../util/noop\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction sample(notifier) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n }));\n innerFrom_1.innerFrom(notifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n }, noop_1.noop));\n });\n}\nexports.sample = sample;\n//# sourceMappingURL=sample.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sampleTime = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar sample_1 = require(\"./sample\");\nvar interval_1 = require(\"../observable/interval\");\nfunction sampleTime(period, scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n return sample_1.sample(interval_1.interval(period, scheduler));\n}\nexports.sampleTime = sampleTime;\n//# sourceMappingURL=sampleTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scan = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar scanInternals_1 = require(\"./scanInternals\");\nfunction scan(accumulator, seed) {\n return lift_1.operate(scanInternals_1.scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\nexports.scan = scan;\n//# sourceMappingURL=scan.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sequenceEqual = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction sequenceEqual(compareTo, comparator) {\n if (comparator === void 0) { comparator = function (a, b) { return a === b; }; }\n return lift_1.operate(function (source, subscriber) {\n var aState = createState();\n var bState = createState();\n var emit = function (isEqual) {\n subscriber.next(isEqual);\n subscriber.complete();\n };\n var createSubscriber = function (selfState, otherState) {\n var sequenceEqualSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (a) {\n var buffer = otherState.buffer, complete = otherState.complete;\n if (buffer.length === 0) {\n complete ? emit(false) : selfState.buffer.push(a);\n }\n else {\n !comparator(a, buffer.shift()) && emit(false);\n }\n }, function () {\n selfState.complete = true;\n var complete = otherState.complete, buffer = otherState.buffer;\n complete && emit(buffer.length === 0);\n sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe();\n });\n return sequenceEqualSubscriber;\n };\n source.subscribe(createSubscriber(aState, bState));\n innerFrom_1.innerFrom(compareTo).subscribe(createSubscriber(bState, aState));\n });\n}\nexports.sequenceEqual = sequenceEqual;\nfunction createState() {\n return {\n buffer: [],\n complete: false,\n };\n}\n//# sourceMappingURL=sequenceEqual.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.share = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar Subject_1 = require(\"../Subject\");\nvar Subscriber_1 = require(\"../Subscriber\");\nvar lift_1 = require(\"../util/lift\");\nfunction share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject_1.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 lift_1.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 Subscriber_1.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_1.innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nexports.share = share;\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 Subscriber_1.SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom_1.innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shareReplay = void 0;\nvar ReplaySubject_1 = require(\"../ReplaySubject\");\nvar share_1 = require(\"./share\");\nfunction 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_1.share({\n connector: function () { return new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, scheduler); },\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\nexports.shareReplay = shareReplay;\n//# sourceMappingURL=shareReplay.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.single = void 0;\nvar EmptyError_1 = require(\"../util/EmptyError\");\nvar SequenceError_1 = require(\"../util/SequenceError\");\nvar NotFoundError_1 = require(\"../util/NotFoundError\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction single(predicate) {\n return lift_1.operate(function (source, subscriber) {\n var hasValue = false;\n var singleValue;\n var seenValue = false;\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n seenValue = true;\n if (!predicate || predicate(value, index++, source)) {\n hasValue && subscriber.error(new SequenceError_1.SequenceError('Too many matching values'));\n hasValue = true;\n singleValue = value;\n }\n }, function () {\n if (hasValue) {\n subscriber.next(singleValue);\n subscriber.complete();\n }\n else {\n subscriber.error(seenValue ? new NotFoundError_1.NotFoundError('No matching values') : new EmptyError_1.EmptyError());\n }\n }));\n });\n}\nexports.single = single;\n//# sourceMappingURL=single.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.skip = void 0;\nvar filter_1 = require(\"./filter\");\nfunction skip(count) {\n return filter_1.filter(function (_, index) { return count <= index; });\n}\nexports.skip = skip;\n//# sourceMappingURL=skip.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.skipLast = void 0;\nvar identity_1 = require(\"../util/identity\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction skipLast(skipCount) {\n return skipCount <= 0\n ?\n identity_1.identity\n : lift_1.operate(function (source, subscriber) {\n var ring = new Array(skipCount);\n var seen = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var valueIndex = seen++;\n if (valueIndex < skipCount) {\n ring[valueIndex] = value;\n }\n else {\n var index = valueIndex % skipCount;\n var oldValue = ring[index];\n ring[index] = value;\n subscriber.next(oldValue);\n }\n }));\n return function () {\n ring = null;\n };\n });\n}\nexports.skipLast = skipLast;\n//# sourceMappingURL=skipLast.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.skipUntil = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar noop_1 = require(\"../util/noop\");\nfunction skipUntil(notifier) {\n return lift_1.operate(function (source, subscriber) {\n var taking = false;\n var skipSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe();\n taking = true;\n }, noop_1.noop);\n innerFrom_1.innerFrom(notifier).subscribe(skipSubscriber);\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return taking && subscriber.next(value); }));\n });\n}\nexports.skipUntil = skipUntil;\n//# sourceMappingURL=skipUntil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.skipWhile = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction skipWhile(predicate) {\n return lift_1.operate(function (source, subscriber) {\n var taking = false;\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); }));\n });\n}\nexports.skipWhile = skipWhile;\n//# sourceMappingURL=skipWhile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.startWith = void 0;\nvar concat_1 = require(\"../observable/concat\");\nvar args_1 = require(\"../util/args\");\nvar lift_1 = require(\"../util/lift\");\nfunction startWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var scheduler = args_1.popScheduler(values);\n return lift_1.operate(function (source, subscriber) {\n (scheduler ? concat_1.concat(values, source, scheduler) : concat_1.concat(values, source)).subscribe(subscriber);\n });\n}\nexports.startWith = startWith;\n//# sourceMappingURL=startWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.switchMap = void 0;\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction switchMap(project, resultSelector) {\n return lift_1.operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom_1.innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\nexports.switchMap = switchMap;\n//# sourceMappingURL=switchMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.switchAll = void 0;\nvar switchMap_1 = require(\"./switchMap\");\nvar identity_1 = require(\"../util/identity\");\nfunction switchAll() {\n return switchMap_1.switchMap(identity_1.identity);\n}\nexports.switchAll = switchAll;\n//# sourceMappingURL=switchAll.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.switchMapTo = void 0;\nvar switchMap_1 = require(\"./switchMap\");\nvar isFunction_1 = require(\"../util/isFunction\");\nfunction switchMapTo(innerObservable, resultSelector) {\n return isFunction_1.isFunction(resultSelector) ? switchMap_1.switchMap(function () { return innerObservable; }, resultSelector) : switchMap_1.switchMap(function () { return innerObservable; });\n}\nexports.switchMapTo = switchMapTo;\n//# sourceMappingURL=switchMapTo.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.switchScan = void 0;\nvar switchMap_1 = require(\"./switchMap\");\nvar lift_1 = require(\"../util/lift\");\nfunction switchScan(accumulator, seed) {\n return lift_1.operate(function (source, subscriber) {\n var state = seed;\n switchMap_1.switchMap(function (value, index) { return accumulator(state, value, index); }, function (_, innerValue) { return ((state = innerValue), innerValue); })(source).subscribe(subscriber);\n return function () {\n state = null;\n };\n });\n}\nexports.switchScan = switchScan;\n//# sourceMappingURL=switchScan.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.takeUntil = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar noop_1 = require(\"../util/noop\");\nfunction takeUntil(notifier) {\n return lift_1.operate(function (source, subscriber) {\n innerFrom_1.innerFrom(notifier).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop_1.noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\nexports.takeUntil = takeUntil;\n//# sourceMappingURL=takeUntil.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.takeWhile = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction takeWhile(predicate, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return lift_1.operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\nexports.takeWhile = takeWhile;\n//# sourceMappingURL=takeWhile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tap = void 0;\nvar isFunction_1 = require(\"../util/isFunction\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar identity_1 = require(\"../util/identity\");\nfunction tap(observerOrNext, error, complete) {\n var tapObserver = isFunction_1.isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error: error, complete: complete }\n : observerOrNext;\n return tapObserver\n ? lift_1.operate(function (source, subscriber) {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity_1.identity;\n}\nexports.tap = tap;\n//# sourceMappingURL=tap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throttle = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction throttle(durationSelector, config) {\n return lift_1.operate(function (source, subscriber) {\n var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n var startThrottle = function (value) {\n return (throttled = innerFrom_1.innerFrom(durationSelector(value)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n };\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\nexports.throttle = throttle;\n//# sourceMappingURL=throttle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throttleTime = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar throttle_1 = require(\"./throttle\");\nvar timer_1 = require(\"../observable/timer\");\nfunction throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n var duration$ = timer_1.timer(duration, scheduler);\n return throttle_1.throttle(function () { return duration$; }, config);\n}\nexports.throttleTime = throttleTime;\n//# sourceMappingURL=throttleTime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TimeInterval = exports.timeInterval = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction timeInterval(scheduler) {\n if (scheduler === void 0) { scheduler = async_1.asyncScheduler; }\n return lift_1.operate(function (source, subscriber) {\n var last = scheduler.now();\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var now = scheduler.now();\n var interval = now - last;\n last = now;\n subscriber.next(new TimeInterval(value, interval));\n }));\n });\n}\nexports.timeInterval = timeInterval;\nvar TimeInterval = (function () {\n function TimeInterval(value, interval) {\n this.value = value;\n this.interval = interval;\n }\n return TimeInterval;\n}());\nexports.TimeInterval = TimeInterval;\n//# sourceMappingURL=timeInterval.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timeoutWith = void 0;\nvar async_1 = require(\"../scheduler/async\");\nvar isDate_1 = require(\"../util/isDate\");\nvar timeout_1 = require(\"./timeout\");\nfunction timeoutWith(due, withObservable, scheduler) {\n var first;\n var each;\n var _with;\n scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : async_1.async;\n if (isDate_1.isValidDate(due)) {\n first = due;\n }\n else if (typeof due === 'number') {\n each = due;\n }\n if (withObservable) {\n _with = function () { return withObservable; };\n }\n else {\n throw new TypeError('No observable provided to switch to');\n }\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return timeout_1.timeout({\n first: first,\n each: each,\n scheduler: scheduler,\n with: _with,\n });\n}\nexports.timeoutWith = timeoutWith;\n//# sourceMappingURL=timeoutWith.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timestamp = void 0;\nvar dateTimestampProvider_1 = require(\"../scheduler/dateTimestampProvider\");\nvar map_1 = require(\"./map\");\nfunction timestamp(timestampProvider) {\n if (timestampProvider === void 0) { timestampProvider = dateTimestampProvider_1.dateTimestampProvider; }\n return map_1.map(function (value) { return ({ value: value, timestamp: timestampProvider.now() }); });\n}\nexports.timestamp = timestamp;\n//# sourceMappingURL=timestamp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.window = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction window(windowBoundaries) {\n return lift_1.operate(function (source, subscriber) {\n var windowSubject = new Subject_1.Subject();\n subscriber.next(windowSubject.asObservable());\n var errorHandler = function (err) {\n windowSubject.error(err);\n subscriber.error(err);\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value); }, function () {\n windowSubject.complete();\n subscriber.complete();\n }, errorHandler));\n innerFrom_1.innerFrom(windowBoundaries).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {\n windowSubject.complete();\n subscriber.next((windowSubject = new Subject_1.Subject()));\n }, noop_1.noop, errorHandler));\n return function () {\n windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe();\n windowSubject = null;\n };\n });\n}\nexports.window = window;\n//# sourceMappingURL=window.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.windowCount = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nfunction windowCount(windowSize, startWindowEvery) {\n if (startWindowEvery === void 0) { startWindowEvery = 0; }\n var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;\n return lift_1.operate(function (source, subscriber) {\n var windows = [new Subject_1.Subject()];\n var starts = [];\n var count = 0;\n subscriber.next(windows[0].asObservable());\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n try {\n for (var windows_1 = __values(windows), windows_1_1 = windows_1.next(); !windows_1_1.done; windows_1_1 = windows_1.next()) {\n var window_1 = windows_1_1.value;\n window_1.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (windows_1_1 && !windows_1_1.done && (_a = windows_1.return)) _a.call(windows_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var c = count - windowSize + 1;\n if (c >= 0 && c % startEvery === 0) {\n windows.shift().complete();\n }\n if (++count % startEvery === 0) {\n var window_2 = new Subject_1.Subject();\n windows.push(window_2);\n subscriber.next(window_2.asObservable());\n }\n }, function () {\n while (windows.length > 0) {\n windows.shift().complete();\n }\n subscriber.complete();\n }, function (err) {\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n subscriber.error(err);\n }, function () {\n starts = null;\n windows = null;\n }));\n });\n}\nexports.windowCount = windowCount;\n//# sourceMappingURL=windowCount.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.windowTime = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar async_1 = require(\"../scheduler/async\");\nvar Subscription_1 = require(\"../Subscription\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nvar args_1 = require(\"../util/args\");\nvar executeSchedule_1 = require(\"../util/executeSchedule\");\nfunction windowTime(windowTimeSpan) {\n var _a, _b;\n var otherArgs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n var scheduler = (_a = args_1.popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : async_1.asyncScheduler;\n var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxWindowSize = otherArgs[1] || Infinity;\n return lift_1.operate(function (source, subscriber) {\n var windowRecords = [];\n var restartOnClose = false;\n var closeWindow = function (record) {\n var window = record.window, subs = record.subs;\n window.complete();\n subs.unsubscribe();\n arrRemove_1.arrRemove(windowRecords, record);\n restartOnClose && startWindow();\n };\n var startWindow = function () {\n if (windowRecords) {\n var subs = new Subscription_1.Subscription();\n subscriber.add(subs);\n var window_1 = new Subject_1.Subject();\n var record_1 = {\n window: window_1,\n subs: subs,\n seen: 0,\n };\n windowRecords.push(record_1);\n subscriber.next(window_1.asObservable());\n executeSchedule_1.executeSchedule(subs, scheduler, function () { return closeWindow(record_1); }, windowTimeSpan);\n }\n };\n if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n executeSchedule_1.executeSchedule(subscriber, scheduler, startWindow, windowCreationInterval, true);\n }\n else {\n restartOnClose = true;\n }\n startWindow();\n var loop = function (cb) { return windowRecords.slice().forEach(cb); };\n var terminate = function (cb) {\n loop(function (_a) {\n var window = _a.window;\n return cb(window);\n });\n cb(subscriber);\n subscriber.unsubscribe();\n };\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n loop(function (record) {\n record.window.next(value);\n maxWindowSize <= ++record.seen && closeWindow(record);\n });\n }, function () { return terminate(function (consumer) { return consumer.complete(); }); }, function (err) { return terminate(function (consumer) { return consumer.error(err); }); }));\n return function () {\n windowRecords = null;\n };\n });\n}\nexports.windowTime = windowTime;\n//# sourceMappingURL=windowTime.js.map","\"use strict\";\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.windowToggle = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar Subscription_1 = require(\"../Subscription\");\nvar lift_1 = require(\"../util/lift\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar noop_1 = require(\"../util/noop\");\nvar arrRemove_1 = require(\"../util/arrRemove\");\nfunction windowToggle(openings, closingSelector) {\n return lift_1.operate(function (source, subscriber) {\n var windows = [];\n var handleError = function (err) {\n while (0 < windows.length) {\n windows.shift().error(err);\n }\n subscriber.error(err);\n };\n innerFrom_1.innerFrom(openings).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (openValue) {\n var window = new Subject_1.Subject();\n windows.push(window);\n var closingSubscription = new Subscription_1.Subscription();\n var closeWindow = function () {\n arrRemove_1.arrRemove(windows, window);\n window.complete();\n closingSubscription.unsubscribe();\n };\n var closingNotifier;\n try {\n closingNotifier = innerFrom_1.innerFrom(closingSelector(openValue));\n }\n catch (err) {\n handleError(err);\n return;\n }\n subscriber.next(window.asObservable());\n closingSubscription.add(closingNotifier.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, closeWindow, noop_1.noop, handleError)));\n }, noop_1.noop));\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n var e_1, _a;\n var windowsCopy = windows.slice();\n try {\n for (var windowsCopy_1 = __values(windowsCopy), windowsCopy_1_1 = windowsCopy_1.next(); !windowsCopy_1_1.done; windowsCopy_1_1 = windowsCopy_1.next()) {\n var window_1 = windowsCopy_1_1.value;\n window_1.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (windowsCopy_1_1 && !windowsCopy_1_1.done && (_a = windowsCopy_1.return)) _a.call(windowsCopy_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, function () {\n while (0 < windows.length) {\n windows.shift().complete();\n }\n subscriber.complete();\n }, handleError, function () {\n while (0 < windows.length) {\n windows.shift().unsubscribe();\n }\n }));\n });\n}\nexports.windowToggle = windowToggle;\n//# sourceMappingURL=windowToggle.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.windowWhen = void 0;\nvar Subject_1 = require(\"../Subject\");\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nfunction windowWhen(closingSelector) {\n return lift_1.operate(function (source, subscriber) {\n var window;\n var closingSubscriber;\n var handleError = function (err) {\n window.error(err);\n subscriber.error(err);\n };\n var openWindow = function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n window === null || window === void 0 ? void 0 : window.complete();\n window = new Subject_1.Subject();\n subscriber.next(window.asObservable());\n var closingNotifier;\n try {\n closingNotifier = innerFrom_1.innerFrom(closingSelector());\n }\n catch (err) {\n handleError(err);\n return;\n }\n closingNotifier.subscribe((closingSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, openWindow, openWindow, handleError)));\n };\n openWindow();\n source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { return window.next(value); }, function () {\n window.complete();\n subscriber.complete();\n }, handleError, function () {\n closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe();\n window = null;\n }));\n });\n}\nexports.windowWhen = windowWhen;\n//# sourceMappingURL=windowWhen.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withLatestFrom = void 0;\nvar lift_1 = require(\"../util/lift\");\nvar OperatorSubscriber_1 = require(\"./OperatorSubscriber\");\nvar innerFrom_1 = require(\"../observable/innerFrom\");\nvar identity_1 = require(\"../util/identity\");\nvar noop_1 = require(\"../util/noop\");\nvar args_1 = require(\"../util/args\");\nfunction withLatestFrom() {\n var inputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputs[_i] = arguments[_i];\n }\n var project = args_1.popResultSelector(inputs);\n return lift_1.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_1.innerFrom(inputs[i]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity_1.identity)) && (hasValue = null);\n }\n }, noop_1.noop));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n source.subscribe(OperatorSubscriber_1.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}\nexports.withLatestFrom = withLatestFrom;\n//# sourceMappingURL=withLatestFrom.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zipAll = void 0;\nvar zip_1 = require(\"../observable/zip\");\nvar joinAllInternals_1 = require(\"./joinAllInternals\");\nfunction zipAll(project) {\n return joinAllInternals_1.joinAllInternals(zip_1.zip, project);\n}\nexports.zipAll = zipAll;\n//# sourceMappingURL=zipAll.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zip = void 0;\nvar zip_1 = require(\"../observable/zip\");\nvar lift_1 = require(\"../util/lift\");\nfunction zip() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return lift_1.operate(function (source, subscriber) {\n zip_1.zip.apply(void 0, __spreadArray([source], __read(sources))).subscribe(subscriber);\n });\n}\nexports.zip = zip;\n//# sourceMappingURL=zip.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zipWith = void 0;\nvar zip_1 = require(\"./zip\");\nfunction zipWith() {\n var otherInputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherInputs[_i] = arguments[_i];\n }\n return zip_1.zip.apply(void 0, __spreadArray([], __read(otherInputs)));\n}\nexports.zipWith = zipWith;\n//# sourceMappingURL=zipWith.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.interval = exports.iif = exports.generate = exports.fromEventPattern = exports.fromEvent = exports.from = exports.forkJoin = exports.empty = exports.defer = exports.connectable = exports.concat = exports.combineLatest = exports.bindNodeCallback = exports.bindCallback = exports.UnsubscriptionError = exports.TimeoutError = exports.SequenceError = exports.ObjectUnsubscribedError = exports.NotFoundError = exports.EmptyError = exports.ArgumentOutOfRangeError = exports.firstValueFrom = exports.lastValueFrom = exports.isObservable = exports.identity = exports.noop = exports.pipe = exports.NotificationKind = exports.Notification = exports.Subscriber = exports.Subscription = exports.Scheduler = exports.VirtualAction = exports.VirtualTimeScheduler = exports.animationFrameScheduler = exports.animationFrame = exports.queueScheduler = exports.queue = exports.asyncScheduler = exports.async = exports.asapScheduler = exports.asap = exports.AsyncSubject = exports.ReplaySubject = exports.BehaviorSubject = exports.Subject = exports.animationFrames = exports.observable = exports.ConnectableObservable = exports.Observable = void 0;\nexports.filter = exports.expand = exports.exhaustMap = exports.exhaustAll = exports.exhaust = exports.every = exports.endWith = exports.elementAt = exports.distinctUntilKeyChanged = exports.distinctUntilChanged = exports.distinct = exports.dematerialize = exports.delayWhen = exports.delay = exports.defaultIfEmpty = exports.debounceTime = exports.debounce = exports.count = exports.connect = exports.concatWith = exports.concatMapTo = exports.concatMap = exports.concatAll = exports.combineLatestWith = exports.combineLatestAll = exports.combineAll = exports.catchError = exports.bufferWhen = exports.bufferToggle = exports.bufferTime = exports.bufferCount = exports.buffer = exports.auditTime = exports.audit = exports.config = exports.NEVER = exports.EMPTY = exports.scheduled = exports.zip = exports.using = exports.timer = exports.throwError = exports.range = exports.race = exports.partition = exports.pairs = exports.onErrorResumeNext = exports.of = exports.never = exports.merge = void 0;\nexports.switchMap = exports.switchAll = exports.subscribeOn = exports.startWith = exports.skipWhile = exports.skipUntil = exports.skipLast = exports.skip = exports.single = exports.shareReplay = exports.share = exports.sequenceEqual = exports.scan = exports.sampleTime = exports.sample = exports.refCount = exports.retryWhen = exports.retry = exports.repeatWhen = exports.repeat = exports.reduce = exports.raceWith = exports.publishReplay = exports.publishLast = exports.publishBehavior = exports.publish = exports.pluck = exports.pairwise = exports.onErrorResumeNextWith = exports.observeOn = exports.multicast = exports.min = exports.mergeWith = exports.mergeScan = exports.mergeMapTo = exports.mergeMap = exports.flatMap = exports.mergeAll = exports.max = exports.materialize = exports.mapTo = exports.map = exports.last = exports.isEmpty = exports.ignoreElements = exports.groupBy = exports.first = exports.findIndex = exports.find = exports.finalize = void 0;\nexports.zipWith = exports.zipAll = exports.withLatestFrom = exports.windowWhen = exports.windowToggle = exports.windowTime = exports.windowCount = exports.window = exports.toArray = exports.timestamp = exports.timeoutWith = exports.timeout = exports.timeInterval = exports.throwIfEmpty = exports.throttleTime = exports.throttle = exports.tap = exports.takeWhile = exports.takeUntil = exports.takeLast = exports.take = exports.switchScan = exports.switchMapTo = void 0;\nvar Observable_1 = require(\"./internal/Observable\");\nObject.defineProperty(exports, \"Observable\", { enumerable: true, get: function () { return Observable_1.Observable; } });\nvar ConnectableObservable_1 = require(\"./internal/observable/ConnectableObservable\");\nObject.defineProperty(exports, \"ConnectableObservable\", { enumerable: true, get: function () { return ConnectableObservable_1.ConnectableObservable; } });\nvar observable_1 = require(\"./internal/symbol/observable\");\nObject.defineProperty(exports, \"observable\", { enumerable: true, get: function () { return observable_1.observable; } });\nvar animationFrames_1 = require(\"./internal/observable/dom/animationFrames\");\nObject.defineProperty(exports, \"animationFrames\", { enumerable: true, get: function () { return animationFrames_1.animationFrames; } });\nvar Subject_1 = require(\"./internal/Subject\");\nObject.defineProperty(exports, \"Subject\", { enumerable: true, get: function () { return Subject_1.Subject; } });\nvar BehaviorSubject_1 = require(\"./internal/BehaviorSubject\");\nObject.defineProperty(exports, \"BehaviorSubject\", { enumerable: true, get: function () { return BehaviorSubject_1.BehaviorSubject; } });\nvar ReplaySubject_1 = require(\"./internal/ReplaySubject\");\nObject.defineProperty(exports, \"ReplaySubject\", { enumerable: true, get: function () { return ReplaySubject_1.ReplaySubject; } });\nvar AsyncSubject_1 = require(\"./internal/AsyncSubject\");\nObject.defineProperty(exports, \"AsyncSubject\", { enumerable: true, get: function () { return AsyncSubject_1.AsyncSubject; } });\nvar asap_1 = require(\"./internal/scheduler/asap\");\nObject.defineProperty(exports, \"asap\", { enumerable: true, get: function () { return asap_1.asap; } });\nObject.defineProperty(exports, \"asapScheduler\", { enumerable: true, get: function () { return asap_1.asapScheduler; } });\nvar async_1 = require(\"./internal/scheduler/async\");\nObject.defineProperty(exports, \"async\", { enumerable: true, get: function () { return async_1.async; } });\nObject.defineProperty(exports, \"asyncScheduler\", { enumerable: true, get: function () { return async_1.asyncScheduler; } });\nvar queue_1 = require(\"./internal/scheduler/queue\");\nObject.defineProperty(exports, \"queue\", { enumerable: true, get: function () { return queue_1.queue; } });\nObject.defineProperty(exports, \"queueScheduler\", { enumerable: true, get: function () { return queue_1.queueScheduler; } });\nvar animationFrame_1 = require(\"./internal/scheduler/animationFrame\");\nObject.defineProperty(exports, \"animationFrame\", { enumerable: true, get: function () { return animationFrame_1.animationFrame; } });\nObject.defineProperty(exports, \"animationFrameScheduler\", { enumerable: true, get: function () { return animationFrame_1.animationFrameScheduler; } });\nvar VirtualTimeScheduler_1 = require(\"./internal/scheduler/VirtualTimeScheduler\");\nObject.defineProperty(exports, \"VirtualTimeScheduler\", { enumerable: true, get: function () { return VirtualTimeScheduler_1.VirtualTimeScheduler; } });\nObject.defineProperty(exports, \"VirtualAction\", { enumerable: true, get: function () { return VirtualTimeScheduler_1.VirtualAction; } });\nvar Scheduler_1 = require(\"./internal/Scheduler\");\nObject.defineProperty(exports, \"Scheduler\", { enumerable: true, get: function () { return Scheduler_1.Scheduler; } });\nvar Subscription_1 = require(\"./internal/Subscription\");\nObject.defineProperty(exports, \"Subscription\", { enumerable: true, get: function () { return Subscription_1.Subscription; } });\nvar Subscriber_1 = require(\"./internal/Subscriber\");\nObject.defineProperty(exports, \"Subscriber\", { enumerable: true, get: function () { return Subscriber_1.Subscriber; } });\nvar Notification_1 = require(\"./internal/Notification\");\nObject.defineProperty(exports, \"Notification\", { enumerable: true, get: function () { return Notification_1.Notification; } });\nObject.defineProperty(exports, \"NotificationKind\", { enumerable: true, get: function () { return Notification_1.NotificationKind; } });\nvar pipe_1 = require(\"./internal/util/pipe\");\nObject.defineProperty(exports, \"pipe\", { enumerable: true, get: function () { return pipe_1.pipe; } });\nvar noop_1 = require(\"./internal/util/noop\");\nObject.defineProperty(exports, \"noop\", { enumerable: true, get: function () { return noop_1.noop; } });\nvar identity_1 = require(\"./internal/util/identity\");\nObject.defineProperty(exports, \"identity\", { enumerable: true, get: function () { return identity_1.identity; } });\nvar isObservable_1 = require(\"./internal/util/isObservable\");\nObject.defineProperty(exports, \"isObservable\", { enumerable: true, get: function () { return isObservable_1.isObservable; } });\nvar lastValueFrom_1 = require(\"./internal/lastValueFrom\");\nObject.defineProperty(exports, \"lastValueFrom\", { enumerable: true, get: function () { return lastValueFrom_1.lastValueFrom; } });\nvar firstValueFrom_1 = require(\"./internal/firstValueFrom\");\nObject.defineProperty(exports, \"firstValueFrom\", { enumerable: true, get: function () { return firstValueFrom_1.firstValueFrom; } });\nvar ArgumentOutOfRangeError_1 = require(\"./internal/util/ArgumentOutOfRangeError\");\nObject.defineProperty(exports, \"ArgumentOutOfRangeError\", { enumerable: true, get: function () { return ArgumentOutOfRangeError_1.ArgumentOutOfRangeError; } });\nvar EmptyError_1 = require(\"./internal/util/EmptyError\");\nObject.defineProperty(exports, \"EmptyError\", { enumerable: true, get: function () { return EmptyError_1.EmptyError; } });\nvar NotFoundError_1 = require(\"./internal/util/NotFoundError\");\nObject.defineProperty(exports, \"NotFoundError\", { enumerable: true, get: function () { return NotFoundError_1.NotFoundError; } });\nvar ObjectUnsubscribedError_1 = require(\"./internal/util/ObjectUnsubscribedError\");\nObject.defineProperty(exports, \"ObjectUnsubscribedError\", { enumerable: true, get: function () { return ObjectUnsubscribedError_1.ObjectUnsubscribedError; } });\nvar SequenceError_1 = require(\"./internal/util/SequenceError\");\nObject.defineProperty(exports, \"SequenceError\", { enumerable: true, get: function () { return SequenceError_1.SequenceError; } });\nvar timeout_1 = require(\"./internal/operators/timeout\");\nObject.defineProperty(exports, \"TimeoutError\", { enumerable: true, get: function () { return timeout_1.TimeoutError; } });\nvar UnsubscriptionError_1 = require(\"./internal/util/UnsubscriptionError\");\nObject.defineProperty(exports, \"UnsubscriptionError\", { enumerable: true, get: function () { return UnsubscriptionError_1.UnsubscriptionError; } });\nvar bindCallback_1 = require(\"./internal/observable/bindCallback\");\nObject.defineProperty(exports, \"bindCallback\", { enumerable: true, get: function () { return bindCallback_1.bindCallback; } });\nvar bindNodeCallback_1 = require(\"./internal/observable/bindNodeCallback\");\nObject.defineProperty(exports, \"bindNodeCallback\", { enumerable: true, get: function () { return bindNodeCallback_1.bindNodeCallback; } });\nvar combineLatest_1 = require(\"./internal/observable/combineLatest\");\nObject.defineProperty(exports, \"combineLatest\", { enumerable: true, get: function () { return combineLatest_1.combineLatest; } });\nvar concat_1 = require(\"./internal/observable/concat\");\nObject.defineProperty(exports, \"concat\", { enumerable: true, get: function () { return concat_1.concat; } });\nvar connectable_1 = require(\"./internal/observable/connectable\");\nObject.defineProperty(exports, \"connectable\", { enumerable: true, get: function () { return connectable_1.connectable; } });\nvar defer_1 = require(\"./internal/observable/defer\");\nObject.defineProperty(exports, \"defer\", { enumerable: true, get: function () { return defer_1.defer; } });\nvar empty_1 = require(\"./internal/observable/empty\");\nObject.defineProperty(exports, \"empty\", { enumerable: true, get: function () { return empty_1.empty; } });\nvar forkJoin_1 = require(\"./internal/observable/forkJoin\");\nObject.defineProperty(exports, \"forkJoin\", { enumerable: true, get: function () { return forkJoin_1.forkJoin; } });\nvar from_1 = require(\"./internal/observable/from\");\nObject.defineProperty(exports, \"from\", { enumerable: true, get: function () { return from_1.from; } });\nvar fromEvent_1 = require(\"./internal/observable/fromEvent\");\nObject.defineProperty(exports, \"fromEvent\", { enumerable: true, get: function () { return fromEvent_1.fromEvent; } });\nvar fromEventPattern_1 = require(\"./internal/observable/fromEventPattern\");\nObject.defineProperty(exports, \"fromEventPattern\", { enumerable: true, get: function () { return fromEventPattern_1.fromEventPattern; } });\nvar generate_1 = require(\"./internal/observable/generate\");\nObject.defineProperty(exports, \"generate\", { enumerable: true, get: function () { return generate_1.generate; } });\nvar iif_1 = require(\"./internal/observable/iif\");\nObject.defineProperty(exports, \"iif\", { enumerable: true, get: function () { return iif_1.iif; } });\nvar interval_1 = require(\"./internal/observable/interval\");\nObject.defineProperty(exports, \"interval\", { enumerable: true, get: function () { return interval_1.interval; } });\nvar merge_1 = require(\"./internal/observable/merge\");\nObject.defineProperty(exports, \"merge\", { enumerable: true, get: function () { return merge_1.merge; } });\nvar never_1 = require(\"./internal/observable/never\");\nObject.defineProperty(exports, \"never\", { enumerable: true, get: function () { return never_1.never; } });\nvar of_1 = require(\"./internal/observable/of\");\nObject.defineProperty(exports, \"of\", { enumerable: true, get: function () { return of_1.of; } });\nvar onErrorResumeNext_1 = require(\"./internal/observable/onErrorResumeNext\");\nObject.defineProperty(exports, \"onErrorResumeNext\", { enumerable: true, get: function () { return onErrorResumeNext_1.onErrorResumeNext; } });\nvar pairs_1 = require(\"./internal/observable/pairs\");\nObject.defineProperty(exports, \"pairs\", { enumerable: true, get: function () { return pairs_1.pairs; } });\nvar partition_1 = require(\"./internal/observable/partition\");\nObject.defineProperty(exports, \"partition\", { enumerable: true, get: function () { return partition_1.partition; } });\nvar race_1 = require(\"./internal/observable/race\");\nObject.defineProperty(exports, \"race\", { enumerable: true, get: function () { return race_1.race; } });\nvar range_1 = require(\"./internal/observable/range\");\nObject.defineProperty(exports, \"range\", { enumerable: true, get: function () { return range_1.range; } });\nvar throwError_1 = require(\"./internal/observable/throwError\");\nObject.defineProperty(exports, \"throwError\", { enumerable: true, get: function () { return throwError_1.throwError; } });\nvar timer_1 = require(\"./internal/observable/timer\");\nObject.defineProperty(exports, \"timer\", { enumerable: true, get: function () { return timer_1.timer; } });\nvar using_1 = require(\"./internal/observable/using\");\nObject.defineProperty(exports, \"using\", { enumerable: true, get: function () { return using_1.using; } });\nvar zip_1 = require(\"./internal/observable/zip\");\nObject.defineProperty(exports, \"zip\", { enumerable: true, get: function () { return zip_1.zip; } });\nvar scheduled_1 = require(\"./internal/scheduled/scheduled\");\nObject.defineProperty(exports, \"scheduled\", { enumerable: true, get: function () { return scheduled_1.scheduled; } });\nvar empty_2 = require(\"./internal/observable/empty\");\nObject.defineProperty(exports, \"EMPTY\", { enumerable: true, get: function () { return empty_2.EMPTY; } });\nvar never_2 = require(\"./internal/observable/never\");\nObject.defineProperty(exports, \"NEVER\", { enumerable: true, get: function () { return never_2.NEVER; } });\n__exportStar(require(\"./internal/types\"), exports);\nvar config_1 = require(\"./internal/config\");\nObject.defineProperty(exports, \"config\", { enumerable: true, get: function () { return config_1.config; } });\nvar audit_1 = require(\"./internal/operators/audit\");\nObject.defineProperty(exports, \"audit\", { enumerable: true, get: function () { return audit_1.audit; } });\nvar auditTime_1 = require(\"./internal/operators/auditTime\");\nObject.defineProperty(exports, \"auditTime\", { enumerable: true, get: function () { return auditTime_1.auditTime; } });\nvar buffer_1 = require(\"./internal/operators/buffer\");\nObject.defineProperty(exports, \"buffer\", { enumerable: true, get: function () { return buffer_1.buffer; } });\nvar bufferCount_1 = require(\"./internal/operators/bufferCount\");\nObject.defineProperty(exports, \"bufferCount\", { enumerable: true, get: function () { return bufferCount_1.bufferCount; } });\nvar bufferTime_1 = require(\"./internal/operators/bufferTime\");\nObject.defineProperty(exports, \"bufferTime\", { enumerable: true, get: function () { return bufferTime_1.bufferTime; } });\nvar bufferToggle_1 = require(\"./internal/operators/bufferToggle\");\nObject.defineProperty(exports, \"bufferToggle\", { enumerable: true, get: function () { return bufferToggle_1.bufferToggle; } });\nvar bufferWhen_1 = require(\"./internal/operators/bufferWhen\");\nObject.defineProperty(exports, \"bufferWhen\", { enumerable: true, get: function () { return bufferWhen_1.bufferWhen; } });\nvar catchError_1 = require(\"./internal/operators/catchError\");\nObject.defineProperty(exports, \"catchError\", { enumerable: true, get: function () { return catchError_1.catchError; } });\nvar combineAll_1 = require(\"./internal/operators/combineAll\");\nObject.defineProperty(exports, \"combineAll\", { enumerable: true, get: function () { return combineAll_1.combineAll; } });\nvar combineLatestAll_1 = require(\"./internal/operators/combineLatestAll\");\nObject.defineProperty(exports, \"combineLatestAll\", { enumerable: true, get: function () { return combineLatestAll_1.combineLatestAll; } });\nvar combineLatestWith_1 = require(\"./internal/operators/combineLatestWith\");\nObject.defineProperty(exports, \"combineLatestWith\", { enumerable: true, get: function () { return combineLatestWith_1.combineLatestWith; } });\nvar concatAll_1 = require(\"./internal/operators/concatAll\");\nObject.defineProperty(exports, \"concatAll\", { enumerable: true, get: function () { return concatAll_1.concatAll; } });\nvar concatMap_1 = require(\"./internal/operators/concatMap\");\nObject.defineProperty(exports, \"concatMap\", { enumerable: true, get: function () { return concatMap_1.concatMap; } });\nvar concatMapTo_1 = require(\"./internal/operators/concatMapTo\");\nObject.defineProperty(exports, \"concatMapTo\", { enumerable: true, get: function () { return concatMapTo_1.concatMapTo; } });\nvar concatWith_1 = require(\"./internal/operators/concatWith\");\nObject.defineProperty(exports, \"concatWith\", { enumerable: true, get: function () { return concatWith_1.concatWith; } });\nvar connect_1 = require(\"./internal/operators/connect\");\nObject.defineProperty(exports, \"connect\", { enumerable: true, get: function () { return connect_1.connect; } });\nvar count_1 = require(\"./internal/operators/count\");\nObject.defineProperty(exports, \"count\", { enumerable: true, get: function () { return count_1.count; } });\nvar debounce_1 = require(\"./internal/operators/debounce\");\nObject.defineProperty(exports, \"debounce\", { enumerable: true, get: function () { return debounce_1.debounce; } });\nvar debounceTime_1 = require(\"./internal/operators/debounceTime\");\nObject.defineProperty(exports, \"debounceTime\", { enumerable: true, get: function () { return debounceTime_1.debounceTime; } });\nvar defaultIfEmpty_1 = require(\"./internal/operators/defaultIfEmpty\");\nObject.defineProperty(exports, \"defaultIfEmpty\", { enumerable: true, get: function () { return defaultIfEmpty_1.defaultIfEmpty; } });\nvar delay_1 = require(\"./internal/operators/delay\");\nObject.defineProperty(exports, \"delay\", { enumerable: true, get: function () { return delay_1.delay; } });\nvar delayWhen_1 = require(\"./internal/operators/delayWhen\");\nObject.defineProperty(exports, \"delayWhen\", { enumerable: true, get: function () { return delayWhen_1.delayWhen; } });\nvar dematerialize_1 = require(\"./internal/operators/dematerialize\");\nObject.defineProperty(exports, \"dematerialize\", { enumerable: true, get: function () { return dematerialize_1.dematerialize; } });\nvar distinct_1 = require(\"./internal/operators/distinct\");\nObject.defineProperty(exports, \"distinct\", { enumerable: true, get: function () { return distinct_1.distinct; } });\nvar distinctUntilChanged_1 = require(\"./internal/operators/distinctUntilChanged\");\nObject.defineProperty(exports, \"distinctUntilChanged\", { enumerable: true, get: function () { return distinctUntilChanged_1.distinctUntilChanged; } });\nvar distinctUntilKeyChanged_1 = require(\"./internal/operators/distinctUntilKeyChanged\");\nObject.defineProperty(exports, \"distinctUntilKeyChanged\", { enumerable: true, get: function () { return distinctUntilKeyChanged_1.distinctUntilKeyChanged; } });\nvar elementAt_1 = require(\"./internal/operators/elementAt\");\nObject.defineProperty(exports, \"elementAt\", { enumerable: true, get: function () { return elementAt_1.elementAt; } });\nvar endWith_1 = require(\"./internal/operators/endWith\");\nObject.defineProperty(exports, \"endWith\", { enumerable: true, get: function () { return endWith_1.endWith; } });\nvar every_1 = require(\"./internal/operators/every\");\nObject.defineProperty(exports, \"every\", { enumerable: true, get: function () { return every_1.every; } });\nvar exhaust_1 = require(\"./internal/operators/exhaust\");\nObject.defineProperty(exports, \"exhaust\", { enumerable: true, get: function () { return exhaust_1.exhaust; } });\nvar exhaustAll_1 = require(\"./internal/operators/exhaustAll\");\nObject.defineProperty(exports, \"exhaustAll\", { enumerable: true, get: function () { return exhaustAll_1.exhaustAll; } });\nvar exhaustMap_1 = require(\"./internal/operators/exhaustMap\");\nObject.defineProperty(exports, \"exhaustMap\", { enumerable: true, get: function () { return exhaustMap_1.exhaustMap; } });\nvar expand_1 = require(\"./internal/operators/expand\");\nObject.defineProperty(exports, \"expand\", { enumerable: true, get: function () { return expand_1.expand; } });\nvar filter_1 = require(\"./internal/operators/filter\");\nObject.defineProperty(exports, \"filter\", { enumerable: true, get: function () { return filter_1.filter; } });\nvar finalize_1 = require(\"./internal/operators/finalize\");\nObject.defineProperty(exports, \"finalize\", { enumerable: true, get: function () { return finalize_1.finalize; } });\nvar find_1 = require(\"./internal/operators/find\");\nObject.defineProperty(exports, \"find\", { enumerable: true, get: function () { return find_1.find; } });\nvar findIndex_1 = require(\"./internal/operators/findIndex\");\nObject.defineProperty(exports, \"findIndex\", { enumerable: true, get: function () { return findIndex_1.findIndex; } });\nvar first_1 = require(\"./internal/operators/first\");\nObject.defineProperty(exports, \"first\", { enumerable: true, get: function () { return first_1.first; } });\nvar groupBy_1 = require(\"./internal/operators/groupBy\");\nObject.defineProperty(exports, \"groupBy\", { enumerable: true, get: function () { return groupBy_1.groupBy; } });\nvar ignoreElements_1 = require(\"./internal/operators/ignoreElements\");\nObject.defineProperty(exports, \"ignoreElements\", { enumerable: true, get: function () { return ignoreElements_1.ignoreElements; } });\nvar isEmpty_1 = require(\"./internal/operators/isEmpty\");\nObject.defineProperty(exports, \"isEmpty\", { enumerable: true, get: function () { return isEmpty_1.isEmpty; } });\nvar last_1 = require(\"./internal/operators/last\");\nObject.defineProperty(exports, \"last\", { enumerable: true, get: function () { return last_1.last; } });\nvar map_1 = require(\"./internal/operators/map\");\nObject.defineProperty(exports, \"map\", { enumerable: true, get: function () { return map_1.map; } });\nvar mapTo_1 = require(\"./internal/operators/mapTo\");\nObject.defineProperty(exports, \"mapTo\", { enumerable: true, get: function () { return mapTo_1.mapTo; } });\nvar materialize_1 = require(\"./internal/operators/materialize\");\nObject.defineProperty(exports, \"materialize\", { enumerable: true, get: function () { return materialize_1.materialize; } });\nvar max_1 = require(\"./internal/operators/max\");\nObject.defineProperty(exports, \"max\", { enumerable: true, get: function () { return max_1.max; } });\nvar mergeAll_1 = require(\"./internal/operators/mergeAll\");\nObject.defineProperty(exports, \"mergeAll\", { enumerable: true, get: function () { return mergeAll_1.mergeAll; } });\nvar flatMap_1 = require(\"./internal/operators/flatMap\");\nObject.defineProperty(exports, \"flatMap\", { enumerable: true, get: function () { return flatMap_1.flatMap; } });\nvar mergeMap_1 = require(\"./internal/operators/mergeMap\");\nObject.defineProperty(exports, \"mergeMap\", { enumerable: true, get: function () { return mergeMap_1.mergeMap; } });\nvar mergeMapTo_1 = require(\"./internal/operators/mergeMapTo\");\nObject.defineProperty(exports, \"mergeMapTo\", { enumerable: true, get: function () { return mergeMapTo_1.mergeMapTo; } });\nvar mergeScan_1 = require(\"./internal/operators/mergeScan\");\nObject.defineProperty(exports, \"mergeScan\", { enumerable: true, get: function () { return mergeScan_1.mergeScan; } });\nvar mergeWith_1 = require(\"./internal/operators/mergeWith\");\nObject.defineProperty(exports, \"mergeWith\", { enumerable: true, get: function () { return mergeWith_1.mergeWith; } });\nvar min_1 = require(\"./internal/operators/min\");\nObject.defineProperty(exports, \"min\", { enumerable: true, get: function () { return min_1.min; } });\nvar multicast_1 = require(\"./internal/operators/multicast\");\nObject.defineProperty(exports, \"multicast\", { enumerable: true, get: function () { return multicast_1.multicast; } });\nvar observeOn_1 = require(\"./internal/operators/observeOn\");\nObject.defineProperty(exports, \"observeOn\", { enumerable: true, get: function () { return observeOn_1.observeOn; } });\nvar onErrorResumeNextWith_1 = require(\"./internal/operators/onErrorResumeNextWith\");\nObject.defineProperty(exports, \"onErrorResumeNextWith\", { enumerable: true, get: function () { return onErrorResumeNextWith_1.onErrorResumeNextWith; } });\nvar pairwise_1 = require(\"./internal/operators/pairwise\");\nObject.defineProperty(exports, \"pairwise\", { enumerable: true, get: function () { return pairwise_1.pairwise; } });\nvar pluck_1 = require(\"./internal/operators/pluck\");\nObject.defineProperty(exports, \"pluck\", { enumerable: true, get: function () { return pluck_1.pluck; } });\nvar publish_1 = require(\"./internal/operators/publish\");\nObject.defineProperty(exports, \"publish\", { enumerable: true, get: function () { return publish_1.publish; } });\nvar publishBehavior_1 = require(\"./internal/operators/publishBehavior\");\nObject.defineProperty(exports, \"publishBehavior\", { enumerable: true, get: function () { return publishBehavior_1.publishBehavior; } });\nvar publishLast_1 = require(\"./internal/operators/publishLast\");\nObject.defineProperty(exports, \"publishLast\", { enumerable: true, get: function () { return publishLast_1.publishLast; } });\nvar publishReplay_1 = require(\"./internal/operators/publishReplay\");\nObject.defineProperty(exports, \"publishReplay\", { enumerable: true, get: function () { return publishReplay_1.publishReplay; } });\nvar raceWith_1 = require(\"./internal/operators/raceWith\");\nObject.defineProperty(exports, \"raceWith\", { enumerable: true, get: function () { return raceWith_1.raceWith; } });\nvar reduce_1 = require(\"./internal/operators/reduce\");\nObject.defineProperty(exports, \"reduce\", { enumerable: true, get: function () { return reduce_1.reduce; } });\nvar repeat_1 = require(\"./internal/operators/repeat\");\nObject.defineProperty(exports, \"repeat\", { enumerable: true, get: function () { return repeat_1.repeat; } });\nvar repeatWhen_1 = require(\"./internal/operators/repeatWhen\");\nObject.defineProperty(exports, \"repeatWhen\", { enumerable: true, get: function () { return repeatWhen_1.repeatWhen; } });\nvar retry_1 = require(\"./internal/operators/retry\");\nObject.defineProperty(exports, \"retry\", { enumerable: true, get: function () { return retry_1.retry; } });\nvar retryWhen_1 = require(\"./internal/operators/retryWhen\");\nObject.defineProperty(exports, \"retryWhen\", { enumerable: true, get: function () { return retryWhen_1.retryWhen; } });\nvar refCount_1 = require(\"./internal/operators/refCount\");\nObject.defineProperty(exports, \"refCount\", { enumerable: true, get: function () { return refCount_1.refCount; } });\nvar sample_1 = require(\"./internal/operators/sample\");\nObject.defineProperty(exports, \"sample\", { enumerable: true, get: function () { return sample_1.sample; } });\nvar sampleTime_1 = require(\"./internal/operators/sampleTime\");\nObject.defineProperty(exports, \"sampleTime\", { enumerable: true, get: function () { return sampleTime_1.sampleTime; } });\nvar scan_1 = require(\"./internal/operators/scan\");\nObject.defineProperty(exports, \"scan\", { enumerable: true, get: function () { return scan_1.scan; } });\nvar sequenceEqual_1 = require(\"./internal/operators/sequenceEqual\");\nObject.defineProperty(exports, \"sequenceEqual\", { enumerable: true, get: function () { return sequenceEqual_1.sequenceEqual; } });\nvar share_1 = require(\"./internal/operators/share\");\nObject.defineProperty(exports, \"share\", { enumerable: true, get: function () { return share_1.share; } });\nvar shareReplay_1 = require(\"./internal/operators/shareReplay\");\nObject.defineProperty(exports, \"shareReplay\", { enumerable: true, get: function () { return shareReplay_1.shareReplay; } });\nvar single_1 = require(\"./internal/operators/single\");\nObject.defineProperty(exports, \"single\", { enumerable: true, get: function () { return single_1.single; } });\nvar skip_1 = require(\"./internal/operators/skip\");\nObject.defineProperty(exports, \"skip\", { enumerable: true, get: function () { return skip_1.skip; } });\nvar skipLast_1 = require(\"./internal/operators/skipLast\");\nObject.defineProperty(exports, \"skipLast\", { enumerable: true, get: function () { return skipLast_1.skipLast; } });\nvar skipUntil_1 = require(\"./internal/operators/skipUntil\");\nObject.defineProperty(exports, \"skipUntil\", { enumerable: true, get: function () { return skipUntil_1.skipUntil; } });\nvar skipWhile_1 = require(\"./internal/operators/skipWhile\");\nObject.defineProperty(exports, \"skipWhile\", { enumerable: true, get: function () { return skipWhile_1.skipWhile; } });\nvar startWith_1 = require(\"./internal/operators/startWith\");\nObject.defineProperty(exports, \"startWith\", { enumerable: true, get: function () { return startWith_1.startWith; } });\nvar subscribeOn_1 = require(\"./internal/operators/subscribeOn\");\nObject.defineProperty(exports, \"subscribeOn\", { enumerable: true, get: function () { return subscribeOn_1.subscribeOn; } });\nvar switchAll_1 = require(\"./internal/operators/switchAll\");\nObject.defineProperty(exports, \"switchAll\", { enumerable: true, get: function () { return switchAll_1.switchAll; } });\nvar switchMap_1 = require(\"./internal/operators/switchMap\");\nObject.defineProperty(exports, \"switchMap\", { enumerable: true, get: function () { return switchMap_1.switchMap; } });\nvar switchMapTo_1 = require(\"./internal/operators/switchMapTo\");\nObject.defineProperty(exports, \"switchMapTo\", { enumerable: true, get: function () { return switchMapTo_1.switchMapTo; } });\nvar switchScan_1 = require(\"./internal/operators/switchScan\");\nObject.defineProperty(exports, \"switchScan\", { enumerable: true, get: function () { return switchScan_1.switchScan; } });\nvar take_1 = require(\"./internal/operators/take\");\nObject.defineProperty(exports, \"take\", { enumerable: true, get: function () { return take_1.take; } });\nvar takeLast_1 = require(\"./internal/operators/takeLast\");\nObject.defineProperty(exports, \"takeLast\", { enumerable: true, get: function () { return takeLast_1.takeLast; } });\nvar takeUntil_1 = require(\"./internal/operators/takeUntil\");\nObject.defineProperty(exports, \"takeUntil\", { enumerable: true, get: function () { return takeUntil_1.takeUntil; } });\nvar takeWhile_1 = require(\"./internal/operators/takeWhile\");\nObject.defineProperty(exports, \"takeWhile\", { enumerable: true, get: function () { return takeWhile_1.takeWhile; } });\nvar tap_1 = require(\"./internal/operators/tap\");\nObject.defineProperty(exports, \"tap\", { enumerable: true, get: function () { return tap_1.tap; } });\nvar throttle_1 = require(\"./internal/operators/throttle\");\nObject.defineProperty(exports, \"throttle\", { enumerable: true, get: function () { return throttle_1.throttle; } });\nvar throttleTime_1 = require(\"./internal/operators/throttleTime\");\nObject.defineProperty(exports, \"throttleTime\", { enumerable: true, get: function () { return throttleTime_1.throttleTime; } });\nvar throwIfEmpty_1 = require(\"./internal/operators/throwIfEmpty\");\nObject.defineProperty(exports, \"throwIfEmpty\", { enumerable: true, get: function () { return throwIfEmpty_1.throwIfEmpty; } });\nvar timeInterval_1 = require(\"./internal/operators/timeInterval\");\nObject.defineProperty(exports, \"timeInterval\", { enumerable: true, get: function () { return timeInterval_1.timeInterval; } });\nvar timeout_2 = require(\"./internal/operators/timeout\");\nObject.defineProperty(exports, \"timeout\", { enumerable: true, get: function () { return timeout_2.timeout; } });\nvar timeoutWith_1 = require(\"./internal/operators/timeoutWith\");\nObject.defineProperty(exports, \"timeoutWith\", { enumerable: true, get: function () { return timeoutWith_1.timeoutWith; } });\nvar timestamp_1 = require(\"./internal/operators/timestamp\");\nObject.defineProperty(exports, \"timestamp\", { enumerable: true, get: function () { return timestamp_1.timestamp; } });\nvar toArray_1 = require(\"./internal/operators/toArray\");\nObject.defineProperty(exports, \"toArray\", { enumerable: true, get: function () { return toArray_1.toArray; } });\nvar window_1 = require(\"./internal/operators/window\");\nObject.defineProperty(exports, \"window\", { enumerable: true, get: function () { return window_1.window; } });\nvar windowCount_1 = require(\"./internal/operators/windowCount\");\nObject.defineProperty(exports, \"windowCount\", { enumerable: true, get: function () { return windowCount_1.windowCount; } });\nvar windowTime_1 = require(\"./internal/operators/windowTime\");\nObject.defineProperty(exports, \"windowTime\", { enumerable: true, get: function () { return windowTime_1.windowTime; } });\nvar windowToggle_1 = require(\"./internal/operators/windowToggle\");\nObject.defineProperty(exports, \"windowToggle\", { enumerable: true, get: function () { return windowToggle_1.windowToggle; } });\nvar windowWhen_1 = require(\"./internal/operators/windowWhen\");\nObject.defineProperty(exports, \"windowWhen\", { enumerable: true, get: function () { return windowWhen_1.windowWhen; } });\nvar withLatestFrom_1 = require(\"./internal/operators/withLatestFrom\");\nObject.defineProperty(exports, \"withLatestFrom\", { enumerable: true, get: function () { return withLatestFrom_1.withLatestFrom; } });\nvar zipAll_1 = require(\"./internal/operators/zipAll\");\nObject.defineProperty(exports, \"zipAll\", { enumerable: true, get: function () { return zipAll_1.zipAll; } });\nvar zipWith_1 = require(\"./internal/operators/zipWith\");\nObject.defineProperty(exports, \"zipWith\", { enumerable: true, get: function () { return zipWith_1.zipWith; } });\n//# sourceMappingURL=index.js.map","import type { Event, GroupMessage, CreateGroupOptions, ShareCredentialMessage } from './types.js';\nimport { IndexedDBGroupStateBackend, IndexedDBKeyPackageStore, IndexedDBKeyValueBackend } from './group-storage.js';\nimport {\n Observable,\n Subscription,\n merge,\n from,\n EMPTY,\n exhaustMap,\n tap,\n map,\n filter,\n share,\n BehaviorSubject,\n switchMap,\n} from 'rxjs';\n\nlet MarmotClientClass: any = null;\nlet InviteReaderClass: any = null;\nlet deserializeApplicationRumorFn: any = null;\nlet KEY_PACKAGE_KIND: number = 443;\nlet GIFT_WRAP_KIND: number = 1059;\nlet loadPromise: Promise<void> | null = null;\n\nasync function loadMarmotModules(): Promise<void> {\n if (MarmotClientClass) return;\n if (loadPromise) return loadPromise;\n\n loadPromise = (async () => {\n try {\n const marmot = await import('@internet-privacy/marmot-ts');\n MarmotClientClass = marmot.MarmotClient;\n InviteReaderClass = marmot.InviteReader;\n deserializeApplicationRumorFn = marmot.deserializeApplicationRumor;\n KEY_PACKAGE_KIND = marmot.KEY_PACKAGE_KIND ?? 443;\n GIFT_WRAP_KIND = 1059;\n } catch {\n throw new Error(\n 'Group messaging requires @internet-privacy/marmot-ts as a peer dependency. ' +\n 'Install it with: npm install @internet-privacy/marmot-ts'\n );\n }\n })();\n\n return loadPromise;\n}\n\ninterface IngestRecord {\n kind: string;\n eventId: string;\n groupId: string;\n timestamp: number;\n}\n\ninterface UnreadState {\n lastMessageAt: number;\n lastSeenAt: number;\n}\n\nexport class GroupManager {\n #client: any = null;\n #signer: any;\n #network: any;\n #relays: string[];\n #subscriptions: Map<string, Subscription> = new Map();\n #dbName: string;\n #running = false;\n #mainSubscriptions: Subscription[] = [];\n #processedEventIds = new Map<string, Set<string>>();\n #ingestResults = new Map<string, BehaviorSubject<IngestRecord[]>>();\n #messageHandlers: Set<(msg: GroupMessage) => void> = new Set();\n #live$: Observable<any> | null = null;\n #ingest$: Observable<any> | null = null;\n #inviteReader: any = null;\n #inviteSubscription: Subscription | null = null;\n #keyPackageSubscription: Subscription | null = null;\n #unreadState = new Map<string, UnreadState>();\n #unreadGroupIds$ = new BehaviorSubject<string[]>([]);\n #unreadStore: IndexedDBKeyValueBackend | null = null;\n #groupChangeHandlers: Set<(event: { type: 'created' | 'joined'; group: any }) => void> = new Set();\n\n constructor(options: {\n signer: any;\n network: any;\n relays: string[];\n dbName?: string;\n }) {\n if (!options.relays || options.relays.length === 0) {\n throw new Error('At least one relay URL is required for group messaging.');\n }\n this.#signer = options.signer;\n this.#network = options.network;\n this.#relays = options.relays;\n this.#dbName = options.dbName || 'group';\n }\n\nasync initialize(): Promise<void> {\n await loadMarmotModules();\n\n const groupStateStore = new IndexedDBGroupStateBackend(this.#dbName);\n const keyPackageBackend = new IndexedDBKeyPackageStore(this.#dbName);\n\n this.#client = new MarmotClientClass({\n signer: this.#signer,\n network: this.#network,\n groupStateStore,\n keyPackageBackend,\n });\n\n this.#unreadStore = new IndexedDBKeyValueBackend(this.#dbName, 'marmot-unread');\n}\n\n getClient(): any {\n if (!this.#client) {\n throw new Error('GroupManager not initialized. Call initialize() first.');\n }\n return this.#client;\n }\n\n getInviteReader(): any {\n if (!this.#inviteReader) {\n throw new Error('InviteReader not initialized. Call start() first.');\n }\n return this.#inviteReader;\n }\n\n /**\n * Observable of unread group IDs.\n * Emits whenever the unread state changes.\n */\n get unreadGroupIds$(): BehaviorSubject<string[]> {\n return this.#unreadGroupIds$;\n }\n\n async createGroup(name: string, options: CreateGroupOptions = {}): Promise<any> {\n const client = this.getClient();\n\n const group = await client.createGroup(name, {\n description: options.description,\n adminPubkeys: options.adminPubkeys,\n relays: options.relays || this.#relays,\n });\n\n try {\n await group.selfUpdate();\n } catch {\n // Non-critical — group is still usable\n }\n\n this.#notifyGroupChange({ type: 'created', group });\n return group;\n }\n\n onGroupChange(handler: (event: { type: 'created' | 'joined'; group: any }) => void): () => void {\n this.#groupChangeHandlers.add(handler);\n return () => this.#groupChangeHandlers.delete(handler);\n }\n\n #notifyGroupChange(event: { type: 'created' | 'joined'; group: any }): void {\n for (const handler of this.#groupChangeHandlers) {\n try {\n handler(event);\n } catch {\n // Non-critical\n }\n }\n }\n\n async joinGroupFromWelcome(welcomeRumor: any): Promise<any> {\n const client = this.getClient();\n\n const result = await client.joinGroupFromWelcome({ welcomeRumor });\n\n try {\n await result.group.selfUpdate();\n } catch {\n // Non-critical — group is still usable\n }\n\n this.#notifyGroupChange({ type: 'joined', group: result.group });\n return result.group;\n }\n\n async inviteMember(group: any, _memberPubkey: string): Promise<void> {\n this.getClient();\n\n const keyPackageEvent = await this.#fetchKeyPackageEvent(_memberPubkey);\n if (!keyPackageEvent) {\n throw new Error(`No key package found for member ${_memberPubkey}. They must publish one first.`);\n }\n\n await group.inviteByKeyPackageEvent(keyPackageEvent);\n }\n\n async sendMessage(group: any, content: string, kind: number = 9): Promise<void> {\n const rumor: Event = {\n kind,\n content,\n created_at: Math.floor(Date.now() / 1000),\n tags: [],\n };\n\n await group.sendApplicationRumor(rumor);\n }\n\n async sendShareToMember(group: any, _memberPubkey: string, shareCredential: string, groupCredential: string, relays: string[]): Promise<void> {\n const message: ShareCredentialMessage = {\n type: 'share-credential',\n shareCredential,\n groupCredential,\n relays,\n timestamp: Date.now(),\n };\n\n await this.sendMessage(group, JSON.stringify(message));\n }\n\n onMessage(handler: (msg: GroupMessage) => void): () => void {\n this.#messageHandlers.add(handler);\n\n return () => {\n this.#messageHandlers.delete(handler);\n };\n }\n\n parseGroupMessage(message: GroupMessage): ShareCredentialMessage | { type: 'signing-request'; description: string } | null {\n try {\n const parsed = JSON.parse(message.content);\n\n if (parsed.type === 'share-credential') {\n return parsed as ShareCredentialMessage;\n }\n\n if (parsed.type === 'signing-request') {\n return { type: 'signing-request', description: parsed.description || '' };\n }\n } catch {\n // Not a structured message\n }\n\n return null;\n }\n\n async getGroups(): Promise<any[]> {\n const client = this.getClient();\n return await client.loadAllGroups();\n }\n\n async leaveGroup(groupId: Uint8Array | string): Promise<void> {\n const client = this.getClient();\n await client.leaveGroup(groupId);\n }\n\n async destroyGroup(groupId: Uint8Array | string): Promise<void> {\n const client = this.getClient();\n await client.destroyGroup(groupId);\n }\n\n /**\n * Mark a group as read — clears the unread state up to the given timestamp.\n * @param groupIdHex Group ID (hex string)\n * @param seenAt Timestamp to mark as seen (seconds since epoch, defaults to now)\n */\n async markGroupSeen(groupIdHex: string, seenAt?: number): Promise<void> {\n const timestamp = seenAt ?? Math.floor(Date.now() / 1000);\n const state = this.#unreadState.get(groupIdHex) ?? { lastMessageAt: 0, lastSeenAt: 0 };\n state.lastSeenAt = Math.max(state.lastSeenAt, timestamp);\n this.#unreadState.set(groupIdHex, state);\n\n await this.#persistUnreadState(groupIdHex, state);\n this.#recomputeUnreadGroupIds();\n }\n\n /**\n * Start the full event pipeline: ingestion, invite sync, and key package tracking.\n * Must be called after initialize() and before any group operations that expect incoming messages.\n */\n async start(): Promise<void> {\n if (this.#running) return;\n this.#running = true;\n\n await loadMarmotModules();\n\n // Initialize InviteReader\n this.getClient();\n const inviteStore = {\n received: new IndexedDBKeyValueBackend(this.#dbName, 'marmot-invites-received'),\n unread: new IndexedDBKeyValueBackend(this.#dbName, 'marmot-invites-unread'),\n seen: new IndexedDBKeyValueBackend(this.#dbName, 'marmot-invites-seen'),\n };\n this.#inviteReader = new InviteReaderClass({\n signer: this.#signer,\n store: inviteStore,\n });\n\n // Load persisted unread state\n await this.#loadUnreadState();\n\n // Load persisted processed event IDs\n await this.#loadProcessedEventIds();\n\n // Setup ingestion pipeline\n await this.#setupIngestionPipeline();\n\n // Start live event stream\n if (this.#live$) {\n this.#mainSubscriptions.push(this.#live$.subscribe());\n }\n\n // Start ingestion stream\n if (this.#ingest$) {\n this.#mainSubscriptions.push(this.#ingest$.subscribe());\n }\n\n // Start invite sync\n this.#startInviteSync();\n\n // Start key package tracking\n this.#startKeyPackageTracking();\n }\n\n /**\n * Stop all subscriptions and clean up resources.\n */\n stop(): void {\n this.#running = false;\n\n for (const sub of this.#mainSubscriptions) {\n sub.unsubscribe();\n }\n this.#mainSubscriptions = [];\n\n for (const [_id, sub] of this.#subscriptions) {\n sub.unsubscribe();\n }\n this.#subscriptions.clear();\n\n this.#inviteSubscription?.unsubscribe();\n this.#inviteSubscription = null;\n\n this.#keyPackageSubscription?.unsubscribe();\n this.#keyPackageSubscription = null;\n\n this.#ingestResults.forEach((s) => s.complete());\n this.#ingestResults.clear();\n this.#processedEventIds.clear();\n this.#live$ = null;\n this.#ingest$ = null;\n this.#inviteReader = null;\n }\n\n close(): void {\n this.stop();\n }\n\n // ---------------------------------------------------------------------------\n // Invite Sync\n // ---------------------------------------------------------------------------\n\n #startInviteSync(): void {\n if (!this.#inviteReader) return;\n\n const pubkey = this.#signer?.pubkey;\n if (!pubkey) return;\n\n // Historical: last 2 weeks of gift wraps\n const historical$ = (from(\n this.#network.request(this.#relays, {\n kinds: [GIFT_WRAP_KIND],\n '#p': [pubkey],\n since: Math.floor(Date.now() / 1000) - 60 * 60 * 24 * 7 * 2,\n })\n ) as Observable<any[]>).pipe(\n map((events: any[]) => events ?? []),\n tap((events: any[]) => {\n for (const event of events) {\n this.#inviteReader.ingestEvent(event);\n }\n }),\n );\n\n // Live: ongoing subscription\n const live$ = this.#network.subscription(this.#relays, {\n kinds: [GIFT_WRAP_KIND],\n '#p': [pubkey],\n }).pipe(\n tap((event: any) => {\n this.#inviteReader.ingestEvent(event);\n }),\n );\n\n this.#inviteSubscription = merge(historical$, live$).subscribe();\n }\n\n /**\n * Decrypt pending gift wraps and process invites.\n * Call this after user interaction to trigger decryption prompts.\n */\n async processInvites(): Promise<void> {\n if (!this.#inviteReader) return;\n\n await this.#inviteReader.decryptGiftWraps();\n\n const unread = await this.#inviteReader.getUnread();\n for (const invite of unread) {\n try {\n await this.joinGroupFromWelcome(invite);\n await this.#inviteReader.markAsRead(invite.id);\n } catch (err) {\n console.error('[GroupManager] Failed to process invite:', err);\n }\n }\n }\n\n // ---------------------------------------------------------------------------\n // Key Package Tracking\n // ---------------------------------------------------------------------------\n\n #startKeyPackageTracking(): void {\n const client = this.getClient();\n const pubkey = this.#signer?.pubkey;\n if (!pubkey || !client) return;\n\n const filters = [\n { kinds: [KEY_PACKAGE_KIND], authors: [pubkey] },\n { kinds: [5], '#k': [String(KEY_PACKAGE_KIND)], authors: [pubkey] },\n ];\n\n this.#keyPackageSubscription = this.#network.subscription(this.#relays, filters).pipe(\n tap((event: any) => {\n client.keyPackages.track(event);\n }),\n ).subscribe();\n }\n\n // ---------------------------------------------------------------------------\n // Ingestion Pipeline\n // ---------------------------------------------------------------------------\n\n async #setupIngestionPipeline(): Promise<void> {\n const client = this.getClient();\n\n this.#live$ = (from(client.watchGroups()) as Observable<any[]>).pipe(\n switchMap(async (groups: any[]) => {\n const validGroups = (groups ?? []).filter((g: any) => g.relays && g.groupData);\n if (validGroups.length === 0) return EMPTY;\n\n return merge(\n ...validGroups.map((group: any) => {\n const groupIdTag = group.groupData.nostrGroupId;\n\n return this.#network.subscription(group.relays, {\n kinds: [445],\n '#h': [groupIdTag],\n }).pipe(\n filter((event: any) => event.kind === 445),\n tap((event: any) => {\n const processed = this.#getProcessedEventIds(group.idStr);\n processed.add(event.id);\n }),\n );\n })\n );\n }),\n switchMap((merged$: Observable<any>) => merged$),\n share(),\n );\n\n this.#ingest$ = (from(client.watchGroups()) as Observable<any[]>).pipe(\n switchMap(async (groups: any[]) => {\n const validGroups = (groups ?? []).filter((g: any) => g.relays && g.groupData);\n if (validGroups.length === 0) return EMPTY;\n\n return merge(\n ...validGroups.map((group: any) => {\n const groupIdHex = group.idStr;\n const groupIdTag = group.groupData.nostrGroupId;\n const processed = this.#getProcessedEventIds(groupIdHex);\n\n return this.#network.subscription(group.relays, {\n kinds: [445],\n '#h': [groupIdTag],\n }).pipe(\n filter((event: any) => event.kind === 445 && !processed.has(event.id)),\n exhaustMap((events: any) => {\n const eventArray = Array.isArray(events) ? events : [events];\n const newEvents = eventArray.filter((e: any) => !processed.has(e.id));\n if (newEvents.length === 0) return EMPTY;\n\n return from(group.ingest(newEvents));\n }),\n tap((result: any) => {\n processed.add(result.event.id);\n\n const record: IngestRecord = {\n kind: result.kind,\n eventId: result.event.id,\n groupId: groupIdHex,\n timestamp: Date.now(),\n };\n\n const log$ = this.#getIngestResults$(groupIdHex);\n log$.next([...log$.getValue(), record]);\n\n // Persist processed event ID\n void this.#persistProcessedEventId(groupIdHex, result.event.id);\n\n // Track unread for application messages\n if (result.kind === 'processed' && result.result?.kind === 'applicationMessage') {\n this.#dispatchApplicationMessage(result.result.message, group);\n }\n }),\n );\n })\n );\n }),\n switchMap((merged$: Observable<any>) => merged$),\n );\n }\n\n // ---------------------------------------------------------------------------\n // Application Message Dispatch\n // ---------------------------------------------------------------------------\n\n #dispatchApplicationMessage(messageBytes: Uint8Array, group: any): void {\n try {\n if (!deserializeApplicationRumorFn) {\n return;\n }\n const rumor = deserializeApplicationRumorFn(messageBytes);\n\n const groupIdHex = group.idStr;\n const state = this.#unreadState.get(groupIdHex) ?? { lastMessageAt: 0, lastSeenAt: 0 };\n\n if (rumor.created_at > state.lastMessageAt) {\n state.lastMessageAt = rumor.created_at;\n this.#unreadState.set(groupIdHex, state);\n void this.#persistUnreadState(groupIdHex, state);\n this.#recomputeUnreadGroupIds();\n }\n\n const groupMessage: GroupMessage = {\n groupId: group.id,\n senderPubkey: rumor.pubkey || '',\n content: rumor.content || '',\n kind: rumor.kind || 0,\n timestamp: rumor.created_at || 0,\n tags: rumor.tags || [],\n };\n\n this.#messageHandlers.forEach((handler) => {\n handler(groupMessage);\n });\n } catch (err) {\n console.error('[GroupManager] Failed to parse application message:', err);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Unread State Management\n // ---------------------------------------------------------------------------\n\n #recomputeUnreadGroupIds(): void {\n const unread: string[] = [];\n for (const [groupIdHex, state] of this.#unreadState) {\n if (state.lastMessageAt > state.lastSeenAt) {\n unread.push(groupIdHex);\n }\n }\n unread.sort();\n this.#unreadGroupIds$.next(unread);\n }\n\n async #persistUnreadState(groupIdHex: string, state: UnreadState): Promise<void> {\n if (!this.#unreadStore) return;\n try {\n await this.#unreadStore.setItem(`unread:${groupIdHex}`, state);\n } catch {\n // Non-critical\n }\n }\n\n async #loadUnreadState(): Promise<void> {\n if (!this.#unreadStore) return;\n try {\n const keys = await this.#unreadStore.keys();\n for (const key of keys) {\n if (key.startsWith('unread:')) {\n const groupIdHex = key.replace('unread:', '');\n const state = await this.#unreadStore.getItem<UnreadState>(key);\n if (state) {\n this.#unreadState.set(groupIdHex, state);\n }\n }\n }\n } catch {\n // Non-critical\n }\n }\n\n // ---------------------------------------------------------------------------\n // Persistent Processed Event IDs\n // ---------------------------------------------------------------------------\n\n async #persistProcessedEventId(groupIdHex: string, eventId: string): Promise<void> {\n if (!this.#unreadStore) return;\n try {\n await this.#unreadStore.setItem(`processed:${groupIdHex}:${eventId}`, true);\n } catch {\n // Non-critical\n }\n }\n\n async #loadProcessedEventIds(): Promise<void> {\n if (!this.#unreadStore) return;\n try {\n const keys = await this.#unreadStore.keys();\n for (const key of keys) {\n if (key.startsWith('processed:')) {\n const parts = key.split(':');\n if (parts.length >= 3) {\n const groupIdHex = parts[1];\n const eventId = parts.slice(2).join(':');\n const processed = this.#getProcessedEventIds(groupIdHex);\n processed.add(eventId);\n }\n }\n }\n } catch {\n // Non-critical\n }\n }\n\n // ---------------------------------------------------------------------------\n // Internal Helpers\n // ---------------------------------------------------------------------------\n\n #getProcessedEventIds(groupIdHex: string): Set<string> {\n const existing = this.#processedEventIds.get(groupIdHex);\n if (existing) return existing;\n\n const events = new Set<string>();\n this.#processedEventIds.set(groupIdHex, events);\n return events;\n }\n\n #getIngestResults$(groupIdHex: string): BehaviorSubject<IngestRecord[]> {\n const existing = this.#ingestResults.get(groupIdHex);\n if (existing) return existing;\n\n const subject = new BehaviorSubject<IngestRecord[]>([]);\n this.#ingestResults.set(groupIdHex, subject);\n return subject;\n }\n\n async #fetchKeyPackageEvent(memberPubkey: string): Promise<any | null> {\n const network = this.#network;\n if (!network || typeof network.request !== 'function') {\n return null;\n }\n\n try {\n const events = await network.request(\n this.#relays,\n [{ kinds: [KEY_PACKAGE_KIND], authors: [memberPubkey], limit: 1 }]\n );\n return events?.[0] ?? null;\n } catch {\n return null;\n }\n }\n}\n","/**\n * vLEI Root of Trust Types\n * @packageDocumentation\n */\n\nexport const VLEI_SCHEMAS = {\n legalEntity: 'E46jrVPTzlSkUPqGGeIZ8a8FWS7a6s4reAXRZOkogZ2A',\n officialRole: 'EDg-Ji3kmi_G97Jctxeajpmp1-A8gSpeyElm-XCzTxiE',\n} as const;\n\nexport type VLEISchema = (typeof VLEI_SCHEMAS)[keyof typeof VLEI_SCHEMAS];\n\nexport type VLEITagData = [string, string, string, string, string, string, string, string, string?];\n\nexport interface RootOfTrustInfo {\n aidPrefix: string;\n lei: string;\n legalName: string;\n role: string;\n roleCredentialSaid: string;\n entityCredentialSaid: string;\n verifiedAt: string;\n expiresAt?: string;\n}\n\nexport function parseVLEITag(tag: string[]): RootOfTrustInfo | null {\n if (tag[0] !== 'vlei' || tag.length < 8) return null;\n \n return {\n aidPrefix: tag[1],\n lei: tag[2],\n legalName: tag[3],\n role: tag[4],\n roleCredentialSaid: tag[5],\n entityCredentialSaid: tag[6],\n verifiedAt: tag[7],\n expiresAt: tag[8] || undefined,\n };\n}\n\nexport function createVLEITag(info: RootOfTrustInfo): VLEITagData {\n return [\n 'vlei',\n info.aidPrefix,\n info.lei,\n info.legalName,\n info.role,\n info.roleCredentialSaid,\n info.entityCredentialSaid,\n info.verifiedAt,\n info.expiresAt,\n ];\n}\n\nexport interface KERIAConnection {\n url: string;\n aidName: string;\n aidPrefix: string;\n}\n\nexport interface KERIACredential {\n said: string;\n schema: string;\n issuer: string;\n subject: Record<string, unknown>;\n issuanceDate: string;\n raw: unknown;\n}\n\nexport interface VLEICredentials {\n entity: KERIACredential;\n role: KERIACredential;\n}\n\nexport interface KERISignature {\n signature: string;\n signer: string;\n}\n\nexport interface MultisigVLEIConfig {\n requireVLEI: boolean;\n organization?: {\n lei: string;\n legalName: string;\n };\n}","/**\n * EUDI Wallet Root of Trust Types\n * @packageDocumentation\n */\n\n/**\n * Full EUDI claims - for internal verification only (never published)\n */\nexport interface EUDIFullClaims {\n holderDID: string;\n givenName?: string;\n familyName?: string;\n dateOfBirth?: string;\n nationality?: string;\n verifiedAt: string;\n expiresAt?: string;\n}\n\n/**\n * Minimal EUDI claims for publishing - privacy-preserving like ZKPassport\n */\nexport interface EUDIClaims {\n /** Unique identifier (hashed holderDID, for verification) */\n uniqueIdentifier: string;\n /** Signature from Nostr key proving ownership of holderDID */\n signature?: string;\n /** Age verification status */\n isOver18?: boolean;\n /** Nationality (optional, only if user chooses to reveal) */\n nationality?: string;\n /** Verification timestamp */\n verifiedAt: string;\n /** Expiration timestamp */\n expiresAt?: string;\n}\n\nexport type EUDITagData = [string, string, string?, string?, string?, string?, string?, string?];\n\nexport function parseEUDITag(tag: string[]): EUDIClaims | null {\n if (tag[0] !== 'eudi' || tag.length < 3 || !tag[1]) return null;\n \n return {\n uniqueIdentifier: tag[1],\n signature: tag[2] || undefined,\n isOver18: tag[3] === 'true' ? true : undefined,\n nationality: tag[4] || undefined,\n verifiedAt: tag[5] || new Date().toISOString(),\n expiresAt: tag[6] || undefined,\n };\n}\n\nexport function createEUDITag(claims: EUDIClaims): EUDITagData {\n const tag: EUDITagData = [\n 'eudi',\n claims.uniqueIdentifier,\n claims.signature || '',\n ];\n if (claims.isOver18) tag.push('true');\n if (claims.nationality) tag.push(claims.nationality);\n tag.push(claims.verifiedAt);\n if (claims.expiresAt) tag.push(claims.expiresAt);\n return tag;\n}\n\nexport interface EUDISession {\n sessionId: string;\n challenge: string;\n verificationUrl: string;\n requestUri: string;\n expiresAt: number;\n}\n\nexport interface EUDIVerifierConfig {\n url: string;\n clientId: string;\n clientSecret?: string;\n}\n\nexport interface EUDISessionRequest {\n presentation_definition: {\n id: string;\n input_descriptors: Array<{\n id: string;\n constraints: {\n fields: Array<{\n path: string[];\n filter?: {\n type: string;\n const: string;\n };\n }>;\n };\n }>;\n };\n nonce: string;\n state?: string;\n response_uri?: string;\n}\n\nexport interface EUDIVerificationResponse {\n vp_token?: string;\n presentation_submission?: {\n id: string;\n definition_id: string;\n descriptor_map: Array<{\n id: string;\n format: string;\n path: string;\n }>;\n };\n error?: string;\n error_description?: string;\n}\n\nexport const EUDI_PID_SCHEMA = 'eu.europa.ec.eudi.pid.1';\n\nexport const EUDI_CREDENTIAL_FORMATS = {\n sd_jwt: 'vc+sd-jwt',\n mdoc: 'mso_mdoc',\n} as const;\n\nexport type EUDICredentialFormat = (typeof EUDI_CREDENTIAL_FORMATS)[keyof typeof EUDI_CREDENTIAL_FORMATS];\n\nexport interface EUDILegalClaims {\n holderDID: string;\n legalName: string;\n lei: string;\n legalForm?: string;\n registeredAddress?: string;\n vatNumber?: string;\n taxReference?: string;\n verifiedAt: string;\n expiresAt?: string;\n}\n\nexport type EUDILegalTagData = [string, string, string, string, string?, string?, string?, string?, string?, string?];\n\nexport function parseEUDILegalTag(tag: string[]): EUDILegalClaims | null {\n if (tag[0] !== 'eudil' || tag.length < 5) return null;\n \n return {\n holderDID: tag[1],\n legalName: tag[2],\n lei: tag[3],\n legalForm: tag[4] || undefined,\n registeredAddress: tag[5] || undefined,\n vatNumber: tag[6] || undefined,\n taxReference: tag[7] || undefined,\n verifiedAt: tag[8] || new Date().toISOString(),\n expiresAt: tag[9] || undefined,\n };\n}\n\nexport function createEUDILegalTag(claims: EUDILegalClaims): EUDILegalTagData {\n const tag: EUDILegalTagData = [\n 'eudil',\n claims.holderDID,\n claims.legalName,\n claims.lei,\n ];\n if (claims.legalForm) tag.push(claims.legalForm);\n if (claims.registeredAddress) tag.push(claims.registeredAddress);\n if (claims.vatNumber) tag.push(claims.vatNumber);\n if (claims.taxReference) tag.push(claims.taxReference);\n tag.push(claims.verifiedAt);\n if (claims.expiresAt) tag.push(claims.expiresAt);\n return tag;\n}\n\nexport const EUDI_LEGAL_PID_SCHEMA = 'eu.europa.ec.eudi.lpid.1';","/**\n * ZKPassport Root of Trust Types\n * @packageDocumentation\n */\n\nexport type { VerificationStatus } from './trust.js';\n\nexport interface ZKPClaims {\n uniqueIdentifier: string;\n proofSaid?: string;\n firstName?: string;\n nationality?: string;\n isOver18?: boolean;\n isEUCitizen?: boolean;\n documentType?: string;\n verifiedAt: string;\n expiresAt?: string;\n}\n\nexport type ZKPTagData = [string, string, string?, string?, string?, string?];\n\nexport function parseZKPTag(tag: string[]): ZKPClaims | null {\n if (tag[0] !== 'zkp' || tag.length < 2) return null;\n \n return {\n uniqueIdentifier: tag[1],\n proofSaid: tag[2] || undefined,\n firstName: tag[3] || undefined,\n nationality: tag[4] || undefined,\n verifiedAt: new Date().toISOString(),\n expiresAt: tag[5] || undefined,\n };\n}\n\nexport function createZKPTag(claims: ZKPClaims): ZKPTagData {\n return [\n 'zkp',\n claims.uniqueIdentifier,\n claims.proofSaid,\n claims.firstName,\n claims.nationality,\n claims.expiresAt,\n ];\n}\n\nexport interface ZKPVerifierConfig {\n appId: string;\n}\n\nexport type ZKPScope = 'eu-adult' | 'global-adult' | 'eu-citizen';\n\nexport interface ZKPVerificationRequest {\n name: string;\n logo?: string;\n purpose: string;\n scope: ZKPScope;\n mode?: 'fast' | 'secure';\n devMode?: boolean;\n}","/**\n * ZK Membership Root of Trust Types\n * Semaphore-style: only root is published, members prove anonymously\n * @packageDocumentation\n */\n\nexport interface ZKMGroup {\n id: string;\n root: string;\n members: ZKMIdentity[];\n createdAt: string;\n}\n\nexport interface ZKMIdentity {\n /** Private key - never exposed */\n privateKey: string;\n /** Public commitment - can be shared */\n commitment: string;\n}\n\nexport interface ZKMGroupInfo {\n groupId: string;\n root: string;\n adminCommitment?: string;\n createdAt: string;\n expiresAt?: string;\n}\n\nexport interface ZKMMembershipProof {\n groupId: string;\n root: string;\n proof: string;\n nullifier: string;\n scope: string;\n issuedAt: string;\n expiresAt?: string;\n}\n\nexport type ZKMTagData = [string, string, string, string, string?, string?];\n\nexport function parseZKMTag(tag: string[]): ZKMGroupInfo | null {\n if (tag[0] !== 'zkm' || tag.length < 3) return null;\n \n return {\n groupId: tag[1],\n root: tag[2],\n createdAt: tag[3] || new Date().toISOString(),\n expiresAt: tag[4] || undefined,\n };\n}\n\nexport function createZKMGroupTag(group: ZKMGroupInfo): ZKMTagData {\n const tag: ZKMTagData = [\n 'zkm',\n group.groupId,\n group.root,\n group.createdAt,\n ];\n if (group.expiresAt) tag.push(group.expiresAt);\n return tag;\n}\n\nexport interface ZKMVerifierConfig {\n circuitUrl?: string;\n verificationKey?: any;\n}\n\nexport interface ZKMScheme {\n identitySecret: string;\n groupId: string;\n groupRoot: string;\n scope?: string;\n}\n\nexport type ZKMSchemeType = 'membership' | 'anonymous';\n\nexport interface ZKMVerificationRequest {\n identity: ZKMIdentity;\n group: ZKMGroup;\n scope?: string;\n}","/**\n * Unified Root of Trust Verification Utilities\n * @packageDocumentation\n */\n\nimport type { Event } from '../types/nostr.js';\nimport { parseVLEITag } from '../types/vlei.js';\nimport { parseEUDITag } from '../types/eudi.js';\nimport { parseEUDILegalTag } from '../types/eudi.js';\nimport { parseZKPTag } from '../types/zkp.js';\nimport { parseZKMTag } from '../types/zkm.js';\n\n/**\n * Result of any root of trust verification\n */\nexport interface RootOfTrustVerificationResult {\n type: 'vlei' | 'eudi' | 'eudil' | 'zkp' | 'zkm';\n valid: boolean;\n claims?: any;\n error?: string;\n}\n\n/**\n * Verification status for all root of trust types\n */\nexport interface AllVerificationResults {\n vlei?: RootOfTrustVerificationResult;\n eudi?: RootOfTrustVerificationResult;\n eudil?: RootOfTrustVerificationResult;\n zkp?: RootOfTrustVerificationResult;\n zkm?: RootOfTrustVerificationResult;\n}\n\n/**\n * Verify vLEI tag from kind-0 event\n * vLEI verifies organizational identity via KERIA/ACDC credentials\n */\nexport function verifyVLEITag(kind0Event: Event): RootOfTrustVerificationResult {\n const vleiTag = kind0Event.tags?.find((tag) => tag[0] === 'vlei');\n \n if (!vleiTag) {\n return { type: 'vlei', valid: false, error: 'No vlei tag found' };\n }\n\n const claims = parseVLEITag(vleiTag);\n if (!claims) {\n return { type: 'vlei', valid: false, error: 'Invalid vlei tag format' };\n }\n\n try {\n const now = new Date();\n if (claims.expiresAt && new Date(claims.expiresAt) < now) {\n return { type: 'vlei', valid: false, error: 'vLEI credentials expired' };\n }\n\n return { type: 'vlei', valid: true, claims };\n } catch (error) {\n return { type: 'vlei', valid: false, error: `Verification error: ${error}` };\n }\n}\n\n/**\n * Verify EUDI tag from kind-0 event\n * EUDI verifies individual identity with signature linking to Nostr key\n */\nexport async function verifyEUDITag(kind0Event: Event): Promise<RootOfTrustVerificationResult> {\n const eudiTag = kind0Event.tags?.find((tag) => tag[0] === 'eudi');\n \n if (!eudiTag) {\n return { type: 'eudi', valid: false, error: 'No eudi tag found' };\n }\n\n const claims = parseEUDITag(eudiTag);\n if (!claims) {\n return { type: 'eudi', valid: false, error: 'Invalid eudi tag format' };\n }\n\n if (!claims.signature) {\n return { type: 'eudi', valid: false, error: 'No signature in eudi tag' };\n }\n\n try {\n const pubkey = kind0Event.pubkey;\n if (!pubkey) {\n return { type: 'eudi', valid: false, error: 'No pubkey in event' };\n }\n \n const message = `EUDI:${claims.uniqueIdentifier}:${claims.verifiedAt}`;\n \n const signatureBytes = Uint8Array.from(atob(claims.signature), c => c.charCodeAt(0));\n const messageBytes = new TextEncoder().encode(message);\n const pubkeyBytes = hexToBytes(pubkey);\n \n const { secp256k1 } = await import('@noble/curves/secp256k1.js');\n const isValid = secp256k1.verify(signatureBytes, messageBytes, pubkeyBytes);\n \n if (!isValid) {\n return { type: 'eudi', valid: false, error: 'Invalid signature - EUDI not linked to Nostr key' };\n }\n\n const now = new Date();\n if (claims.expiresAt && new Date(claims.expiresAt) < now) {\n return { type: 'eudi', valid: false, error: 'EUDI claims expired' };\n }\n\n return { type: 'eudi', valid: true, claims };\n } catch (error) {\n return { type: 'eudi', valid: false, error: `Verification error: ${error}` };\n }\n}\n\n/**\n * Verify EUDI Legal PID tag from kind-0 event\n * EUDI Legal verifies organizational identity via OpenID4VCI\n */\nexport async function verifyEUDILegalTag(kind0Event: Event): Promise<RootOfTrustVerificationResult> {\n const eudilTag = kind0Event.tags?.find((tag) => tag[0] === 'eudil');\n \n if (!eudilTag) {\n return { type: 'eudil', valid: false, error: 'No eudil tag found' };\n }\n\n const claims = parseEUDILegalTag(eudilTag);\n if (!claims) {\n return { type: 'eudil', valid: false, error: 'Invalid eudil tag format' };\n }\n\n try {\n const now = new Date();\n if (claims.expiresAt && new Date(claims.expiresAt) < now) {\n return { type: 'eudil', valid: false, error: 'EUDI Legal PID expired' };\n }\n\n return { type: 'eudil', valid: true, claims };\n } catch (error) {\n return { type: 'eudil', valid: false, error: `Verification error: ${error}` };\n }\n}\n\n/**\n * Verify ZKPassport tag from kind-0 event\n * ZKP verifies zero-knowledge proofs without revealing identity\n */\nexport function verifyZKPTag(kind0Event: Event): RootOfTrustVerificationResult {\n const zkpTag = kind0Event.tags?.find((tag) => tag[0] === 'zkp');\n \n if (!zkpTag) {\n return { type: 'zkp', valid: false, error: 'No zkp tag found' };\n }\n\n const claims = parseZKPTag(zkpTag);\n if (!claims) {\n return { type: 'zkp', valid: false, error: 'Invalid zkp tag format' };\n }\n\n try {\n const now = new Date();\n if (claims.expiresAt && new Date(claims.expiresAt) < now) {\n return { type: 'zkp', valid: false, error: 'ZKPassport proof expired' };\n }\n\n return { type: 'zkp', valid: true, claims };\n } catch (error) {\n return { type: 'zkp', valid: false, error: `Verification error: ${error}` };\n }\n}\n\n/**\n * Verify ZK Membership tag from kind-0 event\n * ZKM proves group membership without revealing identity\n */\nexport function verifyZKMTag(kind0Event: Event): RootOfTrustVerificationResult {\n const zkmTag = kind0Event.tags?.find((tag) => tag[0] === 'zkm');\n \n if (!zkmTag) {\n return { type: 'zkm', valid: false, error: 'No zkm tag found' };\n }\n\n const claims = parseZKMTag(zkmTag);\n if (!claims) {\n return { type: 'zkm', valid: false, error: 'Invalid zkm tag format' };\n }\n\n try {\n const now = new Date();\n if (claims.expiresAt && new Date(claims.expiresAt) < now) {\n return { type: 'zkm', valid: false, error: 'ZK Membership proof expired' };\n }\n\n return { type: 'zkm', valid: true, claims };\n } catch (error) {\n return { type: 'zkm', valid: false, error: `Verification error: ${error}` };\n }\n}\n\n/**\n * Verify all root of trust tags in a kind-0 event\n */\nexport async function verifyAllRootOfTrusts(kind0Event: Event): Promise<AllVerificationResults> {\n const [vleiResult, eudiResult, eudilResult, zkpResult, zkmResult] = await Promise.all([\n Promise.resolve(verifyVLEITag(kind0Event)),\n verifyEUDITag(kind0Event),\n verifyEUDILegalTag(kind0Event),\n Promise.resolve(verifyZKPTag(kind0Event)),\n Promise.resolve(verifyZKMTag(kind0Event)),\n ]);\n\n return {\n vlei: vleiResult.valid ? vleiResult : undefined,\n eudi: eudiResult.valid ? eudiResult : undefined,\n eudil: eudilResult.valid ? eudilResult : undefined,\n zkp: zkpResult.valid ? zkpResult : undefined,\n zkm: zkmResult.valid ? zkmResult : undefined,\n };\n}\n\n/**\n * Check if any root of trust is verified on a profile\n */\nexport async function hasAnyVerifiedRootOfTrust(kind0Event: Event): Promise<boolean> {\n const results = await verifyAllRootOfTrusts(kind0Event);\n return !!(results.vlei || results.eudi || results.eudil || results.zkp || results.zkm);\n}\n\n/**\n * Get a summary of verification status\n */\nexport async function getVerificationSummary(kind0Event: Event): Promise<{\n hasAnyTrust: boolean;\n individualVerified: boolean;\n organizationVerified: boolean;\n membershipVerified: boolean;\n details: string[];\n}> {\n const results = await verifyAllRootOfTrusts(kind0Event);\n const details: string[] = [];\n \n if (results.vlei) details.push('vLEI verified');\n if (results.eudil) details.push('EUDI Legal verified');\n if (results.eudi) details.push('EUDI verified');\n if (results.zkp) details.push('ZKPassport verified');\n if (results.zkm) details.push('ZK Membership verified');\n\n return {\n hasAnyTrust: details.length > 0,\n individualVerified: !!(results.eudi || results.zkp),\n organizationVerified: !!(results.vlei || results.eudil),\n membershipVerified: !!results.zkm,\n details,\n };\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);\n }\n return bytes;\n}","/**\n * DID:nostr offline-first document generation\n * @packageDocumentation\n */\n\nimport type {\n DidNostrDocument,\n DidNostrVerificationMethod,\n DidNostrProfile,\n} from '../types/auth.js';\n\nconst DID_CONTEXT = [\n 'https://w3id.org/did',\n 'https://w3id.org/nostr/context',\n];\n\nconst MULTICODEC_SECP256K1_COMPRESSED = new Uint8Array([0xe7, 0x01]);\nconst MULTIBASE_BASE16_LOWER_PREFIX = 'f';\n\n/**\n * Generate a did:nostr identifier from a hex pubkey\n */\nexport function pubkeyToDid(pubkey: string): string {\n return `did:nostr:${pubkey.toLowerCase()}`;\n}\n\n/**\n * Extract the hex pubkey from a did:nostr identifier\n */\nexport function didToPubkey(did: string): string {\n if (!did.startsWith('did:nostr:')) {\n throw new Error(`Invalid did:nostr identifier: ${did}`);\n }\n return did.slice(10);\n}\n\n/**\n * Convert a hex pubkey to a Multikey publicKeyMultibase value\n * per the did:nostr spec: prepend 0x02 (even y), then multicodec varint, then multibase base16-lower\n */\nexport function pubkeyToMultikey(pubkey: string): string {\n const pubkeyBytes = hexToBytes(pubkey);\n if (pubkeyBytes.length !== 32) {\n throw new Error('Invalid pubkey length: expected 32 bytes (x-only secp256k1)');\n }\n\n const compressed = new Uint8Array(33);\n compressed[0] = 0x02;\n compressed.set(pubkeyBytes, 1);\n\n const multicodec = new Uint8Array(MULTICODEC_SECP256K1_COMPRESSED.length + compressed.length);\n multicodec.set(MULTICODEC_SECP256K1_COMPRESSED, 0);\n multicodec.set(compressed, MULTICODEC_SECP256K1_COMPRESSED.length);\n\n return MULTIBASE_BASE16_LOWER_PREFIX + bytesToHex(multicodec);\n}\n\n/**\n * Generate a minimal DID:nostr document from a pubkey alone (offline, no network)\n */\nexport function generateMinimalDidDocument(pubkey: string): DidNostrDocument {\n const did = pubkeyToDid(pubkey);\n const publicKeyMultibase = pubkeyToMultikey(pubkey);\n\n const verificationMethod: DidNostrVerificationMethod = {\n id: `${did}#key1`,\n type: 'Multikey',\n controller: did,\n publicKeyMultibase,\n };\n\n return {\n '@context': DID_CONTEXT,\n id: did,\n type: 'DIDNostr',\n verificationMethod: [verificationMethod],\n authentication: ['#key1'],\n assertionMethod: ['#key1'],\n };\n}\n\n/**\n * Generate an enhanced DID:nostr document with relay services\n */\nexport function generateEnhancedDidDocument(\n pubkey: string,\n options: {\n relays?: string[];\n alsoKnownAs?: string[];\n profile?: DidNostrProfile;\n follows?: string[];\n } = {}\n): DidNostrDocument {\n const doc = generateMinimalDidDocument(pubkey);\n\n if (options.alsoKnownAs && options.alsoKnownAs.length > 0) {\n doc.alsoKnownAs = options.alsoKnownAs;\n }\n\n if (options.relays && options.relays.length > 0) {\n doc.service = options.relays.map((relay, i) => ({\n id: `${doc.id}#relay${i + 1}`,\n type: 'Relay',\n serviceEndpoint: relay.endsWith('/') ? relay : `${relay}/`,\n }));\n }\n\n if (options.profile) {\n doc.profile = options.profile;\n }\n\n if (options.follows && options.follows.length > 0) {\n doc.follows = options.follows;\n }\n\n return doc;\n}\n\n/**\n * Resolve a did:nostr identifier to a DID document\n * This is offline-first — generates the minimal document from the pubkey alone\n */\nexport function resolveDidNostr(did: string): DidNostrDocument {\n const pubkey = didToPubkey(did);\n return generateMinimalDidDocument(pubkey);\n}\n\n/**\n * Validate a did:nostr identifier\n */\nexport function isValidDidNostr(did: string): boolean {\n if (!did.startsWith('did:nostr:')) return false;\n const pubkey = did.slice(10);\n return /^[a-f0-9]{64}$/.test(pubkey);\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = parseInt(hex.slice(i, i + 2), 16);\n }\n return bytes;\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n}\n","/**\n * SIOP v2 Self-Issued OpenID Provider implementation\n * Generates self-issued ID Tokens using did:nostr as the subject syntax type\n * Spec: https://openid.net/specs/openid-connect-self-issued-v2-1_0.html\n * @packageDocumentation\n */\n\nimport { secp256k1 } from '@noble/curves/secp256k1.js';\nimport { sha256 as nobleSha256 } from '@noble/hashes/sha2.js';\nimport { pubkeyToDid } from './did-nostr.js';\nimport type { SiopConfig, SiopClientMetadata } from '../types/auth.js';\n\nconst DEFAULT_ALG = 'ES256K';\n\nfunction getDefaultIssuer(): string {\n if (typeof window !== 'undefined' && window.location.origin) {\n return window.location.origin;\n }\n return 'http://localhost';\n}\n\n/**\n * Base64url encode without padding\n */\nfunction base64urlEncode(data: Uint8Array): string {\n let binary = '';\n for (let i = 0; i < data.length; i++) {\n binary += String.fromCharCode(data[i]);\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\n/**\n * Base64url decode\n */\nfunction base64urlDecode(encoded: string): Uint8Array {\n let base64 = encoded.replace(/-/g, '+').replace(/_/g, '/');\n while (base64.length % 4) {\n base64 += '=';\n }\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n\n/**\n * Build a SIOP v2 authorization request URL\n * Used by RPs to invoke the Self-Issued OP\n */\nexport function buildSiopAuthorizationUrl(config: {\n clientId: string;\n redirectUri: string;\n nonce: string;\n authorizationEndpoint?: string;\n scope?: string;\n idTokenType?: string;\n clientMetadata?: SiopClientMetadata;\n requestUri?: string;\n}): string {\n const endpoint = config.authorizationEndpoint || 'siopv2://';\n const params = new URLSearchParams();\n\n params.set('response_type', 'id_token');\n params.set('client_id', config.clientId);\n params.set('redirect_uri', config.redirectUri);\n params.set('scope', config.scope || 'openid');\n params.set('nonce', config.nonce);\n\n if (config.idTokenType) {\n params.set('id_token_type', config.idTokenType);\n }\n\n if (config.clientMetadata) {\n params.set('client_metadata', JSON.stringify(config.clientMetadata));\n }\n\n if (config.requestUri) {\n params.set('request_uri', config.requestUri);\n }\n\n return `${endpoint}?${params.toString()}`;\n}\n\n/**\n * Parse a SIOP v2 authorization request URL\n * Used by the Self-Issued OP to extract the RP's request parameters\n */\nexport function parseSiopAuthorizationRequest(url: string): SiopConfig & {\n clientId: string;\n redirectUri: string;\n} {\n const parsed = new URL(url);\n const params = parsed.searchParams;\n\n const config: SiopConfig & { clientId: string; redirectUri: string } = {\n nonce: params.get('nonce') || '',\n clientId: params.get('client_id') || '',\n redirectUri: params.get('redirect_uri') || '',\n };\n\n const scope = params.get('scope');\n if (scope) {\n config.claims = { scope };\n }\n\n const idTokenType = params.get('id_token_type');\n if (idTokenType === 'subject_signed_id_token' || idTokenType === 'attester_signed_id_token') {\n config.idTokenType = idTokenType;\n }\n\n const clientMetadata = params.get('client_metadata');\n if (clientMetadata) {\n try {\n config.clientMetadata = JSON.parse(clientMetadata);\n } catch {\n // Ignore malformed client metadata\n }\n }\n\n return config;\n}\n\n/**\n * Generate a SIOP v2 Self-Issued ID Token\n * Signs with ES256K using the user's Nostr secp256k1 private key\n * iss = sub = did:nostr:<hex_pubkey>\n *\n * Note: Uses @noble/secp256k1 directly because Web Crypto (which jose relies on)\n * does not support the P-256K (secp256k1) curve in most environments.\n */\nexport async function generateSiopIdToken(\n config: SiopConfig & { secretKey: Uint8Array },\n): Promise<string> {\n const { secretKey, nonce, clientId, redirectUri, idTokenType, claims, clientMetadata } = config;\n\n if (!nonce) {\n throw new Error('nonce is required for SIOP v2 ID Token');\n }\n\n const publicKey = secp256k1.getPublicKey(secretKey);\n const pubkeyHex = bytesToHex(publicKey.slice(1));\n const did = pubkeyToDid(pubkeyHex);\n\n const aud = clientId || redirectUri || getDefaultIssuer();\n const now = Math.floor(Date.now() / 1000);\n const expiresIn = 3600;\n\n const payload: Record<string, unknown> = {\n iss: did,\n sub: did,\n aud,\n iat: now,\n exp: now + expiresIn,\n nonce,\n };\n\n if (idTokenType) {\n payload.id_token_type = idTokenType;\n }\n\n if (clientMetadata) {\n payload.client_metadata = clientMetadata;\n }\n\n if (claims) {\n Object.assign(payload, claims);\n }\n\n const header = {\n alg: DEFAULT_ALG,\n typ: 'JWT',\n kid: `${did}#key1`,\n };\n\n const headerEncoded = base64urlEncode(new TextEncoder().encode(JSON.stringify(header)));\n const payloadEncoded = base64urlEncode(new TextEncoder().encode(JSON.stringify(payload)));\n const signingInput = `${headerEncoded}.${payloadEncoded}`;\n\n const messageHash = nobleSha256(new TextEncoder().encode(signingInput));\n const signature = secp256k1.sign(messageHash, secretKey);\n\n const sigBytes = signature.toBytes();\n const signatureEncoded = base64urlEncode(sigBytes);\n\n return `${signingInput}.${signatureEncoded}`;\n}\n\n/**\n * Verify a SIOP v2 Self-Issued ID Token\n * Validates signature using the pubkey from the did:nostr sub claim\n */\nexport async function verifySiopIdToken(token: string): Promise<{\n valid: boolean;\n payload: Record<string, unknown>;\n error?: string;\n}> {\n try {\n const parts = token.split('.');\n if (parts.length !== 3) {\n return { valid: false, payload: {}, error: 'Invalid JWT format' };\n }\n\n const [headerEncoded, payloadEncoded, signatureEncoded] = parts;\n\n const header = JSON.parse(new TextDecoder().decode(base64urlDecode(headerEncoded)));\n const payload = JSON.parse(new TextDecoder().decode(base64urlDecode(payloadEncoded)));\n\n if (header.alg !== DEFAULT_ALG) {\n return { valid: false, payload, error: `Unsupported algorithm: ${header.alg}` };\n }\n\n const sub = payload.sub as string;\n if (!sub || !sub.startsWith('did:nostr:')) {\n return { valid: false, payload, error: 'Invalid sub claim: must be did:nostr:<pubkey>' };\n }\n\n if (payload.iss !== payload.sub) {\n return { valid: false, payload, error: 'iss must equal sub for Self-Issued ID Token' };\n }\n\n const pubkeyHex = sub.slice(10);\n const pubkeyXOnly = hexToBytes(pubkeyHex);\n\n const signingInput = `${headerEncoded}.${payloadEncoded}`;\n const messageHash = nobleSha256(new TextEncoder().encode(signingInput));\n const signatureBytes = base64urlDecode(signatureEncoded);\n\n let isValid = false;\n for (const prefix of [0x02, 0x03]) {\n const pubkeyBytes = new Uint8Array(33);\n pubkeyBytes[0] = prefix;\n pubkeyBytes.set(pubkeyXOnly, 1);\n if (secp256k1.verify(signatureBytes, messageHash, pubkeyBytes)) {\n isValid = true;\n break;\n }\n }\n\n if (!isValid) {\n return { valid: false, payload, error: 'Invalid signature' };\n }\n\n const now = Math.floor(Date.now() / 1000);\n if (typeof payload.exp === 'number' && now > payload.exp) {\n return { valid: false, payload, error: 'Token expired' };\n }\n\n if (typeof payload.iat === 'number' && now < payload.iat - 300) {\n return { valid: false, payload, error: 'Token not yet valid' };\n }\n\n return { valid: true, payload };\n } catch (e) {\n return {\n valid: false,\n payload: {},\n error: e instanceof Error ? e.message : 'Unknown error',\n };\n }\n}\n\n/**\n * Generate a SIOP v2 authorization response (redirect back to RP)\n */\nexport function buildSiopAuthorizationResponse(\n redirectUri: string,\n idToken: string,\n state?: string,\n): string {\n const params = new URLSearchParams();\n params.set('id_token', idToken);\n if (state) {\n params.set('state', state);\n }\n return `${redirectUri}#${params.toString()}`;\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < hex.length; i += 2) {\n bytes[i / 2] = parseInt(hex.slice(i, i + 2), 16);\n }\n return bytes;\n}\n","/**\n * NIP-42 client authentication protocol\n * Handles WebSocket challenge/response with Nostr relays\n * Spec: https://github.com/nostr-protocol/nips/blob/master/42.md\n * @packageDocumentation\n */\n\nimport { finalizeEvent } from 'applesauce-core/helpers';\nimport type { Event as NostrEvent } from '../utils/types.js';\nimport type { Nip42AuthOptions, Nip42AuthResult } from '../types/auth.js';\n\nconst DEFAULT_TIMEOUT_MS = 30000;\nconst AUTH_EVENT_KIND = 22242;\n\n/**\n * Normalize a relay URL per NIP-42 conventions\n */\nexport function normalizeRelayUrl(url: string): string {\n let normalized = url.trim().toLowerCase();\n normalized = normalized.replace(/\\/+$/, '');\n if (!normalized.startsWith('ws://') && !normalized.startsWith('wss://')) {\n normalized = `wss://${normalized}`;\n }\n return normalized;\n}\n\n/**\n * Build a NIP-42 AUTH event (kind 22242)\n */\nexport async function buildAuthEvent(\n challenge: string,\n relayUrl: string,\n secretKey: Uint8Array,\n jwt?: string,\n): Promise<NostrEvent> {\n const normalizedRelayUrl = normalizeRelayUrl(relayUrl);\n const now = Math.floor(Date.now() / 1000);\n\n const tags: string[][] = [\n ['challenge', challenge],\n ['relay', normalizedRelayUrl],\n ];\n\n if (jwt) {\n tags.push(['auth_token', jwt]);\n }\n\n const eventToSign = {\n kind: AUTH_EVENT_KIND,\n content: '',\n created_at: now,\n tags,\n };\n\n return finalizeEvent(eventToSign, secretKey);\n}\n\n/**\n * Authenticate to a Nostr relay using NIP-42\n * Full WebSocket handshake: connect → receive challenge → sign → send → await OK\n */\nexport async function authenticateToRelay(\n options: Nip42AuthOptions & { secretKey: Uint8Array },\n): Promise<Nip42AuthResult> {\n const { relayUrl, secretKey, jwt, timeoutMs = DEFAULT_TIMEOUT_MS } = options;\n const normalizedUrl = normalizeRelayUrl(relayUrl);\n\n return new Promise((resolve, reject) => {\n let ws: WebSocket;\n let settled = false;\n\n const timeout = setTimeout(() => {\n if (!settled) {\n settled = true;\n ws?.close();\n reject(new Error(`NIP-42 authentication timed out after ${timeoutMs}ms`));\n }\n }, timeoutMs);\n\n try {\n ws = new WebSocket(normalizedUrl);\n } catch (e) {\n clearTimeout(timeout);\n reject(new Error(`Failed to connect to relay: ${e instanceof Error ? e.message : String(e)}`));\n return;\n }\n\n ws.onopen = () => {\n // Connection established, wait for AUTH challenge\n };\n\n ws.onerror = (error) => {\n if (!settled) {\n settled = true;\n clearTimeout(timeout);\n reject(new Error('WebSocket connection error'));\n }\n };\n\n ws.onclose = (event) => {\n if (!settled) {\n settled = true;\n clearTimeout(timeout);\n reject(new Error(`WebSocket closed: ${event.code} ${event.reason}`));\n }\n };\n\n ws.onmessage = async (event: MessageEvent) => {\n try {\n const data = JSON.parse(event.data);\n\n if (!Array.isArray(data)) return;\n\n if (data[0] === 'AUTH' && data[1] && typeof data[1] === 'string') {\n const challenge = data[1] as string;\n\n const authEvent = await buildAuthEvent(challenge, relayUrl, secretKey, jwt);\n\n ws.send(JSON.stringify(['AUTH', authEvent]));\n }\n\n if (data[0] === 'OK' && data[1] && typeof data[1] === 'string') {\n const eventId = data[1];\n const success = data[2] === true;\n const message = data[3] || '';\n\n if (success) {\n if (!settled) {\n settled = true;\n clearTimeout(timeout);\n resolve({\n success: true,\n challenge: '',\n pubkey: '',\n websocket: ws,\n });\n }\n } else {\n if (!settled) {\n settled = true;\n clearTimeout(timeout);\n ws.close();\n reject(new Error(`Relay rejected AUTH event: ${message}`));\n }\n }\n }\n } catch {\n // Ignore non-JSON messages\n }\n };\n });\n}\n\n/**\n * Wait for AUTH challenge from relay\n * Returns the challenge string\n */\nexport function waitForAuthChallenge(\n websocket: WebSocket,\n timeoutMs = DEFAULT_TIMEOUT_MS,\n): Promise<string> {\n return new Promise((resolve, reject) => {\n let settled = false;\n\n const timeout = setTimeout(() => {\n if (!settled) {\n settled = true;\n reject(new Error('Timed out waiting for AUTH challenge'));\n }\n }, timeoutMs);\n\n const handler = (event: MessageEvent) => {\n try {\n const data = JSON.parse(event.data);\n if (Array.isArray(data) && data[0] === 'AUTH' && data[1]) {\n if (!settled) {\n settled = true;\n clearTimeout(timeout);\n websocket.removeEventListener('message', handler);\n resolve(data[1] as string);\n }\n }\n } catch {\n // Ignore non-JSON messages\n }\n };\n\n websocket.addEventListener('message', handler);\n });\n}\n\n/**\n * Send AUTH event to relay and wait for OK response\n */\nexport async function sendAuthEvent(\n websocket: WebSocket,\n authEvent: NostrEvent,\n timeoutMs = DEFAULT_TIMEOUT_MS,\n): Promise<boolean> {\n return new Promise((resolve, reject) => {\n let settled = false;\n\n const timeout = setTimeout(() => {\n if (!settled) {\n settled = true;\n reject(new Error('Timed out waiting for AUTH OK response'));\n }\n }, timeoutMs);\n\n websocket.send(JSON.stringify(['AUTH', authEvent]));\n\n const handler = (event: MessageEvent) => {\n try {\n const data = JSON.parse(event.data);\n if (Array.isArray(data) && data[0] === 'OK' && data[1] === authEvent.id) {\n if (!settled) {\n settled = true;\n clearTimeout(timeout);\n websocket.removeEventListener('message', handler);\n resolve(data[2] === true);\n }\n }\n } catch {\n // Ignore non-JSON messages\n }\n };\n\n websocket.addEventListener('message', handler);\n });\n}\n","/**\n * OAuth 2.0 authentication + identity linking + encrypted refresh token SSO\n * Supports built-in provider presets (Google, GitHub) and custom providers\n * @packageDocumentation\n */\n\nimport { deriveAesGcmKey, aesGcmEncrypt, aesGcmDecrypt } from '../utils/crypto-utils.js';\nimport type {\n OAuthProviderPreset,\n OAuthAuthResult,\n EncryptedOAuthBundle,\n} from '../types/auth.js';\n\n/**\n * Built-in OAuth provider presets\n */\nexport const BUILTIN_PROVIDERS: Record<string, OAuthProviderPreset> = {\n google: {\n authorizationUrl: 'https://accounts.google.com/o/oauth2/v2/auth',\n tokenUrl: 'https://oauth2.googleapis.com/token',\n defaultScope: 'openid profile email',\n },\n github: {\n authorizationUrl: 'https://github.com/login/oauth/authorize',\n tokenUrl: 'https://github.com/login/oauth/access_token',\n defaultScope: 'user:email',\n },\n apple: {\n authorizationUrl: 'https://appleid.apple.com/auth/authorize',\n tokenUrl: 'https://appleid.apple.com/auth/token',\n defaultScope: 'openid name email',\n },\n microsoft: {\n authorizationUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',\n tokenUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',\n defaultScope: 'openid profile email',\n },\n facebook: {\n authorizationUrl: 'https://www.facebook.com/v18.0/dialog/oauth',\n tokenUrl: 'https://graph.facebook.com/v18.0/oauth/access_token',\n defaultScope: 'openid email public_profile',\n }\n};\n\n/**\n * Generate PKCE code verifier and challenge\n */\nexport function generatePKCE(): { codeVerifier: string; codeChallenge: string } {\n const cryptoObj = typeof window !== 'undefined' ? window.crypto : globalThis.crypto;\n const verifierBytes = cryptoObj.getRandomValues(new Uint8Array(32));\n const codeVerifier = base64urlEncode(verifierBytes);\n\n const encoder = new TextEncoder();\n return cryptoObj.subtle\n .digest('SHA-256', encoder.encode(codeVerifier))\n .then((hash) => ({\n codeVerifier,\n codeChallenge: base64urlEncode(new Uint8Array(hash)),\n })) as unknown as { codeVerifier: string; codeChallenge: string };\n}\n\n/**\n * Build OAuth authorization URL with PKCE\n */\nexport function buildAuthorizationUrl(config: {\n authorizationUrl: string;\n clientId: string;\n redirectUri: string;\n scope: string;\n codeChallenge: string;\n state?: string;\n}): string {\n const params = new URLSearchParams();\n params.set('response_type', 'code');\n params.set('client_id', config.clientId);\n params.set('redirect_uri', config.redirectUri);\n params.set('scope', config.scope);\n params.set('code_challenge', config.codeChallenge);\n params.set('code_challenge_method', 'S256');\n\n if (config.state) {\n params.set('state', config.state);\n }\n\n return `${config.authorizationUrl}?${params.toString()}`;\n}\n\n/**\n * Exchange authorization code for tokens\n */\nexport async function exchangeCodeForTokens(config: {\n tokenUrl: string;\n clientId: string;\n redirectUri: string;\n code: string;\n codeVerifier: string;\n}): Promise<{\n accessToken: string;\n refreshToken?: string;\n expiresIn: number;\n scope: string;\n idToken?: string;\n}> {\n const params = new URLSearchParams();\n params.set('grant_type', 'authorization_code');\n params.set('client_id', config.clientId);\n params.set('redirect_uri', config.redirectUri);\n params.set('code', config.code);\n params.set('code_verifier', config.codeVerifier);\n\n const response = await fetch(config.tokenUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: params.toString(),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(`Token exchange failed: ${response.status} ${errorText}`);\n }\n\n const data = await response.json();\n\n return {\n accessToken: data.access_token,\n refreshToken: data.refresh_token,\n expiresIn: data.expires_in || 3600,\n scope: data.scope || '',\n idToken: data.id_token,\n };\n}\n\n/**\n * Decode a JWT payload (no signature verification)\n */\nexport function decodeJwtPayload(token: string): Record<string, unknown> {\n const parts = token.split('.');\n if (parts.length < 2) {\n throw new Error('Invalid JWT format');\n }\n const payload = parts[1];\n const decoded = atob(payload.replace(/-/g, '+').replace(/_/g, '/'));\n return JSON.parse(decoded);\n}\n\n/**\n * Extract pubkey from JWT claims\n */\nexport function getPubkeyFromJwt(token: string, claimName = 'nostr_pubkey'): string {\n const payload = decodeJwtPayload(token);\n const pubkey = payload[claimName] as string | undefined;\n if (!pubkey) {\n throw new Error(`Nostr pubkey claim '${claimName}' not found in JWT`);\n }\n return pubkey;\n}\n\n/**\n * Encrypt a refresh token with AES-GCM using a PRF-derived key\n */\nexport async function encryptRefreshToken(\n refreshToken: string,\n secretKey: Uint8Array,\n): Promise<EncryptedOAuthBundle> {\n const cryptoObj = typeof window !== 'undefined' ? window.crypto : globalThis.crypto;\n const iv = cryptoObj.getRandomValues(new Uint8Array(12));\n const aesKey = await deriveAesGcmKey(secretKey, new Uint8Array(16));\n const plaintext = new TextEncoder().encode(refreshToken);\n const { ciphertext, tag } = await aesGcmEncrypt(aesKey, iv, plaintext);\n\n return {\n ciphertext: btoa(String.fromCharCode(...ciphertext)),\n iv: btoa(String.fromCharCode(...iv)),\n tag: btoa(String.fromCharCode(...tag)),\n };\n}\n\n/**\n * Decrypt a refresh token with AES-GCM using a PRF-derived key\n */\nexport async function decryptRefreshToken(\n bundle: EncryptedOAuthBundle,\n secretKey: Uint8Array,\n): Promise<string> {\n const ciphertext = Uint8Array.from(atob(bundle.ciphertext), (c) => c.charCodeAt(0));\n const iv = Uint8Array.from(atob(bundle.iv), (c) => c.charCodeAt(0));\n const tag = Uint8Array.from(atob(bundle.tag), (c) => c.charCodeAt(0));\n\n const aesKey = await deriveAesGcmKey(secretKey, new Uint8Array(16));\n const plaintext = await aesGcmDecrypt(aesKey, iv, ciphertext, tag);\n\n return new TextDecoder().decode(plaintext);\n}\n\n/**\n * Refresh an access token using a stored refresh token\n */\nexport async function refreshAccessToken(config: {\n tokenUrl: string;\n clientId: string;\n refreshToken: string;\n}): Promise<{\n accessToken: string;\n refreshToken?: string;\n expiresIn: number;\n scope: string;\n}> {\n const params = new URLSearchParams();\n params.set('grant_type', 'refresh_token');\n params.set('client_id', config.clientId);\n params.set('refresh_token', config.refreshToken);\n\n const response = await fetch(config.tokenUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: params.toString(),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(`Token refresh failed: ${response.status} ${errorText}`);\n }\n\n const data = await response.json();\n\n return {\n accessToken: data.access_token,\n refreshToken: data.refresh_token,\n expiresIn: data.expires_in || 3600,\n scope: data.scope || '',\n };\n}\n\n/**\n * Initiate OAuth flow — redirects to provider's authorization page\n */\nexport function initiateOAuthFlow(config: {\n provider: string;\n clientId: string;\n redirectUri: string;\n scope: string;\n authorizationUrl?: string;\n state?: string;\n}): Promise<{ codeVerifier: string; state: string }> {\n return new Promise(async (resolve, reject) => {\n try {\n const preset = BUILTIN_PROVIDERS[config.provider];\n const authorizationUrl = config.authorizationUrl || preset?.authorizationUrl;\n\n if (!authorizationUrl) {\n reject(new Error(`Unknown provider '${config.provider}' and no authorizationUrl provided`));\n return;\n }\n\n const { codeVerifier, codeChallenge } = await generatePKCE();\n const state = config.state || generateRandomState();\n\n const url = buildAuthorizationUrl({\n authorizationUrl,\n clientId: config.clientId,\n redirectUri: config.redirectUri,\n scope: config.scope,\n codeChallenge,\n state,\n });\n\n // Store PKCE state for callback handling\n const pkceState = {\n codeVerifier,\n state,\n provider: config.provider,\n clientId: config.clientId,\n redirectUri: config.redirectUri,\n scope: config.scope,\n tokenUrl: preset?.tokenUrl,\n createdAt: Date.now(),\n };\n\n sessionStorage.setItem(\n `oauth_pkce_${state}`,\n JSON.stringify(pkceState),\n );\n\n window.location.href = url;\n resolve({ codeVerifier, state });\n } catch (e) {\n reject(e);\n }\n });\n}\n\n/**\n * Handle OAuth callback — extract code, exchange for tokens\n */\nexport async function handleOAuthCallback(\n currentUrl?: string,\n): Promise<{\n code: string;\n state: string;\n pkceState: {\n codeVerifier: string;\n provider: string;\n clientId: string;\n redirectUri: string;\n scope: string;\n tokenUrl?: string;\n };\n}> {\n const url = currentUrl || window.location.href;\n const parsed = new URL(url);\n const code = parsed.searchParams.get('code');\n const state = parsed.searchParams.get('state');\n\n if (!code || !state) {\n throw new Error('Missing code or state parameter in callback URL');\n }\n\n const stored = sessionStorage.getItem(`oauth_pkce_${state}`);\n if (!stored) {\n throw new Error('No PKCE state found. OAuth flow may have been initiated in a different session.');\n }\n\n const pkceState = JSON.parse(stored);\n sessionStorage.removeItem(`oauth_pkce_${state}`);\n\n return { code, state, pkceState };\n}\n\n/**\n * Complete OAuth flow — exchange code for tokens and return result\n */\nexport async function completeOAuthFlow(\n currentUrl?: string,\n): Promise<OAuthAuthResult> {\n const { code, pkceState } = await handleOAuthCallback(currentUrl);\n\n const tokenUrl = pkceState.tokenUrl || BUILTIN_PROVIDERS[pkceState.provider]?.tokenUrl;\n if (!tokenUrl) {\n throw new Error(`No token URL available for provider '${pkceState.provider}'`);\n }\n\n const tokens = await exchangeCodeForTokens({\n tokenUrl,\n clientId: pkceState.clientId,\n redirectUri: pkceState.redirectUri,\n code,\n codeVerifier: pkceState.codeVerifier,\n });\n\n let sub = '';\n if (tokens.idToken) {\n const payload = decodeJwtPayload(tokens.idToken);\n sub = (payload.sub as string) || '';\n }\n\n return {\n provider: pkceState.provider,\n accessToken: tokens.accessToken,\n refreshToken: tokens.refreshToken,\n expiresAt: Date.now() + tokens.expiresIn * 1000,\n sub,\n scope: tokens.scope || pkceState.scope,\n linked: false,\n };\n}\n\nfunction base64urlEncode(data: Uint8Array): string {\n let binary = '';\n for (let i = 0; i < data.length; i++) {\n binary += String.fromCharCode(data[i]);\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\nfunction generateRandomState(): string {\n const cryptoObj = typeof window !== 'undefined' ? window.crypto : globalThis.crypto;\n const bytes = cryptoObj.getRandomValues(new Uint8Array(16));\n return base64urlEncode(bytes);\n}\n","import { KeyManager, type KeyInfo, type Event, type PasskeyCreationOptions, type SignOptions, type KeyOptions, type MultisigSetupOptions, type MultisigSetupResult, type PeerInfo, type MultisigConfig, type MultisigImportOptions, type CreateGroupOptions, type GroupMessage, type ShareCredentialMessage } from '../utils/index.js';\nimport type {\n AuthServiceConfig,\n Nip42AuthOptions,\n Nip42AuthResult,\n OAuthProviderConfig,\n OAuthAuthResult,\n LinkedProviderStatus,\n TrustProviderEntry,\n SiopConfig,\n SiopAuthResult,\n} from '../types/auth.js';\nimport { RelayService } from './relay.service.js';\nimport { GroupManager } from '../utils/group.js';\nimport { generateSiopIdToken } from './siop.js';\nimport { authenticateToRelay as nip42Authenticate } from './nip42.js';\nimport {\n initiateOAuthFlow,\n completeOAuthFlow,\n encryptRefreshToken,\n decryptRefreshToken,\n refreshAccessToken,\n BUILTIN_PROVIDERS,\n} from './oauth.js';\nimport { hexToBytes } from '../utils/utils.js';\nimport { pubkeyToDid } from './did-nostr.js';\n\n/**\n * Service wrapper around KeyManager\n * Handles WebAuthn/Passkey integration with Nostr\n */\nexport class AuthService {\n private manager: KeyManager | null = null;\n private groupManager: GroupManager | null = null;\n private config: AuthServiceConfig;\n\n constructor(config: AuthServiceConfig = {}) {\n this.config = {\n rpId: config.rpId || (typeof window !== 'undefined' ? window.location.hostname.replace(/^www\\./, '') : 'localhost'),\n rpName: config.rpName || this.getDefaultRpName(),\n storageKey: config.storageKey || 'identity',\n cacheTimeoutMs: config.cacheTimeoutMs || 30 * 60 * 1000,\n cacheOnCreation: config.cacheOnCreation !== undefined ? config.cacheOnCreation : true,\n };\n }\n\n private getDefaultRpName(): string {\n if (typeof window === 'undefined') return 'localhost';\n const hostname = window.location.hostname;\n if (hostname.includes('nosskey.app')) return 'nosskey.app';\n return hostname.replace(/^www\\./, '');\n }\n\n /**\n * Initialize the KeyManager instance\n */\n private getManager(): KeyManager {\n if (!this.manager) {\n this.manager = new KeyManager({\n cacheOptions: {\n enabled: true,\n timeoutMs: this.config.cacheTimeoutMs,\n cacheOnCreation: this.config.cacheOnCreation,\n },\n storageOptions: {\n enabled: true,\n storageKey: this.config.storageKey,\n },\n });\n }\n return this.manager;\n }\n\n /**\n * Create a new passkey\n * Uses platform authenticator only (Touch ID, Face ID, Windows Hello)\n */\n async createPasskey(username?: string): Promise<Uint8Array> {\n const manager = this.getManager();\n \n const rpId = this.config.rpId === 'localhost' ? 'localhost' : this.config.rpId;\n const rpName = this.config.rpName;\n \n const trimmedUsername = username?.trim();\n const uniqueUsername = trimmedUsername \n ? trimmedUsername \n : `user-${Date.now()}@example.com`;\n \n const options: PasskeyCreationOptions = {\n rp: {\n id: rpId,\n name: rpName,\n },\n user: {\n name: uniqueUsername,\n displayName: trimmedUsername || 'User',\n },\n authenticatorSelection: {\n authenticatorAttachment: 'platform',\n residentKey: 'preferred',\n userVerification: 'preferred',\n },\n extensions: {\n prf: {},\n },\n };\n \n return await manager.createPasskey(options);\n }\n\n/**\n * Create a new Nostr key from a credential ID\n * Automatically uses password fallback if PRF is not supported\n * @param credentialId Passkey credential ID\n * @param password Password (required if PRF not supported)\n * @param options.username Username for the key\n * @param options.recoveryPassword Password for recovery (enables recovery on new device)\n */\n async createKey(credentialId?: Uint8Array, password?: string, options?: KeyOptions): Promise<KeyInfo> {\n const manager = this.getManager();\n return await manager.createKey(credentialId, password, options);\n }\n\n /**\n * Check if PRF is supported, otherwise password fallback is needed\n */\n async checkPRFSupport(): Promise<boolean> {\n const manager = this.getManager();\n return await manager.checkPRFSupport();\n }\n\n /**\n * Get the current public key\n */\n async getPublicKey(): Promise<string> {\n const manager = this.getManager();\n return await manager.getPublicKey();\n }\n\n /**\n * Sign a Nostr event\n * @param event Event to sign\n * @param options.mode 'individual' for direct signing, 'multisig' for threshold signing. Defaults to multisig if configured.\n */\n async signEvent(event: Event, options?: SignOptions): Promise<Event> {\n const manager = this.getManager();\n return await manager.signEventWithKeyInfo(event, manager.getCurrentKeyInfo()!, options);\n }\n\n /**\n * Get current key info\n */\n getCurrentKeyInfo(): KeyInfo | null {\n const manager = this.getManager();\n return manager.getCurrentKeyInfo();\n }\n\n /**\n * Set current key info\n */\n setCurrentKeyInfo(keyInfo: KeyInfo): void {\n const manager = this.getManager();\n manager.setCurrentKeyInfo(keyInfo);\n }\n\n /**\n * Check if key info exists\n */\n hasKeyInfo(): boolean {\n const manager = this.getManager();\n return manager.hasKeyInfo();\n }\n\n /**\n * Clear stored key info\n */\n clearStoredKeyInfo(): void {\n const manager = this.getManager();\n manager.clearStoredKeyInfo();\n }\n\n/**\n * Check if PRF is supported (legacy alias)\n */\n async isPrfSupported(): Promise<boolean> {\n return this.checkPRFSupport();\n }\n\n /**\n * Add password recovery to an existing PRF key\n * @param password Password for recovery key\n */\n async addPasswordRecovery(password: string): Promise<KeyInfo> {\n const manager = this.getManager();\n return await manager.addPasswordRecovery(password);\n }\n\n /**\n * Activate recovery using password\n * Requires new credential ID from new device\n * @param password Password for recovery key\n * @param newCredentialId New passkey credential ID (required)\n */\n async activateWithPassword(password: string, newCredentialId: Uint8Array): Promise<KeyInfo> {\n const manager = this.getManager();\n return await manager.activateWithPassword(password, newCredentialId);\n }\n\n /**\n * Get recovery data for kind-0\n */\n getRecoveryForKind0(): { recoveryPubkey: string; recoverySalt: string; createdAt?: number; signature?: string } | null {\n const manager = this.getManager();\n return manager.getRecoveryForKind0();\n }\n\n /**\n * Publish recovery data to a kind-0 event on relays\n * Fetches the existing kind-0, preserves all content and tags, and amends the recovery \"r\" tag\n * @param relayService RelayService instance for publishing\n * @param content Optional content to use instead of fetching the existing kind-0\n */\n async publishRecoveryToKind0(\n relayService: RelayService,\n content?: string\n ): Promise<boolean> {\n const manager = this.getManager();\n const pubkey = await manager.getPublicKey();\n const recoveryData = manager.getRecoveryForKind0();\n\n if (!recoveryData) {\n throw new Error('No recovery data configured. Call addPasswordRecovery() first.');\n }\n\n return relayService.publishRecoveryToKind0(\n pubkey,\n recoveryData,\n (event) => manager.signEvent(event),\n content\n );\n }\n\n /**\n * Enable FROSTR multisig on the current identity\n * Derives the secret from the passkey, splits into shares, stores config\n * @param options Threshold, total members, and relay configuration\n */\n async enableMultisig(options: MultisigSetupOptions): Promise<MultisigSetupResult> {\n const manager = this.getManager();\n return await manager.enableMultisig(options);\n }\n\n /**\n * Check if the current identity is multisig-enabled\n */\n isMultisig(): boolean {\n const manager = this.getManager();\n return manager.isMultisigEnabled();\n }\n\n /**\n * Get the full multisig config (for sharing with other devices)\n */\n getMultisigConfig(): MultisigConfig | null {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.multisig) return null;\n return {\n threshold: keyInfo.multisig.threshold,\n totalMembers: keyInfo.multisig.totalMembers,\n relays: keyInfo.multisig.relays,\n groupCredential: keyInfo.multisig.groupCredential,\n shareCredential: '',\n shareIndex: keyInfo.multisig.shareIndex,\n };\n }\n\n /**\n * Get peer status — which other signers are online\n */\n async getPeerStatus(): Promise<PeerInfo[]> {\n const manager = this.getManager();\n return await manager.getPeerStatus();\n }\n\n /**\n * Rotate shares — generate a new keyset, invalidating old shares\n * If members and groupManager are provided, new shares are distributed via Welcome messages.\n * Otherwise, returns new share credentials for manual distribution.\n * @param newThreshold New threshold (defaults to current)\n * @param newTotal New total members (defaults to current)\n * @param members Members to redistribute shares to via Welcome messages\n * @param groupManager GroupManager for sending Welcome messages\n * @returns Array of new share credentials (empty if distributed via Welcome)\n */\n async rotateShares(newThreshold?: number, newTotal?: number, members?: any[], groupManager?: any): Promise<string[]> {\n const manager = this.getManager();\n return await manager.rotateShares(newThreshold, newTotal, members, groupManager);\n }\n\n /**\n * Import a FROST share credential into the current identity\n * Used by members who receive a share from the group admin\n * @param options Group credential, share credential, and relay URLs\n */\n async importMultisigShare(options: MultisigImportOptions): Promise<KeyInfo> {\n const manager = this.getManager();\n return await manager.importMultisigShare(options);\n }\n\n /**\n * Get or create the GroupManager instance for Marmot group messaging\n * @param network Network interface (e.g., RelayService or NostrNetworkInterface)\n * @param relays Relay URLs for group communication\n * @param dbName Optional IndexedDB database name (default: 'nosskey')\n */\n getGroupManager(network: any, relays: string[], dbName?: string): GroupManager {\n if (!this.groupManager) {\n this.groupManager = new GroupManager({\n signer: this.getManager(),\n network,\n relays,\n dbName,\n });\n }\n return this.groupManager;\n }\n\n /**\n * Create a new Marmot group and optionally enable multisig for it\n * @param network Network interface\n * @param relays Relay URLs\n * @param name Group name\n * @param options Group creation options\n */\n async createGroup(network: any, relays: string[], name: string, options?: CreateGroupOptions): Promise<any> {\n const gm = this.getGroupManager(network, relays);\n await gm.initialize();\n return gm.createGroup(name, options);\n }\n\n /**\n * Subscribe to group messages\n * @param group The Marmot group instance\n * @param handler Message handler callback\n * @returns Unsubscribe function\n */\n onGroupMessage(group: any, handler: (msg: GroupMessage) => void): () => void {\n const gm = this.getGroupManager(\n (group as any).network,\n group.relays || [],\n );\n return gm.onMessage(handler);\n }\n\n /**\n * Set ZK Membership trust in KeyInfo\n * @param proof ZK Membership proof\n */\n async setMembershipTrust(proof: import('../types/zkm.js').ZKMMembershipProof): Promise<void> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n const updatedKeyInfo: import('../utils').KeyInfo = {\n ...keyInfo,\n membershipTrust: proof,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n }\n\n /**\n * Set ZK Membership group trust in KeyInfo\n * @param group ZKM Group info (Semaphore-style - only root published)\n */\n async setGroupTrust(group: import('../types/zkm.js').ZKMGroupInfo): Promise<void> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n const updatedKeyInfo: import('../utils').KeyInfo = {\n ...keyInfo,\n groupTrust: group,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n }\n\n /**\n * Publish ZK Membership proof to kind-0 profile\n * Can be called manually or automatically after group join\n * @param relayService RelayService instance\n */\n async publishMembershipToProfile(relayService: import('./relay.service.js').RelayService): Promise<boolean> {\n const keyInfo = this.getCurrentKeyInfo();\n const group = keyInfo?.groupTrust;\n if (!group) {\n throw new Error('No group trust set. Call setGroupTrust() first or join a group.');\n }\n\n const pubkey = await this.getPublicKey();\n return relayService.publishZKMGroupToKind0(\n pubkey,\n group,\n (event: Event) => this.signEvent(event)\n );\n }\n\n /**\n * Get membership verification status\n */\n getMembershipTrust(): import('../types/zkm.js').ZKMMembershipProof | undefined {\n return this.getCurrentKeyInfo()?.membershipTrust;\n }\n\n /**\n * Subscribe to group changes (created/joined) to optionally auto-publish ZK membership\n * @param relayService RelayService instance\n * @param zkmService ZKMService for generating proofs\n * @param groupMembers Array of group member secrets\n * @returns Unsubscribe function\n */\n onGroupChange(\n relayService: import('./relay.service.js').RelayService,\n _groupMembers: string[]\n ): () => void {\n const handlers: Set<(event: { type: 'created' | 'joined'; group: any }) => void> = new Set();\n\n const handler = async (_event: { type: 'created' | 'joined'; group: any }) => {\n try {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n console.error('No key info available for ZK membership');\n return;\n }\n\n const _zkmService = new (await import('./zkm.service.js')).ZKMService();\n \n await _zkmService.generateIdentity();\n \n const _group = await _zkmService.createGroup(`group-${Date.now()}`);\n \n const proof = await _zkmService.generateProof();\n \n await this.setGroupTrust(_group);\n await this.setMembershipTrust(proof);\n await this.publishMembershipToProfile(relayService);\n console.log(`ZK Membership group published`);\n } catch (error) {\n console.error('Failed to auto-publish ZK membership:', error);\n }\n };\n\n handlers.add(handler);\n\n const keyInfo = this.getCurrentKeyInfo();\n if (keyInfo?.multisig?.groupCredential) {\n const gm = this.getGroupManager(keyInfo.multisig, keyInfo.multisig.relays || []);\n return gm.onGroupChange(handler);\n }\n\n return () => handlers.delete(handler);\n }\n\n /**\n * Clear membership trust from KeyInfo\n */\n async clearMembershipTrust(): Promise<void> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set.');\n }\n\n const { membershipTrust: _, ...keyInfoWithoutMembership } = keyInfo;\n this.setCurrentKeyInfo(keyInfoWithoutMembership as import('../utils').KeyInfo);\n }\n\n /**\n * Fetch membership tags from a profile\n * @param relayService RelayService instance\n * @param pubkey Public key to fetch from\n */\n async fetchGroupTags(relayService: import('./relay.service.js').RelayService, pubkey: string): Promise<import('../types/zkm.js').ZKMGroupInfo[]> {\n return relayService.fetchZKMGroups(pubkey);\n }\n\n /**\n * Parse a group message to check if it's a share credential\n * @param message The group message to parse\n */\n async parseShareMessage(message: GroupMessage): Promise<ShareCredentialMessage | null> {\n const { parseShareMessage } = await import('../utils/group-coordination.js');\n return parseShareMessage(message);\n }\n\n /**\n * Parse a group message to check if it's a signing request\n * @param message The group message to parse\n */\n async parseSigningRequest(message: GroupMessage): Promise<{ type: 'signing-request'; description: string } | null> {\n const { parseSigningRequest } = await import('../utils/group-coordination.js');\n return parseSigningRequest(message);\n }\n\n // ─── SIOP v2 Methods ─────────────────────────────────────────────\n\n /**\n * Generate a SIOP v2 Self-Issued ID Token\n * Auto-generates on demand — signs with the user's Nostr keypair\n * iss = sub = did:nostr:<hex_pubkey>\n */\n async generateSiopIdToken(config: SiopConfig): Promise<SiopAuthResult> {\n const manager = this.getManager();\n const keyInfo = manager.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n const secretKey = await this.#resolveSecretKey(manager, keyInfo);\n const idToken = await generateSiopIdToken({\n ...config,\n secretKey,\n });\n this.#clearKey(secretKey);\n\n const did = pubkeyToDid(keyInfo.pubkey);\n\n return {\n idToken,\n pubkey: keyInfo.pubkey,\n did,\n };\n }\n\n // ─── NIP-42 Methods ──────────────────────────────────────────────\n\n /**\n * Authenticate to a Nostr relay using NIP-42\n * Auto-generates SIOP ID Token if siop.nonce is provided\n */\n async authenticateToRelay(options: Nip42AuthOptions): Promise<Nip42AuthResult> {\n const manager = this.getManager();\n const keyInfo = manager.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n const secretKey = await this.#resolveSecretKey(manager, keyInfo);\n\n let jwt = options.jwt;\n\n if (options.siop?.nonce && !jwt) {\n const siopResult = await this.generateSiopIdToken({\n nonce: options.siop.nonce,\n clientId: typeof window !== 'undefined' ? window.location.origin : undefined,\n redirectUri: typeof window !== 'undefined' ? `${window.location.origin}/callback` : undefined,\n });\n jwt = siopResult.idToken;\n }\n\n const result = await nip42Authenticate({\n relayUrl: options.relayUrl,\n secretKey,\n jwt,\n timeoutMs: options.timeoutMs,\n });\n\n this.#clearKey(secretKey);\n\n return {\n ...result,\n pubkey: keyInfo.pubkey,\n };\n }\n\n // ─── OAuth 2.0 Methods ───────────────────────────────────────────\n\n /**\n * Authenticate with an OAuth provider (Google, GitHub, etc.)\n * Initiates the OAuth flow — redirects to provider's authorization page\n * On callback, exchanges code for tokens and automatically links the identity\n */\n async authenticateWithProvider(config: OAuthProviderConfig): Promise<OAuthAuthResult> {\n const manager = this.getManager();\n const keyInfo = manager.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n const preset = BUILTIN_PROVIDERS[config.provider];\n const scope = config.scope || preset?.defaultScope || 'openid profile';\n\n const result = await completeOAuthFlow();\n\n const secretKey = await this.#resolveSecretKey(manager, keyInfo);\n\n let encryptedBundle: import('../types/auth.js').EncryptedOAuthBundle | undefined;\n if (result.refreshToken) {\n encryptedBundle = await encryptRefreshToken(result.refreshToken, secretKey);\n }\n\n this.#clearKey(secretKey);\n\n const category = config.category || 'authentication';\n\n const trustEntry: TrustProviderEntry = {\n type: 'oauth',\n category,\n sub: result.sub,\n verifiedAt: Date.now(),\n expiresAt: result.expiresAt,\n scope: result.scope,\n encryptedBundle,\n accessToken: result.accessToken,\n };\n\n const trustProviders = {\n ...(keyInfo.trustProviders || {}),\n [config.provider]: trustEntry,\n };\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n trustProviders,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n\n return {\n ...result,\n linked: true,\n };\n }\n\n /**\n * Initiate OAuth flow (redirects to provider)\n * Call this to start the flow, then handle the callback with completeOAuthCallback\n */\n async initiateProviderAuth(config: OAuthProviderConfig): Promise<void> {\n const preset = BUILTIN_PROVIDERS[config.provider];\n const scope = config.scope || preset?.defaultScope || 'openid profile';\n const authorizationUrl = preset?.authorizationUrl;\n\n if (!authorizationUrl && config.provider !== 'custom') {\n throw new Error(`Unknown provider '${config.provider}'. Provide authorizationUrl or use a built-in provider.`);\n }\n\n await initiateOAuthFlow({\n provider: config.provider,\n clientId: config.clientId,\n redirectUri: config.redirectUri,\n scope,\n authorizationUrl: config.provider === 'custom' ? config.redirectUri : undefined,\n });\n }\n\n /**\n * Complete OAuth flow after callback\n * Exchanges code for tokens and links the identity\n */\n async completeOAuthCallback(config: OAuthProviderConfig): Promise<OAuthAuthResult> {\n const manager = this.getManager();\n const keyInfo = manager.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n const result = await completeOAuthFlow();\n\n const secretKey = await this.#resolveSecretKey(manager, keyInfo);\n\n let encryptedBundle: import('../types/auth.js').EncryptedOAuthBundle | undefined;\n if (result.refreshToken) {\n encryptedBundle = await encryptRefreshToken(result.refreshToken, secretKey);\n }\n\n this.#clearKey(secretKey);\n\n const category = config.category || 'authentication';\n\n const trustEntry: TrustProviderEntry = {\n type: 'oauth',\n category,\n sub: result.sub,\n verifiedAt: Date.now(),\n expiresAt: result.expiresAt,\n scope: result.scope,\n encryptedBundle,\n accessToken: result.accessToken,\n };\n\n const trustProviders = {\n ...(keyInfo.trustProviders || {}),\n [config.provider]: trustEntry,\n };\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n trustProviders,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n\n return {\n ...result,\n linked: true,\n };\n }\n\n /**\n * Link an OAuth identity to the current Nostr key\n * Stores encrypted refresh token for silent re-auth\n */\n async linkProvider(config: OAuthProviderConfig): Promise<void> {\n const manager = this.getManager();\n const keyInfo = manager.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n await this.initiateProviderAuth(config);\n }\n\n /**\n * Unlink a provider from the current Nostr key\n * Works for all provider types: OAuth, EUDI, vLEI, ZKP\n */\n async unlinkProvider(provider: string): Promise<void> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo) {\n throw new Error('No KeyInfo set. Create or load a key first.');\n }\n\n if (!keyInfo.trustProviders?.[provider]) {\n throw new Error(`Provider '${provider}' is not linked.`);\n }\n\n const { [provider]: _, ...rest } = keyInfo.trustProviders;\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n trustProviders: Object.keys(rest).length > 0 ? rest : undefined,\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n }\n\n /**\n * Get all linked providers\n */\n getLinkedProviders(filter?: { type?: string; category?: string }): LinkedProviderStatus[] {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.trustProviders) return [];\n\n return Object.entries(keyInfo.trustProviders)\n .filter(([_, entry]) => {\n if (filter?.type && entry.type !== filter.type) return false;\n if (filter?.category && entry.category !== filter.category) return false;\n return true;\n })\n .map(([provider, entry]) => ({\n provider,\n type: entry.type,\n category: entry.category,\n sub: entry.sub,\n expiresAt: entry.expiresAt,\n }));\n }\n\n /**\n * Get an access token for a linked provider\n * Auto-refreshes if the stored token is expired\n */\n async getProviderAccessToken(provider: string): Promise<string> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.trustProviders?.[provider]) {\n throw new Error(`Provider '${provider}' is not linked.`);\n }\n\n const entry = keyInfo.trustProviders[provider];\n\n if (entry.type !== 'oauth') {\n throw new Error(`Provider '${provider}' is not an OAuth provider.`);\n }\n\n if (entry.accessToken && (!entry.expiresAt || Date.now() < entry.expiresAt - 60000)) {\n return entry.accessToken;\n }\n\n if (!entry.encryptedBundle) {\n throw new Error(`No refresh token available for provider '${provider}'. Re-authenticate.`);\n }\n\n const manager = this.getManager();\n const secretKey = await this.#resolveSecretKey(manager, keyInfo);\n const refreshToken = await decryptRefreshToken(entry.encryptedBundle, secretKey);\n this.#clearKey(secretKey);\n\n const preset = BUILTIN_PROVIDERS[provider];\n if (!preset) {\n throw new Error(`Cannot refresh token for provider '${provider}' — no token URL configured.`);\n }\n\n const refreshed = await refreshAccessToken({\n tokenUrl: preset.tokenUrl,\n clientId: provider,\n refreshToken,\n });\n\n const updatedEntry: TrustProviderEntry = {\n ...entry,\n accessToken: refreshed.accessToken,\n expiresAt: Date.now() + refreshed.expiresIn * 1000,\n scope: refreshed.scope || entry.scope || '',\n };\n\n if (refreshed.refreshToken) {\n const manager2 = this.getManager();\n const secretKey2 = await this.#resolveSecretKey(manager2, keyInfo);\n updatedEntry.encryptedBundle = await encryptRefreshToken(refreshed.refreshToken, secretKey2);\n this.#clearKey(secretKey2);\n }\n\n const updatedKeyInfo: KeyInfo = {\n ...keyInfo,\n trustProviders: {\n ...keyInfo.trustProviders,\n [provider]: updatedEntry,\n },\n };\n\n this.setCurrentKeyInfo(updatedKeyInfo);\n\n return refreshed.accessToken;\n }\n\n /**\n * Publish a provider link to kind-0 profile\n */\n async publishProviderLink(\n relayService: RelayService,\n provider: string,\n ): Promise<boolean> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.trustProviders?.[provider]) {\n throw new Error(`Provider '${provider}' is not linked.`);\n }\n\n const entry = keyInfo.trustProviders[provider];\n\n if (entry.type === 'oauth') {\n const pubkey = await this.getPublicKey();\n const tags: string[][] = [\n ['oauth', provider, entry.sub, entry.verifiedAt.toString()],\n ];\n if (entry.expiresAt) {\n tags[0].push(entry.expiresAt.toString());\n }\n\n const event: Event = {\n kind: 0,\n content: '',\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await this.signEvent(event);\n return relayService.publishEvent(signedEvent);\n }\n\n throw new Error(`Publishing provider type '${entry.type}' to kind-0 is not yet supported.`);\n }\n\n /**\n * Unpublish a provider link from kind-0 profile\n */\n async unpublishProviderLink(\n relayService: RelayService,\n provider: string,\n ): Promise<boolean> {\n const keyInfo = this.getCurrentKeyInfo();\n if (!keyInfo?.trustProviders?.[provider]) {\n throw new Error(`Provider '${provider}' is not linked.`);\n }\n\n await this.unlinkProvider(provider);\n\n const pubkey = await this.getPublicKey();\n const existing = await relayService.fetchKind0Event(pubkey);\n if (!existing) return true;\n\n const tags = existing.tags.filter(\n (tag) => tag[0] !== 'oauth' || tag[1] !== provider,\n );\n\n const event: Event = {\n kind: 0,\n content: existing.content,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await this.signEvent(event);\n return relayService.publishEvent(signedEvent);\n }\n\n // ─── Internal Helpers ────────────────────────────────────────────\n\n async #resolveSecretKey(manager: KeyManager, keyInfo: KeyInfo): Promise<Uint8Array> {\n if (keyInfo.passwordProtectedBundle) {\n throw new Error('Password required for OAuth operations on password-protected keys.');\n }\n\n const { getPrfSecret } = await import('../utils/prf-handler.js');\n const { secret } = await getPrfSecret(hexToBytes(keyInfo.credentialId));\n return secret;\n }\n\n #clearKey(key: Uint8Array): void {\n key?.fill?.(0);\n }\n}\n\n","export const MAX_ROLE_LENGTH = 100;\nconst ROLE_PATTERN = /^[a-zA-Z0-9\\s\\-_]+$/;\n\nexport const isValidRoleTag = (role: string): boolean => {\n const trimmed = role.trim();\n return (\n trimmed.length > 0 &&\n trimmed.length <= MAX_ROLE_LENGTH &&\n ROLE_PATTERN.test(trimmed)\n );\n};\n\nexport const isValidPubkey = (pubkey: string): boolean =>\n pubkey.length === 64 && /^[0-9a-fA-F]+$/.test(pubkey);\n\nexport const isValidHttpUrl = (url: string): boolean => {\n try {\n const parsed = new URL(url);\n return ['http:', 'https:'].includes(parsed.protocol);\n } catch {\n return false;\n }\n};\n\nexport const isValidRelayUrl = (url: string): boolean => {\n try {\n const parsed = new URL(url);\n return ['ws:', 'wss:'].includes(parsed.protocol) && parsed.hostname.length > 0;\n } catch {\n return false;\n }\n};\n","import type { EventStore } from 'applesauce-core';\nimport type { Event } from '../types/nostr.js';\nimport type { ProfileMetadata, FollowEntry } from '../types/nostr.js';\nimport type { RelayServiceConfig } from '../types/auth.js';\nimport type { RootOfTrustInfo } from '../types/vlei.js';\nimport { parseVLEITag, createVLEITag } from '../types/vlei.js';\nimport type { EUDIClaims } from '../types/eudi.js';\nimport { parseEUDITag, createEUDITag } from '../types/eudi.js';\nimport type { ZKPClaims } from '../types/zkp.js';\nimport { createZKPTag, parseZKPTag } from '../types/zkp.js';\nimport type { EUDILegalClaims } from '../types/eudi.js';\nimport { createEUDILegalTag, parseEUDILegalTag } from '../types/eudi.js';\nimport { createZKMGroupTag, parseZKMTag, type ZKMGroupInfo } from '../types/zkm.js';\nimport { isValidPubkey, isValidRelayUrl, isValidRoleTag } from '../utils/validation.js';\n\n/**\n * Service for communicating with Nostr relays using applesauce-core\n */\nexport class RelayService {\n private eventStore: EventStore | null = null;\n private relayUrls: string[];\n private readonly maxProfileContentSize = 10000;\n private readonly minProfileQueryIntervalMs = 300;\n private readonly minPublishIntervalMs = 750;\n private readonly lastActionAt = new Map<string, number>();\n\n constructor(config: RelayServiceConfig) {\n if (!config.relayUrls || config.relayUrls.length === 0) {\n throw new Error('relayUrls is required. Provide at least one relay URL.');\n }\n this.relayUrls = this.validateRelayUrls(config.relayUrls);\n }\n\n /**\n * Initialize with applesauce EventStore\n */\n initialize(eventStore: EventStore): void {\n this.eventStore = eventStore;\n // Set default relays if EventStore has a method for it\n if (eventStore && 'setRelays' in eventStore && typeof eventStore.setRelays === 'function') {\n (eventStore as any).setRelays(this.relayUrls);\n }\n }\n\n /**\n * Set relay URLs\n */\n setRelays(urls: string[]): void {\n this.relayUrls = this.validateRelayUrls(urls);\n if (this.eventStore && 'setRelays' in this.eventStore && typeof this.eventStore.setRelays === 'function') {\n (this.eventStore as any).setRelays(this.relayUrls);\n }\n }\n\n /**\n * Get current relay URLs\n */\n getRelays(): string[] {\n return [...this.relayUrls];\n }\n\n /**\n * Publish an event to relays\n */\n async publishEvent(event: Event, timeoutMs = 1000): Promise<boolean> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n await this.enforceRateLimit('publish', this.minPublishIntervalMs);\n return new Promise((resolve, reject) => {\n if (this.relayUrls.length === 0) {\n reject(new Error('No relays configured'));\n return;\n }\n\n // Use EventStore's publish method\n // Note: This is a simplified implementation - actual applesauce API may differ\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.publish !== 'function') {\n reject(new Error('EventStore does not support publish method'));\n return;\n }\n const subscription = eventStore.publish(event).subscribe({\n next: (response: any) => {\n if (response?.type === 'OK') {\n subscription.unsubscribe();\n resolve(true);\n }\n },\n error: (error: Error) => {\n subscription.unsubscribe();\n reject(error);\n },\n });\n\n // Timeout fallback\n setTimeout(() => {\n subscription.unsubscribe();\n resolve(false);\n }, timeoutMs);\n });\n }\n\n /**\n * Fetch a profile (Kind 0 event)\n */\n async fetchProfile(pubkey: string): Promise<ProfileMetadata | null> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n await this.enforceRateLimit('fetch-profile', this.minProfileQueryIntervalMs);\n return new Promise((resolve) => {\n const filter = {\n kinds: [0],\n authors: [pubkey],\n limit: 1,\n };\n\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.query !== 'function') {\n resolve(null);\n return;\n }\n const subscription = eventStore.query(filter).subscribe({\n next: (packet: any) => {\n if (packet?.event && packet.event.kind === 0) {\n const metadata = this.parseProfileMetadata(packet.event.content);\n if (metadata) {\n subscription.unsubscribe();\n resolve(metadata);\n return;\n }\n console.error('Failed to parse profile metadata');\n }\n },\n complete: () => {\n subscription.unsubscribe();\n resolve(null);\n },\n error: (error: Error) => {\n console.error('Error fetching profile:', error);\n subscription.unsubscribe();\n resolve(null);\n },\n });\n\n // Timeout\n setTimeout(() => {\n subscription.unsubscribe();\n resolve(null);\n }, 5000);\n });\n }\n\n /**\n * Fetch role tag from profile event (Kind 0)\n */\n async fetchProfileRoleTag(pubkey: string): Promise<string | null> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n await this.enforceRateLimit('fetch-role-tag', this.minProfileQueryIntervalMs);\n return new Promise((resolve) => {\n const filter = {\n kinds: [0],\n authors: [pubkey],\n limit: 1,\n };\n\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.query !== 'function') {\n resolve(null);\n return;\n }\n const subscription = eventStore.query(filter).subscribe({\n next: (packet: any) => {\n if (packet?.event && packet.event.kind === 0) {\n const tags = packet.event.tags || [];\n for (const tag of tags) {\n if (tag[0] === 'role' && tag[1]) {\n const candidate = tag[1].trim();\n if (isValidRoleTag(candidate)) {\n subscription.unsubscribe();\n resolve(candidate);\n return;\n }\n }\n }\n subscription.unsubscribe();\n resolve(null);\n }\n },\n complete: () => {\n subscription.unsubscribe();\n resolve(null);\n },\n error: (error: Error) => {\n console.error('Error fetching profile role tag:', error);\n subscription.unsubscribe();\n resolve(null);\n },\n });\n\n setTimeout(() => {\n subscription.unsubscribe();\n resolve(null);\n }, 5000);\n });\n }\n\n /**\n * Fetch a follow list (Kind 3 event)\n */\n async fetchFollowList(pubkey: string): Promise<FollowEntry[]> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n await this.enforceRateLimit('fetch-follow-list', this.minProfileQueryIntervalMs);\n return new Promise((resolve) => {\n const filter = {\n kinds: [3],\n authors: [pubkey],\n limit: 1,\n };\n\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.query !== 'function') {\n resolve([]);\n return;\n }\n const subscription = eventStore.query(filter).subscribe({\n next: (packet: any) => {\n if (packet?.event && packet.event.kind === 3) {\n const followList: FollowEntry[] = [];\n const tags = packet.event.tags || [];\n\n for (const tag of tags) {\n if (tag[0] === 'p' && tag[1]) {\n followList.push({\n pubkey: tag[1],\n relay: tag[2] || undefined,\n petname: tag[3] || undefined,\n });\n }\n }\n\n subscription.unsubscribe();\n resolve(followList);\n }\n },\n complete: () => {\n subscription.unsubscribe();\n resolve([]);\n },\n error: (error: Error) => {\n console.error('Error fetching follow list:', error);\n subscription.unsubscribe();\n resolve([]);\n },\n });\n\n setTimeout(() => {\n subscription.unsubscribe();\n resolve([]);\n }, 10000);\n });\n }\n\n /**\n * Fetch multiple profiles in batch\n */\n async fetchMultipleProfiles(pubkeys: string[]): Promise<Map<string, ProfileMetadata>> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n if (pubkeys.length === 0) {\n return new Map();\n }\n\n await this.enforceRateLimit('fetch-multiple-profiles', this.minProfileQueryIntervalMs);\n return new Promise((resolve) => {\n const profiles = new Map<string, ProfileMetadata>();\n const filter = {\n kinds: [0],\n authors: pubkeys,\n };\n\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.query !== 'function') {\n resolve(new Map());\n return;\n }\n const subscription = eventStore.query(filter).subscribe({\n next: (packet: any) => {\n if (packet?.event && packet.event.kind === 0 && packet.event.pubkey) {\n const metadata = this.parseProfileMetadata(packet.event.content);\n if (metadata) {\n profiles.set(packet.event.pubkey, metadata);\n } else {\n console.error('Failed to parse profile metadata');\n }\n }\n },\n complete: () => {\n subscription.unsubscribe();\n resolve(profiles);\n },\n error: (error: Error) => {\n console.error('Error fetching profiles:', error);\n subscription.unsubscribe();\n resolve(profiles);\n },\n });\n\n setTimeout(() => {\n subscription.unsubscribe();\n resolve(profiles);\n }, 1000);\n });\n }\n\n /**\n * Query kind 0 events (profiles) by pubkey\n * If pubkeys array is empty, fetches recent kind 0 events\n */\n async queryProfiles(pubkeys: string[] = [], limit = 100): Promise<Map<string, ProfileMetadata>> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n await this.enforceRateLimit('query-profiles', this.minProfileQueryIntervalMs);\n return new Promise((resolve) => {\n const profiles = new Map<string, { metadata: ProfileMetadata; timestamp: number }>();\n const filter: any = {\n kinds: [0],\n limit,\n };\n\n if (pubkeys.length > 0) {\n filter.authors = pubkeys;\n }\n\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.query !== 'function') {\n resolve(new Map());\n return;\n }\n const subscription = eventStore.query(filter).subscribe({\n next: (packet: any) => {\n if (packet?.event && packet.event.kind === 0 && packet.event.pubkey) {\n const metadata = this.parseProfileMetadata(packet.event.content);\n if (metadata) {\n const timestamp = packet.event.created_at || 0;\n const existing = profiles.get(packet.event.pubkey);\n if (!existing || timestamp > existing.timestamp) {\n profiles.set(packet.event.pubkey, { metadata, timestamp });\n }\n } else {\n console.error('Failed to parse profile metadata');\n }\n }\n },\n complete: () => {\n subscription.unsubscribe();\n const result = new Map<string, ProfileMetadata>();\n profiles.forEach((value, pubkey) => {\n result.set(pubkey, value.metadata);\n });\n resolve(result);\n },\n error: (error: Error) => {\n console.error('Error querying profiles:', error);\n subscription.unsubscribe();\n const result = new Map<string, ProfileMetadata>();\n profiles.forEach((value, pubkey) => {\n result.set(pubkey, value.metadata);\n });\n resolve(result);\n },\n });\n\n setTimeout(() => {\n subscription.unsubscribe();\n const result = new Map<string, ProfileMetadata>();\n profiles.forEach((value, pubkey) => {\n result.set(pubkey, value.metadata);\n });\n resolve(result);\n }, 10000);\n });\n }\n\n /**\n * Publish or update a kind 3 event (follow list/contacts)\n */\n async publishFollowList(\n _pubkey: string,\n followList: FollowEntry[],\n signEvent: (event: Event) => Promise<Event>\n ): Promise<boolean> {\n const tags: string[][] = followList.map((entry) => {\n if (!isValidPubkey(entry.pubkey)) {\n throw new Error('Invalid pubkey format for follow list entry.');\n }\n if (entry.relay && !isValidRelayUrl(entry.relay)) {\n throw new Error('Invalid relay URL format for follow list entry.');\n }\n const tag: string[] = ['p', entry.pubkey];\n if (entry.relay) {\n tag.push(entry.relay);\n }\n if (entry.petname) {\n tag.push(entry.petname);\n }\n return tag;\n });\n\n const event: Event = {\n kind: 3,\n content: '',\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Fetch the latest kind 0 event for a pubkey, returning the full event (content + tags)\n */\n async fetchKind0Event(pubkey: string): Promise<{ content: string; tags: string[][] } | null> {\n if (!this.eventStore) {\n throw new Error('RelayService not initialized. Call initialize() with an EventStore instance.');\n }\n\n return new Promise((resolve) => {\n const filter = {\n kinds: [0],\n authors: [pubkey],\n limit: 1,\n };\n\n const eventStore = this.eventStore as any;\n if (!eventStore || typeof eventStore.query !== 'function') {\n resolve(null);\n return;\n }\n\n let found: { content: string; tags: string[][] } | null = null;\n\n const subscription = eventStore.query(filter).subscribe({\n next: (packet: any) => {\n if (packet?.event && packet.event.kind === 0) {\n found = {\n content: packet.event.content || '{}',\n tags: packet.event.tags || [],\n };\n }\n },\n complete: () => {\n subscription.unsubscribe();\n resolve(found);\n },\n error: () => {\n subscription.unsubscribe();\n resolve(found);\n },\n });\n\n setTimeout(() => {\n subscription.unsubscribe();\n resolve(found);\n }, 5000);\n });\n }\n\n /**\n * Publish or update a kind 0 event with recovery data\n * Fetches the existing kind-0, preserves all content and tags, and amends the recovery \"r\" tag\n * @param pubkey The identity's public key\n * @param recoveryData Recovery data { recoveryPubkey, recoverySalt, createdAt, signature }\n * @param signEvent Callback to sign the event\n * @param content Optional content to use instead of fetching the existing kind-0. If not provided, the existing kind-0 content is preserved. Falls back to \"{}\" if no existing event.\n */\n async publishRecoveryToKind0(\n pubkey: string,\n recoveryData: { recoveryPubkey: string; recoverySalt: string; createdAt?: number; signature?: string },\n signEvent: (event: Event) => Promise<Event>,\n content?: string\n ): Promise<boolean> {\n let existingContent = content;\n let existingTags: string[][] = [];\n\n if (!existingContent) {\n const existing = await this.fetchKind0Event(pubkey);\n if (existing) {\n existingContent = existing.content;\n existingTags = existing.tags;\n } else {\n existingContent = '{}';\n }\n }\n\n const recoveryTag: string[] = [\n 'r',\n recoveryData.recoveryPubkey,\n recoveryData.recoverySalt,\n recoveryData.createdAt?.toString() || '',\n recoveryData.signature || '',\n ];\n\n const tags = existingTags.filter((tag) => tag[0] !== 'r');\n tags.push(recoveryTag);\n\n const event: Event = {\n kind: 0,\n content: existingContent,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Publish or update a kind 0 event with vLEI root of trust data\n * Fetches the existing kind-0, preserves all content and tags, and adds/replaces vLEI tag\n * Supports multiple roles via multiple vLEI tags\n * @param pubkey The identity's public key\n * @param rootOfTrust vLEI root of trust info\n * @param signEvent Callback to sign the event\n */\n async publishVLEIToKind0(\n pubkey: string,\n rootOfTrust: RootOfTrustInfo,\n signEvent: (event: Event) => Promise<Event>\n ): Promise<boolean> {\n const existing = await this.fetchKind0Event(pubkey);\n const existingContent = existing?.content || '{}';\n const existingTags = existing?.tags || [];\n\n const vleiTag = createVLEITag(rootOfTrust);\n\n const tags = existingTags.filter((tag) => tag[0] !== 'vlei' || !this.#isSameRoleVLEITag(tag, rootOfTrust.role));\n tags.push(vleiTag as string[]);\n\n const event: Event = {\n kind: 0,\n content: existingContent,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Fetch all vLEI tags from a kind-0 event\n * @param pubkey The identity's public key\n */\n async fetchVLEITags(pubkey: string): Promise<RootOfTrustInfo[]> {\n const existing = await this.fetchKind0Event(pubkey);\n if (!existing?.tags) return [];\n\n const vleiTags: RootOfTrustInfo[] = [];\n for (const tag of existing.tags) {\n if (tag[0] === 'vlei' && tag.length >= 8) {\n const parsed = parseVLEITag(tag);\n if (parsed) {\n vleiTags.push(parsed);\n }\n }\n }\n return vleiTags;\n }\n\n #isSameRoleVLEITag(tag: string[], role: string): boolean {\n if (tag[0] !== 'vlei' || tag.length < 5) return false;\n return tag[4] === role;\n }\n\n /**\n * Publish or update a kind-0 event with EUDI root of trust data\n * Fetches the existing kind-0, preserves all content and tags, and adds/replaces eudi tag\n * @param pubkey The identity's public key\n * @param eudiClaims EUDI claims info\n * @param signEvent Callback to sign the event\n */\n async publishEUDIToKind0(\n pubkey: string,\n eudiClaims: EUDIClaims,\n signEvent: (event: Event) => Promise<Event>\n ): Promise<boolean> {\n const existing = await this.fetchKind0Event(pubkey);\n const existingContent = existing?.content || '{}';\n const existingTags = existing?.tags || [];\n\n const eudiTag = createEUDITag(eudiClaims);\n\n const tags = existingTags.filter((tag) => tag[0] !== 'eudi');\n tags.push(eudiTag as string[]);\n\n const event: Event = {\n kind: 0,\n content: existingContent,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Fetch all EUDI tags from a kind-0 event\n * @param pubkey The identity's public key\n */\n async fetchEUDITags(pubkey: string): Promise<EUDIClaims[]> {\n const existing = await this.fetchKind0Event(pubkey);\n if (!existing?.tags) return [];\n\n const eudiTags: EUDIClaims[] = [];\n for (const tag of existing.tags) {\n if (tag[0] === 'eudi' && tag.length >= 7) {\n const parsed = parseEUDITag(tag);\n if (parsed) {\n eudiTags.push(parsed);\n }\n }\n }\n return eudiTags;\n }\n\n private validateRelayUrls(urls: string[]): string[] {\n if (urls.length === 0) {\n return [];\n }\n const validUrls = urls.filter((url) => isValidRelayUrl(url));\n if (validUrls.length !== urls.length) {\n throw new Error('Invalid relay URL format');\n }\n return validUrls;\n }\n\n private parseProfileMetadata(content: string): ProfileMetadata | null {\n if (content.length > this.maxProfileContentSize) {\n return null;\n }\n try {\n const parsed = JSON.parse(content);\n if (!parsed || typeof parsed !== 'object') {\n return null;\n }\n const metadata: ProfileMetadata = {};\n if (typeof (parsed as ProfileMetadata).name === 'string') {\n metadata.name = (parsed as ProfileMetadata).name;\n }\n if (typeof (parsed as ProfileMetadata).display_name === 'string') {\n metadata.display_name = (parsed as ProfileMetadata).display_name;\n }\n if (typeof (parsed as ProfileMetadata).about === 'string') {\n metadata.about = (parsed as ProfileMetadata).about;\n }\n if (typeof (parsed as ProfileMetadata).picture === 'string') {\n metadata.picture = (parsed as ProfileMetadata).picture;\n }\n if (typeof (parsed as ProfileMetadata).website === 'string') {\n metadata.website = (parsed as ProfileMetadata).website;\n }\n return metadata;\n } catch (error) {\n console.error('Failed to parse profile metadata:', error);\n return null;\n }\n }\n\n private async enforceRateLimit(action: string, minIntervalMs: number): Promise<void> {\n const lastAt = this.lastActionAt.get(action) ?? 0;\n const now = Date.now();\n const waitMs = minIntervalMs - (now - lastAt);\n if (waitMs > 0) {\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.lastActionAt.set(action, Date.now());\n }\n\n /**\n * Publish or update a kind-0 event with ZKPassport root of trust data\n * Fetches the existing kind-0, preserves all content and tags, and adds/replaces zkp tag\n * @param pubkey The identity's public key\n * @param zkpClaims ZKPassport claims\n * @param signEvent Callback to sign the event\n */\n async publishZKPToKind0(\n pubkey: string,\n zkpClaims: ZKPClaims,\n signEvent: (event: Event) => Promise<Event>\n ): Promise<boolean> {\n const existing = await this.fetchKind0Event(pubkey);\n const existingContent = existing?.content || '{}';\n const existingTags = existing?.tags || [];\n\n const zkpTag = createZKPTag(zkpClaims);\n\n const tags = existingTags.filter((tag) => tag[0] !== 'zkp');\n tags.push(zkpTag as string[]);\n\n const event: Event = {\n kind: 0,\n content: existingContent,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Fetch all ZKP tags from a kind-0 event\n * @param pubkey The identity's public key\n */\n async fetchZKPTags(pubkey: string): Promise<ZKPClaims[]> {\n const existing = await this.fetchKind0Event(pubkey);\n if (!existing?.tags) return [];\n\n const zkpTags: ZKPClaims[] = [];\n for (const tag of existing.tags) {\n if (tag[0] === 'zkp' && tag.length >= 2) {\n const parsed = parseZKPTag(tag);\n if (parsed) {\n zkpTags.push(parsed);\n }\n }\n }\n return zkpTags;\n }\n\n /**\n * Publish or update a kind-0 event with EUDI Legal PID root of trust data\n * Fetches the existing kind-0, preserves all content and tags, and adds/replaces eudil tag\n * @param pubkey The identity's public key\n * @param legalClaims EUDI Legal PID claims\n * @param signEvent Callback to sign the event\n */\n async publishEUDILegalToKind0(\n pubkey: string,\n legalClaims: EUDILegalClaims,\n signEvent: (event: Event) => Promise<Event>\n ): Promise<boolean> {\n const existing = await this.fetchKind0Event(pubkey);\n const existingContent = existing?.content || '{}';\n const existingTags = existing?.tags || [];\n\n const eudilTag = createEUDILegalTag(legalClaims);\n\n const tags = existingTags.filter((tag) => tag[0] !== 'eudil');\n tags.push(eudilTag as string[]);\n\n const event: Event = {\n kind: 0,\n content: existingContent,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Fetch all EUDI Legal PID tags from a kind-0 event\n * @param pubkey The identity's public key\n */\n async fetchEUDILegalTags(pubkey: string): Promise<EUDILegalClaims[]> {\n const existing = await this.fetchKind0Event(pubkey);\n if (!existing?.tags) return [];\n\n const eudilTags: EUDILegalClaims[] = [];\n for (const tag of existing.tags) {\n if (tag[0] === 'eudil' && tag.length >= 4) {\n const parsed = parseEUDILegalTag(tag);\n if (parsed) {\n eudilTags.push(parsed);\n }\n }\n }\n return eudilTags;\n }\n\n /**\n * Publish ZK Membership group root to kind-0 profile (Semaphore-style)\n * Only publishes root, not individual members or proofs\n * @param pubkey The identity's public key\n * @param group ZKM Group with root\n * @param signEvent Callback to sign the event\n */\n async publishZKMGroupToKind0(\n pubkey: string,\n group: ZKMGroupInfo,\n signEvent: (event: Event) => Promise<Event>\n ): Promise<boolean> {\n const existing = await this.fetchKind0Event(pubkey);\n const existingContent = existing?.content || '{}';\n const existingTags = existing?.tags || [];\n\n const zkmTag = createZKMGroupTag(group);\n\n const tags = existingTags.filter((tag) => tag[0] !== 'zkm' || tag[1] !== group.groupId);\n tags.push(zkmTag as string[]);\n\n const event: Event = {\n kind: 0,\n content: existingContent,\n created_at: Math.floor(Date.now() / 1000),\n tags,\n };\n\n const signedEvent = await signEvent(event);\n return await this.publishEvent(signedEvent);\n }\n\n /**\n * Fetch all ZK Membership group roots from a kind-0 event (Semaphore-style)\n * @param pubkey The identity's public key\n */\n async fetchZKMGroups(pubkey: string): Promise<ZKMGroupInfo[]> {\n const existing = await this.fetchKind0Event(pubkey);\n if (!existing?.tags) return [];\n\n const zkmTags: ZKMGroupInfo[] = [];\n for (const tag of existing.tags) {\n if (tag[0] === 'zkm' && tag.length >= 3) {\n const parsed = parseZKMTag(tag);\n if (parsed) {\n zkmTags.push(parsed);\n }\n }\n }\n return zkmTags;\n }\n}\n\n","/**\n * EUDI Service - OpenID4VP verification with walt.id\n * @packageDocumentation\n */\n\nimport type {\n EUDIClaims,\n EUDILegalClaims,\n EUDISession,\n EUDIVerifierConfig,\n EUDISessionRequest,\n} from '../types/eudi.js';\nimport { EUDI_PID_SCHEMA, EUDI_LEGAL_PID_SCHEMA } from '../types/eudi.js';\n\nfunction base64urlDecode(encoded: string): Uint8Array {\n let base64 = encoded.replace(/-/g, '+').replace(/_/g, '/');\n while (base64.length % 4) {\n base64 += '=';\n }\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\n\nexport class EUDIService {\n #config: EUDIVerifierConfig | null = null;\n #connected = false;\n #sessions: Map<string, EUDISession> = new Map();\n\n async connect(config: EUDIVerifierConfig): Promise<void> {\n if (this.#connected && this.#config?.url === config.url) {\n return;\n }\n\n const testResponse = await fetch(`${config.url}/health`, {\n method: 'GET',\n });\n\n if (!testResponse.ok) {\n throw new Error(`EUDI verifier not available at ${config.url}`);\n }\n\n this.#config = config;\n this.#connected = true;\n }\n\n async disconnect(): Promise<void> {\n this.#config = null;\n this.#connected = false;\n this.#sessions.clear();\n }\n\n isConnected(): boolean {\n return this.#connected && this.#config !== null;\n }\n\n getConfig(): EUDIVerifierConfig | null {\n return this.#config;\n }\n\n /**\n * Create a new verification session\n * Returns session info including verification URL and request URI\n */\n async createVerificationSession(): Promise<EUDISession> {\n if (!this.#config) {\n throw new Error('Not connected to EUDI verifier. Call connect() first.');\n }\n\n const nonce = this.#generateNonce();\n const sessionId = this.#generateSessionId();\n const expiresAt = Math.floor(Date.now() / 1000) + 300;\n\n const presentationDefinition: EUDISessionRequest['presentation_definition'] = {\n id: 'pid-request',\n input_descriptors: [\n {\n id: 'pid',\n constraints: {\n fields: [\n {\n path: ['$.vct'],\n filter: {\n type: 'string',\n const: EUDI_PID_SCHEMA,\n },\n },\n ],\n },\n },\n ],\n };\n\n const sessionRequest: EUDISessionRequest = {\n presentation_definition: presentationDefinition,\n nonce,\n state: sessionId,\n };\n\n const response = await fetch(`${this.#config.url}/api/v1/presentations/sessions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n body: JSON.stringify(sessionRequest),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(`Failed to create verification session: ${response.status} ${errorText}`);\n }\n\n const result = await response.json() as {\n session_id: string;\n session_url: string;\n expiry: number;\n };\n\n const session: EUDISession = {\n sessionId: result.session_id,\n challenge: nonce,\n verificationUrl: result.session_url,\n requestUri: `${this.#config.url}/api/v1/presentations/sessions/${result.session_id}/request`,\n expiresAt: result.expiry || expiresAt,\n };\n\n this.#sessions.set(session.sessionId, session);\n return session;\n }\n\n /**\n * Poll for verification result\n */\n async pollVerificationResult(sessionId: string): Promise<{\n status: 'pending' | 'verified' | 'failed';\n claims?: EUDIClaims;\n }> {\n if (!this.#config) {\n throw new Error('Not connected to EUDI verifier');\n }\n\n const session = this.#sessions.get(sessionId);\n if (!session) {\n throw new Error('Session not found');\n }\n\n if (Math.floor(Date.now() / 1000) > session.expiresAt) {\n return { status: 'failed' };\n }\n\n const response = await fetch(\n `${this.#config.url}/api/v1/presentations/sessions/${sessionId}`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n }\n );\n\n if (!response.ok) {\n throw new Error(`Failed to check verification status: ${response.status}`);\n }\n\n const result = await response.json() as {\n status: string;\n vp_token?: string;\n presentation_submission?: unknown;\n };\n\n switch (result.status) {\n case 'REQUESTED':\n case 'PRESENTED':\n return { status: 'pending' };\n case 'VERIFIED':\n case 'ACCEPTED':\n if (result.vp_token) {\n const claims = await this.#extractClaimsFromVP(result.vp_token, session.challenge);\n return { status: 'verified', claims };\n }\n return { status: 'failed' };\n case 'REJECTED':\n case 'EXPIRED':\n case 'ERROR':\n return { status: 'failed' };\n default:\n return { status: 'pending' };\n }\n }\n\n /**\n * Verify EUDI credentials and return claims\n * This is the main entry point for verification\n */\n async verifyEUDI(): Promise<EUDIClaims> {\n if (!this.#config) {\n throw new Error('Not connected to EUDI verifier. Call connect() first.');\n }\n\n const session = await this.createVerificationSession();\n\n const maxAttempts = 60;\n const pollInterval = 2000;\n let attempts = 0;\n\n while (attempts < maxAttempts) {\n const result = await this.pollVerificationResult(session.sessionId);\n\n if (result.status === 'verified' && result.claims) {\n return result.claims;\n }\n\n if (result.status === 'failed') {\n throw new Error('EUDI verification failed or was rejected');\n }\n\n await new Promise((resolve) => setTimeout(resolve, pollInterval));\n attempts++;\n }\n\n throw new Error('EUDI verification timed out');\n }\n\n /**\n * Get active sessions\n */\n getActiveSessions(): EUDISession[] {\n const now = Math.floor(Date.now() / 1000);\n return Array.from(this.#sessions.values()).filter((s) => s.expiresAt > now);\n }\n\n /**\n * Clear expired sessions\n */\n clearExpiredSessions(): void {\n const now = Math.floor(Date.now() / 1000);\n for (const [id, session] of this.#sessions.entries()) {\n if (session.expiresAt <= now) {\n this.#sessions.delete(id);\n }\n }\n }\n\n #generateNonce(): string {\n const array = new Uint8Array(32);\n crypto.getRandomValues(array);\n return Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join('');\n }\n\n #generateSessionId(): string {\n const array = new Uint8Array(16);\n crypto.getRandomValues(array);\n return Array.from(array, (byte) => byte.toString(16).padStart(2, '0')).join('');\n }\n\n async #extractClaimsFromVP(vpToken: string, _challenge: string): Promise<EUDIClaims> {\n const parts = vpToken.split('.');\n if (parts.length < 2) {\n throw new Error('Invalid VP token format');\n }\n\n const payload = base64urlDecode(parts[1]);\n const payloadObj = JSON.parse(new TextDecoder().decode(payload)) as {\n iss?: string;\n sub?: string;\n claims?: {\n given_name?: string;\n family_name?: string;\n birthdate?: string;\n nationality?: string;\n };\n _sd_claim?: unknown;\n };\n\n const holderDID = payloadObj.iss || payloadObj.sub || '';\n if (!holderDID) {\n throw new Error('No holderDID found in VP token');\n }\n const sha256 = (await import('@noble/hashes/sha2.js')).sha256;\n const bytesToHex = (await import('@noble/hashes/utils.js')).bytesToHex;\n const uniqueIdentifier = bytesToHex(sha256(new TextEncoder().encode(holderDID))).slice(0, 16);\n \n let nationality = '';\n let isOver18 = false;\n\n if (payloadObj.claims) {\n nationality = payloadObj.claims.nationality || '';\n \n if (payloadObj.claims.birthdate) {\n const birthYear = parseInt(payloadObj.claims.birthdate.slice(0, 4), 10);\n const currentYear = new Date().getFullYear();\n isOver18 = currentYear - birthYear >= 18;\n }\n }\n\n const now = new Date().toISOString();\n\n return {\n uniqueIdentifier,\n isOver18,\n nationality: nationality || undefined,\n verifiedAt: now,\n };\n }\n\n /**\n * Create a verification session for Legal PID credentials\n */\n async createLegalPIDVerificationSession(): Promise<EUDISession> {\n if (!this.#config) {\n throw new Error('Not connected to EUDI verifier. Call connect() first.');\n }\n\n const nonce = this.#generateNonce();\n const sessionId = this.#generateSessionId();\n const expiresAt = Math.floor(Date.now() / 1000) + 300;\n\n const presentationDefinition: EUDISessionRequest['presentation_definition'] = {\n id: 'lpid-request',\n input_descriptors: [\n {\n id: 'lpid',\n constraints: {\n fields: [\n {\n path: ['$.vct'],\n filter: {\n type: 'string',\n const: EUDI_LEGAL_PID_SCHEMA,\n },\n },\n ],\n },\n },\n ],\n };\n\n const sessionRequest: EUDISessionRequest = {\n presentation_definition: presentationDefinition,\n nonce,\n state: sessionId,\n };\n\n const response = await fetch(`${this.#config.url}/api/v1/presentations/sessions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n body: JSON.stringify(sessionRequest),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(`Failed to create Legal PID verification session: ${response.status} ${errorText}`);\n }\n\n const result = await response.json() as {\n session_id: string;\n session_url: string;\n expiry: number;\n };\n\n const session: EUDISession = {\n sessionId: result.session_id,\n challenge: nonce,\n verificationUrl: result.session_url,\n requestUri: `${this.#config.url}/api/v1/presentations/sessions/${result.session_id}/request`,\n expiresAt: result.expiry || expiresAt,\n };\n\n this.#sessions.set(session.sessionId, session);\n return session;\n }\n\n /**\n * Verify EUDI Legal PID credentials and return claims\n */\n async verifyEUDILegalPID(): Promise<EUDILegalClaims> {\n if (!this.#config) {\n throw new Error('Not connected to EUDI verifier. Call connect() first.');\n }\n\n const session = await this.createLegalPIDVerificationSession();\n\n const maxAttempts = 60;\n const pollInterval = 2000;\n let attempts = 0;\n\n while (attempts < maxAttempts) {\n const result = await this.pollVerificationResult(session.sessionId);\n\n if (result.status === 'verified' && result.claims) {\n throw new Error('Use verifyEUDILegalPIDClaims() to extract legal claims from VP');\n }\n\n if (result.status === 'failed') {\n throw new Error('EUDI Legal PID verification failed or was rejected');\n }\n\n await new Promise((resolve) => setTimeout(resolve, pollInterval));\n attempts++;\n }\n\n throw new Error('EUDI Legal PID verification timed out');\n }\n\n /**\n * Extract Legal PID claims from a verified VP token\n */\n async extractLegalPIDClaims(vpToken: string, _challenge: string): Promise<EUDILegalClaims> {\n const parts = vpToken.split('.');\n if (parts.length < 2) {\n throw new Error('Invalid VP token format');\n }\n\n const payload = base64urlDecode(parts[1]);\n const payloadObj = JSON.parse(new TextDecoder().decode(payload)) as {\n iss?: string;\n sub?: string;\n claims?: {\n legal_name?: string;\n lei?: string;\n legal_form?: string;\n registered_address?: string;\n vat_number?: string;\n tax_reference?: string;\n };\n _sd_claim?: unknown;\n };\n\n const holderDID = payloadObj.iss || payloadObj.sub || '';\n const claims = payloadObj.claims || {};\n const now = new Date().toISOString();\n\n return {\n holderDID,\n legalName: claims.legal_name || '',\n lei: claims.lei || '',\n legalForm: claims.legal_form,\n registeredAddress: claims.registered_address,\n vatNumber: claims.vat_number,\n taxReference: claims.tax_reference,\n verifiedAt: now,\n };\n }\n}\n\nexport function isEUDIAvailable(): Promise<boolean> {\n return Promise.resolve(true);\n}","/**\n * Unified Trust Status Types\n * @packageDocumentation\n */\n\nimport type { EUDIClaims, EUDILegalClaims } from './eudi.js';\nimport type { RootOfTrustInfo } from './vlei.js';\nimport type { ZKPClaims } from './zkp.js';\nimport type { ZKMMembershipProof } from './zkm.js';\n\nexport interface VerificationStatus {\n verified: boolean;\n individual?: {\n eudi?: EUDIClaims & { expired?: boolean };\n zkp?: ZKPClaims & { expired?: boolean };\n };\n organization?: {\n vlei?: RootOfTrustInfo & { expired?: boolean };\n eudiLegal?: EUDILegalClaims & { expired?: boolean };\n };\n /** ZK Membership proofs - privacy-preserving group membership verification */\n membership?: {\n zkm?: ZKMMembershipProof & { expired?: boolean };\n };\n}\n\nexport type TrustLevel = 'none' | 'verified';\n\nexport function isTrustExpired(trust: { expiresAt?: string }): boolean {\n if (!trust.expiresAt) return false;\n return new Date(trust.expiresAt) < new Date();\n}\n\nexport function getTrustLevelLabel(verified: boolean): string {\n return verified ? 'Verified' : 'Not verified';\n}"],"x_google_ignoreList":[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230],"mappings":"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"}
|