@equinor/fusion-framework-module-http 0.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ ## Api Client
2
+
3
+ ### Configure
4
+ ```tsx
5
+ const configure = (config) => {
6
+ config.http.configureClient(
7
+ 'bar',
8
+ 'https://somewhere-test.com'
9
+ );
10
+ }
11
+ ```
@@ -0,0 +1,11 @@
1
+ import { HttpClient } from './client';
2
+ export class HttpClientMsal extends HttpClient {
3
+ defaultScope = [];
4
+ fetch(init) {
5
+ init = typeof init === 'string' ? { path: init } : init;
6
+ Object.assign(init, { scopes: this.defaultScope.concat(init.scopes || []) });
7
+ return super.fetch(init);
8
+ }
9
+ }
10
+ export default HttpClientMsal;
11
+ //# sourceMappingURL=client-msal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-msal.js","sourceRoot":"","sources":["../../src/client-msal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,UAAU,CAAC;AAMvD,MAAM,OAAO,cAAe,SAAQ,UAA2B;IAEpD,YAAY,GAAa,EAAE,CAAC;IAGnC,KAAK,CAAC,IAA2C;QAC7C,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7E,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACJ;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { firstValueFrom, of, Subject } from 'rxjs';
2
+ import { switchMap, takeUntil, tap } from 'rxjs/operators';
3
+ import { fromFetch } from 'rxjs/fetch';
4
+ import { ProcessOperators } from './process-operators';
5
+ export class HttpRequestHandler extends ProcessOperators {
6
+ setHeader(key, value) {
7
+ return this.set('header-' + key, (request) => {
8
+ const headers = new Headers(request.headers);
9
+ headers.append(key, value);
10
+ return { ...request, headers };
11
+ });
12
+ }
13
+ }
14
+ export class HttpClient {
15
+ uri;
16
+ requestHandler;
17
+ responseHandler = (x) => Promise.resolve(x);
18
+ _request$ = new Subject();
19
+ _response$ = new Subject();
20
+ _abort$ = new Subject();
21
+ get request$() {
22
+ return this._request$.asObservable();
23
+ }
24
+ get response$() {
25
+ return this._response$.asObservable();
26
+ }
27
+ constructor(uri, options) {
28
+ this.uri = uri;
29
+ this.requestHandler = options?.requestHandler || new HttpRequestHandler();
30
+ this._init();
31
+ }
32
+ _init() {
33
+ }
34
+ fetch(init) {
35
+ const options = typeof init === 'string' ? { path: init } : init;
36
+ return of({ ...options, uri: this._resolveUrl(options.path) }).pipe(switchMap((x) => this._prepareRequest(x)), tap((x) => this._request$.next(x)), switchMap(({ uri, path: _path, ...args }) => fromFetch(uri, args)), switchMap((x) => this._prepareResponse(x)), tap((x) => this._response$.next(x)), takeUntil(this._abort$));
37
+ }
38
+ fetchAsync(init) {
39
+ return firstValueFrom(this.fetch(init));
40
+ }
41
+ abort() {
42
+ this._abort$.next();
43
+ }
44
+ _prepareRequest(init) {
45
+ return this.requestHandler.process(init);
46
+ }
47
+ _prepareResponse(response) {
48
+ return this.responseHandler(response);
49
+ }
50
+ _resolveUrl(path) {
51
+ return [this.uri, path].join('/');
52
+ }
53
+ }
54
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA+B,EAAE,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAOvD,MAAM,OAAO,kBAEX,SAAQ,gBAAmB;IAMzB,SAAS,CAAC,GAAW,EAAE,KAAa;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;YACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC;QACnC,CAAC,CAAqC,CAAC;IAC3C,CAAC;CACJ;AA+FD,MAAM,OAAO,UAAU;IAwBA;IArBV,cAAc,CAA+B;IAE7C,eAAe,GAAmC,CAAC,CAAW,EAAE,EAAE,CACvE,OAAO,CAAC,OAAO,CAAC,CAAyB,CAAC,CAAC;IAGrC,SAAS,GAAG,IAAI,OAAO,EAAY,CAAC;IAGpC,UAAU,GAAG,IAAI,OAAO,EAAa,CAAC;IAEtC,OAAO,GAAG,IAAI,OAAO,EAAQ,CAAC;IAExC,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IAC1C,CAAC;IAED,YAAmB,GAAW,EAAE,OAA2C;QAAxD,QAAG,GAAH,GAAG,CAAQ;QAC1B,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,IAAI,kBAAkB,EAAY,CAAC;QACpF,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAGS,KAAK;IAEf,CAAC;IAEM,KAAK,CAAC,IAAoC;QAC7C,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACjE,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAc,CAAC,CAAC,IAAI,CAE3E,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAEzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAElC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAElE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAE1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAEnC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAC1B,CAAC;IACN,CAAC;IAEM,UAAU,CAAC,IAAoC;QAClD,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAES,eAAe,CAAC,IAAc;QACpC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAES,gBAAgB,CAAC,QAAkB;QACzC,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAES,WAAW,CAAC,IAAY;QAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;CACJ"}
@@ -0,0 +1,23 @@
1
+ import { HttpRequestHandler } from './client';
2
+ export class HttpClientConfigurator {
3
+ _clients = {};
4
+ get clients() {
5
+ return { ...this._clients };
6
+ }
7
+ defaultHttpClientCtor;
8
+ defaultHttpRequestHandler = new HttpRequestHandler();
9
+ constructor(client) {
10
+ this.defaultHttpClientCtor = client;
11
+ }
12
+ configureClient(name, args) {
13
+ const argFn = typeof args === 'string' ? (x) => (x.uri = String(args)) : args;
14
+ const options = typeof argFn === 'function' ? { onCreate: argFn } : argFn;
15
+ this._clients[name] = {
16
+ ...this._clients[name],
17
+ ...options,
18
+ };
19
+ return this;
20
+ }
21
+ }
22
+ export default HttpClientConfigurator;
23
+ //# sourceMappingURL=configurator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configurator.js","sourceRoot":"","sources":["../../src/configurator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAgC,MAAM,UAAU,CAAC;AAwC5E,MAAM,OAAO,sBAAsB;IAGrB,QAAQ,GAA+C,EAAE,CAAC;IAEpE,IAAW,OAAO;QACd,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAEQ,qBAAqB,CAAiC;IAEtD,yBAAyB,GAAG,IAAI,kBAAkB,EAExD,CAAC;IAEJ,YAAY,MAAsC;QAC9C,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;IACxC,CAAC;IAED,eAAe,CACX,IAAY,EACZ,IAAsE;QAEtE,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjF,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;YAClB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtB,GAAI,OAAiD;SACxD,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { HttpClient } from './client';
2
+ export { HttpClientMsal } from './client-msal';
3
+ export * from './configurator';
4
+ export * from './provider';
5
+ export * from './module';
6
+ export { default } from './module';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { HttpClientMsal } from './client-msal';
2
+ import { HttpClientConfigurator } from './configurator';
3
+ import { HttpClientProvider } from './provider';
4
+ export const module = {
5
+ name: 'http',
6
+ configure: () => new HttpClientConfigurator(HttpClientMsal),
7
+ initialize: ({ http }) => new HttpClientProvider(http),
8
+ };
9
+ export const setupHttpModule = (config, callback) => {
10
+ callback(config.http);
11
+ };
12
+ export default module;
13
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAA2B,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAuB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAarE,MAAM,CAAC,MAAM,MAAM,GAAe;IAC9B,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,sBAAsB,CAAC,cAAc,CAAC;IAC3D,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,EAAsC,EAAE,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC;CAC7F,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,MAAuC,EACvC,QAAmE,EAC/C,EAAE;IACtB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC;AAQF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { BehaviorSubject, from } from 'rxjs';
2
+ import { withLatestFrom, concatMap, last } from 'rxjs/operators';
3
+ export class ProcessOperators {
4
+ _operators = {};
5
+ add(key, operator) {
6
+ if (Object.keys(this._operators).includes(key))
7
+ throw Error(`Operator [${key}] allready defined`);
8
+ return this.set(key, operator);
9
+ }
10
+ set(key, operator) {
11
+ this._operators[key] = operator;
12
+ return this;
13
+ }
14
+ get(key) {
15
+ return this._operators[key];
16
+ }
17
+ process(request) {
18
+ const request$ = new BehaviorSubject(request);
19
+ from(Object.values(this._operators))
20
+ .pipe(withLatestFrom(request$), concatMap(async ([operator, value]) => (await operator(value)) || value))
21
+ .subscribe(request$);
22
+ return request$.pipe(last());
23
+ }
24
+ }
25
+ //# sourceMappingURL=process-operators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-operators.js","sourceRoot":"","sources":["../../src/process-operators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAc,MAAM,MAAM,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAQjE,MAAM,OAAO,gBAAgB;IACf,UAAU,GAAuC,EAAE,CAAC;IAK9D,GAAG,CAAC,GAAW,EAAE,QAA4B;QACzC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC1C,MAAM,KAAK,CAAC,aAAa,GAAG,oBAAoB,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAKD,GAAG,CAAC,GAAW,EAAE,QAA4B;QACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IAKD,GAAG,CAAC,GAAW;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAKD,OAAO,CAAC,OAAU;QACd,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAI,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC/B,IAAI,CACD,cAAc,CAAC,QAAQ,CAAC,EACxB,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAC3E;aACA,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;CACJ"}
@@ -0,0 +1,28 @@
1
+ export class ClientNotFoundException extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ }
5
+ }
6
+ export class HttpClientProvider {
7
+ config;
8
+ constructor(config) {
9
+ this.config = config;
10
+ }
11
+ hasClient(key) {
12
+ return Object.keys(this.config.clients).includes(key);
13
+ }
14
+ createClient(key) {
15
+ if (!this.hasClient(key)) {
16
+ throw new ClientNotFoundException(`No registered http client for key [${key}]`);
17
+ }
18
+ const { defaultUri, onCreate, ctor = this.config.defaultHttpClientCtor, requestHandler = this.config.defaultHttpRequestHandler, } = this.config.clients[key];
19
+ const options = { requestHandler };
20
+ const instance = new ctor(defaultUri || '', options);
21
+ onCreate && onCreate(instance);
22
+ return instance;
23
+ }
24
+ createCustomClient(key) {
25
+ return this.createClient(key);
26
+ }
27
+ }
28
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAC9C,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ;AAmBD,MAAM,OAAO,kBAAkB;IAGL;IAAtB,YAAsB,MAAwC;QAAxC,WAAM,GAAN,MAAM,CAAkC;IAAG,CAAC;IAE3D,SAAS,CAAC,GAAW;QACxB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAEM,YAAY,CAAC,GAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACtB,MAAM,IAAI,uBAAuB,CAAC,sCAAsC,GAAG,GAAG,CAAC,CAAC;SACnF;QACD,MAAM,EACF,UAAU,EACV,QAAQ,EACR,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,EACxC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB,GACzD,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,EAAE,cAAc,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,CAAY,CAAC;QAChE,QAAQ,IAAI,QAAQ,CAAC,QAAmB,CAAC,CAAC;QAC1C,OAAO,QAAmB,CAAC;IAC/B,CAAC;IAEM,kBAAkB,CAAuB,GAAW;QACvD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAiB,CAAC;IAClD,CAAC;CACJ"}
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/rxjs/dist/types/internal/Subscription.d.ts","../../../node_modules/rxjs/dist/types/internal/Subscriber.d.ts","../../../node_modules/rxjs/dist/types/internal/Operator.d.ts","../../../node_modules/rxjs/dist/types/internal/Observable.d.ts","../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/auditTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferCount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferToggle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/catchError.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineLatestAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineLatest.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineLatestWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatMapTo.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/debounceTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/defaultIfEmpty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/delayWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinctUntilChanged.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinctUntilKeyChanged.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/elementAt.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/endWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaustAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaustMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/findIndex.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../node_modules/rxjs/dist/types/internal/Subject.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/groupBy.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/ignoreElements.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/isEmpty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mapTo.d.ts","../../../node_modules/rxjs/dist/types/internal/Notification.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/flatMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeMapTo.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeScan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/ConnectableObservable.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/observeOn.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/onErrorResumeNext.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishBehavior.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishLast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishReplay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/raceWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/repeatWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/retryWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/refCount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sampleTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sequenceEqual.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/shareReplay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipLast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipUntil.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipWhile.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/startWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/subscribeOn.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchMapTo.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchScan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takeLast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takeUntil.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takeWhile.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throttleTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throwIfEmpty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeInterval.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeoutWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/toArray.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowCount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowToggle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/withLatestFrom.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zipAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zipWith.d.ts","../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/Action.d.ts","../../../node_modules/rxjs/dist/types/internal/Scheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/TestMessage.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/SubscriptionLog.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/SubscriptionLoggable.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/ColdObservable.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/HotObservable.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/AsyncScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/AsyncAction.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/VirtualTimeScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/TestScheduler.d.ts","../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/dom/animationFrames.d.ts","../../../node_modules/rxjs/dist/types/internal/BehaviorSubject.d.ts","../../../node_modules/rxjs/dist/types/internal/ReplaySubject.d.ts","../../../node_modules/rxjs/dist/types/internal/AsyncSubject.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/AsapScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/QueueScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/AnimationFrameScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/animationFrame.d.ts","../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../node_modules/rxjs/dist/types/internal/util/isObservable.d.ts","../../../node_modules/rxjs/dist/types/internal/lastValueFrom.d.ts","../../../node_modules/rxjs/dist/types/internal/firstValueFrom.d.ts","../../../node_modules/rxjs/dist/types/internal/util/ArgumentOutOfRangeError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/EmptyError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/NotFoundError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/ObjectUnsubscribedError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/SequenceError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/UnsubscriptionError.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/bindCallback.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/bindNodeCallback.d.ts","../../../node_modules/rxjs/dist/types/internal/AnyCatcher.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/combineLatest.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/forkJoin.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/fromEvent.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/fromEventPattern.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/onErrorResumeNext.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/throwError.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../node_modules/rxjs/dist/types/index.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/dom/fetch.d.ts","../../../node_modules/rxjs/dist/types/fetch/index.d.ts","../src/process-operators.ts","../src/client.ts","../src/client-msal.ts","../src/configurator.ts","../src/provider.ts","../../module/dist/types/types.d.ts","../../module/dist/types/initialize-modules.d.ts","../../module/dist/types/index.d.ts","../src/module.ts","../src/index.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/glob/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react-dom/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"89f78430e422a0f06d13019d60d5a45b37ec2d28e67eb647f73b1b0d19a46b72","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","2cc028cd0bdb35b1b5eb723d84666a255933fffbea607f72cbd0c7c7b4bee144",{"version":"abba1071bfd89e55e88a054b0c851ea3e8a494c340d0f3fab19eb18f6afb0c9e","affectsGlobalScope":true},{"version":"927cb2b60048e1395b183bf74b2b80a75bdb1dbe384e1d9fac654313ea2fb136","affectsGlobalScope":true},{"version":"d8996609230d17e90484a2dd58f22668f9a05a3bfe00bfb1d6271171e54a31fb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"4378fc8122ec9d1a685b01eb66c46f62aba6b239ca7228bb6483bcf8259ee493","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"d071129cba6a5f2700be09c86c07ad2791ab67d4e5ed1eb301d6746c62745ea4","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"e8c9f4e445a489991ca1a4232667de3ac36b07ba75ea335971fbeacf2d26fe67","affectsGlobalScope":true},{"version":"10bbdc1981b8d9310ee75bfac28ee0477bb2353e8529da8cff7cb26c409cb5e8","affectsGlobalScope":true},"9935be445530b0ac76c84ebf5337abf7555bb297ed8f922c17c986d67b266e29","e3fd84e6470b7e0679c4073ee5ce971d324182486dde5a49b67cae29168b51d2","dd8331d0a5190a4735ce6c152e420230188c4966067a756673c36dd7ba72b10e","90d88ef5d0e8d585711a8ec68c01d262818f3425fea095fea345b81ec8c09a36",{"version":"d57e7ff5243e0dcd04cf2edf9ad9520af40edd6eba31c14c3f405f0c437fa379","affectsGlobalScope":true},"0f882d4ae58f431454030289154feb0132e1b00ca5c3197c6b749bd098aed73a","7ff7f4632a6e7b6872fb1843f3c0df495b49840eae2a23c6fbc943f863da8c29","d267771149e172ade39e3ef96b4063209d5a7e8291702fe03983aa52f2b3d5f6","a78590b0efcef281236e3234520c348d63be1d4561b63b20e6c3b6fc18b37dfb","4d59c6a10b6c79a0927c79efa89b3c9f71d174ec14ec2792076cfd2330d0cf8e","a496f51933422872de22729b7a0233589325a1a1707cccd05cd914098944a202","fa43bf91102ffc4cfa22b73c7dca50023f99fc0bb15f7fb6201d98e31ab112dd","06a38095ad4368314366bc08f7cbc0fe274ef7321ec611005d0bdd9c6565e4d5","4599793db9aed9b84677f0ca1cf7ef3c69bb91cda4fe4329cbab778ca4d80a58","ad0028f96921778931fb8419d8de33b10908314fa99699de1702020f69235da1","ccd2a35321c0786bd3808042dc43b960cac13f2cc660ac37a0087e12bc97d2fc","df524ed01de4f19efb44bded628dbba9f840148be4b6cfe096e29d4b01589de3","2e3981b9cee48174ff85ae15019fd72933f7023a4ed05094740f7e6f7775623c","836ebdc3b9e4c006acc4f405b7e558e56d47830e05c40d991b1e27fe8bc91157","2cc6b617c6120ba64b5778ccd4b74c951adc3a3941bb6b39f47d48701c44af39","c37e5ffe99d9abda798a63668774c98be303c4d2d55fb877278ea19be422b505","7f7d6d42e5780e86f5b860a6f95179fae06a368b3af28c1c4230397c47021a59","4740a7d11ab3b381be0f269f1903fb3ff226a2fba55a01756b2997e67cd853f2","863dbc4e77f0353e6f9d6bc0e2b4622d5c07ff6f099ff66cafd7924b2ff4dd3f","bf034a18ed7e2a058f9e48c4c2480a124138fbd3586a80c77736a9ec079d12a8","f88758992a0bf13d095520aacd4381fb456ff121fb9aa184e6eb0eecb26cfadc","c249e9ae33bfcad97deec3c73c9ed2656e112fbdf22deace0b39724be6a5dcf0","cb72d9b9889416acdf57b5ccb0c9634d98257158e970bbe4c9a6724d4df4a320","d07ea953cfea0c4bd11641912846bd955f4fd26ad2b7b8a279d69c7ab9cb3add","feddabf6ab0eb191e721f0126f3db8688db97c77a1234968bde7a2d70c4ae513","dbbda62ea5f4d1f8b40cc2b7e2e2fae424abbb4715a04a3659cb8b317f7b228b","1eef6a64835182ce1f4934a366e937120e2e2107b12360436fdf35e99b3ae703","7f5cb3a03588ed46d52a6c2138315d930cd6ffb5c2134247cd07bc23cbea0b5a","7797f4c91491dcb0f21fa318fd8a1014990d5a72f8a32de2af06eb4d4476a3b5","f39fb20b83c3f9853c13d4ac95533760979d3023c0a5affe2c0a62d91ab3afd8","e4fca08aed8afb32bb8643d7469810bc8681115fe398e56a028df9e73b2d867f","2622639d24718ddfccc33a9a6daf5a2dd94d540ca41e3da00fe365d2c3f25db3","078966067552650f44ca96c68eddbb8539f30ee48a9ab3f24abdcf0a4037b535","2cd6250c43dba360377481c98d48db6ab1532a7527339edb0deffddc28ba66b1","7a9d600990fbe263a23daebed9ba1bbc5761e45679a7e2b2774a42756ef077a2","66bc155515fbea8c31a4efccbbac44de7c037b01f3aa00b76312cf7252725d30","5703288ddbfc4f7845cdbf80c6af17c8cde2a228757479796c2378b1662fcd48","0dfd353f0c16dd5107a7e0713dc52d0a2538293b0a0eac6000a017f9c0a60b56","9cd683a4663ef4d9c6486f1b8a34c73bdbc344d69490931bfe2fbcada12ab35b","42f6a409bad5259ece69df25d2b8ace2ff2ade45fe6386ee45203bdd9329f971","dc9a862a8f7868881ece56ae35d5d8ad3e7180446b5bbeec5e2c4641fcb6de01","2eb162efd6dba5972b9f8f85141d900d09da4fba23864f287f98f9890a05e95f","3f878fb5be9ebe8bd0ac5c22515d42b8b72d3745ef7617e73e9b2548ccbdf54b","e9ed562b7599c8c8c01595891480a30f9945a93a46456d22ee67ebf346b7538a","e7bf975a98cecefe2e8902fb7da9314675ecdce553aea722aaec97327668e18b","3d36f93648518338c875d9f77a8eab52905365483dbb3afe43ed68f1b712b67c","3ae3e33d80e1269b325986ea4c76d1a1e3e25f0813765fd1cebd1192161f4705","b4e32bd5e3b493e4ea6b5ec69a4c02aa1fdaa78e1df9a863bb07604de8f9d123","f6bd1aa152ca2b5064e06282ee3137842ae6825b6b09aa89a2ff063b976a56f3","bce2390bb3a76f8bf2ba4397c66db5277bf3e698ee614347e5eb79d7fc0942c6","fbdc8d7cc7daf4101bf567512c67fb990d8fe300e0ba7f213171192177f44aa0","298e0da6d858e39fc0c1eebfa4f5c8af487868c6f2e98c3ef800537d402fb5c3","3b6457fb3866562d279377f923cf3758c80ed7bfcc19414b72a24d0a98188e0c","4fb5d7efb3520b92c1b767ce18968057c5e70886d7fb3416c487231df9275af9","d5b7670b7c35122f0261be1cf5e40b048ea0713c22121b9837388ff9edefe1f9","b104960f4c5f807535ab43282356b2fe29c5d14a02035c623ac2012be3d5f76c","a35ca245eb852b70b20300546443abb1fcbac6e5066e4baaa092af4ea614d9b5","55da140feab55f10a538a9879a97c4be3df4934cbd679665c91a7263a86095e1","1a39e51e3362aec7d4edec9b317ff83916fe0471f86ddf2d3ef3af5952e87d9e","4b3f36b96f129a8e125c91d41a05f711e73b3285f80bceb3a1aecb13c97c4502","852779920fc4220bc42ec6d3c9b6164e23ea9371a788531b48b4005fe0cb4392","9a82e1b959524c1abfeeb024ee1a400234130a341f2b90a313ce4e37833b7dd2","515b97cede17d91c9669cc1c7fb7a8a5f0a5f2d8999f925a5f70b4ebea93723e","08e8e57241f874bdbf69ab2b65cb0ee18b4183d5c9452937da49b934fc679c4b","7a5bfc619b1ad803f11c50668574b16baba8f0e8ce1c3e8ebf16421e910474d2","644addd4811636da491c9546654bc005ba8599f23df6d731d91eba86f3137fc2","a9249493114b181814728cbfeb7234738193a4169b654ec4705d48d7a4d25222","aad6f20d6eb01192ae02294361faa6e1f320d72447b56f433db853bbe80b15ca","876fbedec2f494eb6f834ce8636b07d581c657d205d81a3ba894eff0facc6b84","58527aa45f11c9b259a6a9d78b397f35020bfbb104f4d3bb177039b5c18146bd","91b8b61d45b5d22f3458a4ac82e03b464a0926bab795a920fe0eca805ec476eb","2744532f8fb960eb78497ac660db719f503a10c801f87131d26fd9cbef75dcef","6884287c54891ac19cfbe056f3ed29cab1732a00dec69bd3b140ce62c11783c6","16d0eccf90a23873eabe9491160afc3239e3a109061c200602f3659e5b6acd6a","8d5530ed0d3897c2a81b5b812d3a7c2506cce74668620f0a180f942fb89a3588","5eda1ac2fdcef5649f09a7b79418ade8130fd6a9eca473617e8d70872edcc0b9","661f322e45545a554e4ffc38db6c4068a66e1323baf66acb0d8a9fa28195a669","91d70dce48c2a2bb55f0b851cf1bdba4202f107f1e8fdf45f94ff6be4b8e8f99","ce978e20a6f26f606b535f0d6deb384ae6a73f8d0bd0dfca0925f5317cad1f25","f2d3567210ca4d559d8297d6c4402599c93e3bc7485054192d38db5e132fbc0a","887d8058aeeade45984fdb8696147078bc630d3fea15ab2b7baacde0fe281fb7","ad27aa59d346179ac449bd3077d245f213152879e4027356306ccf1722d61d51","ea546a7ed9eaa71ba78d4d392509dadea4bafed283269dd6c4b09e7d8824e986","4ec0f2a141a9ae7d3557b8efe630ac2021bc3a9ac61238b59293f4cf2f196e82","b2db743c71652e03c52d51445af58d0af3316231faa92b66018b29c7ba975f6c","0863a5876c85fbaffbb8ec8aeda8b5042deb6932616139706d2b82cde9d3f7c7","1294b8ecdd212362323f349dd83b5c94ea77bfee4dad24fc290980a3c8af6ce3","ba9c46725e2a0bd9df59d3a1e801cc60f90db3ef7817131c53945dce2b8c0c56","281d373eeabf80c4851f8de991e6abe4d385c30379d80897bbc3df3dcac99cee","624c5dce95672d9dcca40d9d9d82ef855f5f902292f43aa265cc8fd963c6ce84","8a48d9c6184992d1c3ed5daa55f83d708c37582916926a5555a900608f804b60","605dd288c636cf9b5317fe76dec75d3c7fb855fdcd3ee8cb4fea7d7091ca6fb4","f3c07ccef09549f40dbe63ef128810933747bf76af138c18f2f13d1580a81bfe","b5a615b0ad865ffa562980a10bda162ac1744fd363b4edc2cfc664222071cbcf","bbccd721363897950a55ce09529503f25a69522e5c91a22679b66e941e5f8654","d3a1e70795c38d7851b6e4f3b441c5ffdae171d6e2576a2204b7d79059aeea66","d7b8d41887c5fccfe19802c4336d34348b752abf0d98839575699d71deff60be","063fe3004728b8516a4d799ee16f9a71801ba24e0443dd98638cef1bd4353a7c","b8a0236f47d9037efdaf93da602415ae425dababe097fc92f83fd47ce9aaa69f","fab7912fc3ff45fce2f5d5febc9494c4d0a85d6c63fff68f21e4669c32eaacb9","71d8638ed497e5cdd8229c72ac2b07548feb2e30dc3fcd206455b8d1cde27641","b20bc124abd8ee572d0d756713ff987b116cdae908a6fcbc40e80d4b999f56b4","a599f3f450ad62c3fdc0c3fd25cddcc9332ffb44327087947d48914a8da81364","645dff895168aa82350c9aa60aa0b3621b84289fef043be842f45a9c6c0ac6e2","8f527b59a69e0b0f877fa6b2bb950ce96a43de9463ce5a3c5103316081de75e1","09d2fdca6ea6c135897a26976ad3c0db724adaf23ef4e38ad852b1d8efef1ae6","15de5b7739bf7e40213a200853bf78455ee5958af08eda786605a54a7f25ade6","f3acb439e08f0c2c78c712a876dc6c2080302c46916f1d63b7dbe509616ce9ae","37862e711637ebd927907a82cbf0143ea30e95eb165df554926c43936b1d77a9","89e253db2c2cc9a510c521f14dd2b1aae4de2556ee5159ad8d118d3587e3a880","3d0a172cee184a0f4111a7bd7fbb8729af3f54b30c06a2677d85c20ea9c811ab","d6a07e5e8dee6dc63c7ecd9c21756babf097e1537fbc91ddfec17328a063f65d","6fdc88b1287c276b55b7f7c4c7b49587813c763eea9751ce0baf0a7e61cd5d89","6a02443704052768bd021f24783aa104b02ae4444e9b735317bf13c6b857a11e","37987b0fe9800cf25473c882ce07bccdab2763c5681c1a2d16816aead46aa8d1","c84c03c721154068e1a60d83e9e85819bd3ef70b824ac2edc498aa31c06e5781","c23a403716784b53cf6ce9ffff9dcdb959b7cacdf115294a3377d96b6df1e161","c96fb6a0c1e879f95634ab0ff439cbb6fff6227b26bbf0153bef9ed0aabba60d","db936079fe6396aad9bf7ad0479ffc9220cec808a26a745baebb5f9e2ef9dbc7","06bc0b9cc7bf0b92534f1517fe5adde1f23f60cc6cc5c59f8e1c65db48a40067","919a753b0cbb12ccc606c62e2d34884d75a48ba19b1dda497c72621b11dac088","2c27e33ee0bf722988da00abd582cc9b806ce3fd9153a864800a339ad13f3fcf","92d7b3a5aa5dc872e54cbad2a7094b3ea4f72c7901de1d07b4c334ff658297f0","7a52922b38e9686d5bdc6e75774929eec6688d26c1dfe4a03ddec77ede468e87","aa5efca2833d89b55248f1889a6433dab1b1f41768e9a75f8ce35f9bf56c5ec4","0ba3b34cbe39c6fe3ba89f7f6559f10c05f78cd5368477d9c95d25c390b65931","4e82f599b0cff3741e5a4f45889d04753a8bb3b0f95d0f3328bcfbb4f995b2a1","8354bb3a9465dc2e9ccb848564945e0818d3698b2844cfd69b0435080871fd25","1218398da7c8dc4add10bdb3aa2856aad54b123d847eaf574d1d694ac269bfb5","189014f3213ee7457dbeea04dca10ca5d9ed2062cd39641aca5f3b4c75de9d99","b637cd92688a6cdf4f8f184ff529dc2bc7f15692828e2c0c66a60e6972f400c7","7061e83d6792897077bcac039fccf7325234004769f591c63a8cf8478bf551bb","f2d2c194c4c6ba8cfbacf893e371cd8482102b368c1a5ea4771fc956bd0a6a19","277a358d61376fce7ac3392402909c96cf6a0a613146549fc0165ccff953e012","50614c808e099a1d4413786f3783d9eeaaa74b267f2c87fcf8a893287e91c301","f4cb6530f248e87cefa74ef623206fec805f6252f885f8e14ef3d1a5872cef2d","38c332caadd8391566552395d592076470a5e7423f70964620eabf05c02907cd","eb17b5bf1fc763a644c21d76572c0e41e351c3f6dfcde649428d5d829f7294d2","cb124162c87b29ff5121e3ee5bb29c782f101e0135d6c2644ab1b31d530a435e","406d6f5d3707c488362fb40d1c1f8a7b0a42b70554b427160185d93e430228f5","2e9776410c5bc290d9432a9215c67398a273e514a79b9e15f32ecddfde8a03be","b09f944ac37276adf242685b88e47123e958cf3072d7d97ba0881c5a29b8599b","c718475bca06806cc243e77777641cb67ba68f2c57321a4773ebb47760a3bcf2","96e6bf811343caab5112b68880905c5d20d9257054afac6c18e718a4c549ed27","a2793bc73ba63ca7d259cb0f0b61d0023820170d08a1f9715006c8042d060165","d5011b38165771fdf75a9a06d6d379a1fc7edd7eb695ebdc52319fb6e3c6d81f","88417fb19d339304e9616a38ea513251047c9e300c81f9467fc317df8a582e71","3e8e2d132f726dddbda57819f5391504e585cb3beab6b32203064e7e40618583","6e23627cd3f10418b5b2db102fdcf557b75f2837f266d88afac6b18f333bb1bc","866046dcea88f23d766a65487ee7870c4cf8285a4c75407c80a5c26ed250ef8d","019f4f1cbc781cc15c6173f8be5ef907405722194ab297127b3c3426e5368339","41f4413eac08210dfc1b1cdb5891ad08b05c79f5038bdf8c06e4aedaa85b943d","c79f1c8b51d8475dde8d2973f740f43ca34b1f0a95d93649cd76c1ee20abba19","35f0d2bd2c5c05c0cb19095bf5b7c44365b1c88efe6285370855b90417277a64","8264b129f4c4eb4799703f8e5ee2223a184d1cdbfc782158b1f40a88a4435a1f","527ddda6f8be1279f3294714534c49d6e90f238cea325519882ebf88d7ec5bd2","b23877792e8bd00271d0ec5d401b68e4228540a4316de3d9dfb697b955c161a4","35b2eb1de01633db90d41abe93730b29984856fcc840b4c2801bfd3761a2097b","1fd5a6eb7fc5159b80a848cbe718eae07a97998c5e5382c888904248cf58e26f","2a6b4655a6edce9e07c7d826848f72533c9991d40bc36e3f85558ad20e87ce2d","1c1a66bd3b9958921f425389f6b430b7b2e030ebe56fe72d527bc6a894f30b12","d505055b8fadd42da235c85947911d8d198ad70c5f5775991e7821d4f89c90f5","8b5a5852099dca7d7e7a7cef6d681dc1586aafacdb963ca180fe5cabbfa3a24b","0d1aa3341d1ad2064adada71c5d01a2f572e4aac09410e5616d90894105a0eb9","52494ca5a884da3bf11b8165ab31429715f0970d9c6383240c5666f4bd713e01","162fafa2291749df2ab4516854aa781fcee1d9fca2ecd85fb48ae794c0700ce2","c35cb1bb0ee46c4e97e14a0803d6710ba88202eaf71a8913d888d28e7474a297","d2ffe8356f060b88c1c5cf1fa874a4b779fb87fd1977084876e8be9eab6bf485","c76053984b39150d00ade365b096a8bc21a4a7f2ee9e0a926711b00f8e7bf701","956b510767e3d6f362ea5800510635197723737af5d19ae07ee987ea4a90bfa5","cd1a8ff61f5063d7e6e2094e25d35c90b499961b63911f2f4ae0ff5555c2b4d7","1cf09b5945779e9bc75c4dcd805fb149c28fc90da3335186ef620647a3c540e1","9cdc0b9a313090ec45b34ea1eb02fbace433f509e753634b043e9b83038261e6","c93474cff0088351a65d3cad24037874a26a5371a48528563e56efe31cb3d8bb","b4580df8ea7f62d7b06588001952bf69426e6b03cf3d2569f5f608e45f29ba08","de27f7bb9be9d8a2b4557ec6503b8a315f74d598ce9a0ab81b5ed5610e1a8e81","fe3c378dcefa7ed8b21bd6822f5d7838b1119836da75ae1e1fb485d27b8ffb62","7365bf3333d4277b6fe374ed055624e5ec080dbb919e2d78f1cb75a3f1a4b4f6","a5fbf3bc5c16ab5c84465ba7a043a4bee4c2b20bd3633d50d80118a3844edbaf","0923e4ac8c894ad507bd2daee0df66b699de88467201381ece011ba5a080e1ff","e4f6626f827ea509255647e1b6db82145a2eb1a6b46202655e7d9bb19145c33b","26e23972c40f378f0301d8d7025ea895557c2865a1a31c8ea9c3fff0dbc27075","bfddbff94132b423ad1d71bdbefb1d388c21a74ac1a8742df9324e5bf6109058","908ce0ec0787b7278b5b546473ac2f9c9fad647c506c4a3ea94cef87c637fda8","d0357b39bc8d45ea19676175bf19655b21557d1673e3fa564cde0e48a3b97bac","e8ba1d57977928df7104fc19bd068f1ae5ca30b1aeba767216687666f6452501","92dcb04b0808f9a19032e020181423074c76b6e8286abd0eb6721007718b6558","0cc92893f339806d4117803e61e3f4d78c085ba09694e81781df87b89ea95833","21a22049f781144025fee4cf643f8c6dae120820acb5181e48389e11984daef1","b6f296c99888b76049599cd3a120d3674d6957315d6c4a26de499342abcb7a44","d52af18862f6916545765d2e7fc50625a608dce68800862ce433bb759fa8c914","6c8c8ca619c294eae05e9b430705758cbd87b829f96ad4a96c76890392b976f4","ec015cf58ad477bb3739719532191e4ed91291722a44f1f1d8e45f956ee0d794","63931ab30f207fcdb5f215c3e9e7f29b1ecc455e69d38d891a045ec21b590834","d17a68d6f979f416800c5ac862e22895a9c947c1bedf28b003960bc1de19687a","0cba3a5d7b81356222594442753cf90dd2892e5ccfe1d262aaca6896ba6c1380","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"c2ab70bbc7a24c42a790890739dd8a0ba9d2e15038b40dff8163a97a5d148c00","affectsGlobalScope":true},"422dbb183fdced59425ca072c8bd09efaa77ce4e2ab928ec0d8a1ce062d2a45a",{"version":"2a801b0322994c3dd7f0ef30265d19b3dd3bae6d793596879166ed6219c3da68","affectsGlobalScope":true},"1dab5ab6bcf11de47ab9db295df8c4f1d92ffa750e8f095e88c71ce4c3299628","f71f46ccd5a90566f0a37b25b23bc4684381ab2180bdf6733f4e6624474e1894",{"version":"54e65985a3ee3cec182e6a555e20974ea936fc8b8d1738c14e8ed8a42bd921d4","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","bcc8caf03ee65fe8610d258752f255fbdddbb2e4de7b6c5628956a5a0d859ec8","34e5de87d983bc6aefef8b17658556e3157003e8d9555d3cb098c6bef0b5fbc8","cc0b61316c4f37393f1f9595e93b673f4184e9d07f4c127165a490ec4a928668","f27371653aded82b2b160f7a7033fb4a5b1534b6f6081ef7be1468f0f15327d3","c762cd6754b13a461c54b59d0ae0ab7aeef3c292c6cf889873f786ee4d8e75c9","f4ea7d5df644785bd9fbf419930cbaec118f0d8b4160037d2339b8e23c059e79",{"version":"c28e5baab1b53377c90d12970e207a2644bc3627840066449e37e2a59125d07e","affectsGlobalScope":true},"7a5459efa09ea82088234e6533a203d528c594b01787fb90fba148885a36e8b6","ae97e20f2e10dbeec193d6a2f9cd9a367a1e293e7d6b33b68bacea166afd7792","fce6a1a1553ff7d54ffb8bb3ae488c9cb5f2f4f4e52212c1abe40f544819ef35","ad41bb744149e92adb06eb953da195115620a3f2ad48e7d3ae04d10762dae197","bf73c576885408d4a176f44a9035d798827cc5020d58284cb18d7573430d9022","7ae078ca42a670445ae0c6a97c029cb83d143d62abd1730efb33f68f0b2c0e82",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"5d0a9ea09d990b5788f867f1c79d4878f86f7384cb7dab38eecbf22f9efd063d","12eea70b5e11e924bb0543aea5eadc16ced318aa26001b453b0d561c2fd0bd1e","08777cd9318d294646b121838574e1dd7acbb22c21a03df84e1f2c87b1ad47f2","08a90bcdc717df3d50a2ce178d966a8c353fd23e5c392fd3594a6e39d9bb6304",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"2a12d2da5ac4c4979401a3f6eaafa874747a37c365e4bc18aa2b171ae134d21b","002b837927b53f3714308ecd96f72ee8a053b8aeb28213d8ec6de23ed1608b66","1dc9c847473bb47279e398b22c740c83ea37a5c88bf66629666e3cf4c5b9f99c","a9e4a5a24bf2c44de4c98274975a1a705a0abbaad04df3557c2d3cd8b1727949","00fa7ce8bc8acc560dc341bbfdf37840a8c59e6a67c9bfa3fa5f36254df35db2","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"cfe724f7c694aab65a9bdd1acb05997848c504548c9d4c71645c187a091cfa2a","5f0ed51db151c2cdc4fa3bb0f44ce6066912ad001b607a34e65a96c52eb76248",{"version":"3345c276cab0e76dda86c0fb79104ff915a4580ba0f3e440870e183b1baec476","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","e383ff72aabf294913f8c346f5da1445ae6ad525836d28efd52cbadc01a361a6","f52fbf64c7e480271a9096763c4882d356b05cab05bf56a64e68a95313cd2ce2","59bdb65f28d7ce52ccfc906e9aaf422f8b8534b2d21c32a27d7819be5ad81df7","1835259a20b9fa6b1882931375b69ae5978195f2b139b4e0db51ec8319261649","b52cd693219a63dd21282ac99a7bf55f77cbe8a91f097968856419cc2e05f017","3aff9c8c36192e46a84afe7b926136d520487155154ab9ba982a8b544ea8fc95","a880cf8d85af2e4189c709b0fea613741649c0e40fffb4360ec70762563d5de0","85bbf436a15bbeda4db888be3062d47f99c66fd05d7c50f0f6473a9151b6a070","9f9c49c95ecd25e0cb2587751925976cf64fd184714cb11e213749c80cf0f927","f0c75c08a71f9212c93a719a25fb0320d53f2e50ca89a812640e08f8ad8c408c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"267af67ea520cabd16402522756b19ac63d9e2c1c86e7c4d1ddeb991c32e12c9","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","0359682c54e487c4cab2b53b2b4d35cc8dea4d9914bc6abcdb5701f8b8e745a4","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380",{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},"381899b8d1d4c1be716f18cb5242ba39f66f4b1e31d45af62a32a99f8edcb39d","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"1bc82f5b3bb93df76d19730c84467b0b346187198537135d63a672956f323720","affectsGlobalScope":true},"45a63e17814c570ea59407f231ef9c561510bd6edb36f17479b09b44619496c6","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57","f7e133b20ee2669b6c0e5d7f0cd510868c57cd64b283e68c7f598e30ce9d76d2","45627c7d24633686b0274d9402652930ba2e4fe74df04f114393ae121d1e8afe"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declarationDir":"./types","esModuleInterop":true,"module":99,"outDir":"./esm","preserveConstEnums":true,"removeComments":true,"rootDir":"../src","sourceMap":true,"strict":true,"stripInternal":true,"target":99},"fileIdsList":[[262,263,290,297,298],[290],[247,290],[250,290],[251,256,290],[252,262,263,270,279,289,290],[252,253,262,270,290],[254,290],[255,256,263,271,290],[256,279,286,290],[257,259,262,270,290],[258,290],[259,260,290],[261,262,290],[262,290],[262,263,264,279,289,290],[262,263,264,279,290],[265,270,279,289,290],[262,263,265,266,270,279,286,289,290],[265,267,279,286,289,290],[247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296],[262,268,290],[269,289,290],[259,262,270,279,290],[271,290],[272,290],[250,273,290],[274,288,290,294],[275,290],[276,290],[262,277,290],[277,278,290,292],[262,279,280,281,290],[279,281,290],[279,280,290],[282,290],[283,290],[262,284,285,290],[284,285,290],[256,270,279,286,290],[287,290],[270,288,290],[251,265,276,289,290],[256,290],[279,290,291],[290,292],[290,293],[251,256,262,264,273,279,289,290,292,294],[279,290,295],[290,308],[290,304,305,306,307],[290,311],[235,290],[47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,103,104,105,106,107,108,109,110,111,112,114,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,166,167,168,170,178,180,181,182,183,184,185,187,188,190,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,290],[92,290],[50,51,290],[47,48,49,51,290],[48,51,290],[51,92,290],[47,51,169,290],[49,50,51,290],[47,51,290],[51,290],[50,290],[47,50,92,290],[48,50,51,207,290],[50,51,207,290],[50,215,290],[48,50,51,290],[60,290],[83,290],[104,290],[50,51,92,290],[51,99,290],[50,51,92,110,290],[50,51,110,290],[51,151,290],[47,51,170,290],[176,177,290],[47,51,169,176,290],[169,170,177,290],[176,290],[47,51,176,177,290],[191,290],[186,290],[189,290],[48,50,170,171,172,173,290],[92,170,171,172,173,290],[170,172,290],[50,171,172,174,175,178,290],[47,50,290],[51,193,290],[52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,97,98,100,101,102,103,104,105,106,107,108,109,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,290],[179,290],[238,290],[168,234,236,237,290],[238,239,240,241,245,290],[239,240,241,244,245,290],[168,234,290],[238,240,290],[242,243,290],[242,290]],"referencedMap":[[299,1],[300,2],[298,2],[301,2],[247,3],[248,3],[250,4],[251,5],[252,6],[253,7],[254,8],[255,9],[256,10],[257,11],[258,12],[259,13],[260,13],[261,14],[262,15],[263,16],[264,17],[249,2],[296,2],[265,18],[266,19],[267,20],[297,21],[268,22],[269,23],[270,24],[271,25],[272,26],[273,27],[274,28],[275,29],[276,30],[277,31],[278,32],[279,33],[281,34],[280,35],[282,36],[283,37],[284,38],[285,39],[286,40],[287,41],[288,42],[289,43],[290,44],[291,45],[292,46],[293,47],[294,48],[295,49],[302,2],[303,2],[304,2],[309,50],[305,2],[308,51],[310,2],[307,2],[311,2],[312,52],[306,2],[236,53],[234,54],[207,2],[185,55],[183,55],[99,56],[50,57],[49,58],[184,59],[170,60],[92,61],[48,62],[47,63],[233,58],[198,64],[197,64],[110,65],[205,56],[206,56],[208,66],[209,56],[210,63],[211,56],[182,56],[235,56],[212,56],[213,67],[214,56],[215,64],[216,68],[217,56],[218,56],[219,56],[220,56],[221,64],[222,56],[223,56],[224,56],[225,56],[226,69],[227,56],[228,56],[229,56],[230,56],[231,56],[52,63],[53,63],[54,56],[55,63],[56,63],[57,63],[58,63],[59,56],[61,70],[62,63],[60,63],[63,63],[64,63],[65,63],[66,63],[67,63],[68,63],[69,56],[70,63],[71,63],[72,63],[73,63],[74,63],[75,56],[76,63],[77,56],[78,63],[79,63],[80,63],[81,63],[82,56],[84,71],[83,63],[85,63],[86,63],[87,63],[88,63],[89,69],[90,56],[91,56],[105,72],[93,73],[94,63],[95,63],[96,56],[97,63],[98,63],[100,74],[101,63],[102,63],[103,63],[104,63],[106,63],[107,63],[108,63],[109,63],[111,75],[112,63],[113,63],[114,63],[115,56],[116,63],[117,76],[118,76],[119,76],[120,56],[121,63],[122,63],[123,63],[128,63],[124,63],[125,56],[126,63],[127,56],[129,56],[130,63],[131,63],[132,56],[133,56],[134,63],[135,56],[136,63],[137,63],[138,56],[139,63],[140,63],[141,63],[142,63],[143,63],[144,63],[145,63],[146,63],[147,63],[148,63],[149,63],[150,63],[151,63],[152,77],[153,63],[154,63],[155,63],[156,63],[157,63],[158,63],[159,56],[160,56],[161,56],[162,56],[163,56],[164,63],[165,63],[166,63],[167,63],[232,56],[169,78],[191,79],[186,79],[177,80],[176,81],[189,82],[178,83],[192,84],[187,85],[188,82],[190,86],[181,2],[174,87],[175,88],[172,2],[173,89],[171,63],[179,90],[51,91],[199,2],[200,2],[201,2],[202,2],[203,2],[204,2],[193,2],[196,64],[195,2],[194,92],[168,93],[180,94],[10,2],[11,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[41,2],[37,2],[38,2],[39,2],[40,2],[8,2],[45,2],[42,2],[43,2],[44,2],[1,2],[9,2],[46,2],[239,95],[238,96],[240,95],[246,97],[245,98],[237,99],[241,100],[244,101],[243,102],[242,2]],"exportedModulesMap":[[299,1],[300,2],[298,2],[301,2],[247,3],[248,3],[250,4],[251,5],[252,6],[253,7],[254,8],[255,9],[256,10],[257,11],[258,12],[259,13],[260,13],[261,14],[262,15],[263,16],[264,17],[249,2],[296,2],[265,18],[266,19],[267,20],[297,21],[268,22],[269,23],[270,24],[271,25],[272,26],[273,27],[274,28],[275,29],[276,30],[277,31],[278,32],[279,33],[281,34],[280,35],[282,36],[283,37],[284,38],[285,39],[286,40],[287,41],[288,42],[289,43],[290,44],[291,45],[292,46],[293,47],[294,48],[295,49],[302,2],[303,2],[304,2],[309,50],[305,2],[308,51],[310,2],[307,2],[311,2],[312,52],[306,2],[236,53],[234,54],[207,2],[185,55],[183,55],[99,56],[50,57],[49,58],[184,59],[170,60],[92,61],[48,62],[47,63],[233,58],[198,64],[197,64],[110,65],[205,56],[206,56],[208,66],[209,56],[210,63],[211,56],[182,56],[235,56],[212,56],[213,67],[214,56],[215,64],[216,68],[217,56],[218,56],[219,56],[220,56],[221,64],[222,56],[223,56],[224,56],[225,56],[226,69],[227,56],[228,56],[229,56],[230,56],[231,56],[52,63],[53,63],[54,56],[55,63],[56,63],[57,63],[58,63],[59,56],[61,70],[62,63],[60,63],[63,63],[64,63],[65,63],[66,63],[67,63],[68,63],[69,56],[70,63],[71,63],[72,63],[73,63],[74,63],[75,56],[76,63],[77,56],[78,63],[79,63],[80,63],[81,63],[82,56],[84,71],[83,63],[85,63],[86,63],[87,63],[88,63],[89,69],[90,56],[91,56],[105,72],[93,73],[94,63],[95,63],[96,56],[97,63],[98,63],[100,74],[101,63],[102,63],[103,63],[104,63],[106,63],[107,63],[108,63],[109,63],[111,75],[112,63],[113,63],[114,63],[115,56],[116,63],[117,76],[118,76],[119,76],[120,56],[121,63],[122,63],[123,63],[128,63],[124,63],[125,56],[126,63],[127,56],[129,56],[130,63],[131,63],[132,56],[133,56],[134,63],[135,56],[136,63],[137,63],[138,56],[139,63],[140,63],[141,63],[142,63],[143,63],[144,63],[145,63],[146,63],[147,63],[148,63],[149,63],[150,63],[151,63],[152,77],[153,63],[154,63],[155,63],[156,63],[157,63],[158,63],[159,56],[160,56],[161,56],[162,56],[163,56],[164,63],[165,63],[166,63],[167,63],[232,56],[169,78],[191,79],[186,79],[177,80],[176,81],[189,82],[178,83],[192,84],[187,85],[188,82],[190,86],[181,2],[174,87],[175,88],[172,2],[173,89],[171,63],[179,90],[51,91],[199,2],[200,2],[201,2],[202,2],[203,2],[204,2],[193,2],[196,64],[195,2],[194,92],[168,93],[180,94],[10,2],[11,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[41,2],[37,2],[38,2],[39,2],[40,2],[8,2],[45,2],[42,2],[43,2],[44,2],[1,2],[9,2],[46,2],[239,95],[238,96],[240,95],[246,97],[245,98],[237,99],[241,100],[244,101],[243,102],[242,2]],"semanticDiagnosticsPerFile":[299,300,298,301,247,248,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,249,296,265,266,267,297,268,269,270,271,272,273,274,275,276,277,278,279,281,280,282,283,284,285,286,287,288,289,290,291,292,293,294,295,302,303,304,309,305,308,310,307,311,312,306,236,234,207,185,183,99,50,49,184,170,92,48,47,233,198,197,110,205,206,208,209,210,211,182,235,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,52,53,54,55,56,57,58,59,61,62,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,84,83,85,86,87,88,89,90,91,105,93,94,95,96,97,98,100,101,102,103,104,106,107,108,109,111,112,113,114,115,116,117,118,119,120,121,122,123,128,124,125,126,127,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,232,169,191,186,177,176,189,178,192,187,188,190,181,174,175,172,173,171,179,51,199,200,201,202,203,204,193,196,195,194,168,180,10,11,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,41,37,38,39,40,8,45,42,43,44,1,9,46,239,238,240,246,245,237,241,244,243,242]},"version":"4.5.4"}
@@ -0,0 +1,9 @@
1
+ import { HttpClient, HttpRequestInit } from './client';
2
+ declare type RequestInitMsal = HttpRequestInit & {
3
+ scopes?: string[];
4
+ };
5
+ export declare class HttpClientMsal extends HttpClient<RequestInitMsal> {
6
+ defaultScope: string[];
7
+ fetch(init: Omit<RequestInitMsal, 'uri'> | string): ReturnType<HttpClient['fetch']>;
8
+ }
9
+ export default HttpClientMsal;
@@ -0,0 +1,41 @@
1
+ import { Observable, ObservableInput, Subject } from 'rxjs';
2
+ import { ProcessOperators } from './process-operators';
3
+ export declare type HttpRequestInit = RequestInit & {
4
+ uri: string;
5
+ path: string;
6
+ };
7
+ export declare class HttpRequestHandler<T extends HttpRequestInit = HttpRequestInit> extends ProcessOperators<T> {
8
+ setHeader(key: string, value: string): HttpRequestHandler<T>;
9
+ }
10
+ export declare type HttpClientCreateOptions<T extends HttpRequestInit = HttpRequestInit> = {
11
+ requestHandler: HttpRequestHandler<T>;
12
+ };
13
+ export declare type HttpResponseHandler<T> = (response: Response) => Promise<T>;
14
+ export interface IHttpClient<TRequest extends HttpRequestInit = HttpRequestInit, TResponse = Response> {
15
+ uri: string;
16
+ readonly requestHandler: HttpRequestHandler<TRequest>;
17
+ readonly responseHandler: HttpResponseHandler<TResponse>;
18
+ request$: Observable<TRequest>;
19
+ response$: Observable<TResponse>;
20
+ fetch(init: Omit<TRequest, 'uri'> | string): Observable<TResponse>;
21
+ fetchAsync(init: Omit<TRequest, 'uri'> | string): Promise<TResponse>;
22
+ abort(): void;
23
+ }
24
+ export declare class HttpClient<TRequest extends HttpRequestInit = HttpRequestInit, TResponse = Response> implements IHttpClient<TRequest, TResponse> {
25
+ uri: string;
26
+ readonly requestHandler: HttpRequestHandler<TRequest>;
27
+ readonly responseHandler: HttpResponseHandler<TResponse>;
28
+ protected _request$: Subject<TRequest>;
29
+ protected _response$: Subject<TResponse>;
30
+ protected _abort$: Subject<void>;
31
+ get request$(): Observable<TRequest>;
32
+ get response$(): Observable<TResponse>;
33
+ constructor(uri: string, options?: HttpClientCreateOptions<TRequest>);
34
+ protected _init(): void;
35
+ fetch(init: Omit<TRequest, 'uri'> | string): Observable<TResponse>;
36
+ fetchAsync(init: Omit<TRequest, 'uri'> | string): Promise<TResponse>;
37
+ abort(): void;
38
+ protected _prepareRequest(init: TRequest): ObservableInput<TRequest>;
39
+ protected _prepareResponse(response: Response): ObservableInput<TResponse>;
40
+ protected _resolveUrl(path: string): string;
41
+ }
@@ -0,0 +1,31 @@
1
+ import { HttpRequestHandler, HttpRequestInit, IHttpClient } from './client';
2
+ interface HttpClientConstructorOptions<TInit extends HttpRequestInit> {
3
+ requestHandler: HttpRequestHandler<TInit>;
4
+ }
5
+ interface HttpClientConstructor<TClient extends IHttpClient> {
6
+ new (uri: string, options: HttpClientConstructorOptions<HttpClientRequestInitType<TClient>>): TClient;
7
+ }
8
+ interface HttpClientOptions<TClient extends IHttpClient> {
9
+ defaultUri?: string;
10
+ ctor?: HttpClientConstructor<TClient>;
11
+ onCreate?: (client: TClient) => void;
12
+ requestHandler?: HttpRequestHandler<HttpClientRequestInitType<TClient>>;
13
+ }
14
+ declare type HttpClientRequestInitType<T extends IHttpClient> = T extends IHttpClient<infer U> ? U : never;
15
+ export interface IHttpClientConfigurator<TClient extends IHttpClient = IHttpClient> {
16
+ readonly clients: Record<string, HttpClientOptions<TClient>>;
17
+ readonly defaultHttpClientCtor: HttpClientConstructor<TClient>;
18
+ readonly defaultHttpRequestHandler: HttpRequestHandler<HttpClientRequestInitType<TClient>>;
19
+ configureClient(name: string, uri: string): HttpClientConfigurator<TClient>;
20
+ configureClient<T extends TClient>(name: string, args: HttpClientOptions<T>): HttpClientConfigurator<TClient>;
21
+ configureClient<T extends TClient>(name: string, onCreate: (client: T) => void): HttpClientConfigurator<TClient>;
22
+ }
23
+ export declare class HttpClientConfigurator<TClient extends IHttpClient> implements IHttpClientConfigurator<TClient> {
24
+ protected _clients: Record<string, HttpClientOptions<TClient>>;
25
+ get clients(): Record<string, HttpClientOptions<TClient>>;
26
+ readonly defaultHttpClientCtor: HttpClientConstructor<TClient>;
27
+ readonly defaultHttpRequestHandler: HttpRequestHandler<HttpClientRequestInitType<TClient>>;
28
+ constructor(client: HttpClientConstructor<TClient>);
29
+ configureClient<T extends TClient>(name: string, args: string | HttpClientOptions<T> | HttpClientOptions<T>['onCreate']): HttpClientConfigurator<TClient>;
30
+ }
31
+ export default HttpClientConfigurator;
@@ -0,0 +1,6 @@
1
+ export { HttpClient, IHttpClient } from './client';
2
+ export { HttpClientMsal } from './client-msal';
3
+ export * from './configurator';
4
+ export * from './provider';
5
+ export * from './module';
6
+ export { default } from './module';
@@ -0,0 +1,13 @@
1
+ import { HttpClientMsal } from './client-msal';
2
+ import { IHttpClientConfigurator } from './configurator';
3
+ import { IHttpClientProvider } from './provider';
4
+ import type { Module, ModulesConfigType } from '@equinor/fusion-framework-module';
5
+ export declare type HttpModule = Module<'http', IHttpClientProvider<HttpClientMsal>, IHttpClientConfigurator<HttpClientMsal>>;
6
+ export declare const module: HttpModule;
7
+ export declare const setupHttpModule: (config: ModulesConfigType<[HttpModule]>, callback: (config: IHttpClientConfigurator<HttpClientMsal>) => void) => void | Promise<void>;
8
+ declare module '@equinor/fusion-framework-module' {
9
+ interface Modules {
10
+ http: HttpModule;
11
+ }
12
+ }
13
+ export default module;
@@ -0,0 +1,9 @@
1
+ import { Observable } from 'rxjs';
2
+ export declare type ProcessOperator<T, R = T> = (request: T) => R | void | Promise<R | void>;
3
+ export declare class ProcessOperators<T> {
4
+ protected _operators: Record<string, ProcessOperator<T>>;
5
+ add(key: string, operator: ProcessOperator<T>): ProcessOperators<T>;
6
+ set(key: string, operator: ProcessOperator<T>): ProcessOperators<T>;
7
+ get(key: string): ProcessOperator<T>;
8
+ process(request: T): Observable<T>;
9
+ }
@@ -0,0 +1,17 @@
1
+ import { HttpClient } from './client';
2
+ import { IHttpClientConfigurator } from './configurator';
3
+ export declare class ClientNotFoundException extends Error {
4
+ constructor(message: string);
5
+ }
6
+ export interface IHttpClientProvider<TClient extends HttpClient = HttpClient> {
7
+ hasClient(key: string): boolean;
8
+ createClient(key: string): TClient;
9
+ createCustomClient<T extends HttpClient>(key: string): T;
10
+ }
11
+ export declare class HttpClientProvider<TClient extends HttpClient> implements IHttpClientProvider<TClient> {
12
+ protected config: IHttpClientConfigurator<TClient>;
13
+ constructor(config: IHttpClientConfigurator<TClient>);
14
+ hasClient(key: string): boolean;
15
+ createClient(key: string): TClient;
16
+ createCustomClient<T extends HttpClient>(key: string): T;
17
+ }
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@equinor/fusion-framework-module-http",
3
+ "version": "0.1.0-alpha.0",
4
+ "description": "",
5
+ "main": "./dist/esm/index.js",
6
+ "module": "./dist/esm/index.js",
7
+ "scripts": {
8
+ "build": "npm run build:typescript",
9
+ "build:typescript": "tsc -b --verbose",
10
+ "prepack": "npm run build"
11
+ },
12
+ "keywords": [],
13
+ "author": "",
14
+ "license": "ISC",
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/equinor/fusion-framework.git",
21
+ "directory": "packages/modules-http"
22
+ },
23
+ "dependencies": {
24
+ "@equinor/fusion-framework-module": "^0.1.0-alpha.0"
25
+ },
26
+ "types": "index.d.ts",
27
+ "typesVersions": {
28
+ ">=4.2": {
29
+ "*": [
30
+ "dist/types/*"
31
+ ]
32
+ }
33
+ },
34
+ "gitHead": "f8798566d8dc4fc865d90984273760a4f15b8c96"
35
+ }
@@ -0,0 +1,19 @@
1
+ import { HttpClient, HttpRequestInit } from './client';
2
+
3
+ /** Extends request init with scope */
4
+ type RequestInitMsal = HttpRequestInit & { scopes?: string[] };
5
+
6
+ /** Default Client for MSAL */
7
+ export class HttpClientMsal extends HttpClient<RequestInitMsal> {
8
+ /** Scope that will be applied to all request if no scope is provided in request object */
9
+ public defaultScope: string[] = [];
10
+
11
+ /** @inheritdoc */
12
+ fetch(init: Omit<RequestInitMsal, 'uri'> | string): ReturnType<HttpClient['fetch']> {
13
+ init = typeof init === 'string' ? { path: init } : init;
14
+ Object.assign(init, { scopes: this.defaultScope.concat(init.scopes || []) });
15
+ return super.fetch(init);
16
+ }
17
+ }
18
+
19
+ export default HttpClientMsal;
package/src/client.ts ADDED
@@ -0,0 +1,193 @@
1
+ import { firstValueFrom, Observable, ObservableInput, of, Subject } from 'rxjs';
2
+ import { switchMap, takeUntil, tap } from 'rxjs/operators';
3
+ import { fromFetch } from 'rxjs/fetch';
4
+
5
+ import { ProcessOperators } from './process-operators';
6
+
7
+ export type HttpRequestInit = RequestInit & { uri: string; path: string };
8
+
9
+ /**
10
+ * Extends @see {ProcessOperators} for pre-processing requests.
11
+ */
12
+ export class HttpRequestHandler<
13
+ T extends HttpRequestInit = HttpRequestInit
14
+ > extends ProcessOperators<T> {
15
+ /**
16
+ * Set header that will apply on all requests done by consumer @see {HttpClient}
17
+ * @param key - name of header
18
+ * @param value - header value
19
+ */
20
+ setHeader(key: string, value: string): HttpRequestHandler<T> {
21
+ return this.set('header-' + key, (request) => {
22
+ const headers = new Headers(request.headers);
23
+ headers.append(key, value);
24
+ return { ...request, headers };
25
+ }) as unknown as HttpRequestHandler<T>;
26
+ }
27
+ }
28
+
29
+ export type HttpClientCreateOptions<T extends HttpRequestInit = HttpRequestInit> = {
30
+ requestHandler: HttpRequestHandler<T>;
31
+ };
32
+
33
+ export type HttpResponseHandler<T> = (response: Response) => Promise<T>;
34
+
35
+ export interface IHttpClient<
36
+ TRequest extends HttpRequestInit = HttpRequestInit,
37
+ TResponse = Response
38
+ > {
39
+ uri: string;
40
+ /** pre-processor of requests */
41
+ readonly requestHandler: HttpRequestHandler<TRequest>;
42
+ /** post-processor of requests */
43
+ readonly responseHandler: HttpResponseHandler<TResponse>;
44
+
45
+ /** Observable stream of request */
46
+ request$: Observable<TRequest>;
47
+
48
+ /** Observable stream of responses */
49
+ response$: Observable<TResponse>;
50
+
51
+ /**
52
+ * Observable request.
53
+ * Simplifies execution of request and
54
+ * note: request will not be executed until subscribe!
55
+ * @see {@link https://rxjs.dev/api/fetch/fromFetch|RXJS}
56
+ * @example
57
+ * ```ts
58
+ * // Observer changes of a input field
59
+ * const client = window.Fusion.createClient('my-client');
60
+ * const input$ = fromEvent(document.getElementById('input'), 'input');
61
+ * input$.pipe(
62
+ * // only call after no key input in .5s
63
+ * debounceTime(500),
64
+ * // extract value from event
65
+ * map(x => x.currentTarget.value),
66
+ * // only search when text longer than 2 characters
67
+ * filter(x => x.length >=3),
68
+ * // query api with input value
69
+ * switchMap(x => client.fetch(`api/foo?q=${x}`).pipe(
70
+ * // retry 2 times
71
+ * retry(2)
72
+ * // cancel request if new input
73
+ * takeUntil(input$)
74
+ * )),
75
+ * // extract data from response
76
+ * switchMap(x => x.json()),
77
+ * // process error
78
+ * catchError(x => of({error: e.message}))
79
+ * // write result to pre element
80
+ * ).subscribe(console.log);
81
+ * ```
82
+ */
83
+ fetch(init: Omit<TRequest, 'uri'> | string): Observable<TResponse>;
84
+
85
+ /**
86
+ * Fetch a resource as an promise
87
+ * @example
88
+ * ```ts
89
+ * let controller: AbortController;
90
+ * const client = window.Fusion.createClient('my-client');
91
+ * const input = document.getElementById('input');
92
+ * input.addEventlistner('input', (e) => {
93
+ * try{
94
+ * // if a controller is defined, request might be ongoing
95
+ * controller && controller.abort();
96
+ * // create a new abort controller
97
+ * controller = new AbortController();
98
+ * // query api with
99
+ * const response = await client.fetch({
100
+ * path: `api/foo?q=${e.currentTarget.value}`,
101
+ * signal: controller.signal,
102
+ * });
103
+ * const json = await response.json();
104
+ * result.innerText = JSON.stringify(json, null, 2)
105
+ * } catch(err){
106
+ * result.innerText = 'an error occurred'
107
+ * } finally{
108
+ * delete controller;
109
+ * }
110
+ * });
111
+ * ```
112
+ */
113
+ fetchAsync(init: Omit<TRequest, 'uri'> | string): Promise<TResponse>;
114
+
115
+ /**
116
+ * Abort all ongoing request for current client
117
+ */
118
+ abort(): void;
119
+ }
120
+
121
+ /** Base http client for executing requests */
122
+ export class HttpClient<TRequest extends HttpRequestInit = HttpRequestInit, TResponse = Response>
123
+ implements IHttpClient<TRequest, TResponse>
124
+ {
125
+ readonly requestHandler: HttpRequestHandler<TRequest>;
126
+
127
+ readonly responseHandler: HttpResponseHandler<TResponse> = (x: Response) =>
128
+ Promise.resolve(x as unknown as TResponse);
129
+
130
+ /** stream of requests that are about to be executed */
131
+ protected _request$ = new Subject<TRequest>();
132
+
133
+ /** stream of request responses */
134
+ protected _response$ = new Subject<TResponse>();
135
+
136
+ protected _abort$ = new Subject<void>();
137
+
138
+ public get request$(): Observable<TRequest> {
139
+ return this._request$.asObservable();
140
+ }
141
+
142
+ public get response$(): Observable<TResponse> {
143
+ return this._response$.asObservable();
144
+ }
145
+
146
+ constructor(public uri: string, options?: HttpClientCreateOptions<TRequest>) {
147
+ this.requestHandler = options?.requestHandler || new HttpRequestHandler<TRequest>();
148
+ this._init();
149
+ }
150
+
151
+ /** internal abstract method, for overriding instead of overriding constructor */
152
+ protected _init(): void {
153
+ // called by children for constructor setup
154
+ }
155
+
156
+ public fetch(init: Omit<TRequest, 'uri'> | string): Observable<TResponse> {
157
+ const options = typeof init === 'string' ? { path: init } : init;
158
+ return of({ ...options, uri: this._resolveUrl(options.path) } as TRequest).pipe(
159
+ /** prepare request, allow extensions to modify request */
160
+ switchMap((x) => this._prepareRequest(x)),
161
+ /** push request to event buss */
162
+ tap((x) => this._request$.next(x)),
163
+ /** execute request */
164
+ switchMap(({ uri, path: _path, ...args }) => fromFetch(uri, args)),
165
+ /** prepare response, allow extensions to modify response */
166
+ switchMap((x) => this._prepareResponse(x)),
167
+ /** push response to event buss */
168
+ tap((x) => this._response$.next(x)),
169
+ /** cancel request on abort signal */
170
+ takeUntil(this._abort$)
171
+ );
172
+ }
173
+
174
+ public fetchAsync(init: Omit<TRequest, 'uri'> | string): Promise<TResponse> {
175
+ return firstValueFrom(this.fetch(init));
176
+ }
177
+
178
+ public abort(): void {
179
+ this._abort$.next();
180
+ }
181
+
182
+ protected _prepareRequest(init: TRequest): ObservableInput<TRequest> {
183
+ return this.requestHandler.process(init);
184
+ }
185
+
186
+ protected _prepareResponse(response: Response): ObservableInput<TResponse> {
187
+ return this.responseHandler(response);
188
+ }
189
+
190
+ protected _resolveUrl(path: string): string {
191
+ return [this.uri, path].join('/');
192
+ }
193
+ }
@@ -0,0 +1,74 @@
1
+ import { HttpRequestHandler, HttpRequestInit, IHttpClient } from './client';
2
+
3
+ interface HttpClientConstructorOptions<TInit extends HttpRequestInit> {
4
+ requestHandler: HttpRequestHandler<TInit>;
5
+ }
6
+
7
+ interface HttpClientConstructor<TClient extends IHttpClient> {
8
+ new (
9
+ uri: string,
10
+ options: HttpClientConstructorOptions<HttpClientRequestInitType<TClient>>
11
+ ): TClient;
12
+ }
13
+
14
+ interface HttpClientOptions<TClient extends IHttpClient> {
15
+ defaultUri?: string;
16
+ ctor?: HttpClientConstructor<TClient>;
17
+ onCreate?: (client: TClient) => void;
18
+ requestHandler?: HttpRequestHandler<HttpClientRequestInitType<TClient>>;
19
+ }
20
+
21
+ type HttpClientRequestInitType<T extends IHttpClient> = T extends IHttpClient<infer U> ? U : never;
22
+
23
+ export interface IHttpClientConfigurator<TClient extends IHttpClient = IHttpClient> {
24
+ readonly clients: Record<string, HttpClientOptions<TClient>>;
25
+ readonly defaultHttpClientCtor: HttpClientConstructor<TClient>;
26
+ readonly defaultHttpRequestHandler: HttpRequestHandler<HttpClientRequestInitType<TClient>>;
27
+
28
+ configureClient(name: string, uri: string): HttpClientConfigurator<TClient>;
29
+
30
+ configureClient<T extends TClient>(
31
+ name: string,
32
+ args: HttpClientOptions<T>
33
+ ): HttpClientConfigurator<TClient>;
34
+
35
+ configureClient<T extends TClient>(
36
+ name: string,
37
+ onCreate: (client: T) => void
38
+ ): HttpClientConfigurator<TClient>;
39
+ }
40
+
41
+ export class HttpClientConfigurator<TClient extends IHttpClient>
42
+ implements IHttpClientConfigurator<TClient>
43
+ {
44
+ protected _clients: Record<string, HttpClientOptions<TClient>> = {};
45
+
46
+ public get clients(): Record<string, HttpClientOptions<TClient>> {
47
+ return { ...this._clients };
48
+ }
49
+
50
+ readonly defaultHttpClientCtor: HttpClientConstructor<TClient>;
51
+
52
+ readonly defaultHttpRequestHandler = new HttpRequestHandler<
53
+ HttpClientRequestInitType<TClient>
54
+ >();
55
+
56
+ constructor(client: HttpClientConstructor<TClient>) {
57
+ this.defaultHttpClientCtor = client;
58
+ }
59
+
60
+ configureClient<T extends TClient>(
61
+ name: string,
62
+ args: string | HttpClientOptions<T> | HttpClientOptions<T>['onCreate']
63
+ ): HttpClientConfigurator<TClient> {
64
+ const argFn = typeof args === 'string' ? (x: T) => (x.uri = String(args)) : args;
65
+ const options = typeof argFn === 'function' ? { onCreate: argFn } : argFn;
66
+ this._clients[name] = {
67
+ ...this._clients[name],
68
+ ...(options as unknown as HttpClientOptions<TClient>),
69
+ };
70
+ return this;
71
+ }
72
+ }
73
+
74
+ export default HttpClientConfigurator;
package/src/index.ts ADDED
@@ -0,0 +1,8 @@
1
+ export { HttpClient, IHttpClient } from './client';
2
+ export { HttpClientMsal } from './client-msal';
3
+
4
+ export * from './configurator';
5
+ export * from './provider';
6
+ export * from './module';
7
+
8
+ export { default } from './module';
package/src/module.ts ADDED
@@ -0,0 +1,35 @@
1
+ import { HttpClientMsal } from './client-msal';
2
+ import { IHttpClientConfigurator, HttpClientConfigurator } from './configurator';
3
+ import { IHttpClientProvider, HttpClientProvider } from './provider';
4
+
5
+ import type { Module, ModulesConfigType } from '@equinor/fusion-framework-module';
6
+
7
+ export type HttpModule = Module<
8
+ 'http',
9
+ IHttpClientProvider<HttpClientMsal>,
10
+ IHttpClientConfigurator<HttpClientMsal>
11
+ >;
12
+
13
+ /**
14
+ * Configure http-client
15
+ */
16
+ export const module: HttpModule = {
17
+ name: 'http',
18
+ configure: () => new HttpClientConfigurator(HttpClientMsal),
19
+ initialize: ({ http }): HttpClientProvider<HttpClientMsal> => new HttpClientProvider(http),
20
+ };
21
+
22
+ export const setupHttpModule = (
23
+ config: ModulesConfigType<[HttpModule]>,
24
+ callback: (config: IHttpClientConfigurator<HttpClientMsal>) => void
25
+ ): void | Promise<void> => {
26
+ callback(config.http);
27
+ };
28
+
29
+ declare module '@equinor/fusion-framework-module' {
30
+ interface Modules {
31
+ http: HttpModule;
32
+ }
33
+ }
34
+
35
+ export default module;
@@ -0,0 +1,50 @@
1
+ import { BehaviorSubject, from, Observable } from 'rxjs';
2
+ import { withLatestFrom, concatMap, last } from 'rxjs/operators';
3
+
4
+ export type ProcessOperator<T, R = T> = (request: T) => R | void | Promise<R | void>;
5
+
6
+ /**
7
+ * Container for sync/async operators.
8
+ * Pipes each operator sequential
9
+ */
10
+ export class ProcessOperators<T> {
11
+ protected _operators: Record<string, ProcessOperator<T>> = {};
12
+
13
+ /**
14
+ * Add a new operator (throw error if already defined)
15
+ */
16
+ add(key: string, operator: ProcessOperator<T>): ProcessOperators<T> {
17
+ if (Object.keys(this._operators).includes(key))
18
+ throw Error(`Operator [${key}] allready defined`);
19
+ return this.set(key, operator);
20
+ }
21
+
22
+ /**
23
+ * Add or sets a operator
24
+ */
25
+ set(key: string, operator: ProcessOperator<T>): ProcessOperators<T> {
26
+ this._operators[key] = operator;
27
+ return this;
28
+ }
29
+
30
+ /**
31
+ * Get a operator, will return undefined on invalid key.
32
+ */
33
+ get(key: string): ProcessOperator<T> {
34
+ return this._operators[key];
35
+ }
36
+
37
+ /**
38
+ * Process registered processors.
39
+ */
40
+ process(request: T): Observable<T> {
41
+ const request$ = new BehaviorSubject<T>(request);
42
+ from(Object.values(this._operators))
43
+ .pipe(
44
+ withLatestFrom(request$),
45
+ concatMap(async ([operator, value]) => (await operator(value)) || value)
46
+ )
47
+ .subscribe(request$);
48
+ return request$.pipe(last());
49
+ }
50
+ }
@@ -0,0 +1,55 @@
1
+ import { HttpClient } from './client';
2
+ import { IHttpClientConfigurator } from './configurator';
3
+
4
+ export class ClientNotFoundException extends Error {
5
+ constructor(message: string) {
6
+ super(message);
7
+ }
8
+ }
9
+
10
+ export interface IHttpClientProvider<TClient extends HttpClient = HttpClient> {
11
+ /** check if a client is configured */
12
+ hasClient(key: string): boolean;
13
+ /** create a new http client */
14
+ createClient(key: string): TClient;
15
+ /**
16
+ * Class cast creation of custom client
17
+ * @example
18
+ * ```ts
19
+ * config.http.configureClient('foobar', (client) => {
20
+ * client.ctor = MyClient;
21
+ * client.uri = 'https://foobar.com';
22
+ * });
23
+ */
24
+ createCustomClient<T extends HttpClient>(key: string): T;
25
+ }
26
+
27
+ export class HttpClientProvider<TClient extends HttpClient>
28
+ implements IHttpClientProvider<TClient>
29
+ {
30
+ constructor(protected config: IHttpClientConfigurator<TClient>) {}
31
+
32
+ public hasClient(key: string): boolean {
33
+ return Object.keys(this.config.clients).includes(key);
34
+ }
35
+
36
+ public createClient(key: string): TClient {
37
+ if (!this.hasClient(key)) {
38
+ throw new ClientNotFoundException(`No registered http client for key [${key}]`);
39
+ }
40
+ const {
41
+ defaultUri,
42
+ onCreate,
43
+ ctor = this.config.defaultHttpClientCtor,
44
+ requestHandler = this.config.defaultHttpRequestHandler,
45
+ } = this.config.clients[key];
46
+ const options = { requestHandler };
47
+ const instance = new ctor(defaultUri || '', options) as TClient;
48
+ onCreate && onCreate(instance as TClient);
49
+ return instance as TClient;
50
+ }
51
+
52
+ public createCustomClient<T extends HttpClient>(key: string): T {
53
+ return this.createClient(key) as unknown as T;
54
+ }
55
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "outDir": "dist/esm",
5
+ "rootDir": "src",
6
+ "declarationDir": "./dist/types",
7
+ "baseUrl": "src",
8
+ },
9
+ "references": [
10
+ {
11
+ "path": "../module"
12
+ }
13
+ ],
14
+ "include": [
15
+ "src/**/*",
16
+ ],
17
+ "exclude": [
18
+ "node_modules",
19
+ "lib"
20
+ ]
21
+ }