ode-ts-client 1.2.4 → 1.2.5-develop-b2school.202602161645
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/ode-ts-client.esm.js +1 -1
- package/dist/ode-ts-client.esm.js.map +1 -1
- package/dist/ode-ts-client.js +1 -1
- package/dist/ode-ts-client.js.map +1 -1
- package/dist/ode-ts-client.mjs +1 -1
- package/dist/ode-ts-client.mjs.map +1 -1
- package/dist/version.txt +1 -1
- package/dist/widget/LastInfos.widget.d.ts +8 -6
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ode-ts-client.esm.js","sources":["../src/ts/globals.ts","../src/ts/explorer/interfaces.ts","../node_modules/.pnpm/tslib@2.1.0/node_modules/tslib/tslib.es6.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/Subscription.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/config.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/noop.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/Subscriber.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/identity.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/pipe.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/Observable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/lift.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/refCount.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/Subject.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/AsyncSubject.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/Immediate.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/Scheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/asap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/queue.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/empty.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/caughtSchedule.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/from.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/fromArray.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/args.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/of.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/throwError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/Notification.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isObservable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/lastValueFrom.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/firstValueFrom.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/SequenceError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isDate.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/timeout.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/map.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/bindCallbackInternals.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/bindCallback.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/bindNodeCallback.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/createObject.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/concat.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/defer.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/connectable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/fromEventPattern.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/generate.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/iif.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/timer.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/interval.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/merge.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/never.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/onErrorResumeNext.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/onErrorResumeNext.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/pairs.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/not.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/filter.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/partition.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/race.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/range.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/using.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/zip.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/audit.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/auditTime.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/buffer.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/bufferCount.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/bufferToggle.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/bufferWhen.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/catchError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/reduce.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/toArray.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/joinAllInternals.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/combineAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/combineLatest.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/combineLatestWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/concatMap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/concatMapTo.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/concat.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/concatWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/fromSubscribable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/connect.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/count.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/debounce.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/take.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/delay.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/dematerialize.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/distinct.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/distinctUntilKeyChanged.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/elementAt.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/endWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/every.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/exhaust.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/expand.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/finalize.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/find.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/findIndex.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/first.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/groupBy.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/isEmpty.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/takeLast.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/last.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/materialize.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/max.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/flatMap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mergeMapTo.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/merge.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/min.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/multicast.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/pluck.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/publish.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/publishBehavior.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/publishLast.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/publishReplay.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/raceWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/repeat.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/repeatWhen.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/retry.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/retryWhen.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/sample.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/sampleTime.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/scan.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/sequenceEqual.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/share.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/single.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/skip.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/skipLast.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/skipUntil.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/startWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/switchAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/switchMapTo.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/switchScan.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/tap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/timeInterval.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/timeoutWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/timestamp.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/window.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/windowCount.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/windowTime.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/windowToggle.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/windowWhen.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/zipAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/zip.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/zipWith.js","../src/ts/notify/Framework.ts","../src/ts/notify/interfaces.ts","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/bind.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/utils.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/buildURL.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/InterceptorManager.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/transformData.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/cancel/isCancel.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/enhanceError.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/createError.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/settle.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/cookies.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/combineURLs.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/buildFullPath.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/adapters/xhr.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/defaults.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/dispatchRequest.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/mergeConfig.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/Axios.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/cancel/Cancel.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/cancel/CancelToken.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/spread.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/axios.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/index.js","../src/ts/transport/Http.ts","../src/ts/transport/Framework.ts","../src/ts/transport/interfaces.ts","../src/ts/session/Session.ts","../src/ts/session/Framework.ts","../src/ts/configure/Theme.ts","../src/ts/idiom/Idiom.ts","../src/ts/configure/User.ts","../src/ts/configure/AppConf.ts","../src/ts/configure/Analytics.ts","../src/ts/configure/Framework.ts","../src/ts/configure/interfaces.ts","../src/ts/session/interfaces.ts","../src/ts/widget/Framework.ts","../src/ts/widget/LastInfos.widget.ts","../src/ts/widget/interfaces.ts","../src/ts/apps/timeline/Notification.model.ts","../src/ts/apps/timeline/Framework.ts","../src/ts/apps/timeline/interfaces.ts","../src/ts/resources/ResourceService.ts","../src/ts/resources/BlogResourceService.ts","../src/ts/resources/MindmapResourceService.ts","../src/ts/cache/Service.ts","../src/ts/configure/Service.ts","../src/ts/directory/Service.ts","../src/ts/transport/Service.ts","../src/ts/rights/Service.ts","../src/ts/session/Service.ts","../src/ts/utils/StringUtils.ts","../src/ts/share/Service.ts","../src/ts/utils/MimeTypeUtils.ts","../src/ts/utils/FileTypeUtils.ts","../src/ts/workspace/Service.ts","../src/ts/idiom/Service.ts","../src/ts/analytics/Service.ts","../src/ts/services/OdeServices.ts","../src/ts/services/index.ts"],"sourcesContent":["//-------------------------------------\n//------------------ Global definitions\n//-------------------------------------\n\n//------------------------- Data types\n//-- Error codes\nexport const ERROR_CODE = {\n SUCCESS: \"0000\",\n UNKNOWN: \"0010\",\n NOT_INITIALIZED: \"0020\",\n NOT_SUPPORTED: \"0030\",\n APP_NOT_FOUND: \"0040\",\n AGENT_NOT_FOUND: \"0050\",\n TRANSPORT_ERROR: \"0060\",\n TIME_OUT: \"0070\",\n MALFORMED_DATA: \"0080\",\n NOT_LOGGED_IN: \"0090\",\n} as const;\nexport type ErrorCode = (typeof ERROR_CODE)[keyof typeof ERROR_CODE];\n\n//-- Applications\nexport const APP = {\n EXPLORER: \"explorer\",\n PORTAL: \"portal\",\n BLOG: \"blog\",\n EXERCIZER: \"exercizer\",\n TIMELINE: \"timeline\",\n CAS: \"cas\",\n VIDEO: \"video\",\n MINDMAP: \"mindmap\",\n\n // TODO compléter/trier les apps suivantes\n /*\n \"competences\"\n \"cahier-textes\"\n \"poll\"\n \"rack\"\n \"rbs\"\n \"searchengine\"\n \"sharebigfiles\"\n \"schoolbook\"\n \"archive\"\n \"admin\"\n \"cahier-de-texte\"\n \"wiki\"\n \"cns\"\n \"conversation\"\n \"paths\"\n \"parcours\"\n \"notebook\"\n \"scrap-book\"\n \"scrapbook\"\n \"account\"\n \"support\"\n \"workspace\"\n \"admin-portal\"\n \"stats\"\n \"userbook\" // FIXME userbook OR directory : the choice may impact some configurations, @see IXitiTrackingParams.NOM_PAGE for example\n \"directory\" // FIXME Keep in mind that ode-ts-client MUST not access the locationPath of the window !\n \"mindmap\"\n \"timelinegenerator\"\n \"actualites\"\n \"pad\"\n \"collaborativeeditor\"\n \"settings-class\"\n \"library\"\n \"visioconf\"\n \"Web-conference\"\n \"notes\"\n \"attendance\"\n \"calendar\"\n \"canal-numerique\"\n \"collaborative-wall\"\n \"statistics\"\n \"polls\"\n \"community\"\n \"forum\"\n \"pages\"\n \"website\"\n \"parametrage\"\n \"kne\"\n \"sacoche\"\n*/\n} as const;\nexport type App = (typeof APP)[keyof typeof APP]; // type App = \"explorer\" | \"blog\" | \"exercizer\"...\n\n//-- User preferences keys\nexport const USER_PREFS = {\n APPS: \"apps\",\n WIDGETS: \"widgets\",\n LANGUAGE: \"language\",\n AUTH_CONNECTOR_ACCESSED: \"authenticatedConnectorsAccessed\",\n CURSUS: \"cursus\",\n INFOTIP: \"infotip\",\n RGPD_COOKIES: \"rgpdCookies\",\n // TODO compléter\n} as const;\n","import { Observable } from \"rxjs\";\nimport { APP, App } from \"../globals\";\nimport { RightRole } from \"../services\";\n\n//-------------------------------------\n/* export abstract class ExplorerFrameworkFactory {\n //-------------------------------------\n static instance(): IExplorerFramework {\n return explorer;\n }\n} */\n\n/** Framework exploration capabilities offered to the client. */\n//-------------------------------------\nexport interface IExplorerFramework {\n //-------------------------------------\n /**\n * Create a new context to explore resources produced by an application.\n * @param types Types of resource to be managed in this context.\n * @param app Application which creates the new context.\n */\n createContext(types: ResourceType[], app: App): IExplorerContext;\n\n /**\n * Retrieve the underlying communication bus.\n */\n getBus(): IBus;\n}\n\n/** Context to explore resources from an application. */\n//-------------------------------------\nexport interface IExplorerContext {\n //-------------------------------------\n /**\n * @return true, if the context is initialized.\n */\n isInitialized(): boolean;\n /**\n * @return The initialized search context, or undefined if initialize() has not been called before.\n */\n getContext(): IContext | undefined;\n /**\n * @return search parameters in the current context, modifiable before any call to getResources() or initialize().\n */\n getSearchParameters(): ISearchParameters;\n /**\n * @return a stream of (search,result) tuples, generated by initialize() and getResources() which should be called by your searches or pagination.\n */\n latestResources(): Observable<{\n input: ISearchParameters;\n output: ISearchResults;\n }>;\n\n /**\n * Clear and reset the underlying context.\n */\n clear(): void;\n\n /**\n * Retrieve the first page of listed resources from the server.\n * Observers of the latestResources() will be notified.\n * Search parameters can be adjusted beforehand, @see getSearchParameters().\n * @return\n */\n initialize(): Promise<IContext>;\n\n /**\n * Retrieve a page of listed resources from the server.\n * Observers of the latestResources() will be notified.\n * Search parameters can be adjusted beforehand, @see getSearchParameters().\n */\n getResources(): Promise<GetResourcesResult>;\n\n /**\n * Retrieve subfolders of a parent folder, from the server.\n * @param parentId ID of the parent folder.\n */\n getSubFolders(parentId: ID): Promise<GetSubFoldersResult>;\n\n /**\n * Create a new [sub]folder.\n * @param resourceType Type of resources the created folder will contain.\n * @param parentId ID of the parent folder, or \"default\" for the root folder.\n * @param name Name of the created folder.\n */\n createFolder(\n resourceType: ResourceType,\n parentId: ID | \"default\",\n name: string,\n ): Promise<CreateFolderResult>;\n\n /**\n * Modify the properties of a folder.\n * @param folderId ID of the folder to modify.\n * @param resourceType Type of resources the modified folder will contain.\n * @param parentId ID of the parent folder.\n * @param name Name of the folder.\n */\n updateFolder(\n folderId: ID,\n resourceType: ResourceType,\n parentId: ID | \"default\",\n name: string,\n ): Promise<UpdateFolderResult>;\n\n /**\n * Copy resources and folders into a folder.\n * @param targetId ID of the destination folder.\n * @param resourceIds Array of resources ID to copy.\n * @param folderIds Array of folders ID to copy.\n */\n copy(targetId: ID, resourceIds: ID[], folderIds: ID[]): Promise<void>;\n\n /**\n * Move resources and folders into a folder.\n * @param targetId ID of the destination folder.\n * @param resourceIds Array of resources ID to move.\n * @param folderIds Array of folders ID to move.\n */\n move(targetId: ID, resourceIds: ID[], folderIds: ID[]): Promise<void>;\n\n /**\n * Delete resources and folders.\n * @param resourceIds Array of resources ID to delete.\n * @param folderIds Array of folders ID to delete.\n */\n delete(resourceIds: ID[], folderIds: ID[]): Promise<void>; //FIXME 1 seul tableau en paramètres ?\n\n /**\n * Trash / Untrash resources and folders.\n * @param trash boolean set status trash or untrash\n * @param resourceIds Array of resources ID to delete.\n * @param folderIds Array of folders ID to delete.\n */\n trash(trash: boolean, resourceIds: ID[], folderIds: ID[]): Promise<void>;\n\n /** Retrieves which properties of the resource(s) are manageable. */\n manageProperties(\n resourceType: ResourceType,\n resources: IResource[],\n ): Promise<ManagePropertiesResult>;\n /** Update managed properties. */\n updateProperties(\n resourceType: ResourceType,\n resources: IResource[],\n props: { [key in PropKeyType]?: string },\n ): Promise<UpdatePropertiesResult>;\n\n /* Share resources */\n //share( resourceIds:ID[] /*, rights:IGroupUserRight[]*/ ): Promise<void>;\n\n /** Publish to Library */\n publish(\n resourceType: ResourceType,\n parameters: PublishParameters,\n ): Promise<PublishResult>;\n\n /*//TODO ajouter des méthodes pour les autres actions du toaster ?\n CREATE: \"create\"\n ,OPEN: \"open\"\n ,COMMENT: \"comment\"\n ,EXPORT: \"export\"\n ,PUBLISH: \"publish\"\n ,PRINT: \"print\"\n*/\n}\n\n//------------------------- Data types\n//-- Resources\nexport const RESOURCE = {\n FOLDER: \"folder\",\n BLOG: \"blog\",\n EXERCISE: \"exercise\",\n MINDMAP: \"mindmap\",\n} as const;\n\nexport type ResourceType = (typeof RESOURCE)[keyof typeof RESOURCE];\n\n//-- App/Resource link\nexport const appNameForResource: { [R in ResourceType]: App } = {\n folder: APP.EXPLORER,\n blog: APP.BLOG,\n exercise: APP.EXERCIZER,\n mindmap: APP.MINDMAP,\n} as const;\n\n//-- Actions (toaster)\nexport const ACTION = {\n INITIALIZE: \"initialize\",\n SEARCH: \"search\",\n CREATE: \"create\",\n OPEN: \"open\",\n MANAGE: \"manage\", // Query properties metadata\n UPD_PROPS: \"properties\", // Update properties\n COMMENT: \"comment\",\n DELETE: \"delete\",\n TRASH: \"trash\",\n RESTORE: \"restore\",\n MOVE: \"move\",\n COPY: \"copy\",\n EXPORT: \"export\",\n SHARE: \"share\",\n PRINT: \"print\",\n PAGES_LIST: \"pages_list\",\n DISTRIBUTE: \"distribute\",\n REGISTER: \"register\",\n PUBLISH: \"publish\",\n PUBLISH_MOODLE: \"publish_moodle\",\n} as const;\n\nexport type ActionType = (typeof ACTION)[keyof typeof ACTION];\n\n//-- Folders\nexport const FOLDER = {\n BIN: \"bin\",\n DEFAULT: \"default\",\n} as const;\n\nexport type FolderType = (typeof FOLDER)[keyof typeof FOLDER];\n\n//-- Filters\nexport const BOOLEAN_FILTER = {\n OWNER: \"owner\",\n SHARED: \"shared\",\n PUBLIC: \"public\",\n FAVORITE: \"favorite\",\n} as const;\nexport type BooleanFilterType =\n (typeof BOOLEAN_FILTER)[keyof typeof BOOLEAN_FILTER];\nexport const STRING_FILTER = {\n // FOLDER: \"folder\" // is instead an ID\n} as const;\nexport type StringFilterType =\n (typeof STRING_FILTER)[keyof typeof STRING_FILTER];\n\n//-- Sort orders\nexport const SORT_ORDER = {\n ASC: \"asc\",\n DESC: \"desc\",\n} as const;\nexport type SortOrderType = (typeof SORT_ORDER)[keyof typeof SORT_ORDER];\nexport const SORT_BY = {\n NAME: \"name\",\n MODIFY_DATE: \"updatedAt\",\n CREATEDAT: \"createdAt\",\n APPLICATION: \"application\",\n RESOURCE_TYPE: \"resourceType\",\n /*\n//FIXME On devrait pouvoir trier sur tout champ issu d'un type de ressource (name, createdAt, creatorId...) voir IResource\n createdAt: string;\n creatorId: string;\n authorName: string;\n modifierId: ID;\n modifierName: string;\n modifiedAt: string;\n folderId?: ID; // TODO à confirmer\n public?: boolean;\n shared?: boolean;\n favorite?: boolean;\n comments?: number;\n*/\n} as const;\nexport type SortByType = (typeof SORT_BY)[keyof typeof SORT_BY];\n\n//-- Semantique\nexport type ID = string;\nexport type StringFilterValue = {\n value: string; // Value of the filter (as sent to backend)\n i18n: string; // Translation key of the filter (as displayed in frontend)\n};\n\n//-- Properties management\nexport const PROP_KEY = {\n TITLE: \"title\",\n IMAGE: \"image\",\n COLOR: \"color\",\n DESCRIPTION: \"description\",\n URL: \"url\",\n // ,GENERIC: \"generic\" //NOT USED AT THE MOMENT\n} as const;\nexport type PropKeyType = (typeof PROP_KEY)[keyof typeof PROP_KEY];\n\nexport const PROP_MODE = {\n READONLY: \"RO\",\n READWRITE: \"RW\",\n} as const;\nexport type PropModeType = (typeof PROP_MODE)[keyof typeof PROP_MODE];\n\nexport const PROP_TYPE = {\n TEXT: \"text\",\n NUMBER: \"number\",\n DATE: \"date\",\n IMAGE: \"image\",\n // TODO more types ? Currencies...\n} as const;\nexport type PropTypeType = (typeof PROP_TYPE)[keyof typeof PROP_TYPE];\n\nexport const PROP_FORMAT = {\n PLAIN: \"plain\", // Plain text or number value, no formatting\n // TODO more format to come ? Full dates, months only, timestamps, regexp....\n} as const;\nexport type PropFormatType = (typeof PROP_FORMAT)[keyof typeof PROP_FORMAT];\n\n//------------------------- Data models\nexport type SearchResultHandler = (\n input: IActionParameters,\n output: IActionResult,\n) => void;\n//-------------------------------------\nexport interface ISearchParameters {\n //-------------------------------------\n types: ResourceType[];\n app: App;\n filters: FilterValues;\n orders?: OrderValues;\n pagination: IPagination;\n search?: String;\n trashed?: boolean;\n}\n//-------------------------------------\nexport interface ISearchResults {\n //-------------------------------------\n folders: IFolder[];\n pagination: IPagination;\n resources: IResource[];\n searchConfig?: {minLength:number}\n}\n//-------------------------------------\nexport interface IContext extends ISearchResults {\n //-------------------------------------\n preferences: IPreferences;\n}\n\n//-------------------------------------\nexport interface IAction {\n //-------------------------------------\n id: ActionType;\n available: boolean; // L'utilisateur a le droit workflow ou pas\n target?: \"actionbar\";\n workflow: string; // Droit workflow\n right?: RightRole;\n //FIXME comment relier les actions aux behaviours, qu'on va remplacer.\n}\n\n//-------------------------------------\nexport interface IFolder {\n //-------------------------------------\n id: ID;\n parentId: ID;\n name: string;\n type: FolderType | ID;\n childNumber: number; // à minima, 0 ou 1...\n trashed: boolean;\n rights: string[];\n ancestors: string[];\n}\n\n//-------------------------------------\nexport interface IFilter {\n //-------------------------------------\n id: BooleanFilterType | StringFilterType;\n defaultValue?: string | string[] | boolean | boolean[];\n values?: StringFilterValue[];\n}\n\n//-------------------------------------\nexport interface IOrder {\n //-------------------------------------\n id: SortByType;\n defaultValue?: SortOrderType;\n i18n: string;\n}\n\n//-------------------------------------\nexport interface IPagination {\n // TODO à tester\n //-------------------------------------\n startIdx: number;\n maxIdx?: number; // Si elastic search renvoie bien le nombre de hits\n pageSize: number; // Sera égal à la valeur paramétrée côté serveur\n}\n\n//-------------------------------------\nexport interface IProperty {\n //-------------------------------------\n key: PropKeyType;\n i18n?: string;\n}\n\n/* NOT USED AT THE MOMENT\n Additional metadata when key===PROP_KEY.GENERIC\n//-------------------------------------\nexport interface IGenericProperty extends IProperty {\n//-------------------------------------\n property:keyof IResource;\n mode:PropModeType;\n type:PropTypeType;\n format?:PropFormatType[];\n}\n*/\n\n//-------------------------------------\nexport interface IResource {\n //-------------------------------------\n application: App;\n assetId: string;\n creatorId: string;\n creatorName: string;\n comments?: number;\n createdAt: string; // FIXME: S'entendre sur un format de date\n favorite?: boolean;\n folderIds?: ID[]; // TODO à confirmer\n id: ID;\n modifiedAt: string; // FIXME: S'entendre sur un format de date\n modifierId: ID;\n modifierName: string;\n name: string;\n slug?: string;\n public?: boolean;\n shared?: boolean;\n thumbnail: string; // URL : requis; ou bien déductible d’une convention ?\n updatedAt: string;\n views?: number;\n trashed: boolean;\n trashedBy?: string[];\n rights: RightStringified[];\n description: string;\n}\n\nexport type RightStringified = string;\n\n//-------------------------------------\nexport interface IPreferences {\n //-------------------------------------\n view: \"card\" | \"list\";\n}\n\n//------------------------- Service call parameters\n//-------------------------------------\nexport interface IActionParameters {\n //-------------------------------------\n}\nexport type GetContextParameters = IActionParameters & ISearchParameters;\nexport type GetResourcesParameters = IActionParameters & ISearchParameters;\nexport type CreateFolderParameters = IActionParameters & {\n app: App;\n type: ResourceType;\n parentId: ID | \"default\";\n name: string;\n};\nexport type UpdateFolderParameters = IActionParameters & {\n folderId: ID;\n app: App;\n type: ResourceType;\n parentId: ID | \"default\";\n name: string;\n};\nexport type OpenParameters = IActionParameters & {\n resourceId: ID;\n};\nexport type PrintParameters = IActionParameters & {\n resourceId: ID;\n withComments?: boolean;\n};\nexport type CopyParameters = IActionParameters & {\n application: string;\n folderId: ID;\n resourceIds: ID[];\n folderIds: ID[];\n};\nexport type MoveParameters = IActionParameters & {\n application: string;\n folderId: ID;\n resourceIds: ID[];\n folderIds: ID[];\n};\nexport type DeleteParameters = IActionParameters & {\n application: string;\n resourceType: string;\n resourceIds: ID[];\n folderIds: ID[];\n};\nexport type TrashParameters = IActionParameters & {\n trash: boolean;\n application: string;\n resourceType: string;\n resourceIds: ID[];\n folderIds: ID[];\n};\nexport type ManagePropertiesParameters = IActionParameters & {\n resources: IResource[];\n};\nexport type UpdatePropertiesParameters = IActionParameters & {\n resources: IResource[];\n props: { [key in PropKeyType]?: string };\n};\n\nexport type PublishParameters = IActionParameters & {\n userId: string | undefined;\n title: string;\n cover: Blob;\n language: string;\n activityType: string[];\n subjectArea: string[];\n age: [string, string];\n description: string;\n keyWords: string;\n application: string | undefined;\n licence: string;\n teacherAvatar: Blob;\n resourceId: string;\n resourceEntId: string;\n userStructureName: string;\n};\n\n/* NOT USED AT THE MOMENT (and probably never)\n//-------------------------------------\nexport interface IGroupUserRight {\n//-------------------------------------\n read: boolean;\n contribute: boolean;\n manage: boolean;\n comment: boolean;\n userId?: ID;\n groupId?: ID;\n}\n*/\n\nexport type FilterValues = { [B in BooleanFilterType]?: boolean } & {\n [S in StringFilterType]?: string;\n} & { folder?: ID };\nexport type OrderValues = { [O in SortByType]?: SortOrderType };\n\n//------------------------- Service call results\n//-------------------------------------\nexport interface IActionResult {\n //-------------------------------------\n // TODO : generic success, failure, error codes... should be placed here\n}\n\nexport type GetContextResult = IActionResult & IContext;\n\nexport type GetResourcesResult = IActionResult & ISearchResults;\n\nexport type GetSubFoldersResult = IActionResult & { folders: IFolder[] };\nexport type CreateFolderResult = IActionResult &\n IFolder & { createdAt: string; creator_id?: string };\nexport type UpdateFolderResult = CreateFolderResult & {\n updatedAt: string;\n parentId: ID | \"default\";\n};\nexport type ManagePropertiesResult = IActionResult & {\n genericProps: IProperty[];\n};\nexport type UpdatePropertiesResult = IActionResult & { resources: IResource[] };\nexport type PublishResult = IActionResult & {\n details: {\n application: string;\n created_at: string;\n description: string;\n front_url: string;\n id: string;\n title: string;\n };\n message: string;\n reason: string;\n success: boolean;\n};\n\n//-------------------------------------\n//-------------------- API (LOW-LEVEL)\n//-------------------------------------\nexport interface IBus {\n //-------------------------------------\n /**\n * Ask any agent on the bus to perform an action on a type of resource.\n * @param res The type of resource in concern.\n * @param action The action requested on the type of resource.\n * @param parameters The [specific] parameters for the action.\n * @return The result of the action from the agent.\n */\n publish(\n res: ResourceType,\n action: ActionType,\n parameters: IActionParameters,\n ): Promise<IActionResult>;\n\n /**\n * Subscribe to ActionResults any agent produces for a given ResourceType and ActionType.\n * @param res The type of resource in concern.\n * @param action The action in concern.\n * @return A stream of IActionParameters and IActionResult\n */\n subscribe(\n res: ResourceType,\n action: ActionType,\n ): Observable<{ input: IActionParameters; output: IActionResult }>;\n\n /** Register an agent able to resolve an action on a type of resource. */\n setAgentFor(res: ResourceType, action: ActionType, agent: IBusAgent): void;\n\n /** Retrieve an agent able to resolve an action on a type of resource. */\n getAgentFor(res: ResourceType, action: ActionType): IBusAgent | null;\n}\n\n//-------------------------------------\nexport interface IBusAgent {\n //-------------------------------------\n /** Ask this agent to resolve an action. */\n activate(\n res: ResourceType,\n action: ActionType,\n parameters: IActionParameters,\n ): Promise<IActionResult>;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\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); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._teardowns = 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 initialTeardown = this.initialTeardown;\n if (isFunction(initialTeardown)) {\n try {\n initialTeardown();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _teardowns = this._teardowns;\n if (_teardowns) {\n this._teardowns = null;\n try {\n for (var _teardowns_1 = __values(_teardowns), _teardowns_1_1 = _teardowns_1.next(); !_teardowns_1_1.done; _teardowns_1_1 = _teardowns_1.next()) {\n var teardown_1 = _teardowns_1_1.value;\n try {\n execTeardown(teardown_1);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_teardowns_1_1 && !_teardowns_1_1.done && (_b = _teardowns_1.return)) _b.call(_teardowns_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execTeardown(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._teardowns = (_a = this._teardowns) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _teardowns = this._teardowns;\n _teardowns && arrRemove(_teardowns, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execTeardown(teardown) {\n if (isFunction(teardown)) {\n teardown();\n }\n else {\n teardown.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) || setTimeout).apply(void 0, __spreadArray([], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","export var COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error,\n };\n}\n//# sourceMappingURL=NotificationFactories.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends, __read, __spreadArray } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var next;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n (next = observerOrNext.next, error = observerOrNext.error, complete = observerOrNext.complete);\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n }\n else {\n context_1 = observerOrNext;\n }\n next = next === null || next === void 0 ? void 0 : next.bind(context_1);\n error = error === null || error === void 0 ? void 0 : error.bind(context_1);\n complete = complete === null || complete === void 0 ? void 0 : complete.bind(context_1);\n }\n _this.destination = {\n next: next ? wrapForErrorHandling(next, _this) : noop,\n error: wrapForErrorHandling(error !== null && error !== void 0 ? error : defaultErrorHandler, _this),\n complete: complete ? wrapForErrorHandling(complete, _this) : noop,\n };\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction wrapForErrorHandling(handler, instance) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n try {\n handler.apply(void 0, __spreadArray([], __read(args)));\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(err);\n }\n else {\n reportUnhandledError(err);\n }\n }\n };\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\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 var closed = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function refCount() {\n return operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = new OperatorSubscriber(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}\n//# sourceMappingURL=refCount.js.map","import { __extends } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../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 (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();\n var subject_1 = this.getSubject();\n connection.add(this.source.subscribe(new OperatorSubscriber(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.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return higherOrderRefCount()(this);\n };\n return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\n//# sourceMappingURL=ConnectableObservable.js.map","export var performanceTimestampProvider = {\n now: function () {\n return (performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=performanceTimestampProvider.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Subscription } from '../Subscription';\nexport var animationFrameProvider = {\n schedule: function (callback) {\n var request = requestAnimationFrame;\n var cancel = cancelAnimationFrame;\n var delegate = 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(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 = 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 = 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","import { Observable } from '../../Observable';\nimport { Subscription } from '../../Subscription';\nimport { performanceTimestampProvider } from '../../scheduler/performanceTimestampProvider';\nimport { animationFrameProvider } from '../../scheduler/animationFrameProvider';\nexport function animationFrames(timestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\nfunction animationFramesFactory(timestampProvider) {\n var schedule = animationFrameProvider.schedule;\n return new Observable(function (subscriber) {\n var subscription = new Subscription();\n var provider = timestampProvider || performanceTimestampProvider;\n var start = provider.now();\n var run = function (timestamp) {\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start\n });\n if (!subscriber.closed) {\n subscription.add(schedule(run));\n }\n };\n subscription.add(schedule(run));\n return subscription;\n });\n}\nvar DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\n//# sourceMappingURL=animationFrames.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n var copy = _this.observers.slice();\n try {\n for (var copy_1 = __values(copy), copy_1_1 = copy_1.next(); !copy_1_1.done; copy_1_1 = copy_1.next()) {\n var observer = copy_1_1.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (copy_1_1 && !copy_1_1.done && (_a = copy_1.return)) _a.call(copy_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = 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 _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n return hasError || isStopped\n ? EMPTY_SUBSCRIPTION\n : (observers.push(subscriber), new Subscription(function () { return arrRemove(observers, subscriber); }));\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './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));\nexport { AsyncSubject };\n//# sourceMappingURL=AsyncSubject.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) || setInterval).apply(void 0, __spreadArray([], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n 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 = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n intervalProvider.clearInterval(id);\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(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","var 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}\nexport var 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};\nexport var TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nvar setImmediate = Immediate.setImmediate, clearImmediate = Immediate.clearImmediate;\nexport var 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 = 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 = 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","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './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.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n AsapAction.prototype.recycleAsyncId = 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.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n immediateProvider.clearImmediate(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n _this._scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './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 this._scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n action = action || actions.shift();\n var count = actions.length;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this._active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asapScheduler = new AsapScheduler(AsapAction);\nexport var asap = asapScheduler;\n//# sourceMappingURL=asap.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './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) ?\n _super.prototype.execute.call(this, state, delay) :\n 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 return scheduler.flush(this);\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './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));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queueScheduler = new QueueScheduler(QueueAction);\nexport var queue = queueScheduler;\n//# sourceMappingURL=queue.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { animationFrameProvider } from './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.requestAnimationFrame(function () { return scheduler.flush(undefined); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = 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.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction));\nexport { AnimationFrameAction };\n//# sourceMappingURL=AnimationFrameAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './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 this._scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n action = action || actions.shift();\n var count = actions.length;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this._active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.js.map","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport var animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport var animationFrame = animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './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));\nexport { 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.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 true;\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));\nexport { VirtualAction };\n//# sourceMappingURL=VirtualTimeScheduler.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { Observable } from '../Observable';\nexport function schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n return scheduler.schedule(function () {\n return input.then(function (value) {\n subscriber.add(scheduler.schedule(function () {\n subscriber.next(value);\n subscriber.add(scheduler.schedule(function () { return subscriber.complete(); }));\n }));\n }, function (err) {\n subscriber.add(scheduler.schedule(function () { return subscriber.error(err); }));\n });\n });\n });\n}\n//# sourceMappingURL=schedulePromise.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","export function caughtSchedule(subscriber, scheduler, execute, delay) {\n if (delay === void 0) { delay = 0; }\n var subscription = scheduler.schedule(function () {\n try {\n execute.call(this);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n subscriber.add(subscription);\n return subscription;\n}\n//# sourceMappingURL=caughtSchedule.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { caughtSchedule } from '../util/caughtSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n subscriber.add(scheduler.schedule(function () {\n iterator = input[Symbol_iterator]();\n caughtSchedule(subscriber, scheduler, function () {\n var _a = iterator.next(), value = _a.value, done = _a.done;\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n });\n }));\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var iterator = input[Symbol.asyncIterator]();\n sub.add(scheduler.schedule(function () {\n var _this = this;\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n _this.schedule();\n }\n });\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { Observable } from '../Observable';\nimport { scheduled } from '../scheduled/scheduled';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nfunction fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nfunction fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nfunction fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nfunction fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nfunction fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=from.js.map","import { scheduleArray } from '../scheduled/scheduleArray';\nimport { fromArrayLike } from './from';\nexport function internalFromArray(input, scheduler) {\n return scheduler ? scheduleArray(input, scheduler) : fromArrayLike(input);\n}\n//# sourceMappingURL=fromArray.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","import { internalFromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nimport { popScheduler } from '../util/args';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n return scheduler ? scheduleArray(args, scheduler) : internalFromArray(args);\n}\n//# sourceMappingURL=of.js.map","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nexport function throwError(errorOrErrorFactory, scheduler) {\n var errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function () { return errorOrErrorFactory; };\n var init = function (subscriber) { return subscriber.error(errorFactory()); };\n return new Observable(scheduler ? function (subscriber) { return scheduler.schedule(init, 0, subscriber); } : init);\n}\n//# sourceMappingURL=throwError.js.map","import { EMPTY } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { isFunction } from './util/isFunction';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (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((_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(value)\n :\n kind === 'E'\n ?\n throwError(function () { return error; })\n :\n kind === 'C'\n ?\n 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}());\nexport { Notification };\nexport function 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}\n//# sourceMappingURL=Notification.js.map","import { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n//# sourceMappingURL=isObservable.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) { return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n}; });\n//# sourceMappingURL=EmptyError.js.map","import { EmptyError } from './util/EmptyError';\nexport function 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());\n }\n },\n });\n });\n}\n//# sourceMappingURL=lastValueFrom.js.map","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: function () {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=firstValueFrom.js.map","import { createErrorClass } from './createErrorClass';\nexport var ArgumentOutOfRangeError = 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","import { createErrorClass } from './createErrorClass';\nexport var NotFoundError = 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","import { createErrorClass } from './createErrorClass';\nexport var SequenceError = 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","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { caughtSchedule } from '../util/caughtSchedule';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport var TimeoutError = createErrorClass(function (_super) {\n return function TimeoutErrorImpl(info) {\n if (info === void 0) { info = null; }\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n };\n});\nexport function timeout(config, schedulerArg) {\n var _a = (isValidDate(config)\n ? { first: config }\n : typeof config === 'number'\n ? { each: config }\n : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d;\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return operate(function (source, subscriber) {\n var originalSourceSubscription;\n var timerSubscription;\n var lastValue = null;\n var seen = 0;\n var startTimer = function (delay) {\n timerSubscription = caughtSchedule(subscriber, scheduler, function () {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen,\n })).subscribe(subscriber);\n }, delay);\n };\n originalSourceSubscription = source.subscribe(new OperatorSubscriber(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 startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n });\n}\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n//# sourceMappingURL=timeout.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return subscriber.add(scheduler.schedule(function () { return subscriber.next(value); }, delay)); }, function () { return subscriber.add(scheduler.schedule(function () { return subscriber.complete(); }, delay)); }, function (err) { return subscriber.add(scheduler.schedule(function () { return subscriber.error(err); }, delay)); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { isScheduler } from '../util/isScheduler';\nimport { Observable } from '../Observable';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { observeOn } from '../operators/observeOn';\nimport { AsyncSubject } from '../AsyncSubject';\nexport function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (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(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(scheduler), 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();\n var uninitialized = true;\n return new 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}\n//# sourceMappingURL=bindCallbackInternals.js.map","import { bindCallbackInternals } from './bindCallbackInternals';\nexport function bindCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals(false, callbackFunc, resultSelector, scheduler);\n}\n//# sourceMappingURL=bindCallback.js.map","import { bindCallbackInternals } from './bindCallbackInternals';\nexport function bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals(true, callbackFunc, resultSelector, scheduler);\n}\n//# sourceMappingURL=bindNodeCallback.js.map","var isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n if (isArray(first_1)) {\n return { args: first_1, keys: null };\n }\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) { return first_1[key]; }),\n keys: keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","export function createObject(keys, values) {\n return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\n//# sourceMappingURL=createObject.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var resultSelector = popResultSelector(args);\n var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n if (observables.length === 0) {\n return from([], scheduler);\n }\n var result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n function (values) { return createObject(keys, values); }\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) { valueTransform = identity; }\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n subscription.add(scheduler.schedule(execute));\n }\n else {\n execute();\n }\n}\n//# sourceMappingURL=combineLatest.js.map","import { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalTeardown) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(new OperatorSubscriber(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 innerSubScheduler ? subscriber.add(innerSubScheduler.schedule(function () { return doInnerSub(bufferedValue); })) : doInnerSub(bufferedValue);\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(new OperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalTeardown === null || additionalTeardown === void 0 ? void 0 : additionalTeardown();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { internalFromArray } from './fromArray';\nimport { popScheduler } from '../util/args';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(internalFromArray(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './from';\nexport function defer(observableFactory) {\n return new Observable(function (subscriber) {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=defer.js.map","import { Subject } from '../Subject';\nimport { Observable } from '../Observable';\nimport { defer } from './defer';\nvar DEFAULT_CONFIG = {\n connector: function () { return new Subject(); },\n resetOnDisconnect: true,\n};\nexport function 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(function (subscriber) {\n return subject.subscribe(subscriber);\n });\n result.connect = function () {\n if (!connection || connection.closed) {\n connection = 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}\n//# sourceMappingURL=connectable.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './from';\nimport { popResultSelector } from '../util/args';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nexport function forkJoin() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = popResultSelector(args);\n var _a = argsArgArrayOrObject(args), sources = _a.args, keys = _a.keys;\n var result = new 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(sources[sourceIndex]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n }, function () {\n if (!--remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? 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(resultSelector)) : result;\n}\n//# sourceMappingURL=forkJoin.js.map","import { __read } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { internalFromArray } from './fromArray';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(internalFromArray(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nexport function fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs(resultSelector));\n }\n return new 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(removeHandler) ? function () { return removeHandler(handler, retValue); } : undefined;\n });\n}\n//# sourceMappingURL=fromEventPattern.js.map","import { __generator } from \"tslib\";\nimport { identity } from '../util/identity';\nimport { isScheduler } from '../util/isScheduler';\nimport { defer } from './defer';\nimport { scheduleIterable } from '../scheduled/scheduleIterable';\nexport function 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 : _b, scheduler = _a.scheduler);\n }\n else {\n initialState = initialStateOrOptions;\n if (!resultSelectorOrScheduler || isScheduler(resultSelectorOrScheduler)) {\n resultSelector = 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((scheduler\n ?\n function () { return scheduleIterable(gen(), scheduler); }\n :\n gen));\n}\n//# sourceMappingURL=generate.js.map","import { defer } from './defer';\nexport function iif(condition, trueResult, falseResult) {\n return defer(function () { return (condition() ? trueResult : falseResult); });\n}\n//# sourceMappingURL=iif.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period, scheduler) {\n if (period === void 0) { period = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n//# sourceMappingURL=interval.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { internalFromArray } from './fromArray';\nimport { innerFrom } from './from';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(internalFromArray(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var nextSources = argsOrArgArray(sources);\n return operate(function (source, subscriber) {\n var remaining = __spreadArray([source], __read(nextSources));\n var subscribeNext = function () {\n if (!subscriber.closed) {\n if (remaining.length > 0) {\n var nextSource = void 0;\n try {\n nextSource = innerFrom(remaining.shift());\n }\n catch (err) {\n subscribeNext();\n return;\n }\n var innerSub = new OperatorSubscriber(subscriber, undefined, noop, noop);\n subscriber.add(nextSource.subscribe(innerSub));\n innerSub.add(subscribeNext);\n }\n else {\n subscriber.complete();\n }\n }\n };\n subscribeNext();\n });\n}\n//# sourceMappingURL=onErrorResumeNext.js.map","import { EMPTY } from './empty';\nimport { onErrorResumeNext as onErrorResumeNextWith } from '../operators/onErrorResumeNext';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nexport function onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return onErrorResumeNextWith(argsOrArgArray(sources))(EMPTY);\n}\n//# sourceMappingURL=onErrorResumeNext.js.map","import { from } from './from';\nexport function pairs(obj, scheduler) {\n return from(Object.entries(obj), scheduler);\n}\n//# sourceMappingURL=pairs.js.map","export function not(pred, thisArg) {\n return function (value, index) { return !pred.call(thisArg, value, index); };\n}\n//# sourceMappingURL=not.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { not } from '../util/not';\nimport { filter } from '../operators/filter';\nimport { innerFrom } from './from';\nexport function partition(source, predicate, thisArg) {\n return [filter(predicate, thisArg)(innerFrom(source)), filter(not(predicate, thisArg))(innerFrom(source))];\n}\n//# sourceMappingURL=partition.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './from';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function race() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n sources = argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\nexport function raceInit(sources) {\n return function (subscriber) {\n var subscriptions = [];\n var _loop_1 = function (i) {\n subscriptions.push(innerFrom(sources[i]).subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=race.js.map","import { Observable } from '../Observable';\nimport { EMPTY } from './empty';\nexport function range(start, count, scheduler) {\n if (count == null) {\n count = start;\n start = 0;\n }\n if (count <= 0) {\n return EMPTY;\n }\n var end = count + start;\n return new 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}\n//# sourceMappingURL=range.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './from';\nimport { EMPTY } from './empty';\nexport function using(resourceFactory, observableFactory) {\n return new Observable(function (subscriber) {\n var resource = resourceFactory();\n var result = observableFactory(resource);\n var source = result ? innerFrom(result) : EMPTY;\n source.subscribe(subscriber);\n return function () {\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n//# sourceMappingURL=using.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { innerFrom } from './from';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { EMPTY } from './empty';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { popResultSelector } from '../util/args';\nexport function zip() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = popResultSelector(args);\n var sources = argsOrArgArray(args);\n return sources.length\n ? new 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(sources[sourceIndex]).subscribe(new OperatorSubscriber(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;\n}\n//# sourceMappingURL=zip.js.map","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function audit(durationSelector) {\n return 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(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe((durationSubscriber = new OperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, function () {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=audit.js.map","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler) {\n if (scheduler === void 0) { scheduler = async; }\n return audit(function () { return timer(duration, scheduler); });\n}\n//# sourceMappingURL=auditTime.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function buffer(closingNotifier) {\n return operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n closingNotifier.subscribe(new OperatorSubscriber(subscriber, function () {\n var b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n }, noop));\n return function () {\n currentBuffer = null;\n };\n });\n}\n//# sourceMappingURL=buffer.js.map","import { __values } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nexport function bufferCount(bufferSize, startBufferEvery) {\n if (startBufferEvery === void 0) { startBufferEvery = null; }\n startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize;\n return operate(function (source, subscriber) {\n var buffers = [];\n var count = 0;\n source.subscribe(new OperatorSubscriber(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(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}\n//# sourceMappingURL=bufferCount.js.map","import { __values } from \"tslib\";\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { asyncScheduler } from '../scheduler/async';\nimport { popScheduler } from '../util/args';\nexport function 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 = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;\n var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxBufferSize = otherArgs[1] || Infinity;\n return 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(bufferRecords, record);\n subscriber.next(buffer);\n restartOnEmit && startBuffer();\n };\n var startBuffer = function () {\n if (bufferRecords) {\n var subs = new 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 subs.add(scheduler.schedule(function () { return emit(record_1); }, bufferTimeSpan));\n }\n };\n bufferCreationInterval !== null && bufferCreationInterval >= 0\n ?\n subscriber.add(scheduler.schedule(function () {\n startBuffer();\n !this.closed && subscriber.add(this.schedule(null, bufferCreationInterval));\n }, bufferCreationInterval))\n : (restartOnEmit = true);\n startBuffer();\n var bufferTimeSubscriber = new OperatorSubscriber(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}\n//# sourceMappingURL=bufferTime.js.map","import { __values } from \"tslib\";\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { arrRemove } from '../util/arrRemove';\nexport function bufferToggle(openings, closingSelector) {\n return operate(function (source, subscriber) {\n var buffers = [];\n innerFrom(openings).subscribe(new OperatorSubscriber(subscriber, function (openValue) {\n var buffer = [];\n buffers.push(buffer);\n var closingSubscription = new Subscription();\n var emitBuffer = function () {\n arrRemove(buffers, buffer);\n subscriber.next(buffer);\n closingSubscription.unsubscribe();\n };\n closingSubscription.add(innerFrom(closingSelector(openValue)).subscribe(new OperatorSubscriber(subscriber, emitBuffer, noop)));\n }, noop));\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=bufferToggle.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nexport function bufferWhen(closingSelector) {\n return 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(closingSelector()).subscribe((closingSubscriber = new OperatorSubscriber(subscriber, openBuffer, noop)));\n };\n openBuffer();\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=bufferWhen.js.map","import { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate(function (source, subscriber) {\n var innerSub = null;\n var syncUnsub = false;\n var handledResult;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, undefined, function (err) {\n handledResult = 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}\n//# sourceMappingURL=catchError.js.map","import { OperatorSubscriber } from './OperatorSubscriber';\nexport function 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(new OperatorSubscriber(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}\n//# sourceMappingURL=scanInternals.js.map","import { scanInternals } from './scanInternals';\nimport { operate } from '../util/lift';\nexport function reduce(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n//# sourceMappingURL=reduce.js.map","import { reduce } from './reduce';\nimport { operate } from '../util/lift';\nvar arrReducer = function (arr, value) { return (arr.push(value), arr); };\nexport function toArray() {\n return operate(function (source, subscriber) {\n reduce(arrReducer, [])(source).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=toArray.js.map","import { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { mergeMap } from './mergeMap';\nimport { toArray } from './toArray';\nexport function joinAllInternals(joinFn, project) {\n return pipe(toArray(), mergeMap(function (sources) { return joinFn(sources); }), project ? mapOneOrManyArgs(project) : identity);\n}\n//# sourceMappingURL=joinAllInternals.js.map","import { combineLatest } from '../observable/combineLatest';\nimport { joinAllInternals } from './joinAllInternals';\nexport function combineLatestAll(project) {\n return joinAllInternals(combineLatest, project);\n}\n//# sourceMappingURL=combineLatestAll.js.map","import { combineLatestAll } from './combineLatestAll';\nexport var combineAll = combineLatestAll;\n//# sourceMappingURL=combineAll.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { combineLatestInit } from '../observable/combineLatest';\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { popResultSelector } from '../util/args';\nexport function combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = popResultSelector(args);\n return resultSelector\n ? pipe(combineLatest.apply(void 0, __spreadArray([], __read(args))), mapOneOrManyArgs(resultSelector))\n : operate(function (source, subscriber) {\n combineLatestInit(__spreadArray([source], __read(argsOrArgArray(args))))(subscriber);\n });\n}\n//# sourceMappingURL=combineLatest.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { combineLatest } from './combineLatest';\nexport function combineLatestWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return combineLatest.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n//# sourceMappingURL=combineLatestWith.js.map","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n//# sourceMappingURL=concatMap.js.map","import { concatMap } from './concatMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMapTo(innerObservable, resultSelector) {\n return isFunction(resultSelector) ? concatMap(function () { return innerObservable; }, resultSelector) : concatMap(function () { return innerObservable; });\n}\n//# sourceMappingURL=concatMapTo.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { concatAll } from './concatAll';\nimport { internalFromArray } from '../observable/fromArray';\nimport { popScheduler } from '../util/args';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n return operate(function (source, subscriber) {\n concatAll()(internalFromArray(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=concat.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { concat } from './concat';\nexport function concatWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return concat.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n//# sourceMappingURL=concatWith.js.map","import { Observable } from '../Observable';\nexport function fromSubscribable(subscribable) {\n return new Observable(function (subscriber) { return subscribable.subscribe(subscriber); });\n}\n//# sourceMappingURL=fromSubscribable.js.map","import { Subject } from '../Subject';\nimport { from } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { fromSubscribable } from '../observable/fromSubscribable';\nvar DEFAULT_CONFIG = {\n connector: function () { return new Subject(); },\n};\nexport function connect(selector, config) {\n if (config === void 0) { config = DEFAULT_CONFIG; }\n var connector = config.connector;\n return operate(function (source, subscriber) {\n var subject = connector();\n from(selector(fromSubscribable(subject))).subscribe(subscriber);\n subscriber.add(source.subscribe(subject));\n });\n}\n//# sourceMappingURL=connect.js.map","import { reduce } from './reduce';\nexport function count(predicate) {\n return reduce(function (total, value, i) { return (!predicate || predicate(value, i) ? total + 1 : total); }, 0);\n}\n//# sourceMappingURL=count.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nexport function debounce(durationSelector) {\n return 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(new OperatorSubscriber(subscriber, function (value) {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = new OperatorSubscriber(subscriber, emit, noop);\n innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = durationSubscriber = null;\n }));\n });\n}\n//# sourceMappingURL=debounce.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n//# sourceMappingURL=debounceTime.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=defaultIfEmpty.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, noop));\n });\n}\n//# sourceMappingURL=ignoreElements.js.map","import { map } from './map';\nexport function mapTo(value) {\n return map(function () { return value; });\n}\n//# sourceMappingURL=mapTo.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap(function (value, index) { return delayDurationSelector(value, index).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration = timer(due, scheduler);\n return delayWhen(function () { return duration; });\n}\n//# sourceMappingURL=delay.js.map","import { observeNotification } from '../Notification';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function dematerialize() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (notification) { return observeNotification(notification, subscriber); }));\n });\n}\n//# sourceMappingURL=dematerialize.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function distinct(keySelector, flushes) {\n return operate(function (source, subscriber) {\n var distinctKeys = new Set();\n source.subscribe(new OperatorSubscriber(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 === null || flushes === void 0 ? void 0 : flushes.subscribe(new OperatorSubscriber(subscriber, function () { return distinctKeys.clear(); }, noop));\n });\n}\n//# sourceMappingURL=distinct.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { distinctUntilChanged } from './distinctUntilChanged';\nexport function distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });\n}\n//# sourceMappingURL=distinctUntilKeyChanged.js.map","import { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); }));\n });\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","import { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { filter } from './filter';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { take } from './take';\nexport function elementAt(index, defaultValue) {\n if (index < 0) {\n throw new ArgumentOutOfRangeError();\n }\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(filter(function (v, i) { return i === index; }), take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new ArgumentOutOfRangeError(); }));\n };\n}\n//# sourceMappingURL=elementAt.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nexport function 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(source, of.apply(void 0, __spreadArray([], __read(values)))); };\n}\n//# sourceMappingURL=endWith.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function every(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=every.js.map","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustAll() {\n return operate(function (source, subscriber) {\n var isComplete = false;\n var innerSub = null;\n source.subscribe(new OperatorSubscriber(subscriber, function (inner) {\n if (!innerSub) {\n innerSub = innerFrom(inner).subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n }));\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=exhaustAll.js.map","import { exhaustAll } from './exhaustAll';\nexport var exhaust = exhaustAll;\n//# sourceMappingURL=exhaust.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) {\n return source.pipe(exhaustMap(function (a, i) { return innerFrom(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }));\n };\n }\n return operate(function (source, subscriber) {\n var index = 0;\n var innerSub = null;\n var isComplete = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (outerValue) {\n if (!innerSub) {\n innerSub = new OperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=exhaustMap.js.map","import { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nexport function expand(project, concurrent, scheduler) {\n if (concurrent === void 0) { concurrent = Infinity; }\n concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;\n return operate(function (source, subscriber) {\n return mergeInternals(source, subscriber, project, concurrent, undefined, true, scheduler);\n });\n}\n//# sourceMappingURL=expand.js.map","import { operate } from '../util/lift';\nexport function finalize(callback) {\n return operate(function (source, subscriber) {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\n//# sourceMappingURL=finalize.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function find(predicate, thisArg) {\n return operate(createFind(predicate, thisArg, 'value'));\n}\nexport function createFind(predicate, thisArg, emit) {\n var findIndex = emit === 'index';\n return function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=find.js.map","import { operate } from '../util/lift';\nimport { createFind } from './find';\nexport function findIndex(predicate, thisArg) {\n return operate(createFind(predicate, thisArg, 'index'));\n}\n//# sourceMappingURL=findIndex.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n };\n}\n//# sourceMappingURL=first.js.map","import { __extends } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { innerFrom } from '../observable/from';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function groupBy(keySelector, elementOrOptions, duration, connector) {\n return 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 groupBySourceSubscriber = new GroupBySubscriber(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()));\n var grouped = createGroupedObservable(key_1, group_1);\n subscriber.next(grouped);\n if (duration) {\n var durationSubscriber_1 = new OperatorSubscriber(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(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(); });\n source.subscribe(groupBySourceSubscriber);\n function createGroupedObservable(key, groupSubject) {\n var result = new Observable(function (groupSubscriber) {\n groupBySourceSubscriber.activeGroups++;\n var innerSub = groupSubject.subscribe(groupSubscriber);\n return function () {\n innerSub.unsubscribe();\n --groupBySourceSubscriber.activeGroups === 0 &&\n groupBySourceSubscriber.teardownAttempted &&\n groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\nvar GroupBySubscriber = (function (_super) {\n __extends(GroupBySubscriber, _super);\n function GroupBySubscriber() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeGroups = 0;\n _this.teardownAttempted = false;\n return _this;\n }\n GroupBySubscriber.prototype.unsubscribe = function () {\n this.teardownAttempted = true;\n this.activeGroups === 0 && _super.prototype.unsubscribe.call(this);\n };\n return GroupBySubscriber;\n}(OperatorSubscriber));\n//# sourceMappingURL=groupBy.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function isEmpty() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function () {\n subscriber.next(false);\n subscriber.complete();\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=isEmpty.js.map","import { __values } from \"tslib\";\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function takeLast(count) {\n return count <= 0\n ? function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var buffer = [];\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n buffer.push(value);\n count < buffer.length && buffer.shift();\n }, function () {\n var e_1, _a;\n try {\n for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {\n var value = buffer_1_1.value;\n subscriber.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n }, undefined, function () {\n buffer = null;\n }));\n });\n}\n//# sourceMappingURL=takeLast.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\nexport function last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n };\n}\n//# sourceMappingURL=last.js.map","import { Notification } from '../Notification';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function materialize() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n subscriber.next(Notification.createNext(value));\n }, function () {\n subscriber.next(Notification.createComplete());\n subscriber.complete();\n }, function (err) {\n subscriber.next(Notification.createError(err));\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=materialize.js.map","import { reduce } from './reduce';\nimport { isFunction } from '../util/isFunction';\nexport function max(comparer) {\n return reduce(isFunction(comparer) ? function (x, y) { return (comparer(x, y) > 0 ? x : y); } : function (x, y) { return (x > y ? x : y); });\n}\n//# sourceMappingURL=max.js.map","import { mergeMap } from './mergeMap';\nexport var flatMap = mergeMap;\n//# sourceMappingURL=flatMap.js.map","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMapTo(innerObservable, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function () { return innerObservable; }, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap(function () { return innerObservable; }, concurrent);\n}\n//# sourceMappingURL=mergeMapTo.js.map","import { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nexport function mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return operate(function (source, subscriber) {\n var state = seed;\n return mergeInternals(source, subscriber, function (value, index) { return accumulator(state, value, index); }, concurrent, function (value) {\n state = value;\n }, false, undefined, function () { return (state = null); });\n });\n}\n//# sourceMappingURL=mergeScan.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { internalFromArray } from '../observable/fromArray';\nimport { mergeAll } from './mergeAll';\nimport { popNumber, popScheduler } from '../util/args';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n args = argsOrArgArray(args);\n return operate(function (source, subscriber) {\n mergeAll(concurrent)(internalFromArray(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=merge.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { merge } from './merge';\nexport function mergeWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return merge.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n//# sourceMappingURL=mergeWith.js.map","import { reduce } from './reduce';\nimport { isFunction } from '../util/isFunction';\nexport function min(comparer) {\n return reduce(isFunction(comparer) ? function (x, y) { return (comparer(x, y) < 0 ? x : y); } : function (x, y) { return (x < y ? x : y); });\n}\n//# sourceMappingURL=min.js.map","import { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { isFunction } from '../util/isFunction';\nimport { connect } from './connect';\nexport function multicast(subjectOrSubjectFactory, selector) {\n var subjectFactory = isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () { return subjectOrSubjectFactory; };\n if (isFunction(selector)) {\n return connect(selector, {\n connector: subjectFactory,\n });\n }\n return function (source) { return new ConnectableObservable(source, subjectFactory); };\n}\n//# sourceMappingURL=multicast.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n//# sourceMappingURL=pairwise.js.map","import { map } from './map';\nexport function 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(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}\n//# sourceMappingURL=pluck.js.map","import { Subject } from '../Subject';\nimport { multicast } from './multicast';\nimport { connect } from './connect';\nexport function publish(selector) {\n return selector ? function (source) { return connect(selector)(source); } : function (source) { return multicast(new Subject())(source); };\n}\n//# sourceMappingURL=publish.js.map","import { BehaviorSubject } from '../BehaviorSubject';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nexport function publishBehavior(initialValue) {\n return function (source) {\n var subject = new BehaviorSubject(initialValue);\n return new ConnectableObservable(source, function () { return subject; });\n };\n}\n//# sourceMappingURL=publishBehavior.js.map","import { AsyncSubject } from '../AsyncSubject';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nexport function publishLast() {\n return function (source) {\n var subject = new AsyncSubject();\n return new ConnectableObservable(source, function () { return subject; });\n };\n}\n//# sourceMappingURL=publishLast.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\nimport { isFunction } from '../util/isFunction';\nexport function publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {\n if (selectorOrScheduler && !isFunction(selectorOrScheduler)) {\n timestampProvider = selectorOrScheduler;\n }\n var selector = isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;\n return function (source) { return multicast(new ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source); };\n}\n//# sourceMappingURL=publishReplay.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { raceInit } from '../observable/race';\nimport { operate } from '../util/lift';\nimport { identity } from '../util/identity';\nexport function 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\n : operate(function (source, subscriber) {\n raceInit(__spreadArray([source], __read(otherSources)))(subscriber);\n });\n}\n//# sourceMappingURL=raceWith.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function repeat(count) {\n if (count === void 0) { count = Infinity; }\n return count <= 0\n ? function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n var subscribeForRepeat = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n if (++soFar < count) {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRepeat();\n }\n else {\n syncUnsub = true;\n }\n }\n else {\n subscriber.complete();\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRepeat();\n }\n };\n subscribeForRepeat();\n });\n}\n//# sourceMappingURL=repeat.js.map","import { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function repeatWhen(notifier) {\n return 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();\n notifier(completions$).subscribe(new OperatorSubscriber(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(new OperatorSubscriber(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}\n//# sourceMappingURL=repeatWhen.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/from';\nexport function 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\n : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n var subscribeForRetry = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(new OperatorSubscriber(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(delay) : innerFrom(delay(err, soFar));\n var notifierSubscriber_1 = new OperatorSubscriber(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}\n//# sourceMappingURL=retry.js.map","import { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function retryWhen(notifier) {\n return operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var errors$;\n var subscribeForRetryWhen = function () {\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, undefined, function (err) {\n if (!errors$) {\n errors$ = new Subject();\n notifier(errors$).subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=retryWhen.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function sample(notifier) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n }));\n var emit = function () {\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n notifier.subscribe(new OperatorSubscriber(subscriber, emit, noop));\n });\n}\n//# sourceMappingURL=sample.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { sample } from './sample';\nimport { interval } from '../observable/interval';\nexport function sampleTime(period, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return sample(interval(period, scheduler));\n}\n//# sourceMappingURL=sampleTime.js.map","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n//# sourceMappingURL=scan.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function sequenceEqual(compareTo, comparator) {\n if (comparator === void 0) { comparator = function (a, b) { return a === b; }; }\n return 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 = new OperatorSubscriber(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 compareTo.subscribe(createSubscriber(bState, aState));\n });\n}\nfunction createState() {\n return {\n buffer: [],\n complete: false,\n };\n}\n//# sourceMappingURL=sequenceEqual.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { from } from '../observable/from';\nimport { take } from '../operators/take';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection = null;\n var resetConnection = null;\n var subject = null;\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 = null;\n };\n var reset = function () {\n cancelReset();\n connection = subject = null;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n from(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return null;\n }\n if (on === false) {\n return null;\n }\n return on.apply(void 0, __spreadArray([], __read(args))).pipe(take(1))\n .subscribe(function () { return reset(); });\n}\n//# sourceMappingURL=share.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n var _a, _b;\n var bufferSize;\n var refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n bufferSize = (_a = configOrBufferSize.bufferSize) !== null && _a !== void 0 ? _a : Infinity;\n windowTime = (_b = configOrBufferSize.windowTime) !== null && _b !== void 0 ? _b : Infinity;\n refCount = !!configOrBufferSize.refCount;\n scheduler = configOrBufferSize.scheduler;\n }\n else {\n bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity;\n }\n return share({\n connector: function () { return new ReplaySubject(bufferSize, windowTime, scheduler); },\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount\n });\n}\n//# sourceMappingURL=shareReplay.js.map","import { EmptyError } from '../util/EmptyError';\nimport { SequenceError } from '../util/SequenceError';\nimport { NotFoundError } from '../util/NotFoundError';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function single(predicate) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var singleValue;\n var seenValue = false;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n seenValue = true;\n if (!predicate || predicate(value, index++, source)) {\n hasValue && subscriber.error(new 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('No matching values') : new EmptyError());\n }\n }));\n });\n}\n//# sourceMappingURL=single.js.map","import { filter } from './filter';\nexport function skip(count) {\n return filter(function (_, index) { return count <= index; });\n}\n//# sourceMappingURL=skip.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function skipLast(skipCount) {\n return skipCount <= 0\n ?\n identity\n : operate(function (source, subscriber) {\n var ring = new Array(skipCount);\n var seen = 0;\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=skipLast.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nimport { noop } from '../util/noop';\nexport function skipUntil(notifier) {\n return operate(function (source, subscriber) {\n var taking = false;\n var skipSubscriber = new OperatorSubscriber(subscriber, function () {\n skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe();\n taking = true;\n }, noop);\n innerFrom(notifier).subscribe(skipSubscriber);\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return taking && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=skipUntil.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function skipWhile(predicate) {\n return operate(function (source, subscriber) {\n var taking = false;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=skipWhile.js.map","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var scheduler = popScheduler(values);\n return operate(function (source, subscriber) {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=startWith.js.map","import { innerFrom } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = new OperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\nexport function switchAll() {\n return switchMap(identity);\n}\n//# sourceMappingURL=switchAll.js.map","import { switchMap } from './switchMap';\nimport { isFunction } from '../util/isFunction';\nexport function switchMapTo(innerObservable, resultSelector) {\n return isFunction(resultSelector) ? switchMap(function () { return innerObservable; }, resultSelector) : switchMap(function () { return innerObservable; });\n}\n//# sourceMappingURL=switchMapTo.js.map","import { switchMap } from './switchMap';\nimport { operate } from '../util/lift';\nexport function switchScan(accumulator, seed) {\n return operate(function (source, subscriber) {\n var state = seed;\n 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}\n//# sourceMappingURL=switchScan.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate(function (source, subscriber) {\n innerFrom(notifier).subscribe(new OperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=takeUntil.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function takeWhile(predicate, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=takeWhile.js.map","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n var tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error: error, complete: complete }\n : observerOrNext;\n return tapObserver\n ? operate(function (source, subscriber) {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n//# sourceMappingURL=tap.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nexport var defaultThrottleConfig = {\n leading: true,\n trailing: false,\n};\nexport function throttle(durationSelector, _a) {\n var _b = _a === void 0 ? defaultThrottleConfig : _a, leading = _b.leading, trailing = _b.trailing;\n return operate(function (source, subscriber) {\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(durationSelector(value)).subscribe(new OperatorSubscriber(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(new OperatorSubscriber(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}\n//# sourceMappingURL=throttle.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { defaultThrottleConfig, throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n if (config === void 0) { config = defaultThrottleConfig; }\n var duration$ = timer(duration, scheduler);\n return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","import { async } from '../scheduler/async';\nimport { scan } from './scan';\nimport { defer } from '../observable/defer';\nimport { map } from './map';\nexport function timeInterval(scheduler) {\n if (scheduler === void 0) { scheduler = async; }\n return function (source) {\n return defer(function () {\n return source.pipe(scan(function (_a, value) {\n var current = _a.current;\n return ({ value: value, current: scheduler.now(), last: current });\n }, {\n current: scheduler.now(),\n value: undefined,\n last: undefined,\n }), map(function (_a) {\n var current = _a.current, last = _a.last, value = _a.value;\n return new TimeInterval(value, current - last);\n }));\n });\n };\n}\nvar TimeInterval = (function () {\n function TimeInterval(value, interval) {\n this.value = value;\n this.interval = interval;\n }\n return TimeInterval;\n}());\nexport { TimeInterval };\n//# sourceMappingURL=timeInterval.js.map","import { async } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { timeout } from './timeout';\nexport function timeoutWith(due, withObservable, scheduler) {\n var first;\n var each;\n var _with;\n scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : async;\n if (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({\n first: first,\n each: each,\n scheduler: scheduler,\n with: _with,\n });\n}\n//# sourceMappingURL=timeoutWith.js.map","import { dateTimestampProvider } from '../scheduler/dateTimestampProvider';\nimport { map } from './map';\nexport function timestamp(timestampProvider) {\n if (timestampProvider === void 0) { timestampProvider = dateTimestampProvider; }\n return map(function (value) { return ({ value: value, timestamp: timestampProvider.now() }); });\n}\n//# sourceMappingURL=timestamp.js.map","import { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function window(windowBoundaries) {\n return operate(function (source, subscriber) {\n var windowSubject = new Subject();\n subscriber.next(windowSubject.asObservable());\n var errorHandler = function (err) {\n windowSubject.error(err);\n subscriber.error(err);\n };\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value); }, function () {\n windowSubject.complete();\n subscriber.complete();\n }, errorHandler));\n windowBoundaries.subscribe(new OperatorSubscriber(subscriber, function () {\n windowSubject.complete();\n subscriber.next((windowSubject = new Subject()));\n }, noop, errorHandler));\n return function () {\n windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe();\n windowSubject = null;\n };\n });\n}\n//# sourceMappingURL=window.js.map","import { __values } from \"tslib\";\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function windowCount(windowSize, startWindowEvery) {\n if (startWindowEvery === void 0) { startWindowEvery = 0; }\n var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;\n return operate(function (source, subscriber) {\n var windows = [new Subject()];\n var starts = [];\n var count = 0;\n subscriber.next(windows[0].asObservable());\n source.subscribe(new OperatorSubscriber(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();\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}\n//# sourceMappingURL=windowCount.js.map","import { Subject } from '../Subject';\nimport { asyncScheduler } from '../scheduler/async';\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { popScheduler } from '../util/args';\nexport function 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 = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;\n var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxWindowSize = otherArgs[1] || Infinity;\n return 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(windowRecords, record);\n restartOnClose && startWindow();\n };\n var startWindow = function () {\n if (windowRecords) {\n var subs = new Subscription();\n subscriber.add(subs);\n var window_1 = new 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 subs.add(scheduler.schedule(function () { return closeWindow(record_1); }, windowTimeSpan));\n }\n };\n windowCreationInterval !== null && windowCreationInterval >= 0\n ?\n subscriber.add(scheduler.schedule(function () {\n startWindow();\n !this.closed && subscriber.add(this.schedule(null, windowCreationInterval));\n }, windowCreationInterval))\n : (restartOnClose = true);\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(new OperatorSubscriber(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}\n//# sourceMappingURL=windowTime.js.map","import { __values } from \"tslib\";\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { arrRemove } from '../util/arrRemove';\nexport function windowToggle(openings, closingSelector) {\n return 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(openings).subscribe(new OperatorSubscriber(subscriber, function (openValue) {\n var window = new Subject();\n windows.push(window);\n var closingSubscription = new Subscription();\n var closeWindow = function () {\n arrRemove(windows, window);\n window.complete();\n closingSubscription.unsubscribe();\n };\n var closingNotifier;\n try {\n closingNotifier = innerFrom(closingSelector(openValue));\n }\n catch (err) {\n handleError(err);\n return;\n }\n subscriber.next(window.asObservable());\n closingSubscription.add(closingNotifier.subscribe(new OperatorSubscriber(subscriber, closeWindow, noop, handleError)));\n }, noop));\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=windowToggle.js.map","import { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nexport function windowWhen(closingSelector) {\n return 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();\n subscriber.next(window.asObservable());\n var closingNotifier;\n try {\n closingNotifier = innerFrom(closingSelector());\n }\n catch (err) {\n handleError(err);\n return;\n }\n closingNotifier.subscribe((closingSubscriber = new OperatorSubscriber(subscriber, openWindow, openWindow, handleError)));\n };\n openWindow();\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=windowWhen.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom() {\n var inputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputs[_i] = arguments[_i];\n }\n var project = popResultSelector(inputs);\n return operate(function (source, subscriber) {\n var len = inputs.length;\n var otherValues = new Array(len);\n var hasValue = inputs.map(function () { return false; });\n var ready = false;\n var _loop_1 = function (i) {\n innerFrom(inputs[i]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (ready) {\n var values = __spreadArray([value], __read(otherValues));\n subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);\n }\n }));\n });\n}\n//# sourceMappingURL=withLatestFrom.js.map","import { zip } from '../observable/zip';\nimport { joinAllInternals } from './joinAllInternals';\nexport function zipAll(project) {\n return joinAllInternals(zip, project);\n}\n//# sourceMappingURL=zipAll.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { zip as zipStatic } from '../observable/zip';\nimport { operate } from '../util/lift';\nexport function zip() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return operate(function (source, subscriber) {\n zipStatic.apply(void 0, __spreadArray([source], __read(sources))).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=zip.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { zip } from './zip';\nexport function zipWith() {\n var otherInputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherInputs[_i] = arguments[_i];\n }\n return zip.apply(void 0, __spreadArray([], __read(otherInputs)));\n}\n//# sourceMappingURL=zipWith.js.map","import { Subject } from \"rxjs\";\nimport { EventName, LayerName } from \"..\";\nimport { ITheme, IThemeOverrides } from \"../configure/interfaces\";\nimport { IUserInfo } from \"../session/interfaces\";\nimport { IPromisified, INotifyFramework } from \"./interfaces\";\n\ntype PromiseRegistry = { [name: string]: Promisified<any> };\n\nconst ASYNC_DATA_NAME = {\n SESSION_READY: \"sessionReady\",\n LANG_READY: \"langReady\",\n SKIN_READY: \"skinReady\",\n OVERRIDE_READY: \"overrideReady\",\n} as const;\n\n/** Utility class */\n//-------------------------------------\nexport class Promisified<T> implements IPromisified<T> {\n //-------------------------------------\n private _resolution?: (value: T | PromiseLike<T>) => void;\n private _rejection?: (reason?: any) => void;\n private _promise = new Promise<T>((_resolve, _reject) => {\n this._resolution = _resolve;\n this._rejection = _reject;\n });\n get promise(): Promise<T> {\n return this._promise;\n }\n resolve(value: T | PromiseLike<T>) {\n this._resolution && this._resolution(value);\n }\n reject(reason?: any) {\n this._rejection && this._rejection(reason);\n }\n}\n\n/** The notify framework implementation. */\n//-------------------------------------\nclass NotifyFramework implements INotifyFramework {\n //-------------------------------------\n private promises: PromiseRegistry = {};\n private subject: Subject<{\n name: EventName;\n layer: LayerName | string;\n data?: any;\n }> = new Subject();\n\n private asyncData<T>(asyncDataName: string): Promisified<T> {\n if (typeof this.promises[asyncDataName] === \"undefined\") {\n this.promises[asyncDataName] =\n new Promisified<T>() as unknown as Promisified<any>;\n }\n return this.promises[asyncDataName] as unknown as Promisified<T>;\n }\n\n public onSessionReady(): IPromisified<IUserInfo> {\n return this.asyncData<IUserInfo>(ASYNC_DATA_NAME.SESSION_READY);\n }\n\n public onLangReady(): IPromisified<string> {\n return this.asyncData<string>(ASYNC_DATA_NAME.LANG_READY);\n }\n\n public onSkinReady(): Promisified<ITheme> {\n return this.asyncData<ITheme>(ASYNC_DATA_NAME.SKIN_READY);\n }\n\n public onOverridesReady(): Promisified<IThemeOverrides> {\n return this.asyncData<IThemeOverrides>(ASYNC_DATA_NAME.OVERRIDE_READY);\n }\n\n public promisify<T>(): IPromisified<T> {\n return new Promisified<T>();\n }\n\n public events(): Subject<{\n name: EventName;\n layer: LayerName | string;\n data?: any;\n }> {\n return this.subject;\n }\n}\n\n/** The whole framework is a singleton. */\nexport const notify: NotifyFramework = new NotifyFramework();\n","import { Subject } from \"rxjs\";\nimport { ITheme, IThemeOverrides } from \"../configure/interfaces\";\nimport { IUserInfo } from \"../session/interfaces\";\nimport { notify } from \"./Framework\";\n\n//-------------------------------------\nexport abstract class NotifyFrameworkFactory {\n //-------------------------------------\n static instance(): INotifyFramework {\n return notify;\n }\n}\n\n//-------------------------------------\nexport interface INotifyFramework {\n //-------------------------------------\n /**\n * Notify that a process is done and data ready or rejected.\n * Utility method : wrap your own Promise.\n * Or use one of the predefined promises.\n */\n promisify<T>(): IPromisified<T>;\n\n /**\n * Notify that a process is done and data ready or rejected.\n * Promise / resolve / reject of current user's language.\n */\n onLangReady(): IPromisified<string>;\n\n /**\n * Notify that a process is done and data ready or rejected.\n * Promise / resolve / reject of current user's session.\n */\n onSessionReady(): IPromisified<IUserInfo>;\n\n /**\n * Notify that a process is done and data ready or rejected.\n * This data is not intended to change after being resolved.\n * Promise / resolve / reject of asynchronous skin.\n */\n onSkinReady(): IPromisified<ITheme>;\n\n /**\n * Notify that a process is done and data ready or rejected.\n * This data is not intended to change after being resolved.\n * Promise / resolve / reject of asynchronous skin overrides.\n */\n onOverridesReady(): IPromisified<IThemeOverrides>;\n\n /**\n * Notify that an event occured.\n * By definition, an event can occur multiple times (otherwise it is a one-time \"process\", see above) and be watched by many targets.\n * => We use RxJS Subject to model events stream with many potential subscribers.\n */\n events(): Subject<{ name: EventName; layer: LayerName | string; data?: any }>;\n}\n\n//-------------------------------------\nexport interface IPromisified<T> {\n //-------------------------------------\n readonly promise: Promise<T>;\n resolve: (value: T | PromiseLike<T>) => void;\n reject: (reason?: any) => void;\n}\n\n//-------------------------------------\nexport const LAYER_NAME = {\n //-------------------------------------\n WIDGETS: \"widgets\",\n EXPLORER: \"explorer\",\n} as const;\nexport type LayerName = (typeof LAYER_NAME)[keyof typeof LAYER_NAME];\n\n//-------------------------------------\nexport const EVENT_NAME = {\n //-------------------------------------\n USERPREF_CHANGED: \"userprefChanged\",\n SEARCH_RESULTED: \"searchResulted\",\n} as const;\nexport type EventName = (typeof EVENT_NAME)[keyof typeof EVENT_NAME];\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","module.exports = require('./lib/axios');","import axios, {\n AxiosError,\n AxiosInstance,\n // AxiosRequestConfig,\n AxiosResponse,\n} from \"axios\";\nimport { ConfigurationFrameworkFactory } from \"..\";\nimport { ERROR_CODE } from \"../globals\";\nimport { IHttp, IHttpParams, IHttpResponse } from \"./interfaces\";\n\nconst loadedScripts: { [url: string]: boolean } = {};\n\nexport class Http implements IHttp {\n // Axios automatically manages the XSRF-TOKEN cookie and the X-XSRF-TOKEN HTTP header.\n private axios: AxiosInstance;\n\n private _latestResponse: any;\n\n constructor(params?: any) {\n this.axios = axios.create(params);\n }\n\n setCdn(cdnUrl: string): void {\n if (\n cdnUrl &&\n XMLHttpRequest &&\n !(XMLHttpRequest.prototype as any)[\"cdnUrl\"]\n ) {\n (XMLHttpRequest.prototype as any)[\"cdnUrl\"] = cdnUrl;\n (XMLHttpRequest.prototype as any).baseOpen =\n XMLHttpRequest.prototype.open;\n XMLHttpRequest.prototype.open = function () {\n const url = arguments[1] as string;\n //PUBLIC infra\n if (url.startsWith(\"/infra/public\")) {\n arguments[1] = cdnUrl + url;\n }\n //PUBLIC files (/.*/public)\n const match = /^\\/([^\\/]*)\\/public/.test(url);\n if (match) {\n arguments[1] = cdnUrl + url;\n }\n //ASSETS files\n if (url.startsWith(\"/assets\")) {\n arguments[1] = cdnUrl + url;\n }\n //SKIP PUBLIC CONF\n if (url == \"/conf/public\") {\n arguments[1] = url;\n }\n //SKIP HTTP\n if (url.startsWith(\"http\")) {\n arguments[1] = url;\n }\n return (this as any).baseOpen.apply(this, arguments);\n };\n }\n }\n\n // private toAxiosConfig(params?: IHttpParams): AxiosRequestConfig {\n private toAxiosConfig(params?: IHttpParams): any {\n if (!params) {\n return this.axios.defaults;\n } else {\n const p = Object.assign({}, this.axios.defaults);\n\n if (params.headers) {\n if (p.headers)\n p.headers = Object.assign({}, this.axios.defaults.headers);\n Object.assign(p.headers, params.headers);\n }\n\n if (params.responseType) {\n p.responseType = params.responseType;\n }\n\n if (params.queryParams) {\n // Axios will serialize parameters, see https://github.com/axios/axios#request-config\n p.params = Object.assign({}, params.queryParams);\n }\n\n /* TODO : manage params.requestName through an events[]. See infra-front http.ts */\n\n return p;\n }\n }\n\n private toCdnUrl(url: string) {\n const CDN_DOMAIN: string | undefined =\n ConfigurationFrameworkFactory.instance().Platform.cdnDomain;\n // If CDN domain is defined, and requested url is not /public/conf (SKIP PUBLIC CONF)\n if (CDN_DOMAIN?.length > 0 && url !== \"/conf/public\") {\n const originalURL = \"\" + url;\n //PUBLIC infra or ASSETS files\n if (\n originalURL.startsWith(\"/infra/public\") ||\n originalURL.startsWith(\"/assets\")\n ) {\n url = CDN_DOMAIN + originalURL;\n } else {\n //PUBLIC files (/.*/public)\n const match = /^\\/([^\\/]*)\\/public/.test(originalURL);\n if (match) {\n url = CDN_DOMAIN + originalURL;\n }\n }\n }\n return url;\n }\n\n private mapAxiosError<R>(error: AxiosError<R>, params?: IHttpParams): R {\n // AxiosError.response and our HttpResponse share the same properties.\n // So we can use it directly, saving CPU and memory.\n // Otherwise, we would map the axios response to our own model.\n if (error.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n this._latestResponse = error.response;\n } else if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n this._latestResponse = {\n status: 408,\n statusText: ERROR_CODE.TIME_OUT,\n };\n } else {\n // Something happened in setting up the request that triggered an Error\n this._latestResponse = {\n status: 500,\n statusText: ERROR_CODE.UNKNOWN,\n };\n }\n\n /* TODO : manage params.requestName through an events[]. See infra-front http.ts */\n\n // Notify error unless disabled.\n if (!params || params.disableNotifications === false) {\n // FIXME This really should be an rxjs Subject\n // notify.onEvent( EVENT_NAME.HTTP_ERROR ).next( new HttpErrorNotice(''+this._latestResponse.status, this._latestResponse.statusText) );\n }\n\n return this._latestResponse;\n }\n\n private mapAxiosResponse<R>(\n response: AxiosResponse<R>,\n params?: IHttpParams,\n ): R {\n // AxiosResponse and our HttpResponse share the same properties.\n // So we can use it directly, saving CPU and memory.\n // Otherwise, we would map the axios response to our own model.\n this._latestResponse = response;\n /* TODO : manage params.requestName through an events[]. See infra-front http.ts */\n //FIXME: should we check response.status and only accept if range is 2xx ?\n return response.data;\n }\n\n get latestResponse(): IHttpResponse {\n return this._latestResponse;\n }\n\n get<R = any>(url: string, params?: IHttpParams): Promise<R> {\n return this.axios\n .get<R>(this.toCdnUrl(url), this.toAxiosConfig(params))\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n post<R = any>(url: string, data?: any, params?: IHttpParams): Promise<R> {\n return this.axios\n .post<R>(url, data, this.toAxiosConfig(params))\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n postFile<R = any>(url: string, data: any, params?: IHttpParams): Promise<R> {\n const p = this.toAxiosConfig(params);\n if (p.headers && p.headers[\"Content-Type\"]) {\n delete p.headers[\"Content-Type\"];\n }\n return this.axios\n .post<R>(url, data, p)\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n postJson<R = any>(url: string, json: any, params?: IHttpParams): Promise<R> {\n const p = this.toAxiosConfig();\n if (p.headers) p.headers[\"Content-Type\"] = \"application/json\";\n return this.axios\n .post<R>(url, json, this.toAxiosConfig(params))\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n put<R = any>(url: string, data?: any, params?: IHttpParams): Promise<R> {\n return this.axios\n .put<R>(url, data, this.toAxiosConfig(params))\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n /*\n putFile(url: string, data:FormData, opt?:any) {\n //TODO\n return this.axios.putFile(url, data, opt).then( r => this.mapAxiosResponse(r,params));\n }\n*/\n putJson<R = any>(url: string, json: any, params?: IHttpParams): Promise<R> {\n const p = this.toAxiosConfig(params);\n if (p.headers) p.headers[\"Content-Type\"] = \"application/json\";\n return this.axios\n .put<R>(url, json, p)\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n delete<R = any>(url: string, params?: IHttpParams): Promise<R> {\n return this.axios\n .delete<R>(url, this.toAxiosConfig(params))\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n deleteJson<R = any>(url: string, json: any): Promise<R> {\n return this.axios\n .delete<R>(url, { data: json })\n .then((r) => this.mapAxiosResponse(r))\n .catch<R>((e) => this.mapAxiosError(e));\n }\n\n getScript<R = any>(\n url: string,\n params?: IHttpParams,\n variableName?: string,\n ): Promise<R> {\n const resultName = variableName ?? \"exports\";\n const p = this.toAxiosConfig(params);\n if (p.headers) p.headers[\"Accept\"] = \"application/javascript\";\n return this.axios\n .get<string>(this.toCdnUrl(url), p)\n .then((r) => this.mapAxiosResponse(r, params))\n .then((r) => {\n try {\n const securedScript = `\"use strict\";var ${\n resultName.split(\".\")[0]\n }={};${r};return ${resultName};`;\n const result = Function(securedScript)();\n return result;\n } catch (e) {\n const result = r;\n return result;\n }\n })\n .catch<R>((e) => {\n this.mapAxiosError(e, params);\n throw e;\n });\n }\n\n loadScript(url: string, params?: IHttpParams): Promise<void> {\n return loadedScripts[url]\n ? Promise.resolve()\n : this.getScript(url, params).then((res) => {\n loadedScripts[url] = true;\n });\n }\n}\n\n/*\nvar loadedScripts = {};\n\nexport class Http {\n statusCallbacks = {};\n\n serialize(obj:any) {\n var str = [];\n for (var p in obj) {\n if (obj.hasOwnProperty(p)) {\n if (obj[p] instanceof Array) {\n for (var i = 0; i < obj[p].length; i++) {\n if (typeof obj[p][i] === 'object') {\n throw new TypeError(\"Arrays sent as URIs can't contain objects\");\n }\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(obj[p][i]))\n }\n }\n else {\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(obj[p]));\n }\n }\n }\n return str.join(\"&\");\n }\n\n events: any = {\n };\n\n bind(eventName:string, handler:Function) {\n this.events[eventName] = handler;\n };\n\n parseUrl(path, item) {\n var matchParams = new RegExp(':[a-zA-Z0-9_.]+', \"g\");\n var params = path.match(matchParams);\n if (!params) {\n params = [];\n }\n var getProp = function (prop, obj) {\n if (prop.indexOf('.') === -1) {\n return obj[prop];\n }\n return getProp(prop.split('.').splice(1).join('.'), obj[prop.split('.')[0]])\n }\n params.forEach(function (param) {\n var prop = param.split(':')[1];\n\n var data = getProp(prop, item) || '';\n path = path.replace(param, data);\n });\n return path;\n };\n\n request(url, params) {\n var that = this;\n params.url = url;\n params.cache = false;\n\n if (!params.headers) {\n params.headers = {};\n }\n if (xsrfCookie) {\n params.headers['X-XSRF-TOKEN'] = xsrfCookie.val;\n }\n\n var requestName = params.requestName;\n if (requestName && that.events['request-started.' + requestName]) {\n that.events['request-started.' + requestName]();\n }\n\n this.xhr = $.ajax(params)\n .done(function (e, statusTexvoid, xhr) {\n if (typeof that.statusCallbacks.done === 'function') {\n if (document.cookie === '' && typeof Http.prototype.events.disconnected === 'function') {\n that.events.disconnected(e, statusTexvoid, xhr);\n }\n that.statusCallbacks.done(e, statusTexvoid, xhr);\n }\n if (requestName && that.events['request-ended.' + requestName]) {\n that.events['request-ended.' + requestName]();\n }\n })\n .fail(function (e) {\n if (requestName && that.events['request-ended.' + requestName]) {\n that.events['request-ended.' + requestName]();\n }\n\n if (typeof that.statusCallbacks['e' + e.status] === 'function') {\n that.statusCallbacks['e' + e.status].call(thavoid, e);\n }\n else if (typeof that.statusCallbacks.error === 'function') {\n that.statusCallbacks.error.call(thavoid, e);\n }\n else {\n if (!params.disableNotifications && e.status !== 0) {\n notify.error(\"e\" + e.status);\n }\n }\n\n console.log('HTTP error:' + e.status);\n console.log(e);\n });\n return this;\n }\n}\n*/\n/*\nexport function http = (function () {\n var statusEvents = ['done', 'error', 'e401', 'e404', 'e409', 'e500', 'e400', 'e413', 'e504', 'e0'];\n var xsrfCookie;\n if (document.cookie) {\n var cookies = _.map(document.cookie.split(';'), function (c) {\n return {\n name: c.split('=')[0].trim(),\n val: c.split('=')[1].trim()\n };\n });\n xsrfCookie = _.findWhere(cookies, { name: 'XSRF-TOKEN' });\n }\n\n statusEvents.forEach(function (event) {\n Http.prototype[event] = function (callback) {\n this.statusCallbacks[event] = callback;\n return this;\n }\n });\n\n Http.prototype.postFile = function (url, data, params) {\n if (typeof params !== 'object') {\n params = {};\n }\n params.contentType = false;\n params.processData = false;\n\n return this.post(url, data, params)\n };\n\n Http.prototype.putFile = function (url, data, params) {\n if (typeof params !== 'object') {\n params = {};\n }\n params.contentType = false;\n params.processData = false;\n\n return this.put(url, data, params)\n };\n\n Http.prototype.loadScript = function (url, data?: any, params?: any, requestName?: string): Promise<any> {\n return new Promise<void>((resolve, reject) => {\n if (loadedScripts[url]) {\n resolve(loadedScripts[url]);\n return;\n }\n this.get(url, data, params, requestName).done(() => {\n loadedScripts[url] = true;\n resolve();\n });\n });\n }\n\n var requestTypes = ['get', 'post', 'put', 'delete'];\n requestTypes.forEach(function (type) {\n Http.prototype[type + 'Json'] = function (url, data, params, requestName) {\n if (!params) {\n params = {};\n }\n params.contentType = 'application/json';\n params.data = angular.toJson(data);\n params.type = type.toUpperCase();\n return this.request(url, params, requestName);\n };\n Http.prototype[type] = function (url, data, params, requestName) {\n var that = this;\n\n if (!params) {\n params = {};\n }\n if (typeof data === 'object' || typeof data === 'string') {\n if (type === 'get' || type === 'delete') {\n if (url.indexOf('?') !== -1) {\n url += '&' + that.serialize(data);\n }\n else {\n url += '?' + that.serialize(data);\n }\n }\n else {\n params.data = data;\n }\n }\n params.type = type.toUpperCase();\n return this.request(url, params, requestName);\n };\n });\n\n return function () {\n return new Http();\n }\n}());\n*/\n\n/*\nexport let toFormData: (obj) => string = http().serialize;\n*/\n\n/**\n * Promisified HTTP\n */\n/*\nexport type Promise<R> = Promise<R> & { e400: (e) => void }\nexport class HttpPromisified<T> {\n constructor(private inner?: any) {\n if (!this.inner) {\n this.inner = http();\n }\n }\n private promisify(req: any): Promise<R> {\n const p = new Promise<R>((resolve, reject) => {\n if (req.xhr && req.xhr.status == 0) { reject(); return; }\n req.done(e => resolve(e)).error(e => reject(e));\n });\n (p as any).e400 = req.e400.bind(req);\n return p as any;\n }\n get(url: string, params?: any): Promise<R> {\n return this.promisify(this.inner.get(url, params));\n }\n post(url: string, params?: any): Promise<R> {\n return this.promisify(this.inner.post(url, params));\n }\n postFile(url: string, data: any, params?: any): Promise<R> {\n return this.promisify(this.inner.postFile(url, data, params));\n }\n postJson(url: string, json: any): Promise<R> {\n return this.promisify(this.inner.postJson(url, json));\n }\n put(url: string, data?: any): Promise<R> {\n return this.promisify(this.inner.put(url, data));\n }\n putJson(url: string, json: any): Promise<R> {\n return this.promisify(this.inner.putJson(url, json));\n }\n delete(url: string): Promise<R> {\n return this.promisify(this.inner.delete(url));\n }\n deleteJson(url: string, json: any): Promise<R> {\n return this.promisify(this.inner.deleteJson(url, json));\n }\n putFile(url: string, data: FormData, opt?: any) {\n return this.promisify(this.inner.putFile(url, data, opt));\n }\n}\nexport function httpPromisy<T>(inner?: any): HttpPromisified<T> {\n return new HttpPromisified<T>(inner);\n}\n*/\n","import { Http } from \"./Http\";\nimport { IHttp, ITransportFramework } from \"./interfaces\";\n\nclass TransportFramework implements ITransportFramework {\n private _http = new Http();\n\n get http(): IHttp {\n return this._http;\n }\n\n newHttpInstance(params?: any): IHttp {\n return new Http(params);\n }\n}\n\n/** The whole framework is a singleton. */\nexport const transport: TransportFramework = new TransportFramework();\n","import { transport } from \"./Framework\";\n\n//-------------------------------------\nexport abstract class TransportFrameworkFactory {\n //-------------------------------------\n static instance(): ITransportFramework {\n return transport;\n }\n}\n\n//-------------------------------------\nexport interface ITransportFramework {\n //-------------------------------------\n /** Default instance. */\n readonly http: IHttp;\n\n /**\n * Creates a new IHttp object with a custom configuration;\n * @param params see available options at https://axios-http.com/docs/req_config\n */\n newHttpInstance(params?: any): IHttp;\n}\n\n//-------------------------------------\nexport interface IHttp {\n //-------------------------------------\n /** Latest available HTTP response, valid during your get|post|put...then() and catch() handlers. */\n readonly latestResponse: IHttpResponse;\n\n /** HTTP GET Accept: application/json */\n get<R = any>(url: string, params?: IHttpParams): Promise<R>;\n\n /** HTTP POST, Accept: application/json */\n post<R = any>(url: string, data?: any, params?: IHttpParams): Promise<R>;\n\n /**\n * HTTP POST\n * @param data must be of one of the following types:\n * string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams\n * Browser only: FormData, File, Blob\n * Node only: Stream, Buffer\n */\n postFile<R = any>(url: string, data: any, params?: IHttpParams): Promise<R>;\n\n /** HTTP POST, Accept: application/json, Content-type: application/json */\n postJson<T = any, R = any>(\n url: string,\n json: any,\n params?: IHttpParams,\n ): Promise<R>;\n\n /** HTTP PUT, Accept: application/json */\n put<T = any, R = any>(\n url: string,\n data?: any,\n params?: IHttpParams,\n ): Promise<R>;\n\n // putFile<T=any,R=any>( url:string, data:FormData, opt?:any ): Promise<R>;\n\n /** HTTP PUT, Accept: application/json, Content-type: application/json */\n putJson<T = any, R = any>(\n url: string,\n json: any,\n params?: IHttpParams,\n ): Promise<R>;\n\n /** HTTP DELETE */\n delete<T = any, R = any>(url: string, params?: IHttpParams): Promise<R>;\n\n /** HTTP DELETE, Accept: application/json */\n deleteJson<T = any, R = any>(url: string, json: any): Promise<R>;\n\n /**\n * HTTP GET, Accept: application/javascript\n * @param exportedVariableName: unused at the moment.\n */\n getScript<R = any>(\n url: string,\n params?: IHttpParams,\n exportedVariableName?: string,\n ): Promise<R>;\n\n /** HTTP GET, Accept: application/javascript */\n loadScript(url: string, params?: IHttpParams): Promise<void>;\n\n setCdn(url: string): void;\n}\n\nexport type IHttpParamsResponseType =\n | \"arraybuffer\"\n | \"blob\"\n | \"document\"\n | \"json\"\n | \"text\"\n | \"stream\";\n\n//-------------------------------------\nexport type IHttpParams = {\n //-------------------------------------\n /** Request the API to send a notification when done. */\n readonly requestName?: string;\n /** Set to true to prevent sending notifications. */\n readonly disableNotifications?: boolean;\n /** HTTP headers to apply to the request. */\n readonly headers?: { [key: string]: /*value*/ string };\n /** Object to serialize as query parameters and append to the request URL. */\n readonly queryParams?: { [key: string]: /*value*/ any };\n /** Response Type */\n readonly responseType?: IHttpParamsResponseType;\n\n //readonly matrixParams: {[key:string]: /*value*/any;}; // TODO maybe later ?\n};\n\n//-------------------------------------\nexport type IHttpResponse = {\n //-------------------------------------\n status: number;\n statusText: string;\n headers?: any;\n};\n","import { transport } from \"../transport/Framework\";\nimport { notify } from \"../notify/Framework\";\nimport {\n IEmailValidationInfos,\n IEmailValidationState,\n IMfaCodeState,\n IMfaInfos,\n IMobileValidationInfos,\n IMobileValidationState,\n IQuotaAndUsage,\n ISession,\n IUserDescription,\n IUserInfo,\n UserProfile,\n} from \"./interfaces\";\n\nimport { configure } from \"../configure/Framework\";\nimport { ConfigurationFrameworkFactory } from \"../configure/interfaces\";\nimport { App, ERROR_CODE } from \"../globals\";\n\nconst http = transport.http;\n\n/* TODO IResourceRight model */\ntype IResourceRight = any;\ntype PersonApiResult = {\n status: \"ok\" | string;\n result: Array<IUserDescription>;\n};\n\nexport class Session implements ISession {\n private _me: IUserInfo = null as unknown as IUserInfo;\n\n private _currentLanguage: string = \"\";\n private _notLoggedIn: boolean = true;\n private _description?: IUserDescription;\n private _profile?: UserProfile;\n\n get currentLanguage(): string {\n return this._currentLanguage;\n }\n\n get notLoggedIn(): boolean {\n return this._notLoggedIn;\n }\n\n get description(): IUserDescription {\n // will be undefined if initialize() was not called.\n return this._description as unknown as IUserDescription;\n }\n\n public get avatarUrl(): string {\n let avatar = this.description.photo;\n if (!avatar || avatar === \"no-avatar.jpg\" || avatar === \"no-avatar.svg\") {\n const basePath =\n ConfigurationFrameworkFactory.instance().Platform.theme.basePath;\n avatar = basePath + \"/img/illustrations/no-avatar.svg\";\n }\n return avatar;\n }\n\n get user(): IUserInfo {\n return this._me;\n }\n\n get currentApp(): App | null {\n return configure.Platform.apps.currentApp;\n }\n\n public async initialize(): Promise<void> {\n return http\n .get<IUserInfo>(\"/auth/oauth2/userinfo\")\n .then((u) => {\n if (\n http.latestResponse.status < 200 ||\n http.latestResponse.status >= 300\n ) {\n // Backend tries to redirect the user => not logged in !\n throw ERROR_CODE.NOT_LOGGED_IN;\n }\n this.setCurrentModel(u);\n return this._notLoggedIn\n ? this.loadDefaultLanguage()\n : this.loadUserLanguage();\n })\n .then((lang) => {\n this.setCurrentLanguage(lang);\n return this.loadDescription();\n })\n .then(() => {\n return this.getUserProfile();\n })\n .then(() => {\n notify.onSessionReady().resolve(this._me);\n })\n .catch((e) => {\n if (e === ERROR_CODE.NOT_LOGGED_IN) {\n return Promise.resolve(); // backend is reachable, login can occur.\n }\n notify.onSessionReady().reject(e);\n });\n }\n\n private setCurrentModel(me: IUserInfo) {\n this._me = me;\n this._notLoggedIn =\n me && me.sessionMetadata && me.sessionMetadata.userId ? false : true;\n /*\n\t\tme.workflow = {\n\t\t\tload: async function(services): Promise<void>{\n\t\t\t\tfor(let service of services){\n\t\t\t\t\ttry{\n\t\t\t\t\t\tlet workflows = await Behaviours.findWorkflow(service);\n\t\t\t\t\t\tconsole.log('Workflows loaded from ' + service);\n\t\t\t\t\t\tconsole.log(workflows);\n\t\t\t\t\t\tthis[service] = workflows;\n\t\t\t\t\t}\n\t\t\t\t\tcatch(e){\n\t\t\t\t\t\tconsole.log(service + \" doesn't have a behaviours file.\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif(appPrefix !== '.'){\n\t\t\tawait me.workflow.load(['workspace', appPrefix]);\n\t\t}\n\t\telse{\n\t\t\tawait me.workflow.load(['workspace']);\n\t\t}\n\t\t\n\t\tmodel.trigger('me.change');\n*/\n }\n\n ////////////////////////////////////////////////////////// Rights management\n\n hasWorkflow(workflowName: string): boolean {\n return (\n workflowName === undefined ||\n this._me?.authorizedActions.findIndex((workflowRight) => {\n return workflowRight.name === workflowName;\n }) !== -1\n );\n }\n\n hasRight(resource: any, right: any): boolean {\n if (right === \"owner\") {\n return resource.owner && resource.owner.userId === this._me.userId;\n }\n const rightName = right.right || right;\n\n let currentSharedRights: Array<IResourceRight> = (\n resource.shared as Array<IResourceRight>\n ).filter((sharedRight) => {\n return (\n (this._me.groupsIds || []).indexOf(sharedRight.groupId) !== -1 ||\n sharedRight.userId === this._me.userId\n );\n });\n\n const resourceRight: boolean =\n currentSharedRights.find((resourceRight) => {\n return resourceRight[rightName] || resourceRight.manager;\n }) !== undefined;\n\n const workflowRight = right.workflow\n ? this.hasWorkflow(right.workflow)\n : true;\n\n return resourceRight && workflowRight;\n }\n\n ////////////////////////////////////////////////////////// Storage management\n\n get latestQuotaAndUsage(): Promise<IQuotaAndUsage> {\n return http\n .get<IQuotaAndUsage>(`/workspace/quota/user/${this._me.userId}`)\n .then((infos) => {\n if (this._description) {\n // Update quota and storage internal session infos.\n this._description.quota = infos.quota;\n this._description.storage = infos.storage;\n }\n return infos;\n })\n .catch(() => {\n return { quota: 0, storage: 0 };\n });\n }\n\n ////////////////////////////////////////////////////////// Language management\n\n private setCurrentLanguage(lang: string) {\n this._currentLanguage = lang;\n // Notify that current language has changed.\n notify.onLangReady().resolve(lang);\n }\n\n private loadDefaultLanguage(): Promise<string> {\n return http\n .get<{ locale: string }>(\"/locale\")\n .then((response) => {\n return response.locale;\n })\n .catch(() => {\n // void\n return this._currentLanguage;\n });\n }\n\n ////////////////////////////////////////////////////////// Description management\n\n private loadDescription(): Promise<IUserDescription> {\n return Promise.all([\n // FIXME The full user's description should be obtainable from a single endpoint in the backend.\n http.get<PersonApiResult>(\"/userbook/api/person\", {\n requestName: \"refreshAvatar\",\n }),\n http.get<IUserDescription>(\"/directory/userbook/\" + this._me.userId),\n ]).then((results) => {\n if (\n results[0].status === \"ok\" &&\n results[0].result &&\n results[0].result.length > 0\n ) {\n this._description = results[0].result[0];\n } else {\n this._description = {} as unknown as IUserDescription;\n }\n // \"type\" field from /userbook/api/person becomes \"profiles\"\n if (this._description.type && !this._description.profiles) {\n this._description.profiles = this._description.type as unknown as Array<\n \"Student\" | \"Teacher\" | \"Relative\" | \"Personnel\" | \"Guest\"\n >;\n }\n Object.assign(this._description, results[1]);\n return this._description;\n });\n }\n\n get profile(): UserProfile {\n // will be undefined if initialize() was not called.\n return this._profile as unknown as UserProfile;\n }\n\n public getUserProfile(): Promise<UserProfile> {\n return http\n .get<any>(\"/userbook/api/person\")\n .then((data) => data.result)\n .then((user) => {\n return (this._profile = user[0].type);\n });\n }\n\n private loadUserLanguage(): Promise<string> {\n return http\n .get<any>(\"/userbook/preference/language\")\n .then((responseText) => {\n try {\n return JSON.parse(responseText.preference)[\"default-domain\"];\n } catch (e) {\n return this.loadDefaultLanguage();\n }\n })\n .catch(() => {\n return this.loadDefaultLanguage();\n });\n }\n\n ////////////////////////////////////////////////////////// Email management\n\n public getEmailValidationInfos(): Promise<IEmailValidationInfos> {\n return http.get<IEmailValidationInfos>(\"/directory/user/mailstate\");\n }\n\n public checkEmail(email: String): Promise<void> {\n return http.put<void>(\"/directory/user/mailstate\", { email: email });\n }\n\n public tryEmailValidation(code: String): Promise<IEmailValidationState> {\n return http.post<IEmailValidationState>(\"/directory/user/mailstate\", {\n key: code,\n });\n }\n\n ////////////////////////////////////////////////////////// Mobile management\n\n public getMobileValidationInfos(): Promise<IMobileValidationInfos> {\n return http.get<IMobileValidationInfos>(\"/directory/user/mobilestate\");\n }\n\n public checkMobile(mobile: String): Promise<void> {\n return http.put<void>(\"/directory/user/mobilestate\", { mobile: mobile });\n }\n\n public tryMobileValidation(code: String): Promise<IMobileValidationState> {\n return http.post<IMobileValidationState>(\"/directory/user/mobilestate\", {\n key: code,\n });\n }\n\n ////////////////////////////////////////////////////////// MFA management\n\n public getMfaInfos(): Promise<IMfaInfos> {\n return http.get<IMfaInfos>(\"/auth/user/mfa/code\");\n }\n\n public tryMfaCode(code: String): Promise<IMfaCodeState> {\n return http.post<IMfaCodeState>(\"/auth/user/mfa/code\", { key: code });\n }\n}\n","import { ISessionFramework } from \"./interfaces\";\nimport { Session } from \"./Session\";\nimport { transport } from \"../transport/Framework\";\nimport { ERROR_CODE } from \"../globals\";\n\nexport class SessionFramework implements ISessionFramework {\n session: Session = new Session();\n\n public initialize(): Promise<void> {\n return this.session.initialize();\n // TODO Finir le bootstrapping, voir infra-front/lib.ts\n }\n\n public login(\n email: string,\n password: string,\n rememberMe?: boolean,\n secureLocation?: boolean,\n ): Promise<void> {\n const data = new FormData();\n data.append(\"email\", email);\n data.append(\"password\", password);\n if (typeof rememberMe !== \"undefined\") {\n data.append(\"rememberMe\", \"\" + rememberMe);\n }\n if (typeof secureLocation !== \"undefined\") {\n data.append(\"secureLocation\", \"\" + secureLocation);\n }\n\n return transport.http\n .post<void>(\"/auth/login\", data, {\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n })\n .finally(() => {\n switch (transport.http.latestResponse.status) {\n case 200: // error, TODO look for error message in returned html...\n throw ERROR_CODE.MALFORMED_DATA;\n case 302: // success TODO redirects cannot be intercepted with axios in a browser !!!\n default:\n break;\n }\n });\n }\n\n logout(): Promise<void> {\n return transport.http.get<void>(\"/auth/logout\").finally(() => {\n // void, always successful\n });\n }\n}\n\n/** The whole framework is a singleton. */\nexport const session: SessionFramework = new SessionFramework();\n","import { notify } from \"../notify/Framework\";\nimport { session } from \"../session/Framework\";\nimport { transport } from \"../transport/Framework\";\nimport { configure } from \"./Framework\";\nimport {\n ITheme,\n IThemeConf,\n IThemeDesc,\n IThemeOverrides,\n IThemeConfOverriding,\n} from \"./interfaces\";\n\nexport class Theme implements ITheme {\n private _conf?: IThemeConf;\n private _loaded?: Promise<void>;\n\n // legacy (readonly)\n skinName = \"\";\n themeName = \"\";\n skin = \"raw\";\n themeUrl = \"/assets/themes/raw/default/\";\n templateOverrides: IThemeOverrides = {};\n portalTemplate = \"/assets/themes/raw/portal.html\";\n basePath = \"\";\n logoutCallback = \"/\";\n skins: Array<IThemeConfOverriding> = [];\n\n is1D = false;\n is2D = false;\n\n initialize(version?: string) {\n return notify.onSessionReady().promise.then(() => this.load(version));\n }\n\n private get version(): string {\n return configure.Platform.deploymentTag;\n }\n\n private get cdnDomain(): string {\n return configure.Platform.cdnDomain;\n }\n\n async onFullyReady(): Promise<ITheme> {\n await this._loaded;\n return this;\n }\n\n private _onSkinReady = notify.onSkinReady();\n onSkinReady(): Promise<ITheme> {\n return this._onSkinReady.promise;\n }\n private _onOverrideReady = notify.onOverridesReady();\n onOverrideReady(): Promise<IThemeOverrides> {\n return this._onOverrideReady.promise;\n }\n\n async getConf(version?: string): Promise<IThemeConf> {\n this._conf =\n this._conf ??\n (await transport.http.getScript<IThemeConf>(\n \"/assets/theme-conf.js\",\n { queryParams: { v: version ?? this.version } },\n \"exports.conf\",\n ));\n return this._conf;\n }\n\n load(version?: string): Promise<void> {\n version = version ?? this.version;\n if (!this._loaded) {\n this._loaded = (\n session.session.notLoggedIn\n ? this.loadDisconnected(version)\n : this.loadConnected(version)\n ).then(async () => {\n // List skins to determine if current theme is 1D or 2D.\n const skins = await this.listSkins();\n this.is1D =\n skins.find((s) => s.child === this.skin)?.parent === \"panda\";\n this.is2D =\n skins.find((s) => s.child === this.skin)?.parent === \"theme-open-ent\";\n });\n }\n return this._loaded;\n }\n\n private loadDisconnected(version: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n transport.http\n .get(\"/skin\", { queryParams: { v: this.version } })\n .then((data) => {\n this.skin = data.skin;\n this.themeUrl = `${this.cdnDomain}/assets/themes/${data.skin}/skins/default/`;\n this.basePath = this.themeUrl + \"../../\";\n this._onSkinReady.resolve(this);\n transport.http\n .get(`/assets/themes/${data.skin}/template/override.json`, {\n disableNotifications: true,\n queryParams: { v: version },\n })\n .then((override) => {\n this.templateOverrides = override;\n this._onOverrideReady.resolve(override);\n resolve();\n })\n .catch((e) => {\n if (transport.http.latestResponse.status === 404) {\n resolve();\n } else {\n throw e;\n }\n });\n })\n .catch((e) => {\n this._onSkinReady.reject(e);\n this._onOverrideReady.reject(e);\n reject();\n });\n });\n }\n\n private loadConnected(version: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.loadDefaultTheme(version).then(() => {\n this._onSkinReady.resolve(this);\n transport.http\n .get(`/assets/themes/${this.skin}/template/override.json`, {\n disableNotifications: true,\n queryParams: { v: version },\n })\n .then((override) => {\n this.templateOverrides = override;\n this._onOverrideReady.resolve(override);\n resolve();\n })\n .catch((e) => {\n if (transport.http.latestResponse.status === 404) {\n resolve();\n this._onSkinReady.reject(e); // FIXME semble mal placé car a peut-être déjà été résolu !\n this._onOverrideReady.reject(e);\n } else {\n throw e;\n }\n });\n });\n });\n }\n\n /** Load the user's configured theme. */\n private async loadDefaultTheme(version: string) {\n if (!session.session.notLoggedIn) {\n return transport.http\n .get(\"/theme\", { queryParams: { _: version } })\n .then((data) => {\n this.skinName = data.skinName;\n this.themeName = data.themeName;\n this.themeUrl = data.skin;\n this.basePath = `${this.cdnDomain}${this.themeUrl}../../`;\n this.skin = this.themeUrl.split(\"/assets/themes/\")[1].split(\"/\")[0];\n this.portalTemplate = `${this.cdnDomain}/assets/themes/${this.skin}/portal.html`;\n this.logoutCallback = data.logoutCallback;\n });\n }\n return Promise.reject();\n }\n\n listThemes(): Promise<IThemeDesc[]> {\n return transport.http.get<IThemeDesc[]>(\"/themes\");\n }\n\n async setDefaultTheme(theme: IThemeDesc) {\n await transport.http.get(\n \"/userbook/api/edit-userbook-info?prop=theme-\" +\n this.skin +\n \"&value=\" +\n theme._id,\n );\n await this.loadDefaultTheme(this.version);\n }\n\n listSkins(): Promise<IThemeConfOverriding[]> {\n return this.skins.length > 0\n ? Promise.resolve(this.skins)\n : this.getConf().then((conf) => {\n const currentTheme = conf.overriding.find(\n (t) => t.child === this.skin,\n );\n if (currentTheme?.group) {\n this.skins = this.skins.concat(\n conf.overriding.filter((t) => t.group === currentTheme.group),\n );\n } else {\n this.skins = this.skins.concat(conf.overriding);\n }\n return this.skins;\n });\n }\n\n async getHelpPath(): Promise<String> {\n const overrides = await this.listSkins();\n const override = overrides.find((t) => t.child === this.skin);\n return override?.help ?? \"/help\";\n }\n}\n\n/*\nlet _skinResolved, _skinRejected = null;\nexport var skin = {\n\tprivate addDirectives: undefined as any,\n\tprivate templateMapping: {},\n\n\tthemeConf: undefined,\n\tthemeConfPromise: undefined,\n\tloadBookmarks: async function(){\n\t\treturn new Promise<void>((resolve, reject) => {\n\t\t\thttp().get('/userbook/preference/apps').done(function(data){\n\t\t\t\tif(!data.preference){\n\t\t\t\t\tdata.preference = null;\n\t\t\t\t}\n\t\t\t\tmodel.me.myApps = JSON.parse(data.preference);\n\t\t\t\tif (_.isArray(model.me.myApps)) {\n\t\t\t\t\tmodel.me.bookmarkedApps = model.me.myApps;\n\t\t\t\t\tmodel.me.myApps = {\n\t\t\t\t\t\tbookmarks: _.map(model.me.myApps, app => app.name),\n\t\t\t\t\t\tapplications: []\n\t\t\t\t\t}\n\t\t\t\t\thttp().putJson('/userbook/preference/apps', model.me.myApps);\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!model.me.myApps){\n\t\t\t\t\tmodel.me.myApps = {\n\t\t\t\t\t\tbookmarks: [],\n\t\t\t\t\t\tapplications: []\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmodel.me.bookmarkedApps = [];\n\t\t\t\tvar upToDate = true;\n\t\t\t\tlet remove = [];\n\t\t\t\tmodel.me.myApps.bookmarks.forEach(function(appName, index){\n\t\t\t\t\tvar foundApp = _.findWhere(model.me.apps, { name: appName });\n\t\t\t\t\tif(foundApp){\n\t\t\t\t\t\tvar app = {};\n\t\t\t\t\t\tfor(var property in foundApp){\n\t\t\t\t\t\t\tapp[property] = foundApp[property];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmodel.me.bookmarkedApps.push(app);\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tremove.push(appName);\n\t\t\t\t\t\tupToDate = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tremove.forEach(function(app) {\n\t\t\t\t\tvar index = model.me.myApps.bookmarks.indexOf(app);\n\t\t\t\t\tmodel.me.myApps.bookmarks.splice(index, 1);\n\t\t\t\t});\n\t\t\t\tif(!upToDate){\n\t\t\t\t\thttp().putJson('/userbook/preference/apps', model.me.myApps);\n\t\t\t\t}\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\t},\n\tloadConnected: async function(): Promise<any>{\n\t\tconst rand = Math.random();\n\t\tconst that = this;\n\t\treturn new Promise<void>((resolve, reject) => {\n\t\t\thttp().get('/theme').done(function(data){\n\t\t\t\tthat.skinName = data.skinName;\n\t\t\t\tthat.themeName = data.themeName;\n\t\t\t\tthat.theme = data.skin;\n\t\t\t\tthat.basePath = (window as any).CDN_DOMAIN + that.theme + '../../';\n\t\t\t\tthat.skin = that.theme.split('/assets/themes/')[1].split('/')[0];\n\t\t\t\tthat.portalTemplate = (window as any).CDN_DOMAIN + '/assets/themes/' + that.skin + '/portal.html';\n\t\t\t\tthat.logoutCallback = data.logoutCallback;\n\t\t\t\tskin.skinResolveFunc();\n\t\t\t\thttp().get('/assets/themes/' + that.skin + '/template/override.json', { token: rand }).done(function(override){\n\t\t\t\t\tthat.templateMapping = override;\n\t\t\t\t\tif (window.entcore.template) {\n\t\t\t\t\t\twindow.entcore.template.loadPortalTemplates();\n\t\t\t\t\t}\n\t\t\t\t\tresolve();\n\t\t\t\t})\n\t\t\t\t.e404(() => { \n\t\t\t\t\tresolve(); \n\t\t\t\t\tskin.skinRejectedFunc();\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t},\n};\n*/\n\n/*\n export const themeService = {\n loadOldWrappedTheme(oldTheme:string, skinName:string){\n let version = 'dev';\n if((window as any).springboardBuildDate){\n version = (window as any).springboardBuildDate;\n }\n jQuery(\"#themeOld\").remove();\n const style = jQuery('<link>', {\n rel: 'stylesheet',\n type: 'text/css',\n href: (window as any).CDN_DOMAIN+`/assets/themes/${oldTheme}/skins/${skinName}/wrapped.theme.css?version=${version}`,\n id: 'themeOld'\n }).attr(\"crossorigin\", \"anonymous\");\n jQuery('head').append(style);\n },\n loadThemeJs(theme:string){\n let version = 'dev';\n if((window as any).springboardBuildDate){\n version = (window as any).springboardBuildDate;\n }\n jQuery(\"#themeJS\").remove();\n const style = jQuery('<script>', {\n type: 'text/javascript',\n src: (window as any).CDN_DOMAIN+`/assets/themes/${theme}/js/theme.js?version=${version}`,\n id: 'themeJS'\n });\n jQuery('body').append(style);\n }\n }\n*/\n","import { AddBundleCallback, IIdiom } from \"../configure/interfaces\";\nimport { transport } from \"../transport/Framework\";\nimport { notify, Promisified } from \"../notify/Framework\";\nimport { session } from \"../session/Framework\";\n\nconst bundle: { [key: string]: string } = {};\nconst promises: { [path: string]: Promise<void> } = {};\n\nexport const defaultDiacriticsRemovalMap = [\n {\n base: \"A\",\n letters:\n /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g,\n },\n { base: \"AA\", letters: /[\\uA732]/g },\n { base: \"AE\", letters: /[\\u00C6\\u01FC\\u01E2]/g },\n { base: \"AO\", letters: /[\\uA734]/g },\n { base: \"AU\", letters: /[\\uA736]/g },\n { base: \"AV\", letters: /[\\uA738\\uA73A]/g },\n { base: \"AY\", letters: /[\\uA73C]/g },\n {\n base: \"B\",\n letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g,\n },\n {\n base: \"C\",\n letters:\n /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g,\n },\n {\n base: \"D\",\n letters:\n /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g,\n },\n { base: \"DZ\", letters: /[\\u01F1\\u01C4]/g },\n { base: \"Dz\", letters: /[\\u01F2\\u01C5]/g },\n {\n base: \"E\",\n letters:\n /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g,\n },\n { base: \"F\", letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g },\n {\n base: \"G\",\n letters:\n /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g,\n },\n {\n base: \"H\",\n letters:\n /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g,\n },\n {\n base: \"I\",\n letters:\n /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g,\n },\n { base: \"J\", letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g },\n {\n base: \"K\",\n letters:\n /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g,\n },\n {\n base: \"L\",\n letters:\n /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g,\n },\n { base: \"LJ\", letters: /[\\u01C7]/g },\n { base: \"Lj\", letters: /[\\u01C8]/g },\n { base: \"M\", letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g },\n {\n base: \"N\",\n letters:\n /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g,\n },\n { base: \"NJ\", letters: /[\\u01CA]/g },\n { base: \"Nj\", letters: /[\\u01CB]/g },\n {\n base: \"O\",\n letters:\n /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g,\n },\n { base: \"OI\", letters: /[\\u01A2]/g },\n { base: \"OO\", letters: /[\\uA74E]/g },\n { base: \"OU\", letters: /[\\u0222]/g },\n {\n base: \"P\",\n letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g,\n },\n { base: \"Q\", letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g },\n {\n base: \"R\",\n letters:\n /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g,\n },\n {\n base: \"S\",\n letters:\n /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g,\n },\n {\n base: \"T\",\n letters:\n /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g,\n },\n { base: \"TZ\", letters: /[\\uA728]/g },\n {\n base: \"U\",\n letters:\n /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g,\n },\n { base: \"V\", letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g },\n { base: \"VY\", letters: /[\\uA760]/g },\n {\n base: \"W\",\n letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g,\n },\n { base: \"X\", letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g },\n {\n base: \"Y\",\n letters:\n /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g,\n },\n {\n base: \"Z\",\n letters:\n /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g,\n },\n {\n base: \"a\",\n letters:\n /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g,\n },\n { base: \"aa\", letters: /[\\uA733]/g },\n { base: \"ae\", letters: /[\\u00E6\\u01FD\\u01E3]/g },\n { base: \"ao\", letters: /[\\uA735]/g },\n { base: \"au\", letters: /[\\uA737]/g },\n { base: \"av\", letters: /[\\uA739\\uA73B]/g },\n { base: \"ay\", letters: /[\\uA73D]/g },\n {\n base: \"b\",\n letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g,\n },\n {\n base: \"c\",\n letters:\n /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g,\n },\n {\n base: \"d\",\n letters:\n /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g,\n },\n { base: \"dz\", letters: /[\\u01F3\\u01C6]/g },\n {\n base: \"e\",\n letters:\n /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g,\n },\n { base: \"f\", letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g },\n {\n base: \"g\",\n letters:\n /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g,\n },\n {\n base: \"h\",\n letters:\n /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g,\n },\n { base: \"hv\", letters: /[\\u0195]/g },\n {\n base: \"i\",\n letters:\n /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g,\n },\n { base: \"j\", letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g },\n {\n base: \"k\",\n letters:\n /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g,\n },\n {\n base: \"l\",\n letters:\n /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g,\n },\n { base: \"lj\", letters: /[\\u01C9]/g },\n { base: \"m\", letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g },\n {\n base: \"n\",\n letters:\n /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g,\n },\n { base: \"nj\", letters: /[\\u01CC]/g },\n {\n base: \"o\",\n letters:\n /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g,\n },\n { base: \"oi\", letters: /[\\u01A3]/g },\n { base: \"ou\", letters: /[\\u0223]/g },\n { base: \"oo\", letters: /[\\uA74F]/g },\n {\n base: \"p\",\n letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g,\n },\n { base: \"q\", letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g },\n {\n base: \"r\",\n letters:\n /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g,\n },\n {\n base: \"s\",\n letters:\n /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g,\n },\n {\n base: \"t\",\n letters:\n /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g,\n },\n { base: \"tz\", letters: /[\\uA729]/g },\n {\n base: \"u\",\n letters:\n /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g,\n },\n { base: \"v\", letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g },\n { base: \"vy\", letters: /[\\uA761]/g },\n {\n base: \"w\",\n letters:\n /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g,\n },\n { base: \"x\", letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g },\n {\n base: \"y\",\n letters:\n /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g,\n },\n {\n base: \"z\",\n letters:\n /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g,\n },\n];\n\nexport class Idiom implements IIdiom {\n translate(key: string, params?: { [param: string]: any }): string {\n key = key ?? \"\";\n let txt: string = bundle[key] === undefined ? key : bundle[key];\n if (params && typeof params === \"object\") {\n for (let member in params) {\n if (typeof params[member] !== \"undefined\") {\n txt = txt.replace(\n new RegExp(\"\\\\${\" + member + \"}\", \"g\"),\n \"\" + params[member],\n );\n }\n }\n }\n return txt;\n }\n\n addBundlePromise(path: string): Promise<void> {\n return this.loadBundlePromise(session.session.currentLanguage, path);\n }\n\n addBundle(path: string, callback?: AddBundleCallback): void {\n this.loadBundle(session.session.currentLanguage, path, callback);\n }\n\n loadBundlePromise(lang: string, path: string): Promise<void> {\n this.loadBundle(lang, path);\n return promises[path];\n }\n\n private loadBundle(\n lang: string,\n path: string,\n callback?: AddBundleCallback,\n ): void {\n // load bundle only once\n const oldPromise = promises[path];\n if (oldPromise) {\n if (callback) {\n oldPromise.then(callback).catch(callback);\n }\n } else {\n // Create a Promise now, to avoid loading a bundle more than once.\n const load = new Promisified<void>();\n promises[path] = load.promise;\n // Then load the bundle.\n const params: any = {};\n // Force requested language to user's choice.\n if (lang) {\n params[\"Accept-Language\"] = lang;\n }\n transport.http\n .get<string>(path, { headers: params })\n .then((response) => {\n Object.assign(bundle, response);\n if (typeof callback === \"function\") {\n callback();\n }\n load.resolve();\n })\n .catch((e) => {\n if (typeof callback === \"function\") {\n callback();\n }\n load.reject();\n });\n }\n }\n\n addTranslations(folder: string, callback?: AddBundleCallback): void {\n // Load translations once language is known.\n notify.onLangReady().promise.then((lang) => {\n this.loadBundle(lang, folder + \"/\" + lang + \".json\", callback);\n });\n }\n\n addAllTranslations(folders: string[]): Promise<void> {\n if (folders && folders.length > 0) {\n // Load all translations once language is known.\n return notify\n .onLangReady()\n .promise.then((lang) =>\n Promise.all(\n folders.map((folder) =>\n this.loadBundlePromise(lang, folder + \"/\" + lang + \".json\"),\n ),\n ),\n )\n .then(() => {});\n } else {\n return Promise.reject();\n }\n }\n\n addKeys(keys: any): void {\n for (var property in keys) {\n if (typeof bundle[property] !== \"string\")\n bundle[property] = keys[property];\n }\n }\n\n removeAccents(str: string): string {\n for (var i = 0; i < defaultDiacriticsRemovalMap.length; i++) {\n str = str.replace(\n defaultDiacriticsRemovalMap[i].letters,\n defaultDiacriticsRemovalMap[i].base,\n );\n }\n return str;\n }\n}\n","import { App } from \"../globals\";\nimport { IUserPreferences, UserPreferenceKey } from \"./interfaces\";\nimport { transport } from \"../transport/Framework\";\nimport { notify } from \"../notify/Framework\";\nimport { IUserInfo, IWebApp } from \"../session/interfaces\";\nimport { session } from \"../session/Framework\";\n\n//-------------------------------------\nclass UserPreferences implements IUserPreferences {\n //-------------------------------------\n data: { [key in UserPreferenceKey]?: any } = {};\n\n get(key: UserPreferenceKey): any {\n return this.data[key];\n }\n\n load(key: UserPreferenceKey, defaultTo?: any): Promise<any> {\n return transport.http\n .get(\"/userbook/preference/\" + key)\n .then((data) => {\n try {\n return JSON.parse(data.preference);\n } catch (e) {\n return defaultTo ?? {};\n }\n })\n .then((prefs) => {\n this.data[key] = prefs ?? {};\n return prefs;\n });\n }\n\n update(key: UserPreferenceKey, data: any): UserPreferences {\n if (data !== undefined) {\n this.data[key] = data;\n }\n //notify.onEvent<PreferencesUpdated>( EVENT_NAME.PREFERENCES_UPDATED ).next( new PreferencesUpdated(key, data) );\n return this;\n }\n\n save(key: UserPreferenceKey): Promise<void> {\n //FIXME code review\n return transport.http.putJson(\n \"/userbook/preference/\" + key,\n this.data[key],\n );\n }\n}\n\n//-------------------------------------\nexport class User {\n //-------------------------------------\n private _me: IUserInfo = null as unknown as IUserInfo;\n private _keepOpenOnLogout: boolean = false;\n private _preferences: IUserPreferences = new UserPreferences();\n private _bookmarkedApps: Array<IWebApp> = [];\n\n get keepOpenOnLogout(): boolean {\n return this._keepOpenOnLogout;\n }\n\n get preferences(): IUserPreferences {\n return this._preferences;\n }\n\n get bookmarkedApps(): Array<IWebApp> {\n // will be empty if initialize() was not called.\n return this._bookmarkedApps;\n }\n\n initialize(version?: string) {\n this.loadPublicConf();\n return notify.onSessionReady().promise.then((userInfo) => {\n if (userInfo) {\n this.setCurrentModel(userInfo);\n }\n });\n }\n\n private setCurrentModel(me: IUserInfo) {\n this._me = me;\n this._preferences = new UserPreferences();\n this.loadBookmarks();\n }\n\n private loadPublicConf(): Promise<any> {\n return transport.http.get<any>(\"/conf/public\").then((publicConf) => {\n this._keepOpenOnLogout = publicConf?.keepOpenOnLogout || false;\n return publicConf;\n });\n }\n\n /** Bookmarks : pinned apps */\n private async loadBookmarks() {\n await transport.http.get(\"/userbook/preference/apps\").then((data) => {\n if (!data.preference) {\n data.preference = null;\n }\n const tmp = JSON.parse(\n data.preference,\n ) as Array<IWebApp>; /*| {bookmarks:string[],applications:[]}*/\n let myApps: {\n bookmarks: Array<string>; // Array of app names\n applications: [];\n };\n\n // If myApps is array\n if (tmp && tmp.length && typeof tmp.concat === \"function\") {\n this._bookmarkedApps = tmp;\n myApps = {\n bookmarks: tmp.map((app) => app.name),\n applications: [],\n };\n transport.http.putJson(\"/userbook/preference/apps\", myApps);\n return;\n } else {\n myApps = tmp as unknown as { bookmarks: string[]; applications: [] };\n }\n\n if (!myApps) {\n myApps = {\n bookmarks: [],\n applications: [],\n };\n }\n\n let upToDate = true;\n const remove: Array<string> = [];\n myApps.bookmarks.forEach((appName, index) => {\n const foundApp = this._me.apps.find((app) => app.name === appName);\n if (foundApp) {\n let app = Object.assign({}, foundApp);\n this._bookmarkedApps.push(app);\n } else {\n remove.push(appName);\n upToDate = false;\n }\n });\n remove.forEach((appName) => {\n let index = myApps.bookmarks.indexOf(appName);\n if (index !== -1) {\n myApps.bookmarks.splice(index, 1);\n }\n });\n if (!upToDate) {\n transport.http.putJson(\"/userbook/preference/apps\", myApps);\n }\n });\n\n // TODO Finir l'interface, voir infra-front/me.ts\n }\n\n public loadAppPrefs(app: App): Promise<any> {\n return this.preferences.load(app, {});\n }\n\n public saveAppPrefs(app: App): Promise<void> {\n return this.preferences.save(app);\n }\n\n public loadLanguage(): Promise<string> {\n return this.preferences\n .load(\"language\", { \"default-domain\": session.session.currentLanguage })\n .then((data) => data[\"default-domain\"]);\n }\n\n public saveLanguage(lang: string): Promise<void> {\n return this.preferences\n .update(\"language\", { \"default-domain\": lang })\n .save(\"language\");\n }\n}\n","import { transport } from \"../transport/Framework\";\nimport { App } from \"../globals\";\nimport { configure } from \"./Framework\";\nimport { notify } from \"../notify/Framework\";\nimport { IWebApp } from \"../index.cjs\";\n\nconst http = transport?.http;\n\n//-------------------------------------\nexport class AppConf {\n //-------------------------------------\n private _publicConf: { [key in App]?: any } = {};\n private _currentApp?: App;\n private _appConf: { [key in App]?: IWebApp } = {};\n\n /**\n * Get the currently initialized App.\n * @see getter SessionFramework.currentApp\n */\n get currentApp(): App | null {\n return this._currentApp ?? null;\n }\n\n setCurrentApp(app: App): AppConf {\n this._currentApp = app;\n return this;\n }\n\n async initialize(app: App, alternativeApp: boolean = false): Promise<void> {\n if (!alternativeApp) {\n this.setCurrentApp(app);\n }\n await Promise.all([this.getPublicConf(app), this.loadI18n(app)]);\n }\n\n public async getPublicConf(app: App): Promise<any> {\n if (!this._publicConf[app]) {\n this._publicConf[app] = await http.get<any>(`/${app}/conf/public`, {\n queryParams: { _: configure.Platform.deploymentTag },\n });\n }\n return this._publicConf[app];\n }\n\n public async getWebAppConf(app: App): Promise<IWebApp | undefined> {\n let found: IWebApp | undefined;\n if (!this._appConf[app]) {\n const list = await http.get<{ apps: Array<IWebApp> }>(\n `/applications-list`,\n );\n list.apps.forEach((conf) => {\n if (conf?.prefix) {\n const a: App = conf.prefix.replace(\"/\", \"\") as App;\n this._appConf[a] = conf;\n } else if (conf?.name) {\n /* Try to extract name from another field than prefix. */\n if (conf.name.toLowerCase() == app) {\n found = conf;\n }\n }\n });\n }\n return this._appConf[app] ?? found;\n }\n\n public async loadI18n(app: App): Promise<void> {\n await notify.onLangReady().promise;\n const i18n = configure.Platform.idiom;\n return i18n.addBundlePromise(`/${app}/i18n`);\n }\n}\n","import {\n AnalyticStatus,\n IXitiTrackingParams,\n IMatomoTrackingParams,\n ITrackingParams,\n TrackingType,\n} from \"./interfaces\";\nimport { transport } from \"../transport/Framework\";\nimport { ERROR_CODE, IPromisified } from \"..\";\nimport { session } from \"../session/Framework\";\nimport { notify } from \"../notify/Framework\";\nimport { configure } from \"./Framework\";\n\nexport type ParamsByTrackingSystem = {\n type: \"none\" | \"internal\" | \"matomo\" | \"multiple\";\n internal?: ITrackingParams;\n matomo?: IMatomoTrackingParams;\n xiti?: IXitiTrackingParams;\n};\n\n// 2021 implementation of XiTi\nexport type XitiConf = {\n //Springboard constants\n ID_EXPLOITANT: string; //\"ODE\"\n ID_PLATEFORME: string; //\"OPEN_ENT_NG/ONE/NEO\"\n ID_PROJET: string; //\"RECETTE_ODE\"\n\n //Xiti conf\n active: boolean;\n config: boolean;\n structureMap?: {\n [structureId: string]: {\n UAI?: string; //\"1234567Z\"\n active: boolean;\n collectiviteId?: number;\n plateformeId?: any;\n projetId?: any;\n };\n };\n};\n\n//-------------------------------------\nexport class Analytics {\n //-------------------------------------\n private _status: AnalyticStatus = \"void\";\n private _params?: IPromisified<ParamsByTrackingSystem>;\n\n get status(): AnalyticStatus {\n return this._status;\n }\n\n xiti(): Promise<IXitiTrackingParams | undefined> {\n // XiTi does not implement ITrackingParams but behaves like it does.\n return this.parametersWithCheck(\"xiti\" as TrackingType, false) as Promise<\n IXitiTrackingParams | undefined\n >;\n }\n\n parameters<T extends ITrackingParams>(\n type: TrackingType,\n ): Promise<T | undefined> {\n return this.parametersWithCheck<T>(type, true);\n }\n\n private async parametersWithCheck<T extends ITrackingParams>(\n type: TrackingType,\n checkType: boolean,\n ): Promise<T | undefined> {\n return this.initialize().promise.then((params) => {\n return !checkType || params.type === type || params.type === \"multiple\"\n ? (params[type] as T)\n : undefined;\n });\n }\n\n /**\n * This method loads the conf and waits for the user session to start.\n * It can be called ASAP, but it will be automatically called if needed.\n * @returns A promise of the end of the init process (it may throw errors)\n * @throws ERROR_CODE.MALFORMED_DATA when config cannot be read.\n */\n private initialize(): IPromisified<ParamsByTrackingSystem> {\n if (!this._params) {\n this._params = notify.promisify<ParamsByTrackingSystem>();\n this._status = \"pending\";\n Promise.all([\n transport.http.get<ParamsByTrackingSystem>(\"/analyticsConf\"),\n //FIXME change servers config to only keep the \"all-in-one\" query to /analyticsConf.\n transport.http.get<XitiConf>(\"/xiti/config\"),\n ])\n .then(async (tuple) => {\n // Sanitize results\n // FIXME what to do with type \"multiple\" ?\n if (!tuple || !tuple[0] || !tuple[0].type) {\n // Data seems corrupted\n throw ERROR_CODE.MALFORMED_DATA;\n }\n\n // Add XiTi config to the resulting object, if active.\n if (tuple[1] && tuple[1].active) {\n tuple[0].xiti = await this.initializeXiti(tuple[1]);\n }\n\n this._params?.resolve(tuple[0]);\n this._status = \"ready\";\n })\n .catch((e) => {\n this._status = \"failed\";\n this._params?.reject();\n throw e;\n });\n }\n return this._params;\n }\n\n /** 2021 implementation of XiTi. */\n private async initializeXiti(\n xitiConf: XitiConf,\n ): Promise<IXitiTrackingParams | undefined> {\n if (!xitiConf.structureMap || !configure.Platform.apps.currentApp) return;\n\n const me = await notify.onSessionReady().promise;\n const desc = session.session.description;\n\n let structure;\n for (let struc of me.structures) {\n const s = xitiConf.structureMap[struc];\n if (s && s.collectiviteId && s.UAI) {\n structure = s;\n break;\n }\n }\n if (!structure || !structure.active) return;\n\n const appConf = await configure.Platform.apps.getPublicConf(\n configure.Platform.apps.currentApp,\n );\n if (!appConf) return;\n const appXitiConf = appConf.xiti;\n if (!appXitiConf) return;\n if (!appXitiConf.LIBELLE_SERVICE) return;\n if (!structure.UAI) return; // Keeps the transpiler happy\n\n // ID_PERSO\n function pseudonymization(stringId: string): string {\n let buffer = \"\";\n for (let i = 0; i < stringId.length; i++) {\n buffer += stringId.charCodeAt(i);\n }\n return buffer;\n }\n\n // PROFIL\n const profileMap = {\n Student: \"ELEVE\",\n Teacher: \"ENSEIGNANT\",\n Relative: \"PARENT\",\n Personnel: \"ADMIN_VIE_SCOL_TECH\",\n Guest: \"AUTRE\",\n };\n\n return {\n LIBELLE_SERVICE: appXitiConf.LIBELLE_SERVICE, // Which property of LIBELLE_SERVICE to use depends on the frontend.\n TYPE: appXitiConf.OUTIL ? \"TIERS\" : \"NATIF\",\n OUTIL: appXitiConf.OUTIL ? appXitiConf.OUTIL : \"\",\n STRUCT_ID: structure.collectiviteId,\n STRUCT_UAI: structure.UAI,\n PROJET: structure.projetId ? structure.projetId : xitiConf.ID_PROJET,\n EXPLOITANT: xitiConf.ID_EXPLOITANT,\n PLATFORME: structure.plateformeId\n ? structure.plateformeId\n : xitiConf.ID_PLATEFORME,\n ID_PERSO: pseudonymization(me.userId),\n PROFILE:\n desc.profiles && desc.profiles.length > 0\n ? profileMap[desc.profiles[0]] ?? \"\"\n : \"\",\n };\n }\n}\n","import { IConfigurationFramework } from \"./interfaces\";\nimport { Theme } from \"./Theme\";\nimport { Idiom } from \"../idiom/Idiom\";\nimport { User } from \"./User\";\nimport { AppConf } from \"./AppConf\";\nimport { transport } from \"../transport/Framework\";\nimport { Analytics } from \"./Analytics\";\nimport { notify } from \"../notify/Framework\";\n\n//-------------------------------------\nexport class ConfigurationFramework implements IConfigurationFramework {\n //-------------------------------------\n readonly Platform = {\n deploymentTag: \"\",\n cdnDomain: \"\",\n apps: new AppConf(),\n theme: new Theme(),\n analytics: new Analytics(),\n idiom: new Idiom(),\n listLanguages: () => {\n return transport.http.get(\"/languages\");\n },\n };\n readonly School = {\n //apps; -> pinnedApps;\n };\n readonly User = new User();\n\n async initialize(\n version?: string | null,\n cdnDomain?: string | null,\n ): Promise<void> {\n // If version is undefined, default to a new tag every day.\n if (!version) {\n const padWith0 = (val: number): string =>\n (val < 10 ? \"0\" : \"\") + val.toFixed(0);\n const now = new Date();\n const y = now.getFullYear();\n const m = now.getMonth() + 1;\n const d = now.getDate();\n version = `${y}${padWith0(m)}${padWith0(d)}`; //FIXME add ${h.toFixed(0)} to change the tag every 10 minutes\n }\n const v = version;\n this.Platform.deploymentTag = version;\n\n // Don't overwrite the CDN domain with a null or empty value.\n if (typeof cdnDomain === \"string\" && cdnDomain.length > 0) {\n this.Platform.cdnDomain = cdnDomain;\n }\n transport.http.setCdn(this.Platform.cdnDomain);\n //\n await Promise.all([\n this.Platform.theme.initialize(v),\n notify\n .onSessionReady()\n .promise.then((userInfo) =>\n this.Platform.idiom.addBundlePromise(\"/i18n\"),\n ),\n //TODO this.School.initialize( v ),\n this.User.initialize(v),\n ]);\n }\n\n // async mount(\n // version?: string | null,\n // cdnDomain?: string | null,\n // ): Promise<void> {\n // // If version is undefined, default to a new tag every day.\n // if (!version) {\n // const padWith0 = (val: number): string =>\n // (val < 10 ? \"0\" : \"\") + val.toFixed(0);\n // const now = new Date();\n // const y = now.getFullYear();\n // const m = now.getMonth() + 1;\n // const d = now.getDate();\n // version = `${y}${padWith0(m)}${padWith0(d)}`; //FIXME add ${h.toFixed(0)} to change the tag every 10 minutes\n // }\n // const v = version;\n // this.Platform.deploymentTag = version;\n\n // // Don't overwrite the CDN domain with a null or empty value.\n // if (typeof cdnDomain === \"string\" && cdnDomain.length > 0) {\n // this.Platform.cdnDomain = cdnDomain;\n // }\n // transport.http.setCdn(this.Platform.cdnDomain);\n // //\n // await this.Platform.idiom.addBundlePromise(\"/i18n\");\n // }\n}\n\n/** The whole framework is a singleton. */\nexport const configure: ConfigurationFramework = new ConfigurationFramework();\n","import { App, USER_PREFS } from \"../globals\";\nimport { IWebApp } from \"../session/interfaces\";\nimport { configure } from \"./Framework\";\n\n//-------------------------------------\nexport abstract class ConfigurationFrameworkFactory {\n //-------------------------------------\n static instance(): IConfigurationFramework {\n return configure;\n }\n}\n\n//-------------------------------------\nexport interface IConfigurationFramework {\n //-------------------------------------\n /** Framework initialization */\n initialize(version: string | null, cdnDomain: string | null): Promise<void>;\n\n readonly Platform: {\n readonly deploymentTag: string;\n readonly cdnDomain: string;\n readonly apps: {\n /**\n * Initialize an app (preload its public conf and i18n)\n * @param app Which application to initialize\n * @param alternativeApp Truthy when an application needs initializing another, while remaining principal.\n */\n initialize(app: App, alternativeApp?: boolean): Promise<void>;\n /** Load and return the public conf of an app. */\n getPublicConf(app: App): Promise<any>;\n /** Load and return the server conf of an app. */\n getWebAppConf(app: App): Promise<IWebApp | undefined>;\n /** Load the i18n of an app. */\n loadI18n(app: App): Promise<void>;\n };\n /** Configured theme. */\n readonly theme: ITheme;\n /** Configured tracking. */\n readonly analytics: {\n /** Get a tracker parameters. */\n parameters<T extends ITrackingParams>(\n type: TrackingType,\n ): Promise<T | undefined>;\n /**\n * Get the XiTi configuration.\n * This method awaits for the session to be be fully loaded.\n * //FIXME refactor xiti configuration\n */\n xiti(): Promise<IXitiTrackingParams | undefined>;\n /** Check the status, if something goes wrong. */\n readonly status: AnalyticStatus;\n };\n /** I18n (port from legacy infra-front)*/\n readonly idiom: IIdiom;\n listLanguages(): Promise<string[]>;\n };\n readonly School: {\n //apps; -> pinnedApps;\n };\n readonly User: {\n /** User's preferences.*/\n readonly preferences: IUserPreferences;\n /** Legacy option (//FIXME which use ?).*/\n readonly keepOpenOnLogout: boolean;\n /** User's prefered apps. */\n readonly bookmarkedApps: Array<IWebApp>;\n\n /** Load the user's preferences for the given app. */\n loadAppPrefs(app: App): Promise<any>;\n /** Save the user's preferences for the given app. */\n saveAppPrefs(app: App): Promise<void>;\n\n loadLanguage(): Promise<string>;\n saveLanguage(lang: string): Promise<void>;\n };\n}\n\nexport type AnalyticStatus = \"void\" | \"pending\" | \"ready\" | \"failed\";\nexport type TrackingType = \"matomo\" | \"internal\";\nexport interface ITrackingParams {\n /** Whitelist of events to track, in the form \"app\" or \"app.eventName\" or \"*.eventName\". */\n trackOnly: string[];\n /** Blacklist of events not to track, in the form \"app\" or \"app.eventName\" or \"*.eventName\". */\n doNotTrack: string[];\n /** Set to true if state changes of the Single Page App need to be tracked. */\n detailApps: boolean;\n}\nexport interface IMatomoTrackingParams extends ITrackingParams {\n url: string;\n siteId: number;\n UserId: string;\n Profile: string;\n School: string;\n Project: string;\n}\n/** 2021 implementation of XiTi. */\nexport interface IXitiTrackingParams {\n /** Which property of LIBELLE_SERVICE to use depends on the frontend. */\n LIBELLE_SERVICE: { default: string } & { [prop: string]: string };\n TYPE: string;\n OUTIL: any;\n STRUCT_ID: any;\n STRUCT_UAI: string;\n PROJET: any;\n EXPLOITANT: any;\n PLATFORME: any;\n ID_PERSO: any;\n PROFILE: any;\n // NOM_PAGE is missing, but has to determined by the frontend.\n}\n\n//-------------------------------------\nexport interface ITheme {\n //-------------------------------------\n /** (legacy) Name of the currently active skin (user's choice in /timeline) : \"default\" by default, or another available name. */\n readonly skinName: string;\n /** (legacy) Name of the currently active theme, derived from a parent which is classified as 1D (panda) or 2D(theme-open-ent). This is a domain-level configurated value. */\n readonly themeName: string;\n /** (legacy) FIXME Seems to be equal to themeName. */\n readonly skin: string;\n /** (legacy) URL to the currently active theme/skin folder. */\n readonly themeUrl: string;\n /** (legacy) URL to the currently active portal.html template. Used in infra-front. */\n readonly portalTemplate: string;\n /** (legacy) URL to the folder containing assets. */\n readonly basePath: string;\n /** (legacy) URL where the user is redirected after logout. */\n readonly logoutCallback: string;\n /** Available skins configuration (also called \"overrides\"). */\n readonly skins: Array<IThemeConfOverriding>;\n\n /** Check if the \"school degree\" of the current theme is 1D (\"panda\", or an override of it). */\n readonly is1D: boolean;\n\n /** Check if the \"school degree\" of the current theme is 2D (\"theme-open-ent\" or an override of it). */\n readonly is2D: boolean;\n\n /** Get the theme/skin configuration. */\n getConf(version?: string): Promise<IThemeConf>;\n\n /** Await for theme to be fully loaded (skin, overrides, degrees...). */\n onFullyReady(): Promise<ITheme>;\n\n /** Await for skin conf to be loaded. */\n onSkinReady(): Promise<ITheme>;\n\n /** Await for overrides conf to be loaded. */\n onOverrideReady(): Promise<IThemeOverrides>;\n\n /** List available themes. */\n listThemes(): Promise<IThemeDesc[]>;\n\n /** Configure UI with this theme by default. */\n setDefaultTheme(theme: IThemeDesc): void; // TODO: refactor, move to user's configuration ?\n\n /** List available skins. */\n listSkins(): Promise<IThemeConfOverriding[]>;\n\n /** Get the help path, which can be dedicated to 1D or 2D. */\n getHelpPath(): Promise<String>;\n}\n\n//-------------------------------------\nexport interface IThemeDesc {\n //-------------------------------------\n _id: string;\n displayName: string;\n path: string;\n}\n\n//-------------------------------------\nexport interface IThemeConf {\n //-------------------------------------\n dependencies: {\n themes: { [name: string]: /*pathRegex*/ string };\n widgets: { [name: string]: /*pathRegex*/ string };\n };\n emitWrapper: boolean;\n overriding: Array<IThemeConfOverriding>;\n}\n\n//-------------------------------------\nexport interface IThemeConfOverriding {\n //-------------------------------------\n parent: \"panda\" | \"theme-open-ent\";\n child: string;\n bootstrapVersion: string;\n skins: Array<string>;\n help: string;\n group?: string;\n edumedia: {\n uri: string;\n pattern: string;\n ignoreSubjects?: Array<string>;\n };\n}\n\nexport type IThemeOverrides = {\n [app in App]?: string;\n};\n\nexport type AddBundleCallback = () => void | Promise<void>;\n//-------------------------------------\nexport interface IIdiom {\n //-------------------------------------\n /** Get the translation of a given key.\n * @param params (optional) map of key/value variables.\n * @return the key itself when no translation exists.\n */\n translate(key: string, params?: { [param: string]: any }): string;\n /** Load a language bundle then return a Promise. */\n addBundlePromise(path: string): Promise<void>;\n /** Load a language bundle then call an optional callback. */\n addBundle(path: string, callback?: AddBundleCallback): void;\n /** Load the JSON language file from a given folder, using the current user's language, then call an optional callback. */\n addTranslations(folder: string, callback?: AddBundleCallback): void;\n /** Load the JSON language files from many given folders, using the current user's language, then return a Promise. */\n addAllTranslations(folders: string[]): Promise<void>;\n /** Add new key/values translations to the in-memory dictionary, using a key/value map. Existing in-memory keys ARE NOT REPLACED. Only new ones are added. */\n addKeys(keys: any): void;\n /** @return a new string without accentuation. */\n removeAccents(str: string): string;\n}\n\nexport type UserPreferenceKey =\n | (typeof USER_PREFS)[keyof typeof USER_PREFS]\n | App;\n//-------------------------------------\nexport interface IUserPreferences {\n //-------------------------------------\n data: { [key in UserPreferenceKey]?: any };\n get(key: UserPreferenceKey): any;\n load(key: UserPreferenceKey, defaultTo?: any): Promise<any>;\n update(key: UserPreferenceKey, data: any): IUserPreferences;\n save(key: UserPreferenceKey): Promise<void>;\n}\n\nexport interface IOdeTheme {\n basePath: string;\n bootstrapPath: string;\n bootstrapVersion: string;\n is1d: boolean;\n logoutCallback: string;\n skin: string;\n skinName: string;\n skins: Array<IThemeConfOverriding>;\n themeName: string;\n themeUrl: string;\n}\n\nexport interface IGetConf {\n applications: IWebApp[];\n conf: IThemeConf;\n currentApp: IWebApp | undefined;\n theme: IOdeTheme;\n extendedTheme: any;\n}\n","import { App } from \"../globals\";\nimport { WidgetName } from \"../widget/interfaces\";\nimport { session } from \"./Framework\";\n\n//-------------------------------------\nexport abstract class SessionFrameworkFactory {\n //-------------------------------------\n static instance(): ISessionFramework {\n return session;\n }\n}\n\n//-------------------------------------\nexport interface ISessionFramework {\n //-------------------------------------\n /** Initialize once before use. */\n initialize(): Promise<void>;\n\n /** The current user session. */\n session: ISession;\n\n /** Log the current user in. */\n login(\n email: string,\n password: string,\n rememberMe?: boolean,\n secureLocation?: boolean,\n ): Promise<void>;\n\n /** Close the current user session. */\n logout(): Promise<void>;\n}\n\n//-------------------------------------\nexport interface ILoginModel {\n //-------------------------------------\n email: string;\n password: string;\n rememberMe?: boolean;\n secureLocation?: boolean;\n /* Let's drop these old features.\n callBack?: string;\n details?: string;\n */\n}\n\n//-------------------------------------\nexport interface ISession {\n //-------------------------------------\n /** Language code (2-letters) actually applied. */\n readonly currentLanguage: string;\n /** Truthy when no user is connected. */\n readonly notLoggedIn: boolean;\n /** Additional information about the connected user. */\n readonly description: IUserDescription;\n /** Additional profile user information. */\n readonly profile: UserProfile;\n /**\n * Get the connected user's avatar URL, or a default one.\n * Append a query parameter to this URL for it to get resized, for example \"?thumbnail=48x48\"\n */\n readonly avatarUrl: string;\n /** Basic information about the connected user. */\n readonly user: IUserInfo;\n /** Retrieve the current main app, @see ConfigureFramework.Platform.apps */\n readonly currentApp: App | null;\n /** Retrieve the lastest storage + quota information. */\n readonly latestQuotaAndUsage: Promise<IQuotaAndUsage>;\n\n hasWorkflow(workflowName: string): boolean;\n hasRight(resource: any, right: any): boolean;\n\n /** Get User Profile */\n getUserProfile(): Promise<UserProfile>;\n\n /** Verify if the logged-in user has a valid email address. */\n getEmailValidationInfos(): Promise<IEmailValidationInfos>;\n /**\n * Send a 6-digits code to an email address to validate it.\n * => when resolved successfully, the email validation infos will switch to the \"pending\" state.\n */\n checkEmail(email: String): Promise<void>;\n /** Send a 6-digits code to the server to try validating the pending email address. */\n tryEmailValidation(code: String): Promise<IEmailValidationState>;\n\n /** Verify if the logged-in user has a valid phone number. */\n getMobileValidationInfos(): Promise<IMobileValidationInfos>;\n /**\n * Send a 6-digits code to a phone number to validate it.\n * => when resolved successfully, the phone number infos will switch to the \"pending\" state.\n */\n checkMobile(mobile: String): Promise<void>;\n /** Send a 6-digits code to the server to try validating the pending phone number. */\n tryMobileValidation(code: String): Promise<IMobileValidationState>;\n\n /** Start an MFA for the logged-in user, unless already pending or done. */\n getMfaInfos(): Promise<IMfaInfos>;\n /** Send a 6-digits code to the server to validate a pending MFA. */\n tryMfaCode(code: String): Promise<IMfaCodeState>;\n}\n\nexport type Hobby = {\n visibility: \"PRIVE\" | \"PUBLIC\";\n category: \"sport\" | \"cinema\" | \"animals\" | \"music\" | \"places\" | \"books\";\n values: string;\n};\nexport type School = {\n classes: Array<string>; // [\"TPS\"]\n id: string; // \"09772a06-1362-4802-a475-66a87d9cb679\"\n name: string; // \"MY DEV SCHOOL\"\n UAI: string; // \"1111888G\"\n exports: string[]; // [\"GAR-P0\"]\n};\nexport type UserProfile = Array<\n \"Student\" | \"Teacher\" | \"Relative\" | \"Personnel\" | \"Guest\"\n>;\n//-------------------------------------\nexport interface IUserDescription {\n //-------------------------------------\n /*---- From /directory/userbook/_user_id_ ----*/\n alertSize: boolean;\n health: string; // \"\" ?\n hobbies: Array<Hobby>;\n mood:\n | \"default\"\n | \"happy\"\n | \"proud\"\n | \"dreamy\"\n | \"love\"\n | \"tired\"\n | \"angry\"\n | \"worried\"\n | \"sick\"\n | \"joker\"\n | \"sad\";\n motto: string; // \"Carpe diem\"\n oldPicture?: string; // \"/workspace/document/aaaabbbb-ccdd-dead-beef-0123456789ab\"\n picture: string; // \"no-avatar.jpg\"\n quota: number; // 1048576000\n storage: number; // 106653578\n theme: string; // \"default\"\n type: string; // \"USERBOOK\";\n userid: string; // \"12345678-9abc-def0-1234-56789abcdef0\"\n\n /*---- From /userbook/api/person ----*/\n address: string;\n birthdate: string; // \"1980-01-20\"\n displayName: string; // \"LASTNAME Firstname\"\n email: string;\n id: string; // \"12345678-9abc-def0-1234-56789abcdef0\"\n login: string;\n mobile: string;\n photo: string; // \"no-avatar.jpg\"\n relatedId?: any; // null\n relatedName?: any; // null\n relatedType?: any; // null\n schools: Array<School>;\n tel: string;\n profiles: UserProfile; // NOTE: initial field name is \"type\", but it is renamed to \"profiles\" internally.\n userId: string; // \"12345678-9abc-def0-1234-56789abcdef0\"\n visibleInfos: Array<string>; // [\"SHOW_BIRTHDATE\"]\n}\n\n//-------------------------------------\nexport interface IQuotaAndUsage {\n //-------------------------------------\n /** Maximum use of the storage space. */\n quota: number;\n /** Current use of the storage space. */\n storage: number;\n}\n\n////////////////////////////////////////// LEGACY\n\n//-------------------------------------\nexport interface IUserInfo {\n //-------------------------------------\n apps: Array<IWebApp>;\n authorizedActions: Array<IWorkflowAuth>;\n birthDate: string; // \"1980-01-13\"\n children: any;\n childrenIds: Array<string>;\n classNames: Array<string>;\n classes: Array<any>;\n deletePending: boolean;\n externalId: string;\n federated?: any;\n federatedIDP?: any;\n firstName: string;\n forceChangePassword?: any;\n functions: {\n ADMIN_LOCAL?: { code: string; scope: Array<string> };\n SUPER_ADMIN: { code: string; scope: Array<string> };\n };\n groupsIds: Array<string>;\n hasApp: boolean;\n hasPw: boolean;\n lastName: string;\n level: string;\n login: string;\n needRevalidateTerms: any;\n optionEnabled: Array<any>;\n preferences?: { save: (pref: any, data: any) => void };\n sessionMetadata: { _id: string; userId: string };\n structureNames: Array<string>;\n structures: Array<string>;\n type: \"ENSEIGNANT\" | \"ELEVE\" | \"PERSRELELEVE\" | \"SUPERADMIN\" | \"PERSEDUCNAT\";\n uai: Array<any>;\n userId: string;\n username: string;\n widgets: Array<IWidgetModel>;\n}\n\n//-- Widgets position\nexport const WIDGET_POSITION = {\n LEFT: \"left\",\n RIGHT: \"right\",\n // TODO: position pourrait être étendu à d'autres valeurs: |“top” ou “bottom” ou “fixed”...\n} as const;\nexport type WidgetPosition =\n (typeof WIDGET_POSITION)[keyof typeof WIDGET_POSITION];\n\n//-------------------------------------\nexport interface IWidgetModel {\n //-------------------------------------\n application?: string; // \"Actualites\"\n position?: WidgetPosition;\n i18n: string; // \"/actualites/public/widgets/last-infos-widget/i18n\"\n id: string;\n js: string; // \"/actualites/public/widgets/last-infos-widget/last-infos-widget.js\"\n mandatory: boolean;\n name: WidgetName; // \"last-infos-widget\"\n path: string; // \"/actualites/public/widgets/last-infos-widget/last-infos-widget.html\"\n}\n\n//-------------------------------------\nexport interface IWebApp {\n //-------------------------------------\n address: string; // \"/mindmap\"\n casType?: string; // \"null\"\n display: boolean; // true\n displayName: string; // \"mindmap\"\n icon: string; // \"mindmap-large\"\n isExternal: boolean; // false\n name: string; // \"Mindmap\"\n prefix?: string; // \"/mindmap\"\n scope: Array<string>; // [\"\"]\n target?: any; // \"_blank\"\n}\n\n//-------------------------------------\nexport interface IWorkflowAuth {\n //-------------------------------------\n displayName: string;\n name: string;\n type: string;\n}\n\n//-------------------------------------\nexport interface IEmailValidationInfos {\n //-------------------------------------\n /** The current email address of the user (maybe not verified) */\n email: string;\n /** State of the current email address. */\n emailState: IEmailValidationState | null;\n /** Suggested time to wait for the validation mail to be sent (platform configuration) */\n waitInSeconds: number;\n}\n//-------------------------------------\nexport interface IEmailValidationState {\n //-------------------------------------\n /** Validation state */\n state: \"unchecked\" | \"outdated\" | \"pending\" | \"valid\";\n /** Last known valid email address, or empty string. */\n valid: string;\n /** (optional) Current pending (or outdated) email address being checked. */\n pending?: string;\n /** (optional) Seconds remaining for the user to type in the correct validation code. */\n ttl?: number;\n /** (optional) Remaining number of times a validation code can be typed in. */\n tries?: number;\n}\n\n//-------------------------------------\nexport interface IMobileValidationInfos {\n //-------------------------------------\n /** The current phone number of the user (maybe not verified) */\n mobile: string;\n /** State of the current phone number. */\n mobileState: IMobileValidationState | null;\n /** Suggested time to wait for the validation phone number to be sent (platform configuration) */\n waitInSeconds: number;\n}\n//-------------------------------------\nexport interface IMobileValidationState {\n //-------------------------------------\n /** Validation state */\n state: \"unchecked\" | \"outdated\" | \"pending\" | \"valid\";\n /** Last known valid phone number, or empty string. */\n valid: string;\n /** (optional) Current pending (or outdated) phone number being checked. */\n pending?: string;\n /** (optional) Seconds remaining for the user to type in the correct validation code. */\n ttl?: number;\n /** (optional) Remaining number of times a validation code can be typed in. */\n tries?: number;\n}\n\n//-------------------------------------\nexport interface IMfaInfos {\n //-------------------------------------\n /** The type of MFA used. */\n type: \"sms\" | \"email\";\n /** State of the generated MFA code. */\n state: IMfaCodeState | null;\n /** Suggested time to wait for the MFA code to be sent (platform configuration) */\n waitInSeconds: number;\n}\n//-------------------------------------\nexport interface IMfaCodeState {\n //-------------------------------------\n /** Validation state */\n state: \"outdated\" | \"pending\" | \"valid\";\n /** (optional) Seconds remaining for the user to type in the correct code. */\n ttl?: number;\n /** (optional) Remaining number of times a code can be typed in. */\n tries?: number;\n}\n\nexport interface IGetSession {\n user: IUserInfo | undefined;\n currentLanguage: string | undefined;\n quotaAndUsage: IQuotaAndUsage;\n userDescription: IUserDescription;\n userProfile?: UserProfile;\n bookmarkedApps: IWebApp[];\n}\n\nexport type PersonApiResult = {\n status: \"ok\" | string;\n result: Array<IUserDescription>;\n};\n","import {\n IWidgetFramework,\n IWidget,\n WidgetUserPref,\n WidgetName,\n} from \"./interfaces\";\nimport {\n IWidgetModel,\n WidgetPosition,\n WIDGET_POSITION,\n} from \"../session/interfaces\";\nimport { notify, Promisified } from \"../notify/Framework\";\nimport { IPromisified, EVENT_NAME, LAYER_NAME } from \"../notify/interfaces\";\nimport { configure } from \"../configure/Framework\";\nimport { Idiom } from \"../idiom/Idiom\";\n\n// Widgets for 1D ONLY\nconst firstLevelWidgets: Array<WidgetName> = [\n \"birthday\",\n \"mood\",\n \"calendar-widget\",\n \"notes\",\n];\n// Widgets for 2D ONLY\nconst secondLevelWidgets: Array<WidgetName> = [\n \"agenda-widget\",\n \"carnet-de-bord\",\n \"my-apps\",\n \"rss-widget\",\n \"bookmark-widget\",\n \"cursus-widget\",\n \"maxicours-widget\",\n \"school-widget\",\n];\n\n// Default position for widgets.\nconst defaultWidgetPosition: { [name in WidgetName]: WidgetPosition } = {\n \"last-infos-widget\": WIDGET_POSITION.LEFT, // Actualités\n birthday: WIDGET_POSITION.LEFT,\n \"calendar-widget\": WIDGET_POSITION.RIGHT, // Calendrier\n \"carnet-de-bord\": WIDGET_POSITION.LEFT,\n \"record-me\": WIDGET_POSITION.RIGHT, // Dictaphone\n mood: WIDGET_POSITION.LEFT,\n \"my-apps\": WIDGET_POSITION.RIGHT,\n notes: WIDGET_POSITION.RIGHT,\n \"rss-widget\": WIDGET_POSITION.LEFT,\n \"bookmark-widget\": WIDGET_POSITION.RIGHT,\n qwant: WIDGET_POSITION.RIGHT,\n \"qwant-junior\": WIDGET_POSITION.LEFT,\n \"agenda-widget\": WIDGET_POSITION.LEFT, // Agenda\n \"cursus-widget\": WIDGET_POSITION.LEFT,\n \"maxicours-widget\": WIDGET_POSITION.RIGHT,\n \"universalis-widget\": WIDGET_POSITION.RIGHT,\n \"briefme-widget\": WIDGET_POSITION.LEFT,\n \"school-widget\": WIDGET_POSITION.LEFT,\n \"edumalin-widget\": WIDGET_POSITION.RIGHT,\n \"mediacentre-widget\": WIDGET_POSITION.RIGHT,\n \"cantine-widget\": WIDGET_POSITION.LEFT,\n \"screen-time-widget\": WIDGET_POSITION.RIGHT\n};\n\n// Default sort order for widgets, then overriden by user preferences, if any.\nconst defaultWidgetOrder: { [name in WidgetName]: number } = {\n \"school-widget\": 0,\n \"my-apps\": 10,\n \"record-me\": 15,\n \"last-infos-widget\": 20, // Actualités\n qwant: 30,\n \"qwant-junior\": 30,\n \"universalis-widget\": 35,\n \"agenda-widget\": 40, // Agenda\n \"bookmark-widget\": 50,\n \"carnet-de-bord\": 60,\n \"maxicours-widget\": 70,\n \"cursus-widget\": 80, // Dictaphone\n \"briefme-widget\": 90,\n \"rss-widget\": 100,\n mood: 110,\n birthday: 120,\n \"calendar-widget\": 130, // Calendrier\n notes: 140,\n \"edumalin-widget\": 35,\n \"mediacentre-widget\": 145,\n \"cantine-widget\": 21,\n \"screen-time-widget\": 35\n};\n\n//-------------------------------------\nexport class WidgetFramework implements IWidgetFramework {\n //-------------------------------------\n private _initialized?: IPromisified<void>;\n private _widgets: Array<Widget> = [];\n\n initialize(version: string | null, cdnDomain: string | null): Promise<void> {\n if (!this._initialized) {\n this._initialized = new Promisified<void>();\n\n // Wait for /auth/oauth2/userinfo and read the widget conf.\n notify.onSessionReady().promise.then((userInfo) => {\n if (userInfo && userInfo.widgets) {\n userInfo.widgets.forEach((w) => {\n this._widgets.push(new Widget(w));\n });\n this.loadUserPrefs()\n .then(() => {\n this._initialized?.resolve();\n })\n .catch((e) => {\n this._initialized?.reject();\n });\n } else {\n this._initialized?.reject();\n }\n });\n }\n return this._initialized.promise;\n }\n\n ////////////////////////////////////// ACCESSORS\n get list(): Widget[] {\n return this._widgets;\n }\n\n lookup(widgetName: string): IWidget | undefined {\n return this._widgets.find((w) => w.platformConf.name === widgetName);\n }\n\n public lookupDefaultPosition(\n widgetName: WidgetName,\n ): WidgetPosition | undefined {\n return defaultWidgetPosition[widgetName];\n }\n\n ////////////////////////////////////// USER PREFERENCES\n private _userPrefs: IWidgetUserPrefs = {};\n get userPrefs() {\n return this._userPrefs;\n }\n\n private async loadUserPrefs(): Promise<void> {\n await configure.User.preferences.load(\"widgets\", {}).then((prefs) => {\n return this.applyUserPrefs(prefs as IWidgetUserPrefs);\n });\n }\n\n saveUserPrefs() {\n return configure.User.preferences\n .update(\"widgets\", this._userPrefs)\n .save(\"widgets\")\n .then(() => {\n notify.events().next({\n name: EVENT_NAME.USERPREF_CHANGED,\n layer: LAYER_NAME.WIDGETS,\n });\n });\n }\n\n private async applyUserPrefs(prefs: IWidgetUserPrefs): Promise<void> {\n this._userPrefs = prefs ?? this._userPrefs;\n const skin = configure.Platform.theme;\n const i18nFolders: Array<string> = [];\n\n // List skins to determine if current theme is 1D or 2D.\n skin.listSkins().then((skins) => {\n const widgetsToHide =\n skins.find((s) => s.child === skin.skin)?.parent === \"panda\"\n ? secondLevelWidgets\n : firstLevelWidgets;\n\n // Filter out widgets that do not apply to the current theme,\n // AND prepare userPrefs of remaining widgets.\n this._widgets = this._widgets.filter((w, i) => {\n const widgetName = w.platformConf.name;\n const isHidden = widgetsToHide.indexOf(widgetName) !== -1;\n if (isHidden) return false;\n\n // Prepare the userPref of this widget.\n if (!this._userPrefs[widgetName]) {\n this._userPrefs[widgetName] = {\n index: defaultWidgetOrder[widgetName] ?? 999,\n show: true,\n position: w.platformConf.position,\n };\n }\n if (w.platformConf.mandatory) {\n this._userPrefs[widgetName].show = true;\n //#WB-48 : mandatory widgets are now sorted by default order.\n this._userPrefs[widgetName].index =\n defaultWidgetOrder[widgetName] ?? 999;\n }\n // Load its translations.\n if (w.platformConf.i18n) {\n i18nFolders.push(w.platformConf.i18n);\n }\n w.applyUserPref(this._userPrefs[widgetName]);\n return true;\n });\n const lang = new Idiom();\n this._widgets = this._widgets.sort((a, b) => {\n const translatedA = lang\n .translate(`timeline.settings.${a.platformConf.name}`)\n .toLowerCase();\n const translatedB = lang\n .translate(`timeline.settings.${b.platformConf.name}`)\n .toLowerCase();\n if (translatedA < translatedB) return -1;\n if (translatedA > translatedB) return 1;\n return 0;\n });\n });\n // FIXME: this is a port of the old code. No longer required by widgets from ode-ngjs-front.\n // .then( () => {\n // // TODO Wait for the translation to be loaded ? => uncomment \"return\" below.\n // /*return*/ configure.Platform.idiom.addAllTranslations( i18nFolders );\n // });\n }\n}\n\n//-------------------------------------\nclass Widget implements IWidget {\n //-------------------------------------\n constructor(private _platformConf: IWidgetModel) {\n // The widget is constructed by WidgetFramework.initialize(), which also sets this._userPref.\n // The following line is a pure typescript fix.\n this._userPref = null as any as WidgetUserPref;\n }\n get platformConf(): IWidgetModel {\n return this._platformConf;\n }\n\n private _schoolConf = {};\n get schoolConf() {\n return this._schoolConf;\n }\n\n private _userPref: WidgetUserPref;\n get userPref(): WidgetUserPref {\n // Sanity checks here\n return this._userPref;\n }\n\n applyUserPref(pref: WidgetUserPref) {\n this._userPref = pref;\n // Sanity checks here\n // Apply default position, left or right.\n this._userPref.position =\n this._userPref.position ??\n widgets.lookupDefaultPosition(this._platformConf.name) ??\n \"left\";\n }\n}\n\n//-------------------------------------\ninterface IWidgetUserPrefs {\n //-------------------------------------\n [widgetName: string]: WidgetUserPref;\n}\n\n/** The whole framework is a singleton. */\nexport const widgets: WidgetFramework = new WidgetFramework();\n","import { transport } from \"../transport/Framework\";\n\nexport interface ILastInfosModel {\n date: string; // \"2021-03-24T16:36:05.398\"\n shared: []; // FIXME typings [{net-atos-entng-actualites-controllers-InfoController|getInfo: true, userId: \"toto\"}]\n thread_icon: string; // \"/workspace/document/36a04526-15a2-4e8f-adb6-cca75630e50d\"\n thread_id: number; // 221\n thread_title: string; // \"News collège Denis Poisson\"\n title: string; // \"xx\"\n username: string; // \"DEVAULX ALAIN\"\n _id: number; // 597\n}\n\nexport class LastInfosWidget {\n loadInfos(maxResults: number): Promise<ILastInfosModel[]> {\n return transport.http.get(\"/actualites/infos/last/\" + maxResults);\n }\n\n getMaxResults(): Promise<number> {\n return transport.http\n .get(\"/userbook/preference/maxInfos\")\n .then((maxInfos) => {\n return maxInfos.preference ? parseInt(maxInfos.preference) : 4;\n });\n }\n\n setMaxResults(maxResults: number): Promise<void> {\n return transport.http.putJson(\n \"/userbook/preference/maxInfos\",\n `\"${maxResults}\"`,\n );\n }\n}\n","import { IWidgetModel, WidgetPosition } from \"../session/interfaces\";\nimport { widgets } from \"./Framework\";\n\n//-- Widgets name\nexport const WIDGET_NAME = {\n LAST_INFOS: \"last-infos-widget\",\n BIRTHDAY: \"birthday\",\n CALENDAR: \"calendar-widget\",\n CARNET: \"carnet-de-bord\",\n RECORD: \"record-me\",\n MOOD: \"mood\",\n MY_APPS: \"my-apps\",\n NOTES: \"notes\",\n RSS: \"rss-widget\",\n BOOKMARK: \"bookmark-widget\",\n QWANT: \"qwant\",\n QWANT_JUNIOR: \"qwant-junior\",\n AGENDA: \"agenda-widget\",\n CURSUS: \"cursus-widget\",\n MAXICOURS: \"maxicours-widget\",\n UNIVERSALIS: \"universalis-widget\",\n BRIEFME: \"briefme-widget\",\n SCHOOL: \"school-widget\",\n EDUMALIN: \"edumalin-widget\",\n MEDIACENTRE: \"mediacentre-widget\",\n CANTINE: \"cantine-widget\",\n SCREEN_TIME: \"screen-time-widget\"\n} as const;\nexport type WidgetName = (typeof WIDGET_NAME)[keyof typeof WIDGET_NAME];\n\n//-------------------------------------\nexport abstract class WidgetFrameworkFactory {\n //-------------------------------------\n static instance(): IWidgetFramework {\n return widgets;\n }\n}\n\n//-------------------------------------\nexport interface IWidgetFramework {\n //-------------------------------------\n /** Loads the widget configuration. */\n initialize(version: string | null, cdnDomain: string | null): Promise<void>;\n\n /** Save user preferences */\n saveUserPrefs(): Promise<any>;\n\n /** List widgets that are visible to the connected user. */\n readonly list: IWidget[];\n\n /** Retrieve a widget by name. */\n lookup(widgetName: string): IWidget | undefined;\n}\n\n//-------------------------------------\nexport interface IWidget {\n //-------------------------------------\n /** The widgets conf at platform level. */\n readonly platformConf: IWidgetModel;\n /* TODO readonly schoolConf:any; */\n /** The widgets conf at user level. */\n readonly userPref: WidgetUserPref;\n}\n\n//-------------------------------------\nexport type WidgetSpecificUserPrefs = \"schoolId\"; // lastest selected school id, in school-widget\n//-------------------------------------\n\n//-------------------------------------\nexport type WidgetUserPref = {\n //-------------------------------------\n /** Integer defining the sort order of this widget. */\n index: number;\n /** Boolean indicating wether the user wants to see this widget, or not. */\n show: boolean;\n /** Prefered position on-screen (left, right...). */\n position?: WidgetPosition;\n} & {\n [pref in WidgetSpecificUserPrefs]?: any;\n};\n\n//-------------------------------------\n// WIDGETS\n//-------------------------------------\nexport * from \"./LastInfos.widget\";\n","import { session } from \"../../session/Framework\";\nimport { transport } from \"../../transport/Framework\";\nimport { ITimelineNotification, NotificationModel } from \"./interfaces\";\n\n/* const http = TransportFrameworkFactory.instance().http;\nconst me = SessionFrameworkFactory.instance().session.user; */\n\nconst http = transport?.http;\nconst me = session?.session?.user;\n\nexport class Notification implements ITimelineNotification {\n constructor(model: NotificationModel) {\n model.reported = model.reporters && model.reporters.length > 0;\n this._id = model._id;\n this.model = model;\n }\n public _id: string;\n public model: NotificationModel;\n\n isUnread() {\n return (\n this.model.recipients?.find((recipient) => {\n return recipient.userId === me.userId;\n }) !== undefined\n );\n }\n\n delete() {\n return http.delete(\"/timeline/\" + this._id);\n }\n\n discard() {\n return http.put(\"/timeline/\" + this._id);\n }\n\n report() {\n return http.put(\"/timeline/\" + this._id + \"/report\");\n }\n}\n","import { APP } from \"../../globals\";\nimport {\n IFlashMessageModel,\n ITimelineApp,\n NotificationModel,\n} from \"./interfaces\";\nimport { configure } from \"../../configure/Framework\";\nimport { transport } from \"../../transport/Framework\";\nimport { Notification } from \"./Notification.model\";\n\n//-------------------------------------\nexport class TimelineApp implements ITimelineApp {\n //-------------------------------------\n\n private _notifications: Array<Notification> = [];\n private _notificationTypes: Array<string> = []; // ex: [\"BLOG\"]\n private _flashMessages: Array<IFlashMessageModel> = [];\n private _pageNumber = 0;\n private _lastPage = false;\n private _loading = false;\n\n public showMine: boolean = false;\n\n get notifications(): Array<Notification> {\n return this._notifications;\n }\n get isLoading(): boolean {\n return this._loading;\n }\n get page(): number {\n return this._pageNumber;\n }\n get hasMorePage(): boolean {\n return !this._lastPage;\n }\n get notificationTypes(): Array<string> {\n return this._notificationTypes;\n }\n get selectedNotificationTypes(): Array<string> {\n this.preferences.type = this.preferences.type || [];\n return this.preferences.type;\n }\n get preferences(): any {\n return configure.User.preferences.get(APP.TIMELINE);\n }\n get flashMessages() {\n return this._flashMessages;\n }\n\n public savePreferences() {\n return configure.User.saveAppPrefs(APP.TIMELINE);\n }\n\n public resetPagination(): void {\n this._pageNumber = 0;\n this._lastPage = false;\n this._loading = false;\n }\n\n initialize(): Promise<void> {\n return Promise.all([\n configure.User.loadAppPrefs(APP.TIMELINE),\n transport.http.get(\"/timeline/types\"),\n ]).then((result) => {\n this._notificationTypes = result[1];\n });\n }\n\n public loadNotifications(force?: boolean): Promise<void> {\n const paginate = true; // Let's paginate, that's all.\n if (this._loading || (paginate && this._lastPage)) {\n return Promise.resolve();\n }\n\n if (force) {\n this._pageNumber++;\n this._lastPage = false;\n }\n\n let types = this.selectedNotificationTypes;\n // if(types.length===0) {\n // types = this._notificationTypes;\n // }\n\n if (types.length === 0) {\n this._lastPage = true;\n return Promise.resolve();\n }\n\n let params: { page: number; mine?: number } = {\n page: this.page,\n mine: 1,\n };\n\n if (!this.showMine) {\n delete params.mine;\n }\n\n if (paginate) {\n this._loading = true;\n }\n\n return transport.http\n .get(`/timeline/lastNotifications?type=${types.join(\"&type=\")}`, {\n queryParams: params,\n })\n .then(\n (response: {\n status: string;\n number: number;\n results: Array<NotificationModel>;\n }) => {\n this._loading = false;\n\n if (response.status !== \"ok\") {\n //TODO notify error\n return;\n }\n\n if (response.number && response.results) {\n //#36034, add only non existing notification (avoid duplicate)\n const toAdd = response.results\n .filter(\n (result) =>\n this._notifications.findIndex(\n (_notification) => _notification._id === result._id,\n ) === -1,\n )\n .map((notification) => new Notification(notification));\n this._notifications = this._notifications.concat(toAdd);\n this._pageNumber++;\n } else {\n this._lastPage = true;\n //FIXME model.trigger('notifications.change')\n }\n },\n )\n .catch((data) => {\n this._loading = false;\n //FIXME notify.error(data);\n });\n }\n\n loadFlashMessages(): Promise<void> {\n return transport.http\n .get<Array<IFlashMessageModel>>(\"/timeline/flashmsg/listuser\")\n .then((results) => {\n this._flashMessages = results;\n });\n }\n\n markAsRead(msg: IFlashMessageModel): Promise<void> {\n return transport.http.put(\"/timeline/flashmsg/\" + msg.id + \"/markasread\");\n }\n}\n","import { TimelineApp } from \"./Framework\";\n\n//-------------------------------------\nexport abstract class ITimelineFactory {\n //-------------------------------------\n static createInstance(): ITimelineApp {\n return new TimelineApp();\n }\n}\n\n//-------------------------------------\nexport interface ITimelineApp {\n //-------------------------------------\n initialize(): Promise<void>;\n readonly notificationTypes: Array<string>;\n readonly selectedNotificationTypes: Array<string>;\n\n showMine: boolean;\n /** Load more notifications, or force loading more by virtually incrementing the page. */\n loadNotifications(force?: boolean): Promise<void>;\n readonly notifications: Array<ITimelineNotification>;\n\n resetPagination(): void;\n readonly isLoading: boolean;\n readonly page: number;\n readonly hasMorePage: boolean;\n\n savePreferences(): Promise<void>;\n readonly preferences: any;\n // registeredNotifications: any;\n\n loadFlashMessages(): Promise<void>;\n readonly flashMessages: Array<IFlashMessageModel>;\n markAsRead(msg: IFlashMessageModel): Promise<void>;\n}\n\n//-------------------------------------\nexport interface ITimelineNotification {\n //-------------------------------------\n readonly _id: string;\n readonly model: NotificationModel;\n isUnread(): boolean;\n delete(): Promise<void>;\n discard(): Promise<void>;\n report(): Promise<void>;\n}\n\n//-------------------------------------\nexport type NotificationModel = {\n //-------------------------------------\n _id: string; // \"aaaa-aaa-aaa-adfdf\"\n type: string; // \"BLOG\",\n eventType: string; // \"SHARE\",\n resource: string; // \"732ba669-fead-44e5-a9d6-442a9352573a\",\n sender: string; //\"16e39809-f5e7-4e85-8244-ab5a199e4e0b\",\n params: {\n uri: string; //\"/userbook/annuaire#16e39809-f5e7-4e85-8244-ab5a199e4e0b#Teacher\",\n username: string; //\"BAILLY Catherine\",\n blogTitle: string; //\"test 9/04\",\n resourceUri: string; //\"/blog#/view/732ba669-fead-44e5-a9d6-442a9352573a\"\n };\n date: {\n $date: number;\n };\n message: string; // \"<a href=\\\"http://localhost:8090/userbook/annuaire#16e39809-f5e7-4e85-8244-ab5a199e4e0b#Teacher\\\">BAILLY Catherine</a>\\n<br />\\n<span>\\n\\t<span>vous a donné accès au blog</span> <a href=\\\"http://localhost:8090/blog#/view/732ba669-fead-44e5-a9d6-442a9352573a\\\">test 9/04</a>.\\n</span>\\n\"\n\n recipients?: Array<Recipient>;\n reported?: boolean;\n reporters?: any;\n};\n\n//-------------------------------------\nexport interface Recipient {\n //-------------------------------------\n userId: string;\n}\n\n//-------------------------------------\nexport interface IFlashMessageModel {\n //-------------------------------------\n readonly id: string;\n readonly title?: string;\n readonly contents?: Object;\n readonly startDate?: string;\n readonly endDate?: string;\n readonly readCount?: number;\n readonly author?: string;\n readonly profiles?: string[];\n readonly color?: string;\n readonly customColor?: string | null;\n readonly lastModifier?: string;\n readonly structureId?: string;\n readonly subStructures?: string[];\n readonly signature?: string;\n readonly signatureColor?: string;\n}\n","import {\n PublishParameters,\n PublishResult,\n GetContextParameters,\n GetContextResult,\n ISearchResults,\n CreateFolderParameters,\n MoveParameters,\n IActionResult,\n TrashParameters,\n CreateFolderResult,\n UpdateFolderParameters,\n ID,\n GetSubFoldersResult,\n DeleteParameters,\n ResourceType,\n} from \"..\";\nimport { OdeServices } from \"../services/OdeServices\";\nimport { CreateParameters, CreateResult, UpdateParameters, UpdateResult } from \"./interface\";\n\nexport abstract class ResourceService {\n //\n // STATIC REGISTRY\n //\n private static registry = new Map<\n string,\n (context: OdeServices) => ResourceService\n >();\n\n static register(\n {\n application,\n resourceType,\n }: { application: string; resourceType: string },\n service: (context: OdeServices) => ResourceService,\n ) {\n ResourceService.registry.set(`${application}:main`, service);\n ResourceService.registry.set(`${application}:${resourceType}`, service);\n }\n static findService(\n {\n application,\n resourceType,\n }: { application: string; resourceType: string },\n context: OdeServices,\n ): ResourceService {\n const found = ResourceService.registry.get(\n `${application}:${resourceType}`,\n );\n if (found === undefined) {\n throw \"Service not found: \" + `${application}:${resourceType}`;\n }\n return found(context);\n }\n static findMainService(\n { application }: { application: string },\n context: OdeServices,\n ): ResourceService {\n const found = ResourceService.registry.get(`${application}:main`);\n if (found === undefined) {\n throw \"Service not found: \" + `${application}`;\n }\n return found(context);\n }\n //\n // IMPLEMENTATION\n //\n constructor(protected context: OdeServices) {}\n\n protected get http() {\n return this.context.http();\n }\n //\n // ABSTRACT METHOD\n //\n abstract getApplication(): string;\n\n abstract getPrintUrl(resourceId: string, withComment?: boolean): string;\n\n abstract getViewUrl(resourceId: string): string;\n\n abstract getFormUrl(folderId?: string): string;\n\n abstract create<T extends CreateParameters>(\n parameters: T,\n ): Promise<CreateResult>;\n\n abstract update<T extends UpdateParameters>(\n parameters: T,\n ): Promise<UpdateResult>;\n\n abstract getResourceType(): ResourceType;\n getShareReadUrl(id: string) {\n return `/${this.getApplication()}/share/json/${id}?search=`;\n }\n getSaveShareUrl(id: string) {\n return `/${this.getApplication()}/share/resource/${id}`;\n }\n //\n // SHARED METHOD\n //\n gotoPrint(resourceId: string, withComment?: boolean): void {\n window.open(this.getPrintUrl(resourceId, withComment), \"_blank\");\n }\n\n gotoView(resourceId: string): void {\n window.open(this.getViewUrl(resourceId), \"_self\");\n }\n\n gotoForm(folderId?: string) {\n window.open(this.getFormUrl(folderId), \"_self\");\n }\n\n async publish(parameters: PublishParameters): Promise<PublishResult> {\n const publicationAsFormData = new FormData();\n publicationAsFormData.append(\"title\", parameters.title);\n publicationAsFormData.append(\"cover\", parameters.cover);\n publicationAsFormData.append(\"coverName\", (parameters.cover as File).name);\n publicationAsFormData.append(\"coverType\", parameters.cover.type);\n publicationAsFormData.append(\"teacherAvatar\", parameters.teacherAvatar);\n publicationAsFormData.append(\n \"teacherAvatarName\",\n (parameters.teacherAvatar as File).name ||\n `teacherAvatar_${parameters.userId}`,\n );\n publicationAsFormData.append(\n \"teacherAvatarType\",\n parameters.teacherAvatar.type,\n );\n publicationAsFormData.append(\"language\", parameters.language);\n parameters.activityType.forEach((activityType) => {\n publicationAsFormData.append(\"activityType[]\", activityType);\n });\n parameters.subjectArea.forEach((subjectArea) => {\n publicationAsFormData.append(\"subjectArea[]\", subjectArea);\n });\n parameters.age.forEach((age) => {\n publicationAsFormData.append(\"age[]\", age.toString());\n });\n publicationAsFormData.append(\"description\", parameters.description);\n let keyWordsArray = parameters.keyWords.split(\",\");\n keyWordsArray.forEach((keyWord) => {\n publicationAsFormData.append(\"keyWords[]\", keyWord.trim());\n });\n publicationAsFormData.append(\"licence\", parameters.licence);\n publicationAsFormData.append(\n \"pdfUri\",\n `${window.location.origin}${this.getPrintUrl(parameters.resourceEntId)}`,\n );\n publicationAsFormData.append(\n \"application\",\n parameters.application ? parameters.application : \"\",\n );\n publicationAsFormData.append(\"resourceId\", parameters.resourceId);\n publicationAsFormData.append(\"teacherSchool\", parameters.userStructureName);\n const res = await this.http.post<PublishResult>(\n \"/appregistry/library/resource\",\n publicationAsFormData,\n {\n headers: { \"Content-Type\": \"multipart/form-data\" },\n },\n );\n return this.checkHttpResponse(res);\n }\n\n //\n // FOLDER METHODS\n //\n /** Create a search context. */\n async createContext(\n parameters: GetContextParameters,\n ): Promise<GetContextResult> {\n const result = await this.http.get<GetContextResult>(\"/explorer/context\", {\n queryParams: this.toQueryParams(parameters),\n });\n return this.checkHttpResponse(result);\n }\n\n /** Search / paginate within a search context. */\n async searchContext(\n parameters: GetContextParameters,\n ): Promise<ISearchResults> {\n const result = await this.http.get<GetContextResult>(\n \"/explorer/resources\",\n {\n queryParams: this.toQueryParams(parameters),\n },\n );\n return this.checkHttpResponse(result);\n }\n\n /** Create a new folder. */\n async createFolder(\n parameters: CreateFolderParameters,\n ): Promise<CreateFolderResult> {\n const result = await this.http.post<CreateFolderResult>(\n \"/explorer/folders\",\n this.createFolderToBodyParams(parameters),\n );\n return this.checkHttpResponse(result);\n }\n\n /** Update folder. */\n async updateFolder(\n parameters: UpdateFolderParameters,\n ): Promise<CreateFolderResult> {\n const result = await this.http.put<CreateFolderResult>(\n `/explorer/folders/${parameters.folderId}`,\n this.createFolderToBodyParams(parameters),\n );\n return this.checkHttpResponse(result);\n }\n\n /** Move resources/folders to a folder. */\n async moveToFolder(parameters: MoveParameters): Promise<IActionResult> {\n const result = await this.http.post<IActionResult>(\n `/explorer/folders/${parameters.folderId}/move`,\n this.moveToBodyParams(parameters),\n );\n return this.checkHttpResponse(result);\n }\n\n /** List subfolders of a parent folder. */\n async listSubfolders(folderId: ID): Promise<GetSubFoldersResult> {\n const result = await this.http.get<GetSubFoldersResult>(\n `/explorer/folders/${folderId}`,\n );\n return this.checkHttpResponse(result);\n }\n\n /** Delete folders and/or resources. */\n async deleteAll(parameters: DeleteParameters): Promise<IActionResult> {\n const result = await this.http.deleteJson<IActionResult>(\n `/explorer`,\n parameters,\n );\n return this.checkHttpResponse(result);\n }\n\n /** Trash folders and/or resources. */\n async trashAll({\n resourceType,\n ...parameters\n }: Omit<TrashParameters, \"trash\">): Promise<IActionResult> {\n const result = await this.http.putJson<IActionResult>(\n `/explorer/trash`,\n parameters,\n );\n return this.checkHttpResponse(result);\n }\n /** Trash folders and/or resources. */\n async restoreAll({\n resourceType,\n ...parameters\n }: Omit<TrashParameters, \"trash\">): Promise<IActionResult> {\n const result = await this.http.putJson<IActionResult>(\n `/explorer/restore`,\n parameters,\n );\n return this.checkHttpResponse(result);\n }\n //\n // PROTECTED HELPERS\n //\n protected checkHttpResponse: <R>(result: R) => R = (result) => {\n if (this.http.latestResponse.status >= 300) {\n throw this.http.latestResponse.statusText;\n }\n return result;\n };\n\n protected async getThumbnailPath(thumb: string | Blob | File | undefined) {\n if (typeof thumb === \"undefined\") {\n return thumb;\n } else if (typeof thumb === \"string\") {\n if (thumb.startsWith(\"blob:\")) {\n const blob = await fetch(thumb).then((r) => r.blob());\n const res = await this.context.workspace().saveFile(blob, {\n visibility: \"protected\",\n application: this.getApplication(),\n });\n return `/workspace/document/${res._id}`;\n } else {\n return thumb;\n }\n } else {\n const res = await this.context.workspace().saveFile(thumb, {\n visibility: \"protected\",\n application: this.getApplication(),\n });\n return `/workspace/document/${res._id}`;\n }\n }\n\n //\n // PRIVATE HELPERS\n //\n private toQueryParams(p: GetContextParameters): Record<string, string> {\n let ret = {\n application: p.app,\n start_idx: p.pagination.startIdx,\n page_size: p.pagination.pageSize,\n resource_type: p.types[0],\n trashed: p.trashed,\n } as any;\n if (p.orders && Object.entries(p.orders).length) {\n // axios serialize array as name[] (not compatible with current api)\n const [[key, value]] = Object.entries(p.orders);\n ret.order_by = `${key}:${value}`;\n }\n if (p.filters) {\n Object.assign(ret, p.filters);\n }\n if (typeof p.search === \"string\") {\n ret.search = p.search;\n }\n return ret;\n }\n private createFolderToBodyParams(p: CreateFolderParameters) {\n return {\n application: p.app,\n resourceType: p.type,\n parentId: p.parentId,\n name: p.name,\n };\n }\n private moveToBodyParams(p: MoveParameters) {\n return {\n application: p.application,\n resourceType: this.getResourceType(),\n resourceIds: p.resourceIds,\n folderIds: p.folderIds,\n };\n }\n}\n","import { APP, IResource, RESOURCE, ResourceType } from \"..\";\nimport { BlogUpdate, CreateParameters, CreateResult, UpdateResult } from \"./interface\";\nimport { ResourceService } from \"./ResourceService\";\n\nexport class BlogResourceService extends ResourceService {\n\n async create(parameters: CreateParameters): Promise<CreateResult> {\n const fixThumb = parameters.thumbnail\n ? await this.getThumbnailPath(parameters.thumbnail)\n : \"\";\n\n const apiPath = parameters.public ? \"/blog/pub\" : \"/blog\";\n \n const res = await this.http.post<CreateResult>(apiPath, {\n title: parameters.name,\n description: parameters.description,\n visibility: parameters.public ? \"PUBLIC\" : \"OWNER\",\n thumbnail: fixThumb,\n trashed: false,\n slug: parameters.public ? parameters.slug : \"\",\n \"publish-type\": parameters.publishType || \"RESTRAINT\",\n \"comment-type\": \"IMMEDIATE\",\n });\n\n this.checkHttpResponse(res);\n \n return res;\n }\n\n async update(parameters: BlogUpdate): Promise<UpdateResult> {\n const fixThumb = await this.getThumbnailPath(parameters.thumbnail);\n const res = await this.http.put<IResource>(`/blog/${parameters.entId}`, {\n trashed: parameters.trashed,\n _id: parameters.entId,\n title: parameters.name,\n thumbnail: fixThumb,\n description: parameters.description,\n visibility: parameters.public ? \"PUBLIC\" : \"OWNER\",\n slug: parameters.public ? parameters.slug : \"\",\n \"publish-type\": parameters[\"publish-type\"] || \"RESTRAINT\",\n \"comment-type\": \"IMMEDIATE\",\n });\n this.checkHttpResponse(res);\n return { thumbnail: fixThumb, entId: parameters.entId } as UpdateResult;\n }\n getResourceType(): ResourceType {\n return RESOURCE.BLOG;\n }\n getApplication(): string {\n return APP.BLOG;\n }\n getFormUrl(folderId?: string): string {\n return folderId\n ? `/blog?folderid=${folderId}#/edit/new`\n : `/blog#/edit/new`;\n }\n getViewUrl(resourceId: string): string {\n return `/blog#/view/${resourceId}`;\n }\n getPrintUrl(resourceId: string, withComment?: boolean): string {\n return `/blog/print/blog#/print/${resourceId}?comments=${\n withComment || true\n }`;\n }\n}\nResourceService.register(\n { application: RESOURCE.BLOG, resourceType: RESOURCE.BLOG },\n (context) => new BlogResourceService(context),\n);\n","import { APP, IResource, RESOURCE, ResourceType } from \"..\";\nimport { CreateParameters, CreateResult, MindmapUpdate, UpdateResult } from \"./interface\";\nimport { ResourceService } from \"./ResourceService\";\n\nexport class MindmapResourceService extends ResourceService {\n\n async create(parameters: CreateParameters): Promise<CreateResult> {\n const fixThumb = parameters.thumbnail\n ? await this.getThumbnailPath(parameters.thumbnail)\n : \"\";\n \n const res = await this.http.post<{_id: string}>(`/mindmap`, {\n name: parameters.name,\n description: parameters.description,\n thumbnail: fixThumb,\n folder: parameters.folder,\n map: `<map version=\"tango\" theme=\"prism\"><topic central=\"true\" text=\"${parameters.name}\"/></map>`,\n trashed: false,\n visibility: \"OWNER\",\n });\n\n this.checkHttpResponse(res);\n \n return {entId: res._id, thumbnail: fixThumb};\n }\n\n async update(parameters: MindmapUpdate): Promise<UpdateResult> {\n const fixThumb = parameters.thumbnail\n ? await this.getThumbnailPath(parameters.thumbnail)\n : \"\";\n const res = await this.http.put<IResource>(`/mindmap/${parameters.entId}`, {\n trashed: parameters.trashed,\n _id: parameters.entId,\n name: parameters.name,\n thumbnail: fixThumb,\n description: parameters.description,\n visibility: parameters.public ? \"PUBLIC\" : \"OWNER\",\n });\n this.checkHttpResponse(res);\n return { thumbnail: fixThumb, entId: parameters.entId } as UpdateResult;\n }\n getResourceType(): ResourceType {\n return RESOURCE.MINDMAP;\n }\n getApplication(): string {\n return APP.MINDMAP;\n }\n getFormUrl(folderId?: string): string {\n return folderId ? `/mindmap?folderid=${folderId}/new` : `/mindmap/new`;\n }\n getViewUrl(resourceId: string): string {\n return `/mindmap/id/${resourceId}`;\n }\n getPrintUrl(resourceId: string, withComment?: boolean): string {\n return `/mindmap/print/id/${resourceId}?comments=${withComment || true}`;\n }\n}\nResourceService.register(\n { application: RESOURCE.MINDMAP, resourceType: RESOURCE.MINDMAP },\n (context) => new MindmapResourceService(context),\n);\n","import { IHttpParams, IHttpResponse } from \"../transport/interfaces\";\nimport { OdeServices } from \"../services/OdeServices\";\n\nconst globalCache: Record<string, any> = {};\nconst mutexPromise: Record<string, Promise<any>> = {};\n\nexport class CacheService {\n constructor(private context: OdeServices) {}\n\n private get http() {\n return this.context.http();\n }\n\n private async fromCacheIfPossible<T>(\n key: string,\n task: () => Promise<T>,\n shouldCache: (value: T) => boolean,\n ): Promise<T> {\n if (!!mutexPromise[key]) {\n await mutexPromise[key];\n }\n if (globalCache[key]) {\n return globalCache[key];\n }\n try {\n const promise = task();\n mutexPromise[key] = promise;\n const res = await promise;\n if (shouldCache(res)) {\n globalCache[key] = res;\n }\n return res;\n } catch (e) {\n console.error(`Failed to retrieve value for: ${key}`, e);\n throw e;\n }\n }\n\n clearCache(key?: string) {\n if (key) {\n delete globalCache[key];\n } else {\n for (const key in globalCache) {\n if (globalCache.hasOwnProperty(key)) {\n delete globalCache[key];\n }\n }\n }\n }\n\n async httpGet<R = any>(\n url: string,\n params?: IHttpParams,\n ): Promise<{ value: R; response: IHttpResponse }> {\n return this.fromCacheIfPossible<{ value: R; response: IHttpResponse }>(\n url,\n async () => {\n const value = await this.http.get<R>(url, params);\n const response = { ...this.http.latestResponse };\n return { value, response };\n },\n ({ response }) => {\n if (response.status < 200 || response.status >= 300) {\n // error code => dont cache\n return false;\n } else {\n return true;\n }\n },\n );\n }\n\n async httpGetJson<R = any>(url: string, params?: IHttpParams): Promise<R> {\n const { response, value } = await this.httpGet(url, params);\n if (response.status < 200 || response.status >= 300) {\n // error code => dont cache\n throw `Bad http status (${response.status}) for url: ${url}`;\n } else {\n return value;\n }\n }\n}\n","import { configure } from \"./Framework\";\nimport { IGetConf, IOdeTheme, IThemeConf } from \"./interfaces\";\nimport { App } from \"../globals\";\nimport { IWebApp } from \"../session/interfaces\";\nimport { IOdeServices } from \"../services/OdeServices\";\n\nexport class ConfService {\n constructor(private context: IOdeServices) {}\n\n private get http() {\n return this.context.http();\n }\n\n private get cdnDomain(): string {\n return configure.Platform.cdnDomain;\n }\n\n async getConf(app: App): Promise<IGetConf> {\n const [conf, applications] = await Promise.all([\n this.getThemeConf(),\n this.getApplicationsList(),\n ]);\n\n const [theme, currentApp, extendedTheme] = await Promise.all([\n this.getTheme({ conf }),\n this.getWebAppConf({ app, applications }),\n this.getExtendedTheme(),\n ]);\n\n return {\n applications,\n conf,\n currentApp,\n theme,\n extendedTheme,\n };\n }\n\n getCdnUrl(): string | undefined {\n //TODO to implement\n console.warn(\"[getCdnUrl] Not implemented yet\");\n return undefined;\n }\n\n async savePreference<T>(key: string, value: T) {\n this.http.putJson(`/userbook/preference/${key}`, value);\n }\n\n async getPreference<T>(key: string): Promise<T> {\n const res = await this.http.get<{ preference: string }>(\n `/userbook/preference/${key}`,\n );\n return JSON.parse(res.preference) as T;\n }\n\n private async getThemeConf(version?: string): Promise<IThemeConf> {\n const res = await this.http.getScript<IThemeConf>(\n \"/assets/theme-conf.js\",\n { queryParams: { v: version } },\n \"exports.conf\",\n );\n return res;\n }\n\n private async getExtendedTheme(): Promise<any> {\n try{\n const res = await this.http.get<any>(\"/assets/extended-theme.json\");\n return res;\n }catch(e){\n //TODO return a fallback if extended-theme.json is missing\n console.error('[getExtendedTheme] could not found /assets/extended-theme.json')\n return {}\n }\n }\n\n private async getApplicationsList(): Promise<IWebApp[]> {\n const response = await this.http.get<{ apps: Array<IWebApp> }>(\n `/applications-list`,\n );\n return response.apps;\n }\n\n private async getWebAppConf({\n app,\n applications,\n }: {\n app: App;\n applications: IWebApp[];\n }): Promise<IWebApp | undefined> {\n const find = applications.find((item) => {\n if (item?.prefix) {\n return item?.prefix.replace(\"/\", \"\") === app;\n }\n });\n return find;\n }\n\n private async getTheme({\n version,\n conf,\n }: {\n version?: string;\n conf: any;\n }): Promise<IOdeTheme> {\n const theme = await this.http.get<IOdeTheme>(\"/theme\", {\n queryParams: { _: version },\n });\n const skin = theme.themeName;\n const skins = conf?.overriding.find(\n (item: { child: any }) => item.child === skin,\n ).skins;\n const bootstrapPath = \"/assets/themes/edifice-bootstrap\";\n const bootstrapVersion = conf?.overriding\n .find((item: { child: any }) => item.child === skin)\n .bootstrapVersion.split(\"-\")\n .at(-1);\n const is1d =\n conf?.overriding.find((item: { child: any }) => item.child === skin)\n .parent === \"panda\";\n\n return {\n basePath: `${this.cdnDomain}${theme.skin}../../`,\n bootstrapPath,\n bootstrapVersion,\n is1d,\n logoutCallback: theme.logoutCallback,\n skin: theme.skin.split(\"/assets/themes/\")[1].split(\"/\")[0],\n skinName: theme.skinName,\n skins,\n themeName: theme.themeName,\n themeUrl: theme.skin,\n };\n }\n}\n","import { OdeServices } from \"../services/OdeServices\";\nimport {\n Bookmark,\n BookmarkGetResponse,\n BookmarkSaveResponse,\n BookmarkWithDetails,\n BookmarkWithMembers,\n Group,\n User,\n} from \"./interface\";\n\nexport class DirectoryService {\n constructor(private odeServices: OdeServices) {}\n private get http() {\n return this.odeServices.http();\n }\n private get cache() {\n return this.odeServices.cache();\n }\n\n getAvatarUrl(id: string, type: \"user\" | \"group\", size = \"100x100\") {\n return type === \"user\"\n ? `/userbook/avatar/${id}?thumbnail=${size}`\n : `/assets/img/illustrations/group-avatar.svg`;\n }\n\n getDirectoryUrl(id: string, type: \"user\" | \"group\") {\n return type === \"user\"\n ? `/userbook/annuaire#/${id}`\n : `/userbook/annuaire#/group-view/${id}`;\n }\n\n async getBookMarks(): Promise<Bookmark[]> {\n const all = await this.cache.httpGetJson<BookmarkGetResponse[]>(\n `/directory/sharebookmark/all`,\n );\n return all.map(({ id, name }) => {\n return {\n id,\n displayName: name,\n members: [], // this api does not return members\n };\n });\n }\n\n async getBookMarkById(idBookmark: string): Promise<BookmarkWithDetails> {\n const { groups, id, name, users } =\n await this.http.get<BookmarkGetResponse>(\n `/directory/sharebookmark/${idBookmark}`,\n );\n return {\n id,\n displayName: name,\n groups: groups.map(({ name, id }) => {\n return {\n displayName: name,\n id,\n };\n }),\n users: users.map(({ displayName, id, profile }) => {\n return {\n profile,\n displayName,\n // these info are missing from api\n firstName: \"\",\n lastName: \"\",\n login: \"\",\n id,\n };\n }),\n };\n }\n\n async saveBookmarks(\n name: string,\n {\n bookmarks,\n groups,\n users,\n }: {\n users: string[] | User[];\n groups: string[] | Group[];\n bookmarks: BookmarkWithMembers[] | string[];\n },\n ): Promise<BookmarkWithMembers> {\n this.cache.clearCache(`/directory/sharebookmark/all`);\n // get user ids\n const userIds = users.map((user) => {\n return typeof user === \"string\" ? user : user.id;\n });\n // get group ids\n const groupIds = groups.map((group) => {\n return typeof group === \"string\" ? group : group.id;\n });\n const bookmarkDetailPromises = bookmarks.map(async (bookmark) => {\n if (typeof bookmark === \"string\") {\n const { displayName, groups, id, users } = await this.getBookMarkById(\n bookmark,\n );\n const usersId = users.map((user) => user.id);\n const groupId = groups.map((user) => user.id);\n const tmp: BookmarkWithMembers = {\n displayName,\n id,\n members: [...groupId, ...usersId],\n };\n return tmp;\n } else {\n return Promise.resolve(bookmark);\n }\n });\n const bookmarDetails = await Promise.all(bookmarkDetailPromises);\n // get members ids in bookmarks\n const memberIds = bookmarDetails\n .map((bookmark) => {\n return bookmark.members;\n })\n .reduce((previous, current) => {\n return [...previous, ...current];\n }, []);\n // generate payload\n const data = {\n name,\n members: [...userIds, ...groupIds, ...memberIds],\n };\n\n const { id } = await this.http.postJson<BookmarkSaveResponse>(\n \"/directory/sharebookmark\",\n data,\n );\n return {\n id,\n displayName: name,\n members: data.members,\n };\n }\n}\n","import axios, {\n AxiosError,\n AxiosInstance,\n // AxiosRequestConfig,\n AxiosResponse,\n} from \"axios\";\nimport { ERROR_CODE } from \"../globals\";\nimport { IHttpResponse, IHttpParams } from \"./interfaces\";\nimport { OdeServices } from \"../services/OdeServices\";\n\nconst loadedScripts: { [url: string]: boolean } = {};\n\nexport class HttpService {\n // Axios automatically manages the XSRF-TOKEN cookie and the X-XSRF-TOKEN HTTP header.\n private axios: AxiosInstance;\n\n private _latestResponse: any;\n\n constructor(private context: OdeServices, params?: any) {\n this.axios = axios.create(params);\n }\n\n setCdn(cdnUrl: string): void {\n if (\n cdnUrl &&\n XMLHttpRequest &&\n !(XMLHttpRequest.prototype as any)[\"cdnUrl\"]\n ) {\n (XMLHttpRequest.prototype as any)[\"cdnUrl\"] = cdnUrl;\n (XMLHttpRequest.prototype as any).baseOpen =\n XMLHttpRequest.prototype.open;\n XMLHttpRequest.prototype.open = function () {\n const url = arguments[1] as string;\n //PUBLIC infra\n if (url.startsWith(\"/infra/public\")) {\n arguments[1] = cdnUrl + url;\n }\n //PUBLIC files (/.*/public)\n const match = /^\\/([^\\/]*)\\/public/.test(url);\n if (match) {\n arguments[1] = cdnUrl + url;\n }\n //ASSETS files\n if (url.startsWith(\"/assets\")) {\n arguments[1] = cdnUrl + url;\n }\n //SKIP PUBLIC CONF\n if (url == \"/conf/public\") {\n arguments[1] = url;\n }\n //SKIP HTTP\n if (url.startsWith(\"http\")) {\n arguments[1] = url;\n }\n return (this as any).baseOpen.apply(this, arguments);\n };\n }\n }\n\n // private toAxiosConfig(params?: IHttpParams): AxiosRequestConfig {\n private toAxiosConfig(params?: IHttpParams): any {\n if (!params) {\n return this.axios.defaults;\n } else {\n const p = Object.assign({}, this.axios.defaults);\n\n if (params.headers) {\n p.headers = Object.assign({}, this.axios.defaults.headers);\n Object.assign(p.headers, params.headers);\n }\n\n if (params.responseType) {\n p.responseType = params.responseType;\n }\n\n if (params.queryParams) {\n // Axios will serialize parameters, see https://github.com/axios/axios#request-config\n p.params = Object.assign({}, params.queryParams);\n }\n\n /* TODO : manage params.requestName through an events[]. See infra-front http.ts */\n\n return p;\n }\n }\n\n private toCdnUrl(url: string) {\n const CDN_DOMAIN: string = this.context.conf().getCdnUrl() || \"\";\n // If CDN domain is defined, and requested url is not /public/conf (SKIP PUBLIC CONF)\n if (CDN_DOMAIN!.length > 0 && url !== \"/conf/public\") {\n const originalURL = \"\" + url;\n //PUBLIC infra or ASSETS files\n if (\n originalURL.startsWith(\"/infra/public\") ||\n originalURL.startsWith(\"/assets\")\n ) {\n url = CDN_DOMAIN + originalURL;\n } else {\n //PUBLIC files (/.*/public)\n const match = /^\\/([^\\/]*)\\/public/.test(originalURL);\n if (match) {\n url = CDN_DOMAIN + originalURL;\n }\n }\n }\n return url;\n }\n\n private mapAxiosError<R>(error: AxiosError<R>, params?: IHttpParams): R {\n console.error(\"[HttpService]\", error);\n // AxiosError.response and our HttpResponse share the same properties.\n // So we can use it directly, saving CPU and memory.\n // Otherwise, we would map the axios response to our own model.\n if (error.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n this._latestResponse = error.response;\n } else if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n this._latestResponse = {\n status: 408,\n statusText: ERROR_CODE.TIME_OUT,\n };\n } else {\n // Something happened in setting up the request that triggered an Error\n this._latestResponse = {\n status: 500,\n statusText: ERROR_CODE.UNKNOWN,\n };\n }\n\n /* TODO : manage params.requestName through an events[]. See infra-front http.ts */\n\n // Notify error unless disabled.\n if (!params || params.disableNotifications === false) {\n // FIXME This really should be an rxjs Subject\n // notify.onEvent( EVENT_NAME.HTTP_ERROR ).next( new HttpErrorNotice(''+this._latestResponse.status, this._latestResponse.statusText) );\n }\n\n return this._latestResponse;\n }\n\n private mapAxiosResponse<R>(\n response: AxiosResponse<R>,\n params?: IHttpParams,\n ): R {\n // AxiosResponse and our HttpResponse share the same properties.\n // So we can use it directly, saving CPU and memory.\n // Otherwise, we would map the axios response to our own model.\n this._latestResponse = response;\n /* TODO : manage params.requestName through an events[]. See infra-front http.ts */\n //FIXME: should we check response.status and only accept if range is 2xx ?\n return response.data;\n }\n\n get latestResponse(): IHttpResponse {\n return this._latestResponse;\n }\n\n async get<R = any>(url: string, params?: IHttpParams): Promise<R> {\n try {\n const r = await this.axios.get<R>(\n this.toCdnUrl(url),\n this.toAxiosConfig(params),\n );\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result = this.mapAxiosError(e as AxiosError, params) as R;\n return result;\n }\n }\n\n async post<R = any>(\n url: string,\n data?: any,\n params?: IHttpParams,\n ): Promise<R> {\n try {\n const r = await this.axios.post<R>(url, data, this.toAxiosConfig(params));\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result_1 = this.mapAxiosError(e as AxiosError, params) as R;\n return result_1;\n }\n }\n\n async postFile<R = any>(\n url: string,\n data: any,\n params?: IHttpParams,\n ): Promise<R> {\n const p = this.toAxiosConfig(params);\n if (p.headers && p.headers[\"Content-Type\"]) {\n delete p.headers[\"Content-Type\"];\n }\n try {\n const r = await this.axios.post<R>(url, data, {\n ...p,\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n });\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result = this.mapAxiosError(e as AxiosError, params) as R;\n return result;\n }\n }\n\n async postJson<R = any>(\n url: string,\n json: any,\n params?: IHttpParams,\n ): Promise<R> {\n const p = this.toAxiosConfig();\n if (p.headers) p.headers[\"Content-Type\"] = \"application/json\";\n try {\n const r = await this.axios.post<R>(url, json, this.toAxiosConfig(params));\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result_1 = this.mapAxiosError(e as AxiosError, params) as R;\n return result_1;\n }\n }\n\n async put<R = any>(\n url: string,\n data?: any,\n params?: IHttpParams,\n ): Promise<R> {\n try {\n const r = await this.axios.put<R>(url, data, this.toAxiosConfig(params));\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result = this.mapAxiosError(e as AxiosError, params) as R;\n return result;\n }\n }\n\n async putFile<R = any>(url: string, data: FormData, params?: IHttpParams) {\n try {\n const p = this.toAxiosConfig(params);\n if (p.headers && p.headers[\"Content-Type\"]) {\n delete p.headers[\"Content-Type\"];\n }\n const res = await this.axios.put(url, data, {\n ...p,\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n });\n return this.mapAxiosResponse(res, params);\n } catch (e) {\n const result = this.mapAxiosError(e as AxiosError, params) as R;\n return result;\n }\n }\n\n async putJson<R = any>(\n url: string,\n json: any,\n params?: IHttpParams,\n ): Promise<R> {\n const p = this.toAxiosConfig(params);\n if (p.headers) p.headers[\"Content-Type\"] = \"application/json\";\n try {\n const r = await this.axios.put<R>(url, json, p);\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result = this.mapAxiosError(e as AxiosError, params) as R;\n return result;\n }\n }\n async delete<R = any>(url: string, params?: IHttpParams): Promise<R> {\n try {\n const r = await this.axios.delete<R>(url, this.toAxiosConfig(params));\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result_1 = this.mapAxiosError(e as AxiosError, params) as R;\n return result_1;\n }\n }\n\n async deleteJson<R = any>(url: string, json: any): Promise<R> {\n try {\n const r = await this.axios.delete<R>(url, { data: json });\n return this.mapAxiosResponse(r);\n } catch (e) {\n const result = this.mapAxiosError(e as AxiosError) as R;\n return result;\n }\n }\n\n getScript<R = any>(\n url: string,\n params?: IHttpParams,\n variableName?: string,\n ): Promise<R> {\n const resultName = variableName ?? \"exports\";\n const p = this.toAxiosConfig(params);\n if (p.headers) p.headers[\"Accept\"] = \"application/javascript\";\n return this.axios\n .get<string>(this.toCdnUrl(url), p)\n .then((r) => this.mapAxiosResponse(r, params))\n .then((r) => {\n try {\n const securedScript = `\"use strict\";var ${\n resultName.split(\".\")[0]\n }={};${r};return ${resultName};`;\n const result = Function(securedScript)();\n return result;\n } catch (e) {\n const result = r;\n return result;\n }\n })\n .catch<R>((e) => {\n this.mapAxiosError(e, params);\n throw e;\n });\n }\n\n loadScript(url: string, params?: IHttpParams): Promise<void> {\n return loadedScripts[url]\n ? Promise.resolve()\n : this.getScript(url, params).then((res) => {\n loadedScripts[url] = true;\n });\n }\n}\n","import { RightStringified } from \"../explorer/interfaces\";\nimport { OdeServices } from \"../services/OdeServices\";\nimport { ResourceRight, RightRole } from \"./interface\";\n\nexport class RightService {\n constructor(private context: OdeServices) {}\n get session() {\n return this.context.session();\n }\n /**\n * Parse right concat as \"$TYPE:$ID:$RIGHT\"\n * $TYPE = user | group | creator\n * $ID: id of the resource\n * $RIGHT: read | contrib | manage\n *\n * @param right a concat right\n * @returns Right parsed\n */\n parseResourceRight(right: RightStringified): ResourceRight | undefined {\n const parts = right.split(\":\");\n if (parts.length === 2) {\n if (parts[0] === \"creator\") {\n return {\n id: parts[1],\n right: \"creator\",\n type: \"creator\",\n } as ResourceRight;\n }\n } else if (parts.length === 3) {\n return {\n id: parts[1],\n right: parts[2],\n type: parts[0],\n } as ResourceRight;\n } else {\n return undefined;\n }\n }\n /**\n * Parse an array of rights concat as \"$TYPE:$ID:$RIGHT\"\n * $TYPE = user | group | creator\n * $ID: id of the resource\n * $RIGHT: read | contrib | manage\n *\n * @param rights a list of concat rights\n * @returns Array of Right parsed\n */\n parseResourceRights(rights: RightStringified[]): ResourceRight[] {\n const parsed = rights\n .map((right) => {\n return this.parseResourceRight(right);\n })\n .filter((right) => {\n return right !== undefined;\n }) as ResourceRight[];\n return parsed;\n }\n\n /**\n * Check wether a user has the expected right for a ressource\n * @param user the userId and groupId concerned by the check\n * @param expect the expected right to check\n * @param rights array of Right for the resource\n * @returns true if has rights\n */\n hasResourceRight(\n { id, groupIds }: { id: string; groupIds: string[] },\n expect: RightRole,\n rights: ResourceRight[] | RightStringified[],\n ) {\n const safeRights = rights\n .map((right) => {\n if (typeof right === \"string\") {\n return this.parseResourceRight(right);\n }\n return right;\n })\n .filter((right) => {\n return right !== undefined;\n }) as ResourceRight[];\n for (const right of safeRights) {\n if (right.id === id && right.type === \"creator\") {\n return true;\n } else if (\n right.id === id &&\n right.type === \"user\" &&\n right.right === expect\n ) {\n return true;\n } else if (\n groupIds.includes(right.id) &&\n right.type === \"group\" &&\n right.right === expect\n ) {\n return true;\n }\n }\n return false;\n }\n /**\n * Check wether the current user have resource right\n * @param expect the expected right to check\n * @param rights array of Right for the resource\n * @returns true if has rights\n */\n async sessionHasResourceRight(\n expect: RightRole,\n rights: ResourceRight[] | RightStringified[],\n ): Promise<boolean> {\n try {\n const user = await this.session.getUser();\n return (\n !!user &&\n this.hasResourceRight(\n { groupIds: user.groupsIds, id: user.userId },\n expect,\n rights,\n )\n );\n } catch (e) {\n console.error(e);\n return false;\n }\n }\n /**\n * Check wether the current user have at least one of resource right expected\n * @param expects array of expected right to check\n * @param rights array of Right for the resource\n * @returns true if has rights\n */\n async sessionHasAtLeastOneResourceRight(\n expects: RightRole[],\n rights: ResourceRight[] | RightStringified[],\n ): Promise<boolean> {\n for (const expect of expects) {\n const hasRight = await this.sessionHasResourceRight(expect, rights);\n if (hasRight) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check wether the current user has resource right for each right list\n * @param expect expected right to check\n * @param rightsArray array of array of Right for multiple resources\n * @returns true if has rights\n */\n async sessionHasResourceRightForEachList(\n expect: RightRole,\n rightsArray: ResourceRight[][] | RightStringified[][],\n ): Promise<boolean> {\n let count = 0;\n for (const rights of rightsArray) {\n const hasRight = await this.sessionHasResourceRight(expect, rights);\n if (hasRight) {\n count++;\n }\n }\n //each list has right\n if (count === rightsArray.length) {\n return true;\n }\n return false;\n }\n\n /**\n * Check wether the current user have at least one of resource right for each right list\n * @param expects array of expected right to check\n * @param rightsArray array of array of Right for multiple resources\n * @returns true if has rights\n */\n async sessionHasAtLeastOneResourceRightForEachList(\n expects: RightRole[],\n rightsArray: ResourceRight[][] | RightStringified[][],\n ): Promise<boolean> {\n for (const expect of expects) {\n let count = 0;\n for (const rights of rightsArray) {\n const hasRight = await this.sessionHasResourceRight(expect, rights);\n if (hasRight) {\n count++;\n }\n }\n //each list has right\n if (count === rightsArray.length) {\n return true;\n }\n }\n return false;\n }\n\n hasWorkflowRight(expect: string, right: string[]) {\n return (\n right.findIndex((workflowRight) => {\n return workflowRight === expect;\n }) !== -1\n );\n }\n\n /**\n * @param expect a workflow right\n * @returns true if current session has right on it\n */\n async sessionHasWorkflowRight(expect: string): Promise<boolean> {\n try {\n const user = await this.session.getUser();\n return (\n !!user &&\n this.hasWorkflowRight(\n expect,\n user.authorizedActions.map(\n (authorizedAction) => authorizedAction.name,\n ),\n )\n );\n } catch (e) {\n console.error(e);\n return false;\n }\n }\n\n /**\n * @param expect a workflow right\n * @returns a record with right as key and boolean as value if current session has right on it\n */\n async sessionHasWorkflowRights(\n expects: string[],\n ): Promise<Record<string, boolean>> {\n const result: Record<string, boolean> = {};\n try {\n const user = await this.session.getUser();\n for (const expect of expects) {\n result[expect] =\n !!user &&\n this.hasWorkflowRight(\n expect,\n user.authorizedActions.map(\n (authorizedAction) => authorizedAction.name,\n ),\n );\n }\n } catch (e) {\n console.error(e);\n for (const expect of expects) {\n result[expect] = false;\n }\n }\n return result;\n }\n}\n","import { ERROR_CODE } from \"../globals\";\nimport {\n IGetSession,\n IQuotaAndUsage,\n IUserDescription,\n IUserInfo,\n IWebApp,\n UserProfile,\n} from \"./interfaces\";\n\nimport { IOdeServices } from \"../services/OdeServices\";\n\nexport class SessionService {\n constructor(private context: IOdeServices) {}\n\n get http() {\n return this.context.http();\n }\n get cache() {\n return this.context.cache();\n }\n\n /**\n * Callback to call when user logout\n */\n onLogout() {\n this.cache.clearCache();\n }\n\n /**\n * Callback to call when session change\n */\n onRefreshSession() {\n this.cache.clearCache();\n }\n\n async getSession(): Promise<IGetSession> {\n const user = await this.getUser();\n\n const [\n currentLanguage,\n quotaAndUsage,\n userDescription,\n userProfile,\n bookmarkedApps,\n ] = await Promise.all([\n this.getCurrentLanguage(user),\n this.latestQuotaAndUsage(user),\n this.loadDescription(user),\n this.getUserProfile(),\n this.getBookmarks(user),\n ]);\n\n return {\n user,\n quotaAndUsage,\n currentLanguage,\n userDescription,\n userProfile,\n bookmarkedApps,\n };\n }\n\n public login(\n email: string,\n password: string,\n rememberMe?: boolean,\n secureLocation?: boolean,\n ): Promise<void> {\n const data = new FormData();\n data.append(\"email\", email);\n data.append(\"password\", password);\n if (typeof rememberMe !== \"undefined\") {\n data.append(\"rememberMe\", \"\" + rememberMe);\n }\n if (typeof secureLocation !== \"undefined\") {\n data.append(\"secureLocation\", \"\" + secureLocation);\n }\n\n return this.http\n .post<void>(\"/auth/login\", data, {\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n })\n .finally(() => {\n switch (this.http.latestResponse.status) {\n case 200: // error, TODO look for error message in returned html...\n throw ERROR_CODE.MALFORMED_DATA;\n case 302: // success TODO redirects cannot be intercepted with axios in a browser !!!\n default:\n break;\n }\n });\n }\n\n logout(): Promise<void> {\n return this.http.get<void>(\"/auth/logout\").finally(() => {\n // void, always successful\n });\n }\n\n async latestQuotaAndUsage(\n user: IUserInfo | undefined,\n ): Promise<IQuotaAndUsage> {\n try {\n const infos = await this.http.get<IQuotaAndUsage>(\n `/workspace/quota/user/${user?.userId}`,\n );\n return infos;\n } catch (error) {\n console.error(error);\n return { quota: 0, storage: 0 };\n }\n }\n\n async getCurrentLanguage(\n user: IUserInfo | undefined,\n ): Promise<string | undefined> {\n const isUserSignin = user?.sessionMetadata && user?.sessionMetadata.userId;\n\n try {\n let response;\n\n if (isUserSignin) {\n response = await this.loadUserLanguage();\n } else {\n response = await this.loadDefaultLanguage();\n }\n return response;\n } catch (error) {\n console.error(error);\n }\n }\n\n private async loadUserLanguage(): Promise<string> {\n try {\n // don't cache preference it could change\n const response = await this.http.get<{ preference: any }>(\n \"/userbook/preference/language\",\n );\n return JSON.parse(response.preference)[\"default-domain\"];\n } catch (error) {\n const response = await this.loadDefaultLanguage();\n return response;\n }\n }\n\n private async loadDefaultLanguage(): Promise<string> {\n // locale does not change until onLogout\n const response = await this.cache.httpGetJson<{ locale: string }>(\n \"/locale\",\n );\n return response.locale;\n }\n\n public async getUser(): Promise<IUserInfo | undefined> {\n // session does not change until onLogout\n const { response, value } = await this.cache.httpGet<IUserInfo>(\n \"/auth/oauth2/userinfo\",\n );\n if (response.status < 200 || response.status >= 300) {\n // Backend tries to redirect the user => not logged in !\n throw ERROR_CODE.NOT_LOGGED_IN;\n } else {\n return value;\n }\n }\n\n hasWorkflow({\n workflowName,\n user,\n }: {\n workflowName: string;\n user: IUserInfo;\n }): boolean {\n return (\n workflowName === undefined ||\n user?.authorizedActions.findIndex((workflowRight) => {\n return workflowRight.name === workflowName;\n }) !== -1\n );\n }\n\n private async loadDescription(\n user: IUserInfo | undefined,\n ): Promise<IUserDescription> {\n try {\n const [data, userbook] = await Promise.all([\n // FIXME The full user's description should be obtainable from a single endpoint in the backend.\n\n this.getUserProfile({\n requestName: \"refreshAvatar\",\n }),\n this.http.get<IUserDescription>(\"/directory/userbook/\" + user?.userId),\n ]);\n return { ...data, ...userbook };\n } catch (error) {\n console.error(error);\n return {} as unknown as IUserDescription;\n }\n }\n\n private async getBookmarks(user: IUserInfo | undefined) {\n const data = await this.http.get(\"/userbook/preference/apps\");\n\n if (!data.preference) {\n data.preference = null;\n }\n\n const tmp = JSON.parse(data.preference) as Array<IWebApp>;\n let myApps: {\n bookmarks: Array<string>; // Array of app names\n applications: [];\n };\n\n myApps = tmp as unknown as { bookmarks: string[]; applications: [] };\n\n if (!myApps) {\n myApps = {\n bookmarks: [],\n applications: [],\n };\n }\n\n let bookmarkedApps: IWebApp[] = [];\n myApps.bookmarks.forEach((appName, index) => {\n const foundApp = user?.apps.find((app: IWebApp) => app.name === appName);\n if (foundApp) {\n let app = Object.assign({}, foundApp);\n bookmarkedApps.push(app);\n }\n });\n\n return bookmarkedApps;\n }\n\n async getUserProfile(options?: any): Promise<UserProfile> {\n const { response, value } = await this.cache.httpGet<any>(\n \"/userbook/api/person\",\n options,\n );\n if (response.status < 200 || response.status >= 300) {\n // Backend tries to redirect the user => not logged in !\n throw ERROR_CODE.NOT_LOGGED_IN;\n } else {\n return value.result[0].type;\n }\n }\n\n public async isAdml(): Promise<boolean> {\n // session does not change until onLogout\n const user = await this.getUser();\n return user?.functions.ADMIN_LOCAL !== undefined;\n }\n}\n","import { defaultDiacriticsRemovalMap } from \"../idiom/Idiom\";\n\nexport class StringUtils {\n static removeAccents(str: string): string {\n for (var i = 0; i < defaultDiacriticsRemovalMap.length; i++) {\n str = str.replace(\n defaultDiacriticsRemovalMap[i].letters,\n defaultDiacriticsRemovalMap[i].base,\n );\n }\n return str;\n }\n}\n","import { StringUtils } from \"../utils/StringUtils\";\nimport { OdeServices } from \"../services/OdeServices\";\n\nimport {\n GetResourceRightPayload,\n ShareMapping,\n ShareRightWithVisibles,\n SharingRight,\n PutShareResponse,\n PutSharePayload,\n ShareSubject,\n ShareRight,\n ShareRightAction,\n ShareRightActionDisplayName,\n} from \"./interface\";\nimport { Bookmark, Group, User } from \"../directory/interface\";\n\nexport class ShareService {\n //\n // IMPLEMENTATION\n //\n constructor(protected context: OdeServices) {}\n\n get directory() {\n return this.context.directory();\n }\n get http() {\n return this.context.http();\n }\n get cache() {\n return this.context.cache();\n }\n\n async searchShareSubjects(\n app: string,\n resourceId: string,\n searchText: string,\n ): Promise<ShareSubject[]> {\n const cleanSearchText = StringUtils.removeAccents(searchText).toLowerCase();\n const response = await this.cache.httpGetJson<GetResourceRightPayload>(\n `/${app}/share/json/${resourceId}?search=${searchText}`,\n );\n const resUsers = response.users.visibles\n .filter(({ username, firstName, lastName, login }) => {\n const cleanLastName = StringUtils.removeAccents(\n lastName || \"\",\n ).toLowerCase();\n const cleanFirstName = StringUtils.removeAccents(\n firstName || \"\",\n ).toLowerCase();\n const cleanDisplayName = StringUtils.removeAccents(\n username || \"\",\n ).toLowerCase();\n const cleanLogin = StringUtils.removeAccents(login || \"\").toLowerCase();\n return (\n cleanDisplayName.includes(cleanSearchText) ||\n cleanFirstName.includes(cleanSearchText) ||\n cleanLastName.includes(cleanSearchText) ||\n cleanLogin.includes(cleanSearchText)\n );\n })\n .map((user) => {\n return {\n avatarUrl: this.directory.getAvatarUrl(user.id, \"user\"),\n directoryUrl: this.directory.getDirectoryUrl(user.id, \"user\"),\n displayName: user.username,\n id: user.id,\n profile: user.profile,\n type: \"user\",\n } as ShareSubject;\n });\n const resGroups = response.groups.visibles\n .filter(({ name }) => {\n const cleanName = StringUtils.removeAccents(name || \"\").toLowerCase();\n return cleanName.includes(cleanSearchText);\n })\n .map((group) => {\n return {\n avatarUrl: this.directory.getAvatarUrl(group.id, \"group\"),\n directoryUrl: this.directory.getDirectoryUrl(group.id, \"group\"),\n displayName: group.name,\n id: group.id,\n type: \"group\",\n } as ShareSubject;\n });\n const bookmarks: Bookmark[] = await this.directory.getBookMarks();\n const resBookmarks = bookmarks\n .filter(({ displayName }) => {\n const cleanName = StringUtils.removeAccents(\n displayName || \"\",\n ).toLowerCase();\n return cleanName.includes(cleanSearchText);\n })\n .map((bookmark) => {\n return {\n avatarUrl: \"\",\n directoryUrl: \"\",\n profile: \"\",\n displayName: bookmark.displayName,\n id: bookmark.id,\n type: \"sharebookmark\",\n } as ShareSubject;\n });\n\n return [...resBookmarks, ...resUsers, ...resGroups];\n }\n\n async getShareMapping(app: string) {\n const sharingMap = await this.cache.httpGetJson<ShareMapping>(\n `/${app}/rights/sharing`,\n );\n //fix keys app.role => role\n for (const key of Object.keys(sharingMap)) {\n if (key.includes(\".\")) {\n const newKey = key.split(\".\")[1];\n const value = (sharingMap as any)[key];\n delete (sharingMap as any)[key];\n (sharingMap as any)[newKey] = value;\n }\n }\n return sharingMap;\n }\n\n getActionsAvailableFor(\n { id, type }: { id: string; type: \"user\" | \"group\" },\n payload: GetResourceRightPayload,\n mapping: ShareMapping,\n ): ShareRightActionDisplayName[] {\n // get rights affected to this user or group\n const usafeRights =\n type === \"user\" ? payload.users.checked[id] : payload.groups.checked[id];\n const rights = usafeRights || [];\n // get normalized actions names\n const actions = Object.keys(mapping) as ShareRightActionDisplayName[];\n const actionAvailable: ShareRightActionDisplayName[] = [];\n // for each normalized action, check whether current user or group has right for it\n for (const action of actions) {\n const rightsForAction = mapping[action];\n const intersection = rightsForAction.filter((right) =>\n rights.includes(right),\n );\n if (intersection.length > 0) {\n actionAvailable.push(action);\n }\n }\n return actionAvailable;\n }\n\n async getRightsForResource(\n app: string,\n resourceId: string,\n ): Promise<ShareRightWithVisibles> {\n // fetch bookmarks\n const visibleBookmarks = await this.directory.getBookMarks();\n // get rights for this ressources\n const url = this.context.resource(app, app).getShareReadUrl(resourceId);\n const rightsPayload = await this.cache.httpGetJson<GetResourceRightPayload>(\n url,\n );\n // get mapping between rights and normalized rights\n const sharingMap = await this.getShareMapping(app);\n // get normalized rights infos\n const sharingRights = await this.cache.httpGetJson<SharingRight>(\n \"/infra/public/json/sharing-rights.json\",\n );\n // generate rows for users\n const userRights = Object.keys(rightsPayload.users.checked)\n .map((userId) => {\n // find user info\n const user = rightsPayload.users.visibles.find(\n (user) => user.id === userId,\n );\n return user;\n })\n .filter((user) => {\n // remove if user not found\n return user !== undefined;\n })\n .map((user) => {\n // get normalized actions for user\n const actions = this.getActionsAvailableFor(\n { id: user!.id, type: \"user\" },\n rightsPayload,\n sharingMap,\n );\n // generate ShareRight row\n const right: ShareRight = {\n id: user!.id,\n type: \"user\",\n displayName: user!.username,\n profile: user!.profile,\n avatarUrl: this.directory.getAvatarUrl(user!.id, \"user\"),\n directoryUrl: this.directory.getDirectoryUrl(user!.id, \"user\"),\n actions: actions.map((action) => {\n const act = sharingRights[action];\n return {\n displayName: action,\n id: action,\n priority: act.priority,\n };\n }),\n };\n return right;\n })\n .sort((a, b) => {\n // sort by user name ASC\n return (a.displayName || \"\").localeCompare(b.displayName);\n });\n // generate rows for groups\n const groupRights = Object.keys(rightsPayload.groups.checked)\n .map((groupId) => {\n // find group info\n const group = rightsPayload.groups.visibles.find(\n (group) => group.id === groupId,\n );\n return group;\n })\n .filter((group) => {\n // remove if group not found\n return group !== undefined;\n })\n .map((group) => {\n // get normalized actions for group\n const actions = this.getActionsAvailableFor(\n { id: group!.id, type: \"group\" },\n rightsPayload,\n sharingMap,\n );\n const right: ShareRight = {\n id: group!.id,\n type: \"group\",\n displayName: group!.name,\n profile: undefined,\n avatarUrl: this.directory.getAvatarUrl(group!.id, \"group\"),\n directoryUrl: this.directory.getDirectoryUrl(group!.id, \"group\"),\n actions: actions.map((action) => {\n const act = sharingRights[action];\n return {\n displayName: action,\n id: action,\n priority: act.priority,\n };\n }),\n };\n return right;\n })\n .sort((a, b) => {\n // sort by group name ASC\n return (a.displayName || \"\").localeCompare(b.displayName);\n });\n const rights = [...userRights, ...groupRights];\n // prepare list of visible groups\n const visibleGroups = rightsPayload.groups.visibles.map(\n ({ groupDisplayName, id, name }) => {\n const group: Group = {\n displayName: groupDisplayName || name,\n id,\n };\n return group;\n },\n );\n // prepare list of visible user\n const visibleUsers = rightsPayload.users.visibles.map(\n ({ id, profile, username, firstName, lastName, login }) => {\n const user: User = {\n displayName: username,\n firstName,\n lastName,\n login,\n profile,\n id,\n };\n return user;\n },\n );\n return {\n rights,\n visibleBookmarks,\n visibleGroups,\n visibleUsers,\n };\n }\n\n async saveRights(\n app: string,\n resourceId: string,\n rights: ShareRight[],\n ): Promise<PutShareResponse> {\n // get mapping between action and java names\n const mapping = await this.getShareMapping(app);\n const payload: PutSharePayload = {\n bookmarks: {},\n groups: {},\n users: {},\n };\n for (const right of rights) {\n // get java rights for each available actions\n const rightWithDuplicates = right.actions\n .map((action) => {\n return mapping[action.id];\n })\n .reduce((previous, current) => {\n return [...previous, ...current];\n }, []);\n const rights = [...new Set(rightWithDuplicates)];\n // for each user/group/bookmark add a record\n if (rights.length > 0) {\n if (right.type === \"user\") {\n payload.users[right.id] = rights;\n } else if (right.type === \"group\") {\n payload.groups[right.id] = rights;\n } else {\n payload.bookmarks[right.id] = rights;\n }\n }\n }\n const resourceService = this.context.resource(app, app);\n const url = resourceService.getSaveShareUrl(resourceId);\n //clear cache for rights\n this.cache.clearCache(resourceService.getShareReadUrl(resourceId));\n const res = await this.http.putJson<PutShareResponse>(url, payload);\n return res;\n }\n\n async getActionsForApp(app: string): Promise<ShareRightAction[]> {\n // get normalized rights infos\n const sharingRights = await this.cache.httpGetJson<SharingRight>(\n \"/infra/public/json/sharing-rights.json\",\n );\n // get mapping for rights\n const sharingMap = await this.getShareMapping(app);\n const rightActions: ShareRightAction[] = Object.keys(sharingRights)\n .map((key) => {\n const value = sharingRights[key as ShareRightActionDisplayName];\n return {\n displayName: key as ShareRightActionDisplayName,\n id: key as ShareRightActionDisplayName,\n priority: value.priority,\n requires: value.requires,\n };\n })\n .filter((right) => {\n // if app does not manage this role => remove it\n if (sharingMap[right.id as ShareRightActionDisplayName]?.length > 0) {\n return true;\n }\n return false;\n })\n .sort((a, b) => {\n // sort by priority ASC\n return a.priority - b.priority;\n });\n return rightActions;\n }\n}\n","export class MimeTypeUtils {\n static INSTANCE = new MimeTypeUtils();\n private wordExtensions = new Set<string>();\n private excelExtensions = new Set<string>();\n private pptExtensions = new Set<string>();\n private fileExtensionMap = new Map<string, string>();\n private csvContentType = new Set<string>();\n private csvExtensions = new Set<string>();\n private txtExtensions = new Set<string>();\n public PDF = \"application/pdf\";\n public OCTET_STREAM = \"application/octet-stream\";\n\n constructor() {\n //txt\n this.txtExtensions.add(\"txt\");\n //word extensions\n this.wordExtensions.add(\"doc\");\n this.wordExtensions.add(\"dot\");\n this.wordExtensions.add(\"docx\");\n this.wordExtensions.add(\"dotx\");\n this.wordExtensions.add(\"docm\");\n this.wordExtensions.add(\"dotm\");\n this.wordExtensions.add(\"odt\");\n this.wordExtensions.add(\"ott\");\n this.wordExtensions.add(\"oth\");\n this.wordExtensions.add(\"odm\");\n //excel extensions\n this.excelExtensions.add(\"xls\");\n this.excelExtensions.add(\"xlt\");\n this.excelExtensions.add(\"xla\");\n this.excelExtensions.add(\"xlsx\");\n this.excelExtensions.add(\"xltx\");\n this.excelExtensions.add(\"xlsm\");\n this.excelExtensions.add(\"xltm\");\n this.excelExtensions.add(\"xlam\");\n this.excelExtensions.add(\"xlsb\");\n this.excelExtensions.add(\"ods\");\n this.excelExtensions.add(\"ots\");\n //ppt extensions\n this.pptExtensions.add(\"ppt\");\n this.pptExtensions.add(\"pot\");\n this.pptExtensions.add(\"pps\");\n this.pptExtensions.add(\"ppa\");\n this.pptExtensions.add(\"pptx\");\n this.pptExtensions.add(\"potx\");\n this.pptExtensions.add(\"ppsx\");\n this.pptExtensions.add(\"ppam\");\n this.pptExtensions.add(\"pptm\");\n this.pptExtensions.add(\"potm\");\n this.pptExtensions.add(\"ppsm\");\n this.pptExtensions.add(\"odp\");\n this.pptExtensions.add(\"otp\");\n //csv extensions\n this.csvExtensions.add(\"csv\");\n // MS Office\n this.fileExtensionMap.set(\"doc\", \"application/msword\");\n this.fileExtensionMap.set(\"dot\", \"application/msword\");\n this.fileExtensionMap.set(\n \"docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n );\n this.fileExtensionMap.set(\n \"dotx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\",\n );\n this.fileExtensionMap.set(\n \"docm\",\n \"application/vnd.ms-word.document.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"dotm\",\n \"application/vnd.ms-word.template.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\"xls\", \"application/vnd.ms-excel\");\n this.fileExtensionMap.set(\"xlt\", \"application/vnd.ms-excel\");\n this.fileExtensionMap.set(\"xla\", \"application/vnd.ms-excel\");\n this.fileExtensionMap.set(\n \"xlsx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n );\n this.fileExtensionMap.set(\n \"xltx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\",\n );\n this.fileExtensionMap.set(\n \"xlsm\",\n \"application/vnd.ms-excel.sheet.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"xltm\",\n \"application/vnd.ms-excel.template.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"xlam\",\n \"application/vnd.ms-excel.addin.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"xlsb\",\n \"application/vnd.ms-excel.sheet.binary.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\"ppt\", \"application/vnd.ms-powerpoint\");\n this.fileExtensionMap.set(\"pot\", \"application/vnd.ms-powerpoint\");\n this.fileExtensionMap.set(\"pps\", \"application/vnd.ms-powerpoint\");\n this.fileExtensionMap.set(\"ppa\", \"application/vnd.ms-powerpoint\");\n this.fileExtensionMap.set(\n \"pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n );\n this.fileExtensionMap.set(\n \"potx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.template\",\n );\n this.fileExtensionMap.set(\n \"ppsx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\",\n );\n this.fileExtensionMap.set(\n \"ppam\",\n \"application/vnd.ms-powerpoint.addin.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"pptm\",\n \"application/vnd.ms-powerpoint.presentation.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"potm\",\n \"application/vnd.ms-powerpoint.presentation.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"ppsm\",\n \"application/vnd.ms-powerpoint.slideshow.macroEnabled.12\",\n );\n // Open Office\n this.fileExtensionMap.set(\"odt\", \"application/vnd.oasis.opendocument.text\");\n this.fileExtensionMap.set(\n \"ott\",\n \"application/vnd.oasis.opendocument.text-template\",\n );\n this.fileExtensionMap.set(\n \"oth\",\n \"application/vnd.oasis.opendocument.text-web\",\n );\n this.fileExtensionMap.set(\n \"odm\",\n \"application/vnd.oasis.opendocument.text-master\",\n );\n this.fileExtensionMap.set(\n \"odg\",\n \"application/vnd.oasis.opendocument.graphics\",\n );\n this.fileExtensionMap.set(\n \"otg\",\n \"application/vnd.oasis.opendocument.graphics-template\",\n );\n this.fileExtensionMap.set(\n \"odp\",\n \"application/vnd.oasis.opendocument.presentation\",\n );\n this.fileExtensionMap.set(\n \"otp\",\n \"application/vnd.oasis.opendocument.presentation-template\",\n );\n this.fileExtensionMap.set(\n \"ods\",\n \"application/vnd.oasis.opendocument.spreadsheet\",\n );\n this.fileExtensionMap.set(\n \"ots\",\n \"application/vnd.oasis.opendocument.spreadsheet-template\",\n );\n this.fileExtensionMap.set(\n \"odc\",\n \"application/vnd.oasis.opendocument.chart\",\n );\n this.fileExtensionMap.set(\n \"odf\",\n \"application/vnd.oasis.opendocument.formula\",\n );\n this.fileExtensionMap.set(\n \"odb\",\n \"application/vnd.oasis.opendocument.database\",\n );\n this.fileExtensionMap.set(\n \"odi\",\n \"application/vnd.oasis.opendocument.image\",\n );\n this.fileExtensionMap.set(\"oxt\", \"application/vnd.openofficeorg.extension\");\n //\n this.fileExtensionMap.set(\"txt\", \"text/plain\");\n // CSV\n this.csvContentType.add(\"text/comma-separated-values\");\n this.csvContentType.add(\"text/csv\");\n this.csvContentType.add(\"application/csv\");\n }\n\n getContentTypeForExtension(extension: string): string | undefined {\n if (this.fileExtensionMap.has(extension)) {\n return this.fileExtensionMap.get(extension);\n }\n return undefined;\n }\n\n getExtensionForContentType(contentType: string): string | null {\n for (const key of Array.from(this.fileExtensionMap.keys())) {\n const value = this.fileExtensionMap.get(key);\n if ((value || \"\").toLowerCase() == (contentType || \"\").toLowerCase()) {\n return key;\n }\n }\n return null;\n }\n\n isWordLike(contentType: string, originalExt?: string): boolean {\n const extension = this.getExtensionForContentType(contentType);\n if (extension) {\n return this.wordExtensions.has(extension);\n }\n if (contentType == this.OCTET_STREAM && originalExt) {\n return this.wordExtensions.has(originalExt);\n }\n return false;\n }\n\n isExcelLike(contentType: string, originalExt?: string): boolean {\n const extension = this.getExtensionForContentType(contentType);\n if (extension) {\n return this.excelExtensions.has(extension);\n }\n if (contentType == this.OCTET_STREAM && originalExt) {\n return this.excelExtensions.has(originalExt);\n }\n return false;\n }\n\n isCsvLike(contentType: string, originalExt?: string): boolean {\n const isCsv = this.csvContentType.has(contentType);\n if (isCsv) {\n return true;\n }\n if (contentType == this.OCTET_STREAM && originalExt) {\n return this.csvExtensions.has(originalExt);\n }\n return false;\n }\n\n isPowerpointLike(contentType: string, originalExt?: string): boolean {\n const extension = this.getExtensionForContentType(contentType);\n if (extension) {\n return this.pptExtensions.has(extension);\n }\n if (contentType == this.OCTET_STREAM && originalExt) {\n return this.pptExtensions.has(originalExt);\n }\n return false;\n }\n\n isTxtLike(contentType: string, originalExt?: string): boolean {\n const extension = this.getExtensionForContentType(contentType);\n if (extension) {\n return this.txtExtensions.has(extension);\n }\n if (contentType == this.OCTET_STREAM && originalExt) {\n return this.txtExtensions.has(originalExt);\n }\n return false;\n }\n}\n","import { MimeTypeUtils } from \"./MimeTypeUtils\";\n\nexport class FileTypeUtils {\n private static fileTypes: ContentTypeToFileType[] = [];\n static registerContentTypeToFileType(mapper: ContentTypeToFileType) {\n this.fileTypes.push(mapper);\n }\n static getFileType(\n fileType: string,\n previewRole: boolean = false,\n extension?: string,\n ) {\n extension && (extension = extension.trim());\n if (!fileType) return \"unknown\";\n if (!this.fileTypes) {\n console.warn(\"[Element.role] should not have emptyRoles\", this);\n }\n for (let FileType of this.fileTypes || []) {\n const role = FileType(fileType, previewRole);\n if (role) {\n return role;\n }\n }\n const types = {\n csv: function (type: string): boolean {\n if (MimeTypeUtils.INSTANCE.isCsvLike(type, extension)) {\n return true;\n }\n return false;\n },\n doc: function (type: string): boolean {\n if (MimeTypeUtils.INSTANCE.isWordLike(type, extension)) {\n return true;\n }\n return (\n type.indexOf(\"document\") !== -1 &&\n type.indexOf(\"wordprocessing\") !== -1\n );\n },\n xls: function (type: string): boolean {\n if (MimeTypeUtils.INSTANCE.isExcelLike(type, extension)) {\n return true;\n }\n return (\n (type.indexOf(\"document\") !== -1 &&\n type.indexOf(\"spreadsheet\") !== -1) ||\n type.indexOf(\"ms-excel\") !== -1\n );\n },\n img: function (type: string): boolean {\n return type.indexOf(\"image\") !== -1;\n },\n pdf: function (type: string): boolean {\n return type.indexOf(\"pdf\") !== -1 || type === \"application/x-download\";\n },\n ppt: function (type: string): boolean {\n if (MimeTypeUtils.INSTANCE.isPowerpointLike(type, extension)) {\n return true;\n }\n return (\n (type.indexOf(\"document\") !== -1 &&\n type.indexOf(\"presentation\") !== -1) ||\n type.indexOf(\"powerpoint\") !== -1\n );\n },\n txt: function (type: string): boolean {\n return MimeTypeUtils.INSTANCE.isTxtLike(type, extension);\n },\n video: function (type: string): boolean {\n return type.indexOf(\"video\") !== -1;\n },\n audio: function (type: string): boolean {\n return type.indexOf(\"audio\") !== -1;\n },\n zip: function (type: string): boolean {\n return (\n type.indexOf(\"zip\") !== -1 ||\n type.indexOf(\"rar\") !== -1 ||\n type.indexOf(\"tar\") !== -1 ||\n type.indexOf(\"7z\") !== -1\n );\n },\n } as { [key: string]: (type: string) => boolean };\n\n for (let type in types) {\n if (types[type](fileType)) {\n return type;\n }\n }\n\n return \"unknown\";\n }\n}\n\nexport type ContentTypeToFileType = (\n contentType: string,\n previewRole: boolean,\n) => string | undefined;\n","import { FileTypeUtils } from \"../utils/FileTypeUtils\";\nimport { OdeServices } from \"../services/OdeServices\";\nimport { WorkspaceElement } from \"./interface\";\n\nexport class WorkspaceService {\n constructor(private context: OdeServices) {}\n private get http() {\n return this.context.http();\n }\n async saveFile(\n file: Blob | File,\n params?: {\n parentId?: string;\n visibility?: \"public\" | \"protected\";\n application?: string;\n },\n ) {\n //prepare metadata\n const tmpName = (file as File).name || \"\";\n const nameSplit = tmpName.split(\".\");\n const contentType = file.type || \"application/octet-stream\";\n const extension =\n nameSplit.length > 1 ? nameSplit[nameSplit.length - 1] : \"\";\n const metadata = {\n \"content-type\": contentType,\n filename: tmpName,\n size: file.size,\n extension,\n role: FileTypeUtils.getFileType(contentType, false, extension),\n };\n const name = tmpName.replace(\".\" + metadata.extension, \"\");\n const fullname = metadata.extension\n ? name + \".\" + metadata.extension\n : name;\n //prepare form data\n const formData = new FormData();\n formData.append(\"file\", file, fullname);\n //add query params\n const args = [];\n if (params?.visibility === \"public\" || params?.visibility === \"protected\") {\n args.push(`${params.visibility}=true`);\n }\n if (params?.application) {\n args.push(`application=${params.application}`);\n }\n if (metadata.role === \"img\") {\n args.push(`quality=1`);\n }\n if (params?.parentId) {\n args.push(`parentId=${params.parentId}`);\n }\n //make query\n const res = await this.http.postFile<WorkspaceElement>(\n `/workspace/document?${args.join(\"&\")}`,\n formData,\n );\n return res;\n }\n}\n","import { notify, Promisified } from \"../notify/Framework\";\nimport { AddBundleCallback, IIdiom } from \"./interfaces\";\nimport { IOdeServices } from \"../services/OdeServices\";\nimport { App } from \"../globals\";\n\nconst bundle: { [key: string]: string } = {};\nconst promises: { [path: string]: Promise<void> } = {};\n\nexport const defaultDiacriticsRemovalMap = [\n {\n base: \"A\",\n letters:\n /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g,\n },\n { base: \"AA\", letters: /[\\uA732]/g },\n { base: \"AE\", letters: /[\\u00C6\\u01FC\\u01E2]/g },\n { base: \"AO\", letters: /[\\uA734]/g },\n { base: \"AU\", letters: /[\\uA736]/g },\n { base: \"AV\", letters: /[\\uA738\\uA73A]/g },\n { base: \"AY\", letters: /[\\uA73C]/g },\n {\n base: \"B\",\n letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g,\n },\n {\n base: \"C\",\n letters:\n /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g,\n },\n {\n base: \"D\",\n letters:\n /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g,\n },\n { base: \"DZ\", letters: /[\\u01F1\\u01C4]/g },\n { base: \"Dz\", letters: /[\\u01F2\\u01C5]/g },\n {\n base: \"E\",\n letters:\n /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g,\n },\n { base: \"F\", letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g },\n {\n base: \"G\",\n letters:\n /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g,\n },\n {\n base: \"H\",\n letters:\n /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g,\n },\n {\n base: \"I\",\n letters:\n /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g,\n },\n { base: \"J\", letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g },\n {\n base: \"K\",\n letters:\n /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g,\n },\n {\n base: \"L\",\n letters:\n /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g,\n },\n { base: \"LJ\", letters: /[\\u01C7]/g },\n { base: \"Lj\", letters: /[\\u01C8]/g },\n { base: \"M\", letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g },\n {\n base: \"N\",\n letters:\n /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g,\n },\n { base: \"NJ\", letters: /[\\u01CA]/g },\n { base: \"Nj\", letters: /[\\u01CB]/g },\n {\n base: \"O\",\n letters:\n /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g,\n },\n { base: \"OI\", letters: /[\\u01A2]/g },\n { base: \"OO\", letters: /[\\uA74E]/g },\n { base: \"OU\", letters: /[\\u0222]/g },\n {\n base: \"P\",\n letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g,\n },\n { base: \"Q\", letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g },\n {\n base: \"R\",\n letters:\n /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g,\n },\n {\n base: \"S\",\n letters:\n /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g,\n },\n {\n base: \"T\",\n letters:\n /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g,\n },\n { base: \"TZ\", letters: /[\\uA728]/g },\n {\n base: \"U\",\n letters:\n /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g,\n },\n { base: \"V\", letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g },\n { base: \"VY\", letters: /[\\uA760]/g },\n {\n base: \"W\",\n letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g,\n },\n { base: \"X\", letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g },\n {\n base: \"Y\",\n letters:\n /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g,\n },\n {\n base: \"Z\",\n letters:\n /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g,\n },\n {\n base: \"a\",\n letters:\n /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g,\n },\n { base: \"aa\", letters: /[\\uA733]/g },\n { base: \"ae\", letters: /[\\u00E6\\u01FD\\u01E3]/g },\n { base: \"ao\", letters: /[\\uA735]/g },\n { base: \"au\", letters: /[\\uA737]/g },\n { base: \"av\", letters: /[\\uA739\\uA73B]/g },\n { base: \"ay\", letters: /[\\uA73D]/g },\n {\n base: \"b\",\n letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g,\n },\n {\n base: \"c\",\n letters:\n /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g,\n },\n {\n base: \"d\",\n letters:\n /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g,\n },\n { base: \"dz\", letters: /[\\u01F3\\u01C6]/g },\n {\n base: \"e\",\n letters:\n /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g,\n },\n { base: \"f\", letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g },\n {\n base: \"g\",\n letters:\n /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g,\n },\n {\n base: \"h\",\n letters:\n /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g,\n },\n { base: \"hv\", letters: /[\\u0195]/g },\n {\n base: \"i\",\n letters:\n /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g,\n },\n { base: \"j\", letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g },\n {\n base: \"k\",\n letters:\n /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g,\n },\n {\n base: \"l\",\n letters:\n /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g,\n },\n { base: \"lj\", letters: /[\\u01C9]/g },\n { base: \"m\", letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g },\n {\n base: \"n\",\n letters:\n /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g,\n },\n { base: \"nj\", letters: /[\\u01CC]/g },\n {\n base: \"o\",\n letters:\n /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g,\n },\n { base: \"oi\", letters: /[\\u01A3]/g },\n { base: \"ou\", letters: /[\\u0223]/g },\n { base: \"oo\", letters: /[\\uA74F]/g },\n {\n base: \"p\",\n letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g,\n },\n { base: \"q\", letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g },\n {\n base: \"r\",\n letters:\n /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g,\n },\n {\n base: \"s\",\n letters:\n /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g,\n },\n {\n base: \"t\",\n letters:\n /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g,\n },\n { base: \"tz\", letters: /[\\uA729]/g },\n {\n base: \"u\",\n letters:\n /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g,\n },\n { base: \"v\", letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g },\n { base: \"vy\", letters: /[\\uA761]/g },\n {\n base: \"w\",\n letters:\n /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g,\n },\n { base: \"x\", letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g },\n {\n base: \"y\",\n letters:\n /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g,\n },\n {\n base: \"z\",\n letters:\n /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g,\n },\n];\n\nexport class IdiomService implements IIdiom {\n constructor(private context: IOdeServices) {}\n\n private get http() {\n return this.context.http();\n }\n\n async getIdiom(currentLanguage: string, app: App): Promise<any> {\n await Promise.all([\n this.addBundlePromise(currentLanguage, \"/i18n\"),\n this.addBundlePromise(currentLanguage, `/${app}/i18n`),\n ]);\n }\n\n translate(key: string, params?: { [param: string]: any }): string {\n key = key ?? \"\";\n let txt: string = bundle[key] === undefined ? key : bundle[key];\n if (params && typeof params === \"object\") {\n for (let member in params) {\n if (typeof params[member] !== \"undefined\") {\n txt = txt.replace(\n new RegExp(\"\\\\${\" + member + \"}\", \"g\"),\n \"\" + params[member],\n );\n }\n }\n }\n return txt;\n }\n\n addBundlePromise(currentLanguage: string, path: string): Promise<void> {\n return this.loadBundlePromise(currentLanguage, path);\n }\n\n addBundle(\n currentLanguage: string,\n path: string,\n callback?: AddBundleCallback,\n ): void {\n this.loadBundle(currentLanguage, path, callback);\n }\n\n loadBundlePromise(currentLanguage: string, path: string): Promise<void> {\n this.loadBundle(currentLanguage, path);\n return promises[path];\n }\n\n private loadBundle(\n currentLanguage: string,\n path: string,\n callback?: AddBundleCallback,\n ): void {\n // load bundle only once\n const oldPromise = promises[path];\n if (oldPromise) {\n if (callback) {\n oldPromise.then(callback).catch(callback);\n }\n } else {\n // Create a Promise now, to avoid loading a bundle more than once.\n const load = new Promisified<void>();\n promises[path] = load.promise;\n // Then load the bundle.\n const params: any = {};\n // Force requested language to user's choice.\n if (currentLanguage) {\n params[\"Accept-Language\"] = currentLanguage;\n }\n this.http\n .get<string>(path, { headers: params })\n .then((response) => {\n Object.assign(bundle, response);\n if (typeof callback === \"function\") {\n callback();\n }\n load.resolve();\n })\n .catch((e) => {\n if (typeof callback === \"function\") {\n callback();\n }\n load.reject();\n });\n }\n }\n\n addTranslations(folder: string, callback?: AddBundleCallback): void {\n // Load translations once language is known.\n notify.onLangReady().promise.then((lang) => {\n this.loadBundle(lang, folder + \"/\" + lang + \".json\", callback);\n });\n }\n\n addAllTranslations(folders: string[]): Promise<void> {\n if (folders && folders.length > 0) {\n // Load all translations once language is known.\n return notify\n .onLangReady()\n .promise.then((lang) =>\n Promise.all(\n folders.map((folder) =>\n this.loadBundlePromise(lang, folder + \"/\" + lang + \".json\"),\n ),\n ),\n )\n .then(() => {});\n } else {\n return Promise.reject();\n }\n }\n\n addKeys(keys: any): void {\n for (var property in keys) {\n if (typeof bundle[property] !== \"string\")\n bundle[property] = keys[property];\n }\n }\n\n removeAccents(str: string): string {\n for (var i = 0; i < defaultDiacriticsRemovalMap.length; i++) {\n str = str.replace(\n defaultDiacriticsRemovalMap[i].letters,\n defaultDiacriticsRemovalMap[i].base,\n );\n }\n return str;\n }\n}\n","import { ParamsByTrackingSystem, XitiConf } from \"../configure/Analytics\";\nimport { configure } from \"../configure/Framework\";\nimport { App, ERROR_CODE } from \"../globals\";\nimport {\n IUserInfo,\n IWebApp,\n IXitiTrackingParams,\n UserProfile,\n} from \"../index.cjs\";\nimport { IOdeServices } from \"../services/OdeServices\";\n\ndeclare var ATInternet: any;\nlet ATTag: any;\n\nexport class AnalyticsService {\n constructor(private context: IOdeServices) {}\n\n private get http() {\n return this.context.http();\n }\n\n private get session() {\n return this.context.session();\n }\n\n /**\n * Xiti tracker for page loading.\n * @param locationPath\n * @param app\n */\n public async trackPageLoad(locationPath: string, app: IWebApp) {\n const [xitiTrackingParams] = await Promise.all([\n // get Xiti configuration\n this.getXitiConfig(app.name.toLowerCase() as App),\n // load Xiti javascript file\n this.loadXitiScript(),\n ]);\n if (!xitiTrackingParams) return;\n if (!ATInternet) return;\n\n // SERVICE\n let SERVICE = xitiTrackingParams.LIBELLE_SERVICE.default || null;\n for (let prop in xitiTrackingParams.LIBELLE_SERVICE) {\n if (prop !== \"default\" && locationPath.indexOf(prop) >= 0) {\n SERVICE = xitiTrackingParams.LIBELLE_SERVICE[prop];\n break;\n }\n }\n ATTag = new ATInternet.Tracker.Tag({ site: xitiTrackingParams.STRUCT_ID });\n ATTag.setProps(\n {\n SERVICE: SERVICE,\n TYPE: xitiTrackingParams.TYPE,\n OUTIL: xitiTrackingParams.OUTIL,\n UAI: xitiTrackingParams.STRUCT_UAI,\n PROJET: xitiTrackingParams.PROJET,\n EXPLOITANT: xitiTrackingParams.EXPLOITANT,\n PLATEFORME: xitiTrackingParams.PLATFORME,\n PROFIL: xitiTrackingParams.PROFILE,\n },\n true,\n );\n ATTag.identifiedVisitor.set({\n id: xitiTrackingParams.ID_PERSO,\n category: xitiTrackingParams.PROFILE,\n });\n ATTag.page.set({\n name: app?.prefix === \"userbook\" ? \"directory\" : app?.prefix,\n chapter1: \"\",\n chapter2: \"\",\n chapter3: \"\",\n level2: xitiTrackingParams.STRUCT_UAI,\n });\n ATTag.dispatch();\n }\n\n private async getXitiConfig(\n app: App,\n ): Promise<IXitiTrackingParams | undefined> {\n const [analyticsConf, xitiConfig] = await Promise.all([\n this.http.get<ParamsByTrackingSystem>(\"/analyticsConf\"),\n //FIXME change servers config to only keep the \"all-in-one\" query to /analyticsConf.\n this.http.get<XitiConf>(\"/xiti/config\"),\n ]);\n\n if (!analyticsConf?.type) {\n // Data seems corrupted\n throw ERROR_CODE.MALFORMED_DATA;\n }\n\n if (xitiConfig?.active) {\n // Add XiTi config to the resulting object, if active.\n analyticsConf.xiti = await this.getXitiTrackingParams(xitiConfig, app);\n }\n\n return analyticsConf.xiti;\n }\n\n private async loadXitiScript() {\n if (typeof ATInternet === \"undefined\") {\n const scriptPath = \"/xiti/public/js/lib/smarttag_ENT.js\";\n const response = await this.http.get<string>(scriptPath, {\n headers: { Accept: \"application/javascript\" },\n });\n if (this.http.latestResponse.status != 200) {\n throw \"Error while loading XiTi script\";\n }\n eval(response);\n }\n }\n\n private async getXitiTrackingParams(\n xitiConf: XitiConf,\n app: App,\n ): Promise<IXitiTrackingParams | undefined> {\n if (!xitiConf.structureMap || !app) return;\n\n const user: IUserInfo | undefined = await this.session.getUser();\n const userProfile: UserProfile = await this.session.getUserProfile();\n\n let structure;\n if (!user?.structures) return;\n\n for (let struc of user.structures) {\n const s = xitiConf.structureMap[struc];\n if (s && s.collectiviteId && s.UAI) {\n structure = s;\n break;\n }\n }\n if (!structure || !structure.active) return;\n const appConf = await configure.Platform.apps.getPublicConf(app);\n if (!appConf) return;\n const appXitiConf = appConf.xiti;\n if (!appXitiConf) return;\n if (!appXitiConf.LIBELLE_SERVICE) return;\n if (!structure.UAI) return; // Keeps the transpiler happy\n\n // ID_PERSO\n function pseudonymization(stringId: string): string {\n let buffer = \"\";\n for (let i = 0; i < stringId.length; i++) {\n buffer += stringId.charCodeAt(i);\n }\n return buffer;\n }\n\n // PROFIL\n const profileMap = {\n Student: \"ELEVE\",\n Teacher: \"ENSEIGNANT\",\n Relative: \"PARENT\",\n Personnel: \"ADMIN_VIE_SCOL_TECH\",\n Guest: \"AUTRE\",\n };\n\n return {\n LIBELLE_SERVICE: appXitiConf.LIBELLE_SERVICE, // Which property of LIBELLE_SERVICE to use depends on the frontend.\n TYPE: appXitiConf.OUTIL ? \"TIERS\" : \"NATIF\",\n OUTIL: appXitiConf.OUTIL ? appXitiConf.OUTIL : \"\",\n STRUCT_ID: structure.collectiviteId,\n STRUCT_UAI: structure.UAI,\n PROJET: structure.projetId ? structure.projetId : xitiConf.ID_PROJET,\n EXPLOITANT: xitiConf.ID_EXPLOITANT,\n PLATFORME: structure.plateformeId\n ? structure.plateformeId\n : xitiConf.ID_PLATEFORME,\n ID_PERSO: pseudonymization(user.userId),\n PROFILE:\n userProfile && userProfile.length > 0\n ? profileMap[userProfile[0]] ?? \"\"\n : \"\",\n };\n }\n}\n","import { CacheService } from \"../cache/Service\";\nimport { ConfService } from \"../configure/Service\";\nimport { DirectoryService } from \"../directory/Service\";\nimport { HttpService } from \"../transport/Service\";\nimport { ResourceService } from \"../resources/ResourceService\";\nimport { RightService } from \"../rights/Service\";\nimport { SessionService } from \"../session/Service\";\nimport { ShareService } from \"../share/Service\";\nimport { WorkspaceService } from \"../workspace/Service\";\nimport { IdiomService } from \"../idiom/Service\";\nimport { AnalyticsService } from \"../analytics/Service\";\n\nexport interface IOdeServices {\n analytics(): AnalyticsService;\n cache(): CacheService;\n conf(): ConfService;\n directory(): DirectoryService;\n http(): HttpService;\n idiom(): IdiomService;\n resource(application: string, resourceType?: string): ResourceService;\n rights(): RightService;\n session(): SessionService;\n share(): ShareService;\n workspace(): WorkspaceService;\n}\n\nexport class OdeServices implements IOdeServices {\n private _analytics: AnalyticsService;\n private _cache: CacheService;\n private _conf: ConfService;\n private _directory: DirectoryService;\n private _http: HttpService;\n private _idiom: IdiomService;\n private _rights: RightService;\n private _session: SessionService;\n private _share: ShareService;\n private _workspace: WorkspaceService;\n\n constructor() {\n this._analytics = new AnalyticsService(this);\n this._cache = new CacheService(this);\n this._conf = new ConfService(this);\n this._directory = new DirectoryService(this);\n this._http = new HttpService(this);\n this._idiom = new IdiomService(this);\n this._rights = new RightService(this);\n this._session = new SessionService(this);\n this._share = new ShareService(this);\n this._workspace = new WorkspaceService(this);\n }\n\n analytics() {\n return this._analytics;\n }\n\n cache() {\n return this._cache;\n }\n\n conf() {\n return this._conf;\n }\n\n directory(): DirectoryService {\n return this._directory;\n }\n\n http() {\n return this._http;\n }\n\n idiom() {\n return this._idiom;\n }\n\n resource(application: string, resourceType?: string): ResourceService {\n if (!resourceType) {\n return ResourceService.findMainService({ application }, this);\n }\n return ResourceService.findService({ application, resourceType }, this);\n }\n\n rights() {\n return this._rights;\n }\n\n session() {\n return this._session;\n }\n\n share() {\n return this._share;\n }\n\n workspace() {\n return this._workspace;\n }\n}\n","// TODO should be loaded from app in future\nimport \"../resources/BlogResourceService\";\nimport \"../resources/MindmapResourceService\";\n\nimport { IOdeServices, OdeServices } from \"./OdeServices\";\n\nexport const odeServices: IOdeServices = new OdeServices();\n\nexport * from \"../directory/interface\";\nexport * from \"../resources/interface\";\nexport * from \"../rights/interface\";\nexport * from \"../share/interface\";\nexport * from \"../workspace/interface\";\n"],"names":["d","b","p","__","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","body","_","t","f","y","g","verb","n","v","op","o","s","m","i","r","ar","error","to","from","il","j","q","a","resume","settle","fulfill","isFunction","createImpl","_super","instance","ctorFunc","errors","err","arr","item","index","Subscription","initialTeardown","e_1","_a","e_2","_b","_parentage","_parentage_1","_parentage_1_1","parent_1","e_1_1","_teardowns","_teardowns_1","_teardowns_1_1","teardown_1","e_2_1","teardown","parent","empty","args","_i","delegate","handle","onUnhandledError","kind","cb","isRoot","errorThrown","Subscriber","destination","_this","next","complete","SafeSubscriber","observerOrNext","context_1","handler","notification","subscriber","onStoppedNotification","x","fns","input","prev","fn","Observable","subscribe","operator","observable","source","sink","promiseCtor","subscription","Symbol_observable","operations","init","liftedSource","OperatorSubscriber","onNext","onComplete","onError","onFinalize","closed","connection","refCounter","sharedConnection","conn","ConnectableObservable","subjectFactory","subject","_connection","subject_1","higherOrderRefCount","callback","request","cancel","timestamp","timestampProvider","schedule","provider","start","run","now","Subject","copy","copy_1","copy_1_1","observer","observers","hasError","isStopped","thrownError","AnonymousSubject","BehaviorSubject","_value","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","_buffer","_infiniteTimeWindow","adjustedBufferSize","last","AsyncSubject","_hasValue","_isComplete","Action","scheduler","work","state","delay","AsyncAction","id","_id","_scheduler","_delay","errored","errorValue","actions","AsapAction","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","action","AsapScheduler","count","QueueAction","QueueScheduler","AnimationFrameAction","AnimationFrameScheduler","VirtualTimeScheduler","maxFrames","VirtualAction","sub","execute","iterator","Symbol_iterator","done","obj","readableStream","reader","obs","array","promise","iterable","iterable_1","iterable_1_1","asyncIterable","process","asyncIterable_1","asyncIterable_1_1","defaultValue","errorOrErrorFactory","errorFactory","NotificationKind","Notification","nextHandler","errorHandler","completeHandler","nextOrObserver","_c","_d","config","hasConfig","message","info","schedulerArg","first","each","_with","meta","originalSourceSubscription","timerSubscription","lastValue","seen","startTimer","project","isArray","isNodeStyle","callbackFunc","resultSelector","uninitialized","subs","isAsync_1","isComplete_1","results","first_1","keys","key","values","combineLatest","observables","valueTransform","length","active","remainingFirstValues","_loop_1","hasFirstValue","concurrent","onBeforeNext","expand","innerSubScheduler","additionalTeardown","buffer","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","ii","concat","observableFactory","DEFAULT_CONFIG","connector","resetOnDisconnect","sources","remainingCompletions","remainingEmissions","sourceIndex","hasValue","target","eventName","options","methodName","add","remove","subTarget","addHandler","removeHandler","retValue","initialStateOrOptions","condition","iterate","resultSelectorOrScheduler","initialState","gen","trueResult","falseResult","dueTime","intervalOrScheduler","asyncScheduler","intervalDuration","due","period","merge","onErrorResumeNext","nextSources","remaining","subscribeNext","nextSource","innerSub","onErrorResumeNextWith","pred","predicate","subscriptions","end","resourceFactory","resource","zip","buffers","completed","durationSelector","durationSubscriber","endDuration","cleanupDuration","duration","closingNotifier","currentBuffer","bufferSize","startBufferEvery","toEmit","buffers_1","buffers_1_1","toEmit_1","toEmit_1_1","e_3","buffers_2","buffers_2_1","e_3_1","bufferTimeSpan","otherArgs","bufferCreationInterval","maxBufferSize","bufferRecords","restartOnEmit","emit","record","startBuffer","record_1","bufferTimeSubscriber","recordsCopy","recordsCopy_1","recordsCopy_1_1","openings","closingSelector","openValue","closingSubscription","emitBuffer","closingSubscriber","openBuffer","selector","syncUnsub","handledResult","accumulator","seed","hasSeed","emitOnNext","emitBeforeComplete","hasState","joinFn","otherSources","innerObservable","subscribable","total","activeTask","lastTime","emitWhenIdle","targetTime","delayDurationSelector","subscriptionDelay","keySelector","flushes","distinctKeys","comparator","previousKey","currentKey","compare","hasDefaultValue","inner","outerValue","findIndex","elementOrOptions","element","groups","notify","handleError","consumer","groupBySourceSubscriber","key_1","group_1","grouped","createGroupedObservable","durationSubscriber_1","groupSubject","groupSubscriber","GroupBySubscriber","buffer_1","buffer_1_1","comparer","subjectOrSubjectFactory","hasPrev","properties","currentProp","initialValue","windowTime","selectorOrScheduler","soFar","subscribeForRepeat","notifier","syncResub","completions$","isNotifierComplete","isMainComplete","getCompletionSubject","subscribeForRepeatWhen","configOrCount","resetOnSuccess","subscribeForRetry","resub_1","notifierSubscriber_1","errors$","subscribeForRetryWhen","compareTo","aState","bState","isEqual","createSubscriber","selfState","otherState","sequenceEqualSubscriber","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","refCount","hasCompleted","hasErrored","cancelReset","reset","resetAndUnsubscribe","dest","on","configOrBufferSize","singleValue","seenValue","skipCount","ring","valueIndex","oldValue","taking","skipSubscriber","innerSubscriber","innerIndex","outerIndex","inclusive","tapObserver","isUnsub","leading","trailing","sendValue","throttled","endThrottling","send","cleanupThrottling","startThrottle","duration$","current","TimeInterval","interval","withObservable","window","windowBoundaries","windowSubject","windowSize","startWindowEvery","startEvery","windows","starts","windows_1","windows_1_1","window_1","c","window_2","windowTimeSpan","windowCreationInterval","maxWindowSize","windowRecords","restartOnClose","closeWindow","startWindow","loop","terminate","windowsCopy","windowsCopy_1","windowsCopy_1_1","openWindow","inputs","len","otherValues","ready","zipStatic","otherInputs","__publicField","_resolve","_reject","reason","asyncDataName","bind","require$$0","val","prototype","str","l","assignValue","content","utils","buildURL","url","params","paramsSerializer","serializedParams","parts","hashmarkIndex","InterceptorManager","h","transformData","data","headers","isCancel","normalizeHeaderName","normalizedName","name","code","response","enhanceError","createError","validateStatus","expires","path","domain","secure","cookie","match","baseURL","relativeURL","isAbsoluteURL","combineURLs","require$$1","requestedURL","ignoreDuplicateOf","parsed","line","msie","urlParsingNode","originURL","resolveURL","href","requestURL","cookies","require$$2","require$$3","buildFullPath","require$$4","parseHeaders","require$$5","isURLSameOrigin","require$$6","require$$7","requestData","requestHeaders","username","password","fullPath","responseHeaders","responseData","timeoutErrorMessage","xsrfValue","adapter","defaults","status","method","dispatchRequest","mergeConfig","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","prop","axiosKeys","otherKeys","Axios","instanceConfig","chain","interceptor","Cancel","CancelToken","executor","resolvePromise","token","payload","defaultConfig","context","axios","promises","require$$8","require$$9","axiosModule","axios_1","module","loadedScripts","cdnUrl","CDN_DOMAIN","originalURL","json","variableName","resultName","securedScript","res","http","avatar","u","lang","me","workflowName","workflowRight","right","rightName","resourceRight","sharedRight","infos","user","responseText","email","mobile","rememberMe","secureLocation","version","skins","override","theme","conf","currentTheme","bundle","defaultDiacriticsRemovalMap","txt","member","oldPromise","load","folder","folders","property","defaultTo","prefs","userInfo","publicConf","tmp","myApps","app","upToDate","appName","foundApp","alternativeApp","found","type","checkType","tuple","xitiConf","desc","structure","struc","appConf","appXitiConf","pseudonymization","stringId","profileMap","cdnDomain","padWith0","w","widgetName","skin","i18nFolders","widgetsToHide","translatedA","translatedB","_platformConf","pref","maxResults","maxInfos","model","recipient","force","types","toAdd","_notification","msg","_ResourceService","application","resourceType","service","resourceId","withComment","folderId","parameters","publicationAsFormData","activityType","subjectArea","age","keyWord","thumb","blob","ret","fixThumb","apiPath","task","shouldCache","applications","currentApp","extendedTheme","bootstrapPath","bootstrapVersion","is1d","odeServices","size","idBookmark","users","displayName","profile","bookmarks","userIds","groupIds","group","bookmarkDetailPromises","bookmark","usersId","groupId","memberIds","previous","rights","expect","safeRights","expects","rightsArray","authorizedAction","currentLanguage","quotaAndUsage","userDescription","userProfile","bookmarkedApps","isUserSignin","userbook","searchText","cleanSearchText","resUsers","firstName","lastName","login","cleanLastName","cleanFirstName","cleanDisplayName","cleanLogin","resGroups","sharingMap","newKey","mapping","actionAvailable","visibleBookmarks","rightsPayload","sharingRights","userRights","userId","act","groupRights","visibleGroups","groupDisplayName","visibleUsers","rightWithDuplicates","resourceService","_MimeTypeUtils","extension","contentType","originalExt","mapper","fileType","previewRole","FileType","role","file","tmpName","nameSplit","metadata","fullname","formData","locationPath","xitiTrackingParams","SERVICE","analyticsConf","xitiConfig"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ode-ts-client.esm.js","sources":["../src/ts/globals.ts","../src/ts/explorer/interfaces.ts","../node_modules/.pnpm/tslib@2.1.0/node_modules/tslib/tslib.es6.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/Subscription.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/config.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/noop.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/Subscriber.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/identity.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/pipe.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/Observable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/lift.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/refCount.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/Subject.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/AsyncSubject.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/Immediate.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/Scheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/asap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/queue.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/empty.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/caughtSchedule.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/from.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/fromArray.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/args.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/of.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/throwError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/Notification.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isObservable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/lastValueFrom.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/firstValueFrom.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/SequenceError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/isDate.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/timeout.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/map.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/bindCallbackInternals.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/bindCallback.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/bindNodeCallback.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/createObject.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/concat.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/defer.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/connectable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/fromEventPattern.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/generate.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/iif.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/timer.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/interval.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/merge.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/never.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/onErrorResumeNext.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/onErrorResumeNext.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/pairs.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/util/not.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/filter.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/partition.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/race.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/range.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/using.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/zip.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/audit.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/auditTime.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/buffer.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/bufferCount.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/bufferToggle.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/bufferWhen.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/catchError.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/reduce.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/toArray.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/joinAllInternals.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/combineAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/combineLatest.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/combineLatestWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/concatMap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/concatMapTo.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/concat.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/concatWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/observable/fromSubscribable.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/connect.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/count.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/debounce.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/take.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/delay.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/dematerialize.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/distinct.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/distinctUntilKeyChanged.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/elementAt.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/endWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/every.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/exhaust.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/expand.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/finalize.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/find.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/findIndex.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/first.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/groupBy.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/isEmpty.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/takeLast.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/last.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/materialize.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/max.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/flatMap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mergeMapTo.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/merge.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/min.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/multicast.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/pluck.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/publish.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/publishBehavior.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/publishLast.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/publishReplay.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/raceWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/repeat.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/repeatWhen.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/retry.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/retryWhen.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/sample.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/sampleTime.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/scan.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/sequenceEqual.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/share.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/single.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/skip.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/skipLast.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/skipUntil.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/startWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/switchAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/switchMapTo.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/switchScan.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/tap.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/timeInterval.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/timeoutWith.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/timestamp.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/window.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/windowCount.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/windowTime.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/windowToggle.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/windowWhen.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/zipAll.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/zip.js","../node_modules/.pnpm/rxjs@7.3.0/node_modules/rxjs/dist/esm5/internal/operators/zipWith.js","../src/ts/notify/Framework.ts","../src/ts/notify/interfaces.ts","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/bind.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/utils.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/buildURL.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/InterceptorManager.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/transformData.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/cancel/isCancel.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/enhanceError.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/createError.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/settle.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/cookies.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/combineURLs.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/buildFullPath.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/adapters/xhr.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/defaults.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/dispatchRequest.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/mergeConfig.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/core/Axios.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/cancel/Cancel.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/cancel/CancelToken.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/spread.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/lib/axios.js","../node_modules/.pnpm/axios@0.21.1/node_modules/axios/index.js","../src/ts/transport/Http.ts","../src/ts/transport/Framework.ts","../src/ts/transport/interfaces.ts","../src/ts/session/Session.ts","../src/ts/session/Framework.ts","../src/ts/configure/Theme.ts","../src/ts/idiom/Idiom.ts","../src/ts/configure/User.ts","../src/ts/configure/AppConf.ts","../src/ts/configure/Analytics.ts","../src/ts/configure/Framework.ts","../src/ts/configure/interfaces.ts","../src/ts/session/interfaces.ts","../src/ts/widget/Framework.ts","../src/ts/widget/LastInfos.widget.ts","../src/ts/widget/interfaces.ts","../src/ts/apps/timeline/Notification.model.ts","../src/ts/apps/timeline/Framework.ts","../src/ts/apps/timeline/interfaces.ts","../src/ts/resources/ResourceService.ts","../src/ts/resources/BlogResourceService.ts","../src/ts/resources/MindmapResourceService.ts","../src/ts/cache/Service.ts","../src/ts/configure/Service.ts","../src/ts/directory/Service.ts","../src/ts/transport/Service.ts","../src/ts/rights/Service.ts","../src/ts/session/Service.ts","../src/ts/utils/StringUtils.ts","../src/ts/share/Service.ts","../src/ts/utils/MimeTypeUtils.ts","../src/ts/utils/FileTypeUtils.ts","../src/ts/workspace/Service.ts","../src/ts/idiom/Service.ts","../src/ts/analytics/Service.ts","../src/ts/services/OdeServices.ts","../src/ts/services/index.ts"],"sourcesContent":["//-------------------------------------\n//------------------ Global definitions\n//-------------------------------------\n\n//------------------------- Data types\n//-- Error codes\nexport const ERROR_CODE = {\n SUCCESS: \"0000\",\n UNKNOWN: \"0010\",\n NOT_INITIALIZED: \"0020\",\n NOT_SUPPORTED: \"0030\",\n APP_NOT_FOUND: \"0040\",\n AGENT_NOT_FOUND: \"0050\",\n TRANSPORT_ERROR: \"0060\",\n TIME_OUT: \"0070\",\n MALFORMED_DATA: \"0080\",\n NOT_LOGGED_IN: \"0090\",\n} as const;\nexport type ErrorCode = (typeof ERROR_CODE)[keyof typeof ERROR_CODE];\n\n//-- Applications\nexport const APP = {\n EXPLORER: \"explorer\",\n PORTAL: \"portal\",\n BLOG: \"blog\",\n EXERCIZER: \"exercizer\",\n TIMELINE: \"timeline\",\n CAS: \"cas\",\n VIDEO: \"video\",\n MINDMAP: \"mindmap\",\n\n // TODO compléter/trier les apps suivantes\n /*\n \"competences\"\n \"cahier-textes\"\n \"poll\"\n \"rack\"\n \"rbs\"\n \"searchengine\"\n \"sharebigfiles\"\n \"schoolbook\"\n \"archive\"\n \"admin\"\n \"cahier-de-texte\"\n \"wiki\"\n \"cns\"\n \"conversation\"\n \"paths\"\n \"parcours\"\n \"notebook\"\n \"scrap-book\"\n \"scrapbook\"\n \"account\"\n \"support\"\n \"workspace\"\n \"admin-portal\"\n \"stats\"\n \"userbook\" // FIXME userbook OR directory : the choice may impact some configurations, @see IXitiTrackingParams.NOM_PAGE for example\n \"directory\" // FIXME Keep in mind that ode-ts-client MUST not access the locationPath of the window !\n \"mindmap\"\n \"timelinegenerator\"\n \"actualites\"\n \"pad\"\n \"collaborativeeditor\"\n \"settings-class\"\n \"library\"\n \"visioconf\"\n \"Web-conference\"\n \"notes\"\n \"attendance\"\n \"calendar\"\n \"canal-numerique\"\n \"collaborative-wall\"\n \"statistics\"\n \"polls\"\n \"community\"\n \"forum\"\n \"pages\"\n \"website\"\n \"parametrage\"\n \"kne\"\n \"sacoche\"\n*/\n} as const;\nexport type App = (typeof APP)[keyof typeof APP]; // type App = \"explorer\" | \"blog\" | \"exercizer\"...\n\n//-- User preferences keys\nexport const USER_PREFS = {\n APPS: \"apps\",\n WIDGETS: \"widgets\",\n LANGUAGE: \"language\",\n AUTH_CONNECTOR_ACCESSED: \"authenticatedConnectorsAccessed\",\n CURSUS: \"cursus\",\n INFOTIP: \"infotip\",\n RGPD_COOKIES: \"rgpdCookies\",\n // TODO compléter\n} as const;\n","import { Observable } from \"rxjs\";\nimport { APP, App } from \"../globals\";\nimport { RightRole } from \"../services\";\n\n//-------------------------------------\n/* export abstract class ExplorerFrameworkFactory {\n //-------------------------------------\n static instance(): IExplorerFramework {\n return explorer;\n }\n} */\n\n/** Framework exploration capabilities offered to the client. */\n//-------------------------------------\nexport interface IExplorerFramework {\n //-------------------------------------\n /**\n * Create a new context to explore resources produced by an application.\n * @param types Types of resource to be managed in this context.\n * @param app Application which creates the new context.\n */\n createContext(types: ResourceType[], app: App): IExplorerContext;\n\n /**\n * Retrieve the underlying communication bus.\n */\n getBus(): IBus;\n}\n\n/** Context to explore resources from an application. */\n//-------------------------------------\nexport interface IExplorerContext {\n //-------------------------------------\n /**\n * @return true, if the context is initialized.\n */\n isInitialized(): boolean;\n /**\n * @return The initialized search context, or undefined if initialize() has not been called before.\n */\n getContext(): IContext | undefined;\n /**\n * @return search parameters in the current context, modifiable before any call to getResources() or initialize().\n */\n getSearchParameters(): ISearchParameters;\n /**\n * @return a stream of (search,result) tuples, generated by initialize() and getResources() which should be called by your searches or pagination.\n */\n latestResources(): Observable<{\n input: ISearchParameters;\n output: ISearchResults;\n }>;\n\n /**\n * Clear and reset the underlying context.\n */\n clear(): void;\n\n /**\n * Retrieve the first page of listed resources from the server.\n * Observers of the latestResources() will be notified.\n * Search parameters can be adjusted beforehand, @see getSearchParameters().\n * @return\n */\n initialize(): Promise<IContext>;\n\n /**\n * Retrieve a page of listed resources from the server.\n * Observers of the latestResources() will be notified.\n * Search parameters can be adjusted beforehand, @see getSearchParameters().\n */\n getResources(): Promise<GetResourcesResult>;\n\n /**\n * Retrieve subfolders of a parent folder, from the server.\n * @param parentId ID of the parent folder.\n */\n getSubFolders(parentId: ID): Promise<GetSubFoldersResult>;\n\n /**\n * Create a new [sub]folder.\n * @param resourceType Type of resources the created folder will contain.\n * @param parentId ID of the parent folder, or \"default\" for the root folder.\n * @param name Name of the created folder.\n */\n createFolder(\n resourceType: ResourceType,\n parentId: ID | \"default\",\n name: string,\n ): Promise<CreateFolderResult>;\n\n /**\n * Modify the properties of a folder.\n * @param folderId ID of the folder to modify.\n * @param resourceType Type of resources the modified folder will contain.\n * @param parentId ID of the parent folder.\n * @param name Name of the folder.\n */\n updateFolder(\n folderId: ID,\n resourceType: ResourceType,\n parentId: ID | \"default\",\n name: string,\n ): Promise<UpdateFolderResult>;\n\n /**\n * Copy resources and folders into a folder.\n * @param targetId ID of the destination folder.\n * @param resourceIds Array of resources ID to copy.\n * @param folderIds Array of folders ID to copy.\n */\n copy(targetId: ID, resourceIds: ID[], folderIds: ID[]): Promise<void>;\n\n /**\n * Move resources and folders into a folder.\n * @param targetId ID of the destination folder.\n * @param resourceIds Array of resources ID to move.\n * @param folderIds Array of folders ID to move.\n */\n move(targetId: ID, resourceIds: ID[], folderIds: ID[]): Promise<void>;\n\n /**\n * Delete resources and folders.\n * @param resourceIds Array of resources ID to delete.\n * @param folderIds Array of folders ID to delete.\n */\n delete(resourceIds: ID[], folderIds: ID[]): Promise<void>; //FIXME 1 seul tableau en paramètres ?\n\n /**\n * Trash / Untrash resources and folders.\n * @param trash boolean set status trash or untrash\n * @param resourceIds Array of resources ID to delete.\n * @param folderIds Array of folders ID to delete.\n */\n trash(trash: boolean, resourceIds: ID[], folderIds: ID[]): Promise<void>;\n\n /** Retrieves which properties of the resource(s) are manageable. */\n manageProperties(\n resourceType: ResourceType,\n resources: IResource[],\n ): Promise<ManagePropertiesResult>;\n /** Update managed properties. */\n updateProperties(\n resourceType: ResourceType,\n resources: IResource[],\n props: { [key in PropKeyType]?: string },\n ): Promise<UpdatePropertiesResult>;\n\n /* Share resources */\n //share( resourceIds:ID[] /*, rights:IGroupUserRight[]*/ ): Promise<void>;\n\n /** Publish to Library */\n publish(\n resourceType: ResourceType,\n parameters: PublishParameters,\n ): Promise<PublishResult>;\n\n /*//TODO ajouter des méthodes pour les autres actions du toaster ?\n CREATE: \"create\"\n ,OPEN: \"open\"\n ,COMMENT: \"comment\"\n ,EXPORT: \"export\"\n ,PUBLISH: \"publish\"\n ,PRINT: \"print\"\n*/\n}\n\n//------------------------- Data types\n//-- Resources\nexport const RESOURCE = {\n FOLDER: \"folder\",\n BLOG: \"blog\",\n EXERCISE: \"exercise\",\n MINDMAP: \"mindmap\",\n} as const;\n\nexport type ResourceType = (typeof RESOURCE)[keyof typeof RESOURCE];\n\n//-- App/Resource link\nexport const appNameForResource: { [R in ResourceType]: App } = {\n folder: APP.EXPLORER,\n blog: APP.BLOG,\n exercise: APP.EXERCIZER,\n mindmap: APP.MINDMAP,\n} as const;\n\n//-- Actions (toaster)\nexport const ACTION = {\n INITIALIZE: \"initialize\",\n SEARCH: \"search\",\n CREATE: \"create\",\n OPEN: \"open\",\n MANAGE: \"manage\", // Query properties metadata\n UPD_PROPS: \"properties\", // Update properties\n COMMENT: \"comment\",\n DELETE: \"delete\",\n TRASH: \"trash\",\n RESTORE: \"restore\",\n MOVE: \"move\",\n COPY: \"copy\",\n EXPORT: \"export\",\n SHARE: \"share\",\n PRINT: \"print\",\n PAGES_LIST: \"pages_list\",\n DISTRIBUTE: \"distribute\",\n REGISTER: \"register\",\n PUBLISH: \"publish\",\n PUBLISH_MOODLE: \"publish_moodle\",\n} as const;\n\nexport type ActionType = (typeof ACTION)[keyof typeof ACTION];\n\n//-- Folders\nexport const FOLDER = {\n BIN: \"bin\",\n DEFAULT: \"default\",\n} as const;\n\nexport type FolderType = (typeof FOLDER)[keyof typeof FOLDER];\n\n//-- Filters\nexport const BOOLEAN_FILTER = {\n OWNER: \"owner\",\n SHARED: \"shared\",\n PUBLIC: \"public\",\n FAVORITE: \"favorite\",\n} as const;\nexport type BooleanFilterType =\n (typeof BOOLEAN_FILTER)[keyof typeof BOOLEAN_FILTER];\nexport const STRING_FILTER = {\n // FOLDER: \"folder\" // is instead an ID\n} as const;\nexport type StringFilterType =\n (typeof STRING_FILTER)[keyof typeof STRING_FILTER];\n\n//-- Sort orders\nexport const SORT_ORDER = {\n ASC: \"asc\",\n DESC: \"desc\",\n} as const;\nexport type SortOrderType = (typeof SORT_ORDER)[keyof typeof SORT_ORDER];\nexport const SORT_BY = {\n NAME: \"name\",\n MODIFY_DATE: \"updatedAt\",\n CREATEDAT: \"createdAt\",\n APPLICATION: \"application\",\n RESOURCE_TYPE: \"resourceType\",\n /*\n//FIXME On devrait pouvoir trier sur tout champ issu d'un type de ressource (name, createdAt, creatorId...) voir IResource\n createdAt: string;\n creatorId: string;\n authorName: string;\n modifierId: ID;\n modifierName: string;\n modifiedAt: string;\n folderId?: ID; // TODO à confirmer\n public?: boolean;\n shared?: boolean;\n favorite?: boolean;\n comments?: number;\n*/\n} as const;\nexport type SortByType = (typeof SORT_BY)[keyof typeof SORT_BY];\n\n//-- Semantique\nexport type ID = string;\nexport type StringFilterValue = {\n value: string; // Value of the filter (as sent to backend)\n i18n: string; // Translation key of the filter (as displayed in frontend)\n};\n\n//-- Properties management\nexport const PROP_KEY = {\n TITLE: \"title\",\n IMAGE: \"image\",\n COLOR: \"color\",\n DESCRIPTION: \"description\",\n URL: \"url\",\n // ,GENERIC: \"generic\" //NOT USED AT THE MOMENT\n} as const;\nexport type PropKeyType = (typeof PROP_KEY)[keyof typeof PROP_KEY];\n\nexport const PROP_MODE = {\n READONLY: \"RO\",\n READWRITE: \"RW\",\n} as const;\nexport type PropModeType = (typeof PROP_MODE)[keyof typeof PROP_MODE];\n\nexport const PROP_TYPE = {\n TEXT: \"text\",\n NUMBER: \"number\",\n DATE: \"date\",\n IMAGE: \"image\",\n // TODO more types ? Currencies...\n} as const;\nexport type PropTypeType = (typeof PROP_TYPE)[keyof typeof PROP_TYPE];\n\nexport const PROP_FORMAT = {\n PLAIN: \"plain\", // Plain text or number value, no formatting\n // TODO more format to come ? Full dates, months only, timestamps, regexp....\n} as const;\nexport type PropFormatType = (typeof PROP_FORMAT)[keyof typeof PROP_FORMAT];\n\n//------------------------- Data models\nexport type SearchResultHandler = (\n input: IActionParameters,\n output: IActionResult,\n) => void;\n//-------------------------------------\nexport interface ISearchParameters {\n //-------------------------------------\n types: ResourceType[];\n app: App;\n filters: FilterValues;\n orders?: OrderValues;\n pagination: IPagination;\n search?: String;\n trashed?: boolean;\n}\n//-------------------------------------\nexport interface ISearchResults {\n //-------------------------------------\n folders: IFolder[];\n pagination: IPagination;\n resources: IResource[];\n searchConfig?: {minLength:number}\n}\n//-------------------------------------\nexport interface IContext extends ISearchResults {\n //-------------------------------------\n preferences: IPreferences;\n}\n\n//-------------------------------------\nexport interface IAction {\n //-------------------------------------\n id: ActionType;\n available: boolean; // L'utilisateur a le droit workflow ou pas\n target?: \"actionbar\";\n workflow: string; // Droit workflow\n right?: RightRole;\n //FIXME comment relier les actions aux behaviours, qu'on va remplacer.\n}\n\n//-------------------------------------\nexport interface IFolder {\n //-------------------------------------\n id: ID;\n parentId: ID;\n name: string;\n type: FolderType | ID;\n childNumber: number; // à minima, 0 ou 1...\n trashed: boolean;\n rights: string[];\n ancestors: string[];\n}\n\n//-------------------------------------\nexport interface IFilter {\n //-------------------------------------\n id: BooleanFilterType | StringFilterType;\n defaultValue?: string | string[] | boolean | boolean[];\n values?: StringFilterValue[];\n}\n\n//-------------------------------------\nexport interface IOrder {\n //-------------------------------------\n id: SortByType;\n defaultValue?: SortOrderType;\n i18n: string;\n}\n\n//-------------------------------------\nexport interface IPagination {\n // TODO à tester\n //-------------------------------------\n startIdx: number;\n maxIdx?: number; // Si elastic search renvoie bien le nombre de hits\n pageSize: number; // Sera égal à la valeur paramétrée côté serveur\n}\n\n//-------------------------------------\nexport interface IProperty {\n //-------------------------------------\n key: PropKeyType;\n i18n?: string;\n}\n\n/* NOT USED AT THE MOMENT\n Additional metadata when key===PROP_KEY.GENERIC\n//-------------------------------------\nexport interface IGenericProperty extends IProperty {\n//-------------------------------------\n property:keyof IResource;\n mode:PropModeType;\n type:PropTypeType;\n format?:PropFormatType[];\n}\n*/\n\n//-------------------------------------\nexport interface IResource {\n //-------------------------------------\n application: App;\n assetId: string;\n creatorId: string;\n creatorName: string;\n comments?: number;\n createdAt: string; // FIXME: S'entendre sur un format de date\n favorite?: boolean;\n folderIds?: ID[]; // TODO à confirmer\n id: ID;\n modifiedAt: string; // FIXME: S'entendre sur un format de date\n modifierId: ID;\n modifierName: string;\n name: string;\n slug?: string;\n public?: boolean;\n shared?: boolean;\n thumbnail: string; // URL : requis; ou bien déductible d’une convention ?\n updatedAt: string;\n views?: number;\n trashed: boolean;\n trashedBy?: string[];\n rights: RightStringified[];\n description: string;\n}\n\nexport type RightStringified = string;\n\n//-------------------------------------\nexport interface IPreferences {\n //-------------------------------------\n view: \"card\" | \"list\";\n}\n\n//------------------------- Service call parameters\n//-------------------------------------\nexport interface IActionParameters {\n //-------------------------------------\n}\nexport type GetContextParameters = IActionParameters & ISearchParameters;\nexport type GetResourcesParameters = IActionParameters & ISearchParameters;\nexport type CreateFolderParameters = IActionParameters & {\n app: App;\n type: ResourceType;\n parentId: ID | \"default\";\n name: string;\n};\nexport type UpdateFolderParameters = IActionParameters & {\n folderId: ID;\n app: App;\n type: ResourceType;\n parentId: ID | \"default\";\n name: string;\n};\nexport type OpenParameters = IActionParameters & {\n resourceId: ID;\n};\nexport type PrintParameters = IActionParameters & {\n resourceId: ID;\n withComments?: boolean;\n};\nexport type CopyParameters = IActionParameters & {\n application: string;\n folderId: ID;\n resourceIds: ID[];\n folderIds: ID[];\n};\nexport type MoveParameters = IActionParameters & {\n application: string;\n folderId: ID;\n resourceIds: ID[];\n folderIds: ID[];\n};\nexport type DeleteParameters = IActionParameters & {\n application: string;\n resourceType: string;\n resourceIds: ID[];\n folderIds: ID[];\n};\nexport type TrashParameters = IActionParameters & {\n trash: boolean;\n application: string;\n resourceType: string;\n resourceIds: ID[];\n folderIds: ID[];\n};\nexport type ManagePropertiesParameters = IActionParameters & {\n resources: IResource[];\n};\nexport type UpdatePropertiesParameters = IActionParameters & {\n resources: IResource[];\n props: { [key in PropKeyType]?: string };\n};\n\nexport type PublishParameters = IActionParameters & {\n userId: string | undefined;\n title: string;\n cover: Blob;\n language: string;\n activityType: string[];\n subjectArea: string[];\n age: [string, string];\n description: string;\n keyWords: string;\n application: string | undefined;\n licence: string;\n teacherAvatar: Blob;\n resourceId: string;\n resourceEntId: string;\n userStructureName: string;\n};\n\n/* NOT USED AT THE MOMENT (and probably never)\n//-------------------------------------\nexport interface IGroupUserRight {\n//-------------------------------------\n read: boolean;\n contribute: boolean;\n manage: boolean;\n comment: boolean;\n userId?: ID;\n groupId?: ID;\n}\n*/\n\nexport type FilterValues = { [B in BooleanFilterType]?: boolean } & {\n [S in StringFilterType]?: string;\n} & { folder?: ID };\nexport type OrderValues = { [O in SortByType]?: SortOrderType };\n\n//------------------------- Service call results\n//-------------------------------------\nexport interface IActionResult {\n //-------------------------------------\n // TODO : generic success, failure, error codes... should be placed here\n}\n\nexport type GetContextResult = IActionResult & IContext;\n\nexport type GetResourcesResult = IActionResult & ISearchResults;\n\nexport type GetSubFoldersResult = IActionResult & { folders: IFolder[] };\nexport type CreateFolderResult = IActionResult &\n IFolder & { createdAt: string; creator_id?: string };\nexport type UpdateFolderResult = CreateFolderResult & {\n updatedAt: string;\n parentId: ID | \"default\";\n};\nexport type ManagePropertiesResult = IActionResult & {\n genericProps: IProperty[];\n};\nexport type UpdatePropertiesResult = IActionResult & { resources: IResource[] };\nexport type PublishResult = IActionResult & {\n details: {\n application: string;\n created_at: string;\n description: string;\n front_url: string;\n id: string;\n title: string;\n };\n message: string;\n reason: string;\n success: boolean;\n};\n\n//-------------------------------------\n//-------------------- API (LOW-LEVEL)\n//-------------------------------------\nexport interface IBus {\n //-------------------------------------\n /**\n * Ask any agent on the bus to perform an action on a type of resource.\n * @param res The type of resource in concern.\n * @param action The action requested on the type of resource.\n * @param parameters The [specific] parameters for the action.\n * @return The result of the action from the agent.\n */\n publish(\n res: ResourceType,\n action: ActionType,\n parameters: IActionParameters,\n ): Promise<IActionResult>;\n\n /**\n * Subscribe to ActionResults any agent produces for a given ResourceType and ActionType.\n * @param res The type of resource in concern.\n * @param action The action in concern.\n * @return A stream of IActionParameters and IActionResult\n */\n subscribe(\n res: ResourceType,\n action: ActionType,\n ): Observable<{ input: IActionParameters; output: IActionResult }>;\n\n /** Register an agent able to resolve an action on a type of resource. */\n setAgentFor(res: ResourceType, action: ActionType, agent: IBusAgent): void;\n\n /** Retrieve an agent able to resolve an action on a type of resource. */\n getAgentFor(res: ResourceType, action: ActionType): IBusAgent | null;\n}\n\n//-------------------------------------\nexport interface IBusAgent {\n //-------------------------------------\n /** Ask this agent to resolve an action. */\n activate(\n res: ResourceType,\n action: ActionType,\n parameters: IActionParameters,\n ): Promise<IActionResult>;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\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); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._teardowns = 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 initialTeardown = this.initialTeardown;\n if (isFunction(initialTeardown)) {\n try {\n initialTeardown();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _teardowns = this._teardowns;\n if (_teardowns) {\n this._teardowns = null;\n try {\n for (var _teardowns_1 = __values(_teardowns), _teardowns_1_1 = _teardowns_1.next(); !_teardowns_1_1.done; _teardowns_1_1 = _teardowns_1.next()) {\n var teardown_1 = _teardowns_1_1.value;\n try {\n execTeardown(teardown_1);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_teardowns_1_1 && !_teardowns_1_1.done && (_b = _teardowns_1.return)) _b.call(_teardowns_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execTeardown(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._teardowns = (_a = this._teardowns) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _teardowns = this._teardowns;\n _teardowns && arrRemove(_teardowns, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execTeardown(teardown) {\n if (isFunction(teardown)) {\n teardown();\n }\n else {\n teardown.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) || setTimeout).apply(void 0, __spreadArray([], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","export var COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind: kind,\n value: value,\n error: error,\n };\n}\n//# sourceMappingURL=NotificationFactories.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends, __read, __spreadArray } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var next;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n (next = observerOrNext.next, error = observerOrNext.error, complete = observerOrNext.complete);\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n }\n else {\n context_1 = observerOrNext;\n }\n next = next === null || next === void 0 ? void 0 : next.bind(context_1);\n error = error === null || error === void 0 ? void 0 : error.bind(context_1);\n complete = complete === null || complete === void 0 ? void 0 : complete.bind(context_1);\n }\n _this.destination = {\n next: next ? wrapForErrorHandling(next, _this) : noop,\n error: wrapForErrorHandling(error !== null && error !== void 0 ? error : defaultErrorHandler, _this),\n complete: complete ? wrapForErrorHandling(complete, _this) : noop,\n };\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction wrapForErrorHandling(handler, instance) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n try {\n handler.apply(void 0, __spreadArray([], __read(args)));\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(err);\n }\n else {\n reportUnhandledError(err);\n }\n }\n };\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\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 var closed = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function refCount() {\n return operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = new OperatorSubscriber(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}\n//# sourceMappingURL=refCount.js.map","import { __extends } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../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 (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();\n var subject_1 = this.getSubject();\n connection.add(this.source.subscribe(new OperatorSubscriber(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.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return higherOrderRefCount()(this);\n };\n return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\n//# sourceMappingURL=ConnectableObservable.js.map","export var performanceTimestampProvider = {\n now: function () {\n return (performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=performanceTimestampProvider.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Subscription } from '../Subscription';\nexport var animationFrameProvider = {\n schedule: function (callback) {\n var request = requestAnimationFrame;\n var cancel = cancelAnimationFrame;\n var delegate = 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(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 = 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 = 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","import { Observable } from '../../Observable';\nimport { Subscription } from '../../Subscription';\nimport { performanceTimestampProvider } from '../../scheduler/performanceTimestampProvider';\nimport { animationFrameProvider } from '../../scheduler/animationFrameProvider';\nexport function animationFrames(timestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\nfunction animationFramesFactory(timestampProvider) {\n var schedule = animationFrameProvider.schedule;\n return new Observable(function (subscriber) {\n var subscription = new Subscription();\n var provider = timestampProvider || performanceTimestampProvider;\n var start = provider.now();\n var run = function (timestamp) {\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start\n });\n if (!subscriber.closed) {\n subscription.add(schedule(run));\n }\n };\n subscription.add(schedule(run));\n return subscription;\n });\n}\nvar DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\n//# sourceMappingURL=animationFrames.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n var copy = _this.observers.slice();\n try {\n for (var copy_1 = __values(copy), copy_1_1 = copy_1.next(); !copy_1_1.done; copy_1_1 = copy_1.next()) {\n var observer = copy_1_1.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (copy_1_1 && !copy_1_1.done && (_a = copy_1.return)) _a.call(copy_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = 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 _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n return hasError || isStopped\n ? EMPTY_SUBSCRIPTION\n : (observers.push(subscriber), new Subscription(function () { return arrRemove(observers, subscriber); }));\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './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));\nexport { AsyncSubject };\n//# sourceMappingURL=AsyncSubject.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) || setInterval).apply(void 0, __spreadArray([], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n 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 = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n intervalProvider.clearInterval(id);\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(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","var 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}\nexport var 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};\nexport var TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nvar setImmediate = Immediate.setImmediate, clearImmediate = Immediate.clearImmediate;\nexport var 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 = 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 = 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","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './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.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n AsapAction.prototype.recycleAsyncId = 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.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n immediateProvider.clearImmediate(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n _this._scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './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 this._scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n action = action || actions.shift();\n var count = actions.length;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this._active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asapScheduler = new AsapScheduler(AsapAction);\nexport var asap = asapScheduler;\n//# sourceMappingURL=asap.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './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) ?\n _super.prototype.execute.call(this, state, delay) :\n 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 return scheduler.flush(this);\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './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));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queueScheduler = new QueueScheduler(QueueAction);\nexport var queue = queueScheduler;\n//# sourceMappingURL=queue.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { animationFrameProvider } from './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.requestAnimationFrame(function () { return scheduler.flush(undefined); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = 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.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction));\nexport { AnimationFrameAction };\n//# sourceMappingURL=AnimationFrameAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './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 this._scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n action = action || actions.shift();\n var count = actions.length;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this._active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.js.map","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport var animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport var animationFrame = animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './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));\nexport { 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.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 true;\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));\nexport { VirtualAction };\n//# sourceMappingURL=VirtualTimeScheduler.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { Observable } from '../Observable';\nexport function schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n return scheduler.schedule(function () {\n return input.then(function (value) {\n subscriber.add(scheduler.schedule(function () {\n subscriber.next(value);\n subscriber.add(scheduler.schedule(function () { return subscriber.complete(); }));\n }));\n }, function (err) {\n subscriber.add(scheduler.schedule(function () { return subscriber.error(err); }));\n });\n });\n });\n}\n//# sourceMappingURL=schedulePromise.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","export function caughtSchedule(subscriber, scheduler, execute, delay) {\n if (delay === void 0) { delay = 0; }\n var subscription = scheduler.schedule(function () {\n try {\n execute.call(this);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n subscriber.add(subscription);\n return subscription;\n}\n//# sourceMappingURL=caughtSchedule.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { caughtSchedule } from '../util/caughtSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n subscriber.add(scheduler.schedule(function () {\n iterator = input[Symbol_iterator]();\n caughtSchedule(subscriber, scheduler, function () {\n var _a = iterator.next(), value = _a.value, done = _a.done;\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n });\n }));\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var iterator = input[Symbol.asyncIterator]();\n sub.add(scheduler.schedule(function () {\n var _this = this;\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n _this.schedule();\n }\n });\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { Observable } from '../Observable';\nimport { scheduled } from '../scheduled/scheduled';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nfunction fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nfunction fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nfunction fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nfunction fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nfunction fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=from.js.map","import { scheduleArray } from '../scheduled/scheduleArray';\nimport { fromArrayLike } from './from';\nexport function internalFromArray(input, scheduler) {\n return scheduler ? scheduleArray(input, scheduler) : fromArrayLike(input);\n}\n//# sourceMappingURL=fromArray.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","import { internalFromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nimport { popScheduler } from '../util/args';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n return scheduler ? scheduleArray(args, scheduler) : internalFromArray(args);\n}\n//# sourceMappingURL=of.js.map","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nexport function throwError(errorOrErrorFactory, scheduler) {\n var errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function () { return errorOrErrorFactory; };\n var init = function (subscriber) { return subscriber.error(errorFactory()); };\n return new Observable(scheduler ? function (subscriber) { return scheduler.schedule(init, 0, subscriber); } : init);\n}\n//# sourceMappingURL=throwError.js.map","import { EMPTY } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { isFunction } from './util/isFunction';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (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((_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(value)\n :\n kind === 'E'\n ?\n throwError(function () { return error; })\n :\n kind === 'C'\n ?\n 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}());\nexport { Notification };\nexport function 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}\n//# sourceMappingURL=Notification.js.map","import { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n//# sourceMappingURL=isObservable.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) { return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n}; });\n//# sourceMappingURL=EmptyError.js.map","import { EmptyError } from './util/EmptyError';\nexport function 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());\n }\n },\n });\n });\n}\n//# sourceMappingURL=lastValueFrom.js.map","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n var hasConfig = typeof config === 'object';\n return new Promise(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: function () {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=firstValueFrom.js.map","import { createErrorClass } from './createErrorClass';\nexport var ArgumentOutOfRangeError = 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","import { createErrorClass } from './createErrorClass';\nexport var NotFoundError = 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","import { createErrorClass } from './createErrorClass';\nexport var SequenceError = 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","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { caughtSchedule } from '../util/caughtSchedule';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport var TimeoutError = createErrorClass(function (_super) {\n return function TimeoutErrorImpl(info) {\n if (info === void 0) { info = null; }\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n };\n});\nexport function timeout(config, schedulerArg) {\n var _a = (isValidDate(config)\n ? { first: config }\n : typeof config === 'number'\n ? { each: config }\n : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d;\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return operate(function (source, subscriber) {\n var originalSourceSubscription;\n var timerSubscription;\n var lastValue = null;\n var seen = 0;\n var startTimer = function (delay) {\n timerSubscription = caughtSchedule(subscriber, scheduler, function () {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen,\n })).subscribe(subscriber);\n }, delay);\n };\n originalSourceSubscription = source.subscribe(new OperatorSubscriber(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 startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n });\n}\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n//# sourceMappingURL=timeout.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return subscriber.add(scheduler.schedule(function () { return subscriber.next(value); }, delay)); }, function () { return subscriber.add(scheduler.schedule(function () { return subscriber.complete(); }, delay)); }, function (err) { return subscriber.add(scheduler.schedule(function () { return subscriber.error(err); }, delay)); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { isScheduler } from '../util/isScheduler';\nimport { Observable } from '../Observable';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { observeOn } from '../operators/observeOn';\nimport { AsyncSubject } from '../AsyncSubject';\nexport function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (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(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(scheduler), 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();\n var uninitialized = true;\n return new 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}\n//# sourceMappingURL=bindCallbackInternals.js.map","import { bindCallbackInternals } from './bindCallbackInternals';\nexport function bindCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals(false, callbackFunc, resultSelector, scheduler);\n}\n//# sourceMappingURL=bindCallback.js.map","import { bindCallbackInternals } from './bindCallbackInternals';\nexport function bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n return bindCallbackInternals(true, callbackFunc, resultSelector, scheduler);\n}\n//# sourceMappingURL=bindNodeCallback.js.map","var isArray = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n var first_1 = args[0];\n if (isArray(first_1)) {\n return { args: first_1, keys: null };\n }\n if (isPOJO(first_1)) {\n var keys = getKeys(first_1);\n return {\n args: keys.map(function (key) { return first_1[key]; }),\n keys: keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n//# sourceMappingURL=argsArgArrayOrObject.js.map","export function createObject(keys, values) {\n return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});\n}\n//# sourceMappingURL=createObject.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var resultSelector = popResultSelector(args);\n var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n if (observables.length === 0) {\n return from([], scheduler);\n }\n var result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n function (values) { return createObject(keys, values); }\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform) {\n if (valueTransform === void 0) { valueTransform = identity; }\n return function (subscriber) {\n maybeSchedule(scheduler, function () {\n var length = observables.length;\n var values = new Array(length);\n var active = length;\n var remainingFirstValues = length;\n var _loop_1 = function (i) {\n maybeSchedule(scheduler, function () {\n var source = from(observables[i], scheduler);\n var hasFirstValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, function () {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n };\n for (var i = 0; i < length; i++) {\n _loop_1(i);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n subscription.add(scheduler.schedule(execute));\n }\n else {\n execute();\n }\n}\n//# sourceMappingURL=combineLatest.js.map","import { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalTeardown) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(new OperatorSubscriber(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 innerSubScheduler ? subscriber.add(innerSubScheduler.schedule(function () { return doInnerSub(bufferedValue); })) : doInnerSub(bufferedValue);\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(new OperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalTeardown === null || additionalTeardown === void 0 ? void 0 : additionalTeardown();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { internalFromArray } from './fromArray';\nimport { popScheduler } from '../util/args';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(internalFromArray(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './from';\nexport function defer(observableFactory) {\n return new Observable(function (subscriber) {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=defer.js.map","import { Subject } from '../Subject';\nimport { Observable } from '../Observable';\nimport { defer } from './defer';\nvar DEFAULT_CONFIG = {\n connector: function () { return new Subject(); },\n resetOnDisconnect: true,\n};\nexport function 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(function (subscriber) {\n return subject.subscribe(subscriber);\n });\n result.connect = function () {\n if (!connection || connection.closed) {\n connection = 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}\n//# sourceMappingURL=connectable.js.map","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './from';\nimport { popResultSelector } from '../util/args';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nexport function forkJoin() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = popResultSelector(args);\n var _a = argsArgArrayOrObject(args), sources = _a.args, keys = _a.keys;\n var result = new 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(sources[sourceIndex]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n }, function () {\n if (!--remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? 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(resultSelector)) : result;\n}\n//# sourceMappingURL=forkJoin.js.map","import { __read } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { internalFromArray } from './fromArray';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(internalFromArray(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nexport function fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(mapOneOrManyArgs(resultSelector));\n }\n return new 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(removeHandler) ? function () { return removeHandler(handler, retValue); } : undefined;\n });\n}\n//# sourceMappingURL=fromEventPattern.js.map","import { __generator } from \"tslib\";\nimport { identity } from '../util/identity';\nimport { isScheduler } from '../util/isScheduler';\nimport { defer } from './defer';\nimport { scheduleIterable } from '../scheduled/scheduleIterable';\nexport function 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 : _b, scheduler = _a.scheduler);\n }\n else {\n initialState = initialStateOrOptions;\n if (!resultSelectorOrScheduler || isScheduler(resultSelectorOrScheduler)) {\n resultSelector = 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((scheduler\n ?\n function () { return scheduleIterable(gen(), scheduler); }\n :\n gen));\n}\n//# sourceMappingURL=generate.js.map","import { defer } from './defer';\nexport function iif(condition, trueResult, falseResult) {\n return defer(function () { return (condition() ? trueResult : falseResult); });\n}\n//# sourceMappingURL=iif.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period, scheduler) {\n if (period === void 0) { period = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n//# sourceMappingURL=interval.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { internalFromArray } from './fromArray';\nimport { innerFrom } from './from';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(internalFromArray(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var nextSources = argsOrArgArray(sources);\n return operate(function (source, subscriber) {\n var remaining = __spreadArray([source], __read(nextSources));\n var subscribeNext = function () {\n if (!subscriber.closed) {\n if (remaining.length > 0) {\n var nextSource = void 0;\n try {\n nextSource = innerFrom(remaining.shift());\n }\n catch (err) {\n subscribeNext();\n return;\n }\n var innerSub = new OperatorSubscriber(subscriber, undefined, noop, noop);\n subscriber.add(nextSource.subscribe(innerSub));\n innerSub.add(subscribeNext);\n }\n else {\n subscriber.complete();\n }\n }\n };\n subscribeNext();\n });\n}\n//# sourceMappingURL=onErrorResumeNext.js.map","import { EMPTY } from './empty';\nimport { onErrorResumeNext as onErrorResumeNextWith } from '../operators/onErrorResumeNext';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nexport function onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return onErrorResumeNextWith(argsOrArgArray(sources))(EMPTY);\n}\n//# sourceMappingURL=onErrorResumeNext.js.map","import { from } from './from';\nexport function pairs(obj, scheduler) {\n return from(Object.entries(obj), scheduler);\n}\n//# sourceMappingURL=pairs.js.map","export function not(pred, thisArg) {\n return function (value, index) { return !pred.call(thisArg, value, index); };\n}\n//# sourceMappingURL=not.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { not } from '../util/not';\nimport { filter } from '../operators/filter';\nimport { innerFrom } from './from';\nexport function partition(source, predicate, thisArg) {\n return [filter(predicate, thisArg)(innerFrom(source)), filter(not(predicate, thisArg))(innerFrom(source))];\n}\n//# sourceMappingURL=partition.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './from';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function race() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n sources = argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\nexport function raceInit(sources) {\n return function (subscriber) {\n var subscriptions = [];\n var _loop_1 = function (i) {\n subscriptions.push(innerFrom(sources[i]).subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=race.js.map","import { Observable } from '../Observable';\nimport { EMPTY } from './empty';\nexport function range(start, count, scheduler) {\n if (count == null) {\n count = start;\n start = 0;\n }\n if (count <= 0) {\n return EMPTY;\n }\n var end = count + start;\n return new 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}\n//# sourceMappingURL=range.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './from';\nimport { EMPTY } from './empty';\nexport function using(resourceFactory, observableFactory) {\n return new Observable(function (subscriber) {\n var resource = resourceFactory();\n var result = observableFactory(resource);\n var source = result ? innerFrom(result) : EMPTY;\n source.subscribe(subscriber);\n return function () {\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n//# sourceMappingURL=using.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { innerFrom } from './from';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { EMPTY } from './empty';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { popResultSelector } from '../util/args';\nexport function zip() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = popResultSelector(args);\n var sources = argsOrArgArray(args);\n return sources.length\n ? new 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(sources[sourceIndex]).subscribe(new OperatorSubscriber(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;\n}\n//# sourceMappingURL=zip.js.map","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function audit(durationSelector) {\n return 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(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe((durationSubscriber = new OperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, function () {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=audit.js.map","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler) {\n if (scheduler === void 0) { scheduler = async; }\n return audit(function () { return timer(duration, scheduler); });\n}\n//# sourceMappingURL=auditTime.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function buffer(closingNotifier) {\n return operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n closingNotifier.subscribe(new OperatorSubscriber(subscriber, function () {\n var b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n }, noop));\n return function () {\n currentBuffer = null;\n };\n });\n}\n//# sourceMappingURL=buffer.js.map","import { __values } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nexport function bufferCount(bufferSize, startBufferEvery) {\n if (startBufferEvery === void 0) { startBufferEvery = null; }\n startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize;\n return operate(function (source, subscriber) {\n var buffers = [];\n var count = 0;\n source.subscribe(new OperatorSubscriber(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(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}\n//# sourceMappingURL=bufferCount.js.map","import { __values } from \"tslib\";\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { asyncScheduler } from '../scheduler/async';\nimport { popScheduler } from '../util/args';\nexport function 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 = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;\n var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxBufferSize = otherArgs[1] || Infinity;\n return 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(bufferRecords, record);\n subscriber.next(buffer);\n restartOnEmit && startBuffer();\n };\n var startBuffer = function () {\n if (bufferRecords) {\n var subs = new 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 subs.add(scheduler.schedule(function () { return emit(record_1); }, bufferTimeSpan));\n }\n };\n bufferCreationInterval !== null && bufferCreationInterval >= 0\n ?\n subscriber.add(scheduler.schedule(function () {\n startBuffer();\n !this.closed && subscriber.add(this.schedule(null, bufferCreationInterval));\n }, bufferCreationInterval))\n : (restartOnEmit = true);\n startBuffer();\n var bufferTimeSubscriber = new OperatorSubscriber(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}\n//# sourceMappingURL=bufferTime.js.map","import { __values } from \"tslib\";\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { arrRemove } from '../util/arrRemove';\nexport function bufferToggle(openings, closingSelector) {\n return operate(function (source, subscriber) {\n var buffers = [];\n innerFrom(openings).subscribe(new OperatorSubscriber(subscriber, function (openValue) {\n var buffer = [];\n buffers.push(buffer);\n var closingSubscription = new Subscription();\n var emitBuffer = function () {\n arrRemove(buffers, buffer);\n subscriber.next(buffer);\n closingSubscription.unsubscribe();\n };\n closingSubscription.add(innerFrom(closingSelector(openValue)).subscribe(new OperatorSubscriber(subscriber, emitBuffer, noop)));\n }, noop));\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=bufferToggle.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nexport function bufferWhen(closingSelector) {\n return 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(closingSelector()).subscribe((closingSubscriber = new OperatorSubscriber(subscriber, openBuffer, noop)));\n };\n openBuffer();\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=bufferWhen.js.map","import { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate(function (source, subscriber) {\n var innerSub = null;\n var syncUnsub = false;\n var handledResult;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, undefined, function (err) {\n handledResult = 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}\n//# sourceMappingURL=catchError.js.map","import { OperatorSubscriber } from './OperatorSubscriber';\nexport function 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(new OperatorSubscriber(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}\n//# sourceMappingURL=scanInternals.js.map","import { scanInternals } from './scanInternals';\nimport { operate } from '../util/lift';\nexport function reduce(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n//# sourceMappingURL=reduce.js.map","import { reduce } from './reduce';\nimport { operate } from '../util/lift';\nvar arrReducer = function (arr, value) { return (arr.push(value), arr); };\nexport function toArray() {\n return operate(function (source, subscriber) {\n reduce(arrReducer, [])(source).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=toArray.js.map","import { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { mergeMap } from './mergeMap';\nimport { toArray } from './toArray';\nexport function joinAllInternals(joinFn, project) {\n return pipe(toArray(), mergeMap(function (sources) { return joinFn(sources); }), project ? mapOneOrManyArgs(project) : identity);\n}\n//# sourceMappingURL=joinAllInternals.js.map","import { combineLatest } from '../observable/combineLatest';\nimport { joinAllInternals } from './joinAllInternals';\nexport function combineLatestAll(project) {\n return joinAllInternals(combineLatest, project);\n}\n//# sourceMappingURL=combineLatestAll.js.map","import { combineLatestAll } from './combineLatestAll';\nexport var combineAll = combineLatestAll;\n//# sourceMappingURL=combineAll.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { combineLatestInit } from '../observable/combineLatest';\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { popResultSelector } from '../util/args';\nexport function combineLatest() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var resultSelector = popResultSelector(args);\n return resultSelector\n ? pipe(combineLatest.apply(void 0, __spreadArray([], __read(args))), mapOneOrManyArgs(resultSelector))\n : operate(function (source, subscriber) {\n combineLatestInit(__spreadArray([source], __read(argsOrArgArray(args))))(subscriber);\n });\n}\n//# sourceMappingURL=combineLatest.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { combineLatest } from './combineLatest';\nexport function combineLatestWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return combineLatest.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n//# sourceMappingURL=combineLatestWith.js.map","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n//# sourceMappingURL=concatMap.js.map","import { concatMap } from './concatMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMapTo(innerObservable, resultSelector) {\n return isFunction(resultSelector) ? concatMap(function () { return innerObservable; }, resultSelector) : concatMap(function () { return innerObservable; });\n}\n//# sourceMappingURL=concatMapTo.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { concatAll } from './concatAll';\nimport { internalFromArray } from '../observable/fromArray';\nimport { popScheduler } from '../util/args';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n return operate(function (source, subscriber) {\n concatAll()(internalFromArray(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=concat.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { concat } from './concat';\nexport function concatWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return concat.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n//# sourceMappingURL=concatWith.js.map","import { Observable } from '../Observable';\nexport function fromSubscribable(subscribable) {\n return new Observable(function (subscriber) { return subscribable.subscribe(subscriber); });\n}\n//# sourceMappingURL=fromSubscribable.js.map","import { Subject } from '../Subject';\nimport { from } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { fromSubscribable } from '../observable/fromSubscribable';\nvar DEFAULT_CONFIG = {\n connector: function () { return new Subject(); },\n};\nexport function connect(selector, config) {\n if (config === void 0) { config = DEFAULT_CONFIG; }\n var connector = config.connector;\n return operate(function (source, subscriber) {\n var subject = connector();\n from(selector(fromSubscribable(subject))).subscribe(subscriber);\n subscriber.add(source.subscribe(subject));\n });\n}\n//# sourceMappingURL=connect.js.map","import { reduce } from './reduce';\nexport function count(predicate) {\n return reduce(function (total, value, i) { return (!predicate || predicate(value, i) ? total + 1 : total); }, 0);\n}\n//# sourceMappingURL=count.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nexport function debounce(durationSelector) {\n return 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(new OperatorSubscriber(subscriber, function (value) {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = new OperatorSubscriber(subscriber, emit, noop);\n innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = durationSubscriber = null;\n }));\n });\n}\n//# sourceMappingURL=debounce.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n//# sourceMappingURL=debounceTime.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=defaultIfEmpty.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, noop));\n });\n}\n//# sourceMappingURL=ignoreElements.js.map","import { map } from './map';\nexport function mapTo(value) {\n return map(function () { return value; });\n}\n//# sourceMappingURL=mapTo.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap(function (value, index) { return delayDurationSelector(value, index).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration = timer(due, scheduler);\n return delayWhen(function () { return duration; });\n}\n//# sourceMappingURL=delay.js.map","import { observeNotification } from '../Notification';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function dematerialize() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (notification) { return observeNotification(notification, subscriber); }));\n });\n}\n//# sourceMappingURL=dematerialize.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function distinct(keySelector, flushes) {\n return operate(function (source, subscriber) {\n var distinctKeys = new Set();\n source.subscribe(new OperatorSubscriber(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 === null || flushes === void 0 ? void 0 : flushes.subscribe(new OperatorSubscriber(subscriber, function () { return distinctKeys.clear(); }, noop));\n });\n}\n//# sourceMappingURL=distinct.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector) {\n if (keySelector === void 0) { keySelector = identity; }\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate(function (source, subscriber) {\n var previousKey;\n var first = true;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n//# sourceMappingURL=distinctUntilChanged.js.map","import { distinctUntilChanged } from './distinctUntilChanged';\nexport function distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });\n}\n//# sourceMappingURL=distinctUntilKeyChanged.js.map","import { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }\n return operate(function (source, subscriber) {\n var hasValue = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n subscriber.next(value);\n }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); }));\n });\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map","import { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { filter } from './filter';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { take } from './take';\nexport function elementAt(index, defaultValue) {\n if (index < 0) {\n throw new ArgumentOutOfRangeError();\n }\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(filter(function (v, i) { return i === index; }), take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new ArgumentOutOfRangeError(); }));\n };\n}\n//# sourceMappingURL=elementAt.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nexport function 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(source, of.apply(void 0, __spreadArray([], __read(values)))); };\n}\n//# sourceMappingURL=endWith.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function every(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=every.js.map","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustAll() {\n return operate(function (source, subscriber) {\n var isComplete = false;\n var innerSub = null;\n source.subscribe(new OperatorSubscriber(subscriber, function (inner) {\n if (!innerSub) {\n innerSub = innerFrom(inner).subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n }));\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=exhaustAll.js.map","import { exhaustAll } from './exhaustAll';\nexport var exhaust = exhaustAll;\n//# sourceMappingURL=exhaust.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) {\n return source.pipe(exhaustMap(function (a, i) { return innerFrom(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }));\n };\n }\n return operate(function (source, subscriber) {\n var index = 0;\n var innerSub = null;\n var isComplete = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (outerValue) {\n if (!innerSub) {\n innerSub = new OperatorSubscriber(subscriber, undefined, function () {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, function () {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=exhaustMap.js.map","import { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nexport function expand(project, concurrent, scheduler) {\n if (concurrent === void 0) { concurrent = Infinity; }\n concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;\n return operate(function (source, subscriber) {\n return mergeInternals(source, subscriber, project, concurrent, undefined, true, scheduler);\n });\n}\n//# sourceMappingURL=expand.js.map","import { operate } from '../util/lift';\nexport function finalize(callback) {\n return operate(function (source, subscriber) {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\n//# sourceMappingURL=finalize.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function find(predicate, thisArg) {\n return operate(createFind(predicate, thisArg, 'value'));\n}\nexport function createFind(predicate, thisArg, emit) {\n var findIndex = emit === 'index';\n return function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=find.js.map","import { operate } from '../util/lift';\nimport { createFind } from './find';\nexport function findIndex(predicate, thisArg) {\n return operate(createFind(predicate, thisArg, 'index'));\n}\n//# sourceMappingURL=findIndex.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n };\n}\n//# sourceMappingURL=first.js.map","import { __extends } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { innerFrom } from '../observable/from';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function groupBy(keySelector, elementOrOptions, duration, connector) {\n return 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 groupBySourceSubscriber = new GroupBySubscriber(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()));\n var grouped = createGroupedObservable(key_1, group_1);\n subscriber.next(grouped);\n if (duration) {\n var durationSubscriber_1 = new OperatorSubscriber(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(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(); });\n source.subscribe(groupBySourceSubscriber);\n function createGroupedObservable(key, groupSubject) {\n var result = new Observable(function (groupSubscriber) {\n groupBySourceSubscriber.activeGroups++;\n var innerSub = groupSubject.subscribe(groupSubscriber);\n return function () {\n innerSub.unsubscribe();\n --groupBySourceSubscriber.activeGroups === 0 &&\n groupBySourceSubscriber.teardownAttempted &&\n groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\nvar GroupBySubscriber = (function (_super) {\n __extends(GroupBySubscriber, _super);\n function GroupBySubscriber() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeGroups = 0;\n _this.teardownAttempted = false;\n return _this;\n }\n GroupBySubscriber.prototype.unsubscribe = function () {\n this.teardownAttempted = true;\n this.activeGroups === 0 && _super.prototype.unsubscribe.call(this);\n };\n return GroupBySubscriber;\n}(OperatorSubscriber));\n//# sourceMappingURL=groupBy.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function isEmpty() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function () {\n subscriber.next(false);\n subscriber.complete();\n }, function () {\n subscriber.next(true);\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=isEmpty.js.map","import { __values } from \"tslib\";\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function takeLast(count) {\n return count <= 0\n ? function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var buffer = [];\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n buffer.push(value);\n count < buffer.length && buffer.shift();\n }, function () {\n var e_1, _a;\n try {\n for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {\n var value = buffer_1_1.value;\n subscriber.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n }, undefined, function () {\n buffer = null;\n }));\n });\n}\n//# sourceMappingURL=takeLast.js.map","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\nexport function last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));\n };\n}\n//# sourceMappingURL=last.js.map","import { Notification } from '../Notification';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function materialize() {\n return operate(function (source, subscriber) {\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n subscriber.next(Notification.createNext(value));\n }, function () {\n subscriber.next(Notification.createComplete());\n subscriber.complete();\n }, function (err) {\n subscriber.next(Notification.createError(err));\n subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=materialize.js.map","import { reduce } from './reduce';\nimport { isFunction } from '../util/isFunction';\nexport function max(comparer) {\n return reduce(isFunction(comparer) ? function (x, y) { return (comparer(x, y) > 0 ? x : y); } : function (x, y) { return (x > y ? x : y); });\n}\n//# sourceMappingURL=max.js.map","import { mergeMap } from './mergeMap';\nexport var flatMap = mergeMap;\n//# sourceMappingURL=flatMap.js.map","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMapTo(innerObservable, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function () { return innerObservable; }, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap(function () { return innerObservable; }, concurrent);\n}\n//# sourceMappingURL=mergeMapTo.js.map","import { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nexport function mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return operate(function (source, subscriber) {\n var state = seed;\n return mergeInternals(source, subscriber, function (value, index) { return accumulator(state, value, index); }, concurrent, function (value) {\n state = value;\n }, false, undefined, function () { return (state = null); });\n });\n}\n//# sourceMappingURL=mergeScan.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { internalFromArray } from '../observable/fromArray';\nimport { mergeAll } from './mergeAll';\nimport { popNumber, popScheduler } from '../util/args';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n args = argsOrArgArray(args);\n return operate(function (source, subscriber) {\n mergeAll(concurrent)(internalFromArray(__spreadArray([source], __read(args)), scheduler)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=merge.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { merge } from './merge';\nexport function mergeWith() {\n var otherSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherSources[_i] = arguments[_i];\n }\n return merge.apply(void 0, __spreadArray([], __read(otherSources)));\n}\n//# sourceMappingURL=mergeWith.js.map","import { reduce } from './reduce';\nimport { isFunction } from '../util/isFunction';\nexport function min(comparer) {\n return reduce(isFunction(comparer) ? function (x, y) { return (comparer(x, y) < 0 ? x : y); } : function (x, y) { return (x < y ? x : y); });\n}\n//# sourceMappingURL=min.js.map","import { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { isFunction } from '../util/isFunction';\nimport { connect } from './connect';\nexport function multicast(subjectOrSubjectFactory, selector) {\n var subjectFactory = isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () { return subjectOrSubjectFactory; };\n if (isFunction(selector)) {\n return connect(selector, {\n connector: subjectFactory,\n });\n }\n return function (source) { return new ConnectableObservable(source, subjectFactory); };\n}\n//# sourceMappingURL=multicast.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n//# sourceMappingURL=pairwise.js.map","import { map } from './map';\nexport function 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(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}\n//# sourceMappingURL=pluck.js.map","import { Subject } from '../Subject';\nimport { multicast } from './multicast';\nimport { connect } from './connect';\nexport function publish(selector) {\n return selector ? function (source) { return connect(selector)(source); } : function (source) { return multicast(new Subject())(source); };\n}\n//# sourceMappingURL=publish.js.map","import { BehaviorSubject } from '../BehaviorSubject';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nexport function publishBehavior(initialValue) {\n return function (source) {\n var subject = new BehaviorSubject(initialValue);\n return new ConnectableObservable(source, function () { return subject; });\n };\n}\n//# sourceMappingURL=publishBehavior.js.map","import { AsyncSubject } from '../AsyncSubject';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nexport function publishLast() {\n return function (source) {\n var subject = new AsyncSubject();\n return new ConnectableObservable(source, function () { return subject; });\n };\n}\n//# sourceMappingURL=publishLast.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\nimport { isFunction } from '../util/isFunction';\nexport function publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {\n if (selectorOrScheduler && !isFunction(selectorOrScheduler)) {\n timestampProvider = selectorOrScheduler;\n }\n var selector = isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;\n return function (source) { return multicast(new ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source); };\n}\n//# sourceMappingURL=publishReplay.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { raceInit } from '../observable/race';\nimport { operate } from '../util/lift';\nimport { identity } from '../util/identity';\nexport function 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\n : operate(function (source, subscriber) {\n raceInit(__spreadArray([source], __read(otherSources)))(subscriber);\n });\n}\n//# sourceMappingURL=raceWith.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function repeat(count) {\n if (count === void 0) { count = Infinity; }\n return count <= 0\n ? function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n var subscribeForRepeat = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, function () {\n if (++soFar < count) {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRepeat();\n }\n else {\n syncUnsub = true;\n }\n }\n else {\n subscriber.complete();\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRepeat();\n }\n };\n subscribeForRepeat();\n });\n}\n//# sourceMappingURL=repeat.js.map","import { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function repeatWhen(notifier) {\n return 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();\n notifier(completions$).subscribe(new OperatorSubscriber(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(new OperatorSubscriber(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}\n//# sourceMappingURL=repeatWhen.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/from';\nexport function 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\n : operate(function (source, subscriber) {\n var soFar = 0;\n var innerSub;\n var subscribeForRetry = function () {\n var syncUnsub = false;\n innerSub = source.subscribe(new OperatorSubscriber(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(delay) : innerFrom(delay(err, soFar));\n var notifierSubscriber_1 = new OperatorSubscriber(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}\n//# sourceMappingURL=retry.js.map","import { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function retryWhen(notifier) {\n return operate(function (source, subscriber) {\n var innerSub;\n var syncResub = false;\n var errors$;\n var subscribeForRetryWhen = function () {\n innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, undefined, function (err) {\n if (!errors$) {\n errors$ = new Subject();\n notifier(errors$).subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=retryWhen.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function sample(notifier) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var lastValue = null;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n lastValue = value;\n }));\n var emit = function () {\n if (hasValue) {\n hasValue = false;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n notifier.subscribe(new OperatorSubscriber(subscriber, emit, noop));\n });\n}\n//# sourceMappingURL=sample.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { sample } from './sample';\nimport { interval } from '../observable/interval';\nexport function sampleTime(period, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return sample(interval(period, scheduler));\n}\n//# sourceMappingURL=sampleTime.js.map","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n//# sourceMappingURL=scan.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function sequenceEqual(compareTo, comparator) {\n if (comparator === void 0) { comparator = function (a, b) { return a === b; }; }\n return 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 = new OperatorSubscriber(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 compareTo.subscribe(createSubscriber(bState, aState));\n });\n}\nfunction createState() {\n return {\n buffer: [],\n complete: false,\n };\n}\n//# sourceMappingURL=sequenceEqual.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { from } from '../observable/from';\nimport { take } from '../operators/take';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection = null;\n var resetConnection = null;\n var subject = null;\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 = null;\n };\n var reset = function () {\n cancelReset();\n connection = subject = null;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n from(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return null;\n }\n if (on === false) {\n return null;\n }\n return on.apply(void 0, __spreadArray([], __read(args))).pipe(take(1))\n .subscribe(function () { return reset(); });\n}\n//# sourceMappingURL=share.js.map","import { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n var _a, _b;\n var bufferSize;\n var refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n bufferSize = (_a = configOrBufferSize.bufferSize) !== null && _a !== void 0 ? _a : Infinity;\n windowTime = (_b = configOrBufferSize.windowTime) !== null && _b !== void 0 ? _b : Infinity;\n refCount = !!configOrBufferSize.refCount;\n scheduler = configOrBufferSize.scheduler;\n }\n else {\n bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity;\n }\n return share({\n connector: function () { return new ReplaySubject(bufferSize, windowTime, scheduler); },\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount\n });\n}\n//# sourceMappingURL=shareReplay.js.map","import { EmptyError } from '../util/EmptyError';\nimport { SequenceError } from '../util/SequenceError';\nimport { NotFoundError } from '../util/NotFoundError';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function single(predicate) {\n return operate(function (source, subscriber) {\n var hasValue = false;\n var singleValue;\n var seenValue = false;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n seenValue = true;\n if (!predicate || predicate(value, index++, source)) {\n hasValue && subscriber.error(new 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('No matching values') : new EmptyError());\n }\n }));\n });\n}\n//# sourceMappingURL=single.js.map","import { filter } from './filter';\nexport function skip(count) {\n return filter(function (_, index) { return count <= index; });\n}\n//# sourceMappingURL=skip.js.map","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function skipLast(skipCount) {\n return skipCount <= 0\n ?\n identity\n : operate(function (source, subscriber) {\n var ring = new Array(skipCount);\n var seen = 0;\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=skipLast.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nimport { noop } from '../util/noop';\nexport function skipUntil(notifier) {\n return operate(function (source, subscriber) {\n var taking = false;\n var skipSubscriber = new OperatorSubscriber(subscriber, function () {\n skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe();\n taking = true;\n }, noop);\n innerFrom(notifier).subscribe(skipSubscriber);\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return taking && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=skipUntil.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function skipWhile(predicate) {\n return operate(function (source, subscriber) {\n var taking = false;\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=skipWhile.js.map","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var scheduler = popScheduler(values);\n return operate(function (source, subscriber) {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=startWith.js.map","import { innerFrom } from '../observable/from';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = new OperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\nexport function switchAll() {\n return switchMap(identity);\n}\n//# sourceMappingURL=switchAll.js.map","import { switchMap } from './switchMap';\nimport { isFunction } from '../util/isFunction';\nexport function switchMapTo(innerObservable, resultSelector) {\n return isFunction(resultSelector) ? switchMap(function () { return innerObservable; }, resultSelector) : switchMap(function () { return innerObservable; });\n}\n//# sourceMappingURL=switchMapTo.js.map","import { switchMap } from './switchMap';\nimport { operate } from '../util/lift';\nexport function switchScan(accumulator, seed) {\n return operate(function (source, subscriber) {\n var state = seed;\n 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}\n//# sourceMappingURL=switchScan.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate(function (source, subscriber) {\n innerFrom(notifier).subscribe(new OperatorSubscriber(subscriber, function () { return subscriber.complete(); }, noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=takeUntil.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function takeWhile(predicate, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=takeWhile.js.map","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n var tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error: error, complete: complete }\n : observerOrNext;\n return tapObserver\n ? operate(function (source, subscriber) {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n var isUnsub = true;\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, function () {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, function (err) {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, function () {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n//# sourceMappingURL=tap.js.map","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nexport var defaultThrottleConfig = {\n leading: true,\n trailing: false,\n};\nexport function throttle(durationSelector, _a) {\n var _b = _a === void 0 ? defaultThrottleConfig : _a, leading = _b.leading, trailing = _b.trailing;\n return operate(function (source, subscriber) {\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(durationSelector(value)).subscribe(new OperatorSubscriber(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(new OperatorSubscriber(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}\n//# sourceMappingURL=throttle.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { defaultThrottleConfig, throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n if (config === void 0) { config = defaultThrottleConfig; }\n var duration$ = timer(duration, scheduler);\n return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","import { async } from '../scheduler/async';\nimport { scan } from './scan';\nimport { defer } from '../observable/defer';\nimport { map } from './map';\nexport function timeInterval(scheduler) {\n if (scheduler === void 0) { scheduler = async; }\n return function (source) {\n return defer(function () {\n return source.pipe(scan(function (_a, value) {\n var current = _a.current;\n return ({ value: value, current: scheduler.now(), last: current });\n }, {\n current: scheduler.now(),\n value: undefined,\n last: undefined,\n }), map(function (_a) {\n var current = _a.current, last = _a.last, value = _a.value;\n return new TimeInterval(value, current - last);\n }));\n });\n };\n}\nvar TimeInterval = (function () {\n function TimeInterval(value, interval) {\n this.value = value;\n this.interval = interval;\n }\n return TimeInterval;\n}());\nexport { TimeInterval };\n//# sourceMappingURL=timeInterval.js.map","import { async } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { timeout } from './timeout';\nexport function timeoutWith(due, withObservable, scheduler) {\n var first;\n var each;\n var _with;\n scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : async;\n if (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({\n first: first,\n each: each,\n scheduler: scheduler,\n with: _with,\n });\n}\n//# sourceMappingURL=timeoutWith.js.map","import { dateTimestampProvider } from '../scheduler/dateTimestampProvider';\nimport { map } from './map';\nexport function timestamp(timestampProvider) {\n if (timestampProvider === void 0) { timestampProvider = dateTimestampProvider; }\n return map(function (value) { return ({ value: value, timestamp: timestampProvider.now() }); });\n}\n//# sourceMappingURL=timestamp.js.map","import { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function window(windowBoundaries) {\n return operate(function (source, subscriber) {\n var windowSubject = new Subject();\n subscriber.next(windowSubject.asObservable());\n var errorHandler = function (err) {\n windowSubject.error(err);\n subscriber.error(err);\n };\n source.subscribe(new OperatorSubscriber(subscriber, function (value) { return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value); }, function () {\n windowSubject.complete();\n subscriber.complete();\n }, errorHandler));\n windowBoundaries.subscribe(new OperatorSubscriber(subscriber, function () {\n windowSubject.complete();\n subscriber.next((windowSubject = new Subject()));\n }, noop, errorHandler));\n return function () {\n windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe();\n windowSubject = null;\n };\n });\n}\n//# sourceMappingURL=window.js.map","import { __values } from \"tslib\";\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function windowCount(windowSize, startWindowEvery) {\n if (startWindowEvery === void 0) { startWindowEvery = 0; }\n var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;\n return operate(function (source, subscriber) {\n var windows = [new Subject()];\n var starts = [];\n var count = 0;\n subscriber.next(windows[0].asObservable());\n source.subscribe(new OperatorSubscriber(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();\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}\n//# sourceMappingURL=windowCount.js.map","import { Subject } from '../Subject';\nimport { asyncScheduler } from '../scheduler/async';\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { popScheduler } from '../util/args';\nexport function 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 = popScheduler(otherArgs)) !== null && _a !== void 0 ? _a : asyncScheduler;\n var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null;\n var maxWindowSize = otherArgs[1] || Infinity;\n return 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(windowRecords, record);\n restartOnClose && startWindow();\n };\n var startWindow = function () {\n if (windowRecords) {\n var subs = new Subscription();\n subscriber.add(subs);\n var window_1 = new 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 subs.add(scheduler.schedule(function () { return closeWindow(record_1); }, windowTimeSpan));\n }\n };\n windowCreationInterval !== null && windowCreationInterval >= 0\n ?\n subscriber.add(scheduler.schedule(function () {\n startWindow();\n !this.closed && subscriber.add(this.schedule(null, windowCreationInterval));\n }, windowCreationInterval))\n : (restartOnClose = true);\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(new OperatorSubscriber(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}\n//# sourceMappingURL=windowTime.js.map","import { __values } from \"tslib\";\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/from';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { arrRemove } from '../util/arrRemove';\nexport function windowToggle(openings, closingSelector) {\n return 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(openings).subscribe(new OperatorSubscriber(subscriber, function (openValue) {\n var window = new Subject();\n windows.push(window);\n var closingSubscription = new Subscription();\n var closeWindow = function () {\n arrRemove(windows, window);\n window.complete();\n closingSubscription.unsubscribe();\n };\n var closingNotifier;\n try {\n closingNotifier = innerFrom(closingSelector(openValue));\n }\n catch (err) {\n handleError(err);\n return;\n }\n subscriber.next(window.asObservable());\n closingSubscription.add(closingNotifier.subscribe(new OperatorSubscriber(subscriber, closeWindow, noop, handleError)));\n }, noop));\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=windowToggle.js.map","import { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nexport function windowWhen(closingSelector) {\n return 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();\n subscriber.next(window.asObservable());\n var closingNotifier;\n try {\n closingNotifier = innerFrom(closingSelector());\n }\n catch (err) {\n handleError(err);\n return;\n }\n closingNotifier.subscribe((closingSubscriber = new OperatorSubscriber(subscriber, openWindow, openWindow, handleError)));\n };\n openWindow();\n source.subscribe(new OperatorSubscriber(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}\n//# sourceMappingURL=windowWhen.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/from';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom() {\n var inputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n inputs[_i] = arguments[_i];\n }\n var project = popResultSelector(inputs);\n return operate(function (source, subscriber) {\n var len = inputs.length;\n var otherValues = new Array(len);\n var hasValue = inputs.map(function () { return false; });\n var ready = false;\n var _loop_1 = function (i) {\n innerFrom(inputs[i]).subscribe(new OperatorSubscriber(subscriber, function (value) {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n source.subscribe(new OperatorSubscriber(subscriber, function (value) {\n if (ready) {\n var values = __spreadArray([value], __read(otherValues));\n subscriber.next(project ? project.apply(void 0, __spreadArray([], __read(values))) : values);\n }\n }));\n });\n}\n//# sourceMappingURL=withLatestFrom.js.map","import { zip } from '../observable/zip';\nimport { joinAllInternals } from './joinAllInternals';\nexport function zipAll(project) {\n return joinAllInternals(zip, project);\n}\n//# sourceMappingURL=zipAll.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { zip as zipStatic } from '../observable/zip';\nimport { operate } from '../util/lift';\nexport function zip() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return operate(function (source, subscriber) {\n zipStatic.apply(void 0, __spreadArray([source], __read(sources))).subscribe(subscriber);\n });\n}\n//# sourceMappingURL=zip.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { zip } from './zip';\nexport function zipWith() {\n var otherInputs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n otherInputs[_i] = arguments[_i];\n }\n return zip.apply(void 0, __spreadArray([], __read(otherInputs)));\n}\n//# sourceMappingURL=zipWith.js.map","import { Subject } from \"rxjs\";\nimport { EventName, LayerName } from \"..\";\nimport { ITheme, IThemeOverrides } from \"../configure/interfaces\";\nimport { IUserInfo } from \"../session/interfaces\";\nimport { IPromisified, INotifyFramework } from \"./interfaces\";\n\ntype PromiseRegistry = { [name: string]: Promisified<any> };\n\nconst ASYNC_DATA_NAME = {\n SESSION_READY: \"sessionReady\",\n LANG_READY: \"langReady\",\n SKIN_READY: \"skinReady\",\n OVERRIDE_READY: \"overrideReady\",\n} as const;\n\n/** Utility class */\n//-------------------------------------\nexport class Promisified<T> implements IPromisified<T> {\n //-------------------------------------\n private _resolution?: (value: T | PromiseLike<T>) => void;\n private _rejection?: (reason?: any) => void;\n private _promise = new Promise<T>((_resolve, _reject) => {\n this._resolution = _resolve;\n this._rejection = _reject;\n });\n get promise(): Promise<T> {\n return this._promise;\n }\n resolve(value: T | PromiseLike<T>) {\n this._resolution && this._resolution(value);\n }\n reject(reason?: any) {\n this._rejection && this._rejection(reason);\n }\n}\n\n/** The notify framework implementation. */\n//-------------------------------------\nclass NotifyFramework implements INotifyFramework {\n //-------------------------------------\n private promises: PromiseRegistry = {};\n private subject: Subject<{\n name: EventName;\n layer: LayerName | string;\n data?: any;\n }> = new Subject();\n\n private asyncData<T>(asyncDataName: string): Promisified<T> {\n if (typeof this.promises[asyncDataName] === \"undefined\") {\n this.promises[asyncDataName] =\n new Promisified<T>() as unknown as Promisified<any>;\n }\n return this.promises[asyncDataName] as unknown as Promisified<T>;\n }\n\n public onSessionReady(): IPromisified<IUserInfo> {\n return this.asyncData<IUserInfo>(ASYNC_DATA_NAME.SESSION_READY);\n }\n\n public onLangReady(): IPromisified<string> {\n return this.asyncData<string>(ASYNC_DATA_NAME.LANG_READY);\n }\n\n public onSkinReady(): Promisified<ITheme> {\n return this.asyncData<ITheme>(ASYNC_DATA_NAME.SKIN_READY);\n }\n\n public onOverridesReady(): Promisified<IThemeOverrides> {\n return this.asyncData<IThemeOverrides>(ASYNC_DATA_NAME.OVERRIDE_READY);\n }\n\n public promisify<T>(): IPromisified<T> {\n return new Promisified<T>();\n }\n\n public events(): Subject<{\n name: EventName;\n layer: LayerName | string;\n data?: any;\n }> {\n return this.subject;\n }\n}\n\n/** The whole framework is a singleton. */\nexport const notify: NotifyFramework = new NotifyFramework();\n","import { Subject } from \"rxjs\";\nimport { ITheme, IThemeOverrides } from \"../configure/interfaces\";\nimport { IUserInfo } from \"../session/interfaces\";\nimport { notify } from \"./Framework\";\n\n//-------------------------------------\nexport abstract class NotifyFrameworkFactory {\n //-------------------------------------\n static instance(): INotifyFramework {\n return notify;\n }\n}\n\n//-------------------------------------\nexport interface INotifyFramework {\n //-------------------------------------\n /**\n * Notify that a process is done and data ready or rejected.\n * Utility method : wrap your own Promise.\n * Or use one of the predefined promises.\n */\n promisify<T>(): IPromisified<T>;\n\n /**\n * Notify that a process is done and data ready or rejected.\n * Promise / resolve / reject of current user's language.\n */\n onLangReady(): IPromisified<string>;\n\n /**\n * Notify that a process is done and data ready or rejected.\n * Promise / resolve / reject of current user's session.\n */\n onSessionReady(): IPromisified<IUserInfo>;\n\n /**\n * Notify that a process is done and data ready or rejected.\n * This data is not intended to change after being resolved.\n * Promise / resolve / reject of asynchronous skin.\n */\n onSkinReady(): IPromisified<ITheme>;\n\n /**\n * Notify that a process is done and data ready or rejected.\n * This data is not intended to change after being resolved.\n * Promise / resolve / reject of asynchronous skin overrides.\n */\n onOverridesReady(): IPromisified<IThemeOverrides>;\n\n /**\n * Notify that an event occured.\n * By definition, an event can occur multiple times (otherwise it is a one-time \"process\", see above) and be watched by many targets.\n * => We use RxJS Subject to model events stream with many potential subscribers.\n */\n events(): Subject<{ name: EventName; layer: LayerName | string; data?: any }>;\n}\n\n//-------------------------------------\nexport interface IPromisified<T> {\n //-------------------------------------\n readonly promise: Promise<T>;\n resolve: (value: T | PromiseLike<T>) => void;\n reject: (reason?: any) => void;\n}\n\n//-------------------------------------\nexport const LAYER_NAME = {\n //-------------------------------------\n WIDGETS: \"widgets\",\n EXPLORER: \"explorer\",\n} as const;\nexport type LayerName = (typeof LAYER_NAME)[keyof typeof LAYER_NAME];\n\n//-------------------------------------\nexport const EVENT_NAME = {\n //-------------------------------------\n USERPREF_CHANGED: \"userprefChanged\",\n SEARCH_RESULTED: \"searchResulted\",\n} as const;\nexport type EventName = (typeof EVENT_NAME)[keyof typeof EVENT_NAME];\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","module.exports = require('./lib/axios');","import axios, {\n AxiosError,\n AxiosInstance,\n // AxiosRequestConfig,\n AxiosResponse,\n} from \"axios\";\nimport { ConfigurationFrameworkFactory } from \"..\";\nimport { ERROR_CODE } from \"../globals\";\nimport { IHttp, IHttpParams, IHttpResponse } from \"./interfaces\";\n\nconst loadedScripts: { [url: string]: boolean } = {};\n\nexport class Http implements IHttp {\n // Axios automatically manages the XSRF-TOKEN cookie and the X-XSRF-TOKEN HTTP header.\n private axios: AxiosInstance;\n\n private _latestResponse: any;\n\n constructor(params?: any) {\n this.axios = axios.create(params);\n }\n\n setCdn(cdnUrl: string): void {\n if (\n cdnUrl &&\n XMLHttpRequest &&\n !(XMLHttpRequest.prototype as any)[\"cdnUrl\"]\n ) {\n (XMLHttpRequest.prototype as any)[\"cdnUrl\"] = cdnUrl;\n (XMLHttpRequest.prototype as any).baseOpen =\n XMLHttpRequest.prototype.open;\n XMLHttpRequest.prototype.open = function () {\n const url = arguments[1] as string;\n //PUBLIC infra\n if (url.startsWith(\"/infra/public\")) {\n arguments[1] = cdnUrl + url;\n }\n //PUBLIC files (/.*/public)\n const match = /^\\/([^\\/]*)\\/public/.test(url);\n if (match) {\n arguments[1] = cdnUrl + url;\n }\n //ASSETS files\n if (url.startsWith(\"/assets\")) {\n arguments[1] = cdnUrl + url;\n }\n //SKIP PUBLIC CONF\n if (url == \"/conf/public\") {\n arguments[1] = url;\n }\n //SKIP HTTP\n if (url.startsWith(\"http\")) {\n arguments[1] = url;\n }\n return (this as any).baseOpen.apply(this, arguments);\n };\n }\n }\n\n // private toAxiosConfig(params?: IHttpParams): AxiosRequestConfig {\n private toAxiosConfig(params?: IHttpParams): any {\n if (!params) {\n return this.axios.defaults;\n } else {\n const p = Object.assign({}, this.axios.defaults);\n\n if (params.headers) {\n if (p.headers)\n p.headers = Object.assign({}, this.axios.defaults.headers);\n Object.assign(p.headers, params.headers);\n }\n\n if (params.responseType) {\n p.responseType = params.responseType;\n }\n\n if (params.queryParams) {\n // Axios will serialize parameters, see https://github.com/axios/axios#request-config\n p.params = Object.assign({}, params.queryParams);\n }\n\n /* TODO : manage params.requestName through an events[]. See infra-front http.ts */\n\n return p;\n }\n }\n\n private toCdnUrl(url: string) {\n const CDN_DOMAIN: string | undefined =\n ConfigurationFrameworkFactory.instance().Platform.cdnDomain;\n // If CDN domain is defined, and requested url is not /public/conf (SKIP PUBLIC CONF)\n if (CDN_DOMAIN?.length > 0 && url !== \"/conf/public\") {\n const originalURL = \"\" + url;\n //PUBLIC infra or ASSETS files\n if (\n originalURL.startsWith(\"/infra/public\") ||\n originalURL.startsWith(\"/assets\")\n ) {\n url = CDN_DOMAIN + originalURL;\n } else {\n //PUBLIC files (/.*/public)\n const match = /^\\/([^\\/]*)\\/public/.test(originalURL);\n if (match) {\n url = CDN_DOMAIN + originalURL;\n }\n }\n }\n return url;\n }\n\n private mapAxiosError<R>(error: AxiosError<R>, params?: IHttpParams): R {\n // AxiosError.response and our HttpResponse share the same properties.\n // So we can use it directly, saving CPU and memory.\n // Otherwise, we would map the axios response to our own model.\n if (error.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n this._latestResponse = error.response;\n } else if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n this._latestResponse = {\n status: 408,\n statusText: ERROR_CODE.TIME_OUT,\n };\n } else {\n // Something happened in setting up the request that triggered an Error\n this._latestResponse = {\n status: 500,\n statusText: ERROR_CODE.UNKNOWN,\n };\n }\n\n /* TODO : manage params.requestName through an events[]. See infra-front http.ts */\n\n // Notify error unless disabled.\n if (!params || params.disableNotifications === false) {\n // FIXME This really should be an rxjs Subject\n // notify.onEvent( EVENT_NAME.HTTP_ERROR ).next( new HttpErrorNotice(''+this._latestResponse.status, this._latestResponse.statusText) );\n }\n\n return this._latestResponse;\n }\n\n private mapAxiosResponse<R>(\n response: AxiosResponse<R>,\n params?: IHttpParams,\n ): R {\n // AxiosResponse and our HttpResponse share the same properties.\n // So we can use it directly, saving CPU and memory.\n // Otherwise, we would map the axios response to our own model.\n this._latestResponse = response;\n /* TODO : manage params.requestName through an events[]. See infra-front http.ts */\n //FIXME: should we check response.status and only accept if range is 2xx ?\n return response.data;\n }\n\n get latestResponse(): IHttpResponse {\n return this._latestResponse;\n }\n\n get<R = any>(url: string, params?: IHttpParams): Promise<R> {\n return this.axios\n .get<R>(this.toCdnUrl(url), this.toAxiosConfig(params))\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n post<R = any>(url: string, data?: any, params?: IHttpParams): Promise<R> {\n return this.axios\n .post<R>(url, data, this.toAxiosConfig(params))\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n postFile<R = any>(url: string, data: any, params?: IHttpParams): Promise<R> {\n const p = this.toAxiosConfig(params);\n if (p.headers && p.headers[\"Content-Type\"]) {\n delete p.headers[\"Content-Type\"];\n }\n return this.axios\n .post<R>(url, data, p)\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n postJson<R = any>(url: string, json: any, params?: IHttpParams): Promise<R> {\n const p = this.toAxiosConfig();\n if (p.headers) p.headers[\"Content-Type\"] = \"application/json\";\n return this.axios\n .post<R>(url, json, this.toAxiosConfig(params))\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n put<R = any>(url: string, data?: any, params?: IHttpParams): Promise<R> {\n return this.axios\n .put<R>(url, data, this.toAxiosConfig(params))\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n /*\n putFile(url: string, data:FormData, opt?:any) {\n //TODO\n return this.axios.putFile(url, data, opt).then( r => this.mapAxiosResponse(r,params));\n }\n*/\n putJson<R = any>(url: string, json: any, params?: IHttpParams): Promise<R> {\n const p = this.toAxiosConfig(params);\n if (p.headers) p.headers[\"Content-Type\"] = \"application/json\";\n return this.axios\n .put<R>(url, json, p)\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n delete<R = any>(url: string, params?: IHttpParams): Promise<R> {\n return this.axios\n .delete<R>(url, this.toAxiosConfig(params))\n .then((r) => this.mapAxiosResponse(r, params))\n .catch<R>((e) => this.mapAxiosError(e, params));\n }\n deleteJson<R = any>(url: string, json: any): Promise<R> {\n return this.axios\n .delete<R>(url, { data: json })\n .then((r) => this.mapAxiosResponse(r))\n .catch<R>((e) => this.mapAxiosError(e));\n }\n\n getScript<R = any>(\n url: string,\n params?: IHttpParams,\n variableName?: string,\n ): Promise<R> {\n const resultName = variableName ?? \"exports\";\n const p = this.toAxiosConfig(params);\n if (p.headers) p.headers[\"Accept\"] = \"application/javascript\";\n return this.axios\n .get<string>(this.toCdnUrl(url), p)\n .then((r) => this.mapAxiosResponse(r, params))\n .then((r) => {\n try {\n const securedScript = `\"use strict\";var ${\n resultName.split(\".\")[0]\n }={};${r};return ${resultName};`;\n const result = Function(securedScript)();\n return result;\n } catch (e) {\n const result = r;\n return result;\n }\n })\n .catch<R>((e) => {\n this.mapAxiosError(e, params);\n throw e;\n });\n }\n\n loadScript(url: string, params?: IHttpParams): Promise<void> {\n return loadedScripts[url]\n ? Promise.resolve()\n : this.getScript(url, params).then((res) => {\n loadedScripts[url] = true;\n });\n }\n}\n\n/*\nvar loadedScripts = {};\n\nexport class Http {\n statusCallbacks = {};\n\n serialize(obj:any) {\n var str = [];\n for (var p in obj) {\n if (obj.hasOwnProperty(p)) {\n if (obj[p] instanceof Array) {\n for (var i = 0; i < obj[p].length; i++) {\n if (typeof obj[p][i] === 'object') {\n throw new TypeError(\"Arrays sent as URIs can't contain objects\");\n }\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(obj[p][i]))\n }\n }\n else {\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(obj[p]));\n }\n }\n }\n return str.join(\"&\");\n }\n\n events: any = {\n };\n\n bind(eventName:string, handler:Function) {\n this.events[eventName] = handler;\n };\n\n parseUrl(path, item) {\n var matchParams = new RegExp(':[a-zA-Z0-9_.]+', \"g\");\n var params = path.match(matchParams);\n if (!params) {\n params = [];\n }\n var getProp = function (prop, obj) {\n if (prop.indexOf('.') === -1) {\n return obj[prop];\n }\n return getProp(prop.split('.').splice(1).join('.'), obj[prop.split('.')[0]])\n }\n params.forEach(function (param) {\n var prop = param.split(':')[1];\n\n var data = getProp(prop, item) || '';\n path = path.replace(param, data);\n });\n return path;\n };\n\n request(url, params) {\n var that = this;\n params.url = url;\n params.cache = false;\n\n if (!params.headers) {\n params.headers = {};\n }\n if (xsrfCookie) {\n params.headers['X-XSRF-TOKEN'] = xsrfCookie.val;\n }\n\n var requestName = params.requestName;\n if (requestName && that.events['request-started.' + requestName]) {\n that.events['request-started.' + requestName]();\n }\n\n this.xhr = $.ajax(params)\n .done(function (e, statusTexvoid, xhr) {\n if (typeof that.statusCallbacks.done === 'function') {\n if (document.cookie === '' && typeof Http.prototype.events.disconnected === 'function') {\n that.events.disconnected(e, statusTexvoid, xhr);\n }\n that.statusCallbacks.done(e, statusTexvoid, xhr);\n }\n if (requestName && that.events['request-ended.' + requestName]) {\n that.events['request-ended.' + requestName]();\n }\n })\n .fail(function (e) {\n if (requestName && that.events['request-ended.' + requestName]) {\n that.events['request-ended.' + requestName]();\n }\n\n if (typeof that.statusCallbacks['e' + e.status] === 'function') {\n that.statusCallbacks['e' + e.status].call(thavoid, e);\n }\n else if (typeof that.statusCallbacks.error === 'function') {\n that.statusCallbacks.error.call(thavoid, e);\n }\n else {\n if (!params.disableNotifications && e.status !== 0) {\n notify.error(\"e\" + e.status);\n }\n }\n\n console.log('HTTP error:' + e.status);\n console.log(e);\n });\n return this;\n }\n}\n*/\n/*\nexport function http = (function () {\n var statusEvents = ['done', 'error', 'e401', 'e404', 'e409', 'e500', 'e400', 'e413', 'e504', 'e0'];\n var xsrfCookie;\n if (document.cookie) {\n var cookies = _.map(document.cookie.split(';'), function (c) {\n return {\n name: c.split('=')[0].trim(),\n val: c.split('=')[1].trim()\n };\n });\n xsrfCookie = _.findWhere(cookies, { name: 'XSRF-TOKEN' });\n }\n\n statusEvents.forEach(function (event) {\n Http.prototype[event] = function (callback) {\n this.statusCallbacks[event] = callback;\n return this;\n }\n });\n\n Http.prototype.postFile = function (url, data, params) {\n if (typeof params !== 'object') {\n params = {};\n }\n params.contentType = false;\n params.processData = false;\n\n return this.post(url, data, params)\n };\n\n Http.prototype.putFile = function (url, data, params) {\n if (typeof params !== 'object') {\n params = {};\n }\n params.contentType = false;\n params.processData = false;\n\n return this.put(url, data, params)\n };\n\n Http.prototype.loadScript = function (url, data?: any, params?: any, requestName?: string): Promise<any> {\n return new Promise<void>((resolve, reject) => {\n if (loadedScripts[url]) {\n resolve(loadedScripts[url]);\n return;\n }\n this.get(url, data, params, requestName).done(() => {\n loadedScripts[url] = true;\n resolve();\n });\n });\n }\n\n var requestTypes = ['get', 'post', 'put', 'delete'];\n requestTypes.forEach(function (type) {\n Http.prototype[type + 'Json'] = function (url, data, params, requestName) {\n if (!params) {\n params = {};\n }\n params.contentType = 'application/json';\n params.data = angular.toJson(data);\n params.type = type.toUpperCase();\n return this.request(url, params, requestName);\n };\n Http.prototype[type] = function (url, data, params, requestName) {\n var that = this;\n\n if (!params) {\n params = {};\n }\n if (typeof data === 'object' || typeof data === 'string') {\n if (type === 'get' || type === 'delete') {\n if (url.indexOf('?') !== -1) {\n url += '&' + that.serialize(data);\n }\n else {\n url += '?' + that.serialize(data);\n }\n }\n else {\n params.data = data;\n }\n }\n params.type = type.toUpperCase();\n return this.request(url, params, requestName);\n };\n });\n\n return function () {\n return new Http();\n }\n}());\n*/\n\n/*\nexport let toFormData: (obj) => string = http().serialize;\n*/\n\n/**\n * Promisified HTTP\n */\n/*\nexport type Promise<R> = Promise<R> & { e400: (e) => void }\nexport class HttpPromisified<T> {\n constructor(private inner?: any) {\n if (!this.inner) {\n this.inner = http();\n }\n }\n private promisify(req: any): Promise<R> {\n const p = new Promise<R>((resolve, reject) => {\n if (req.xhr && req.xhr.status == 0) { reject(); return; }\n req.done(e => resolve(e)).error(e => reject(e));\n });\n (p as any).e400 = req.e400.bind(req);\n return p as any;\n }\n get(url: string, params?: any): Promise<R> {\n return this.promisify(this.inner.get(url, params));\n }\n post(url: string, params?: any): Promise<R> {\n return this.promisify(this.inner.post(url, params));\n }\n postFile(url: string, data: any, params?: any): Promise<R> {\n return this.promisify(this.inner.postFile(url, data, params));\n }\n postJson(url: string, json: any): Promise<R> {\n return this.promisify(this.inner.postJson(url, json));\n }\n put(url: string, data?: any): Promise<R> {\n return this.promisify(this.inner.put(url, data));\n }\n putJson(url: string, json: any): Promise<R> {\n return this.promisify(this.inner.putJson(url, json));\n }\n delete(url: string): Promise<R> {\n return this.promisify(this.inner.delete(url));\n }\n deleteJson(url: string, json: any): Promise<R> {\n return this.promisify(this.inner.deleteJson(url, json));\n }\n putFile(url: string, data: FormData, opt?: any) {\n return this.promisify(this.inner.putFile(url, data, opt));\n }\n}\nexport function httpPromisy<T>(inner?: any): HttpPromisified<T> {\n return new HttpPromisified<T>(inner);\n}\n*/\n","import { Http } from \"./Http\";\nimport { IHttp, ITransportFramework } from \"./interfaces\";\n\nclass TransportFramework implements ITransportFramework {\n private _http = new Http();\n\n get http(): IHttp {\n return this._http;\n }\n\n newHttpInstance(params?: any): IHttp {\n return new Http(params);\n }\n}\n\n/** The whole framework is a singleton. */\nexport const transport: TransportFramework = new TransportFramework();\n","import { transport } from \"./Framework\";\n\n//-------------------------------------\nexport abstract class TransportFrameworkFactory {\n //-------------------------------------\n static instance(): ITransportFramework {\n return transport;\n }\n}\n\n//-------------------------------------\nexport interface ITransportFramework {\n //-------------------------------------\n /** Default instance. */\n readonly http: IHttp;\n\n /**\n * Creates a new IHttp object with a custom configuration;\n * @param params see available options at https://axios-http.com/docs/req_config\n */\n newHttpInstance(params?: any): IHttp;\n}\n\n//-------------------------------------\nexport interface IHttp {\n //-------------------------------------\n /** Latest available HTTP response, valid during your get|post|put...then() and catch() handlers. */\n readonly latestResponse: IHttpResponse;\n\n /** HTTP GET Accept: application/json */\n get<R = any>(url: string, params?: IHttpParams): Promise<R>;\n\n /** HTTP POST, Accept: application/json */\n post<R = any>(url: string, data?: any, params?: IHttpParams): Promise<R>;\n\n /**\n * HTTP POST\n * @param data must be of one of the following types:\n * string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams\n * Browser only: FormData, File, Blob\n * Node only: Stream, Buffer\n */\n postFile<R = any>(url: string, data: any, params?: IHttpParams): Promise<R>;\n\n /** HTTP POST, Accept: application/json, Content-type: application/json */\n postJson<T = any, R = any>(\n url: string,\n json: any,\n params?: IHttpParams,\n ): Promise<R>;\n\n /** HTTP PUT, Accept: application/json */\n put<T = any, R = any>(\n url: string,\n data?: any,\n params?: IHttpParams,\n ): Promise<R>;\n\n // putFile<T=any,R=any>( url:string, data:FormData, opt?:any ): Promise<R>;\n\n /** HTTP PUT, Accept: application/json, Content-type: application/json */\n putJson<T = any, R = any>(\n url: string,\n json: any,\n params?: IHttpParams,\n ): Promise<R>;\n\n /** HTTP DELETE */\n delete<T = any, R = any>(url: string, params?: IHttpParams): Promise<R>;\n\n /** HTTP DELETE, Accept: application/json */\n deleteJson<T = any, R = any>(url: string, json: any): Promise<R>;\n\n /**\n * HTTP GET, Accept: application/javascript\n * @param exportedVariableName: unused at the moment.\n */\n getScript<R = any>(\n url: string,\n params?: IHttpParams,\n exportedVariableName?: string,\n ): Promise<R>;\n\n /** HTTP GET, Accept: application/javascript */\n loadScript(url: string, params?: IHttpParams): Promise<void>;\n\n setCdn(url: string): void;\n}\n\nexport type IHttpParamsResponseType =\n | \"arraybuffer\"\n | \"blob\"\n | \"document\"\n | \"json\"\n | \"text\"\n | \"stream\";\n\n//-------------------------------------\nexport type IHttpParams = {\n //-------------------------------------\n /** Request the API to send a notification when done. */\n readonly requestName?: string;\n /** Set to true to prevent sending notifications. */\n readonly disableNotifications?: boolean;\n /** HTTP headers to apply to the request. */\n readonly headers?: { [key: string]: /*value*/ string };\n /** Object to serialize as query parameters and append to the request URL. */\n readonly queryParams?: { [key: string]: /*value*/ any };\n /** Response Type */\n readonly responseType?: IHttpParamsResponseType;\n\n //readonly matrixParams: {[key:string]: /*value*/any;}; // TODO maybe later ?\n};\n\n//-------------------------------------\nexport type IHttpResponse = {\n //-------------------------------------\n status: number;\n statusText: string;\n headers?: any;\n};\n","import { transport } from \"../transport/Framework\";\nimport { notify } from \"../notify/Framework\";\nimport {\n IEmailValidationInfos,\n IEmailValidationState,\n IMfaCodeState,\n IMfaInfos,\n IMobileValidationInfos,\n IMobileValidationState,\n IQuotaAndUsage,\n ISession,\n IUserDescription,\n IUserInfo,\n UserProfile,\n} from \"./interfaces\";\n\nimport { configure } from \"../configure/Framework\";\nimport { ConfigurationFrameworkFactory } from \"../configure/interfaces\";\nimport { App, ERROR_CODE } from \"../globals\";\n\nconst http = transport.http;\n\n/* TODO IResourceRight model */\ntype IResourceRight = any;\ntype PersonApiResult = {\n status: \"ok\" | string;\n result: Array<IUserDescription>;\n};\n\nexport class Session implements ISession {\n private _me: IUserInfo = null as unknown as IUserInfo;\n\n private _currentLanguage: string = \"\";\n private _notLoggedIn: boolean = true;\n private _description?: IUserDescription;\n private _profile?: UserProfile;\n\n get currentLanguage(): string {\n return this._currentLanguage;\n }\n\n get notLoggedIn(): boolean {\n return this._notLoggedIn;\n }\n\n get description(): IUserDescription {\n // will be undefined if initialize() was not called.\n return this._description as unknown as IUserDescription;\n }\n\n public get avatarUrl(): string {\n let avatar = this.description.photo;\n if (!avatar || avatar === \"no-avatar.jpg\" || avatar === \"no-avatar.svg\") {\n const basePath =\n ConfigurationFrameworkFactory.instance().Platform.theme.basePath;\n avatar = basePath + \"/img/illustrations/no-avatar.svg\";\n }\n return avatar;\n }\n\n get user(): IUserInfo {\n return this._me;\n }\n\n get currentApp(): App | null {\n return configure.Platform.apps.currentApp;\n }\n\n public async initialize(): Promise<void> {\n return http\n .get<IUserInfo>(\"/auth/oauth2/userinfo\")\n .then((u) => {\n if (\n http.latestResponse.status < 200 ||\n http.latestResponse.status >= 300\n ) {\n // Backend tries to redirect the user => not logged in !\n throw ERROR_CODE.NOT_LOGGED_IN;\n }\n this.setCurrentModel(u);\n return this._notLoggedIn\n ? this.loadDefaultLanguage()\n : this.loadUserLanguage();\n })\n .then((lang) => {\n this.setCurrentLanguage(lang);\n return this.loadDescription();\n })\n .then(() => {\n return this.getUserProfile();\n })\n .then(() => {\n notify.onSessionReady().resolve(this._me);\n })\n .catch((e) => {\n if (e === ERROR_CODE.NOT_LOGGED_IN) {\n return Promise.resolve(); // backend is reachable, login can occur.\n }\n notify.onSessionReady().reject(e);\n });\n }\n\n private setCurrentModel(me: IUserInfo) {\n this._me = me;\n this._notLoggedIn =\n me && me.sessionMetadata && me.sessionMetadata.userId ? false : true;\n /*\n\t\tme.workflow = {\n\t\t\tload: async function(services): Promise<void>{\n\t\t\t\tfor(let service of services){\n\t\t\t\t\ttry{\n\t\t\t\t\t\tlet workflows = await Behaviours.findWorkflow(service);\n\t\t\t\t\t\tconsole.log('Workflows loaded from ' + service);\n\t\t\t\t\t\tconsole.log(workflows);\n\t\t\t\t\t\tthis[service] = workflows;\n\t\t\t\t\t}\n\t\t\t\t\tcatch(e){\n\t\t\t\t\t\tconsole.log(service + \" doesn't have a behaviours file.\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif(appPrefix !== '.'){\n\t\t\tawait me.workflow.load(['workspace', appPrefix]);\n\t\t}\n\t\telse{\n\t\t\tawait me.workflow.load(['workspace']);\n\t\t}\n\t\t\n\t\tmodel.trigger('me.change');\n*/\n }\n\n ////////////////////////////////////////////////////////// Rights management\n\n hasWorkflow(workflowName: string): boolean {\n return (\n workflowName === undefined ||\n this._me?.authorizedActions.findIndex((workflowRight) => {\n return workflowRight.name === workflowName;\n }) !== -1\n );\n }\n\n hasRight(resource: any, right: any): boolean {\n if (right === \"owner\") {\n return resource.owner && resource.owner.userId === this._me.userId;\n }\n const rightName = right.right || right;\n\n let currentSharedRights: Array<IResourceRight> = (\n resource.shared as Array<IResourceRight>\n ).filter((sharedRight) => {\n return (\n (this._me.groupsIds || []).indexOf(sharedRight.groupId) !== -1 ||\n sharedRight.userId === this._me.userId\n );\n });\n\n const resourceRight: boolean =\n currentSharedRights.find((resourceRight) => {\n return resourceRight[rightName] || resourceRight.manager;\n }) !== undefined;\n\n const workflowRight = right.workflow\n ? this.hasWorkflow(right.workflow)\n : true;\n\n return resourceRight && workflowRight;\n }\n\n ////////////////////////////////////////////////////////// Storage management\n\n get latestQuotaAndUsage(): Promise<IQuotaAndUsage> {\n return http\n .get<IQuotaAndUsage>(`/workspace/quota/user/${this._me.userId}`)\n .then((infos) => {\n if (this._description) {\n // Update quota and storage internal session infos.\n this._description.quota = infos.quota;\n this._description.storage = infos.storage;\n }\n return infos;\n })\n .catch(() => {\n return { quota: 0, storage: 0 };\n });\n }\n\n ////////////////////////////////////////////////////////// Language management\n\n private setCurrentLanguage(lang: string) {\n this._currentLanguage = lang;\n // Notify that current language has changed.\n notify.onLangReady().resolve(lang);\n }\n\n private loadDefaultLanguage(): Promise<string> {\n return http\n .get<{ locale: string }>(\"/locale\")\n .then((response) => {\n return response.locale;\n })\n .catch(() => {\n // void\n return this._currentLanguage;\n });\n }\n\n ////////////////////////////////////////////////////////// Description management\n\n private loadDescription(): Promise<IUserDescription> {\n return Promise.all([\n // FIXME The full user's description should be obtainable from a single endpoint in the backend.\n http.get<PersonApiResult>(\"/userbook/api/person\", {\n requestName: \"refreshAvatar\",\n }),\n http.get<IUserDescription>(\"/directory/userbook/\" + this._me.userId),\n ]).then((results) => {\n if (\n results[0].status === \"ok\" &&\n results[0].result &&\n results[0].result.length > 0\n ) {\n this._description = results[0].result[0];\n } else {\n this._description = {} as unknown as IUserDescription;\n }\n // \"type\" field from /userbook/api/person becomes \"profiles\"\n if (this._description.type && !this._description.profiles) {\n this._description.profiles = this._description.type as unknown as Array<\n \"Student\" | \"Teacher\" | \"Relative\" | \"Personnel\" | \"Guest\"\n >;\n }\n Object.assign(this._description, results[1]);\n return this._description;\n });\n }\n\n get profile(): UserProfile {\n // will be undefined if initialize() was not called.\n return this._profile as unknown as UserProfile;\n }\n\n public getUserProfile(): Promise<UserProfile> {\n return http\n .get<any>(\"/userbook/api/person\")\n .then((data) => data.result)\n .then((user) => {\n return (this._profile = user[0].type);\n });\n }\n\n private loadUserLanguage(): Promise<string> {\n return http\n .get<any>(\"/userbook/preference/language\")\n .then((responseText) => {\n try {\n return JSON.parse(responseText.preference)[\"default-domain\"];\n } catch (e) {\n return this.loadDefaultLanguage();\n }\n })\n .catch(() => {\n return this.loadDefaultLanguage();\n });\n }\n\n ////////////////////////////////////////////////////////// Email management\n\n public getEmailValidationInfos(): Promise<IEmailValidationInfos> {\n return http.get<IEmailValidationInfos>(\"/directory/user/mailstate\");\n }\n\n public checkEmail(email: String): Promise<void> {\n return http.put<void>(\"/directory/user/mailstate\", { email: email });\n }\n\n public tryEmailValidation(code: String): Promise<IEmailValidationState> {\n return http.post<IEmailValidationState>(\"/directory/user/mailstate\", {\n key: code,\n });\n }\n\n ////////////////////////////////////////////////////////// Mobile management\n\n public getMobileValidationInfos(): Promise<IMobileValidationInfos> {\n return http.get<IMobileValidationInfos>(\"/directory/user/mobilestate\");\n }\n\n public checkMobile(mobile: String): Promise<void> {\n return http.put<void>(\"/directory/user/mobilestate\", { mobile: mobile });\n }\n\n public tryMobileValidation(code: String): Promise<IMobileValidationState> {\n return http.post<IMobileValidationState>(\"/directory/user/mobilestate\", {\n key: code,\n });\n }\n\n ////////////////////////////////////////////////////////// MFA management\n\n public getMfaInfos(): Promise<IMfaInfos> {\n return http.get<IMfaInfos>(\"/auth/user/mfa/code\");\n }\n\n public tryMfaCode(code: String): Promise<IMfaCodeState> {\n return http.post<IMfaCodeState>(\"/auth/user/mfa/code\", { key: code });\n }\n}\n","import { ISessionFramework } from \"./interfaces\";\nimport { Session } from \"./Session\";\nimport { transport } from \"../transport/Framework\";\nimport { ERROR_CODE } from \"../globals\";\n\nexport class SessionFramework implements ISessionFramework {\n session: Session = new Session();\n\n public initialize(): Promise<void> {\n return this.session.initialize();\n // TODO Finir le bootstrapping, voir infra-front/lib.ts\n }\n\n public login(\n email: string,\n password: string,\n rememberMe?: boolean,\n secureLocation?: boolean,\n ): Promise<void> {\n const data = new FormData();\n data.append(\"email\", email);\n data.append(\"password\", password);\n if (typeof rememberMe !== \"undefined\") {\n data.append(\"rememberMe\", \"\" + rememberMe);\n }\n if (typeof secureLocation !== \"undefined\") {\n data.append(\"secureLocation\", \"\" + secureLocation);\n }\n\n return transport.http\n .post<void>(\"/auth/login\", data, {\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n })\n .finally(() => {\n switch (transport.http.latestResponse.status) {\n case 200: // error, TODO look for error message in returned html...\n throw ERROR_CODE.MALFORMED_DATA;\n case 302: // success TODO redirects cannot be intercepted with axios in a browser !!!\n default:\n break;\n }\n });\n }\n\n logout(): Promise<void> {\n return transport.http.get<void>(\"/auth/logout\").finally(() => {\n // void, always successful\n });\n }\n}\n\n/** The whole framework is a singleton. */\nexport const session: SessionFramework = new SessionFramework();\n","import { notify } from \"../notify/Framework\";\nimport { session } from \"../session/Framework\";\nimport { transport } from \"../transport/Framework\";\nimport { configure } from \"./Framework\";\nimport {\n ITheme,\n IThemeConf,\n IThemeDesc,\n IThemeOverrides,\n IThemeConfOverriding,\n} from \"./interfaces\";\n\nexport class Theme implements ITheme {\n private _conf?: IThemeConf;\n private _loaded?: Promise<void>;\n\n // legacy (readonly)\n skinName = \"\";\n themeName = \"\";\n skin = \"raw\";\n themeUrl = \"/assets/themes/raw/default/\";\n templateOverrides: IThemeOverrides = {};\n portalTemplate = \"/assets/themes/raw/portal.html\";\n basePath = \"\";\n logoutCallback = \"/\";\n skins: Array<IThemeConfOverriding> = [];\n\n is1D = false;\n is2D = false;\n\n initialize(version?: string) {\n return notify.onSessionReady().promise.then(() => this.load(version));\n }\n\n private get version(): string {\n return configure.Platform.deploymentTag;\n }\n\n private get cdnDomain(): string {\n return configure.Platform.cdnDomain;\n }\n\n async onFullyReady(): Promise<ITheme> {\n await this._loaded;\n return this;\n }\n\n private _onSkinReady = notify.onSkinReady();\n onSkinReady(): Promise<ITheme> {\n return this._onSkinReady.promise;\n }\n private _onOverrideReady = notify.onOverridesReady();\n onOverrideReady(): Promise<IThemeOverrides> {\n return this._onOverrideReady.promise;\n }\n\n async getConf(version?: string): Promise<IThemeConf> {\n this._conf =\n this._conf ??\n (await transport.http.getScript<IThemeConf>(\n \"/assets/theme-conf.js\",\n { queryParams: { v: version ?? this.version } },\n \"exports.conf\",\n ));\n return this._conf;\n }\n\n load(version?: string): Promise<void> {\n version = version ?? this.version;\n if (!this._loaded) {\n this._loaded = (\n session.session.notLoggedIn\n ? this.loadDisconnected(version)\n : this.loadConnected(version)\n ).then(async () => {\n // List skins to determine if current theme is 1D or 2D.\n const skins = await this.listSkins();\n this.is1D =\n skins.find((s) => s.child === this.skin)?.parent === \"panda\";\n this.is2D =\n skins.find((s) => s.child === this.skin)?.parent === \"theme-open-ent\";\n });\n }\n return this._loaded;\n }\n\n private loadDisconnected(version: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n transport.http\n .get(\"/skin\", { queryParams: { v: this.version } })\n .then((data) => {\n this.skin = data.skin;\n this.themeUrl = `${this.cdnDomain}/assets/themes/${data.skin}/skins/default/`;\n this.basePath = this.themeUrl + \"../../\";\n this._onSkinReady.resolve(this);\n transport.http\n .get(`/assets/themes/${data.skin}/template/override.json`, {\n disableNotifications: true,\n queryParams: { v: version },\n })\n .then((override) => {\n this.templateOverrides = override;\n this._onOverrideReady.resolve(override);\n resolve();\n })\n .catch((e) => {\n if (transport.http.latestResponse.status === 404) {\n resolve();\n } else {\n throw e;\n }\n });\n })\n .catch((e) => {\n this._onSkinReady.reject(e);\n this._onOverrideReady.reject(e);\n reject();\n });\n });\n }\n\n private loadConnected(version: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n this.loadDefaultTheme(version).then(() => {\n this._onSkinReady.resolve(this);\n transport.http\n .get(`/assets/themes/${this.skin}/template/override.json`, {\n disableNotifications: true,\n queryParams: { v: version },\n })\n .then((override) => {\n this.templateOverrides = override;\n this._onOverrideReady.resolve(override);\n resolve();\n })\n .catch((e) => {\n if (transport.http.latestResponse.status === 404) {\n resolve();\n this._onSkinReady.reject(e); // FIXME semble mal placé car a peut-être déjà été résolu !\n this._onOverrideReady.reject(e);\n } else {\n throw e;\n }\n });\n });\n });\n }\n\n /** Load the user's configured theme. */\n private async loadDefaultTheme(version: string) {\n if (!session.session.notLoggedIn) {\n return transport.http\n .get(\"/theme\", { queryParams: { _: version } })\n .then((data) => {\n this.skinName = data.skinName;\n this.themeName = data.themeName;\n this.themeUrl = data.skin;\n this.basePath = `${this.cdnDomain}${this.themeUrl}../../`;\n this.skin = this.themeUrl.split(\"/assets/themes/\")[1].split(\"/\")[0];\n this.portalTemplate = `${this.cdnDomain}/assets/themes/${this.skin}/portal.html`;\n this.logoutCallback = data.logoutCallback;\n });\n }\n return Promise.reject();\n }\n\n listThemes(): Promise<IThemeDesc[]> {\n return transport.http.get<IThemeDesc[]>(\"/themes\");\n }\n\n async setDefaultTheme(theme: IThemeDesc) {\n await transport.http.get(\n \"/userbook/api/edit-userbook-info?prop=theme-\" +\n this.skin +\n \"&value=\" +\n theme._id,\n );\n await this.loadDefaultTheme(this.version);\n }\n\n listSkins(): Promise<IThemeConfOverriding[]> {\n return this.skins.length > 0\n ? Promise.resolve(this.skins)\n : this.getConf().then((conf) => {\n const currentTheme = conf.overriding.find(\n (t) => t.child === this.skin,\n );\n if (currentTheme?.group) {\n this.skins = this.skins.concat(\n conf.overriding.filter((t) => t.group === currentTheme.group),\n );\n } else {\n this.skins = this.skins.concat(conf.overriding);\n }\n return this.skins;\n });\n }\n\n async getHelpPath(): Promise<String> {\n const overrides = await this.listSkins();\n const override = overrides.find((t) => t.child === this.skin);\n return override?.help ?? \"/help\";\n }\n}\n\n/*\nlet _skinResolved, _skinRejected = null;\nexport var skin = {\n\tprivate addDirectives: undefined as any,\n\tprivate templateMapping: {},\n\n\tthemeConf: undefined,\n\tthemeConfPromise: undefined,\n\tloadBookmarks: async function(){\n\t\treturn new Promise<void>((resolve, reject) => {\n\t\t\thttp().get('/userbook/preference/apps').done(function(data){\n\t\t\t\tif(!data.preference){\n\t\t\t\t\tdata.preference = null;\n\t\t\t\t}\n\t\t\t\tmodel.me.myApps = JSON.parse(data.preference);\n\t\t\t\tif (_.isArray(model.me.myApps)) {\n\t\t\t\t\tmodel.me.bookmarkedApps = model.me.myApps;\n\t\t\t\t\tmodel.me.myApps = {\n\t\t\t\t\t\tbookmarks: _.map(model.me.myApps, app => app.name),\n\t\t\t\t\t\tapplications: []\n\t\t\t\t\t}\n\t\t\t\t\thttp().putJson('/userbook/preference/apps', model.me.myApps);\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!model.me.myApps){\n\t\t\t\t\tmodel.me.myApps = {\n\t\t\t\t\t\tbookmarks: [],\n\t\t\t\t\t\tapplications: []\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmodel.me.bookmarkedApps = [];\n\t\t\t\tvar upToDate = true;\n\t\t\t\tlet remove = [];\n\t\t\t\tmodel.me.myApps.bookmarks.forEach(function(appName, index){\n\t\t\t\t\tvar foundApp = _.findWhere(model.me.apps, { name: appName });\n\t\t\t\t\tif(foundApp){\n\t\t\t\t\t\tvar app = {};\n\t\t\t\t\t\tfor(var property in foundApp){\n\t\t\t\t\t\t\tapp[property] = foundApp[property];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmodel.me.bookmarkedApps.push(app);\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tremove.push(appName);\n\t\t\t\t\t\tupToDate = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tremove.forEach(function(app) {\n\t\t\t\t\tvar index = model.me.myApps.bookmarks.indexOf(app);\n\t\t\t\t\tmodel.me.myApps.bookmarks.splice(index, 1);\n\t\t\t\t});\n\t\t\t\tif(!upToDate){\n\t\t\t\t\thttp().putJson('/userbook/preference/apps', model.me.myApps);\n\t\t\t\t}\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\t},\n\tloadConnected: async function(): Promise<any>{\n\t\tconst rand = Math.random();\n\t\tconst that = this;\n\t\treturn new Promise<void>((resolve, reject) => {\n\t\t\thttp().get('/theme').done(function(data){\n\t\t\t\tthat.skinName = data.skinName;\n\t\t\t\tthat.themeName = data.themeName;\n\t\t\t\tthat.theme = data.skin;\n\t\t\t\tthat.basePath = (window as any).CDN_DOMAIN + that.theme + '../../';\n\t\t\t\tthat.skin = that.theme.split('/assets/themes/')[1].split('/')[0];\n\t\t\t\tthat.portalTemplate = (window as any).CDN_DOMAIN + '/assets/themes/' + that.skin + '/portal.html';\n\t\t\t\tthat.logoutCallback = data.logoutCallback;\n\t\t\t\tskin.skinResolveFunc();\n\t\t\t\thttp().get('/assets/themes/' + that.skin + '/template/override.json', { token: rand }).done(function(override){\n\t\t\t\t\tthat.templateMapping = override;\n\t\t\t\t\tif (window.entcore.template) {\n\t\t\t\t\t\twindow.entcore.template.loadPortalTemplates();\n\t\t\t\t\t}\n\t\t\t\t\tresolve();\n\t\t\t\t})\n\t\t\t\t.e404(() => { \n\t\t\t\t\tresolve(); \n\t\t\t\t\tskin.skinRejectedFunc();\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t},\n};\n*/\n\n/*\n export const themeService = {\n loadOldWrappedTheme(oldTheme:string, skinName:string){\n let version = 'dev';\n if((window as any).springboardBuildDate){\n version = (window as any).springboardBuildDate;\n }\n jQuery(\"#themeOld\").remove();\n const style = jQuery('<link>', {\n rel: 'stylesheet',\n type: 'text/css',\n href: (window as any).CDN_DOMAIN+`/assets/themes/${oldTheme}/skins/${skinName}/wrapped.theme.css?version=${version}`,\n id: 'themeOld'\n }).attr(\"crossorigin\", \"anonymous\");\n jQuery('head').append(style);\n },\n loadThemeJs(theme:string){\n let version = 'dev';\n if((window as any).springboardBuildDate){\n version = (window as any).springboardBuildDate;\n }\n jQuery(\"#themeJS\").remove();\n const style = jQuery('<script>', {\n type: 'text/javascript',\n src: (window as any).CDN_DOMAIN+`/assets/themes/${theme}/js/theme.js?version=${version}`,\n id: 'themeJS'\n });\n jQuery('body').append(style);\n }\n }\n*/\n","import { AddBundleCallback, IIdiom } from \"../configure/interfaces\";\nimport { transport } from \"../transport/Framework\";\nimport { notify, Promisified } from \"../notify/Framework\";\nimport { session } from \"../session/Framework\";\n\nconst bundle: { [key: string]: string } = {};\nconst promises: { [path: string]: Promise<void> } = {};\n\nexport const defaultDiacriticsRemovalMap = [\n {\n base: \"A\",\n letters:\n /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g,\n },\n { base: \"AA\", letters: /[\\uA732]/g },\n { base: \"AE\", letters: /[\\u00C6\\u01FC\\u01E2]/g },\n { base: \"AO\", letters: /[\\uA734]/g },\n { base: \"AU\", letters: /[\\uA736]/g },\n { base: \"AV\", letters: /[\\uA738\\uA73A]/g },\n { base: \"AY\", letters: /[\\uA73C]/g },\n {\n base: \"B\",\n letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g,\n },\n {\n base: \"C\",\n letters:\n /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g,\n },\n {\n base: \"D\",\n letters:\n /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g,\n },\n { base: \"DZ\", letters: /[\\u01F1\\u01C4]/g },\n { base: \"Dz\", letters: /[\\u01F2\\u01C5]/g },\n {\n base: \"E\",\n letters:\n /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g,\n },\n { base: \"F\", letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g },\n {\n base: \"G\",\n letters:\n /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g,\n },\n {\n base: \"H\",\n letters:\n /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g,\n },\n {\n base: \"I\",\n letters:\n /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g,\n },\n { base: \"J\", letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g },\n {\n base: \"K\",\n letters:\n /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g,\n },\n {\n base: \"L\",\n letters:\n /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g,\n },\n { base: \"LJ\", letters: /[\\u01C7]/g },\n { base: \"Lj\", letters: /[\\u01C8]/g },\n { base: \"M\", letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g },\n {\n base: \"N\",\n letters:\n /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g,\n },\n { base: \"NJ\", letters: /[\\u01CA]/g },\n { base: \"Nj\", letters: /[\\u01CB]/g },\n {\n base: \"O\",\n letters:\n /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g,\n },\n { base: \"OI\", letters: /[\\u01A2]/g },\n { base: \"OO\", letters: /[\\uA74E]/g },\n { base: \"OU\", letters: /[\\u0222]/g },\n {\n base: \"P\",\n letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g,\n },\n { base: \"Q\", letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g },\n {\n base: \"R\",\n letters:\n /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g,\n },\n {\n base: \"S\",\n letters:\n /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g,\n },\n {\n base: \"T\",\n letters:\n /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g,\n },\n { base: \"TZ\", letters: /[\\uA728]/g },\n {\n base: \"U\",\n letters:\n /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g,\n },\n { base: \"V\", letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g },\n { base: \"VY\", letters: /[\\uA760]/g },\n {\n base: \"W\",\n letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g,\n },\n { base: \"X\", letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g },\n {\n base: \"Y\",\n letters:\n /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g,\n },\n {\n base: \"Z\",\n letters:\n /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g,\n },\n {\n base: \"a\",\n letters:\n /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g,\n },\n { base: \"aa\", letters: /[\\uA733]/g },\n { base: \"ae\", letters: /[\\u00E6\\u01FD\\u01E3]/g },\n { base: \"ao\", letters: /[\\uA735]/g },\n { base: \"au\", letters: /[\\uA737]/g },\n { base: \"av\", letters: /[\\uA739\\uA73B]/g },\n { base: \"ay\", letters: /[\\uA73D]/g },\n {\n base: \"b\",\n letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g,\n },\n {\n base: \"c\",\n letters:\n /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g,\n },\n {\n base: \"d\",\n letters:\n /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g,\n },\n { base: \"dz\", letters: /[\\u01F3\\u01C6]/g },\n {\n base: \"e\",\n letters:\n /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g,\n },\n { base: \"f\", letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g },\n {\n base: \"g\",\n letters:\n /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g,\n },\n {\n base: \"h\",\n letters:\n /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g,\n },\n { base: \"hv\", letters: /[\\u0195]/g },\n {\n base: \"i\",\n letters:\n /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g,\n },\n { base: \"j\", letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g },\n {\n base: \"k\",\n letters:\n /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g,\n },\n {\n base: \"l\",\n letters:\n /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g,\n },\n { base: \"lj\", letters: /[\\u01C9]/g },\n { base: \"m\", letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g },\n {\n base: \"n\",\n letters:\n /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g,\n },\n { base: \"nj\", letters: /[\\u01CC]/g },\n {\n base: \"o\",\n letters:\n /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g,\n },\n { base: \"oi\", letters: /[\\u01A3]/g },\n { base: \"ou\", letters: /[\\u0223]/g },\n { base: \"oo\", letters: /[\\uA74F]/g },\n {\n base: \"p\",\n letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g,\n },\n { base: \"q\", letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g },\n {\n base: \"r\",\n letters:\n /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g,\n },\n {\n base: \"s\",\n letters:\n /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g,\n },\n {\n base: \"t\",\n letters:\n /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g,\n },\n { base: \"tz\", letters: /[\\uA729]/g },\n {\n base: \"u\",\n letters:\n /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g,\n },\n { base: \"v\", letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g },\n { base: \"vy\", letters: /[\\uA761]/g },\n {\n base: \"w\",\n letters:\n /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g,\n },\n { base: \"x\", letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g },\n {\n base: \"y\",\n letters:\n /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g,\n },\n {\n base: \"z\",\n letters:\n /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g,\n },\n];\n\nexport class Idiom implements IIdiom {\n translate(key: string, params?: { [param: string]: any }): string {\n key = key ?? \"\";\n let txt: string = bundle[key] === undefined ? key : bundle[key];\n if (params && typeof params === \"object\") {\n for (let member in params) {\n if (typeof params[member] !== \"undefined\") {\n txt = txt.replace(\n new RegExp(\"\\\\${\" + member + \"}\", \"g\"),\n \"\" + params[member],\n );\n }\n }\n }\n return txt;\n }\n\n addBundlePromise(path: string): Promise<void> {\n return this.loadBundlePromise(session.session.currentLanguage, path);\n }\n\n addBundle(path: string, callback?: AddBundleCallback): void {\n this.loadBundle(session.session.currentLanguage, path, callback);\n }\n\n loadBundlePromise(lang: string, path: string): Promise<void> {\n this.loadBundle(lang, path);\n return promises[path];\n }\n\n private loadBundle(\n lang: string,\n path: string,\n callback?: AddBundleCallback,\n ): void {\n // load bundle only once\n const oldPromise = promises[path];\n if (oldPromise) {\n if (callback) {\n oldPromise.then(callback).catch(callback);\n }\n } else {\n // Create a Promise now, to avoid loading a bundle more than once.\n const load = new Promisified<void>();\n promises[path] = load.promise;\n // Then load the bundle.\n const params: any = {};\n // Force requested language to user's choice.\n if (lang) {\n params[\"Accept-Language\"] = lang;\n }\n transport.http\n .get<string>(path, { headers: params })\n .then((response) => {\n Object.assign(bundle, response);\n if (typeof callback === \"function\") {\n callback();\n }\n load.resolve();\n })\n .catch((e) => {\n if (typeof callback === \"function\") {\n callback();\n }\n load.reject();\n });\n }\n }\n\n addTranslations(folder: string, callback?: AddBundleCallback): void {\n // Load translations once language is known.\n notify.onLangReady().promise.then((lang) => {\n this.loadBundle(lang, folder + \"/\" + lang + \".json\", callback);\n });\n }\n\n addAllTranslations(folders: string[]): Promise<void> {\n if (folders && folders.length > 0) {\n // Load all translations once language is known.\n return notify\n .onLangReady()\n .promise.then((lang) =>\n Promise.all(\n folders.map((folder) =>\n this.loadBundlePromise(lang, folder + \"/\" + lang + \".json\"),\n ),\n ),\n )\n .then(() => {});\n } else {\n return Promise.reject();\n }\n }\n\n addKeys(keys: any): void {\n for (var property in keys) {\n if (typeof bundle[property] !== \"string\")\n bundle[property] = keys[property];\n }\n }\n\n removeAccents(str: string): string {\n for (var i = 0; i < defaultDiacriticsRemovalMap.length; i++) {\n str = str.replace(\n defaultDiacriticsRemovalMap[i].letters,\n defaultDiacriticsRemovalMap[i].base,\n );\n }\n return str;\n }\n}\n","import { App } from \"../globals\";\nimport { IUserPreferences, UserPreferenceKey } from \"./interfaces\";\nimport { transport } from \"../transport/Framework\";\nimport { notify } from \"../notify/Framework\";\nimport { IUserInfo, IWebApp } from \"../session/interfaces\";\nimport { session } from \"../session/Framework\";\n\n//-------------------------------------\nclass UserPreferences implements IUserPreferences {\n //-------------------------------------\n data: { [key in UserPreferenceKey]?: any } = {};\n\n get(key: UserPreferenceKey): any {\n return this.data[key];\n }\n\n load(key: UserPreferenceKey, defaultTo?: any): Promise<any> {\n return transport.http\n .get(\"/userbook/preference/\" + key)\n .then((data) => {\n try {\n return JSON.parse(data.preference);\n } catch (e) {\n return defaultTo ?? {};\n }\n })\n .then((prefs) => {\n this.data[key] = prefs ?? {};\n return prefs;\n });\n }\n\n update(key: UserPreferenceKey, data: any): UserPreferences {\n if (data !== undefined) {\n this.data[key] = data;\n }\n //notify.onEvent<PreferencesUpdated>( EVENT_NAME.PREFERENCES_UPDATED ).next( new PreferencesUpdated(key, data) );\n return this;\n }\n\n save(key: UserPreferenceKey): Promise<void> {\n //FIXME code review\n return transport.http.putJson(\n \"/userbook/preference/\" + key,\n this.data[key],\n );\n }\n}\n\n//-------------------------------------\nexport class User {\n //-------------------------------------\n private _me: IUserInfo = null as unknown as IUserInfo;\n private _keepOpenOnLogout: boolean = false;\n private _preferences: IUserPreferences = new UserPreferences();\n private _bookmarkedApps: Array<IWebApp> = [];\n\n get keepOpenOnLogout(): boolean {\n return this._keepOpenOnLogout;\n }\n\n get preferences(): IUserPreferences {\n return this._preferences;\n }\n\n get bookmarkedApps(): Array<IWebApp> {\n // will be empty if initialize() was not called.\n return this._bookmarkedApps;\n }\n\n initialize(version?: string) {\n this.loadPublicConf();\n return notify.onSessionReady().promise.then((userInfo) => {\n if (userInfo) {\n this.setCurrentModel(userInfo);\n }\n });\n }\n\n private setCurrentModel(me: IUserInfo) {\n this._me = me;\n this._preferences = new UserPreferences();\n this.loadBookmarks();\n }\n\n private loadPublicConf(): Promise<any> {\n return transport.http.get<any>(\"/conf/public\").then((publicConf) => {\n this._keepOpenOnLogout = publicConf?.keepOpenOnLogout || false;\n return publicConf;\n });\n }\n\n /** Bookmarks : pinned apps */\n private async loadBookmarks() {\n await transport.http.get(\"/userbook/preference/apps\").then((data) => {\n if (!data.preference) {\n data.preference = null;\n }\n const tmp = JSON.parse(\n data.preference,\n ) as Array<IWebApp>; /*| {bookmarks:string[],applications:[]}*/\n let myApps: {\n bookmarks: Array<string>; // Array of app names\n applications: [];\n };\n\n // If myApps is array\n if (tmp && tmp.length && typeof tmp.concat === \"function\") {\n this._bookmarkedApps = tmp;\n myApps = {\n bookmarks: tmp.map((app) => app.name),\n applications: [],\n };\n transport.http.putJson(\"/userbook/preference/apps\", myApps);\n return;\n } else {\n myApps = tmp as unknown as { bookmarks: string[]; applications: [] };\n }\n\n if (!myApps) {\n myApps = {\n bookmarks: [],\n applications: [],\n };\n }\n\n let upToDate = true;\n const remove: Array<string> = [];\n myApps.bookmarks.forEach((appName, index) => {\n const foundApp = this._me.apps.find((app) => app.name === appName);\n if (foundApp) {\n let app = Object.assign({}, foundApp);\n this._bookmarkedApps.push(app);\n } else {\n remove.push(appName);\n upToDate = false;\n }\n });\n remove.forEach((appName) => {\n let index = myApps.bookmarks.indexOf(appName);\n if (index !== -1) {\n myApps.bookmarks.splice(index, 1);\n }\n });\n if (!upToDate) {\n transport.http.putJson(\"/userbook/preference/apps\", myApps);\n }\n });\n\n // TODO Finir l'interface, voir infra-front/me.ts\n }\n\n public loadAppPrefs(app: App): Promise<any> {\n return this.preferences.load(app, {});\n }\n\n public saveAppPrefs(app: App): Promise<void> {\n return this.preferences.save(app);\n }\n\n public loadLanguage(): Promise<string> {\n return this.preferences\n .load(\"language\", { \"default-domain\": session.session.currentLanguage })\n .then((data) => data[\"default-domain\"]);\n }\n\n public saveLanguage(lang: string): Promise<void> {\n return this.preferences\n .update(\"language\", { \"default-domain\": lang })\n .save(\"language\");\n }\n}\n","import { transport } from \"../transport/Framework\";\nimport { App } from \"../globals\";\nimport { configure } from \"./Framework\";\nimport { notify } from \"../notify/Framework\";\nimport { IWebApp } from \"../index.cjs\";\n\nconst http = transport?.http;\n\n//-------------------------------------\nexport class AppConf {\n //-------------------------------------\n private _publicConf: { [key in App]?: any } = {};\n private _currentApp?: App;\n private _appConf: { [key in App]?: IWebApp } = {};\n\n /**\n * Get the currently initialized App.\n * @see getter SessionFramework.currentApp\n */\n get currentApp(): App | null {\n return this._currentApp ?? null;\n }\n\n setCurrentApp(app: App): AppConf {\n this._currentApp = app;\n return this;\n }\n\n async initialize(app: App, alternativeApp: boolean = false): Promise<void> {\n if (!alternativeApp) {\n this.setCurrentApp(app);\n }\n await Promise.all([this.getPublicConf(app), this.loadI18n(app)]);\n }\n\n public async getPublicConf(app: App): Promise<any> {\n if (!this._publicConf[app]) {\n this._publicConf[app] = await http.get<any>(`/${app}/conf/public`, {\n queryParams: { _: configure.Platform.deploymentTag },\n });\n }\n return this._publicConf[app];\n }\n\n public async getWebAppConf(app: App): Promise<IWebApp | undefined> {\n let found: IWebApp | undefined;\n if (!this._appConf[app]) {\n const list = await http.get<{ apps: Array<IWebApp> }>(\n `/applications-list`,\n );\n list.apps.forEach((conf) => {\n if (conf?.prefix) {\n const a: App = conf.prefix.replace(\"/\", \"\") as App;\n this._appConf[a] = conf;\n } else if (conf?.name) {\n /* Try to extract name from another field than prefix. */\n if (conf.name.toLowerCase() == app) {\n found = conf;\n }\n }\n });\n }\n return this._appConf[app] ?? found;\n }\n\n public async loadI18n(app: App): Promise<void> {\n await notify.onLangReady().promise;\n const i18n = configure.Platform.idiom;\n return i18n.addBundlePromise(`/${app}/i18n`);\n }\n}\n","import {\n AnalyticStatus,\n IXitiTrackingParams,\n IMatomoTrackingParams,\n ITrackingParams,\n TrackingType,\n} from \"./interfaces\";\nimport { transport } from \"../transport/Framework\";\nimport { ERROR_CODE, IPromisified } from \"..\";\nimport { session } from \"../session/Framework\";\nimport { notify } from \"../notify/Framework\";\nimport { configure } from \"./Framework\";\n\nexport type ParamsByTrackingSystem = {\n type: \"none\" | \"internal\" | \"matomo\" | \"multiple\";\n internal?: ITrackingParams;\n matomo?: IMatomoTrackingParams;\n xiti?: IXitiTrackingParams;\n};\n\n// 2021 implementation of XiTi\nexport type XitiConf = {\n //Springboard constants\n ID_EXPLOITANT: string; //\"ODE\"\n ID_PLATEFORME: string; //\"OPEN_ENT_NG/ONE/NEO\"\n ID_PROJET: string; //\"RECETTE_ODE\"\n\n //Xiti conf\n active: boolean;\n config: boolean;\n structureMap?: {\n [structureId: string]: {\n UAI?: string; //\"1234567Z\"\n active: boolean;\n collectiviteId?: number;\n plateformeId?: any;\n projetId?: any;\n };\n };\n};\n\n//-------------------------------------\nexport class Analytics {\n //-------------------------------------\n private _status: AnalyticStatus = \"void\";\n private _params?: IPromisified<ParamsByTrackingSystem>;\n\n get status(): AnalyticStatus {\n return this._status;\n }\n\n xiti(): Promise<IXitiTrackingParams | undefined> {\n // XiTi does not implement ITrackingParams but behaves like it does.\n return this.parametersWithCheck(\"xiti\" as TrackingType, false) as Promise<\n IXitiTrackingParams | undefined\n >;\n }\n\n parameters<T extends ITrackingParams>(\n type: TrackingType,\n ): Promise<T | undefined> {\n return this.parametersWithCheck<T>(type, true);\n }\n\n private async parametersWithCheck<T extends ITrackingParams>(\n type: TrackingType,\n checkType: boolean,\n ): Promise<T | undefined> {\n return this.initialize().promise.then((params) => {\n return !checkType || params.type === type || params.type === \"multiple\"\n ? (params[type] as T)\n : undefined;\n });\n }\n\n /**\n * This method loads the conf and waits for the user session to start.\n * It can be called ASAP, but it will be automatically called if needed.\n * @returns A promise of the end of the init process (it may throw errors)\n * @throws ERROR_CODE.MALFORMED_DATA when config cannot be read.\n */\n private initialize(): IPromisified<ParamsByTrackingSystem> {\n if (!this._params) {\n this._params = notify.promisify<ParamsByTrackingSystem>();\n this._status = \"pending\";\n Promise.all([\n transport.http.get<ParamsByTrackingSystem>(\"/analyticsConf\"),\n //FIXME change servers config to only keep the \"all-in-one\" query to /analyticsConf.\n transport.http.get<XitiConf>(\"/xiti/config\"),\n ])\n .then(async (tuple) => {\n // Sanitize results\n // FIXME what to do with type \"multiple\" ?\n if (!tuple || !tuple[0] || !tuple[0].type) {\n // Data seems corrupted\n throw ERROR_CODE.MALFORMED_DATA;\n }\n\n // Add XiTi config to the resulting object, if active.\n if (tuple[1] && tuple[1].active) {\n tuple[0].xiti = await this.initializeXiti(tuple[1]);\n }\n\n this._params?.resolve(tuple[0]);\n this._status = \"ready\";\n })\n .catch((e) => {\n this._status = \"failed\";\n this._params?.reject();\n throw e;\n });\n }\n return this._params;\n }\n\n /** 2021 implementation of XiTi. */\n private async initializeXiti(\n xitiConf: XitiConf,\n ): Promise<IXitiTrackingParams | undefined> {\n if (!xitiConf.structureMap || !configure.Platform.apps.currentApp) return;\n\n const me = await notify.onSessionReady().promise;\n const desc = session.session.description;\n\n let structure;\n for (let struc of me.structures) {\n const s = xitiConf.structureMap[struc];\n if (s && s.collectiviteId && s.UAI) {\n structure = s;\n break;\n }\n }\n if (!structure || !structure.active) return;\n\n const appConf = await configure.Platform.apps.getPublicConf(\n configure.Platform.apps.currentApp,\n );\n if (!appConf) return;\n const appXitiConf = appConf.xiti;\n if (!appXitiConf) return;\n if (!appXitiConf.LIBELLE_SERVICE) return;\n if (!structure.UAI) return; // Keeps the transpiler happy\n\n // ID_PERSO\n function pseudonymization(stringId: string): string {\n let buffer = \"\";\n for (let i = 0; i < stringId.length; i++) {\n buffer += stringId.charCodeAt(i);\n }\n return buffer;\n }\n\n // PROFIL\n const profileMap = {\n Student: \"ELEVE\",\n Teacher: \"ENSEIGNANT\",\n Relative: \"PARENT\",\n Personnel: \"ADMIN_VIE_SCOL_TECH\",\n Guest: \"AUTRE\",\n };\n\n return {\n LIBELLE_SERVICE: appXitiConf.LIBELLE_SERVICE, // Which property of LIBELLE_SERVICE to use depends on the frontend.\n TYPE: appXitiConf.OUTIL ? \"TIERS\" : \"NATIF\",\n OUTIL: appXitiConf.OUTIL ? appXitiConf.OUTIL : \"\",\n STRUCT_ID: structure.collectiviteId,\n STRUCT_UAI: structure.UAI,\n PROJET: structure.projetId ? structure.projetId : xitiConf.ID_PROJET,\n EXPLOITANT: xitiConf.ID_EXPLOITANT,\n PLATFORME: structure.plateformeId\n ? structure.plateformeId\n : xitiConf.ID_PLATEFORME,\n ID_PERSO: pseudonymization(me.userId),\n PROFILE:\n desc.profiles && desc.profiles.length > 0\n ? profileMap[desc.profiles[0]] ?? \"\"\n : \"\",\n };\n }\n}\n","import { IConfigurationFramework } from \"./interfaces\";\nimport { Theme } from \"./Theme\";\nimport { Idiom } from \"../idiom/Idiom\";\nimport { User } from \"./User\";\nimport { AppConf } from \"./AppConf\";\nimport { transport } from \"../transport/Framework\";\nimport { Analytics } from \"./Analytics\";\nimport { notify } from \"../notify/Framework\";\n\n//-------------------------------------\nexport class ConfigurationFramework implements IConfigurationFramework {\n //-------------------------------------\n readonly Platform = {\n deploymentTag: \"\",\n cdnDomain: \"\",\n apps: new AppConf(),\n theme: new Theme(),\n analytics: new Analytics(),\n idiom: new Idiom(),\n listLanguages: () => {\n return transport.http.get(\"/languages\");\n },\n };\n readonly School = {\n //apps; -> pinnedApps;\n };\n readonly User = new User();\n\n async initialize(\n version?: string | null,\n cdnDomain?: string | null,\n ): Promise<void> {\n // If version is undefined, default to a new tag every day.\n if (!version) {\n const padWith0 = (val: number): string =>\n (val < 10 ? \"0\" : \"\") + val.toFixed(0);\n const now = new Date();\n const y = now.getFullYear();\n const m = now.getMonth() + 1;\n const d = now.getDate();\n version = `${y}${padWith0(m)}${padWith0(d)}`; //FIXME add ${h.toFixed(0)} to change the tag every 10 minutes\n }\n const v = version;\n this.Platform.deploymentTag = version;\n\n // Don't overwrite the CDN domain with a null or empty value.\n if (typeof cdnDomain === \"string\" && cdnDomain.length > 0) {\n this.Platform.cdnDomain = cdnDomain;\n }\n transport.http.setCdn(this.Platform.cdnDomain);\n //\n await Promise.all([\n this.Platform.theme.initialize(v),\n notify\n .onSessionReady()\n .promise.then((userInfo) =>\n this.Platform.idiom.addBundlePromise(\"/i18n\"),\n ),\n //TODO this.School.initialize( v ),\n this.User.initialize(v),\n ]);\n }\n\n // async mount(\n // version?: string | null,\n // cdnDomain?: string | null,\n // ): Promise<void> {\n // // If version is undefined, default to a new tag every day.\n // if (!version) {\n // const padWith0 = (val: number): string =>\n // (val < 10 ? \"0\" : \"\") + val.toFixed(0);\n // const now = new Date();\n // const y = now.getFullYear();\n // const m = now.getMonth() + 1;\n // const d = now.getDate();\n // version = `${y}${padWith0(m)}${padWith0(d)}`; //FIXME add ${h.toFixed(0)} to change the tag every 10 minutes\n // }\n // const v = version;\n // this.Platform.deploymentTag = version;\n\n // // Don't overwrite the CDN domain with a null or empty value.\n // if (typeof cdnDomain === \"string\" && cdnDomain.length > 0) {\n // this.Platform.cdnDomain = cdnDomain;\n // }\n // transport.http.setCdn(this.Platform.cdnDomain);\n // //\n // await this.Platform.idiom.addBundlePromise(\"/i18n\");\n // }\n}\n\n/** The whole framework is a singleton. */\nexport const configure: ConfigurationFramework = new ConfigurationFramework();\n","import { App, USER_PREFS } from \"../globals\";\nimport { IWebApp } from \"../session/interfaces\";\nimport { configure } from \"./Framework\";\n\n//-------------------------------------\nexport abstract class ConfigurationFrameworkFactory {\n //-------------------------------------\n static instance(): IConfigurationFramework {\n return configure;\n }\n}\n\n//-------------------------------------\nexport interface IConfigurationFramework {\n //-------------------------------------\n /** Framework initialization */\n initialize(version: string | null, cdnDomain: string | null): Promise<void>;\n\n readonly Platform: {\n readonly deploymentTag: string;\n readonly cdnDomain: string;\n readonly apps: {\n /**\n * Initialize an app (preload its public conf and i18n)\n * @param app Which application to initialize\n * @param alternativeApp Truthy when an application needs initializing another, while remaining principal.\n */\n initialize(app: App, alternativeApp?: boolean): Promise<void>;\n /** Load and return the public conf of an app. */\n getPublicConf(app: App): Promise<any>;\n /** Load and return the server conf of an app. */\n getWebAppConf(app: App): Promise<IWebApp | undefined>;\n /** Load the i18n of an app. */\n loadI18n(app: App): Promise<void>;\n };\n /** Configured theme. */\n readonly theme: ITheme;\n /** Configured tracking. */\n readonly analytics: {\n /** Get a tracker parameters. */\n parameters<T extends ITrackingParams>(\n type: TrackingType,\n ): Promise<T | undefined>;\n /**\n * Get the XiTi configuration.\n * This method awaits for the session to be be fully loaded.\n * //FIXME refactor xiti configuration\n */\n xiti(): Promise<IXitiTrackingParams | undefined>;\n /** Check the status, if something goes wrong. */\n readonly status: AnalyticStatus;\n };\n /** I18n (port from legacy infra-front)*/\n readonly idiom: IIdiom;\n listLanguages(): Promise<string[]>;\n };\n readonly School: {\n //apps; -> pinnedApps;\n };\n readonly User: {\n /** User's preferences.*/\n readonly preferences: IUserPreferences;\n /** Legacy option (//FIXME which use ?).*/\n readonly keepOpenOnLogout: boolean;\n /** User's prefered apps. */\n readonly bookmarkedApps: Array<IWebApp>;\n\n /** Load the user's preferences for the given app. */\n loadAppPrefs(app: App): Promise<any>;\n /** Save the user's preferences for the given app. */\n saveAppPrefs(app: App): Promise<void>;\n\n loadLanguage(): Promise<string>;\n saveLanguage(lang: string): Promise<void>;\n };\n}\n\nexport type AnalyticStatus = \"void\" | \"pending\" | \"ready\" | \"failed\";\nexport type TrackingType = \"matomo\" | \"internal\";\nexport interface ITrackingParams {\n /** Whitelist of events to track, in the form \"app\" or \"app.eventName\" or \"*.eventName\". */\n trackOnly: string[];\n /** Blacklist of events not to track, in the form \"app\" or \"app.eventName\" or \"*.eventName\". */\n doNotTrack: string[];\n /** Set to true if state changes of the Single Page App need to be tracked. */\n detailApps: boolean;\n}\nexport interface IMatomoTrackingParams extends ITrackingParams {\n url: string;\n siteId: number;\n UserId: string;\n Profile: string;\n School: string;\n Project: string;\n}\n/** 2021 implementation of XiTi. */\nexport interface IXitiTrackingParams {\n /** Which property of LIBELLE_SERVICE to use depends on the frontend. */\n LIBELLE_SERVICE: { default: string } & { [prop: string]: string };\n TYPE: string;\n OUTIL: any;\n STRUCT_ID: any;\n STRUCT_UAI: string;\n PROJET: any;\n EXPLOITANT: any;\n PLATFORME: any;\n ID_PERSO: any;\n PROFILE: any;\n // NOM_PAGE is missing, but has to determined by the frontend.\n}\n\n//-------------------------------------\nexport interface ITheme {\n //-------------------------------------\n /** (legacy) Name of the currently active skin (user's choice in /timeline) : \"default\" by default, or another available name. */\n readonly skinName: string;\n /** (legacy) Name of the currently active theme, derived from a parent which is classified as 1D (panda) or 2D(theme-open-ent). This is a domain-level configurated value. */\n readonly themeName: string;\n /** (legacy) FIXME Seems to be equal to themeName. */\n readonly skin: string;\n /** (legacy) URL to the currently active theme/skin folder. */\n readonly themeUrl: string;\n /** (legacy) URL to the currently active portal.html template. Used in infra-front. */\n readonly portalTemplate: string;\n /** (legacy) URL to the folder containing assets. */\n readonly basePath: string;\n /** (legacy) URL where the user is redirected after logout. */\n readonly logoutCallback: string;\n /** Available skins configuration (also called \"overrides\"). */\n readonly skins: Array<IThemeConfOverriding>;\n\n /** Check if the \"school degree\" of the current theme is 1D (\"panda\", or an override of it). */\n readonly is1D: boolean;\n\n /** Check if the \"school degree\" of the current theme is 2D (\"theme-open-ent\" or an override of it). */\n readonly is2D: boolean;\n\n /** Get the theme/skin configuration. */\n getConf(version?: string): Promise<IThemeConf>;\n\n /** Await for theme to be fully loaded (skin, overrides, degrees...). */\n onFullyReady(): Promise<ITheme>;\n\n /** Await for skin conf to be loaded. */\n onSkinReady(): Promise<ITheme>;\n\n /** Await for overrides conf to be loaded. */\n onOverrideReady(): Promise<IThemeOverrides>;\n\n /** List available themes. */\n listThemes(): Promise<IThemeDesc[]>;\n\n /** Configure UI with this theme by default. */\n setDefaultTheme(theme: IThemeDesc): void; // TODO: refactor, move to user's configuration ?\n\n /** List available skins. */\n listSkins(): Promise<IThemeConfOverriding[]>;\n\n /** Get the help path, which can be dedicated to 1D or 2D. */\n getHelpPath(): Promise<String>;\n}\n\n//-------------------------------------\nexport interface IThemeDesc {\n //-------------------------------------\n _id: string;\n displayName: string;\n path: string;\n}\n\n//-------------------------------------\nexport interface IThemeConf {\n //-------------------------------------\n dependencies: {\n themes: { [name: string]: /*pathRegex*/ string };\n widgets: { [name: string]: /*pathRegex*/ string };\n };\n emitWrapper: boolean;\n overriding: Array<IThemeConfOverriding>;\n}\n\n//-------------------------------------\nexport interface IThemeConfOverriding {\n //-------------------------------------\n parent: \"panda\" | \"theme-open-ent\";\n child: string;\n bootstrapVersion: string;\n skins: Array<string>;\n help: string;\n group?: string;\n edumedia: {\n uri: string;\n pattern: string;\n ignoreSubjects?: Array<string>;\n };\n}\n\nexport type IThemeOverrides = {\n [app in App]?: string;\n};\n\nexport type AddBundleCallback = () => void | Promise<void>;\n//-------------------------------------\nexport interface IIdiom {\n //-------------------------------------\n /** Get the translation of a given key.\n * @param params (optional) map of key/value variables.\n * @return the key itself when no translation exists.\n */\n translate(key: string, params?: { [param: string]: any }): string;\n /** Load a language bundle then return a Promise. */\n addBundlePromise(path: string): Promise<void>;\n /** Load a language bundle then call an optional callback. */\n addBundle(path: string, callback?: AddBundleCallback): void;\n /** Load the JSON language file from a given folder, using the current user's language, then call an optional callback. */\n addTranslations(folder: string, callback?: AddBundleCallback): void;\n /** Load the JSON language files from many given folders, using the current user's language, then return a Promise. */\n addAllTranslations(folders: string[]): Promise<void>;\n /** Add new key/values translations to the in-memory dictionary, using a key/value map. Existing in-memory keys ARE NOT REPLACED. Only new ones are added. */\n addKeys(keys: any): void;\n /** @return a new string without accentuation. */\n removeAccents(str: string): string;\n}\n\nexport type UserPreferenceKey =\n | (typeof USER_PREFS)[keyof typeof USER_PREFS]\n | App;\n//-------------------------------------\nexport interface IUserPreferences {\n //-------------------------------------\n data: { [key in UserPreferenceKey]?: any };\n get(key: UserPreferenceKey): any;\n load(key: UserPreferenceKey, defaultTo?: any): Promise<any>;\n update(key: UserPreferenceKey, data: any): IUserPreferences;\n save(key: UserPreferenceKey): Promise<void>;\n}\n\nexport interface IOdeTheme {\n basePath: string;\n bootstrapPath: string;\n bootstrapVersion: string;\n is1d: boolean;\n logoutCallback: string;\n skin: string;\n skinName: string;\n skins: Array<IThemeConfOverriding>;\n themeName: string;\n themeUrl: string;\n}\n\nexport interface IGetConf {\n applications: IWebApp[];\n conf: IThemeConf;\n currentApp: IWebApp | undefined;\n theme: IOdeTheme;\n extendedTheme: any;\n}\n","import { App } from \"../globals\";\nimport { WidgetName } from \"../widget/interfaces\";\nimport { session } from \"./Framework\";\n\n//-------------------------------------\nexport abstract class SessionFrameworkFactory {\n //-------------------------------------\n static instance(): ISessionFramework {\n return session;\n }\n}\n\n//-------------------------------------\nexport interface ISessionFramework {\n //-------------------------------------\n /** Initialize once before use. */\n initialize(): Promise<void>;\n\n /** The current user session. */\n session: ISession;\n\n /** Log the current user in. */\n login(\n email: string,\n password: string,\n rememberMe?: boolean,\n secureLocation?: boolean,\n ): Promise<void>;\n\n /** Close the current user session. */\n logout(): Promise<void>;\n}\n\n//-------------------------------------\nexport interface ILoginModel {\n //-------------------------------------\n email: string;\n password: string;\n rememberMe?: boolean;\n secureLocation?: boolean;\n /* Let's drop these old features.\n callBack?: string;\n details?: string;\n */\n}\n\n//-------------------------------------\nexport interface ISession {\n //-------------------------------------\n /** Language code (2-letters) actually applied. */\n readonly currentLanguage: string;\n /** Truthy when no user is connected. */\n readonly notLoggedIn: boolean;\n /** Additional information about the connected user. */\n readonly description: IUserDescription;\n /** Additional profile user information. */\n readonly profile: UserProfile;\n /**\n * Get the connected user's avatar URL, or a default one.\n * Append a query parameter to this URL for it to get resized, for example \"?thumbnail=48x48\"\n */\n readonly avatarUrl: string;\n /** Basic information about the connected user. */\n readonly user: IUserInfo;\n /** Retrieve the current main app, @see ConfigureFramework.Platform.apps */\n readonly currentApp: App | null;\n /** Retrieve the lastest storage + quota information. */\n readonly latestQuotaAndUsage: Promise<IQuotaAndUsage>;\n\n hasWorkflow(workflowName: string): boolean;\n hasRight(resource: any, right: any): boolean;\n\n /** Get User Profile */\n getUserProfile(): Promise<UserProfile>;\n\n /** Verify if the logged-in user has a valid email address. */\n getEmailValidationInfos(): Promise<IEmailValidationInfos>;\n /**\n * Send a 6-digits code to an email address to validate it.\n * => when resolved successfully, the email validation infos will switch to the \"pending\" state.\n */\n checkEmail(email: String): Promise<void>;\n /** Send a 6-digits code to the server to try validating the pending email address. */\n tryEmailValidation(code: String): Promise<IEmailValidationState>;\n\n /** Verify if the logged-in user has a valid phone number. */\n getMobileValidationInfos(): Promise<IMobileValidationInfos>;\n /**\n * Send a 6-digits code to a phone number to validate it.\n * => when resolved successfully, the phone number infos will switch to the \"pending\" state.\n */\n checkMobile(mobile: String): Promise<void>;\n /** Send a 6-digits code to the server to try validating the pending phone number. */\n tryMobileValidation(code: String): Promise<IMobileValidationState>;\n\n /** Start an MFA for the logged-in user, unless already pending or done. */\n getMfaInfos(): Promise<IMfaInfos>;\n /** Send a 6-digits code to the server to validate a pending MFA. */\n tryMfaCode(code: String): Promise<IMfaCodeState>;\n}\n\nexport type Hobby = {\n visibility: \"PRIVE\" | \"PUBLIC\";\n category: \"sport\" | \"cinema\" | \"animals\" | \"music\" | \"places\" | \"books\";\n values: string;\n};\nexport type School = {\n classes: Array<string>; // [\"TPS\"]\n id: string; // \"09772a06-1362-4802-a475-66a87d9cb679\"\n name: string; // \"MY DEV SCHOOL\"\n UAI: string; // \"1111888G\"\n exports: string[]; // [\"GAR-P0\"]\n};\nexport type UserProfile = Array<\n \"Student\" | \"Teacher\" | \"Relative\" | \"Personnel\" | \"Guest\"\n>;\n//-------------------------------------\nexport interface IUserDescription {\n //-------------------------------------\n /*---- From /directory/userbook/_user_id_ ----*/\n alertSize: boolean;\n health: string; // \"\" ?\n hobbies: Array<Hobby>;\n mood:\n | \"default\"\n | \"happy\"\n | \"proud\"\n | \"dreamy\"\n | \"love\"\n | \"tired\"\n | \"angry\"\n | \"worried\"\n | \"sick\"\n | \"joker\"\n | \"sad\";\n motto: string; // \"Carpe diem\"\n oldPicture?: string; // \"/workspace/document/aaaabbbb-ccdd-dead-beef-0123456789ab\"\n picture: string; // \"no-avatar.jpg\"\n quota: number; // 1048576000\n storage: number; // 106653578\n theme: string; // \"default\"\n type: string; // \"USERBOOK\";\n userid: string; // \"12345678-9abc-def0-1234-56789abcdef0\"\n\n /*---- From /userbook/api/person ----*/\n address: string;\n birthdate: string; // \"1980-01-20\"\n displayName: string; // \"LASTNAME Firstname\"\n email: string;\n id: string; // \"12345678-9abc-def0-1234-56789abcdef0\"\n login: string;\n mobile: string;\n photo: string; // \"no-avatar.jpg\"\n relatedId?: any; // null\n relatedName?: any; // null\n relatedType?: any; // null\n schools: Array<School>;\n tel: string;\n profiles: UserProfile; // NOTE: initial field name is \"type\", but it is renamed to \"profiles\" internally.\n userId: string; // \"12345678-9abc-def0-1234-56789abcdef0\"\n visibleInfos: Array<string>; // [\"SHOW_BIRTHDATE\"]\n}\n\n//-------------------------------------\nexport interface IQuotaAndUsage {\n //-------------------------------------\n /** Maximum use of the storage space. */\n quota: number;\n /** Current use of the storage space. */\n storage: number;\n}\n\n////////////////////////////////////////// LEGACY\n\n//-------------------------------------\nexport interface IUserInfo {\n //-------------------------------------\n apps: Array<IWebApp>;\n authorizedActions: Array<IWorkflowAuth>;\n birthDate: string; // \"1980-01-13\"\n children: any;\n childrenIds: Array<string>;\n classNames: Array<string>;\n classes: Array<any>;\n deletePending: boolean;\n externalId: string;\n federated?: any;\n federatedIDP?: any;\n firstName: string;\n forceChangePassword?: any;\n functions: {\n ADMIN_LOCAL?: { code: string; scope: Array<string> };\n SUPER_ADMIN: { code: string; scope: Array<string> };\n };\n groupsIds: Array<string>;\n hasApp: boolean;\n hasPw: boolean;\n lastName: string;\n level: string;\n login: string;\n needRevalidateTerms: any;\n optionEnabled: Array<any>;\n preferences?: { save: (pref: any, data: any) => void };\n sessionMetadata: { _id: string; userId: string };\n structureNames: Array<string>;\n structures: Array<string>;\n type: \"ENSEIGNANT\" | \"ELEVE\" | \"PERSRELELEVE\" | \"SUPERADMIN\" | \"PERSEDUCNAT\";\n uai: Array<any>;\n userId: string;\n username: string;\n widgets: Array<IWidgetModel>;\n}\n\n//-- Widgets position\nexport const WIDGET_POSITION = {\n LEFT: \"left\",\n RIGHT: \"right\",\n // TODO: position pourrait être étendu à d'autres valeurs: |“top” ou “bottom” ou “fixed”...\n} as const;\nexport type WidgetPosition =\n (typeof WIDGET_POSITION)[keyof typeof WIDGET_POSITION];\n\n//-------------------------------------\nexport interface IWidgetModel {\n //-------------------------------------\n application?: string; // \"Actualites\"\n position?: WidgetPosition;\n i18n: string; // \"/actualites/public/widgets/last-infos-widget/i18n\"\n id: string;\n js: string; // \"/actualites/public/widgets/last-infos-widget/last-infos-widget.js\"\n mandatory: boolean;\n name: WidgetName; // \"last-infos-widget\"\n path: string; // \"/actualites/public/widgets/last-infos-widget/last-infos-widget.html\"\n}\n\n//-------------------------------------\nexport interface IWebApp {\n //-------------------------------------\n address: string; // \"/mindmap\"\n casType?: string; // \"null\"\n display: boolean; // true\n displayName: string; // \"mindmap\"\n icon: string; // \"mindmap-large\"\n isExternal: boolean; // false\n name: string; // \"Mindmap\"\n prefix?: string; // \"/mindmap\"\n scope: Array<string>; // [\"\"]\n target?: any; // \"_blank\"\n}\n\n//-------------------------------------\nexport interface IWorkflowAuth {\n //-------------------------------------\n displayName: string;\n name: string;\n type: string;\n}\n\n//-------------------------------------\nexport interface IEmailValidationInfos {\n //-------------------------------------\n /** The current email address of the user (maybe not verified) */\n email: string;\n /** State of the current email address. */\n emailState: IEmailValidationState | null;\n /** Suggested time to wait for the validation mail to be sent (platform configuration) */\n waitInSeconds: number;\n}\n//-------------------------------------\nexport interface IEmailValidationState {\n //-------------------------------------\n /** Validation state */\n state: \"unchecked\" | \"outdated\" | \"pending\" | \"valid\";\n /** Last known valid email address, or empty string. */\n valid: string;\n /** (optional) Current pending (or outdated) email address being checked. */\n pending?: string;\n /** (optional) Seconds remaining for the user to type in the correct validation code. */\n ttl?: number;\n /** (optional) Remaining number of times a validation code can be typed in. */\n tries?: number;\n}\n\n//-------------------------------------\nexport interface IMobileValidationInfos {\n //-------------------------------------\n /** The current phone number of the user (maybe not verified) */\n mobile: string;\n /** State of the current phone number. */\n mobileState: IMobileValidationState | null;\n /** Suggested time to wait for the validation phone number to be sent (platform configuration) */\n waitInSeconds: number;\n}\n//-------------------------------------\nexport interface IMobileValidationState {\n //-------------------------------------\n /** Validation state */\n state: \"unchecked\" | \"outdated\" | \"pending\" | \"valid\";\n /** Last known valid phone number, or empty string. */\n valid: string;\n /** (optional) Current pending (or outdated) phone number being checked. */\n pending?: string;\n /** (optional) Seconds remaining for the user to type in the correct validation code. */\n ttl?: number;\n /** (optional) Remaining number of times a validation code can be typed in. */\n tries?: number;\n}\n\n//-------------------------------------\nexport interface IMfaInfos {\n //-------------------------------------\n /** The type of MFA used. */\n type: \"sms\" | \"email\";\n /** State of the generated MFA code. */\n state: IMfaCodeState | null;\n /** Suggested time to wait for the MFA code to be sent (platform configuration) */\n waitInSeconds: number;\n}\n//-------------------------------------\nexport interface IMfaCodeState {\n //-------------------------------------\n /** Validation state */\n state: \"outdated\" | \"pending\" | \"valid\";\n /** (optional) Seconds remaining for the user to type in the correct code. */\n ttl?: number;\n /** (optional) Remaining number of times a code can be typed in. */\n tries?: number;\n}\n\nexport interface IGetSession {\n user: IUserInfo | undefined;\n currentLanguage: string | undefined;\n quotaAndUsage: IQuotaAndUsage;\n userDescription: IUserDescription;\n userProfile?: UserProfile;\n bookmarkedApps: IWebApp[];\n}\n\nexport type PersonApiResult = {\n status: \"ok\" | string;\n result: Array<IUserDescription>;\n};\n","import {\n IWidgetFramework,\n IWidget,\n WidgetUserPref,\n WidgetName,\n} from \"./interfaces\";\nimport {\n IWidgetModel,\n WidgetPosition,\n WIDGET_POSITION,\n} from \"../session/interfaces\";\nimport { notify, Promisified } from \"../notify/Framework\";\nimport { IPromisified, EVENT_NAME, LAYER_NAME } from \"../notify/interfaces\";\nimport { configure } from \"../configure/Framework\";\nimport { Idiom } from \"../idiom/Idiom\";\n\n// Widgets for 1D ONLY\nconst firstLevelWidgets: Array<WidgetName> = [\n \"birthday\",\n \"mood\",\n \"calendar-widget\",\n \"notes\",\n];\n// Widgets for 2D ONLY\nconst secondLevelWidgets: Array<WidgetName> = [\n \"agenda-widget\",\n \"carnet-de-bord\",\n \"my-apps\",\n \"rss-widget\",\n \"bookmark-widget\",\n \"cursus-widget\",\n \"maxicours-widget\",\n \"school-widget\",\n];\n\n// Default position for widgets.\nconst defaultWidgetPosition: { [name in WidgetName]: WidgetPosition } = {\n \"last-infos-widget\": WIDGET_POSITION.LEFT, // Actualités\n birthday: WIDGET_POSITION.LEFT,\n \"calendar-widget\": WIDGET_POSITION.RIGHT, // Calendrier\n \"carnet-de-bord\": WIDGET_POSITION.LEFT,\n \"record-me\": WIDGET_POSITION.RIGHT, // Dictaphone\n mood: WIDGET_POSITION.LEFT,\n \"my-apps\": WIDGET_POSITION.RIGHT,\n notes: WIDGET_POSITION.RIGHT,\n \"rss-widget\": WIDGET_POSITION.LEFT,\n \"bookmark-widget\": WIDGET_POSITION.RIGHT,\n qwant: WIDGET_POSITION.RIGHT,\n \"qwant-junior\": WIDGET_POSITION.LEFT,\n \"agenda-widget\": WIDGET_POSITION.LEFT, // Agenda\n \"cursus-widget\": WIDGET_POSITION.LEFT,\n \"maxicours-widget\": WIDGET_POSITION.RIGHT,\n \"universalis-widget\": WIDGET_POSITION.RIGHT,\n \"briefme-widget\": WIDGET_POSITION.LEFT,\n \"school-widget\": WIDGET_POSITION.LEFT,\n \"edumalin-widget\": WIDGET_POSITION.RIGHT,\n \"mediacentre-widget\": WIDGET_POSITION.RIGHT,\n \"cantine-widget\": WIDGET_POSITION.LEFT,\n \"screen-time-widget\": WIDGET_POSITION.RIGHT\n};\n\n// Default sort order for widgets, then overriden by user preferences, if any.\nconst defaultWidgetOrder: { [name in WidgetName]: number } = {\n \"school-widget\": 0,\n \"my-apps\": 10,\n \"record-me\": 15,\n \"last-infos-widget\": 20, // Actualités\n qwant: 30,\n \"qwant-junior\": 30,\n \"universalis-widget\": 35,\n \"agenda-widget\": 40, // Agenda\n \"bookmark-widget\": 50,\n \"carnet-de-bord\": 60,\n \"maxicours-widget\": 70,\n \"cursus-widget\": 80, // Dictaphone\n \"briefme-widget\": 90,\n \"rss-widget\": 100,\n mood: 110,\n birthday: 120,\n \"calendar-widget\": 130, // Calendrier\n notes: 140,\n \"edumalin-widget\": 35,\n \"mediacentre-widget\": 145,\n \"cantine-widget\": 21,\n \"screen-time-widget\": 35\n};\n\n//-------------------------------------\nexport class WidgetFramework implements IWidgetFramework {\n //-------------------------------------\n private _initialized?: IPromisified<void>;\n private _widgets: Array<Widget> = [];\n\n initialize(version: string | null, cdnDomain: string | null): Promise<void> {\n if (!this._initialized) {\n this._initialized = new Promisified<void>();\n\n // Wait for /auth/oauth2/userinfo and read the widget conf.\n notify.onSessionReady().promise.then((userInfo) => {\n if (userInfo && userInfo.widgets) {\n userInfo.widgets.forEach((w) => {\n this._widgets.push(new Widget(w));\n });\n this.loadUserPrefs()\n .then(() => {\n this._initialized?.resolve();\n })\n .catch((e) => {\n this._initialized?.reject();\n });\n } else {\n this._initialized?.reject();\n }\n });\n }\n return this._initialized.promise;\n }\n\n ////////////////////////////////////// ACCESSORS\n get list(): Widget[] {\n return this._widgets;\n }\n\n lookup(widgetName: string): IWidget | undefined {\n return this._widgets.find((w) => w.platformConf.name === widgetName);\n }\n\n public lookupDefaultPosition(\n widgetName: WidgetName,\n ): WidgetPosition | undefined {\n return defaultWidgetPosition[widgetName];\n }\n\n ////////////////////////////////////// USER PREFERENCES\n private _userPrefs: IWidgetUserPrefs = {};\n get userPrefs() {\n return this._userPrefs;\n }\n\n private async loadUserPrefs(): Promise<void> {\n await configure.User.preferences.load(\"widgets\", {}).then((prefs) => {\n return this.applyUserPrefs(prefs as IWidgetUserPrefs);\n });\n }\n\n saveUserPrefs() {\n return configure.User.preferences\n .update(\"widgets\", this._userPrefs)\n .save(\"widgets\")\n .then(() => {\n notify.events().next({\n name: EVENT_NAME.USERPREF_CHANGED,\n layer: LAYER_NAME.WIDGETS,\n });\n });\n }\n\n private async applyUserPrefs(prefs: IWidgetUserPrefs): Promise<void> {\n this._userPrefs = prefs ?? this._userPrefs;\n const skin = configure.Platform.theme;\n const i18nFolders: Array<string> = [];\n\n // List skins to determine if current theme is 1D or 2D.\n skin.listSkins().then((skins) => {\n const widgetsToHide =\n skins.find((s) => s.child === skin.skin)?.parent === \"panda\"\n ? secondLevelWidgets\n : firstLevelWidgets;\n\n // Filter out widgets that do not apply to the current theme,\n // AND prepare userPrefs of remaining widgets.\n this._widgets = this._widgets.filter((w, i) => {\n const widgetName = w.platformConf.name;\n const isHidden = widgetsToHide.indexOf(widgetName) !== -1;\n if (isHidden) return false;\n\n // Prepare the userPref of this widget.\n if (!this._userPrefs[widgetName]) {\n this._userPrefs[widgetName] = {\n index: defaultWidgetOrder[widgetName] ?? 999,\n show: true,\n position: w.platformConf.position,\n };\n }\n if (w.platformConf.mandatory) {\n this._userPrefs[widgetName].show = true;\n //#WB-48 : mandatory widgets are now sorted by default order.\n this._userPrefs[widgetName].index =\n defaultWidgetOrder[widgetName] ?? 999;\n }\n // Load its translations.\n if (w.platformConf.i18n) {\n i18nFolders.push(w.platformConf.i18n);\n }\n w.applyUserPref(this._userPrefs[widgetName]);\n return true;\n });\n const lang = new Idiom();\n this._widgets = this._widgets.sort((a, b) => {\n const translatedA = lang\n .translate(`timeline.settings.${a.platformConf.name}`)\n .toLowerCase();\n const translatedB = lang\n .translate(`timeline.settings.${b.platformConf.name}`)\n .toLowerCase();\n if (translatedA < translatedB) return -1;\n if (translatedA > translatedB) return 1;\n return 0;\n });\n });\n // FIXME: this is a port of the old code. No longer required by widgets from ode-ngjs-front.\n // .then( () => {\n // // TODO Wait for the translation to be loaded ? => uncomment \"return\" below.\n // /*return*/ configure.Platform.idiom.addAllTranslations( i18nFolders );\n // });\n }\n}\n\n//-------------------------------------\nclass Widget implements IWidget {\n //-------------------------------------\n constructor(private _platformConf: IWidgetModel) {\n // The widget is constructed by WidgetFramework.initialize(), which also sets this._userPref.\n // The following line is a pure typescript fix.\n this._userPref = null as any as WidgetUserPref;\n }\n get platformConf(): IWidgetModel {\n return this._platformConf;\n }\n\n private _schoolConf = {};\n get schoolConf() {\n return this._schoolConf;\n }\n\n private _userPref: WidgetUserPref;\n get userPref(): WidgetUserPref {\n // Sanity checks here\n return this._userPref;\n }\n\n applyUserPref(pref: WidgetUserPref) {\n this._userPref = pref;\n // Sanity checks here\n // Apply default position, left or right.\n this._userPref.position =\n this._userPref.position ??\n widgets.lookupDefaultPosition(this._platformConf.name) ??\n \"left\";\n }\n}\n\n//-------------------------------------\ninterface IWidgetUserPrefs {\n //-------------------------------------\n [widgetName: string]: WidgetUserPref;\n}\n\n/** The whole framework is a singleton. */\nexport const widgets: WidgetFramework = new WidgetFramework();\n","import { transport } from \"../transport/Framework\";\n\nexport interface ILastInfosModel {\n modifiedDate: string; // \"2021-03-24T16:36:05.398\"\n thread: {\n id: number; // 221\n icon: string; // \"/workspace/document/36a04526-15a2-4e8f-adb6-cca75630e50d\"\n title: string; // \"News collège Denis Poisson\"\n sharedRights: []; \n },\n title: string; // \"xx\"\n username: string; // \"DEVAULX ALAIN\"\n id: number; // 597\n}\n\nexport class LastInfosWidget {\n loadInfos(maxResults: number): Promise<ILastInfosModel[]> {\n return transport.http.get(\"/actualites/api/v1/infos/preview/last/\" + maxResults);\n }\n\n getMaxResults(): Promise<number> {\n return transport.http\n .get(\"/userbook/preference/maxInfos\")\n .then((maxInfos) => {\n return maxInfos.preference ? parseInt(maxInfos.preference) : 4;\n });\n }\n\n setMaxResults(maxResults: number): Promise<void> {\n return transport.http.putJson(\n \"/userbook/preference/maxInfos\",\n `\"${maxResults}\"`,\n );\n }\n}\n","import { IWidgetModel, WidgetPosition } from \"../session/interfaces\";\nimport { widgets } from \"./Framework\";\n\n//-- Widgets name\nexport const WIDGET_NAME = {\n LAST_INFOS: \"last-infos-widget\",\n BIRTHDAY: \"birthday\",\n CALENDAR: \"calendar-widget\",\n CARNET: \"carnet-de-bord\",\n RECORD: \"record-me\",\n MOOD: \"mood\",\n MY_APPS: \"my-apps\",\n NOTES: \"notes\",\n RSS: \"rss-widget\",\n BOOKMARK: \"bookmark-widget\",\n QWANT: \"qwant\",\n QWANT_JUNIOR: \"qwant-junior\",\n AGENDA: \"agenda-widget\",\n CURSUS: \"cursus-widget\",\n MAXICOURS: \"maxicours-widget\",\n UNIVERSALIS: \"universalis-widget\",\n BRIEFME: \"briefme-widget\",\n SCHOOL: \"school-widget\",\n EDUMALIN: \"edumalin-widget\",\n MEDIACENTRE: \"mediacentre-widget\",\n CANTINE: \"cantine-widget\",\n SCREEN_TIME: \"screen-time-widget\"\n} as const;\nexport type WidgetName = (typeof WIDGET_NAME)[keyof typeof WIDGET_NAME];\n\n//-------------------------------------\nexport abstract class WidgetFrameworkFactory {\n //-------------------------------------\n static instance(): IWidgetFramework {\n return widgets;\n }\n}\n\n//-------------------------------------\nexport interface IWidgetFramework {\n //-------------------------------------\n /** Loads the widget configuration. */\n initialize(version: string | null, cdnDomain: string | null): Promise<void>;\n\n /** Save user preferences */\n saveUserPrefs(): Promise<any>;\n\n /** List widgets that are visible to the connected user. */\n readonly list: IWidget[];\n\n /** Retrieve a widget by name. */\n lookup(widgetName: string): IWidget | undefined;\n}\n\n//-------------------------------------\nexport interface IWidget {\n //-------------------------------------\n /** The widgets conf at platform level. */\n readonly platformConf: IWidgetModel;\n /* TODO readonly schoolConf:any; */\n /** The widgets conf at user level. */\n readonly userPref: WidgetUserPref;\n}\n\n//-------------------------------------\nexport type WidgetSpecificUserPrefs = \"schoolId\"; // lastest selected school id, in school-widget\n//-------------------------------------\n\n//-------------------------------------\nexport type WidgetUserPref = {\n //-------------------------------------\n /** Integer defining the sort order of this widget. */\n index: number;\n /** Boolean indicating wether the user wants to see this widget, or not. */\n show: boolean;\n /** Prefered position on-screen (left, right...). */\n position?: WidgetPosition;\n} & {\n [pref in WidgetSpecificUserPrefs]?: any;\n};\n\n//-------------------------------------\n// WIDGETS\n//-------------------------------------\nexport * from \"./LastInfos.widget\";\n","import { session } from \"../../session/Framework\";\nimport { transport } from \"../../transport/Framework\";\nimport { ITimelineNotification, NotificationModel } from \"./interfaces\";\n\n/* const http = TransportFrameworkFactory.instance().http;\nconst me = SessionFrameworkFactory.instance().session.user; */\n\nconst http = transport?.http;\nconst me = session?.session?.user;\n\nexport class Notification implements ITimelineNotification {\n constructor(model: NotificationModel) {\n model.reported = model.reporters && model.reporters.length > 0;\n this._id = model._id;\n this.model = model;\n }\n public _id: string;\n public model: NotificationModel;\n\n isUnread() {\n return (\n this.model.recipients?.find((recipient) => {\n return recipient.userId === me.userId;\n }) !== undefined\n );\n }\n\n delete() {\n return http.delete(\"/timeline/\" + this._id);\n }\n\n discard() {\n return http.put(\"/timeline/\" + this._id);\n }\n\n report() {\n return http.put(\"/timeline/\" + this._id + \"/report\");\n }\n}\n","import { APP } from \"../../globals\";\nimport {\n IFlashMessageModel,\n ITimelineApp,\n NotificationModel,\n} from \"./interfaces\";\nimport { configure } from \"../../configure/Framework\";\nimport { transport } from \"../../transport/Framework\";\nimport { Notification } from \"./Notification.model\";\n\n//-------------------------------------\nexport class TimelineApp implements ITimelineApp {\n //-------------------------------------\n\n private _notifications: Array<Notification> = [];\n private _notificationTypes: Array<string> = []; // ex: [\"BLOG\"]\n private _flashMessages: Array<IFlashMessageModel> = [];\n private _pageNumber = 0;\n private _lastPage = false;\n private _loading = false;\n\n public showMine: boolean = false;\n\n get notifications(): Array<Notification> {\n return this._notifications;\n }\n get isLoading(): boolean {\n return this._loading;\n }\n get page(): number {\n return this._pageNumber;\n }\n get hasMorePage(): boolean {\n return !this._lastPage;\n }\n get notificationTypes(): Array<string> {\n return this._notificationTypes;\n }\n get selectedNotificationTypes(): Array<string> {\n this.preferences.type = this.preferences.type || [];\n return this.preferences.type;\n }\n get preferences(): any {\n return configure.User.preferences.get(APP.TIMELINE);\n }\n get flashMessages() {\n return this._flashMessages;\n }\n\n public savePreferences() {\n return configure.User.saveAppPrefs(APP.TIMELINE);\n }\n\n public resetPagination(): void {\n this._pageNumber = 0;\n this._lastPage = false;\n this._loading = false;\n }\n\n initialize(): Promise<void> {\n return Promise.all([\n configure.User.loadAppPrefs(APP.TIMELINE),\n transport.http.get(\"/timeline/types\"),\n ]).then((result) => {\n this._notificationTypes = result[1];\n });\n }\n\n public loadNotifications(force?: boolean): Promise<void> {\n const paginate = true; // Let's paginate, that's all.\n if (this._loading || (paginate && this._lastPage)) {\n return Promise.resolve();\n }\n\n if (force) {\n this._pageNumber++;\n this._lastPage = false;\n }\n\n let types = this.selectedNotificationTypes;\n // if(types.length===0) {\n // types = this._notificationTypes;\n // }\n\n if (types.length === 0) {\n this._lastPage = true;\n return Promise.resolve();\n }\n\n let params: { page: number; mine?: number } = {\n page: this.page,\n mine: 1,\n };\n\n if (!this.showMine) {\n delete params.mine;\n }\n\n if (paginate) {\n this._loading = true;\n }\n\n return transport.http\n .get(`/timeline/lastNotifications?type=${types.join(\"&type=\")}`, {\n queryParams: params,\n })\n .then(\n (response: {\n status: string;\n number: number;\n results: Array<NotificationModel>;\n }) => {\n this._loading = false;\n\n if (response.status !== \"ok\") {\n //TODO notify error\n return;\n }\n\n if (response.number && response.results) {\n //#36034, add only non existing notification (avoid duplicate)\n const toAdd = response.results\n .filter(\n (result) =>\n this._notifications.findIndex(\n (_notification) => _notification._id === result._id,\n ) === -1,\n )\n .map((notification) => new Notification(notification));\n this._notifications = this._notifications.concat(toAdd);\n this._pageNumber++;\n } else {\n this._lastPage = true;\n //FIXME model.trigger('notifications.change')\n }\n },\n )\n .catch((data) => {\n this._loading = false;\n //FIXME notify.error(data);\n });\n }\n\n loadFlashMessages(): Promise<void> {\n return transport.http\n .get<Array<IFlashMessageModel>>(\"/timeline/flashmsg/listuser\")\n .then((results) => {\n this._flashMessages = results;\n });\n }\n\n markAsRead(msg: IFlashMessageModel): Promise<void> {\n return transport.http.put(\"/timeline/flashmsg/\" + msg.id + \"/markasread\");\n }\n}\n","import { TimelineApp } from \"./Framework\";\n\n//-------------------------------------\nexport abstract class ITimelineFactory {\n //-------------------------------------\n static createInstance(): ITimelineApp {\n return new TimelineApp();\n }\n}\n\n//-------------------------------------\nexport interface ITimelineApp {\n //-------------------------------------\n initialize(): Promise<void>;\n readonly notificationTypes: Array<string>;\n readonly selectedNotificationTypes: Array<string>;\n\n showMine: boolean;\n /** Load more notifications, or force loading more by virtually incrementing the page. */\n loadNotifications(force?: boolean): Promise<void>;\n readonly notifications: Array<ITimelineNotification>;\n\n resetPagination(): void;\n readonly isLoading: boolean;\n readonly page: number;\n readonly hasMorePage: boolean;\n\n savePreferences(): Promise<void>;\n readonly preferences: any;\n // registeredNotifications: any;\n\n loadFlashMessages(): Promise<void>;\n readonly flashMessages: Array<IFlashMessageModel>;\n markAsRead(msg: IFlashMessageModel): Promise<void>;\n}\n\n//-------------------------------------\nexport interface ITimelineNotification {\n //-------------------------------------\n readonly _id: string;\n readonly model: NotificationModel;\n isUnread(): boolean;\n delete(): Promise<void>;\n discard(): Promise<void>;\n report(): Promise<void>;\n}\n\n//-------------------------------------\nexport type NotificationModel = {\n //-------------------------------------\n _id: string; // \"aaaa-aaa-aaa-adfdf\"\n type: string; // \"BLOG\",\n eventType: string; // \"SHARE\",\n resource: string; // \"732ba669-fead-44e5-a9d6-442a9352573a\",\n sender: string; //\"16e39809-f5e7-4e85-8244-ab5a199e4e0b\",\n params: {\n uri: string; //\"/userbook/annuaire#16e39809-f5e7-4e85-8244-ab5a199e4e0b#Teacher\",\n username: string; //\"BAILLY Catherine\",\n blogTitle: string; //\"test 9/04\",\n resourceUri: string; //\"/blog#/view/732ba669-fead-44e5-a9d6-442a9352573a\"\n };\n date: {\n $date: number;\n };\n message: string; // \"<a href=\\\"http://localhost:8090/userbook/annuaire#16e39809-f5e7-4e85-8244-ab5a199e4e0b#Teacher\\\">BAILLY Catherine</a>\\n<br />\\n<span>\\n\\t<span>vous a donné accès au blog</span> <a href=\\\"http://localhost:8090/blog#/view/732ba669-fead-44e5-a9d6-442a9352573a\\\">test 9/04</a>.\\n</span>\\n\"\n\n recipients?: Array<Recipient>;\n reported?: boolean;\n reporters?: any;\n};\n\n//-------------------------------------\nexport interface Recipient {\n //-------------------------------------\n userId: string;\n}\n\n//-------------------------------------\nexport interface IFlashMessageModel {\n //-------------------------------------\n readonly id: string;\n readonly title?: string;\n readonly contents?: Object;\n readonly startDate?: string;\n readonly endDate?: string;\n readonly readCount?: number;\n readonly author?: string;\n readonly profiles?: string[];\n readonly color?: string;\n readonly customColor?: string | null;\n readonly lastModifier?: string;\n readonly structureId?: string;\n readonly subStructures?: string[];\n readonly signature?: string;\n readonly signatureColor?: string;\n}\n","import {\n PublishParameters,\n PublishResult,\n GetContextParameters,\n GetContextResult,\n ISearchResults,\n CreateFolderParameters,\n MoveParameters,\n IActionResult,\n TrashParameters,\n CreateFolderResult,\n UpdateFolderParameters,\n ID,\n GetSubFoldersResult,\n DeleteParameters,\n ResourceType,\n} from \"..\";\nimport { OdeServices } from \"../services/OdeServices\";\nimport { CreateParameters, CreateResult, UpdateParameters, UpdateResult } from \"./interface\";\n\nexport abstract class ResourceService {\n //\n // STATIC REGISTRY\n //\n private static registry = new Map<\n string,\n (context: OdeServices) => ResourceService\n >();\n\n static register(\n {\n application,\n resourceType,\n }: { application: string; resourceType: string },\n service: (context: OdeServices) => ResourceService,\n ) {\n ResourceService.registry.set(`${application}:main`, service);\n ResourceService.registry.set(`${application}:${resourceType}`, service);\n }\n static findService(\n {\n application,\n resourceType,\n }: { application: string; resourceType: string },\n context: OdeServices,\n ): ResourceService {\n const found = ResourceService.registry.get(\n `${application}:${resourceType}`,\n );\n if (found === undefined) {\n throw \"Service not found: \" + `${application}:${resourceType}`;\n }\n return found(context);\n }\n static findMainService(\n { application }: { application: string },\n context: OdeServices,\n ): ResourceService {\n const found = ResourceService.registry.get(`${application}:main`);\n if (found === undefined) {\n throw \"Service not found: \" + `${application}`;\n }\n return found(context);\n }\n //\n // IMPLEMENTATION\n //\n constructor(protected context: OdeServices) {}\n\n protected get http() {\n return this.context.http();\n }\n //\n // ABSTRACT METHOD\n //\n abstract getApplication(): string;\n\n abstract getPrintUrl(resourceId: string, withComment?: boolean): string;\n\n abstract getViewUrl(resourceId: string): string;\n\n abstract getFormUrl(folderId?: string): string;\n\n abstract create<T extends CreateParameters>(\n parameters: T,\n ): Promise<CreateResult>;\n\n abstract update<T extends UpdateParameters>(\n parameters: T,\n ): Promise<UpdateResult>;\n\n abstract getResourceType(): ResourceType;\n getShareReadUrl(id: string) {\n return `/${this.getApplication()}/share/json/${id}?search=`;\n }\n getSaveShareUrl(id: string) {\n return `/${this.getApplication()}/share/resource/${id}`;\n }\n //\n // SHARED METHOD\n //\n gotoPrint(resourceId: string, withComment?: boolean): void {\n window.open(this.getPrintUrl(resourceId, withComment), \"_blank\");\n }\n\n gotoView(resourceId: string): void {\n window.open(this.getViewUrl(resourceId), \"_self\");\n }\n\n gotoForm(folderId?: string) {\n window.open(this.getFormUrl(folderId), \"_self\");\n }\n\n async publish(parameters: PublishParameters): Promise<PublishResult> {\n const publicationAsFormData = new FormData();\n publicationAsFormData.append(\"title\", parameters.title);\n publicationAsFormData.append(\"cover\", parameters.cover);\n publicationAsFormData.append(\"coverName\", (parameters.cover as File).name);\n publicationAsFormData.append(\"coverType\", parameters.cover.type);\n publicationAsFormData.append(\"teacherAvatar\", parameters.teacherAvatar);\n publicationAsFormData.append(\n \"teacherAvatarName\",\n (parameters.teacherAvatar as File).name ||\n `teacherAvatar_${parameters.userId}`,\n );\n publicationAsFormData.append(\n \"teacherAvatarType\",\n parameters.teacherAvatar.type,\n );\n publicationAsFormData.append(\"language\", parameters.language);\n parameters.activityType.forEach((activityType) => {\n publicationAsFormData.append(\"activityType[]\", activityType);\n });\n parameters.subjectArea.forEach((subjectArea) => {\n publicationAsFormData.append(\"subjectArea[]\", subjectArea);\n });\n parameters.age.forEach((age) => {\n publicationAsFormData.append(\"age[]\", age.toString());\n });\n publicationAsFormData.append(\"description\", parameters.description);\n let keyWordsArray = parameters.keyWords.split(\",\");\n keyWordsArray.forEach((keyWord) => {\n publicationAsFormData.append(\"keyWords[]\", keyWord.trim());\n });\n publicationAsFormData.append(\"licence\", parameters.licence);\n publicationAsFormData.append(\n \"pdfUri\",\n `${window.location.origin}${this.getPrintUrl(parameters.resourceEntId)}`,\n );\n publicationAsFormData.append(\n \"application\",\n parameters.application ? parameters.application : \"\",\n );\n publicationAsFormData.append(\"resourceId\", parameters.resourceId);\n publicationAsFormData.append(\"teacherSchool\", parameters.userStructureName);\n const res = await this.http.post<PublishResult>(\n \"/appregistry/library/resource\",\n publicationAsFormData,\n {\n headers: { \"Content-Type\": \"multipart/form-data\" },\n },\n );\n return this.checkHttpResponse(res);\n }\n\n //\n // FOLDER METHODS\n //\n /** Create a search context. */\n async createContext(\n parameters: GetContextParameters,\n ): Promise<GetContextResult> {\n const result = await this.http.get<GetContextResult>(\"/explorer/context\", {\n queryParams: this.toQueryParams(parameters),\n });\n return this.checkHttpResponse(result);\n }\n\n /** Search / paginate within a search context. */\n async searchContext(\n parameters: GetContextParameters,\n ): Promise<ISearchResults> {\n const result = await this.http.get<GetContextResult>(\n \"/explorer/resources\",\n {\n queryParams: this.toQueryParams(parameters),\n },\n );\n return this.checkHttpResponse(result);\n }\n\n /** Create a new folder. */\n async createFolder(\n parameters: CreateFolderParameters,\n ): Promise<CreateFolderResult> {\n const result = await this.http.post<CreateFolderResult>(\n \"/explorer/folders\",\n this.createFolderToBodyParams(parameters),\n );\n return this.checkHttpResponse(result);\n }\n\n /** Update folder. */\n async updateFolder(\n parameters: UpdateFolderParameters,\n ): Promise<CreateFolderResult> {\n const result = await this.http.put<CreateFolderResult>(\n `/explorer/folders/${parameters.folderId}`,\n this.createFolderToBodyParams(parameters),\n );\n return this.checkHttpResponse(result);\n }\n\n /** Move resources/folders to a folder. */\n async moveToFolder(parameters: MoveParameters): Promise<IActionResult> {\n const result = await this.http.post<IActionResult>(\n `/explorer/folders/${parameters.folderId}/move`,\n this.moveToBodyParams(parameters),\n );\n return this.checkHttpResponse(result);\n }\n\n /** List subfolders of a parent folder. */\n async listSubfolders(folderId: ID): Promise<GetSubFoldersResult> {\n const result = await this.http.get<GetSubFoldersResult>(\n `/explorer/folders/${folderId}`,\n );\n return this.checkHttpResponse(result);\n }\n\n /** Delete folders and/or resources. */\n async deleteAll(parameters: DeleteParameters): Promise<IActionResult> {\n const result = await this.http.deleteJson<IActionResult>(\n `/explorer`,\n parameters,\n );\n return this.checkHttpResponse(result);\n }\n\n /** Trash folders and/or resources. */\n async trashAll({\n resourceType,\n ...parameters\n }: Omit<TrashParameters, \"trash\">): Promise<IActionResult> {\n const result = await this.http.putJson<IActionResult>(\n `/explorer/trash`,\n parameters,\n );\n return this.checkHttpResponse(result);\n }\n /** Trash folders and/or resources. */\n async restoreAll({\n resourceType,\n ...parameters\n }: Omit<TrashParameters, \"trash\">): Promise<IActionResult> {\n const result = await this.http.putJson<IActionResult>(\n `/explorer/restore`,\n parameters,\n );\n return this.checkHttpResponse(result);\n }\n //\n // PROTECTED HELPERS\n //\n protected checkHttpResponse: <R>(result: R) => R = (result) => {\n if (this.http.latestResponse.status >= 300) {\n throw this.http.latestResponse.statusText;\n }\n return result;\n };\n\n protected async getThumbnailPath(thumb: string | Blob | File | undefined) {\n if (typeof thumb === \"undefined\") {\n return thumb;\n } else if (typeof thumb === \"string\") {\n if (thumb.startsWith(\"blob:\")) {\n const blob = await fetch(thumb).then((r) => r.blob());\n const res = await this.context.workspace().saveFile(blob, {\n visibility: \"protected\",\n application: this.getApplication(),\n });\n return `/workspace/document/${res._id}`;\n } else {\n return thumb;\n }\n } else {\n const res = await this.context.workspace().saveFile(thumb, {\n visibility: \"protected\",\n application: this.getApplication(),\n });\n return `/workspace/document/${res._id}`;\n }\n }\n\n //\n // PRIVATE HELPERS\n //\n private toQueryParams(p: GetContextParameters): Record<string, string> {\n let ret = {\n application: p.app,\n start_idx: p.pagination.startIdx,\n page_size: p.pagination.pageSize,\n resource_type: p.types[0],\n trashed: p.trashed,\n } as any;\n if (p.orders && Object.entries(p.orders).length) {\n // axios serialize array as name[] (not compatible with current api)\n const [[key, value]] = Object.entries(p.orders);\n ret.order_by = `${key}:${value}`;\n }\n if (p.filters) {\n Object.assign(ret, p.filters);\n }\n if (typeof p.search === \"string\") {\n ret.search = p.search;\n }\n return ret;\n }\n private createFolderToBodyParams(p: CreateFolderParameters) {\n return {\n application: p.app,\n resourceType: p.type,\n parentId: p.parentId,\n name: p.name,\n };\n }\n private moveToBodyParams(p: MoveParameters) {\n return {\n application: p.application,\n resourceType: this.getResourceType(),\n resourceIds: p.resourceIds,\n folderIds: p.folderIds,\n };\n }\n}\n","import { APP, IResource, RESOURCE, ResourceType } from \"..\";\nimport { BlogUpdate, CreateParameters, CreateResult, UpdateResult } from \"./interface\";\nimport { ResourceService } from \"./ResourceService\";\n\nexport class BlogResourceService extends ResourceService {\n\n async create(parameters: CreateParameters): Promise<CreateResult> {\n const fixThumb = parameters.thumbnail\n ? await this.getThumbnailPath(parameters.thumbnail)\n : \"\";\n\n const apiPath = parameters.public ? \"/blog/pub\" : \"/blog\";\n \n const res = await this.http.post<CreateResult>(apiPath, {\n title: parameters.name,\n description: parameters.description,\n visibility: parameters.public ? \"PUBLIC\" : \"OWNER\",\n thumbnail: fixThumb,\n trashed: false,\n slug: parameters.public ? parameters.slug : \"\",\n \"publish-type\": parameters.publishType || \"RESTRAINT\",\n \"comment-type\": \"IMMEDIATE\",\n });\n\n this.checkHttpResponse(res);\n \n return res;\n }\n\n async update(parameters: BlogUpdate): Promise<UpdateResult> {\n const fixThumb = await this.getThumbnailPath(parameters.thumbnail);\n const res = await this.http.put<IResource>(`/blog/${parameters.entId}`, {\n trashed: parameters.trashed,\n _id: parameters.entId,\n title: parameters.name,\n thumbnail: fixThumb,\n description: parameters.description,\n visibility: parameters.public ? \"PUBLIC\" : \"OWNER\",\n slug: parameters.public ? parameters.slug : \"\",\n \"publish-type\": parameters[\"publish-type\"] || \"RESTRAINT\",\n \"comment-type\": \"IMMEDIATE\",\n });\n this.checkHttpResponse(res);\n return { thumbnail: fixThumb, entId: parameters.entId } as UpdateResult;\n }\n getResourceType(): ResourceType {\n return RESOURCE.BLOG;\n }\n getApplication(): string {\n return APP.BLOG;\n }\n getFormUrl(folderId?: string): string {\n return folderId\n ? `/blog?folderid=${folderId}#/edit/new`\n : `/blog#/edit/new`;\n }\n getViewUrl(resourceId: string): string {\n return `/blog#/view/${resourceId}`;\n }\n getPrintUrl(resourceId: string, withComment?: boolean): string {\n return `/blog/print/blog#/print/${resourceId}?comments=${\n withComment || true\n }`;\n }\n}\nResourceService.register(\n { application: RESOURCE.BLOG, resourceType: RESOURCE.BLOG },\n (context) => new BlogResourceService(context),\n);\n","import { APP, IResource, RESOURCE, ResourceType } from \"..\";\nimport { CreateParameters, CreateResult, MindmapUpdate, UpdateResult } from \"./interface\";\nimport { ResourceService } from \"./ResourceService\";\n\nexport class MindmapResourceService extends ResourceService {\n\n async create(parameters: CreateParameters): Promise<CreateResult> {\n const fixThumb = parameters.thumbnail\n ? await this.getThumbnailPath(parameters.thumbnail)\n : \"\";\n \n const res = await this.http.post<{_id: string}>(`/mindmap`, {\n name: parameters.name,\n description: parameters.description,\n thumbnail: fixThumb,\n folder: parameters.folder,\n map: `<map version=\"tango\" theme=\"prism\"><topic central=\"true\" text=\"${parameters.name}\"/></map>`,\n trashed: false,\n visibility: \"OWNER\",\n });\n\n this.checkHttpResponse(res);\n \n return {entId: res._id, thumbnail: fixThumb};\n }\n\n async update(parameters: MindmapUpdate): Promise<UpdateResult> {\n const fixThumb = parameters.thumbnail\n ? await this.getThumbnailPath(parameters.thumbnail)\n : \"\";\n const res = await this.http.put<IResource>(`/mindmap/${parameters.entId}`, {\n trashed: parameters.trashed,\n _id: parameters.entId,\n name: parameters.name,\n thumbnail: fixThumb,\n description: parameters.description,\n visibility: parameters.public ? \"PUBLIC\" : \"OWNER\",\n });\n this.checkHttpResponse(res);\n return { thumbnail: fixThumb, entId: parameters.entId } as UpdateResult;\n }\n getResourceType(): ResourceType {\n return RESOURCE.MINDMAP;\n }\n getApplication(): string {\n return APP.MINDMAP;\n }\n getFormUrl(folderId?: string): string {\n return folderId ? `/mindmap?folderid=${folderId}/new` : `/mindmap/new`;\n }\n getViewUrl(resourceId: string): string {\n return `/mindmap/id/${resourceId}`;\n }\n getPrintUrl(resourceId: string, withComment?: boolean): string {\n return `/mindmap/print/id/${resourceId}?comments=${withComment || true}`;\n }\n}\nResourceService.register(\n { application: RESOURCE.MINDMAP, resourceType: RESOURCE.MINDMAP },\n (context) => new MindmapResourceService(context),\n);\n","import { IHttpParams, IHttpResponse } from \"../transport/interfaces\";\nimport { OdeServices } from \"../services/OdeServices\";\n\nconst globalCache: Record<string, any> = {};\nconst mutexPromise: Record<string, Promise<any>> = {};\n\nexport class CacheService {\n constructor(private context: OdeServices) {}\n\n private get http() {\n return this.context.http();\n }\n\n private async fromCacheIfPossible<T>(\n key: string,\n task: () => Promise<T>,\n shouldCache: (value: T) => boolean,\n ): Promise<T> {\n if (!!mutexPromise[key]) {\n await mutexPromise[key];\n }\n if (globalCache[key]) {\n return globalCache[key];\n }\n try {\n const promise = task();\n mutexPromise[key] = promise;\n const res = await promise;\n if (shouldCache(res)) {\n globalCache[key] = res;\n }\n return res;\n } catch (e) {\n console.error(`Failed to retrieve value for: ${key}`, e);\n throw e;\n }\n }\n\n clearCache(key?: string) {\n if (key) {\n delete globalCache[key];\n } else {\n for (const key in globalCache) {\n if (globalCache.hasOwnProperty(key)) {\n delete globalCache[key];\n }\n }\n }\n }\n\n async httpGet<R = any>(\n url: string,\n params?: IHttpParams,\n ): Promise<{ value: R; response: IHttpResponse }> {\n return this.fromCacheIfPossible<{ value: R; response: IHttpResponse }>(\n url,\n async () => {\n const value = await this.http.get<R>(url, params);\n const response = { ...this.http.latestResponse };\n return { value, response };\n },\n ({ response }) => {\n if (response.status < 200 || response.status >= 300) {\n // error code => dont cache\n return false;\n } else {\n return true;\n }\n },\n );\n }\n\n async httpGetJson<R = any>(url: string, params?: IHttpParams): Promise<R> {\n const { response, value } = await this.httpGet(url, params);\n if (response.status < 200 || response.status >= 300) {\n // error code => dont cache\n throw `Bad http status (${response.status}) for url: ${url}`;\n } else {\n return value;\n }\n }\n}\n","import { configure } from \"./Framework\";\nimport { IGetConf, IOdeTheme, IThemeConf } from \"./interfaces\";\nimport { App } from \"../globals\";\nimport { IWebApp } from \"../session/interfaces\";\nimport { IOdeServices } from \"../services/OdeServices\";\n\nexport class ConfService {\n constructor(private context: IOdeServices) {}\n\n private get http() {\n return this.context.http();\n }\n\n private get cdnDomain(): string {\n return configure.Platform.cdnDomain;\n }\n\n async getConf(app: App): Promise<IGetConf> {\n const [conf, applications] = await Promise.all([\n this.getThemeConf(),\n this.getApplicationsList(),\n ]);\n\n const [theme, currentApp, extendedTheme] = await Promise.all([\n this.getTheme({ conf }),\n this.getWebAppConf({ app, applications }),\n this.getExtendedTheme(),\n ]);\n\n return {\n applications,\n conf,\n currentApp,\n theme,\n extendedTheme,\n };\n }\n\n getCdnUrl(): string | undefined {\n //TODO to implement\n console.warn(\"[getCdnUrl] Not implemented yet\");\n return undefined;\n }\n\n async savePreference<T>(key: string, value: T) {\n this.http.putJson(`/userbook/preference/${key}`, value);\n }\n\n async getPreference<T>(key: string): Promise<T> {\n const res = await this.http.get<{ preference: string }>(\n `/userbook/preference/${key}`,\n );\n return JSON.parse(res.preference) as T;\n }\n\n private async getThemeConf(version?: string): Promise<IThemeConf> {\n const res = await this.http.getScript<IThemeConf>(\n \"/assets/theme-conf.js\",\n { queryParams: { v: version } },\n \"exports.conf\",\n );\n return res;\n }\n\n private async getExtendedTheme(): Promise<any> {\n try{\n const res = await this.http.get<any>(\"/assets/extended-theme.json\");\n return res;\n }catch(e){\n //TODO return a fallback if extended-theme.json is missing\n console.error('[getExtendedTheme] could not found /assets/extended-theme.json')\n return {}\n }\n }\n\n private async getApplicationsList(): Promise<IWebApp[]> {\n const response = await this.http.get<{ apps: Array<IWebApp> }>(\n `/applications-list`,\n );\n return response.apps;\n }\n\n private async getWebAppConf({\n app,\n applications,\n }: {\n app: App;\n applications: IWebApp[];\n }): Promise<IWebApp | undefined> {\n const find = applications.find((item) => {\n if (item?.prefix) {\n return item?.prefix.replace(\"/\", \"\") === app;\n }\n });\n return find;\n }\n\n private async getTheme({\n version,\n conf,\n }: {\n version?: string;\n conf: any;\n }): Promise<IOdeTheme> {\n const theme = await this.http.get<IOdeTheme>(\"/theme\", {\n queryParams: { _: version },\n });\n const skin = theme.themeName;\n const skins = conf?.overriding.find(\n (item: { child: any }) => item.child === skin,\n ).skins;\n const bootstrapPath = \"/assets/themes/edifice-bootstrap\";\n const bootstrapVersion = conf?.overriding\n .find((item: { child: any }) => item.child === skin)\n .bootstrapVersion.split(\"-\")\n .at(-1);\n const is1d =\n conf?.overriding.find((item: { child: any }) => item.child === skin)\n .parent === \"panda\";\n\n return {\n basePath: `${this.cdnDomain}${theme.skin}../../`,\n bootstrapPath,\n bootstrapVersion,\n is1d,\n logoutCallback: theme.logoutCallback,\n skin: theme.skin.split(\"/assets/themes/\")[1].split(\"/\")[0],\n skinName: theme.skinName,\n skins,\n themeName: theme.themeName,\n themeUrl: theme.skin,\n };\n }\n}\n","import { OdeServices } from \"../services/OdeServices\";\nimport {\n Bookmark,\n BookmarkGetResponse,\n BookmarkSaveResponse,\n BookmarkWithDetails,\n BookmarkWithMembers,\n Group,\n User,\n} from \"./interface\";\n\nexport class DirectoryService {\n constructor(private odeServices: OdeServices) {}\n private get http() {\n return this.odeServices.http();\n }\n private get cache() {\n return this.odeServices.cache();\n }\n\n getAvatarUrl(id: string, type: \"user\" | \"group\", size = \"100x100\") {\n return type === \"user\"\n ? `/userbook/avatar/${id}?thumbnail=${size}`\n : `/assets/img/illustrations/group-avatar.svg`;\n }\n\n getDirectoryUrl(id: string, type: \"user\" | \"group\") {\n return type === \"user\"\n ? `/userbook/annuaire#/${id}`\n : `/userbook/annuaire#/group-view/${id}`;\n }\n\n async getBookMarks(): Promise<Bookmark[]> {\n const all = await this.cache.httpGetJson<BookmarkGetResponse[]>(\n `/directory/sharebookmark/all`,\n );\n return all.map(({ id, name }) => {\n return {\n id,\n displayName: name,\n members: [], // this api does not return members\n };\n });\n }\n\n async getBookMarkById(idBookmark: string): Promise<BookmarkWithDetails> {\n const { groups, id, name, users } =\n await this.http.get<BookmarkGetResponse>(\n `/directory/sharebookmark/${idBookmark}`,\n );\n return {\n id,\n displayName: name,\n groups: groups.map(({ name, id }) => {\n return {\n displayName: name,\n id,\n };\n }),\n users: users.map(({ displayName, id, profile }) => {\n return {\n profile,\n displayName,\n // these info are missing from api\n firstName: \"\",\n lastName: \"\",\n login: \"\",\n id,\n };\n }),\n };\n }\n\n async saveBookmarks(\n name: string,\n {\n bookmarks,\n groups,\n users,\n }: {\n users: string[] | User[];\n groups: string[] | Group[];\n bookmarks: BookmarkWithMembers[] | string[];\n },\n ): Promise<BookmarkWithMembers> {\n this.cache.clearCache(`/directory/sharebookmark/all`);\n // get user ids\n const userIds = users.map((user) => {\n return typeof user === \"string\" ? user : user.id;\n });\n // get group ids\n const groupIds = groups.map((group) => {\n return typeof group === \"string\" ? group : group.id;\n });\n const bookmarkDetailPromises = bookmarks.map(async (bookmark) => {\n if (typeof bookmark === \"string\") {\n const { displayName, groups, id, users } = await this.getBookMarkById(\n bookmark,\n );\n const usersId = users.map((user) => user.id);\n const groupId = groups.map((user) => user.id);\n const tmp: BookmarkWithMembers = {\n displayName,\n id,\n members: [...groupId, ...usersId],\n };\n return tmp;\n } else {\n return Promise.resolve(bookmark);\n }\n });\n const bookmarDetails = await Promise.all(bookmarkDetailPromises);\n // get members ids in bookmarks\n const memberIds = bookmarDetails\n .map((bookmark) => {\n return bookmark.members;\n })\n .reduce((previous, current) => {\n return [...previous, ...current];\n }, []);\n // generate payload\n const data = {\n name,\n members: [...userIds, ...groupIds, ...memberIds],\n };\n\n const { id } = await this.http.postJson<BookmarkSaveResponse>(\n \"/directory/sharebookmark\",\n data,\n );\n return {\n id,\n displayName: name,\n members: data.members,\n };\n }\n}\n","import axios, {\n AxiosError,\n AxiosInstance,\n // AxiosRequestConfig,\n AxiosResponse,\n} from \"axios\";\nimport { ERROR_CODE } from \"../globals\";\nimport { IHttpResponse, IHttpParams } from \"./interfaces\";\nimport { OdeServices } from \"../services/OdeServices\";\n\nconst loadedScripts: { [url: string]: boolean } = {};\n\nexport class HttpService {\n // Axios automatically manages the XSRF-TOKEN cookie and the X-XSRF-TOKEN HTTP header.\n private axios: AxiosInstance;\n\n private _latestResponse: any;\n\n constructor(private context: OdeServices, params?: any) {\n this.axios = axios.create(params);\n }\n\n setCdn(cdnUrl: string): void {\n if (\n cdnUrl &&\n XMLHttpRequest &&\n !(XMLHttpRequest.prototype as any)[\"cdnUrl\"]\n ) {\n (XMLHttpRequest.prototype as any)[\"cdnUrl\"] = cdnUrl;\n (XMLHttpRequest.prototype as any).baseOpen =\n XMLHttpRequest.prototype.open;\n XMLHttpRequest.prototype.open = function () {\n const url = arguments[1] as string;\n //PUBLIC infra\n if (url.startsWith(\"/infra/public\")) {\n arguments[1] = cdnUrl + url;\n }\n //PUBLIC files (/.*/public)\n const match = /^\\/([^\\/]*)\\/public/.test(url);\n if (match) {\n arguments[1] = cdnUrl + url;\n }\n //ASSETS files\n if (url.startsWith(\"/assets\")) {\n arguments[1] = cdnUrl + url;\n }\n //SKIP PUBLIC CONF\n if (url == \"/conf/public\") {\n arguments[1] = url;\n }\n //SKIP HTTP\n if (url.startsWith(\"http\")) {\n arguments[1] = url;\n }\n return (this as any).baseOpen.apply(this, arguments);\n };\n }\n }\n\n // private toAxiosConfig(params?: IHttpParams): AxiosRequestConfig {\n private toAxiosConfig(params?: IHttpParams): any {\n if (!params) {\n return this.axios.defaults;\n } else {\n const p = Object.assign({}, this.axios.defaults);\n\n if (params.headers) {\n p.headers = Object.assign({}, this.axios.defaults.headers);\n Object.assign(p.headers, params.headers);\n }\n\n if (params.responseType) {\n p.responseType = params.responseType;\n }\n\n if (params.queryParams) {\n // Axios will serialize parameters, see https://github.com/axios/axios#request-config\n p.params = Object.assign({}, params.queryParams);\n }\n\n /* TODO : manage params.requestName through an events[]. See infra-front http.ts */\n\n return p;\n }\n }\n\n private toCdnUrl(url: string) {\n const CDN_DOMAIN: string = this.context.conf().getCdnUrl() || \"\";\n // If CDN domain is defined, and requested url is not /public/conf (SKIP PUBLIC CONF)\n if (CDN_DOMAIN!.length > 0 && url !== \"/conf/public\") {\n const originalURL = \"\" + url;\n //PUBLIC infra or ASSETS files\n if (\n originalURL.startsWith(\"/infra/public\") ||\n originalURL.startsWith(\"/assets\")\n ) {\n url = CDN_DOMAIN + originalURL;\n } else {\n //PUBLIC files (/.*/public)\n const match = /^\\/([^\\/]*)\\/public/.test(originalURL);\n if (match) {\n url = CDN_DOMAIN + originalURL;\n }\n }\n }\n return url;\n }\n\n private mapAxiosError<R>(error: AxiosError<R>, params?: IHttpParams): R {\n console.error(\"[HttpService]\", error);\n // AxiosError.response and our HttpResponse share the same properties.\n // So we can use it directly, saving CPU and memory.\n // Otherwise, we would map the axios response to our own model.\n if (error.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n this._latestResponse = error.response;\n } else if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n this._latestResponse = {\n status: 408,\n statusText: ERROR_CODE.TIME_OUT,\n };\n } else {\n // Something happened in setting up the request that triggered an Error\n this._latestResponse = {\n status: 500,\n statusText: ERROR_CODE.UNKNOWN,\n };\n }\n\n /* TODO : manage params.requestName through an events[]. See infra-front http.ts */\n\n // Notify error unless disabled.\n if (!params || params.disableNotifications === false) {\n // FIXME This really should be an rxjs Subject\n // notify.onEvent( EVENT_NAME.HTTP_ERROR ).next( new HttpErrorNotice(''+this._latestResponse.status, this._latestResponse.statusText) );\n }\n\n return this._latestResponse;\n }\n\n private mapAxiosResponse<R>(\n response: AxiosResponse<R>,\n params?: IHttpParams,\n ): R {\n // AxiosResponse and our HttpResponse share the same properties.\n // So we can use it directly, saving CPU and memory.\n // Otherwise, we would map the axios response to our own model.\n this._latestResponse = response;\n /* TODO : manage params.requestName through an events[]. See infra-front http.ts */\n //FIXME: should we check response.status and only accept if range is 2xx ?\n return response.data;\n }\n\n get latestResponse(): IHttpResponse {\n return this._latestResponse;\n }\n\n async get<R = any>(url: string, params?: IHttpParams): Promise<R> {\n try {\n const r = await this.axios.get<R>(\n this.toCdnUrl(url),\n this.toAxiosConfig(params),\n );\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result = this.mapAxiosError(e as AxiosError, params) as R;\n return result;\n }\n }\n\n async post<R = any>(\n url: string,\n data?: any,\n params?: IHttpParams,\n ): Promise<R> {\n try {\n const r = await this.axios.post<R>(url, data, this.toAxiosConfig(params));\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result_1 = this.mapAxiosError(e as AxiosError, params) as R;\n return result_1;\n }\n }\n\n async postFile<R = any>(\n url: string,\n data: any,\n params?: IHttpParams,\n ): Promise<R> {\n const p = this.toAxiosConfig(params);\n if (p.headers && p.headers[\"Content-Type\"]) {\n delete p.headers[\"Content-Type\"];\n }\n try {\n const r = await this.axios.post<R>(url, data, {\n ...p,\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n });\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result = this.mapAxiosError(e as AxiosError, params) as R;\n return result;\n }\n }\n\n async postJson<R = any>(\n url: string,\n json: any,\n params?: IHttpParams,\n ): Promise<R> {\n const p = this.toAxiosConfig();\n if (p.headers) p.headers[\"Content-Type\"] = \"application/json\";\n try {\n const r = await this.axios.post<R>(url, json, this.toAxiosConfig(params));\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result_1 = this.mapAxiosError(e as AxiosError, params) as R;\n return result_1;\n }\n }\n\n async put<R = any>(\n url: string,\n data?: any,\n params?: IHttpParams,\n ): Promise<R> {\n try {\n const r = await this.axios.put<R>(url, data, this.toAxiosConfig(params));\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result = this.mapAxiosError(e as AxiosError, params) as R;\n return result;\n }\n }\n\n async putFile<R = any>(url: string, data: FormData, params?: IHttpParams) {\n try {\n const p = this.toAxiosConfig(params);\n if (p.headers && p.headers[\"Content-Type\"]) {\n delete p.headers[\"Content-Type\"];\n }\n const res = await this.axios.put(url, data, {\n ...p,\n headers: {\n \"Content-Type\": \"multipart/form-data\",\n },\n });\n return this.mapAxiosResponse(res, params);\n } catch (e) {\n const result = this.mapAxiosError(e as AxiosError, params) as R;\n return result;\n }\n }\n\n async putJson<R = any>(\n url: string,\n json: any,\n params?: IHttpParams,\n ): Promise<R> {\n const p = this.toAxiosConfig(params);\n if (p.headers) p.headers[\"Content-Type\"] = \"application/json\";\n try {\n const r = await this.axios.put<R>(url, json, p);\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result = this.mapAxiosError(e as AxiosError, params) as R;\n return result;\n }\n }\n async delete<R = any>(url: string, params?: IHttpParams): Promise<R> {\n try {\n const r = await this.axios.delete<R>(url, this.toAxiosConfig(params));\n return this.mapAxiosResponse(r, params);\n } catch (e) {\n const result_1 = this.mapAxiosError(e as AxiosError, params) as R;\n return result_1;\n }\n }\n\n async deleteJson<R = any>(url: string, json: any): Promise<R> {\n try {\n const r = await this.axios.delete<R>(url, { data: json });\n return this.mapAxiosResponse(r);\n } catch (e) {\n const result = this.mapAxiosError(e as AxiosError) as R;\n return result;\n }\n }\n\n getScript<R = any>(\n url: string,\n params?: IHttpParams,\n variableName?: string,\n ): Promise<R> {\n const resultName = variableName ?? \"exports\";\n const p = this.toAxiosConfig(params);\n if (p.headers) p.headers[\"Accept\"] = \"application/javascript\";\n return this.axios\n .get<string>(this.toCdnUrl(url), p)\n .then((r) => this.mapAxiosResponse(r, params))\n .then((r) => {\n try {\n const securedScript = `\"use strict\";var ${\n resultName.split(\".\")[0]\n }={};${r};return ${resultName};`;\n const result = Function(securedScript)();\n return result;\n } catch (e) {\n const result = r;\n return result;\n }\n })\n .catch<R>((e) => {\n this.mapAxiosError(e, params);\n throw e;\n });\n }\n\n loadScript(url: string, params?: IHttpParams): Promise<void> {\n return loadedScripts[url]\n ? Promise.resolve()\n : this.getScript(url, params).then((res) => {\n loadedScripts[url] = true;\n });\n }\n}\n","import { RightStringified } from \"../explorer/interfaces\";\nimport { OdeServices } from \"../services/OdeServices\";\nimport { ResourceRight, RightRole } from \"./interface\";\n\nexport class RightService {\n constructor(private context: OdeServices) {}\n get session() {\n return this.context.session();\n }\n /**\n * Parse right concat as \"$TYPE:$ID:$RIGHT\"\n * $TYPE = user | group | creator\n * $ID: id of the resource\n * $RIGHT: read | contrib | manage\n *\n * @param right a concat right\n * @returns Right parsed\n */\n parseResourceRight(right: RightStringified): ResourceRight | undefined {\n const parts = right.split(\":\");\n if (parts.length === 2) {\n if (parts[0] === \"creator\") {\n return {\n id: parts[1],\n right: \"creator\",\n type: \"creator\",\n } as ResourceRight;\n }\n } else if (parts.length === 3) {\n return {\n id: parts[1],\n right: parts[2],\n type: parts[0],\n } as ResourceRight;\n } else {\n return undefined;\n }\n }\n /**\n * Parse an array of rights concat as \"$TYPE:$ID:$RIGHT\"\n * $TYPE = user | group | creator\n * $ID: id of the resource\n * $RIGHT: read | contrib | manage\n *\n * @param rights a list of concat rights\n * @returns Array of Right parsed\n */\n parseResourceRights(rights: RightStringified[]): ResourceRight[] {\n const parsed = rights\n .map((right) => {\n return this.parseResourceRight(right);\n })\n .filter((right) => {\n return right !== undefined;\n }) as ResourceRight[];\n return parsed;\n }\n\n /**\n * Check wether a user has the expected right for a ressource\n * @param user the userId and groupId concerned by the check\n * @param expect the expected right to check\n * @param rights array of Right for the resource\n * @returns true if has rights\n */\n hasResourceRight(\n { id, groupIds }: { id: string; groupIds: string[] },\n expect: RightRole,\n rights: ResourceRight[] | RightStringified[],\n ) {\n const safeRights = rights\n .map((right) => {\n if (typeof right === \"string\") {\n return this.parseResourceRight(right);\n }\n return right;\n })\n .filter((right) => {\n return right !== undefined;\n }) as ResourceRight[];\n for (const right of safeRights) {\n if (right.id === id && right.type === \"creator\") {\n return true;\n } else if (\n right.id === id &&\n right.type === \"user\" &&\n right.right === expect\n ) {\n return true;\n } else if (\n groupIds.includes(right.id) &&\n right.type === \"group\" &&\n right.right === expect\n ) {\n return true;\n }\n }\n return false;\n }\n /**\n * Check wether the current user have resource right\n * @param expect the expected right to check\n * @param rights array of Right for the resource\n * @returns true if has rights\n */\n async sessionHasResourceRight(\n expect: RightRole,\n rights: ResourceRight[] | RightStringified[],\n ): Promise<boolean> {\n try {\n const user = await this.session.getUser();\n return (\n !!user &&\n this.hasResourceRight(\n { groupIds: user.groupsIds, id: user.userId },\n expect,\n rights,\n )\n );\n } catch (e) {\n console.error(e);\n return false;\n }\n }\n /**\n * Check wether the current user have at least one of resource right expected\n * @param expects array of expected right to check\n * @param rights array of Right for the resource\n * @returns true if has rights\n */\n async sessionHasAtLeastOneResourceRight(\n expects: RightRole[],\n rights: ResourceRight[] | RightStringified[],\n ): Promise<boolean> {\n for (const expect of expects) {\n const hasRight = await this.sessionHasResourceRight(expect, rights);\n if (hasRight) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Check wether the current user has resource right for each right list\n * @param expect expected right to check\n * @param rightsArray array of array of Right for multiple resources\n * @returns true if has rights\n */\n async sessionHasResourceRightForEachList(\n expect: RightRole,\n rightsArray: ResourceRight[][] | RightStringified[][],\n ): Promise<boolean> {\n let count = 0;\n for (const rights of rightsArray) {\n const hasRight = await this.sessionHasResourceRight(expect, rights);\n if (hasRight) {\n count++;\n }\n }\n //each list has right\n if (count === rightsArray.length) {\n return true;\n }\n return false;\n }\n\n /**\n * Check wether the current user have at least one of resource right for each right list\n * @param expects array of expected right to check\n * @param rightsArray array of array of Right for multiple resources\n * @returns true if has rights\n */\n async sessionHasAtLeastOneResourceRightForEachList(\n expects: RightRole[],\n rightsArray: ResourceRight[][] | RightStringified[][],\n ): Promise<boolean> {\n for (const expect of expects) {\n let count = 0;\n for (const rights of rightsArray) {\n const hasRight = await this.sessionHasResourceRight(expect, rights);\n if (hasRight) {\n count++;\n }\n }\n //each list has right\n if (count === rightsArray.length) {\n return true;\n }\n }\n return false;\n }\n\n hasWorkflowRight(expect: string, right: string[]) {\n return (\n right.findIndex((workflowRight) => {\n return workflowRight === expect;\n }) !== -1\n );\n }\n\n /**\n * @param expect a workflow right\n * @returns true if current session has right on it\n */\n async sessionHasWorkflowRight(expect: string): Promise<boolean> {\n try {\n const user = await this.session.getUser();\n return (\n !!user &&\n this.hasWorkflowRight(\n expect,\n user.authorizedActions.map(\n (authorizedAction) => authorizedAction.name,\n ),\n )\n );\n } catch (e) {\n console.error(e);\n return false;\n }\n }\n\n /**\n * @param expect a workflow right\n * @returns a record with right as key and boolean as value if current session has right on it\n */\n async sessionHasWorkflowRights(\n expects: string[],\n ): Promise<Record<string, boolean>> {\n const result: Record<string, boolean> = {};\n try {\n const user = await this.session.getUser();\n for (const expect of expects) {\n result[expect] =\n !!user &&\n this.hasWorkflowRight(\n expect,\n user.authorizedActions.map(\n (authorizedAction) => authorizedAction.name,\n ),\n );\n }\n } catch (e) {\n console.error(e);\n for (const expect of expects) {\n result[expect] = false;\n }\n }\n return result;\n }\n}\n","import { ERROR_CODE } from \"../globals\";\nimport {\n IGetSession,\n IQuotaAndUsage,\n IUserDescription,\n IUserInfo,\n IWebApp,\n UserProfile,\n} from \"./interfaces\";\n\nimport { IOdeServices } from \"../services/OdeServices\";\n\nexport class SessionService {\n constructor(private context: IOdeServices) {}\n\n get http() {\n return this.context.http();\n }\n get cache() {\n return this.context.cache();\n }\n\n /**\n * Callback to call when user logout\n */\n onLogout() {\n this.cache.clearCache();\n }\n\n /**\n * Callback to call when session change\n */\n onRefreshSession() {\n this.cache.clearCache();\n }\n\n async getSession(): Promise<IGetSession> {\n const user = await this.getUser();\n\n const [\n currentLanguage,\n quotaAndUsage,\n userDescription,\n userProfile,\n bookmarkedApps,\n ] = await Promise.all([\n this.getCurrentLanguage(user),\n this.latestQuotaAndUsage(user),\n this.loadDescription(user),\n this.getUserProfile(),\n this.getBookmarks(user),\n ]);\n\n return {\n user,\n quotaAndUsage,\n currentLanguage,\n userDescription,\n userProfile,\n bookmarkedApps,\n };\n }\n\n public login(\n email: string,\n password: string,\n rememberMe?: boolean,\n secureLocation?: boolean,\n ): Promise<void> {\n const data = new FormData();\n data.append(\"email\", email);\n data.append(\"password\", password);\n if (typeof rememberMe !== \"undefined\") {\n data.append(\"rememberMe\", \"\" + rememberMe);\n }\n if (typeof secureLocation !== \"undefined\") {\n data.append(\"secureLocation\", \"\" + secureLocation);\n }\n\n return this.http\n .post<void>(\"/auth/login\", data, {\n headers: { \"content-type\": \"application/x-www-form-urlencoded\" },\n })\n .finally(() => {\n switch (this.http.latestResponse.status) {\n case 200: // error, TODO look for error message in returned html...\n throw ERROR_CODE.MALFORMED_DATA;\n case 302: // success TODO redirects cannot be intercepted with axios in a browser !!!\n default:\n break;\n }\n });\n }\n\n logout(): Promise<void> {\n return this.http.get<void>(\"/auth/logout\").finally(() => {\n // void, always successful\n });\n }\n\n async latestQuotaAndUsage(\n user: IUserInfo | undefined,\n ): Promise<IQuotaAndUsage> {\n try {\n const infos = await this.http.get<IQuotaAndUsage>(\n `/workspace/quota/user/${user?.userId}`,\n );\n return infos;\n } catch (error) {\n console.error(error);\n return { quota: 0, storage: 0 };\n }\n }\n\n async getCurrentLanguage(\n user: IUserInfo | undefined,\n ): Promise<string | undefined> {\n const isUserSignin = user?.sessionMetadata && user?.sessionMetadata.userId;\n\n try {\n let response;\n\n if (isUserSignin) {\n response = await this.loadUserLanguage();\n } else {\n response = await this.loadDefaultLanguage();\n }\n return response;\n } catch (error) {\n console.error(error);\n }\n }\n\n private async loadUserLanguage(): Promise<string> {\n try {\n // don't cache preference it could change\n const response = await this.http.get<{ preference: any }>(\n \"/userbook/preference/language\",\n );\n return JSON.parse(response.preference)[\"default-domain\"];\n } catch (error) {\n const response = await this.loadDefaultLanguage();\n return response;\n }\n }\n\n private async loadDefaultLanguage(): Promise<string> {\n // locale does not change until onLogout\n const response = await this.cache.httpGetJson<{ locale: string }>(\n \"/locale\",\n );\n return response.locale;\n }\n\n public async getUser(): Promise<IUserInfo | undefined> {\n // session does not change until onLogout\n const { response, value } = await this.cache.httpGet<IUserInfo>(\n \"/auth/oauth2/userinfo\",\n );\n if (response.status < 200 || response.status >= 300) {\n // Backend tries to redirect the user => not logged in !\n throw ERROR_CODE.NOT_LOGGED_IN;\n } else {\n return value;\n }\n }\n\n hasWorkflow({\n workflowName,\n user,\n }: {\n workflowName: string;\n user: IUserInfo;\n }): boolean {\n return (\n workflowName === undefined ||\n user?.authorizedActions.findIndex((workflowRight) => {\n return workflowRight.name === workflowName;\n }) !== -1\n );\n }\n\n private async loadDescription(\n user: IUserInfo | undefined,\n ): Promise<IUserDescription> {\n try {\n const [data, userbook] = await Promise.all([\n // FIXME The full user's description should be obtainable from a single endpoint in the backend.\n\n this.getUserProfile({\n requestName: \"refreshAvatar\",\n }),\n this.http.get<IUserDescription>(\"/directory/userbook/\" + user?.userId),\n ]);\n return { ...data, ...userbook };\n } catch (error) {\n console.error(error);\n return {} as unknown as IUserDescription;\n }\n }\n\n private async getBookmarks(user: IUserInfo | undefined) {\n const data = await this.http.get(\"/userbook/preference/apps\");\n\n if (!data.preference) {\n data.preference = null;\n }\n\n const tmp = JSON.parse(data.preference) as Array<IWebApp>;\n let myApps: {\n bookmarks: Array<string>; // Array of app names\n applications: [];\n };\n\n myApps = tmp as unknown as { bookmarks: string[]; applications: [] };\n\n if (!myApps) {\n myApps = {\n bookmarks: [],\n applications: [],\n };\n }\n\n let bookmarkedApps: IWebApp[] = [];\n myApps.bookmarks.forEach((appName, index) => {\n const foundApp = user?.apps.find((app: IWebApp) => app.name === appName);\n if (foundApp) {\n let app = Object.assign({}, foundApp);\n bookmarkedApps.push(app);\n }\n });\n\n return bookmarkedApps;\n }\n\n async getUserProfile(options?: any): Promise<UserProfile> {\n const { response, value } = await this.cache.httpGet<any>(\n \"/userbook/api/person\",\n options,\n );\n if (response.status < 200 || response.status >= 300) {\n // Backend tries to redirect the user => not logged in !\n throw ERROR_CODE.NOT_LOGGED_IN;\n } else {\n return value.result[0].type;\n }\n }\n\n public async isAdml(): Promise<boolean> {\n // session does not change until onLogout\n const user = await this.getUser();\n return user?.functions.ADMIN_LOCAL !== undefined;\n }\n}\n","import { defaultDiacriticsRemovalMap } from \"../idiom/Idiom\";\n\nexport class StringUtils {\n static removeAccents(str: string): string {\n for (var i = 0; i < defaultDiacriticsRemovalMap.length; i++) {\n str = str.replace(\n defaultDiacriticsRemovalMap[i].letters,\n defaultDiacriticsRemovalMap[i].base,\n );\n }\n return str;\n }\n}\n","import { StringUtils } from \"../utils/StringUtils\";\nimport { OdeServices } from \"../services/OdeServices\";\n\nimport {\n GetResourceRightPayload,\n ShareMapping,\n ShareRightWithVisibles,\n SharingRight,\n PutShareResponse,\n PutSharePayload,\n ShareSubject,\n ShareRight,\n ShareRightAction,\n ShareRightActionDisplayName,\n} from \"./interface\";\nimport { Bookmark, Group, User } from \"../directory/interface\";\n\nexport class ShareService {\n //\n // IMPLEMENTATION\n //\n constructor(protected context: OdeServices) {}\n\n get directory() {\n return this.context.directory();\n }\n get http() {\n return this.context.http();\n }\n get cache() {\n return this.context.cache();\n }\n\n async searchShareSubjects(\n app: string,\n resourceId: string,\n searchText: string,\n ): Promise<ShareSubject[]> {\n const cleanSearchText = StringUtils.removeAccents(searchText).toLowerCase();\n const response = await this.cache.httpGetJson<GetResourceRightPayload>(\n `/${app}/share/json/${resourceId}?search=${searchText}`,\n );\n const resUsers = response.users.visibles\n .filter(({ username, firstName, lastName, login }) => {\n const cleanLastName = StringUtils.removeAccents(\n lastName || \"\",\n ).toLowerCase();\n const cleanFirstName = StringUtils.removeAccents(\n firstName || \"\",\n ).toLowerCase();\n const cleanDisplayName = StringUtils.removeAccents(\n username || \"\",\n ).toLowerCase();\n const cleanLogin = StringUtils.removeAccents(login || \"\").toLowerCase();\n return (\n cleanDisplayName.includes(cleanSearchText) ||\n cleanFirstName.includes(cleanSearchText) ||\n cleanLastName.includes(cleanSearchText) ||\n cleanLogin.includes(cleanSearchText)\n );\n })\n .map((user) => {\n return {\n avatarUrl: this.directory.getAvatarUrl(user.id, \"user\"),\n directoryUrl: this.directory.getDirectoryUrl(user.id, \"user\"),\n displayName: user.username,\n id: user.id,\n profile: user.profile,\n type: \"user\",\n } as ShareSubject;\n });\n const resGroups = response.groups.visibles\n .filter(({ name }) => {\n const cleanName = StringUtils.removeAccents(name || \"\").toLowerCase();\n return cleanName.includes(cleanSearchText);\n })\n .map((group) => {\n return {\n avatarUrl: this.directory.getAvatarUrl(group.id, \"group\"),\n directoryUrl: this.directory.getDirectoryUrl(group.id, \"group\"),\n displayName: group.name,\n id: group.id,\n type: \"group\",\n } as ShareSubject;\n });\n const bookmarks: Bookmark[] = await this.directory.getBookMarks();\n const resBookmarks = bookmarks\n .filter(({ displayName }) => {\n const cleanName = StringUtils.removeAccents(\n displayName || \"\",\n ).toLowerCase();\n return cleanName.includes(cleanSearchText);\n })\n .map((bookmark) => {\n return {\n avatarUrl: \"\",\n directoryUrl: \"\",\n profile: \"\",\n displayName: bookmark.displayName,\n id: bookmark.id,\n type: \"sharebookmark\",\n } as ShareSubject;\n });\n\n return [...resBookmarks, ...resUsers, ...resGroups];\n }\n\n async getShareMapping(app: string) {\n const sharingMap = await this.cache.httpGetJson<ShareMapping>(\n `/${app}/rights/sharing`,\n );\n //fix keys app.role => role\n for (const key of Object.keys(sharingMap)) {\n if (key.includes(\".\")) {\n const newKey = key.split(\".\")[1];\n const value = (sharingMap as any)[key];\n delete (sharingMap as any)[key];\n (sharingMap as any)[newKey] = value;\n }\n }\n return sharingMap;\n }\n\n getActionsAvailableFor(\n { id, type }: { id: string; type: \"user\" | \"group\" },\n payload: GetResourceRightPayload,\n mapping: ShareMapping,\n ): ShareRightActionDisplayName[] {\n // get rights affected to this user or group\n const usafeRights =\n type === \"user\" ? payload.users.checked[id] : payload.groups.checked[id];\n const rights = usafeRights || [];\n // get normalized actions names\n const actions = Object.keys(mapping) as ShareRightActionDisplayName[];\n const actionAvailable: ShareRightActionDisplayName[] = [];\n // for each normalized action, check whether current user or group has right for it\n for (const action of actions) {\n const rightsForAction = mapping[action];\n const intersection = rightsForAction.filter((right) =>\n rights.includes(right),\n );\n if (intersection.length > 0) {\n actionAvailable.push(action);\n }\n }\n return actionAvailable;\n }\n\n async getRightsForResource(\n app: string,\n resourceId: string,\n ): Promise<ShareRightWithVisibles> {\n // fetch bookmarks\n const visibleBookmarks = await this.directory.getBookMarks();\n // get rights for this ressources\n const url = this.context.resource(app, app).getShareReadUrl(resourceId);\n const rightsPayload = await this.cache.httpGetJson<GetResourceRightPayload>(\n url,\n );\n // get mapping between rights and normalized rights\n const sharingMap = await this.getShareMapping(app);\n // get normalized rights infos\n const sharingRights = await this.cache.httpGetJson<SharingRight>(\n \"/infra/public/json/sharing-rights.json\",\n );\n // generate rows for users\n const userRights = Object.keys(rightsPayload.users.checked)\n .map((userId) => {\n // find user info\n const user = rightsPayload.users.visibles.find(\n (user) => user.id === userId,\n );\n return user;\n })\n .filter((user) => {\n // remove if user not found\n return user !== undefined;\n })\n .map((user) => {\n // get normalized actions for user\n const actions = this.getActionsAvailableFor(\n { id: user!.id, type: \"user\" },\n rightsPayload,\n sharingMap,\n );\n // generate ShareRight row\n const right: ShareRight = {\n id: user!.id,\n type: \"user\",\n displayName: user!.username,\n profile: user!.profile,\n avatarUrl: this.directory.getAvatarUrl(user!.id, \"user\"),\n directoryUrl: this.directory.getDirectoryUrl(user!.id, \"user\"),\n actions: actions.map((action) => {\n const act = sharingRights[action];\n return {\n displayName: action,\n id: action,\n priority: act.priority,\n };\n }),\n };\n return right;\n })\n .sort((a, b) => {\n // sort by user name ASC\n return (a.displayName || \"\").localeCompare(b.displayName);\n });\n // generate rows for groups\n const groupRights = Object.keys(rightsPayload.groups.checked)\n .map((groupId) => {\n // find group info\n const group = rightsPayload.groups.visibles.find(\n (group) => group.id === groupId,\n );\n return group;\n })\n .filter((group) => {\n // remove if group not found\n return group !== undefined;\n })\n .map((group) => {\n // get normalized actions for group\n const actions = this.getActionsAvailableFor(\n { id: group!.id, type: \"group\" },\n rightsPayload,\n sharingMap,\n );\n const right: ShareRight = {\n id: group!.id,\n type: \"group\",\n displayName: group!.name,\n profile: undefined,\n avatarUrl: this.directory.getAvatarUrl(group!.id, \"group\"),\n directoryUrl: this.directory.getDirectoryUrl(group!.id, \"group\"),\n actions: actions.map((action) => {\n const act = sharingRights[action];\n return {\n displayName: action,\n id: action,\n priority: act.priority,\n };\n }),\n };\n return right;\n })\n .sort((a, b) => {\n // sort by group name ASC\n return (a.displayName || \"\").localeCompare(b.displayName);\n });\n const rights = [...userRights, ...groupRights];\n // prepare list of visible groups\n const visibleGroups = rightsPayload.groups.visibles.map(\n ({ groupDisplayName, id, name }) => {\n const group: Group = {\n displayName: groupDisplayName || name,\n id,\n };\n return group;\n },\n );\n // prepare list of visible user\n const visibleUsers = rightsPayload.users.visibles.map(\n ({ id, profile, username, firstName, lastName, login }) => {\n const user: User = {\n displayName: username,\n firstName,\n lastName,\n login,\n profile,\n id,\n };\n return user;\n },\n );\n return {\n rights,\n visibleBookmarks,\n visibleGroups,\n visibleUsers,\n };\n }\n\n async saveRights(\n app: string,\n resourceId: string,\n rights: ShareRight[],\n ): Promise<PutShareResponse> {\n // get mapping between action and java names\n const mapping = await this.getShareMapping(app);\n const payload: PutSharePayload = {\n bookmarks: {},\n groups: {},\n users: {},\n };\n for (const right of rights) {\n // get java rights for each available actions\n const rightWithDuplicates = right.actions\n .map((action) => {\n return mapping[action.id];\n })\n .reduce((previous, current) => {\n return [...previous, ...current];\n }, []);\n const rights = [...new Set(rightWithDuplicates)];\n // for each user/group/bookmark add a record\n if (rights.length > 0) {\n if (right.type === \"user\") {\n payload.users[right.id] = rights;\n } else if (right.type === \"group\") {\n payload.groups[right.id] = rights;\n } else {\n payload.bookmarks[right.id] = rights;\n }\n }\n }\n const resourceService = this.context.resource(app, app);\n const url = resourceService.getSaveShareUrl(resourceId);\n //clear cache for rights\n this.cache.clearCache(resourceService.getShareReadUrl(resourceId));\n const res = await this.http.putJson<PutShareResponse>(url, payload);\n return res;\n }\n\n async getActionsForApp(app: string): Promise<ShareRightAction[]> {\n // get normalized rights infos\n const sharingRights = await this.cache.httpGetJson<SharingRight>(\n \"/infra/public/json/sharing-rights.json\",\n );\n // get mapping for rights\n const sharingMap = await this.getShareMapping(app);\n const rightActions: ShareRightAction[] = Object.keys(sharingRights)\n .map((key) => {\n const value = sharingRights[key as ShareRightActionDisplayName];\n return {\n displayName: key as ShareRightActionDisplayName,\n id: key as ShareRightActionDisplayName,\n priority: value.priority,\n requires: value.requires,\n };\n })\n .filter((right) => {\n // if app does not manage this role => remove it\n if (sharingMap[right.id as ShareRightActionDisplayName]?.length > 0) {\n return true;\n }\n return false;\n })\n .sort((a, b) => {\n // sort by priority ASC\n return a.priority - b.priority;\n });\n return rightActions;\n }\n}\n","export class MimeTypeUtils {\n static INSTANCE = new MimeTypeUtils();\n private wordExtensions = new Set<string>();\n private excelExtensions = new Set<string>();\n private pptExtensions = new Set<string>();\n private fileExtensionMap = new Map<string, string>();\n private csvContentType = new Set<string>();\n private csvExtensions = new Set<string>();\n private txtExtensions = new Set<string>();\n public PDF = \"application/pdf\";\n public OCTET_STREAM = \"application/octet-stream\";\n\n constructor() {\n //txt\n this.txtExtensions.add(\"txt\");\n //word extensions\n this.wordExtensions.add(\"doc\");\n this.wordExtensions.add(\"dot\");\n this.wordExtensions.add(\"docx\");\n this.wordExtensions.add(\"dotx\");\n this.wordExtensions.add(\"docm\");\n this.wordExtensions.add(\"dotm\");\n this.wordExtensions.add(\"odt\");\n this.wordExtensions.add(\"ott\");\n this.wordExtensions.add(\"oth\");\n this.wordExtensions.add(\"odm\");\n //excel extensions\n this.excelExtensions.add(\"xls\");\n this.excelExtensions.add(\"xlt\");\n this.excelExtensions.add(\"xla\");\n this.excelExtensions.add(\"xlsx\");\n this.excelExtensions.add(\"xltx\");\n this.excelExtensions.add(\"xlsm\");\n this.excelExtensions.add(\"xltm\");\n this.excelExtensions.add(\"xlam\");\n this.excelExtensions.add(\"xlsb\");\n this.excelExtensions.add(\"ods\");\n this.excelExtensions.add(\"ots\");\n //ppt extensions\n this.pptExtensions.add(\"ppt\");\n this.pptExtensions.add(\"pot\");\n this.pptExtensions.add(\"pps\");\n this.pptExtensions.add(\"ppa\");\n this.pptExtensions.add(\"pptx\");\n this.pptExtensions.add(\"potx\");\n this.pptExtensions.add(\"ppsx\");\n this.pptExtensions.add(\"ppam\");\n this.pptExtensions.add(\"pptm\");\n this.pptExtensions.add(\"potm\");\n this.pptExtensions.add(\"ppsm\");\n this.pptExtensions.add(\"odp\");\n this.pptExtensions.add(\"otp\");\n //csv extensions\n this.csvExtensions.add(\"csv\");\n // MS Office\n this.fileExtensionMap.set(\"doc\", \"application/msword\");\n this.fileExtensionMap.set(\"dot\", \"application/msword\");\n this.fileExtensionMap.set(\n \"docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n );\n this.fileExtensionMap.set(\n \"dotx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\",\n );\n this.fileExtensionMap.set(\n \"docm\",\n \"application/vnd.ms-word.document.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"dotm\",\n \"application/vnd.ms-word.template.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\"xls\", \"application/vnd.ms-excel\");\n this.fileExtensionMap.set(\"xlt\", \"application/vnd.ms-excel\");\n this.fileExtensionMap.set(\"xla\", \"application/vnd.ms-excel\");\n this.fileExtensionMap.set(\n \"xlsx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n );\n this.fileExtensionMap.set(\n \"xltx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\",\n );\n this.fileExtensionMap.set(\n \"xlsm\",\n \"application/vnd.ms-excel.sheet.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"xltm\",\n \"application/vnd.ms-excel.template.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"xlam\",\n \"application/vnd.ms-excel.addin.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"xlsb\",\n \"application/vnd.ms-excel.sheet.binary.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\"ppt\", \"application/vnd.ms-powerpoint\");\n this.fileExtensionMap.set(\"pot\", \"application/vnd.ms-powerpoint\");\n this.fileExtensionMap.set(\"pps\", \"application/vnd.ms-powerpoint\");\n this.fileExtensionMap.set(\"ppa\", \"application/vnd.ms-powerpoint\");\n this.fileExtensionMap.set(\n \"pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n );\n this.fileExtensionMap.set(\n \"potx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.template\",\n );\n this.fileExtensionMap.set(\n \"ppsx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\",\n );\n this.fileExtensionMap.set(\n \"ppam\",\n \"application/vnd.ms-powerpoint.addin.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"pptm\",\n \"application/vnd.ms-powerpoint.presentation.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"potm\",\n \"application/vnd.ms-powerpoint.presentation.macroEnabled.12\",\n );\n this.fileExtensionMap.set(\n \"ppsm\",\n \"application/vnd.ms-powerpoint.slideshow.macroEnabled.12\",\n );\n // Open Office\n this.fileExtensionMap.set(\"odt\", \"application/vnd.oasis.opendocument.text\");\n this.fileExtensionMap.set(\n \"ott\",\n \"application/vnd.oasis.opendocument.text-template\",\n );\n this.fileExtensionMap.set(\n \"oth\",\n \"application/vnd.oasis.opendocument.text-web\",\n );\n this.fileExtensionMap.set(\n \"odm\",\n \"application/vnd.oasis.opendocument.text-master\",\n );\n this.fileExtensionMap.set(\n \"odg\",\n \"application/vnd.oasis.opendocument.graphics\",\n );\n this.fileExtensionMap.set(\n \"otg\",\n \"application/vnd.oasis.opendocument.graphics-template\",\n );\n this.fileExtensionMap.set(\n \"odp\",\n \"application/vnd.oasis.opendocument.presentation\",\n );\n this.fileExtensionMap.set(\n \"otp\",\n \"application/vnd.oasis.opendocument.presentation-template\",\n );\n this.fileExtensionMap.set(\n \"ods\",\n \"application/vnd.oasis.opendocument.spreadsheet\",\n );\n this.fileExtensionMap.set(\n \"ots\",\n \"application/vnd.oasis.opendocument.spreadsheet-template\",\n );\n this.fileExtensionMap.set(\n \"odc\",\n \"application/vnd.oasis.opendocument.chart\",\n );\n this.fileExtensionMap.set(\n \"odf\",\n \"application/vnd.oasis.opendocument.formula\",\n );\n this.fileExtensionMap.set(\n \"odb\",\n \"application/vnd.oasis.opendocument.database\",\n );\n this.fileExtensionMap.set(\n \"odi\",\n \"application/vnd.oasis.opendocument.image\",\n );\n this.fileExtensionMap.set(\"oxt\", \"application/vnd.openofficeorg.extension\");\n //\n this.fileExtensionMap.set(\"txt\", \"text/plain\");\n // CSV\n this.csvContentType.add(\"text/comma-separated-values\");\n this.csvContentType.add(\"text/csv\");\n this.csvContentType.add(\"application/csv\");\n }\n\n getContentTypeForExtension(extension: string): string | undefined {\n if (this.fileExtensionMap.has(extension)) {\n return this.fileExtensionMap.get(extension);\n }\n return undefined;\n }\n\n getExtensionForContentType(contentType: string): string | null {\n for (const key of Array.from(this.fileExtensionMap.keys())) {\n const value = this.fileExtensionMap.get(key);\n if ((value || \"\").toLowerCase() == (contentType || \"\").toLowerCase()) {\n return key;\n }\n }\n return null;\n }\n\n isWordLike(contentType: string, originalExt?: string): boolean {\n const extension = this.getExtensionForContentType(contentType);\n if (extension) {\n return this.wordExtensions.has(extension);\n }\n if (contentType == this.OCTET_STREAM && originalExt) {\n return this.wordExtensions.has(originalExt);\n }\n return false;\n }\n\n isExcelLike(contentType: string, originalExt?: string): boolean {\n const extension = this.getExtensionForContentType(contentType);\n if (extension) {\n return this.excelExtensions.has(extension);\n }\n if (contentType == this.OCTET_STREAM && originalExt) {\n return this.excelExtensions.has(originalExt);\n }\n return false;\n }\n\n isCsvLike(contentType: string, originalExt?: string): boolean {\n const isCsv = this.csvContentType.has(contentType);\n if (isCsv) {\n return true;\n }\n if (contentType == this.OCTET_STREAM && originalExt) {\n return this.csvExtensions.has(originalExt);\n }\n return false;\n }\n\n isPowerpointLike(contentType: string, originalExt?: string): boolean {\n const extension = this.getExtensionForContentType(contentType);\n if (extension) {\n return this.pptExtensions.has(extension);\n }\n if (contentType == this.OCTET_STREAM && originalExt) {\n return this.pptExtensions.has(originalExt);\n }\n return false;\n }\n\n isTxtLike(contentType: string, originalExt?: string): boolean {\n const extension = this.getExtensionForContentType(contentType);\n if (extension) {\n return this.txtExtensions.has(extension);\n }\n if (contentType == this.OCTET_STREAM && originalExt) {\n return this.txtExtensions.has(originalExt);\n }\n return false;\n }\n}\n","import { MimeTypeUtils } from \"./MimeTypeUtils\";\n\nexport class FileTypeUtils {\n private static fileTypes: ContentTypeToFileType[] = [];\n static registerContentTypeToFileType(mapper: ContentTypeToFileType) {\n this.fileTypes.push(mapper);\n }\n static getFileType(\n fileType: string,\n previewRole: boolean = false,\n extension?: string,\n ) {\n extension && (extension = extension.trim());\n if (!fileType) return \"unknown\";\n if (!this.fileTypes) {\n console.warn(\"[Element.role] should not have emptyRoles\", this);\n }\n for (let FileType of this.fileTypes || []) {\n const role = FileType(fileType, previewRole);\n if (role) {\n return role;\n }\n }\n const types = {\n csv: function (type: string): boolean {\n if (MimeTypeUtils.INSTANCE.isCsvLike(type, extension)) {\n return true;\n }\n return false;\n },\n doc: function (type: string): boolean {\n if (MimeTypeUtils.INSTANCE.isWordLike(type, extension)) {\n return true;\n }\n return (\n type.indexOf(\"document\") !== -1 &&\n type.indexOf(\"wordprocessing\") !== -1\n );\n },\n xls: function (type: string): boolean {\n if (MimeTypeUtils.INSTANCE.isExcelLike(type, extension)) {\n return true;\n }\n return (\n (type.indexOf(\"document\") !== -1 &&\n type.indexOf(\"spreadsheet\") !== -1) ||\n type.indexOf(\"ms-excel\") !== -1\n );\n },\n img: function (type: string): boolean {\n return type.indexOf(\"image\") !== -1;\n },\n pdf: function (type: string): boolean {\n return type.indexOf(\"pdf\") !== -1 || type === \"application/x-download\";\n },\n ppt: function (type: string): boolean {\n if (MimeTypeUtils.INSTANCE.isPowerpointLike(type, extension)) {\n return true;\n }\n return (\n (type.indexOf(\"document\") !== -1 &&\n type.indexOf(\"presentation\") !== -1) ||\n type.indexOf(\"powerpoint\") !== -1\n );\n },\n txt: function (type: string): boolean {\n return MimeTypeUtils.INSTANCE.isTxtLike(type, extension);\n },\n video: function (type: string): boolean {\n return type.indexOf(\"video\") !== -1;\n },\n audio: function (type: string): boolean {\n return type.indexOf(\"audio\") !== -1;\n },\n zip: function (type: string): boolean {\n return (\n type.indexOf(\"zip\") !== -1 ||\n type.indexOf(\"rar\") !== -1 ||\n type.indexOf(\"tar\") !== -1 ||\n type.indexOf(\"7z\") !== -1\n );\n },\n } as { [key: string]: (type: string) => boolean };\n\n for (let type in types) {\n if (types[type](fileType)) {\n return type;\n }\n }\n\n return \"unknown\";\n }\n}\n\nexport type ContentTypeToFileType = (\n contentType: string,\n previewRole: boolean,\n) => string | undefined;\n","import { FileTypeUtils } from \"../utils/FileTypeUtils\";\nimport { OdeServices } from \"../services/OdeServices\";\nimport { WorkspaceElement } from \"./interface\";\n\nexport class WorkspaceService {\n constructor(private context: OdeServices) {}\n private get http() {\n return this.context.http();\n }\n async saveFile(\n file: Blob | File,\n params?: {\n parentId?: string;\n visibility?: \"public\" | \"protected\";\n application?: string;\n },\n ) {\n //prepare metadata\n const tmpName = (file as File).name || \"\";\n const nameSplit = tmpName.split(\".\");\n const contentType = file.type || \"application/octet-stream\";\n const extension =\n nameSplit.length > 1 ? nameSplit[nameSplit.length - 1] : \"\";\n const metadata = {\n \"content-type\": contentType,\n filename: tmpName,\n size: file.size,\n extension,\n role: FileTypeUtils.getFileType(contentType, false, extension),\n };\n const name = tmpName.replace(\".\" + metadata.extension, \"\");\n const fullname = metadata.extension\n ? name + \".\" + metadata.extension\n : name;\n //prepare form data\n const formData = new FormData();\n formData.append(\"file\", file, fullname);\n //add query params\n const args = [];\n if (params?.visibility === \"public\" || params?.visibility === \"protected\") {\n args.push(`${params.visibility}=true`);\n }\n if (params?.application) {\n args.push(`application=${params.application}`);\n }\n if (metadata.role === \"img\") {\n args.push(`quality=1`);\n }\n if (params?.parentId) {\n args.push(`parentId=${params.parentId}`);\n }\n //make query\n const res = await this.http.postFile<WorkspaceElement>(\n `/workspace/document?${args.join(\"&\")}`,\n formData,\n );\n return res;\n }\n}\n","import { notify, Promisified } from \"../notify/Framework\";\nimport { AddBundleCallback, IIdiom } from \"./interfaces\";\nimport { IOdeServices } from \"../services/OdeServices\";\nimport { App } from \"../globals\";\n\nconst bundle: { [key: string]: string } = {};\nconst promises: { [path: string]: Promise<void> } = {};\n\nexport const defaultDiacriticsRemovalMap = [\n {\n base: \"A\",\n letters:\n /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g,\n },\n { base: \"AA\", letters: /[\\uA732]/g },\n { base: \"AE\", letters: /[\\u00C6\\u01FC\\u01E2]/g },\n { base: \"AO\", letters: /[\\uA734]/g },\n { base: \"AU\", letters: /[\\uA736]/g },\n { base: \"AV\", letters: /[\\uA738\\uA73A]/g },\n { base: \"AY\", letters: /[\\uA73C]/g },\n {\n base: \"B\",\n letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g,\n },\n {\n base: \"C\",\n letters:\n /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g,\n },\n {\n base: \"D\",\n letters:\n /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g,\n },\n { base: \"DZ\", letters: /[\\u01F1\\u01C4]/g },\n { base: \"Dz\", letters: /[\\u01F2\\u01C5]/g },\n {\n base: \"E\",\n letters:\n /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g,\n },\n { base: \"F\", letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g },\n {\n base: \"G\",\n letters:\n /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g,\n },\n {\n base: \"H\",\n letters:\n /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g,\n },\n {\n base: \"I\",\n letters:\n /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g,\n },\n { base: \"J\", letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g },\n {\n base: \"K\",\n letters:\n /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g,\n },\n {\n base: \"L\",\n letters:\n /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g,\n },\n { base: \"LJ\", letters: /[\\u01C7]/g },\n { base: \"Lj\", letters: /[\\u01C8]/g },\n { base: \"M\", letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g },\n {\n base: \"N\",\n letters:\n /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g,\n },\n { base: \"NJ\", letters: /[\\u01CA]/g },\n { base: \"Nj\", letters: /[\\u01CB]/g },\n {\n base: \"O\",\n letters:\n /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g,\n },\n { base: \"OI\", letters: /[\\u01A2]/g },\n { base: \"OO\", letters: /[\\uA74E]/g },\n { base: \"OU\", letters: /[\\u0222]/g },\n {\n base: \"P\",\n letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g,\n },\n { base: \"Q\", letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g },\n {\n base: \"R\",\n letters:\n /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g,\n },\n {\n base: \"S\",\n letters:\n /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g,\n },\n {\n base: \"T\",\n letters:\n /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g,\n },\n { base: \"TZ\", letters: /[\\uA728]/g },\n {\n base: \"U\",\n letters:\n /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g,\n },\n { base: \"V\", letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g },\n { base: \"VY\", letters: /[\\uA760]/g },\n {\n base: \"W\",\n letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g,\n },\n { base: \"X\", letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g },\n {\n base: \"Y\",\n letters:\n /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g,\n },\n {\n base: \"Z\",\n letters:\n /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g,\n },\n {\n base: \"a\",\n letters:\n /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g,\n },\n { base: \"aa\", letters: /[\\uA733]/g },\n { base: \"ae\", letters: /[\\u00E6\\u01FD\\u01E3]/g },\n { base: \"ao\", letters: /[\\uA735]/g },\n { base: \"au\", letters: /[\\uA737]/g },\n { base: \"av\", letters: /[\\uA739\\uA73B]/g },\n { base: \"ay\", letters: /[\\uA73D]/g },\n {\n base: \"b\",\n letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g,\n },\n {\n base: \"c\",\n letters:\n /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g,\n },\n {\n base: \"d\",\n letters:\n /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g,\n },\n { base: \"dz\", letters: /[\\u01F3\\u01C6]/g },\n {\n base: \"e\",\n letters:\n /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g,\n },\n { base: \"f\", letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g },\n {\n base: \"g\",\n letters:\n /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g,\n },\n {\n base: \"h\",\n letters:\n /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g,\n },\n { base: \"hv\", letters: /[\\u0195]/g },\n {\n base: \"i\",\n letters:\n /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g,\n },\n { base: \"j\", letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g },\n {\n base: \"k\",\n letters:\n /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g,\n },\n {\n base: \"l\",\n letters:\n /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g,\n },\n { base: \"lj\", letters: /[\\u01C9]/g },\n { base: \"m\", letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g },\n {\n base: \"n\",\n letters:\n /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g,\n },\n { base: \"nj\", letters: /[\\u01CC]/g },\n {\n base: \"o\",\n letters:\n /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g,\n },\n { base: \"oi\", letters: /[\\u01A3]/g },\n { base: \"ou\", letters: /[\\u0223]/g },\n { base: \"oo\", letters: /[\\uA74F]/g },\n {\n base: \"p\",\n letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g,\n },\n { base: \"q\", letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g },\n {\n base: \"r\",\n letters:\n /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g,\n },\n {\n base: \"s\",\n letters:\n /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g,\n },\n {\n base: \"t\",\n letters:\n /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g,\n },\n { base: \"tz\", letters: /[\\uA729]/g },\n {\n base: \"u\",\n letters:\n /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g,\n },\n { base: \"v\", letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g },\n { base: \"vy\", letters: /[\\uA761]/g },\n {\n base: \"w\",\n letters:\n /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g,\n },\n { base: \"x\", letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g },\n {\n base: \"y\",\n letters:\n /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g,\n },\n {\n base: \"z\",\n letters:\n /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g,\n },\n];\n\nexport class IdiomService implements IIdiom {\n constructor(private context: IOdeServices) {}\n\n private get http() {\n return this.context.http();\n }\n\n async getIdiom(currentLanguage: string, app: App): Promise<any> {\n await Promise.all([\n this.addBundlePromise(currentLanguage, \"/i18n\"),\n this.addBundlePromise(currentLanguage, `/${app}/i18n`),\n ]);\n }\n\n translate(key: string, params?: { [param: string]: any }): string {\n key = key ?? \"\";\n let txt: string = bundle[key] === undefined ? key : bundle[key];\n if (params && typeof params === \"object\") {\n for (let member in params) {\n if (typeof params[member] !== \"undefined\") {\n txt = txt.replace(\n new RegExp(\"\\\\${\" + member + \"}\", \"g\"),\n \"\" + params[member],\n );\n }\n }\n }\n return txt;\n }\n\n addBundlePromise(currentLanguage: string, path: string): Promise<void> {\n return this.loadBundlePromise(currentLanguage, path);\n }\n\n addBundle(\n currentLanguage: string,\n path: string,\n callback?: AddBundleCallback,\n ): void {\n this.loadBundle(currentLanguage, path, callback);\n }\n\n loadBundlePromise(currentLanguage: string, path: string): Promise<void> {\n this.loadBundle(currentLanguage, path);\n return promises[path];\n }\n\n private loadBundle(\n currentLanguage: string,\n path: string,\n callback?: AddBundleCallback,\n ): void {\n // load bundle only once\n const oldPromise = promises[path];\n if (oldPromise) {\n if (callback) {\n oldPromise.then(callback).catch(callback);\n }\n } else {\n // Create a Promise now, to avoid loading a bundle more than once.\n const load = new Promisified<void>();\n promises[path] = load.promise;\n // Then load the bundle.\n const params: any = {};\n // Force requested language to user's choice.\n if (currentLanguage) {\n params[\"Accept-Language\"] = currentLanguage;\n }\n this.http\n .get<string>(path, { headers: params })\n .then((response) => {\n Object.assign(bundle, response);\n if (typeof callback === \"function\") {\n callback();\n }\n load.resolve();\n })\n .catch((e) => {\n if (typeof callback === \"function\") {\n callback();\n }\n load.reject();\n });\n }\n }\n\n addTranslations(folder: string, callback?: AddBundleCallback): void {\n // Load translations once language is known.\n notify.onLangReady().promise.then((lang) => {\n this.loadBundle(lang, folder + \"/\" + lang + \".json\", callback);\n });\n }\n\n addAllTranslations(folders: string[]): Promise<void> {\n if (folders && folders.length > 0) {\n // Load all translations once language is known.\n return notify\n .onLangReady()\n .promise.then((lang) =>\n Promise.all(\n folders.map((folder) =>\n this.loadBundlePromise(lang, folder + \"/\" + lang + \".json\"),\n ),\n ),\n )\n .then(() => {});\n } else {\n return Promise.reject();\n }\n }\n\n addKeys(keys: any): void {\n for (var property in keys) {\n if (typeof bundle[property] !== \"string\")\n bundle[property] = keys[property];\n }\n }\n\n removeAccents(str: string): string {\n for (var i = 0; i < defaultDiacriticsRemovalMap.length; i++) {\n str = str.replace(\n defaultDiacriticsRemovalMap[i].letters,\n defaultDiacriticsRemovalMap[i].base,\n );\n }\n return str;\n }\n}\n","import { ParamsByTrackingSystem, XitiConf } from \"../configure/Analytics\";\nimport { configure } from \"../configure/Framework\";\nimport { App, ERROR_CODE } from \"../globals\";\nimport {\n IUserInfo,\n IWebApp,\n IXitiTrackingParams,\n UserProfile,\n} from \"../index.cjs\";\nimport { IOdeServices } from \"../services/OdeServices\";\n\ndeclare var ATInternet: any;\nlet ATTag: any;\n\nexport class AnalyticsService {\n constructor(private context: IOdeServices) {}\n\n private get http() {\n return this.context.http();\n }\n\n private get session() {\n return this.context.session();\n }\n\n /**\n * Xiti tracker for page loading.\n * @param locationPath\n * @param app\n */\n public async trackPageLoad(locationPath: string, app: IWebApp) {\n const [xitiTrackingParams] = await Promise.all([\n // get Xiti configuration\n this.getXitiConfig(app.name.toLowerCase() as App),\n // load Xiti javascript file\n this.loadXitiScript(),\n ]);\n if (!xitiTrackingParams) return;\n if (!ATInternet) return;\n\n // SERVICE\n let SERVICE = xitiTrackingParams.LIBELLE_SERVICE.default || null;\n for (let prop in xitiTrackingParams.LIBELLE_SERVICE) {\n if (prop !== \"default\" && locationPath.indexOf(prop) >= 0) {\n SERVICE = xitiTrackingParams.LIBELLE_SERVICE[prop];\n break;\n }\n }\n ATTag = new ATInternet.Tracker.Tag({ site: xitiTrackingParams.STRUCT_ID });\n ATTag.setProps(\n {\n SERVICE: SERVICE,\n TYPE: xitiTrackingParams.TYPE,\n OUTIL: xitiTrackingParams.OUTIL,\n UAI: xitiTrackingParams.STRUCT_UAI,\n PROJET: xitiTrackingParams.PROJET,\n EXPLOITANT: xitiTrackingParams.EXPLOITANT,\n PLATEFORME: xitiTrackingParams.PLATFORME,\n PROFIL: xitiTrackingParams.PROFILE,\n },\n true,\n );\n ATTag.identifiedVisitor.set({\n id: xitiTrackingParams.ID_PERSO,\n category: xitiTrackingParams.PROFILE,\n });\n ATTag.page.set({\n name: app?.prefix === \"userbook\" ? \"directory\" : app?.prefix,\n chapter1: \"\",\n chapter2: \"\",\n chapter3: \"\",\n level2: xitiTrackingParams.STRUCT_UAI,\n });\n ATTag.dispatch();\n }\n\n private async getXitiConfig(\n app: App,\n ): Promise<IXitiTrackingParams | undefined> {\n const [analyticsConf, xitiConfig] = await Promise.all([\n this.http.get<ParamsByTrackingSystem>(\"/analyticsConf\"),\n //FIXME change servers config to only keep the \"all-in-one\" query to /analyticsConf.\n this.http.get<XitiConf>(\"/xiti/config\"),\n ]);\n\n if (!analyticsConf?.type) {\n // Data seems corrupted\n throw ERROR_CODE.MALFORMED_DATA;\n }\n\n if (xitiConfig?.active) {\n // Add XiTi config to the resulting object, if active.\n analyticsConf.xiti = await this.getXitiTrackingParams(xitiConfig, app);\n }\n\n return analyticsConf.xiti;\n }\n\n private async loadXitiScript() {\n if (typeof ATInternet === \"undefined\") {\n const scriptPath = \"/xiti/public/js/lib/smarttag_ENT.js\";\n const response = await this.http.get<string>(scriptPath, {\n headers: { Accept: \"application/javascript\" },\n });\n if (this.http.latestResponse.status != 200) {\n throw \"Error while loading XiTi script\";\n }\n eval(response);\n }\n }\n\n private async getXitiTrackingParams(\n xitiConf: XitiConf,\n app: App,\n ): Promise<IXitiTrackingParams | undefined> {\n if (!xitiConf.structureMap || !app) return;\n\n const user: IUserInfo | undefined = await this.session.getUser();\n const userProfile: UserProfile = await this.session.getUserProfile();\n\n let structure;\n if (!user?.structures) return;\n\n for (let struc of user.structures) {\n const s = xitiConf.structureMap[struc];\n if (s && s.collectiviteId && s.UAI) {\n structure = s;\n break;\n }\n }\n if (!structure || !structure.active) return;\n const appConf = await configure.Platform.apps.getPublicConf(app);\n if (!appConf) return;\n const appXitiConf = appConf.xiti;\n if (!appXitiConf) return;\n if (!appXitiConf.LIBELLE_SERVICE) return;\n if (!structure.UAI) return; // Keeps the transpiler happy\n\n // ID_PERSO\n function pseudonymization(stringId: string): string {\n let buffer = \"\";\n for (let i = 0; i < stringId.length; i++) {\n buffer += stringId.charCodeAt(i);\n }\n return buffer;\n }\n\n // PROFIL\n const profileMap = {\n Student: \"ELEVE\",\n Teacher: \"ENSEIGNANT\",\n Relative: \"PARENT\",\n Personnel: \"ADMIN_VIE_SCOL_TECH\",\n Guest: \"AUTRE\",\n };\n\n return {\n LIBELLE_SERVICE: appXitiConf.LIBELLE_SERVICE, // Which property of LIBELLE_SERVICE to use depends on the frontend.\n TYPE: appXitiConf.OUTIL ? \"TIERS\" : \"NATIF\",\n OUTIL: appXitiConf.OUTIL ? appXitiConf.OUTIL : \"\",\n STRUCT_ID: structure.collectiviteId,\n STRUCT_UAI: structure.UAI,\n PROJET: structure.projetId ? structure.projetId : xitiConf.ID_PROJET,\n EXPLOITANT: xitiConf.ID_EXPLOITANT,\n PLATFORME: structure.plateformeId\n ? structure.plateformeId\n : xitiConf.ID_PLATEFORME,\n ID_PERSO: pseudonymization(user.userId),\n PROFILE:\n userProfile && userProfile.length > 0\n ? profileMap[userProfile[0]] ?? \"\"\n : \"\",\n };\n }\n}\n","import { CacheService } from \"../cache/Service\";\nimport { ConfService } from \"../configure/Service\";\nimport { DirectoryService } from \"../directory/Service\";\nimport { HttpService } from \"../transport/Service\";\nimport { ResourceService } from \"../resources/ResourceService\";\nimport { RightService } from \"../rights/Service\";\nimport { SessionService } from \"../session/Service\";\nimport { ShareService } from \"../share/Service\";\nimport { WorkspaceService } from \"../workspace/Service\";\nimport { IdiomService } from \"../idiom/Service\";\nimport { AnalyticsService } from \"../analytics/Service\";\n\nexport interface IOdeServices {\n analytics(): AnalyticsService;\n cache(): CacheService;\n conf(): ConfService;\n directory(): DirectoryService;\n http(): HttpService;\n idiom(): IdiomService;\n resource(application: string, resourceType?: string): ResourceService;\n rights(): RightService;\n session(): SessionService;\n share(): ShareService;\n workspace(): WorkspaceService;\n}\n\nexport class OdeServices implements IOdeServices {\n private _analytics: AnalyticsService;\n private _cache: CacheService;\n private _conf: ConfService;\n private _directory: DirectoryService;\n private _http: HttpService;\n private _idiom: IdiomService;\n private _rights: RightService;\n private _session: SessionService;\n private _share: ShareService;\n private _workspace: WorkspaceService;\n\n constructor() {\n this._analytics = new AnalyticsService(this);\n this._cache = new CacheService(this);\n this._conf = new ConfService(this);\n this._directory = new DirectoryService(this);\n this._http = new HttpService(this);\n this._idiom = new IdiomService(this);\n this._rights = new RightService(this);\n this._session = new SessionService(this);\n this._share = new ShareService(this);\n this._workspace = new WorkspaceService(this);\n }\n\n analytics() {\n return this._analytics;\n }\n\n cache() {\n return this._cache;\n }\n\n conf() {\n return this._conf;\n }\n\n directory(): DirectoryService {\n return this._directory;\n }\n\n http() {\n return this._http;\n }\n\n idiom() {\n return this._idiom;\n }\n\n resource(application: string, resourceType?: string): ResourceService {\n if (!resourceType) {\n return ResourceService.findMainService({ application }, this);\n }\n return ResourceService.findService({ application, resourceType }, this);\n }\n\n rights() {\n return this._rights;\n }\n\n session() {\n return this._session;\n }\n\n share() {\n return this._share;\n }\n\n workspace() {\n return this._workspace;\n }\n}\n","// TODO should be loaded from app in future\nimport \"../resources/BlogResourceService\";\nimport \"../resources/MindmapResourceService\";\n\nimport { IOdeServices, OdeServices } from \"./OdeServices\";\n\nexport const odeServices: IOdeServices = new OdeServices();\n\nexport * from \"../directory/interface\";\nexport * from \"../resources/interface\";\nexport * from \"../rights/interface\";\nexport * from \"../share/interface\";\nexport * from \"../workspace/interface\";\n"],"names":["d","b","p","__","thisArg","_arguments","P","generator","adopt","value","resolve","reject","fulfilled","step","e","rejected","result","body","_","t","f","y","g","verb","n","v","op","o","s","m","i","r","ar","error","to","from","il","j","q","a","resume","settle","fulfill","isFunction","createImpl","_super","instance","ctorFunc","errors","err","arr","item","index","Subscription","initialTeardown","e_1","_a","e_2","_b","_parentage","_parentage_1","_parentage_1_1","parent_1","e_1_1","_teardowns","_teardowns_1","_teardowns_1_1","teardown_1","e_2_1","teardown","parent","empty","args","_i","delegate","handle","onUnhandledError","kind","cb","isRoot","errorThrown","Subscriber","destination","_this","next","complete","SafeSubscriber","observerOrNext","context_1","handler","notification","subscriber","onStoppedNotification","x","fns","input","prev","fn","Observable","subscribe","operator","observable","source","sink","promiseCtor","subscription","Symbol_observable","operations","init","liftedSource","OperatorSubscriber","onNext","onComplete","onError","onFinalize","closed","connection","refCounter","sharedConnection","conn","ConnectableObservable","subjectFactory","subject","_connection","subject_1","higherOrderRefCount","callback","request","cancel","timestamp","timestampProvider","schedule","provider","start","run","now","Subject","copy","copy_1","copy_1_1","observer","observers","hasError","isStopped","thrownError","AnonymousSubject","BehaviorSubject","_value","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","_buffer","_infiniteTimeWindow","adjustedBufferSize","last","AsyncSubject","_hasValue","_isComplete","Action","scheduler","work","state","delay","AsyncAction","id","_id","_scheduler","_delay","errored","errorValue","actions","AsapAction","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","action","AsapScheduler","count","QueueAction","QueueScheduler","AnimationFrameAction","AnimationFrameScheduler","VirtualTimeScheduler","maxFrames","VirtualAction","sub","execute","iterator","Symbol_iterator","done","obj","readableStream","reader","obs","array","promise","iterable","iterable_1","iterable_1_1","asyncIterable","process","asyncIterable_1","asyncIterable_1_1","defaultValue","errorOrErrorFactory","errorFactory","NotificationKind","Notification","nextHandler","errorHandler","completeHandler","nextOrObserver","_c","_d","config","hasConfig","message","info","schedulerArg","first","each","_with","meta","originalSourceSubscription","timerSubscription","lastValue","seen","startTimer","project","isArray","isNodeStyle","callbackFunc","resultSelector","uninitialized","subs","isAsync_1","isComplete_1","results","first_1","keys","key","values","combineLatest","observables","valueTransform","length","active","remainingFirstValues","_loop_1","hasFirstValue","concurrent","onBeforeNext","expand","innerSubScheduler","additionalTeardown","buffer","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","ii","concat","observableFactory","DEFAULT_CONFIG","connector","resetOnDisconnect","sources","remainingCompletions","remainingEmissions","sourceIndex","hasValue","target","eventName","options","methodName","add","remove","subTarget","addHandler","removeHandler","retValue","initialStateOrOptions","condition","iterate","resultSelectorOrScheduler","initialState","gen","trueResult","falseResult","dueTime","intervalOrScheduler","asyncScheduler","intervalDuration","due","period","merge","onErrorResumeNext","nextSources","remaining","subscribeNext","nextSource","innerSub","onErrorResumeNextWith","pred","predicate","subscriptions","end","resourceFactory","resource","zip","buffers","completed","durationSelector","durationSubscriber","endDuration","cleanupDuration","duration","closingNotifier","currentBuffer","bufferSize","startBufferEvery","toEmit","buffers_1","buffers_1_1","toEmit_1","toEmit_1_1","e_3","buffers_2","buffers_2_1","e_3_1","bufferTimeSpan","otherArgs","bufferCreationInterval","maxBufferSize","bufferRecords","restartOnEmit","emit","record","startBuffer","record_1","bufferTimeSubscriber","recordsCopy","recordsCopy_1","recordsCopy_1_1","openings","closingSelector","openValue","closingSubscription","emitBuffer","closingSubscriber","openBuffer","selector","syncUnsub","handledResult","accumulator","seed","hasSeed","emitOnNext","emitBeforeComplete","hasState","joinFn","otherSources","innerObservable","subscribable","total","activeTask","lastTime","emitWhenIdle","targetTime","delayDurationSelector","subscriptionDelay","keySelector","flushes","distinctKeys","comparator","previousKey","currentKey","compare","hasDefaultValue","inner","outerValue","findIndex","elementOrOptions","element","groups","notify","handleError","consumer","groupBySourceSubscriber","key_1","group_1","grouped","createGroupedObservable","durationSubscriber_1","groupSubject","groupSubscriber","GroupBySubscriber","buffer_1","buffer_1_1","comparer","subjectOrSubjectFactory","hasPrev","properties","currentProp","initialValue","windowTime","selectorOrScheduler","soFar","subscribeForRepeat","notifier","syncResub","completions$","isNotifierComplete","isMainComplete","getCompletionSubject","subscribeForRepeatWhen","configOrCount","resetOnSuccess","subscribeForRetry","resub_1","notifierSubscriber_1","errors$","subscribeForRetryWhen","compareTo","aState","bState","isEqual","createSubscriber","selfState","otherState","sequenceEqualSubscriber","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","refCount","hasCompleted","hasErrored","cancelReset","reset","resetAndUnsubscribe","dest","on","configOrBufferSize","singleValue","seenValue","skipCount","ring","valueIndex","oldValue","taking","skipSubscriber","innerSubscriber","innerIndex","outerIndex","inclusive","tapObserver","isUnsub","leading","trailing","sendValue","throttled","endThrottling","send","cleanupThrottling","startThrottle","duration$","current","TimeInterval","interval","withObservable","window","windowBoundaries","windowSubject","windowSize","startWindowEvery","startEvery","windows","starts","windows_1","windows_1_1","window_1","c","window_2","windowTimeSpan","windowCreationInterval","maxWindowSize","windowRecords","restartOnClose","closeWindow","startWindow","loop","terminate","windowsCopy","windowsCopy_1","windowsCopy_1_1","openWindow","inputs","len","otherValues","ready","zipStatic","otherInputs","__publicField","_resolve","_reject","reason","asyncDataName","bind","require$$0","val","prototype","str","l","assignValue","content","utils","buildURL","url","params","paramsSerializer","serializedParams","parts","hashmarkIndex","InterceptorManager","h","transformData","data","headers","isCancel","normalizeHeaderName","normalizedName","name","code","response","enhanceError","createError","validateStatus","expires","path","domain","secure","cookie","match","baseURL","relativeURL","isAbsoluteURL","combineURLs","require$$1","requestedURL","ignoreDuplicateOf","parsed","line","msie","urlParsingNode","originURL","resolveURL","href","requestURL","cookies","require$$2","require$$3","buildFullPath","require$$4","parseHeaders","require$$5","isURLSameOrigin","require$$6","require$$7","requestData","requestHeaders","username","password","fullPath","responseHeaders","responseData","timeoutErrorMessage","xsrfValue","adapter","defaults","status","method","dispatchRequest","mergeConfig","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","prop","axiosKeys","otherKeys","Axios","instanceConfig","chain","interceptor","Cancel","CancelToken","executor","resolvePromise","token","payload","defaultConfig","context","axios","promises","require$$8","require$$9","axiosModule","axios_1","module","loadedScripts","cdnUrl","CDN_DOMAIN","originalURL","json","variableName","resultName","securedScript","res","http","avatar","u","lang","me","workflowName","workflowRight","right","rightName","resourceRight","sharedRight","infos","user","responseText","email","mobile","rememberMe","secureLocation","version","skins","override","theme","conf","currentTheme","bundle","defaultDiacriticsRemovalMap","txt","member","oldPromise","load","folder","folders","property","defaultTo","prefs","userInfo","publicConf","tmp","myApps","app","upToDate","appName","foundApp","alternativeApp","found","type","checkType","tuple","xitiConf","desc","structure","struc","appConf","appXitiConf","pseudonymization","stringId","profileMap","cdnDomain","padWith0","w","widgetName","skin","i18nFolders","widgetsToHide","translatedA","translatedB","_platformConf","pref","maxResults","maxInfos","model","recipient","force","types","toAdd","_notification","msg","_ResourceService","application","resourceType","service","resourceId","withComment","folderId","parameters","publicationAsFormData","activityType","subjectArea","age","keyWord","thumb","blob","ret","fixThumb","apiPath","task","shouldCache","applications","currentApp","extendedTheme","bootstrapPath","bootstrapVersion","is1d","odeServices","size","idBookmark","users","displayName","profile","bookmarks","userIds","groupIds","group","bookmarkDetailPromises","bookmark","usersId","groupId","memberIds","previous","rights","expect","safeRights","expects","rightsArray","authorizedAction","currentLanguage","quotaAndUsage","userDescription","userProfile","bookmarkedApps","isUserSignin","userbook","searchText","cleanSearchText","resUsers","firstName","lastName","login","cleanLastName","cleanFirstName","cleanDisplayName","cleanLogin","resGroups","sharingMap","newKey","mapping","actionAvailable","visibleBookmarks","rightsPayload","sharingRights","userRights","userId","act","groupRights","visibleGroups","groupDisplayName","visibleUsers","rightWithDuplicates","resourceService","_MimeTypeUtils","extension","contentType","originalExt","mapper","fileType","previewRole","FileType","role","file","tmpName","nameSplit","metadata","fullname","formData","locationPath","xitiTrackingParams","SERVICE","analyticsConf","xitiConfig"],"mappings":"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"}
|