@esolve/ng-esolve-connect 0.6.1 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2015/esolve-ng-esolve-connect.js → esm2020/esolve-ng-esolve-connect.mjs} +0 -0
- package/esm2020/lib/account/esolve-account.service.mjs +161 -0
- package/esm2020/lib/account/esolve-address-record.mjs +2 -0
- package/esm2020/lib/account/esolve-address-response.mjs +2 -0
- package/esm2020/lib/account/esolve-address-result.mjs +11 -0
- package/esm2020/lib/account/esolve-address-set-data.mjs +2 -0
- package/esm2020/lib/account/esolve-address.mjs +19 -0
- package/esm2020/lib/account/esolve-geocode-result.mjs +2 -0
- package/esm2020/lib/account/esolve-registration-data.mjs +2 -0
- package/esm2020/lib/account/esolve-registration-post-response-item.mjs +2 -0
- package/esm2020/lib/account/esolve-registration-result.mjs +11 -0
- package/esm2020/lib/account/esolve-user-account-data.mjs +2 -0
- package/esm2020/lib/account/esolve-user-account-record.mjs +2 -0
- package/esm2020/lib/account/esolve-user-account-result.mjs +9 -0
- package/esm2020/lib/account/esolve-user-account.mjs +29 -0
- package/{esm2015/lib/auth/esolve-auth-interceptor.service.js → esm2020/lib/auth/esolve-auth-interceptor.service.mjs} +7 -7
- package/esm2020/lib/auth/esolve-auth.service.mjs +163 -0
- package/{esm2015/lib/banners/esolve-banner-image-hotspot-record.js → esm2020/lib/banners/esolve-banner-image-hotspot-record.mjs} +0 -0
- package/{esm2015/lib/banners/esolve-banner-image-hotspot.js → esm2020/lib/banners/esolve-banner-image-hotspot.mjs} +0 -0
- package/{esm2015/lib/banners/esolve-banner-image-record.js → esm2020/lib/banners/esolve-banner-image-record.mjs} +0 -0
- package/{esm2015/lib/banners/esolve-banner-image.js → esm2020/lib/banners/esolve-banner-image.mjs} +0 -0
- package/{esm2015/lib/banners/esolve-banner-record.js → esm2020/lib/banners/esolve-banner-record.mjs} +0 -0
- package/{esm2015/lib/banners/esolve-banner-type.js → esm2020/lib/banners/esolve-banner-type.mjs} +0 -0
- package/{esm2015/lib/banners/esolve-banner.js → esm2020/lib/banners/esolve-banner.mjs} +0 -0
- package/{esm2015/lib/banners/esolve-banner.service.js → esm2020/lib/banners/esolve-banner.service.mjs} +3 -3
- package/{esm2015/lib/cart/esolve-cart-item-record.js → esm2020/lib/cart/esolve-cart-item-record.mjs} +0 -0
- package/{esm2015/lib/cart/esolve-cart-item-response.js → esm2020/lib/cart/esolve-cart-item-response.mjs} +0 -0
- package/{esm2015/lib/cart/esolve-cart-item.js → esm2020/lib/cart/esolve-cart-item.mjs} +0 -0
- package/{esm2015/lib/cart/esolve-cart-stock-item.js → esm2020/lib/cart/esolve-cart-stock-item.mjs} +0 -0
- package/{esm2015/lib/cart/esolve-cart-totals-record.js → esm2020/lib/cart/esolve-cart-totals-record.mjs} +0 -0
- package/{esm2015/lib/cart/esolve-cart-totals.js → esm2020/lib/cart/esolve-cart-totals.mjs} +0 -0
- package/esm2020/lib/cart/esolve-cart.service.mjs +172 -0
- package/esm2020/lib/cart/esolve-checkout-result.mjs +9 -0
- package/{esm2015/lib/cart/esolve-checkout.js → esm2020/lib/cart/esolve-checkout.mjs} +0 -0
- package/{esm2015/lib/category-tree/esolve-category-tree-item-record.js → esm2020/lib/category-tree/esolve-category-tree-item-record.mjs} +0 -0
- package/{esm2015/lib/category-tree/esolve-category-tree-item.js → esm2020/lib/category-tree/esolve-category-tree-item.mjs} +0 -0
- package/{esm2015/lib/category-tree/esolve-category-tree.service.js → esm2020/lib/category-tree/esolve-category-tree.service.mjs} +3 -3
- package/{esm2015/lib/esolve-connect.config.js → esm2020/lib/esolve-connect.config.mjs} +0 -0
- package/esm2020/lib/locations/esolve-locations.service.mjs +53 -0
- package/esm2020/lib/locations/esolve-stock-location-record.mjs +2 -0
- package/esm2020/lib/locations/esolve-stock-location.mjs +76 -0
- package/{esm2015/lib/media/esolve-media-article.js → esm2020/lib/media/esolve-media-article.mjs} +0 -0
- package/{esm2015/lib/media/esolve-media-record.js → esm2020/lib/media/esolve-media-record.mjs} +0 -0
- package/{esm2015/lib/media/esolve-media.service.js → esm2020/lib/media/esolve-media.service.mjs} +3 -3
- package/{esm2015/lib/menu/esolve-menu-item.js → esm2020/lib/menu/esolve-menu-item.mjs} +0 -0
- package/{esm2015/lib/menu/esolve-menu-tree-record.js → esm2020/lib/menu/esolve-menu-tree-record.mjs} +0 -0
- package/{esm2015/lib/menu/esolve-menu.service.js → esm2020/lib/menu/esolve-menu.service.mjs} +3 -3
- package/{esm2015/lib/news/esolve-news-article-author-record.js → esm2020/lib/news/esolve-news-article-author-record.mjs} +0 -0
- package/{esm2015/lib/news/esolve-news-article-author.js → esm2020/lib/news/esolve-news-article-author.mjs} +0 -0
- package/{esm2015/lib/news/esolve-news-article-list.js → esm2020/lib/news/esolve-news-article-list.mjs} +0 -0
- package/{esm2015/lib/news/esolve-news-article-record.js → esm2020/lib/news/esolve-news-article-record.mjs} +0 -0
- package/{esm2015/lib/news/esolve-news-article.js → esm2020/lib/news/esolve-news-article.mjs} +0 -0
- package/{esm2015/lib/news/esolve-news-group-record.js → esm2020/lib/news/esolve-news-group-record.mjs} +0 -0
- package/{esm2015/lib/news/esolve-news-group.js → esm2020/lib/news/esolve-news-group.mjs} +0 -0
- package/{esm2015/lib/news/esolve-news-manufacturer-record.js → esm2020/lib/news/esolve-news-manufacturer-record.mjs} +0 -0
- package/{esm2015/lib/news/esolve-news-range-record.js → esm2020/lib/news/esolve-news-range-record.mjs} +0 -0
- package/{esm2015/lib/news/esolve-news.service.js → esm2020/lib/news/esolve-news.service.mjs} +3 -3
- package/esm2020/lib/ng-esolve-connect.module.mjs +45 -0
- package/esm2020/lib/payment/esolve-card-data.mjs +2 -0
- package/esm2020/lib/payment/esolve-payment-method-options.mjs +2 -0
- package/esm2020/lib/payment/esolve-payment-method-record.mjs +2 -0
- package/esm2020/lib/payment/esolve-payment-method.mjs +49 -0
- package/esm2020/lib/payment/esolve-payment-response.mjs +2 -0
- package/esm2020/lib/payment/esolve-payment-result.mjs +22 -0
- package/esm2020/lib/payment/esolve-payment.service.mjs +178 -0
- package/esm2020/lib/payment/esolve-vault-item-result.mjs +20 -0
- package/esm2020/lib/payment/esolve-vault-item.mjs +19 -0
- package/esm2020/lib/payment/esolve-vault-record.mjs +2 -0
- package/esm2020/lib/payment/esolve-vault-response.mjs +2 -0
- package/esm2020/lib/session/esolve-session.mjs +27 -0
- package/esm2020/lib/session/esolve-session.service.mjs +79 -0
- package/esm2020/lib/session/esolve-stored-session.mjs +2 -0
- package/esm2020/lib/shared/error-handler/esolve-error-handler.service.mjs +58 -0
- package/{esm2015/lib/shared/error-handler/esolve-http-error.js → esm2020/lib/shared/error-handler/esolve-http-error.mjs} +0 -0
- package/{esm2015/lib/shared/esolve-response.js → esm2020/lib/shared/esolve-response.mjs} +1 -1
- package/{esm2015/lib/shared/esolve-url-target.js → esm2020/lib/shared/esolve-url-target.mjs} +0 -0
- package/esm2020/lib/shared/response-handler/esolve-response-handler.service.mjs +32 -0
- package/esm2020/lib/shared/response-handler/esolve-response-result.mjs +9 -0
- package/{esm2015/lib/shared/seo/esolve-seo-info.js → esm2020/lib/shared/seo/esolve-seo-info.mjs} +0 -0
- package/{esm2015/lib/shared/seo/esolve-seo.service.js → esm2020/lib/shared/seo/esolve-seo.service.mjs} +3 -3
- package/esm2020/lib/shipping/esolve-shipping-cost-record.mjs +2 -0
- package/esm2020/lib/shipping/esolve-shipping-cost.mjs +18 -0
- package/esm2020/lib/shipping/esolve-shipping-method-options.mjs +2 -0
- package/esm2020/lib/shipping/esolve-shipping-method-record.mjs +2 -0
- package/esm2020/lib/shipping/esolve-shipping-method.mjs +33 -0
- package/esm2020/lib/shipping/esolve-shipping.service.mjs +108 -0
- package/{esm2015/lib/stock/esolve-stock-badge-record.js → esm2020/lib/stock/esolve-stock-badge-record.mjs} +0 -0
- package/{esm2015/lib/stock/esolve-stock-badge.js → esm2020/lib/stock/esolve-stock-badge.mjs} +0 -0
- package/{esm2015/lib/stock/esolve-stock-item-list.js → esm2020/lib/stock/esolve-stock-item-list.mjs} +0 -0
- package/{esm2015/lib/stock/esolve-stock-item-options.js → esm2020/lib/stock/esolve-stock-item-options.mjs} +0 -0
- package/{esm2015/lib/stock/esolve-stock-item.js → esm2020/lib/stock/esolve-stock-item.mjs} +0 -0
- package/{esm2015/lib/stock/esolve-stock-price.js → esm2020/lib/stock/esolve-stock-price.mjs} +0 -0
- package/{esm2015/lib/stock/esolve-stock-record.js → esm2020/lib/stock/esolve-stock-record.mjs} +0 -0
- package/{esm2015/lib/stock/esolve-stock.service.js → esm2020/lib/stock/esolve-stock.service.mjs} +5 -6
- package/{esm2015/lib/tags/esolve-tag-record.js → esm2020/lib/tags/esolve-tag-record.mjs} +0 -0
- package/{esm2015/lib/tags/esolve-tag.js → esm2020/lib/tags/esolve-tag.mjs} +0 -0
- package/{esm2015/lib/topics/esolve-topic-record.js → esm2020/lib/topics/esolve-topic-record.mjs} +0 -0
- package/{esm2015/lib/topics/esolve-topic.js → esm2020/lib/topics/esolve-topic.mjs} +0 -0
- package/{esm2015/lib/topics/esolve-topic.service.js → esm2020/lib/topics/esolve-topic.service.mjs} +3 -3
- package/esm2020/public-api.mjs +78 -0
- package/fesm2015/esolve-ng-esolve-connect.mjs +2651 -0
- package/fesm2015/esolve-ng-esolve-connect.mjs.map +1 -0
- package/{fesm2015/esolve-ng-esolve-connect.js → fesm2020/esolve-ng-esolve-connect.mjs} +838 -461
- package/fesm2020/esolve-ng-esolve-connect.mjs.map +1 -0
- package/lib/account/esolve-account.service.d.ts +35 -0
- package/lib/{auth → account}/esolve-address-record.d.ts +0 -0
- package/lib/account/esolve-address-response.d.ts +8 -0
- package/lib/account/esolve-address-result.d.ts +10 -0
- package/lib/account/esolve-address-set-data.d.ts +17 -0
- package/lib/{auth → account}/esolve-address.d.ts +0 -0
- package/lib/account/esolve-geocode-result.d.ts +16 -0
- package/lib/{auth → account}/esolve-registration-data.d.ts +0 -0
- package/lib/account/esolve-registration-post-response-item.d.ts +7 -0
- package/lib/account/esolve-registration-result.d.ts +9 -0
- package/lib/account/esolve-user-account-data.d.ts +17 -0
- package/lib/account/esolve-user-account-record.d.ts +21 -0
- package/lib/account/esolve-user-account-result.d.ts +6 -0
- package/lib/account/esolve-user-account.d.ts +29 -0
- package/lib/auth/esolve-auth-interceptor.service.d.ts +1 -1
- package/lib/auth/esolve-auth.service.d.ts +5 -3
- package/lib/cart/esolve-cart.service.d.ts +6 -55
- package/lib/cart/esolve-checkout-result.d.ts +6 -0
- package/lib/locations/esolve-locations.service.d.ts +23 -0
- package/lib/{cart → locations}/esolve-stock-location-record.d.ts +0 -0
- package/lib/{cart → locations}/esolve-stock-location.d.ts +0 -0
- package/lib/payment/esolve-card-data.d.ts +7 -0
- package/lib/payment/esolve-payment-method-options.d.ts +5 -0
- package/lib/{cart → payment}/esolve-payment-method-record.d.ts +0 -5
- package/lib/{cart → payment}/esolve-payment-method.d.ts +2 -2
- package/lib/payment/esolve-payment-response.d.ts +13 -0
- package/lib/payment/esolve-payment-result.d.ts +10 -0
- package/lib/payment/esolve-payment.service.d.ts +61 -0
- package/lib/payment/esolve-vault-item-result.d.ts +10 -0
- package/lib/payment/esolve-vault-item.d.ts +10 -0
- package/lib/payment/esolve-vault-record.d.ts +11 -0
- package/lib/payment/esolve-vault-response.d.ts +9 -0
- package/lib/{auth → session}/esolve-session.d.ts +0 -0
- package/lib/{auth → session}/esolve-session.service.d.ts +0 -0
- package/lib/{auth → session}/esolve-stored-session.d.ts +0 -0
- package/lib/shared/error-handler/esolve-error-handler.service.d.ts +1 -1
- package/lib/shared/esolve-response.d.ts +5 -5
- package/lib/shared/response-handler/esolve-response-handler.service.d.ts +15 -0
- package/lib/shared/response-handler/esolve-response-result.d.ts +6 -0
- package/lib/{cart → shipping}/esolve-shipping-cost-record.d.ts +0 -5
- package/lib/{cart → shipping}/esolve-shipping-cost.d.ts +0 -0
- package/lib/shipping/esolve-shipping-method-options.d.ts +4 -0
- package/lib/{cart → shipping}/esolve-shipping-method-record.d.ts +0 -4
- package/lib/{cart → shipping}/esolve-shipping-method.d.ts +0 -0
- package/lib/shipping/esolve-shipping.service.d.ts +37 -0
- package/package.json +22 -8
- package/public-api.d.ts +24 -9
- package/bundles/esolve-ng-esolve-connect.umd.js +0 -3064
- package/bundles/esolve-ng-esolve-connect.umd.js.map +0 -1
- package/esm2015/lib/auth/esolve-account.service.js +0 -103
- package/esm2015/lib/auth/esolve-address-record.js +0 -2
- package/esm2015/lib/auth/esolve-address.js +0 -19
- package/esm2015/lib/auth/esolve-auth.service.js +0 -163
- package/esm2015/lib/auth/esolve-registration-data.js +0 -2
- package/esm2015/lib/auth/esolve-session.js +0 -27
- package/esm2015/lib/auth/esolve-session.service.js +0 -79
- package/esm2015/lib/auth/esolve-stored-session.js +0 -2
- package/esm2015/lib/cart/esolve-cart.service.js +0 -326
- package/esm2015/lib/cart/esolve-payment-method-record.js +0 -2
- package/esm2015/lib/cart/esolve-payment-method.js +0 -49
- package/esm2015/lib/cart/esolve-shipping-cost-record.js +0 -2
- package/esm2015/lib/cart/esolve-shipping-cost.js +0 -18
- package/esm2015/lib/cart/esolve-shipping-method-record.js +0 -2
- package/esm2015/lib/cart/esolve-shipping-method.js +0 -33
- package/esm2015/lib/cart/esolve-stock-location-record.js +0 -2
- package/esm2015/lib/cart/esolve-stock-location.js +0 -76
- package/esm2015/lib/ng-esolve-connect.module.js +0 -43
- package/esm2015/lib/shared/error-handler/esolve-error-handler.service.js +0 -58
- package/esm2015/public-api.js +0 -58
- package/fesm2015/esolve-ng-esolve-connect.js.map +0 -1
- package/lib/auth/esolve-account.service.d.ts +0 -23
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { HttpParams } from '@angular/common/http';
|
|
3
|
-
import { iif, throwError } from 'rxjs';
|
|
4
|
-
import { catchError, map } from 'rxjs/operators';
|
|
5
|
-
import { ESOLVE_CONNECT_CONFIG } from '../esolve-connect.config';
|
|
6
|
-
import { EsolveAddress } from './esolve-address';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common/http";
|
|
9
|
-
import * as i2 from "./esolve-session.service";
|
|
10
|
-
import * as i3 from "../shared/error-handler/esolve-error-handler.service";
|
|
11
|
-
export class EsolveAccountService {
|
|
12
|
-
constructor(config, http, sessionService, errorHandler) {
|
|
13
|
-
this.config = config;
|
|
14
|
-
this.http = http;
|
|
15
|
-
this.sessionService = sessionService;
|
|
16
|
-
this.errorHandler = errorHandler;
|
|
17
|
-
this._user_id = 0;
|
|
18
|
-
this.sessionService.session.subscribe((session) => {
|
|
19
|
-
if (session.key !== '') {
|
|
20
|
-
this.user_id = session.id;
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
get user_id() {
|
|
25
|
-
return this._user_id;
|
|
26
|
-
}
|
|
27
|
-
set user_id(value) {
|
|
28
|
-
value = ((value > 0) ? value : 0);
|
|
29
|
-
if (this._user_id !== value) {
|
|
30
|
-
this._user_id = value;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
processUserAddress(records) {
|
|
34
|
-
const user_addresses = [];
|
|
35
|
-
if (records && (this._user_id > 0)) {
|
|
36
|
-
for (const record of records) {
|
|
37
|
-
if (+record.userid === this._user_id) {
|
|
38
|
-
user_addresses.push(new EsolveAddress(+record.id, record.recipient, record.address_type, record.pobox, record.place_name, record.street_number, record.street, record.suburb, record.city, record.province, record.country, record.postal_code, +record.latitude, +record.longitude));
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return user_addresses;
|
|
43
|
-
}
|
|
44
|
-
getAddress() {
|
|
45
|
-
let params = new HttpParams();
|
|
46
|
-
params = params.set('ws_id', this.config.wsid);
|
|
47
|
-
params = params.set('user_id', this.user_id.toString());
|
|
48
|
-
return iif(() => (this.user_id > 0), this.http.get(`${this.config.api_url}/service/get-addresses.php`, { params }).pipe(map(response => {
|
|
49
|
-
if (response.records === undefined) {
|
|
50
|
-
throw response;
|
|
51
|
-
}
|
|
52
|
-
return this.processUserAddress(response.records);
|
|
53
|
-
}), catchError((err) => {
|
|
54
|
-
return throwError(err);
|
|
55
|
-
})), throwError('Log in is required'));
|
|
56
|
-
}
|
|
57
|
-
register(user_registration) {
|
|
58
|
-
const body = {
|
|
59
|
-
user: user_registration
|
|
60
|
-
};
|
|
61
|
-
return this.http.post(`${this.config.api_url}/service/set-registration.php`, body, {
|
|
62
|
-
headers: {
|
|
63
|
-
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
|
|
64
|
-
},
|
|
65
|
-
params: {
|
|
66
|
-
ws_id: this.config.wsid
|
|
67
|
-
},
|
|
68
|
-
responseType: 'json',
|
|
69
|
-
observe: 'body'
|
|
70
|
-
}).pipe(map(response => {
|
|
71
|
-
if ((response.responses === undefined) ||
|
|
72
|
-
(response.responses.length <= 0)) {
|
|
73
|
-
throw response;
|
|
74
|
-
}
|
|
75
|
-
const registration_response = response.responses[0];
|
|
76
|
-
if ((registration_response.status.state !== 'success') &&
|
|
77
|
-
(registration_response.status.state !== 'warning')) {
|
|
78
|
-
throw registration_response;
|
|
79
|
-
}
|
|
80
|
-
for (const response_log of registration_response.log) {
|
|
81
|
-
if ((response_log.type === 'success') && (response_log.message_code === 'registration_success')) {
|
|
82
|
-
this.sessionService.handleUpdateSession(registration_response.esolve_id);
|
|
83
|
-
return registration_response.esolve_id;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
throw registration_response;
|
|
87
|
-
}), catchError((errorRes) => {
|
|
88
|
-
return this.errorHandler.handleHttpError('set-registration', errorRes);
|
|
89
|
-
}));
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
EsolveAccountService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: EsolveAccountService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }, { token: i2.EsolveSessionService }, { token: i3.EsolveErrorHandlerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
93
|
-
EsolveAccountService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: EsolveAccountService, providedIn: 'root' });
|
|
94
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: EsolveAccountService, decorators: [{
|
|
95
|
-
type: Injectable,
|
|
96
|
-
args: [{
|
|
97
|
-
providedIn: 'root'
|
|
98
|
-
}]
|
|
99
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
100
|
-
type: Inject,
|
|
101
|
-
args: [ESOLVE_CONNECT_CONFIG]
|
|
102
|
-
}] }, { type: i1.HttpClient }, { type: i2.EsolveSessionService }, { type: i3.EsolveErrorHandlerService }]; } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFjY291bnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9lc29sdmUtYWNjb3VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBaUMsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakYsT0FBTyxFQUFFLEdBQUcsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQVVqRCxNQUFNLE9BQU8sb0JBQW9CO0lBZTdCLFlBQzJDLE1BQTJCLEVBQzFELElBQWdCLEVBQ2hCLGNBQW9DLEVBQ3BDLFlBQXVDO1FBSFIsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBc0I7UUFDcEMsaUJBQVksR0FBWixZQUFZLENBQTJCO1FBbEIzQyxhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBb0JqQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM5QyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7YUFDN0I7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUF2QkQsSUFBVyxPQUFPO1FBQ2QsT0FB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O2lIQXRJUSxvQkFBb0Isa0JBZ0JqQixxQkFBcUI7cUhBaEJ4QixvQkFBb0IsY0FGakIsTUFBTTsyRkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFpQlEsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBpaWYsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgRXNvbHZlQ29ubmVjdENvbmZpZywgRVNPTFZFX0NPTk5FQ1RfQ09ORklHIH0gZnJvbSAnLi4vZXNvbHZlLWNvbm5lY3QuY29uZmlnJztcclxuaW1wb3J0IHsgRXNvbHZlQWRkcmVzcyB9IGZyb20gJy4vZXNvbHZlLWFkZHJlc3MnO1xyXG5pbXBvcnQgeyBFc29sdmVBZGRyZXNzUmVjb3JkIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZWNvcmQnO1xyXG5pbXBvcnQgeyBFc29sdmVSZWdpc3RyYXRpb25EYXRhIH0gZnJvbSAnLi9lc29sdmUtcmVnaXN0cmF0aW9uLWRhdGEnO1xyXG5pbXBvcnQgeyBFc29sdmVTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vZXNvbHZlLXNlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEVzb2x2ZUdldFJlc3BvbnNlLCBFc29sdmVQb3N0UmVzcG9uc2VJdGVtLCBFc29sdmVTZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZC9lc29sdmUtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Vycm9yLWhhbmRsZXIvZXNvbHZlLWVycm9yLWhhbmRsZXIuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVzb2x2ZUFjY291bnRTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgX3VzZXJfaWQgPSAwO1xyXG5cclxuICAgIHB1YmxpYyBnZXQgdXNlcl9pZCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyX2lkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQgdXNlcl9pZCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdmFsdWUgPSAoKHZhbHVlID4gMCkgPyB2YWx1ZSA6IDApO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fdXNlcl9pZCAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fdXNlcl9pZCA9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2U6IEVzb2x2ZVNlc3Npb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNlc3Npb24uc3Vic2NyaWJlKChzZXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzZXNzaW9uLmtleSAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlcl9pZCA9IHNlc3Npb24uaWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHByb2Nlc3NVc2VyQWRkcmVzcyhyZWNvcmRzOiBFc29sdmVBZGRyZXNzUmVjb3JkW10pOiBFc29sdmVBZGRyZXNzW10ge1xyXG4gICAgICAgIGNvbnN0IHVzZXJfYWRkcmVzc2VzOiBFc29sdmVBZGRyZXNzW10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKHJlY29yZHMgJiYgKHRoaXMuX3VzZXJfaWQgPiAwKSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZWNvcmRzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoK3JlY29yZC51c2VyaWQgPT09IHRoaXMuX3VzZXJfaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB1c2VyX2FkZHJlc3Nlcy5wdXNoKG5ldyBFc29sdmVBZGRyZXNzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICArcmVjb3JkLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQucmVjaXBpZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuYWRkcmVzc190eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQucG9ib3gsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5wbGFjZV9uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuc3RyZWV0X251bWJlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN0cmVldCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnN1YnVyYixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNpdHksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5wcm92aW5jZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNvdW50cnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5wb3N0YWxfY29kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5sYXRpdHVkZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgK3JlY29yZC5sb25naXR1ZGVcclxuICAgICAgICAgICAgICAgICAgICApKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHVzZXJfYWRkcmVzc2VzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBZGRyZXNzKCk6IE9ic2VydmFibGU8RXNvbHZlQWRkcmVzc1tdPiB7XHJcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnd3NfaWQnLCB0aGlzLmNvbmZpZy53c2lkKTtcclxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd1c2VyX2lkJywgdGhpcy51c2VyX2lkLnRvU3RyaW5nKCkpO1xyXG5cclxuICAgICAgICByZXR1cm4gaWlmKFxyXG4gICAgICAgICAgICAoKSA9PiAodGhpcy51c2VyX2lkID4gMCksXHJcbiAgICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlQWRkcmVzc1JlY29yZFtdPj4oXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2dldC1hZGRyZXNzZXMucGhwYCxcclxuICAgICAgICAgICAgICAgIHsgcGFyYW1zIH1cclxuICAgICAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1VzZXJBZGRyZXNzKHJlc3BvbnNlLnJlY29yZHMpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgdGhyb3dFcnJvcignTG9nIGluIGlzIHJlcXVpcmVkJylcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdpc3Rlcih1c2VyX3JlZ2lzdHJhdGlvbjogRXNvbHZlUmVnaXN0cmF0aW9uRGF0YSk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgICAgICAgdXNlcjogdXNlcl9yZWdpc3RyYXRpb25cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8RXNvbHZlU2V0UmVzcG9uc2U8RXNvbHZlUG9zdFJlc3BvbnNlSXRlbT4+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL3NldC1yZWdpc3RyYXRpb24ucGhwYCxcclxuICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVzcG9uc2VzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlc3BvbnNlcy5sZW5ndGggPD0gMClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbl9yZXNwb25zZSA9IHJlc3BvbnNlLnJlc3BvbnNlc1swXTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlZ2lzdHJhdGlvbl9yZXNwb25zZS5zdGF0dXMuc3RhdGUgIT09ICdzdWNjZXNzJykgJiZcclxuICAgICAgICAgICAgICAgICAgICAocmVnaXN0cmF0aW9uX3Jlc3BvbnNlLnN0YXR1cy5zdGF0ZSAhPT0gJ3dhcm5pbmcnKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVnaXN0cmF0aW9uX3Jlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzcG9uc2VfbG9nIG9mIHJlZ2lzdHJhdGlvbl9yZXNwb25zZS5sb2cpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHJlc3BvbnNlX2xvZy50eXBlID09PSAnc3VjY2VzcycpICYmIChyZXNwb25zZV9sb2cubWVzc2FnZV9jb2RlID09PSAncmVnaXN0cmF0aW9uX3N1Y2Nlc3MnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLmhhbmRsZVVwZGF0ZVNlc3Npb24ocmVnaXN0cmF0aW9uX3Jlc3BvbnNlLmVzb2x2ZV9pZCBhcyBudW1iZXIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbl9yZXNwb25zZS5lc29sdmVfaWQgYXMgbnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aHJvdyByZWdpc3RyYXRpb25fcmVzcG9uc2U7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlczogSHR0cEVycm9yUmVzcG9uc2UgfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVIdHRwRXJyb3IoJ3NldC1yZWdpc3RyYXRpb24nLCBlcnJvclJlcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFkZHJlc3MtcmVjb3JkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9hdXRoL2Vzb2x2ZS1hZGRyZXNzLXJlY29yZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFc29sdmVBZGRyZXNzUmVjb3JkIHtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICB1c2VyaWQ6IG51bWJlcjtcclxuICAgIHJlY2lwaWVudDogc3RyaW5nO1xyXG4gICAgYWRkcmVzc190eXBlOiBFc29sdmVBZGRyZXNzVHlwZTtcclxuICAgIHBvYm94OiBzdHJpbmc7XHJcbiAgICBwbGFjZV9uYW1lOiBzdHJpbmc7XHJcbiAgICBzdHJlZXRfbnVtYmVyOiBzdHJpbmc7XHJcbiAgICBzdHJlZXQ6IHN0cmluZztcclxuICAgIHN1YnVyYjogc3RyaW5nO1xyXG4gICAgY2l0eTogc3RyaW5nO1xyXG4gICAgcHJvdmluY2U6IHN0cmluZztcclxuICAgIGNvdW50cnk6IHN0cmluZztcclxuICAgIHBvc3RhbF9jb2RlOiBzdHJpbmc7XHJcbiAgICBsYXRpdHVkZTogbnVtYmVyO1xyXG4gICAgbG9uZ2l0dWRlOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEVzb2x2ZUFkZHJlc3NUeXBlID0gJ3BoeXNpY2FsJyB8ICdwb3N0YWwnO1xyXG4iXX0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export class EsolveAddress {
|
|
2
|
-
constructor(id, recipient, address_type, pobox, place_name, street_number, street, suburb, city, province, country, postal_code, latitude, longitude) {
|
|
3
|
-
this.id = id;
|
|
4
|
-
this.recipient = recipient;
|
|
5
|
-
this.address_type = address_type;
|
|
6
|
-
this.pobox = pobox;
|
|
7
|
-
this.place_name = place_name;
|
|
8
|
-
this.street_number = street_number;
|
|
9
|
-
this.street = street;
|
|
10
|
-
this.suburb = suburb;
|
|
11
|
-
this.city = city;
|
|
12
|
-
this.province = province;
|
|
13
|
-
this.country = country;
|
|
14
|
-
this.postal_code = postal_code;
|
|
15
|
-
this.latitude = latitude;
|
|
16
|
-
this.longitude = longitude;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWFkZHJlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2F1dGgvZXNvbHZlLWFkZHJlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGFBQWE7SUFDdEIsWUFDVyxFQUFVLEVBQ1YsU0FBaUIsRUFDakIsWUFBK0IsRUFDL0IsS0FBYSxFQUNiLFVBQWtCLEVBQ2xCLGFBQXFCLEVBQ3JCLE1BQWMsRUFDZCxNQUFjLEVBQ2QsSUFBWSxFQUNaLFFBQWdCLEVBQ2hCLE9BQWUsRUFDZixXQUFtQixFQUNuQixRQUFnQixFQUNoQixTQUFpQjtRQWJqQixPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFDL0IsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ3hCLENBQUM7Q0FDUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVzb2x2ZUFkZHJlc3NUeXBlIH0gZnJvbSAnLi9lc29sdmUtYWRkcmVzcy1yZWNvcmQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEVzb2x2ZUFkZHJlc3Mge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGlkOiBudW1iZXIsXHJcbiAgICAgICAgcHVibGljIHJlY2lwaWVudDogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBhZGRyZXNzX3R5cGU6IEVzb2x2ZUFkZHJlc3NUeXBlLFxyXG4gICAgICAgIHB1YmxpYyBwb2JveDogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBwbGFjZV9uYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIHN0cmVldF9udW1iZXI6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgc3RyZWV0OiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIHN1YnVyYjogc3RyaW5nLFxyXG4gICAgICAgIHB1YmxpYyBjaXR5OiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIHByb3ZpbmNlOiBzdHJpbmcsXHJcbiAgICAgICAgcHVibGljIGNvdW50cnk6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgcG9zdGFsX2NvZGU6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWMgbGF0aXR1ZGU6IG51bWJlcixcclxuICAgICAgICBwdWJsaWMgbG9uZ2l0dWRlOiBudW1iZXJcclxuICAgICkgeyB9XHJcbn1cclxuIl19
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { HttpParams, HttpHeaders } from '@angular/common/http';
|
|
3
|
-
import { throwError } from 'rxjs';
|
|
4
|
-
import { tap, catchError, map } from 'rxjs/operators';
|
|
5
|
-
import { ESOLVE_CONNECT_CONFIG } from '../esolve-connect.config';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/common/http";
|
|
8
|
-
import * as i2 from "./esolve-session.service";
|
|
9
|
-
import * as i3 from "../shared/error-handler/esolve-error-handler.service";
|
|
10
|
-
export class EsolveAuthService {
|
|
11
|
-
constructor(config, http, session, errorHandler) {
|
|
12
|
-
this.config = config;
|
|
13
|
-
this.http = http;
|
|
14
|
-
this.session = session;
|
|
15
|
-
this.errorHandler = errorHandler;
|
|
16
|
-
}
|
|
17
|
-
checkAccessToken(session) {
|
|
18
|
-
var _a;
|
|
19
|
-
session = session || this.session.currentSession;
|
|
20
|
-
const token = (_a = session === null || session === void 0 ? void 0 : session.key) !== null && _a !== void 0 ? _a : '';
|
|
21
|
-
const params = new HttpParams({
|
|
22
|
-
fromObject: {
|
|
23
|
-
key: token,
|
|
24
|
-
ws_id: this.config.wsid
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
return this.http.get(`${this.config.api_url}/service/get-access-token.php`, {
|
|
28
|
-
params,
|
|
29
|
-
headers: new HttpHeaders({
|
|
30
|
-
'Accept-Language': '*'
|
|
31
|
-
})
|
|
32
|
-
}).pipe(map(responseData => {
|
|
33
|
-
if ((responseData.type === 'error') ||
|
|
34
|
-
(responseData.type === 'exception') ||
|
|
35
|
-
(!responseData.additional_data.key_okay)) {
|
|
36
|
-
throw responseData;
|
|
37
|
-
}
|
|
38
|
-
responseData.additional_data.key = token;
|
|
39
|
-
return responseData;
|
|
40
|
-
})).toPromise();
|
|
41
|
-
}
|
|
42
|
-
getAccessToken(email, password, anonymous = false) {
|
|
43
|
-
let params = new HttpParams();
|
|
44
|
-
if (anonymous) {
|
|
45
|
-
params = params.set('anonymous', '1');
|
|
46
|
-
}
|
|
47
|
-
if (email !== '') {
|
|
48
|
-
params = params.set('email', email);
|
|
49
|
-
}
|
|
50
|
-
if (password !== '') {
|
|
51
|
-
params = params.set('password', password);
|
|
52
|
-
}
|
|
53
|
-
params = params.set('ws_id', this.config.wsid);
|
|
54
|
-
return this.http.get(`${this.config.api_url}/service/get-access-token.php`, {
|
|
55
|
-
params,
|
|
56
|
-
headers: new HttpHeaders({
|
|
57
|
-
'Accept-Language': '*'
|
|
58
|
-
})
|
|
59
|
-
}).pipe(tap(responseData => {
|
|
60
|
-
if ((responseData.type === 'error') ||
|
|
61
|
-
(responseData.type === 'exception')) {
|
|
62
|
-
throw responseData;
|
|
63
|
-
}
|
|
64
|
-
}), catchError(this.handleError), tap(responseData => {
|
|
65
|
-
this.handleAuthentication(responseData);
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
autoLogin() {
|
|
69
|
-
this.session.restore(this.handleExpiration(), () => {
|
|
70
|
-
this.getAccessToken('', '', true).toPromise().then(_ => { }, error => {
|
|
71
|
-
console.log(error);
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
login(email, password) {
|
|
76
|
-
const body = {
|
|
77
|
-
login: {
|
|
78
|
-
email,
|
|
79
|
-
password
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
return this.http.post(`${this.config.api_url}/service/set-login.php`, body, {
|
|
83
|
-
headers: {
|
|
84
|
-
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
|
|
85
|
-
},
|
|
86
|
-
params: {
|
|
87
|
-
ws_id: this.config.wsid
|
|
88
|
-
},
|
|
89
|
-
responseType: 'json',
|
|
90
|
-
observe: 'body'
|
|
91
|
-
}).pipe(map(response => {
|
|
92
|
-
if ((response.responses === undefined) ||
|
|
93
|
-
(response.responses.length <= 0)) {
|
|
94
|
-
throw response;
|
|
95
|
-
}
|
|
96
|
-
const login_response = response.responses[0];
|
|
97
|
-
if ((login_response.status.state !== 'success') &&
|
|
98
|
-
(login_response.status.state !== 'warning')) {
|
|
99
|
-
throw login_response;
|
|
100
|
-
}
|
|
101
|
-
for (const response_log of login_response.log) {
|
|
102
|
-
if ((response_log.type === 'success') && (response_log.message_code === 'login_success')) {
|
|
103
|
-
this.session.handleUpdateSession(login_response.esolve_id);
|
|
104
|
-
return login_response.esolve_id;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
throw login_response;
|
|
108
|
-
}), catchError((errorRes) => {
|
|
109
|
-
return this.errorHandler.handleHttpError('set-login', errorRes);
|
|
110
|
-
}));
|
|
111
|
-
}
|
|
112
|
-
logout() {
|
|
113
|
-
this.session.clearTimer();
|
|
114
|
-
this.getAccessToken('', '', true).toPromise().then(_ => { }, error => {
|
|
115
|
-
console.log(error);
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
// Handlers
|
|
119
|
-
handleExpiration() {
|
|
120
|
-
return (session) => {
|
|
121
|
-
this.checkAccessToken(session).then((response) => {
|
|
122
|
-
this.handleAuthentication(response);
|
|
123
|
-
}, () => {
|
|
124
|
-
this.logout();
|
|
125
|
-
});
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
handleAuthentication(responseData) {
|
|
129
|
-
if (responseData.additional_data.key) {
|
|
130
|
-
this.session.handleSession(responseData.additional_data.user_id, responseData.additional_data.key, +responseData.additional_data.expiry_time, +responseData.additional_data.expires, this.handleExpiration());
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
handleError(errorRes) {
|
|
134
|
-
const error = {
|
|
135
|
-
message: 'An unknown error occurred',
|
|
136
|
-
data: {}
|
|
137
|
-
};
|
|
138
|
-
if ((!errorRes.type) ||
|
|
139
|
-
(!errorRes.service_type) ||
|
|
140
|
-
(!errorRes.message)) {
|
|
141
|
-
return throwError(error);
|
|
142
|
-
}
|
|
143
|
-
if (errorRes.message.trim() !== '') {
|
|
144
|
-
error.message = errorRes.message;
|
|
145
|
-
}
|
|
146
|
-
if (errorRes.additional_data) {
|
|
147
|
-
error.data = errorRes.additional_data;
|
|
148
|
-
}
|
|
149
|
-
return throwError(error);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
EsolveAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: EsolveAuthService, deps: [{ token: ESOLVE_CONNECT_CONFIG }, { token: i1.HttpClient }, { token: i2.EsolveSessionService }, { token: i3.EsolveErrorHandlerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
153
|
-
EsolveAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: EsolveAuthService, providedIn: 'root' });
|
|
154
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: EsolveAuthService, decorators: [{
|
|
155
|
-
type: Injectable,
|
|
156
|
-
args: [{
|
|
157
|
-
providedIn: 'root'
|
|
158
|
-
}]
|
|
159
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
160
|
-
type: Inject,
|
|
161
|
-
args: [ESOLVE_CONNECT_CONFIG]
|
|
162
|
-
}] }, { type: i1.HttpClient }, { type: i2.EsolveSessionService }, { type: i3.EsolveErrorHandlerService }]; } });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9lc29sdmUtYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFFSCxVQUFVLEVBRVYsV0FBVyxFQUNkLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7O0FBc0J0RixNQUFNLE9BQU8saUJBQWlCO0lBQzFCLFlBQzJDLE1BQTJCLEVBQzFELElBQWdCLEVBQ2hCLE9BQTZCLEVBQzdCLFlBQXVDO1FBSFIsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQUM3QixpQkFBWSxHQUFaLFlBQVksQ0FBMkI7SUFDL0MsQ0FBQztJQUVHLGdCQUFnQixDQUFDLE9BQXVCOztRQUM1QyxPQUFPLEdBQUcsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBRWpELE1BQU0sS0FBSyxHQUFHLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEdBQUcsbUNBQUksRUFBRSxDQUFDO1FBRWpDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDO1lBQzFCLFVBQVUsRUFBRTtnQkFDUixHQUFHLEVBQUUsS0FBSztnQkFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJ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WUFBWSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQ3pDLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUMxQixDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRU8sV0FBVyxDQUFDLFFBQWdDO1FBQ2hELE1BQU0sS0FBSyxHQUFHO1lBQ1YsT0FBTyxFQUFFLDJCQUEyQjtZQUNwQyxJQUFJLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFFRixJQUNJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQ3JCO1lBQ0UsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7UUFFRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hDLEtBQUssQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztTQUNwQztRQUVELElBQUksUUFBUSxDQUFDLGVBQWUsRUFBRTtZQUMxQixLQUFLLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7U0FDekM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOzs4R0ExTlEsaUJBQWlCLGtCQUVkLHFCQUFxQjtrSEFGeEIsaUJBQWlCLGNBRmQsTUFBTTsyRkFFVCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFHUSxNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgSHR0cENsaWVudCxcclxuICAgIEh0dHBQYXJhbXMsXHJcbiAgICBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgIEh0dHBIZWFkZXJzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAsIGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZUNvbm5lY3RDb25maWcsIEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IEVzb2x2ZVNldFJlc3BvbnNlLCBFc29sdmVQb3N0UmVzcG9uc2VJdGVtIH0gZnJvbSAnLi4vc2hhcmVkL2Vzb2x2ZS1yZXNwb25zZSc7XHJcbmltcG9ydCB7IEVzb2x2ZVNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9lc29sdmUtc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXNvbHZlU2Vzc2lvbiB9IGZyb20gJy4vZXNvbHZlLXNlc3Npb24nO1xyXG5pbXBvcnQgeyBFc29sdmVFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL2Vycm9yLWhhbmRsZXIvZXNvbHZlLWVycm9yLWhhbmRsZXIuc2VydmljZSc7XHJcblxyXG5pbnRlcmZhY2UgRXNvbHZlQXV0aFJlc3BvbnNlRGF0YSB7XHJcbiAgICBzZXJ2aWNlX3R5cGU6IHN0cmluZztcclxuICAgIHR5cGU6IHN0cmluZztcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIGFkZGl0aW9uYWxfZGF0YToge1xyXG4gICAgICAgIGV4cGlyZXM6IG51bWJlcixcclxuICAgICAgICBleHBpcnlfdGltZTogbnVtYmVyLFxyXG4gICAgICAgIHVzZXJfaWQ6IG51bWJlcixcclxuICAgICAgICBrZXk/OiBzdHJpbmcsXHJcbiAgICAgICAga2V5X29rYXk/OiBib29sZWFuLFxyXG4gICAgfTtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc29sdmVBdXRoU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWcsXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvbjogRXNvbHZlU2Vzc2lvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVzb2x2ZUVycm9ySGFuZGxlclNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0FjY2Vzc1Rva2VuKHNlc3Npb24/OiBFc29sdmVTZXNzaW9uKTogUHJvbWlzZTxFc29sdmVBdXRoUmVzcG9uc2VEYXRhPiB7XHJcbiAgICAgICAgc2Vzc2lvbiA9IHNlc3Npb24gfHwgdGhpcy5zZXNzaW9uLmN1cnJlbnRTZXNzaW9uO1xyXG5cclxuICAgICAgICBjb25zdCB0b2tlbiA9IHNlc3Npb24/LmtleSA/PyAnJztcclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe1xyXG4gICAgICAgICAgICBmcm9tT2JqZWN0OiB7XHJcbiAgICAgICAgICAgICAgICBrZXk6IHRva2VuLFxyXG4gICAgICAgICAgICAgICAgd3NfaWQ6IHRoaXMuY29uZmlnLndzaWRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxFc29sdmVBdXRoUmVzcG9uc2VEYXRhPihcclxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9nZXQtYWNjZXNzLXRva2VuLnBocGAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6ICcqJ1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlRGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlRGF0YS50eXBlID09PSAnZXJyb3InKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZURhdGEudHlwZSA9PT0gJ2V4Y2VwdGlvbicpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKCFyZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhLmtleV9va2F5KVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2VEYXRhO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlRGF0YS5hZGRpdGlvbmFsX2RhdGEua2V5ID0gdG9rZW47XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRBY2Nlc3NUb2tlbihcclxuICAgICAgICBlbWFpbDogc3RyaW5nLFxyXG4gICAgICAgIHBhc3N3b3JkOiBzdHJpbmcsXHJcbiAgICAgICAgYW5vbnltb3VzOiBib29sZWFuID0gZmFsc2VcclxuICAgICk6IE9ic2VydmFibGU8RXNvbHZlQXV0aFJlc3BvbnNlRGF0YT4ge1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG5cclxuICAgICAgICBpZiAoYW5vbnltb3VzKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2Fub255bW91cycsICcxJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZW1haWwgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2VtYWlsJywgZW1haWwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHBhc3N3b3JkICE9PSAnJykge1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3dzX2lkJywgdGhpcy5jb25maWcud3NpZCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEVzb2x2ZUF1dGhSZXNwb25zZURhdGE+KFxyXG4gICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9zZXJ2aWNlL2dldC1hY2Nlc3MtdG9rZW4ucGhwYCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogJyonXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5waXBlKFxyXG4gICAgICAgICAgICB0YXAocmVzcG9uc2VEYXRhID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2VEYXRhLnR5cGUgPT09ICdlcnJvcicpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlRGF0YS50eXBlID09PSAnZXhjZXB0aW9uJylcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlRGF0YTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvciksXHJcbiAgICAgICAgICAgIHRhcChyZXNwb25zZURhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBdXRoZW50aWNhdGlvbihyZXNwb25zZURhdGEpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGF1dG9Mb2dpbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlc3Npb24ucmVzdG9yZShcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHBpcmF0aW9uKCksXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWNjZXNzVG9rZW4oJycsICcnLCB0cnVlKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgIF8gPT4geyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsb2dpbihlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgICAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICAgICAgICBsb2dpbjoge1xyXG4gICAgICAgICAgICAgICAgZW1haWwsXHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PEVzb2x2ZVNldFJlc3BvbnNlPEVzb2x2ZVBvc3RSZXNwb25zZUl0ZW0+PihcclxuICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vc2VydmljZS9zZXQtbG9naW4ucGhwYCxcclxuICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTg7J1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHdzX2lkOiB0aGlzLmNvbmZpZy53c2lkXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiAnYm9keSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAocmVzcG9uc2UucmVzcG9uc2VzID09PSB1bmRlZmluZWQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlLnJlc3BvbnNlcy5sZW5ndGggPD0gMClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGxvZ2luX3Jlc3BvbnNlID0gcmVzcG9uc2UucmVzcG9uc2VzWzBdO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAobG9naW5fcmVzcG9uc2Uuc3RhdHVzLnN0YXRlICE9PSAnc3VjY2VzcycpICYmXHJcbiAgICAgICAgICAgICAgICAgICAgKGxvZ2luX3Jlc3BvbnNlLnN0YXR1cy5zdGF0ZSAhPT0gJ3dhcm5pbmcnKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbG9naW5fcmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZXNwb25zZV9sb2cgb2YgbG9naW5fcmVzcG9uc2UubG9nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKChyZXNwb25zZV9sb2cudHlwZSA9PT0gJ3N1Y2Nlc3MnKSAmJiAocmVzcG9uc2VfbG9nLm1lc3NhZ2VfY29kZSA9PT0gJ2xvZ2luX3N1Y2Nlc3MnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb24uaGFuZGxlVXBkYXRlU2Vzc2lvbihsb2dpbl9yZXNwb25zZS5lc29sdmVfaWQgYXMgbnVtYmVyKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dpbl9yZXNwb25zZS5lc29sdmVfaWQgYXMgbnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBsb2dpbl9yZXNwb25zZTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzOiBIdHRwRXJyb3JSZXNwb25zZSB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUh0dHBFcnJvcignc2V0LWxvZ2luJywgZXJyb3JSZXMpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvZ291dCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlc3Npb24uY2xlYXJUaW1lcigpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWNjZXNzVG9rZW4oJycsICcnLCB0cnVlKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgICBfID0+IHsgfSxcclxuICAgICAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGVyc1xyXG4gICAgcHJpdmF0ZSBoYW5kbGVFeHBpcmF0aW9uKCk6IChzZXNzaW9uPzogRXNvbHZlU2Vzc2lvbikgPT4gdm9pZCB7XHJcbiAgICAgICAgcmV0dXJuIChzZXNzaW9uPzogRXNvbHZlU2Vzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrQWNjZXNzVG9rZW4oc2Vzc2lvbikudGhlbihcclxuICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQXV0aGVudGljYXRpb24ocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVBdXRoZW50aWNhdGlvbihyZXNwb25zZURhdGE6IEVzb2x2ZUF1dGhSZXNwb25zZURhdGEpOiB2b2lkIHtcclxuICAgICAgICBpZiAocmVzcG9uc2VEYXRhLmFkZGl0aW9uYWxfZGF0YS5rZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXNzaW9uLmhhbmRsZVNlc3Npb24oXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhLnVzZXJfaWQsXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhLmtleSxcclxuICAgICAgICAgICAgICAgICtyZXNwb25zZURhdGEuYWRkaXRpb25hbF9kYXRhLmV4cGlyeV90aW1lLFxyXG4gICAgICAgICAgICAgICAgK3Jlc3BvbnNlRGF0YS5hZGRpdGlvbmFsX2RhdGEuZXhwaXJlcyxcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXhwaXJhdGlvbigpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3JSZXM6IEVzb2x2ZUF1dGhSZXNwb25zZURhdGEpOiBPYnNlcnZhYmxlPG5ldmVyPiB7XHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkJyxcclxuICAgICAgICAgICAgZGF0YToge31cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICghZXJyb3JSZXMudHlwZSkgfHxcclxuICAgICAgICAgICAgKCFlcnJvclJlcy5zZXJ2aWNlX3R5cGUpIHx8XHJcbiAgICAgICAgICAgICghZXJyb3JSZXMubWVzc2FnZSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVycm9yUmVzLm1lc3NhZ2UudHJpbSgpICE9PSAnJykge1xyXG4gICAgICAgICAgICBlcnJvci5tZXNzYWdlID0gZXJyb3JSZXMubWVzc2FnZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnJvclJlcy5hZGRpdGlvbmFsX2RhdGEpIHtcclxuICAgICAgICAgICAgZXJyb3IuZGF0YSA9IGVycm9yUmVzLmFkZGl0aW9uYWxfZGF0YTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXJlZ2lzdHJhdGlvbi1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9hdXRoL2Vzb2x2ZS1yZWdpc3RyYXRpb24tZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFc29sdmVSZWdpc3RyYXRpb25EYXRhIHtcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICBwYXNzd29yZDogc3RyaW5nO1xyXG4gICAgY29uZmlybV9wYXNzd29yZD86IHN0cmluZztcclxuICAgIHRpdGxlPzogc3RyaW5nO1xyXG4gICAgZmlyc3RuYW1lPzogc3RyaW5nO1xyXG4gICAgc3VybmFtZT86IHN0cmluZztcclxuICAgIGxveWFsdHludW1iZXI/OiBzdHJpbmc7XHJcbiAgICBpZG51bWJlcj86IHN0cmluZztcclxuICAgIHRlbG51bWJlcj86IHN0cmluZztcclxuICAgIGNlbGxudW1iZXI/OiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export class EsolveSession {
|
|
2
|
-
constructor(id = -1, _key = '', _key_expiration_date) {
|
|
3
|
-
this.id = id;
|
|
4
|
-
this._key = _key;
|
|
5
|
-
this._key_expiration_date = _key_expiration_date;
|
|
6
|
-
}
|
|
7
|
-
get key() {
|
|
8
|
-
return this._key;
|
|
9
|
-
}
|
|
10
|
-
get expired() {
|
|
11
|
-
const current_date = new Date();
|
|
12
|
-
return ((this._key_expiration_date === undefined) ||
|
|
13
|
-
(current_date >= this._key_expiration_date));
|
|
14
|
-
}
|
|
15
|
-
get authenticated() {
|
|
16
|
-
return (this.id > 0);
|
|
17
|
-
}
|
|
18
|
-
get valid() {
|
|
19
|
-
return ((this._key !== '') &&
|
|
20
|
-
(this._key_expiration_date !== undefined) &&
|
|
21
|
-
(this.id >= 0));
|
|
22
|
-
}
|
|
23
|
-
updateUser(user_id) {
|
|
24
|
-
this.id = user_id;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXNlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lc29sdmUtY29ubmVjdC9zcmMvbGliL2F1dGgvZXNvbHZlLXNlc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGFBQWE7SUFDdEIsWUFDVyxLQUFhLENBQUMsQ0FBQyxFQUNkLE9BQWUsRUFBRSxFQUNqQixvQkFBMkI7UUFGNUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNkLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFPO0lBQ25DLENBQUM7SUFFTCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFFaEMsT0FBTyxDQUNILENBQUMsSUFBSSxDQUFDLG9CQUFvQixLQUFLLFNBQVMsQ0FBQztZQUN6QyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FDOUMsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxDQUNILENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDbEIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEtBQUssU0FBUyxDQUFDO1lBQ3pDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FDakIsQ0FBQztJQUNOLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBZTtRQUN0QixJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRXNvbHZlU2Vzc2lvbiB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgaWQ6IG51bWJlciA9IC0xLFxyXG4gICAgICAgIHByaXZhdGUgX2tleTogc3RyaW5nID0gJycsXHJcbiAgICAgICAgcHJpdmF0ZSBfa2V5X2V4cGlyYXRpb25fZGF0ZT86IERhdGVcclxuICAgICkgeyB9XHJcblxyXG4gICAgZ2V0IGtleSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9rZXk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGV4cGlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudF9kYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgKHRoaXMuX2tleV9leHBpcmF0aW9uX2RhdGUgPT09IHVuZGVmaW5lZCkgfHxcclxuICAgICAgICAgICAgKGN1cnJlbnRfZGF0ZSA+PSB0aGlzLl9rZXlfZXhwaXJhdGlvbl9kYXRlKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGF1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLmlkID4gMCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICh0aGlzLl9rZXkgIT09ICcnKSAmJlxyXG4gICAgICAgICAgICAodGhpcy5fa2V5X2V4cGlyYXRpb25fZGF0ZSAhPT0gdW5kZWZpbmVkKSAmJlxyXG4gICAgICAgICAgICAodGhpcy5pZCA+PSAwKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlVXNlcih1c2VyX2lkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlkID0gdXNlcl9pZDtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import { ESOLVE_CONNECT_CONFIG } from '../esolve-connect.config';
|
|
4
|
-
import { EsolveSession } from './esolve-session';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class EsolveSessionService {
|
|
7
|
-
constructor(config) {
|
|
8
|
-
this.config = config;
|
|
9
|
-
this.storage_key = 'ngEslvUserSession';
|
|
10
|
-
this.setStorageKey();
|
|
11
|
-
this._session = new BehaviorSubject(new EsolveSession(0, ''));
|
|
12
|
-
this.session = this._session.asObservable();
|
|
13
|
-
}
|
|
14
|
-
get currentSession() {
|
|
15
|
-
return this._session.value;
|
|
16
|
-
}
|
|
17
|
-
setStorageKey() {
|
|
18
|
-
if ((typeof this.config.user_session_storage_key === 'string') &&
|
|
19
|
-
(this.config.user_session_storage_key !== '')) {
|
|
20
|
-
this.storage_key = this.config.user_session_storage_key;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
startTimer(callback, duration) {
|
|
24
|
-
this.key_expiration_timer = setTimeout(callback, duration);
|
|
25
|
-
}
|
|
26
|
-
clearTimer() {
|
|
27
|
-
if (this.key_expiration_timer) {
|
|
28
|
-
clearTimeout(this.key_expiration_timer);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
restore(expirationCallback, invalidSessionCallback) {
|
|
32
|
-
if (!this.currentSession.valid) {
|
|
33
|
-
const stored_session_json = localStorage.getItem(this.storage_key);
|
|
34
|
-
const stored_session = (stored_session_json ? JSON.parse(stored_session_json) : null);
|
|
35
|
-
if (!stored_session) {
|
|
36
|
-
invalidSessionCallback();
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
const expiration_date = new Date(stored_session._key_expiration_date);
|
|
40
|
-
const loaded_session = new EsolveSession(stored_session.id, stored_session._key, expiration_date);
|
|
41
|
-
if (!loaded_session.expired) {
|
|
42
|
-
this._session.next(loaded_session);
|
|
43
|
-
const expiration_duration = expiration_date.getTime() - new Date().getTime();
|
|
44
|
-
this.startTimer(expirationCallback, expiration_duration);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
expirationCallback(loaded_session);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
handleSession(user_id, key, expiry_time, expires, expirationCallback) {
|
|
52
|
-
const expiration_date = new Date(expiry_time * 1000);
|
|
53
|
-
const session = new EsolveSession(user_id, key, expiration_date);
|
|
54
|
-
localStorage.setItem(this.storage_key, JSON.stringify(session));
|
|
55
|
-
this._session.next(session);
|
|
56
|
-
this.startTimer(expirationCallback, expires * 1000);
|
|
57
|
-
}
|
|
58
|
-
handleUpdateSession(user_id, callback) {
|
|
59
|
-
const current_session = this.currentSession;
|
|
60
|
-
current_session.updateUser(user_id);
|
|
61
|
-
localStorage.setItem(this.storage_key, JSON.stringify(current_session));
|
|
62
|
-
this._session.next(current_session);
|
|
63
|
-
if (typeof callback === 'function') {
|
|
64
|
-
callback();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
EsolveSessionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: EsolveSessionService, deps: [{ token: ESOLVE_CONNECT_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
69
|
-
EsolveSessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: EsolveSessionService, providedIn: 'root' });
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.0", ngImport: i0, type: EsolveSessionService, decorators: [{
|
|
71
|
-
type: Injectable,
|
|
72
|
-
args: [{
|
|
73
|
-
providedIn: 'root'
|
|
74
|
-
}]
|
|
75
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
76
|
-
type: Inject,
|
|
77
|
-
args: [ESOLVE_CONNECT_CONFIG]
|
|
78
|
-
}] }]; } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXNlc3Npb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvYXV0aC9lc29sdmUtc2Vzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUF1QixxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFLakQsTUFBTSxPQUFPLG9CQUFvQjtJQVc3QixZQUMyQyxNQUEyQjtRQUEzQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQVY5RCxnQkFBVyxHQUFHLG1CQUFtQixDQUFDO1FBWXRDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLGFBQWEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQVZELElBQVcsY0FBYztRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFVTyxhQUFhO1FBQ2pCLElBQ0ksQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsd0JBQXdCLEtBQUssUUFBUSxDQUFDO1lBQzFELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsS0FBSyxFQUFFLENBQUMsRUFDL0M7WUFDRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsd0JBQXdC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QUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQWFRLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEVzb2x2ZUNvbm5lY3RDb25maWcsIEVTT0xWRV9DT05ORUNUX0NPTkZJRyB9IGZyb20gJy4uL2Vzb2x2ZS1jb25uZWN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IEVzb2x2ZVN0b3JlZFNlc3Npb24gfSBmcm9tICcuL2Vzb2x2ZS1zdG9yZWQtc2Vzc2lvbic7XHJcbmltcG9ydCB7IEVzb2x2ZVNlc3Npb24gfSBmcm9tICcuL2Vzb2x2ZS1zZXNzaW9uJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNvbHZlU2Vzc2lvblNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBrZXlfZXhwaXJhdGlvbl90aW1lcjogYW55O1xyXG4gICAgcHJpdmF0ZSBzdG9yYWdlX2tleSA9ICduZ0VzbHZVc2VyU2Vzc2lvbic7XHJcblxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogQmVoYXZpb3JTdWJqZWN0PEVzb2x2ZVNlc3Npb24+O1xyXG4gICAgcHVibGljIHNlc3Npb246IE9ic2VydmFibGU8RXNvbHZlU2Vzc2lvbj47XHJcblxyXG4gICAgcHVibGljIGdldCBjdXJyZW50U2Vzc2lvbigpOiBFc29sdmVTZXNzaW9uIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbi52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEVTT0xWRV9DT05ORUNUX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IEVzb2x2ZUNvbm5lY3RDb25maWdcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RvcmFnZUtleSgpO1xyXG4gICAgICAgIHRoaXMuX3Nlc3Npb24gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEVzb2x2ZVNlc3Npb24+KG5ldyBFc29sdmVTZXNzaW9uKDAsICcnKSk7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uID0gdGhpcy5fc2Vzc2lvbi5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFN0b3JhZ2VLZXkoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAodHlwZW9mIHRoaXMuY29uZmlnLnVzZXJfc2Vzc2lvbl9zdG9yYWdlX2tleSA9PT0gJ3N0cmluZycpICYmXHJcbiAgICAgICAgICAgICh0aGlzLmNvbmZpZy51c2VyX3Nlc3Npb25fc3RvcmFnZV9rZXkgIT09ICcnKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2Vfa2V5ID0gdGhpcy5jb25maWcudXNlcl9zZXNzaW9uX3N0b3JhZ2Vfa2V5O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXJ0VGltZXIoY2FsbGJhY2s6ICgpID0+IHZvaWQsIGR1cmF0aW9uOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmtleV9leHBpcmF0aW9uX3RpbWVyID0gc2V0VGltZW91dChjYWxsYmFjaywgZHVyYXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjbGVhclRpbWVyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmtleV9leHBpcmF0aW9uX3RpbWVyKSB7XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmtleV9leHBpcmF0aW9uX3RpbWVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlc3RvcmUoXHJcbiAgICAgICAgZXhwaXJhdGlvbkNhbGxiYWNrOiAoc2Vzc2lvbj86IEVzb2x2ZVNlc3Npb24pID0+IHZvaWQsXHJcbiAgICAgICAgaW52YWxpZFNlc3Npb25DYWxsYmFjazogKCkgPT4gdm9pZFxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTZXNzaW9uLnZhbGlkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlZF9zZXNzaW9uX2pzb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2Vfa2V5KTtcclxuICAgICAgICAgICAgY29uc3Qgc3RvcmVkX3Nlc3Npb246IEVzb2x2ZVN0b3JlZFNlc3Npb24gPSAoc3RvcmVkX3Nlc3Npb25fanNvbiA/IEpTT04ucGFyc2Uoc3RvcmVkX3Nlc3Npb25fanNvbikgOiBudWxsKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghc3RvcmVkX3Nlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgIGludmFsaWRTZXNzaW9uQ2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZXhwaXJhdGlvbl9kYXRlID0gbmV3IERhdGUoc3RvcmVkX3Nlc3Npb24uX2tleV9leHBpcmF0aW9uX2RhdGUpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgbG9hZGVkX3Nlc3Npb24gPSBuZXcgRXNvbHZlU2Vzc2lvbihcclxuICAgICAgICAgICAgICAgIHN0b3JlZF9zZXNzaW9uLmlkLFxyXG4gICAgICAgICAgICAgICAgc3RvcmVkX3Nlc3Npb24uX2tleSxcclxuICAgICAgICAgICAgICAgIGV4cGlyYXRpb25fZGF0ZVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFsb2FkZWRfc2Vzc2lvbi5leHBpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLm5leHQobG9hZGVkX3Nlc3Npb24pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXhwaXJhdGlvbl9kdXJhdGlvbiA9IGV4cGlyYXRpb25fZGF0ZS5nZXRUaW1lKCkgLSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lcihleHBpcmF0aW9uQ2FsbGJhY2ssIGV4cGlyYXRpb25fZHVyYXRpb24pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXhwaXJhdGlvbkNhbGxiYWNrKGxvYWRlZF9zZXNzaW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlU2Vzc2lvbihcclxuICAgICAgICB1c2VyX2lkOiBudW1iZXIsXHJcbiAgICAgICAga2V5OiBzdHJpbmcsXHJcbiAgICAgICAgZXhwaXJ5X3RpbWU6IG51bWJlcixcclxuICAgICAgICBleHBpcmVzOiBudW1iZXIsXHJcbiAgICAgICAgZXhwaXJhdGlvbkNhbGxiYWNrOiAoKSA9PiB2b2lkXHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBleHBpcmF0aW9uX2RhdGUgPSBuZXcgRGF0ZShleHBpcnlfdGltZSAqIDEwMDApO1xyXG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgRXNvbHZlU2Vzc2lvbih1c2VyX2lkLCBrZXksIGV4cGlyYXRpb25fZGF0ZSk7XHJcblxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZV9rZXksIEpTT04uc3RyaW5naWZ5KHNlc3Npb24pKTtcclxuICAgICAgICB0aGlzLl9zZXNzaW9uLm5leHQoc2Vzc2lvbik7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVyKGV4cGlyYXRpb25DYWxsYmFjaywgZXhwaXJlcyAqIDEwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVVcGRhdGVTZXNzaW9uKHVzZXJfaWQ6IG51bWJlciwgY2FsbGJhY2s/OiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudF9zZXNzaW9uID0gdGhpcy5jdXJyZW50U2Vzc2lvbjtcclxuICAgICAgICBjdXJyZW50X3Nlc3Npb24udXBkYXRlVXNlcih1c2VyX2lkKTtcclxuXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlX2tleSwgSlNPTi5zdHJpbmdpZnkoY3VycmVudF9zZXNzaW9uKSk7XHJcbiAgICAgICAgdGhpcy5fc2Vzc2lvbi5uZXh0KGN1cnJlbnRfc2Vzc2lvbik7XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXN0b3JlZC1zZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZXNvbHZlLWNvbm5lY3Qvc3JjL2xpYi9hdXRoL2Vzb2x2ZS1zdG9yZWQtc2Vzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFc29sdmVTdG9yZWRTZXNzaW9uIHtcclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICBfa2V5OiBzdHJpbmc7XHJcbiAgICBfa2V5X2V4cGlyYXRpb25fZGF0ZTogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|