@sambath999/localize-token 12.0.7 → 12.0.8
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/esm2020/lib/localize.api.service.mjs +136 -0
- package/esm2020/lib/localize.token.mjs +54 -0
- package/esm2020/lib/localize.token.module.mjs +22 -0
- package/esm2020/lib/localize.token.service.mjs +62 -0
- package/esm2020/lib/localize.token.storage.mjs +101 -0
- package/fesm2015/{sambath999-localize-token.js → sambath999-localize-token.mjs} +31 -25
- package/fesm2015/sambath999-localize-token.mjs.map +1 -0
- package/fesm2020/sambath999-localize-token.mjs +370 -0
- package/fesm2020/sambath999-localize-token.mjs.map +1 -0
- package/{sambath999-localize-token.d.ts → index.d.ts} +1 -0
- package/lib/localize.api.service.d.ts +3 -0
- package/lib/localize.token.module.d.ts +4 -0
- package/lib/localize.token.service.d.ts +3 -0
- package/package.json +30 -13
- package/bundles/sambath999-localize-token.umd.js +0 -1115
- package/bundles/sambath999-localize-token.umd.js.map +0 -1
- package/esm2015/lib/localize.api.service.js +0 -152
- package/esm2015/lib/localize.token.js +0 -59
- package/esm2015/lib/localize.token.module.js +0 -14
- package/esm2015/lib/localize.token.service.js +0 -62
- package/esm2015/lib/localize.token.storage.js +0 -101
- package/fesm2015/sambath999-localize-token.js.map +0 -1
- package/sambath999-localize-token.metadata.json +0 -1
- /package/{esm2015/lib/index.js → esm2020/lib/index.mjs} +0 -0
- /package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- /package/{esm2015/sambath999-localize-token.js → esm2020/sambath999-localize-token.mjs} +0 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { HttpHeaders } from "@angular/common/http";
|
|
3
|
+
import { LocalizeToken, waitFor, waitUntil } from "./localize.token";
|
|
4
|
+
import { BehaviorSubject } from "rxjs";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
import * as i2 from "./localize.token.service";
|
|
8
|
+
/**
|
|
9
|
+
* Http method options
|
|
10
|
+
*/
|
|
11
|
+
export var EMethod;
|
|
12
|
+
(function (EMethod) {
|
|
13
|
+
EMethod[EMethod["POST"] = 1] = "POST";
|
|
14
|
+
EMethod[EMethod["GET"] = 2] = "GET";
|
|
15
|
+
EMethod[EMethod["PUT"] = 3] = "PUT";
|
|
16
|
+
EMethod[EMethod["DELETE"] = 4] = "DELETE";
|
|
17
|
+
EMethod[EMethod["PATCH"] = 5] = "PATCH";
|
|
18
|
+
})(EMethod || (EMethod = {}));
|
|
19
|
+
export class LocalizeApiService {
|
|
20
|
+
constructor(httpClient, localizeTokenService) {
|
|
21
|
+
this.httpClient = httpClient;
|
|
22
|
+
this.localizeTokenService = localizeTokenService;
|
|
23
|
+
this.isRequestingSubject = new BehaviorSubject(false);
|
|
24
|
+
this.isResolvedStartupSubject = new BehaviorSubject(false);
|
|
25
|
+
this.apiConfigs = {};
|
|
26
|
+
/**
|
|
27
|
+
* A higher-order function that returns a curried function for making API requests.
|
|
28
|
+
*
|
|
29
|
+
* @param baseUrl - The base URL of the API.
|
|
30
|
+
* @returns A curried function that can be used to make API requests.
|
|
31
|
+
*/
|
|
32
|
+
this.func = (baseUrl) => (path, method = EMethod.GET, value = null, isFormData = false, headers) => this.base(baseUrl, path, method, value, isFormData, headers);
|
|
33
|
+
}
|
|
34
|
+
get isRequesting() { return this.isRequestingSubject.value; }
|
|
35
|
+
get isResolvedStartup() { return this.isResolvedStartupSubject.value; }
|
|
36
|
+
/**
|
|
37
|
+
* Initialize the API service.
|
|
38
|
+
* @param apiConfigs - The API configurations.
|
|
39
|
+
*/
|
|
40
|
+
init(apiConfigs) {
|
|
41
|
+
this.apiConfigs = apiConfigs;
|
|
42
|
+
}
|
|
43
|
+
async base(baseUrl, path, method = EMethod.GET, value = null, isFormData = false, headers) {
|
|
44
|
+
await this.ifPromise(this.apiConfigs.onPrepareRequest);
|
|
45
|
+
const url = `${baseUrl.trim().replace(/\/?$/, '/')}${path.trim().replace(/^\//, '')}`;
|
|
46
|
+
const httpMethod = EMethod[method].toLowerCase();
|
|
47
|
+
const request = () => { return { body: value, headers: this.options(isFormData, headers) }; };
|
|
48
|
+
// Wait for previous request to complete
|
|
49
|
+
await this.toWaitForPreviousRequest();
|
|
50
|
+
// Process request
|
|
51
|
+
try {
|
|
52
|
+
return await this.processRequest(httpMethod, url, request());
|
|
53
|
+
}
|
|
54
|
+
// Handle unauthorized error if any
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (error.status !== 401) {
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
return await this.onUnauthorizedError(httpMethod, url, request);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async onUnauthorizedError(httpMethod, url, request) {
|
|
63
|
+
await this.revokeToken();
|
|
64
|
+
if (!this.isResolvedStartup) {
|
|
65
|
+
return await this.processRequest(httpMethod, url, request());
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async toWaitForPreviousRequest() {
|
|
69
|
+
if (this.localizeTokenService.isRevokingToken) {
|
|
70
|
+
await waitUntil(() => !this.localizeTokenService.isRevokingToken);
|
|
71
|
+
}
|
|
72
|
+
// to wait for each request in 50ms, even if the request is not completed
|
|
73
|
+
await waitFor(50, this.isRequesting);
|
|
74
|
+
}
|
|
75
|
+
async processRequest(method, url, options) {
|
|
76
|
+
this.isRequestingSubject.next(true);
|
|
77
|
+
const result = await new Promise((resolve, reject) => this.httpClient.request(method, url, options).subscribe({ next: resolve, error: reject }));
|
|
78
|
+
this.isRequestingSubject.next(false);
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
async revokeToken(force = false) {
|
|
82
|
+
if (this.localizeTokenService.isRevokingToken && !force) {
|
|
83
|
+
await waitUntil(() => !this.localizeTokenService.isRevokingToken);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
this.localizeTokenService.isRevokingToken = true;
|
|
88
|
+
const reqUrl = LocalizeToken.config.revokeTokenUrl;
|
|
89
|
+
const reqHeaders = this.options().append(LocalizeToken.httpHeaders.X_REFRESH_TOKEN, `${this.localizeTokenService.refreshToken}`);
|
|
90
|
+
const revokeToken = await new Promise((resolve, reject) => this.httpClient.get(reqUrl, { headers: reqHeaders }).subscribe({ next: resolve, error: reject }));
|
|
91
|
+
if (revokeToken?.status) {
|
|
92
|
+
this.localizeTokenService.accessToken = revokeToken.message;
|
|
93
|
+
}
|
|
94
|
+
else if (!this.localizeTokenService.refreshToken) {
|
|
95
|
+
await this.ifPromise(this.apiConfigs.onAutoLogout);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
if (this.apiConfigs.onRevokeUnauthorized) {
|
|
99
|
+
await this.ifPromise(this.apiConfigs.onRevokeUnauthorized);
|
|
100
|
+
await this.revokeToken(true);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
this.localizeTokenService.isRevokingToken = false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** default http request options */
|
|
109
|
+
options(isFormData = false, headers = {}) {
|
|
110
|
+
const defaultHeaders = { [LocalizeToken.httpHeaders.AUTHORIZATION]: `Bearer ${this.localizeTokenService.accessToken}`, };
|
|
111
|
+
if (LocalizeToken.config.needTenant) {
|
|
112
|
+
defaultHeaders[LocalizeToken.httpHeaders.X_TENANT] = `${this.localizeTokenService.tenantToken}`;
|
|
113
|
+
}
|
|
114
|
+
if (!isFormData) {
|
|
115
|
+
defaultHeaders[LocalizeToken.httpHeaders.CONTENT_TYPE] = 'application/json';
|
|
116
|
+
}
|
|
117
|
+
const filteredHeaders = Object.keys(defaultHeaders).filter(key => !Object.keys(headers).includes(key))
|
|
118
|
+
.reduce((acc, key) => ({ ...acc, [key]: defaultHeaders[key] }), {});
|
|
119
|
+
const mergedHeaders = { ...filteredHeaders, ...headers };
|
|
120
|
+
return new HttpHeaders(mergedHeaders);
|
|
121
|
+
}
|
|
122
|
+
async ifPromise(fn) {
|
|
123
|
+
if (!fn)
|
|
124
|
+
return;
|
|
125
|
+
return fn instanceof Promise ? await fn() : fn();
|
|
126
|
+
}
|
|
127
|
+
} //class
|
|
128
|
+
LocalizeApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeApiService, deps: [{ token: i1.HttpClient }, { token: i2.LocalizeTokenService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
129
|
+
LocalizeApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeApiService, providedIn: 'root' });
|
|
130
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeApiService, decorators: [{
|
|
131
|
+
type: Injectable,
|
|
132
|
+
args: [{
|
|
133
|
+
providedIn: 'root'
|
|
134
|
+
}]
|
|
135
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.LocalizeTokenService }]; } });
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUuYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2xvY2FsaXplLmFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFFdkM7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxPQU1YO0FBTkQsV0FBWSxPQUFPO0lBQ2pCLHFDQUFRLENBQUE7SUFDUixtQ0FBTyxDQUFBO0lBQ1AsbUNBQU8sQ0FBQTtJQUNQLHlDQUFVLENBQUE7SUFDVix1Q0FBUyxDQUFBO0FBQ1gsQ0FBQyxFQU5XLE9BQU8sS0FBUCxPQUFPLFFBTWxCO0FBbUJELE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsWUFBcUIsVUFBc0IsRUFDeEIsb0JBQTBDO1FBRHhDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDeEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQVJwRCx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMxRCw2QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUloRSxlQUFVLEdBQXdCLEVBQUUsQ0FBQztRQWU3Qzs7Ozs7V0FLRztRQUNILFNBQUksR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQ3pCLENBQUMsSUFBWSxFQUFFLFNBQWtCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBYSxJQUFJLEVBQUUsYUFBc0IsS0FBSyxFQUFFLE9BQWlDLEVBQUUsRUFBRSxDQUNqSSxJQUFJLENBQUMsSUFBSSxD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QUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ25HLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDckUsTUFBTSxhQUFhLEdBQUcsRUFBRSxHQUFHLGVBQWUsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3pELE9BQU8sSUFBSSxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBYTtRQUNuQyxJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU87UUFDaEIsT0FBTyxFQUFFLFlBQVksT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0VBRUYsT0FBTztnSEFuSUssa0JBQWtCO29IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2FsaXplVG9rZW5TZXJ2aWNlIH0gZnJvbSBcIi4vbG9jYWxpemUudG9rZW4uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVRva2VuLCB3YWl0Rm9yLCB3YWl0VW50aWwgfSBmcm9tIFwiLi9sb2NhbGl6ZS50b2tlblwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuLyoqXHJcbiAqIEh0dHAgbWV0aG9kIG9wdGlvbnNcclxuICovXHJcbmV4cG9ydCBlbnVtIEVNZXRob2Qge1xyXG4gIFBPU1QgPSAxLFxyXG4gIEdFVCA9IDIsXHJcbiAgUFVUID0gMyxcclxuICBERUxFVEUgPSA0LFxyXG4gIFBBVENIID0gNVxyXG59XHJcblxyXG5pbnRlcmZhY2UgSUxvY2FsaXplQXBpQ29uZmlncyB7XHJcbiAgb25QcmVwYXJlUmVxdWVzdD86ICgpID0+IGFueTtcclxuICAvKipcclxuICAgKiAgQSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHJlZnJlc2ggdG9rZW4gaXMgbWlzc2luZyB0aGVuIHBlcmZvcm0gdGhlIGF1dG8gbG9nb3V0LlxyXG4gICAqIEByZXR1cm5zIC0gVGhlIGJhc2UgVVJMIG9mIHRoZSBBUEkuXHJcbiAgICovXHJcbiAgb25BdXRvTG9nb3V0PzogKCkgPT4gYW55O1xyXG4gIC8qKlxyXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiByZXF1ZXN0IHJldm9raW5nIHRva2VuIHVuYXV0aG9yaXplZC5cclxuICAgKiBAcmV0dXJucyAtIFRoZSBsb2dpbiBkaWFsb2cgc2VydmljZS5cclxuICAgKi9cclxuICBvblJldm9rZVVuYXV0aG9yaXplZD86ICgpID0+IGFueTtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemVBcGlTZXJ2aWNlIHtcclxuXHJcbiAgcmVhZG9ubHkgaXNSZXF1ZXN0aW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5IGlzUmVzb2x2ZWRTdGFydHVwU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGdldCBpc1JlcXVlc3RpbmcoKSB7IHJldHVybiB0aGlzLmlzUmVxdWVzdGluZ1N1YmplY3QudmFsdWU7IH1cclxuICBnZXQgaXNSZXNvbHZlZFN0YXJ0dXAoKSB7IHJldHVybiB0aGlzLmlzUmVzb2x2ZWRTdGFydHVwU3ViamVjdC52YWx1ZTsgfVxyXG5cclxuICBwcml2YXRlIGFwaUNvbmZpZ3M6IElMb2NhbGl6ZUFwaUNvbmZpZ3MgPSB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxpemVUb2tlblNlcnZpY2U6IExvY2FsaXplVG9rZW5TZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgQVBJIHNlcnZpY2UuXHJcbiAgICogQHBhcmFtIGFwaUNvbmZpZ3MgLSBUaGUgQVBJIGNvbmZpZ3VyYXRpb25zLlxyXG4gICAqL1xyXG4gIGluaXQoYXBpQ29uZmlnczogSUxvY2FsaXplQXBpQ29uZmlncykge1xyXG4gICAgdGhpcy5hcGlDb25maWdzID0gYXBpQ29uZmlncztcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBBIGhpZ2hlci1vcmRlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBjdXJyaWVkIGZ1bmN0aW9uIGZvciBtYWtpbmcgQVBJIHJlcXVlc3RzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGJhc2VVcmwgLSBUaGUgYmFzZSBVUkwgb2YgdGhlIEFQSS5cclxuICAgKiBAcmV0dXJucyBBIGN1cnJpZWQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBtYWtlIEFQSSByZXF1ZXN0cy5cclxuICAgKi9cclxuICBmdW5jID0gKGJhc2VVcmw6IHN0cmluZykgPT5cclxuICAgIChwYXRoOiBzdHJpbmcsIG1ldGhvZDogRU1ldGhvZCA9IEVNZXRob2QuR0VULCB2YWx1ZTogYW55ID0gbnVsbCwgaXNGb3JtRGF0YTogYm9vbGVhbiA9IGZhbHNlLCBoZWFkZXJzPzogeyBbeDogc3RyaW5nXTogc3RyaW5nIH0pID0+XHJcbiAgICAgIHRoaXMuYmFzZShiYXNlVXJsLCBwYXRoLCBtZXRob2QsIHZhbHVlLCBpc0Zvcm1EYXRhLCBoZWFkZXJzKVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGJhc2UoYmFzZVVybDogc3RyaW5nLFxyXG4gICAgcGF0aDogc3RyaW5nLFxyXG4gICAgbWV0aG9kOiBFTWV0aG9kID0gRU1ldGhvZC5HRVQsXHJcbiAgICB2YWx1ZTogYW55ID0gbnVsbCxcclxuICAgIGlzRm9ybURhdGE6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgIGhlYWRlcnM/OiB7IFt4OiBzdHJpbmddOiBzdHJpbmcgfSkge1xyXG5cclxuICAgIGF3YWl0IHRoaXMuaWZQcm9taXNlKHRoaXMuYXBpQ29uZmlncy5vblByZXBhcmVSZXF1ZXN0KTtcclxuXHJcbiAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsLnRyaW0oKS5yZXBsYWNlKC9cXC8/JC8sICcvJyl9JHtwYXRoLnRyaW0oKS5yZXBsYWNlKC9eXFwvLywgJycpfWA7XHJcbiAgICBjb25zdCBodHRwTWV0aG9kID0gRU1ldGhvZFttZXRob2RdLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gKCkgPT4geyByZXR1cm4geyBib2R5OiB2YWx1ZSwgaGVhZGVyczogdGhpcy5vcHRpb25zKGlzRm9ybURhdGEsIGhlYWRlcnMpIH0gfTtcclxuXHJcbiAgICAvLyBXYWl0IGZvciBwcmV2aW91cyByZXF1ZXN0IHRvIGNvbXBsZXRlXHJcbiAgICBhd2FpdCB0aGlzLnRvV2FpdEZvclByZXZpb3VzUmVxdWVzdCgpO1xyXG5cclxuICAgIC8vIFByb2Nlc3MgcmVxdWVzdFxyXG4gICAgdHJ5IHsgcmV0dXJuIGF3YWl0IHRoaXMucHJvY2Vzc1JlcXVlc3QoaHR0cE1ldGhvZCwgdXJsLCByZXF1ZXN0KCkpIH1cclxuICAgIC8vIEhhbmRsZSB1bmF1dGhvcml6ZWQgZXJyb3IgaWYgYW55XHJcbiAgICBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgaWYgKChlcnJvciBhcyBhbnkpLnN0YXR1cyAhPT0gNDAxKSB7IHRocm93IGVycm9yOyB9XHJcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLm9uVW5hdXRob3JpemVkRXJyb3IoaHR0cE1ldGhvZCwgdXJsLCByZXF1ZXN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgb25VbmF1dGhvcml6ZWRFcnJvcihodHRwTWV0aG9kOiBzdHJpbmcsIHVybDogc3RyaW5nLCByZXF1ZXN0OiBGdW5jdGlvbikge1xyXG4gICAgYXdhaXQgdGhpcy5yZXZva2VUb2tlbigpO1xyXG4gICAgaWYgKCF0aGlzLmlzUmVzb2x2ZWRTdGFydHVwKSB7XHJcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2Nlc3NSZXF1ZXN0KGh0dHBNZXRob2QsIHVybCwgcmVxdWVzdCgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdG9XYWl0Rm9yUHJldmlvdXNSZXF1ZXN0KCkge1xyXG4gICAgaWYgKHRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuaXNSZXZva2luZ1Rva2VuKSB7XHJcbiAgICAgIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiAhdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5pc1Jldm9raW5nVG9rZW4pO1xyXG4gICAgfVxyXG4gICAgLy8gdG8gd2FpdCBmb3IgZWFjaCByZXF1ZXN0IGluIDUwbXMsIGV2ZW4gaWYgdGhlIHJlcXVlc3QgaXMgbm90IGNvbXBsZXRlZFxyXG4gICAgYXdhaXQgd2FpdEZvcig1MCwgdGhpcy5pc1JlcXVlc3RpbmcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzUmVxdWVzdChtZXRob2Q6IHN0cmluZywgdXJsOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICB0aGlzLmlzUmVxdWVzdGluZ1N1YmplY3QubmV4dCh0cnVlKTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PGFueT4obWV0aG9kLCB1cmwsIG9wdGlvbnMpLnN1YnNjcmliZSh7IG5leHQ6IHJlc29sdmUsIGVycm9yOiByZWplY3QgfSkpXHJcbiAgICB0aGlzLmlzUmVxdWVzdGluZ1N1YmplY3QubmV4dChmYWxzZSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyByZXZva2VUb2tlbihmb3JjZTogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgaWYgKHRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuaXNSZXZva2luZ1Rva2VuICYmICFmb3JjZSkge1xyXG4gICAgICBhd2FpdCB3YWl0VW50aWwoKCkgPT4gIXRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuaXNSZXZva2luZ1Rva2VuKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5pc1Jldm9raW5nVG9rZW4gPSB0cnVlO1xyXG4gICAgICBjb25zdCByZXFVcmwgPSBMb2NhbGl6ZVRva2VuLmNvbmZpZy5yZXZva2VUb2tlblVybDtcclxuICAgICAgY29uc3QgcmVxSGVhZGVycyA9IHRoaXMub3B0aW9ucygpLmFwcGVuZChMb2NhbGl6ZVRva2VuLmh0dHBIZWFkZXJzLlhfUkVGUkVTSF9UT0tFTiwgYCR7dGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5yZWZyZXNoVG9rZW59YCk7XHJcbiAgICAgIGNvbnN0IHJldm9rZVRva2VuOiBhbnkgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQ8YW55PihyZXFVcmwhLCB7IGhlYWRlcnM6IHJlcUhlYWRlcnMgfSkuc3Vic2NyaWJlKHsgbmV4dDogcmVzb2x2ZSwgZXJyb3I6IHJlamVjdCB9KSlcclxuXHJcbiAgICAgIGlmIChyZXZva2VUb2tlbj8uc3RhdHVzKSB7XHJcbiAgICAgICAgdGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS5hY2Nlc3NUb2tlbiA9IHJldm9rZVRva2VuLm1lc3NhZ2U7XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UucmVmcmVzaFRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5pZlByb21pc2UodGhpcy5hcGlDb25maWdzLm9uQXV0b0xvZ291dClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5hcGlDb25maWdzLm9uUmV2b2tlVW5hdXRob3JpemVkKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmlmUHJvbWlzZSh0aGlzLmFwaUNvbmZpZ3Mub25SZXZva2VVbmF1dGhvcml6ZWQpO1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5yZXZva2VUb2tlbih0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuaXNSZXZva2luZ1Rva2VuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogZGVmYXVsdCBodHRwIHJlcXVlc3Qgb3B0aW9ucyAqL1xyXG4gIHByaXZhdGUgb3B0aW9ucyhpc0Zvcm1EYXRhOiBib29sZWFuID0gZmFsc2UsIGhlYWRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fSk6IEh0dHBIZWFkZXJzIHtcclxuICAgIGNvbnN0IGRlZmF1bHRIZWFkZXJzID0geyBbTG9jYWxpemVUb2tlbi5odHRwSGVhZGVycy5BVVRIT1JJWkFUSU9OXTogYEJlYXJlciAke3RoaXMubG9jYWxpemVUb2tlblNlcnZpY2UuYWNjZXNzVG9rZW59YCwgfTtcclxuICAgIGlmIChMb2NhbGl6ZVRva2VuLmNvbmZpZy5uZWVkVGVuYW50KSB7XHJcbiAgICAgIGRlZmF1bHRIZWFkZXJzW0xvY2FsaXplVG9rZW4uaHR0cEhlYWRlcnMuWF9URU5BTlRdID0gYCR7dGhpcy5sb2NhbGl6ZVRva2VuU2VydmljZS50ZW5hbnRUb2tlbn1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNGb3JtRGF0YSkge1xyXG4gICAgICBkZWZhdWx0SGVhZGVyc1tMb2NhbGl6ZVRva2VuLmh0dHBIZWFkZXJzLkNPTlRFTlRfVFlQRV0gPSAnYXBwbGljYXRpb24vanNvbic7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmlsdGVyZWRIZWFkZXJzID0gT2JqZWN0LmtleXMoZGVmYXVsdEhlYWRlcnMpLmZpbHRlcihrZXkgPT4gIU9iamVjdC5rZXlzKGhlYWRlcnMpLmluY2x1ZGVzKGtleSkpXHJcbiAgICAgIC5yZWR1Y2UoKGFjYywga2V5KSA9PiAoeyAuLi5hY2MsIFtrZXldOiBkZWZhdWx0SGVhZGVyc1trZXldIH0pLCB7fSlcclxuICAgIGNvbnN0IG1lcmdlZEhlYWRlcnMgPSB7IC4uLmZpbHRlcmVkSGVhZGVycywgLi4uaGVhZGVycyB9O1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyhtZXJnZWRIZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaWZQcm9taXNlKGZuPzogRnVuY3Rpb24pIHtcclxuICAgIGlmICghZm4pIHJldHVybjtcclxuICAgIHJldHVybiBmbiBpbnN0YW5jZW9mIFByb21pc2UgPyBhd2FpdCBmbigpIDogZm4oKTtcclxuICB9XHJcblxyXG59Ly9jbGFzc1xyXG4iXX0=
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { LocalizeTokenStorageHelper } from "./localize.token.storage";
|
|
2
|
+
export class LocalizeToken {
|
|
3
|
+
}
|
|
4
|
+
LocalizeToken.config = {
|
|
5
|
+
mainDomain: location.hostname,
|
|
6
|
+
authTokenName: 'auth-token',
|
|
7
|
+
tenantTokenName: 'tenant-token',
|
|
8
|
+
refreshTokenName: 'refresh-token',
|
|
9
|
+
needTenant: false,
|
|
10
|
+
isProduction: false,
|
|
11
|
+
};
|
|
12
|
+
LocalizeToken.cookieOptions = {
|
|
13
|
+
path: '/',
|
|
14
|
+
domain: LocalizeToken.config.mainDomain,
|
|
15
|
+
secure: true,
|
|
16
|
+
// samesite: SameSiteType.strict,
|
|
17
|
+
expires: 1
|
|
18
|
+
};
|
|
19
|
+
LocalizeToken.storage = new LocalizeTokenStorageHelper();
|
|
20
|
+
LocalizeToken.httpHeaders = {
|
|
21
|
+
AUTHORIZATION: 'Authorization',
|
|
22
|
+
X_TENANT: 'X-Tenant',
|
|
23
|
+
X_REFRESH_TOKEN: 'X-RefreshToken',
|
|
24
|
+
CONTENT_TYPE: 'Content-Type',
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Waits for a specified amount of time.
|
|
28
|
+
* @param milliseconds - The milliseconds to wait.
|
|
29
|
+
* @param when - The condition to wait for. Default is true.
|
|
30
|
+
* @returns - Promise<void>
|
|
31
|
+
*/
|
|
32
|
+
export async function waitFor(milliseconds, when = true) {
|
|
33
|
+
if (!when)
|
|
34
|
+
return;
|
|
35
|
+
await new Promise(resolve => setTimeout(resolve, milliseconds));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Waits until the condition is met.
|
|
39
|
+
* @param when - The condition to wait for.
|
|
40
|
+
* @param intervalNumber - The interval number in milliseconds to check the condition. Default is 50.
|
|
41
|
+
*/
|
|
42
|
+
export async function waitUntil(when, intervalNumber = 50) {
|
|
43
|
+
await new Promise(resolve => {
|
|
44
|
+
const interval = setInterval(async () => {
|
|
45
|
+
const cond = when();
|
|
46
|
+
const result = cond instanceof Promise ? await cond : cond;
|
|
47
|
+
if (result) {
|
|
48
|
+
clearInterval(interval);
|
|
49
|
+
resolve(true);
|
|
50
|
+
}
|
|
51
|
+
}, intervalNumber);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2xvY2FsaXplLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsMEJBQTBCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVV0RixNQUFNLE9BQU8sYUFBYTs7QUFDZixvQkFBTSxHQUF5QjtJQUNsQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFFBQVE7SUFDN0IsYUFBYSxFQUFFLFlBQVk7SUFDM0IsZUFBZSxFQUFFLGNBQWM7SUFDL0IsZ0JBQWdCLEVBQUUsZUFBZTtJQUNqQyxVQUFVLEVBQUUsS0FBSztJQUNqQixZQUFZLEVBQUUsS0FBSztDQUN0QixDQUFBO0FBRU0sMkJBQWEsR0FBbUI7SUFDbkMsSUFBSSxFQUFFLEdBQUc7SUFDVCxNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVO0lBQ3ZDLE1BQU0sRUFBRSxJQUFJO0lBQ1osaUNBQWlDO0lBQ2pDLE9BQU8sRUFBRSxDQUFDO0NBQ2IsQ0FBQTtBQUNlLHFCQUFPLEdBQUcsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO0FBRTNDLHlCQUFXLEdBQUc7SUFDMUIsYUFBYSxFQUFFLGVBQWU7SUFDOUIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsZUFBZSxFQUFFLGdCQUFnQjtJQUNqQyxZQUFZLEVBQUUsY0FBYztDQUM3QixDQUFBO0FBSVA7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxZQUFvQixFQUFFLE9BQWdCLElBQUk7SUFDcEUsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPO0lBQ2xCLE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxJQUFlLEVBQUUsaUJBQXlCLEVBQUU7SUFDMUUsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMxQixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMzRCxJQUFJLE1BQU0sRUFBRTtnQkFDVixhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNmO1FBQ0gsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDb29raWVPcHRpb25zLCBMb2NhbGl6ZVRva2VuU3RvcmFnZUhlbHBlciB9IGZyb20gXCIuL2xvY2FsaXplLnRva2VuLnN0b3JhZ2VcIjtcclxuaW50ZXJmYWNlIElMb2NhbGl6ZVRva2VuQ29uZmlnIHtcclxuICAgIG1haW5Eb21haW46IHN0cmluZztcclxuICAgIGF1dGhUb2tlbk5hbWU6IHN0cmluZztcclxuICAgIHRlbmFudFRva2VuTmFtZTogc3RyaW5nO1xyXG4gICAgcmVmcmVzaFRva2VuTmFtZTogc3RyaW5nO1xyXG4gICAgbmVlZFRlbmFudDogYm9vbGVhbjtcclxuICAgIGlzUHJvZHVjdGlvbjogYm9vbGVhbjtcclxuICAgIHJldm9rZVRva2VuVXJsPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6ZVRva2VuIHtcclxuICAgIHN0YXRpYyBjb25maWc6IElMb2NhbGl6ZVRva2VuQ29uZmlnID0ge1xyXG4gICAgICAgIG1haW5Eb21haW46IGxvY2F0aW9uLmhvc3RuYW1lLFxyXG4gICAgICAgIGF1dGhUb2tlbk5hbWU6ICdhdXRoLXRva2VuJyxcclxuICAgICAgICB0ZW5hbnRUb2tlbk5hbWU6ICd0ZW5hbnQtdG9rZW4nLFxyXG4gICAgICAgIHJlZnJlc2hUb2tlbk5hbWU6ICdyZWZyZXNoLXRva2VuJyxcclxuICAgICAgICBuZWVkVGVuYW50OiBmYWxzZSxcclxuICAgICAgICBpc1Byb2R1Y3Rpb246IGZhbHNlLFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjb29raWVPcHRpb25zOiBJQ29va2llT3B0aW9ucyA9IHtcclxuICAgICAgICBwYXRoOiAnLycsXHJcbiAgICAgICAgZG9tYWluOiBMb2NhbGl6ZVRva2VuLmNvbmZpZy5tYWluRG9tYWluLFxyXG4gICAgICAgIHNlY3VyZTogdHJ1ZSxcclxuICAgICAgICAvLyBzYW1lc2l0ZTogU2FtZVNpdGVUeXBlLnN0cmljdCxcclxuICAgICAgICBleHBpcmVzOiAxXHJcbiAgICB9XHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgc3RvcmFnZSA9IG5ldyBMb2NhbGl6ZVRva2VuU3RvcmFnZUhlbHBlcigpO1xyXG5cclxuICAgIHN0YXRpYyByZWFkb25seSBodHRwSGVhZGVycyA9IHtcclxuICAgICAgICBBVVRIT1JJWkFUSU9OOiAnQXV0aG9yaXphdGlvbicsXHJcbiAgICAgICAgWF9URU5BTlQ6ICdYLVRlbmFudCcsXHJcbiAgICAgICAgWF9SRUZSRVNIX1RPS0VOOiAnWC1SZWZyZXNoVG9rZW4nLFxyXG4gICAgICAgIENPTlRFTlRfVFlQRTogJ0NvbnRlbnQtVHlwZScsXHJcbiAgICAgIH1cclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiAgV2FpdHMgZm9yIGEgc3BlY2lmaWVkIGFtb3VudCBvZiB0aW1lLlxyXG4gKiBAcGFyYW0gbWlsbGlzZWNvbmRzICAtIFRoZSBtaWxsaXNlY29uZHMgdG8gd2FpdC5cclxuICogQHBhcmFtIHdoZW4gIC0gVGhlIGNvbmRpdGlvbiB0byB3YWl0IGZvci4gRGVmYXVsdCBpcyB0cnVlLlxyXG4gKiBAcmV0dXJucyAgLSBQcm9taXNlPHZvaWQ+XHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvcihtaWxsaXNlY29uZHM6IG51bWJlciwgd2hlbjogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGlmICghd2hlbikgcmV0dXJuO1xyXG4gICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1pbGxpc2Vjb25kcykpO1xyXG4gIH1cclxuICBcclxuICAvKipcclxuICAgKiAgV2FpdHMgdW50aWwgdGhlIGNvbmRpdGlvbiBpcyBtZXQuXHJcbiAgICogQHBhcmFtIHdoZW4gIC0gVGhlIGNvbmRpdGlvbiB0byB3YWl0IGZvci5cclxuICAgKiBAcGFyYW0gaW50ZXJ2YWxOdW1iZXIgIC0gVGhlIGludGVydmFsIG51bWJlciBpbiBtaWxsaXNlY29uZHMgdG8gY2hlY2sgdGhlIGNvbmRpdGlvbi4gRGVmYXVsdCBpcyA1MC5cclxuICAgKi9cclxuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdFVudGlsKHdoZW46ICgpID0+IGFueSwgaW50ZXJ2YWxOdW1iZXI6IG51bWJlciA9IDUwKSB7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29uZCA9IHdoZW4oKTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBjb25kIGluc3RhbmNlb2YgUHJvbWlzZSA/IGF3YWl0IGNvbmQgOiBjb25kO1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xyXG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGludGVydmFsTnVtYmVyKTtcclxuICAgIH0pO1xyXG4gIH0iXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { LocalizeTokenService } from './localize.token.service';
|
|
3
|
+
import { LocalizeApiService } from './localize.api.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class LocalizeTokenModule {
|
|
6
|
+
}
|
|
7
|
+
LocalizeTokenModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
LocalizeTokenModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenModule });
|
|
9
|
+
LocalizeTokenModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenModule, providers: [
|
|
10
|
+
LocalizeTokenService,
|
|
11
|
+
LocalizeApiService
|
|
12
|
+
] });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
providers: [
|
|
17
|
+
LocalizeTokenService,
|
|
18
|
+
LocalizeApiService
|
|
19
|
+
],
|
|
20
|
+
}]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUudG9rZW4ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9sb2NhbGl6ZS50b2tlbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFRNUQsTUFBTSxPQUFPLG1CQUFtQjs7aUhBQW5CLG1CQUFtQjtrSEFBbkIsbUJBQW1CO2tIQUFuQixtQkFBbUIsYUFMakI7UUFDUCxvQkFBb0I7UUFDcEIsa0JBQWtCO0tBQ3JCOzRGQUVRLG1CQUFtQjtrQkFOL0IsUUFBUTttQkFBQztvQkFDTixTQUFTLEVBQUU7d0JBQ1Asb0JBQW9CO3dCQUNwQixrQkFBa0I7cUJBQ3JCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYWxpemVUb2tlblNlcnZpY2UgfSBmcm9tICcuL2xvY2FsaXplLnRva2VuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZUFwaVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsaXplLmFwaS5zZXJ2aWNlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBMb2NhbGl6ZVRva2VuU2VydmljZSxcclxuICAgICAgICBMb2NhbGl6ZUFwaVNlcnZpY2VcclxuICAgIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6ZVRva2VuTW9kdWxlIHsgfSJdfQ==
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { LocalizeToken } from './localize.token';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import * as jwt_decode from 'jwt-decode';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class LocalizeTokenService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.isRevokingTokenSubject = new BehaviorSubject(false);
|
|
9
|
+
this.decodeToken = (token) => jwt_decode.jwtDecode(token);
|
|
10
|
+
}
|
|
11
|
+
get authToken() { return this.storageGet(); }
|
|
12
|
+
set authToken(value) {
|
|
13
|
+
value
|
|
14
|
+
? this.storageSet(value)
|
|
15
|
+
: LocalizeToken.storage.delete(LocalizeToken.config.authTokenName);
|
|
16
|
+
}
|
|
17
|
+
get refreshToken() { return LocalizeToken.storage.get(LocalizeToken.config.refreshTokenName); }
|
|
18
|
+
get accessToken() { return this.authToken?.token; }
|
|
19
|
+
set accessToken(value) {
|
|
20
|
+
if (value) {
|
|
21
|
+
this.authToken = { token: value, revoke: false };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
get isRevokingToken() { return this.isRevokingTokenSubject.value; /* this.authToken?.revoke ?? false */ }
|
|
25
|
+
set isRevokingToken(value) {
|
|
26
|
+
this.isRevokingTokenSubject.next(value);
|
|
27
|
+
if (this.authToken) {
|
|
28
|
+
this.authToken = { ...this.authToken, revoke: value };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
get tenantToken() { return LocalizeToken.storage.get(LocalizeToken.config.tenantTokenName); }
|
|
32
|
+
storageGet() {
|
|
33
|
+
try {
|
|
34
|
+
const encoded = LocalizeToken.storage.get(LocalizeToken.config.authTokenName);
|
|
35
|
+
const decoded = atob(encoded || '');
|
|
36
|
+
return JSON.parse(decoded);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
storageSet(value) {
|
|
43
|
+
const base64 = btoa(JSON.stringify(value));
|
|
44
|
+
LocalizeToken.storage.set(LocalizeToken.config.authTokenName, base64);
|
|
45
|
+
}
|
|
46
|
+
tokensValid() {
|
|
47
|
+
return this.refreshToken?.length && (!LocalizeToken.config.needTenant || this.tenantToken?.length);
|
|
48
|
+
}
|
|
49
|
+
get decodeRefreshToken() {
|
|
50
|
+
const token = LocalizeToken.storage.get(LocalizeToken.config.refreshTokenName);
|
|
51
|
+
if (!token)
|
|
52
|
+
return null;
|
|
53
|
+
return this.decodeToken(token);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
LocalizeTokenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
57
|
+
LocalizeTokenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenService, providedIn: 'root' });
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenService, decorators: [{
|
|
59
|
+
type: Injectable,
|
|
60
|
+
args: [{ providedIn: 'root' }]
|
|
61
|
+
}], ctorParameters: function () { return []; } });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUudG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbG9jYWxpemUudG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFDOztBQWlCekMsTUFBTSxPQUFPLG9CQUFvQjtJQTZCN0I7UUE1QlMsMkJBQXNCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFpRHRFLGdCQUFXLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQWEsS0FBSyxDQUFDLENBQUM7SUFyQnpELENBQUM7SUExQmpCLElBQVksU0FBUyxLQUFLLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBLENBQUMsQ0FBQztJQUNwRCxJQUFZLFNBQVMsQ0FBQyxLQUE2QjtRQUMvQyxLQUFLO1lBQ0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxJQUFJLFlBQVksS0FBSyxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDOUYsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQSxDQUFDLENBQUM7SUFFbEQsSUFBSSxXQUFXLENBQUMsS0FBeUI7UUFDckMsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUE7U0FDbkQ7SUFDTCxDQUFDO0lBRUQsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFBLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUN4RyxJQUFJLGVBQWUsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3pEO0lBQ0wsQ0FBQztJQUVELElBQUksV0FBVyxLQUFLLE9BQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFJcEYsVUFBVTtRQUNkLElBQUk7WUFDQSxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBZSxDQUFDO1NBQzVDO1FBQUMsTUFBTTtZQUNKLE9BQU8sU0FBUyxDQUFBO1NBQ25CO0lBQ0wsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFpQjtRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzNDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBR0QsSUFBSSxrQkFBa0I7UUFDbEIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7O2tIQXZEUSxvQkFBb0I7c0hBQXBCLG9CQUFvQixjQURQLE1BQU07NEZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvY2FsaXplVG9rZW4gfSBmcm9tICcuL2xvY2FsaXplLnRva2VuJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIGp3dF9kZWNvZGUgZnJvbSAnand0LWRlY29kZSc7XHJcbmV4cG9ydCBpbnRlcmZhY2UgSnd0UGF5bG9hZCBleHRlbmRzIGp3dF9kZWNvZGUuSnd0UGF5bG9hZCB7XHJcbiAgICAvLyBEZWZpbmUgdGhlIHN0cnVjdHVyZSBvZiB5b3VyIEpXVCBwYXlsb2FkIGhlcmVcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICBzdWI6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGlhdDogbnVtYmVyO1xyXG4gICAgZXhwOiBudW1iZXI7XHJcbiAgICAvLyBBZGQgb3RoZXIgZmllbGRzIGFzIG5lZWRlZFxyXG59XHJcblxyXG5pbnRlcmZhY2UgSUF1dGhUb2tlbiB7XHJcbiAgICB0b2tlbjogc3RyaW5nO1xyXG4gICAgcmV2b2tlOiBib29sZWFuO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemVUb2tlblNlcnZpY2Uge1xyXG4gICAgcmVhZG9ubHkgaXNSZXZva2luZ1Rva2VuU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0IGF1dGhUb2tlbigpIHsgcmV0dXJuIHRoaXMuc3RvcmFnZUdldCgpIH1cclxuICAgIHByaXZhdGUgc2V0IGF1dGhUb2tlbih2YWx1ZTogSUF1dGhUb2tlbiB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgID8gdGhpcy5zdG9yYWdlU2V0KHZhbHVlKVxyXG4gICAgICAgICAgICA6IExvY2FsaXplVG9rZW4uc3RvcmFnZS5kZWxldGUoTG9jYWxpemVUb2tlbi5jb25maWcuYXV0aFRva2VuTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHJlZnJlc2hUb2tlbigpIHsgcmV0dXJuIExvY2FsaXplVG9rZW4uc3RvcmFnZS5nZXQoTG9jYWxpemVUb2tlbi5jb25maWcucmVmcmVzaFRva2VuTmFtZSkgfVxyXG4gICAgZ2V0IGFjY2Vzc1Rva2VuKCkgeyByZXR1cm4gdGhpcy5hdXRoVG9rZW4/LnRva2VuIH1cclxuXHJcbiAgICBzZXQgYWNjZXNzVG9rZW4odmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhUb2tlbiA9IHsgdG9rZW46IHZhbHVlLCByZXZva2U6IGZhbHNlIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzUmV2b2tpbmdUb2tlbigpIHsgcmV0dXJuIHRoaXMuaXNSZXZva2luZ1Rva2VuU3ViamVjdC52YWx1ZSAvKiB0aGlzLmF1dGhUb2tlbj8ucmV2b2tlID8/IGZhbHNlICovIH1cclxuICAgIHNldCBpc1Jldm9raW5nVG9rZW4odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmlzUmV2b2tpbmdUb2tlblN1YmplY3QubmV4dCh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuYXV0aFRva2VuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0aFRva2VuID0geyAuLi50aGlzLmF1dGhUb2tlbiwgcmV2b2tlOiB2YWx1ZSB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgdGVuYW50VG9rZW4oKSB7IHJldHVybiBMb2NhbGl6ZVRva2VuLnN0b3JhZ2UuZ2V0KExvY2FsaXplVG9rZW4uY29uZmlnLnRlbmFudFRva2VuTmFtZSkgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlR2V0KCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuY29kZWQgPSBMb2NhbGl6ZVRva2VuLnN0b3JhZ2UuZ2V0KExvY2FsaXplVG9rZW4uY29uZmlnLmF1dGhUb2tlbk5hbWUpO1xyXG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkID0gYXRvYihlbmNvZGVkIHx8ICcnKTtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlZCkgYXMgSUF1dGhUb2tlbjtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXQodmFsdWU6IElBdXRoVG9rZW4pIHtcclxuICAgICAgICBjb25zdCBiYXNlNjQgPSBidG9hKEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XHJcbiAgICAgICAgTG9jYWxpemVUb2tlbi5zdG9yYWdlLnNldChMb2NhbGl6ZVRva2VuLmNvbmZpZy5hdXRoVG9rZW5OYW1lLCBiYXNlNjQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRva2Vuc1ZhbGlkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbj8ubGVuZ3RoICYmICghTG9jYWxpemVUb2tlbi5jb25maWcubmVlZFRlbmFudCB8fCB0aGlzLnRlbmFudFRva2VuPy5sZW5ndGgpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlY29kZVRva2VuID0gKHRva2VuOiBzdHJpbmcpID0+IGp3dF9kZWNvZGUuand0RGVjb2RlPEp3dFBheWxvYWQ+KHRva2VuKTtcclxuICAgIGdldCBkZWNvZGVSZWZyZXNoVG9rZW4oKSB7XHJcbiAgICAgICAgY29uc3QgdG9rZW4gPSBMb2NhbGl6ZVRva2VuLnN0b3JhZ2UuZ2V0KExvY2FsaXplVG9rZW4uY29uZmlnLnJlZnJlc2hUb2tlbk5hbWUpO1xyXG4gICAgICAgIGlmICghdG9rZW4pIHJldHVybiBudWxsO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRlY29kZVRva2VuKHRva2VuKTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { LocalizeToken } from "./localize.token";
|
|
2
|
+
/**
|
|
3
|
+
* Assembly of @package ng2-cookies @see https://www.npmjs.com/package/ng2-cookies
|
|
4
|
+
*
|
|
5
|
+
* Reassembled by
|
|
6
|
+
* @author sambath999
|
|
7
|
+
* @date_29_09_2021
|
|
8
|
+
* Updated from raw parameters to
|
|
9
|
+
* @param {ICookieOptions} options and added another newer cookie flag
|
|
10
|
+
* @param {string} samesite
|
|
11
|
+
* @param {constant} SameSiteTypes, @param {string} strict "strict", @param {string} lax "lax", @param {string} none "none"
|
|
12
|
+
*
|
|
13
|
+
* @enum
|
|
14
|
+
*/
|
|
15
|
+
export class LocalizeTokenStorageHelper {
|
|
16
|
+
/**
|
|
17
|
+
* Checks the existence of a single cookie by it's name
|
|
18
|
+
*
|
|
19
|
+
* @param {string} name Identification of the cookie
|
|
20
|
+
* @returns existence of the cookie
|
|
21
|
+
*/
|
|
22
|
+
check(name) {
|
|
23
|
+
if (typeof document === "undefined")
|
|
24
|
+
return false;
|
|
25
|
+
name = encodeURIComponent(name);
|
|
26
|
+
const regexp = new RegExp('(?:^' + name + '|;\\s*' + name + ')=(.*?)(?:;|$)', 'g');
|
|
27
|
+
return regexp.test(document.cookie);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Retrieves a single cookie by it's name
|
|
31
|
+
*
|
|
32
|
+
* @param {string} name Identification of the Cookie
|
|
33
|
+
* @returns The Cookie's value
|
|
34
|
+
*/
|
|
35
|
+
get(name) {
|
|
36
|
+
if (!this.check(name))
|
|
37
|
+
return undefined;
|
|
38
|
+
name = encodeURIComponent(name);
|
|
39
|
+
const regexp = new RegExp('(?:^' + name + '|;\\s*' + name + ')=(.*?)(?:;|$)', 'g');
|
|
40
|
+
const result = regexp.exec(document.cookie);
|
|
41
|
+
return result ? decodeURIComponent(result[1]) : undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Retrieves a a list of all cookie avaiable
|
|
45
|
+
*
|
|
46
|
+
* @returns Object with all Cookies
|
|
47
|
+
*/
|
|
48
|
+
getAll() {
|
|
49
|
+
const cookies = {};
|
|
50
|
+
if (document.cookie) {
|
|
51
|
+
const split = document.cookie.split(';');
|
|
52
|
+
for (const s of split) {
|
|
53
|
+
const currCookie = s.split('=');
|
|
54
|
+
currCookie[0] = currCookie[0].trim();
|
|
55
|
+
cookies[decodeURIComponent(currCookie[0])] = decodeURIComponent(currCookie[1]);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return cookies;
|
|
59
|
+
}
|
|
60
|
+
get defaultOptions() { return LocalizeToken.cookieOptions; }
|
|
61
|
+
set(name, value, options) {
|
|
62
|
+
options ?? (options = this.defaultOptions);
|
|
63
|
+
const { expires, path, domain, secure, samesite } = options;
|
|
64
|
+
let cookieStr = `${encodeURIComponent(name)}=${encodeURIComponent(value)};`;
|
|
65
|
+
if (expires) {
|
|
66
|
+
const dtExpires = typeof expires === 'number' ? new Date(Date.now() + expires * 864e5) : expires;
|
|
67
|
+
cookieStr += `expires=${dtExpires.toUTCString()};`;
|
|
68
|
+
}
|
|
69
|
+
cookieStr += path ? `path=${path};` : '';
|
|
70
|
+
cookieStr += domain ? `domain=${domain};` : '';
|
|
71
|
+
cookieStr += secure ? 'secure;' : '';
|
|
72
|
+
cookieStr += samesite ? `samesite=${samesite};` : '';
|
|
73
|
+
document.cookie = cookieStr;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Removes specified Cookie
|
|
77
|
+
*
|
|
78
|
+
* @param {string} name Cookie's identification
|
|
79
|
+
* @param {string} path Path relative to the domain where the cookie should be avaiable. Default /
|
|
80
|
+
* @param {string} domain Domain where the cookie should be avaiable. Default current domain
|
|
81
|
+
*/
|
|
82
|
+
delete(name, path = '/', domain = window.location.hostname) {
|
|
83
|
+
this.set(name, '', { path, domain, expires: -1 });
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Delete all cookie avaiable
|
|
87
|
+
*/
|
|
88
|
+
deleteAll(path, domain) {
|
|
89
|
+
const cookies = this.getAll();
|
|
90
|
+
for (const cookieName of Object.keys(cookies)) {
|
|
91
|
+
this.delete(cookieName, path, domain);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export var ISameSiteType;
|
|
96
|
+
(function (ISameSiteType) {
|
|
97
|
+
ISameSiteType["strict"] = "strict";
|
|
98
|
+
ISameSiteType["lax"] = "lax";
|
|
99
|
+
ISameSiteType["none"] = "none";
|
|
100
|
+
})(ISameSiteType || (ISameSiteType = {}));
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemUudG9rZW4uc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbG9jYWxpemUudG9rZW4uc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHakQ7Ozs7Ozs7Ozs7OztFQVlFO0FBQ0YsTUFBTSxPQUFPLDBCQUEwQjtJQUVyQzs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxJQUFZO1FBQ2hCLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2xELElBQUksR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLFFBQVEsR0FBRyxJQUFJLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxHQUFHLENBQUMsSUFBWTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBRXhDLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLFFBQVEsR0FBRyxJQUFJLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkYsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENB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QUM7Q0FFRjtBQUVELE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDdkIsa0NBQWlCLENBQUE7SUFDakIsNEJBQVcsQ0FBQTtJQUNYLDhCQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhbGl6ZVRva2VuIH0gZnJvbSBcIi4vbG9jYWxpemUudG9rZW5cIjtcclxuXHJcblxyXG4vKipcclxuKiBBc3NlbWJseSBvZiBAcGFja2FnZSBuZzItY29va2llcyBAc2VlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL25nMi1jb29raWVzXHJcbipcclxuKiBSZWFzc2VtYmxlZCBieVxyXG4qIEBhdXRob3Igc2FtYmF0aDk5OVxyXG4qIEBkYXRlXzI5XzA5XzIwMjFcclxuKiBVcGRhdGVkIGZyb20gcmF3IHBhcmFtZXRlcnMgdG9cclxuKiBAcGFyYW0ge0lDb29raWVPcHRpb25zfSBvcHRpb25zIGFuZCBhZGRlZCBhbm90aGVyIG5ld2VyIGNvb2tpZSBmbGFnXHJcbiogQHBhcmFtIHtzdHJpbmd9IHNhbWVzaXRlXHJcbiogQHBhcmFtIHtjb25zdGFudH0gU2FtZVNpdGVUeXBlcywgQHBhcmFtIHtzdHJpbmd9IHN0cmljdCBcInN0cmljdFwiLCBAcGFyYW0ge3N0cmluZ30gbGF4IFwibGF4XCIsIEBwYXJhbSB7c3RyaW5nfSBub25lIFwibm9uZVwiXHJcbipcclxuKiBAZW51bVxyXG4qL1xyXG5leHBvcnQgY2xhc3MgTG9jYWxpemVUb2tlblN0b3JhZ2VIZWxwZXIge1xyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgdGhlIGV4aXN0ZW5jZSBvZiBhIHNpbmdsZSBjb29raWUgYnkgaXQncyBuYW1lXHJcbiAgICpcclxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpb24gb2YgdGhlIGNvb2tpZVxyXG4gICAqIEByZXR1cm5zIGV4aXN0ZW5jZSBvZiB0aGUgY29va2llXHJcbiAgICovXHJcbiAgY2hlY2sobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gZmFsc2U7XHJcbiAgICBuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpO1xyXG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cCgnKD86XicgKyBuYW1lICsgJ3w7XFxcXHMqJyArIG5hbWUgKyAnKT0oLio/KSg/Ojt8JCknLCAnZycpO1xyXG4gICAgcmV0dXJuIHJlZ2V4cC50ZXN0KGRvY3VtZW50LmNvb2tpZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBzaW5nbGUgY29va2llIGJ5IGl0J3MgbmFtZVxyXG4gICAqXHJcbiAgICogQHBhcmFtICB7c3RyaW5nfSBuYW1lIElkZW50aWZpY2F0aW9uIG9mIHRoZSBDb29raWVcclxuICAgKiBAcmV0dXJucyBUaGUgQ29va2llJ3MgdmFsdWVcclxuICAgKi9cclxuICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghdGhpcy5jaGVjayhuYW1lKSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICBuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpO1xyXG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cCgnKD86XicgKyBuYW1lICsgJ3w7XFxcXHMqJyArIG5hbWUgKyAnKT0oLio/KSg/Ojt8JCknLCAnZycpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gcmVnZXhwLmV4ZWMoZG9jdW1lbnQuY29va2llKTtcclxuICAgIHJldHVybiByZXN1bHQgPyBkZWNvZGVVUklDb21wb25lbnQocmVzdWx0WzFdKSA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGEgbGlzdCBvZiBhbGwgY29va2llIGF2YWlhYmxlXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyBPYmplY3Qgd2l0aCBhbGwgQ29va2llc1xyXG4gICAqL1xyXG4gIGdldEFsbCgpOiBhbnkge1xyXG4gICAgY29uc3QgY29va2llczogYW55ID0ge307XHJcblxyXG4gICAgaWYgKGRvY3VtZW50LmNvb2tpZSkge1xyXG4gICAgICBjb25zdCBzcGxpdCA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpO1xyXG4gICAgICBmb3IgKGNvbnN0IHMgb2Ygc3BsaXQpIHtcclxuICAgICAgICBjb25zdCBjdXJyQ29va2llID0gcy5zcGxpdCgnPScpO1xyXG4gICAgICAgIGN1cnJDb29raWVbMF0gPSBjdXJyQ29va2llWzBdLnRyaW0oKTtcclxuICAgICAgICBjb29raWVzW2RlY29kZVVSSUNvbXBvbmVudChjdXJyQ29va2llWzBdKV0gPSBkZWNvZGVVUklDb21wb25lbnQoY3VyckNvb2tpZVsxXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY29va2llcztcclxuICB9XHJcblxyXG4gIGdldCBkZWZhdWx0T3B0aW9ucygpOiBJQ29va2llT3B0aW9ucyB7IHJldHVybiBMb2NhbGl6ZVRva2VuLmNvb2tpZU9wdGlvbnMgfVxyXG5cclxuXHJcbiAgc2V0KG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgb3B0aW9ucz86IElDb29raWVPcHRpb25zKSB7XHJcbiAgICBvcHRpb25zID8/PSB0aGlzLmRlZmF1bHRPcHRpb25zO1xyXG4gICAgY29uc3QgeyBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSwgc2FtZXNpdGUgfSA9IG9wdGlvbnM7XHJcbiAgICBsZXQgY29va2llU3RyID0gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpfT0ke2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9O2A7XHJcblxyXG4gICAgaWYgKGV4cGlyZXMpIHtcclxuICAgICAgY29uc3QgZHRFeHBpcmVzID0gdHlwZW9mIGV4cGlyZXMgPT09ICdudW1iZXInID8gbmV3IERhdGUoRGF0ZS5ub3coKSArIGV4cGlyZXMgKiA4NjRlNSkgOiBleHBpcmVzO1xyXG4gICAgICBjb29raWVTdHIgKz0gYGV4cGlyZXM9JHtkdEV4cGlyZXMudG9VVENTdHJpbmcoKX07YDtcclxuICAgIH1cclxuXHJcbiAgICBjb29raWVTdHIgKz0gcGF0aCA/IGBwYXRoPSR7cGF0aH07YCA6ICcnO1xyXG4gICAgY29va2llU3RyICs9IGRvbWFpbiA/IGBkb21haW49JHtkb21haW59O2AgOiAnJztcclxuICAgIGNvb2tpZVN0ciArPSBzZWN1cmUgPyAnc2VjdXJlOycgOiAnJztcclxuICAgIGNvb2tpZVN0ciArPSBzYW1lc2l0ZSA/IGBzYW1lc2l0ZT0ke3NhbWVzaXRlfTtgIDogJyc7XHJcblxyXG4gICAgZG9jdW1lbnQuY29va2llID0gY29va2llU3RyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBzcGVjaWZpZWQgQ29va2llXHJcbiAgICpcclxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IG5hbWUgQ29va2llJ3MgaWRlbnRpZmljYXRpb25cclxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IHBhdGggUGF0aCByZWxhdGl2ZSB0byB0aGUgZG9tYWluIHdoZXJlIHRoZSBjb29raWUgc2hvdWxkIGJlIGF2YWlhYmxlLiBEZWZhdWx0IC9cclxuICAgKiBAcGFyYW0gIHtzdHJpbmd9IGRvbWFpbiBEb21haW4gd2hlcmUgdGhlIGNvb2tpZSBzaG91bGQgYmUgYXZhaWFibGUuIERlZmF1bHQgY3VycmVudCBkb21haW5cclxuICAgKi9cclxuICBkZWxldGUobmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcgPSAnLycsIGRvbWFpbjogc3RyaW5nID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldChuYW1lLCAnJywgeyBwYXRoLCBkb21haW4sIGV4cGlyZXM6IC0xIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlIGFsbCBjb29raWUgYXZhaWFibGVcclxuICAgKi9cclxuICBkZWxldGVBbGwocGF0aD86IHN0cmluZywgZG9tYWluPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb29raWVzID0gdGhpcy5nZXRBbGwoKTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IGNvb2tpZU5hbWUgb2YgT2JqZWN0LmtleXMoY29va2llcykpIHtcclxuICAgICAgdGhpcy5kZWxldGUoY29va2llTmFtZSwgcGF0aCwgZG9tYWluKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZW51bSBJU2FtZVNpdGVUeXBlIHtcclxuICBzdHJpY3QgPSBcInN0cmljdFwiLFxyXG4gIGxheCA9IFwibGF4XCIsXHJcbiAgbm9uZSA9IFwibm9uZVwiXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvb2tpZU9wdGlvbnMge1xyXG4gIGV4cGlyZXM/OiBudW1iZXIgfCBEYXRlO1xyXG4gIHBhdGg/OiBzdHJpbmc7XHJcbiAgZG9tYWluPzogc3RyaW5nO1xyXG4gIHNlY3VyZT86IGJvb2xlYW47XHJcbiAgc2FtZXNpdGU/OiBzdHJpbmdcclxufVxyXG4iXX0=
|
|
@@ -4,7 +4,7 @@ import { __awaiter } from 'tslib';
|
|
|
4
4
|
import { BehaviorSubject } from 'rxjs';
|
|
5
5
|
import * as jwt_decode from 'jwt-decode';
|
|
6
6
|
import * as i1 from '@angular/common/http';
|
|
7
|
-
import { HttpHeaders
|
|
7
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Assembly of @package ng2-cookies @see https://www.npmjs.com/package/ng2-cookies
|
|
@@ -214,11 +214,12 @@ class LocalizeTokenService {
|
|
|
214
214
|
return this.decodeToken(token);
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
|
-
LocalizeTokenService.ɵ
|
|
218
|
-
LocalizeTokenService
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
217
|
+
LocalizeTokenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
218
|
+
LocalizeTokenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenService, providedIn: 'root' });
|
|
219
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenService, decorators: [{
|
|
220
|
+
type: Injectable,
|
|
221
|
+
args: [{ providedIn: 'root' }]
|
|
222
|
+
}], ctorParameters: function () { return []; } });
|
|
222
223
|
|
|
223
224
|
/**
|
|
224
225
|
* Http method options
|
|
@@ -352,31 +353,36 @@ class LocalizeApiService {
|
|
|
352
353
|
});
|
|
353
354
|
}
|
|
354
355
|
} //class
|
|
355
|
-
LocalizeApiService.ɵ
|
|
356
|
-
LocalizeApiService
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
{ type: LocalizeTokenService }
|
|
364
|
-
];
|
|
356
|
+
LocalizeApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeApiService, deps: [{ token: i1.HttpClient }, { token: LocalizeTokenService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
357
|
+
LocalizeApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeApiService, providedIn: 'root' });
|
|
358
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeApiService, decorators: [{
|
|
359
|
+
type: Injectable,
|
|
360
|
+
args: [{
|
|
361
|
+
providedIn: 'root'
|
|
362
|
+
}]
|
|
363
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: LocalizeTokenService }]; } });
|
|
365
364
|
|
|
366
365
|
class LocalizeTokenModule {
|
|
367
366
|
}
|
|
368
|
-
LocalizeTokenModule
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
367
|
+
LocalizeTokenModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
368
|
+
LocalizeTokenModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenModule });
|
|
369
|
+
LocalizeTokenModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenModule, providers: [
|
|
370
|
+
LocalizeTokenService,
|
|
371
|
+
LocalizeApiService
|
|
372
|
+
] });
|
|
373
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: LocalizeTokenModule, decorators: [{
|
|
374
|
+
type: NgModule,
|
|
375
|
+
args: [{
|
|
376
|
+
providers: [
|
|
377
|
+
LocalizeTokenService,
|
|
378
|
+
LocalizeApiService
|
|
379
|
+
],
|
|
380
|
+
}]
|
|
381
|
+
}] });
|
|
376
382
|
|
|
377
383
|
/**
|
|
378
384
|
* Generated bundle index. Do not edit.
|
|
379
385
|
*/
|
|
380
386
|
|
|
381
387
|
export { EMethod, ISameSiteType, LocalizeApiService, LocalizeToken, LocalizeTokenModule, LocalizeTokenService, LocalizeTokenStorageHelper, waitFor, waitUntil };
|
|
382
|
-
//# sourceMappingURL=sambath999-localize-token.
|
|
388
|
+
//# sourceMappingURL=sambath999-localize-token.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sambath999-localize-token.mjs","sources":["../../src/lib/localize.token.storage.ts","../../src/lib/localize.token.ts","../../src/lib/localize.token.service.ts","../../src/lib/localize.api.service.ts","../../src/lib/localize.token.module.ts","../../src/sambath999-localize-token.ts"],"sourcesContent":["import { LocalizeToken } from \"./localize.token\";\r\n\r\n\r\n/**\r\n* Assembly of @package ng2-cookies @see https://www.npmjs.com/package/ng2-cookies\r\n*\r\n* Reassembled by\r\n* @author sambath999\r\n* @date_29_09_2021\r\n* Updated from raw parameters to\r\n* @param {ICookieOptions} options and added another newer cookie flag\r\n* @param {string} samesite\r\n* @param {constant} SameSiteTypes, @param {string} strict \"strict\", @param {string} lax \"lax\", @param {string} none \"none\"\r\n*\r\n* @enum\r\n*/\r\nexport class LocalizeTokenStorageHelper {\r\n\r\n /**\r\n * Checks the existence of a single cookie by it's name\r\n *\r\n * @param {string} name Identification of the cookie\r\n * @returns existence of the cookie\r\n */\r\n check(name: string): boolean {\r\n if (typeof document === \"undefined\") return false;\r\n name = encodeURIComponent(name);\r\n const regexp = new RegExp('(?:^' + name + '|;\\\\s*' + name + ')=(.*?)(?:;|$)', 'g');\r\n return regexp.test(document.cookie);\r\n }\r\n\r\n /**\r\n * Retrieves a single cookie by it's name\r\n *\r\n * @param {string} name Identification of the Cookie\r\n * @returns The Cookie's value\r\n */\r\n get(name: string): string | undefined {\r\n if (!this.check(name)) return undefined;\r\n\r\n name = encodeURIComponent(name);\r\n const regexp = new RegExp('(?:^' + name + '|;\\\\s*' + name + ')=(.*?)(?:;|$)', 'g');\r\n const result = regexp.exec(document.cookie);\r\n return result ? decodeURIComponent(result[1]) : undefined;\r\n }\r\n\r\n /**\r\n * Retrieves a a list of all cookie avaiable\r\n *\r\n * @returns Object with all Cookies\r\n */\r\n getAll(): any {\r\n const cookies: any = {};\r\n\r\n if (document.cookie) {\r\n const split = document.cookie.split(';');\r\n for (const s of split) {\r\n const currCookie = s.split('=');\r\n currCookie[0] = currCookie[0].trim();\r\n cookies[decodeURIComponent(currCookie[0])] = decodeURIComponent(currCookie[1]);\r\n }\r\n }\r\n\r\n return cookies;\r\n }\r\n\r\n get defaultOptions(): ICookieOptions { return LocalizeToken.cookieOptions }\r\n\r\n\r\n set(name: string, value: string, options?: ICookieOptions) {\r\n options ??= this.defaultOptions;\r\n const { expires, path, domain, secure, samesite } = options;\r\n let cookieStr = `${encodeURIComponent(name)}=${encodeURIComponent(value)};`;\r\n\r\n if (expires) {\r\n const dtExpires = typeof expires === 'number' ? new Date(Date.now() + expires * 864e5) : expires;\r\n cookieStr += `expires=${dtExpires.toUTCString()};`;\r\n }\r\n\r\n cookieStr += path ? `path=${path};` : '';\r\n cookieStr += domain ? `domain=${domain};` : '';\r\n cookieStr += secure ? 'secure;' : '';\r\n cookieStr += samesite ? `samesite=${samesite};` : '';\r\n\r\n document.cookie = cookieStr;\r\n }\r\n\r\n /**\r\n * Removes specified Cookie\r\n *\r\n * @param {string} name Cookie's identification\r\n * @param {string} path Path relative to the domain where the cookie should be avaiable. Default /\r\n * @param {string} domain Domain where the cookie should be avaiable. Default current domain\r\n */\r\n delete(name: string, path: string = '/', domain: string = window.location.hostname): void {\r\n this.set(name, '', { path, domain, expires: -1 });\r\n }\r\n\r\n /**\r\n * Delete all cookie avaiable\r\n */\r\n deleteAll(path?: string, domain?: string): void {\r\n const cookies = this.getAll();\r\n\r\n for (const cookieName of Object.keys(cookies)) {\r\n this.delete(cookieName, path, domain);\r\n }\r\n }\r\n\r\n}\r\n\r\nexport enum ISameSiteType {\r\n strict = \"strict\",\r\n lax = \"lax\",\r\n none = \"none\"\r\n}\r\n\r\nexport interface ICookieOptions {\r\n expires?: number | Date;\r\n path?: string;\r\n domain?: string;\r\n secure?: boolean;\r\n samesite?: string\r\n}\r\n","import { ICookieOptions, LocalizeTokenStorageHelper } from \"./localize.token.storage\";\r\ninterface ILocalizeTokenConfig {\r\n mainDomain: string;\r\n authTokenName: string;\r\n tenantTokenName: string;\r\n refreshTokenName: string;\r\n needTenant: boolean;\r\n isProduction: boolean;\r\n revokeTokenUrl?: string;\r\n}\r\nexport class LocalizeToken {\r\n static config: ILocalizeTokenConfig = {\r\n mainDomain: location.hostname,\r\n authTokenName: 'auth-token',\r\n tenantTokenName: 'tenant-token',\r\n refreshTokenName: 'refresh-token',\r\n needTenant: false,\r\n isProduction: false,\r\n }\r\n\r\n static cookieOptions: ICookieOptions = {\r\n path: '/',\r\n domain: LocalizeToken.config.mainDomain,\r\n secure: true,\r\n // samesite: SameSiteType.strict,\r\n expires: 1\r\n }\r\n static readonly storage = new LocalizeTokenStorageHelper();\r\n\r\n static readonly httpHeaders = {\r\n AUTHORIZATION: 'Authorization',\r\n X_TENANT: 'X-Tenant',\r\n X_REFRESH_TOKEN: 'X-RefreshToken',\r\n CONTENT_TYPE: 'Content-Type',\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Waits for a specified amount of time.\r\n * @param milliseconds - The milliseconds to wait.\r\n * @param when - The condition to wait for. Default is true.\r\n * @returns - Promise<void>\r\n */\r\nexport async function waitFor(milliseconds: number, when: boolean = true) {\r\n if (!when) return;\r\n await new Promise(resolve => setTimeout(resolve, milliseconds));\r\n }\r\n \r\n /**\r\n * Waits until the condition is met.\r\n * @param when - The condition to wait for.\r\n * @param intervalNumber - The interval number in milliseconds to check the condition. Default is 50.\r\n */\r\n export async function waitUntil(when: () => any, intervalNumber: number = 50) {\r\n await new Promise(resolve => {\r\n const interval = setInterval(async () => {\r\n const cond = when();\r\n const result = cond instanceof Promise ? await cond : cond;\r\n if (result) {\r\n clearInterval(interval);\r\n resolve(true);\r\n }\r\n }, intervalNumber);\r\n });\r\n }","import { Injectable } from '@angular/core';\r\nimport { LocalizeToken } from './localize.token';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport * as jwt_decode from 'jwt-decode';\r\nexport interface JwtPayload extends jwt_decode.JwtPayload {\r\n // Define the structure of your JWT payload here\r\n email: string;\r\n sub: string;\r\n name: string;\r\n iat: number;\r\n exp: number;\r\n // Add other fields as needed\r\n}\r\n\r\ninterface IAuthToken {\r\n token: string;\r\n revoke: boolean;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LocalizeTokenService {\r\n readonly isRevokingTokenSubject = new BehaviorSubject<boolean>(false);\r\n\r\n private get authToken() { return this.storageGet() }\r\n private set authToken(value: IAuthToken | undefined) {\r\n value\r\n ? this.storageSet(value)\r\n : LocalizeToken.storage.delete(LocalizeToken.config.authTokenName);\r\n }\r\n\r\n get refreshToken() { return LocalizeToken.storage.get(LocalizeToken.config.refreshTokenName) }\r\n get accessToken() { return this.authToken?.token }\r\n\r\n set accessToken(value: string | undefined) {\r\n if (value) {\r\n this.authToken = { token: value, revoke: false }\r\n }\r\n }\r\n\r\n get isRevokingToken() { return this.isRevokingTokenSubject.value /* this.authToken?.revoke ?? false */ }\r\n set isRevokingToken(value: boolean) {\r\n this.isRevokingTokenSubject.next(value);\r\n if (this.authToken) {\r\n this.authToken = { ...this.authToken, revoke: value };\r\n }\r\n }\r\n\r\n get tenantToken() { return LocalizeToken.storage.get(LocalizeToken.config.tenantTokenName) }\r\n\r\n constructor() { }\r\n\r\n private storageGet() {\r\n try {\r\n const encoded = LocalizeToken.storage.get(LocalizeToken.config.authTokenName);\r\n const decoded = atob(encoded || '');\r\n return JSON.parse(decoded) as IAuthToken;\r\n } catch {\r\n return undefined\r\n }\r\n }\r\n\r\n private storageSet(value: IAuthToken) {\r\n const base64 = btoa(JSON.stringify(value));\r\n LocalizeToken.storage.set(LocalizeToken.config.authTokenName, base64);\r\n }\r\n\r\n tokensValid() {\r\n return this.refreshToken?.length && (!LocalizeToken.config.needTenant || this.tenantToken?.length);\r\n }\r\n\r\n decodeToken = (token: string) => jwt_decode.jwtDecode<JwtPayload>(token);\r\n get decodeRefreshToken() {\r\n const token = LocalizeToken.storage.get(LocalizeToken.config.refreshTokenName);\r\n if (!token) return null;\r\n return this.decodeToken(token);\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { LocalizeTokenService } from \"./localize.token.service\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { LocalizeToken, waitFor, waitUntil } from \"./localize.token\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\n/**\r\n * Http method options\r\n */\r\nexport enum EMethod {\r\n POST = 1,\r\n GET = 2,\r\n PUT = 3,\r\n DELETE = 4,\r\n PATCH = 5\r\n}\r\n\r\ninterface ILocalizeApiConfigs {\r\n onPrepareRequest?: () => any;\r\n /**\r\n * A function that is called when refresh token is missing then perform the auto logout.\r\n * @returns - The base URL of the API.\r\n */\r\n onAutoLogout?: () => any;\r\n /**\r\n * A function that is called when request revoking token unauthorized.\r\n * @returns - The login dialog service.\r\n */\r\n onRevokeUnauthorized?: () => any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalizeApiService {\r\n\r\n readonly isRequestingSubject = new BehaviorSubject<boolean>(false);\r\n readonly isResolvedStartupSubject = new BehaviorSubject<boolean>(false);\r\n get isRequesting() { return this.isRequestingSubject.value; }\r\n get isResolvedStartup() { return this.isResolvedStartupSubject.value; }\r\n\r\n private apiConfigs: ILocalizeApiConfigs = {};\r\n\r\n constructor(readonly httpClient: HttpClient,\r\n private readonly localizeTokenService: LocalizeTokenService\r\n ) { }\r\n\r\n /**\r\n * Initialize the API service.\r\n * @param apiConfigs - The API configurations.\r\n */\r\n init(apiConfigs: ILocalizeApiConfigs) {\r\n this.apiConfigs = apiConfigs;\r\n }\r\n\r\n\r\n /**\r\n * A higher-order function that returns a curried function for making API requests.\r\n *\r\n * @param baseUrl - The base URL of the API.\r\n * @returns A curried function that can be used to make API requests.\r\n */\r\n func = (baseUrl: string) =>\r\n (path: string, method: EMethod = EMethod.GET, value: any = null, isFormData: boolean = false, headers?: { [x: string]: string }) =>\r\n this.base(baseUrl, path, method, value, isFormData, headers)\r\n\r\n private async base(baseUrl: string,\r\n path: string,\r\n method: EMethod = EMethod.GET,\r\n value: any = null,\r\n isFormData: boolean = false,\r\n headers?: { [x: string]: string }) {\r\n\r\n await this.ifPromise(this.apiConfigs.onPrepareRequest);\r\n\r\n const url = `${baseUrl.trim().replace(/\\/?$/, '/')}${path.trim().replace(/^\\//, '')}`;\r\n const httpMethod = EMethod[method].toLowerCase();\r\n const request = () => { return { body: value, headers: this.options(isFormData, headers) } };\r\n\r\n // Wait for previous request to complete\r\n await this.toWaitForPreviousRequest();\r\n\r\n // Process request\r\n try { return await this.processRequest(httpMethod, url, request()) }\r\n // Handle unauthorized error if any\r\n catch (error) {\r\n if ((error as any).status !== 401) { throw error; }\r\n return await this.onUnauthorizedError(httpMethod, url, request);\r\n }\r\n }\r\n\r\n private async onUnauthorizedError(httpMethod: string, url: string, request: Function) {\r\n await this.revokeToken();\r\n if (!this.isResolvedStartup) {\r\n return await this.processRequest(httpMethod, url, request());\r\n }\r\n }\r\n\r\n private async toWaitForPreviousRequest() {\r\n if (this.localizeTokenService.isRevokingToken) {\r\n await waitUntil(() => !this.localizeTokenService.isRevokingToken);\r\n }\r\n // to wait for each request in 50ms, even if the request is not completed\r\n await waitFor(50, this.isRequesting);\r\n }\r\n\r\n private async processRequest(method: string, url: string, options: any): Promise<any> {\r\n this.isRequestingSubject.next(true);\r\n const result = await new Promise((resolve, reject) =>\r\n this.httpClient.request<any>(method, url, options).subscribe({ next: resolve, error: reject }))\r\n this.isRequestingSubject.next(false);\r\n return result;\r\n }\r\n\r\n private async revokeToken(force: boolean = false): Promise<void> {\r\n\r\n if (this.localizeTokenService.isRevokingToken && !force) {\r\n await waitUntil(() => !this.localizeTokenService.isRevokingToken)\r\n return;\r\n }\r\n\r\n try {\r\n this.localizeTokenService.isRevokingToken = true;\r\n const reqUrl = LocalizeToken.config.revokeTokenUrl;\r\n const reqHeaders = this.options().append(LocalizeToken.httpHeaders.X_REFRESH_TOKEN, `${this.localizeTokenService.refreshToken}`);\r\n const revokeToken: any = await new Promise((resolve, reject) =>\r\n this.httpClient.get<any>(reqUrl!, { headers: reqHeaders }).subscribe({ next: resolve, error: reject }))\r\n\r\n if (revokeToken?.status) {\r\n this.localizeTokenService.accessToken = revokeToken.message;\r\n } else if (!this.localizeTokenService.refreshToken) {\r\n await this.ifPromise(this.apiConfigs.onAutoLogout)\r\n } else {\r\n if (this.apiConfigs.onRevokeUnauthorized) {\r\n await this.ifPromise(this.apiConfigs.onRevokeUnauthorized);\r\n await this.revokeToken(true);\r\n }\r\n }\r\n } finally {\r\n this.localizeTokenService.isRevokingToken = false;\r\n }\r\n }\r\n\r\n /** default http request options */\r\n private options(isFormData: boolean = false, headers: { [key: string]: string } = {}): HttpHeaders {\r\n const defaultHeaders = { [LocalizeToken.httpHeaders.AUTHORIZATION]: `Bearer ${this.localizeTokenService.accessToken}`, };\r\n if (LocalizeToken.config.needTenant) {\r\n defaultHeaders[LocalizeToken.httpHeaders.X_TENANT] = `${this.localizeTokenService.tenantToken}`;\r\n }\r\n\r\n if (!isFormData) {\r\n defaultHeaders[LocalizeToken.httpHeaders.CONTENT_TYPE] = 'application/json';\r\n }\r\n\r\n const filteredHeaders = Object.keys(defaultHeaders).filter(key => !Object.keys(headers).includes(key))\r\n .reduce((acc, key) => ({ ...acc, [key]: defaultHeaders[key] }), {})\r\n const mergedHeaders = { ...filteredHeaders, ...headers };\r\n return new HttpHeaders(mergedHeaders);\r\n }\r\n\r\n private async ifPromise(fn?: Function) {\r\n if (!fn) return;\r\n return fn instanceof Promise ? await fn() : fn();\r\n }\r\n\r\n}//class\r\n","import { NgModule } from '@angular/core';\r\nimport { LocalizeTokenService } from './localize.token.service';\r\nimport { LocalizeApiService } from './localize.api.service';\r\n\r\n@NgModule({\r\n providers: [\r\n LocalizeTokenService,\r\n LocalizeApiService\r\n ],\r\n})\r\nexport class LocalizeTokenModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.LocalizeTokenService"],"mappings":"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"}
|