eco-vue-js 0.26.5 → 0.26.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Auth/utils/utils.d.ts +8 -7
- package/dist/components/Auth/utils/utils.d.ts.map +1 -1
- package/dist/components/Auth/utils/utils.js +28 -25
- package/dist/utils/ApiClient.d.ts +3 -0
- package/dist/utils/ApiClient.d.ts.map +1 -1
- package/dist/utils/ApiClient.js +10 -7
- package/docs/llms.txt +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function
|
|
7
|
-
export declare function
|
|
1
|
+
export declare const EXPIRATION_DATE_KEY = "exp";
|
|
2
|
+
export declare function checkExpirationDate(key?: string): boolean | null;
|
|
3
|
+
export declare function updateExpirationDate(date: Date, key?: string): void;
|
|
4
|
+
export declare function setExpirationDate(key?: string): void;
|
|
5
|
+
export declare function removeExpirationDate(key?: string): void;
|
|
6
|
+
export declare function setRefreshTimestamp(key?: string): void;
|
|
7
|
+
export declare function removeRefreshTimestamp(key?: string): void;
|
|
8
|
+
export declare function getLastRefreshPromise(key?: string): Promise<void> | null;
|
|
8
9
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/components/Auth/utils/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/components/Auth/utils/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,QAAQ,CAAA;AA8BxC,wBAAgB,mBAAmB,CAAC,GAAG,SAAsB,GAAG,OAAO,GAAG,IAAI,CAM7E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,SAAsB,QAIzE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,SAAsB,QAM1D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,SAAsB,QAG7D;AAID,wBAAgB,mBAAmB,CAAC,GAAG,SAAsB,QAW5D;AAED,wBAAgB,sBAAsB,CAAC,GAAG,SAAsB,GAAG,IAAI,CAEtE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,SAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAwBrF"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
//#region src/components/Auth/utils/utils.ts
|
|
2
|
-
var EXPIRATION_DATE_KEY = "exp";
|
|
3
1
|
var REFRESH_TIMESTAMP_KEY = "refresh-ts";
|
|
4
2
|
var REFRESH_BUFFER_TIMEOUT = 3e3;
|
|
5
3
|
var REFRESH_BUFFER_TICK = 1e3;
|
|
@@ -15,38 +13,43 @@ function deleteCookie(name) {
|
|
|
15
13
|
document.cookie = name + "=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;";
|
|
16
14
|
}
|
|
17
15
|
var EXP_FACTOR = 1e3;
|
|
18
|
-
function
|
|
19
|
-
|
|
16
|
+
function getRefreshTimestampKey(key) {
|
|
17
|
+
return key === "exp" ? REFRESH_TIMESTAMP_KEY : key + "-refresh-ts";
|
|
18
|
+
}
|
|
19
|
+
function checkExpirationDate(key = "exp") {
|
|
20
|
+
const exp = Number.parseFloat(getCookie(key));
|
|
20
21
|
if (!exp || !Number.isFinite(exp)) return null;
|
|
21
22
|
return exp > Date.now() / EXP_FACTOR;
|
|
22
23
|
}
|
|
23
|
-
function updateExpirationDate(date) {
|
|
24
|
+
function updateExpirationDate(date, key = "exp") {
|
|
24
25
|
const exp = (date.getTime() / EXP_FACTOR).toString();
|
|
25
|
-
setCookie(
|
|
26
|
-
localStorage.setItem(
|
|
26
|
+
setCookie(key, exp, date);
|
|
27
|
+
localStorage.setItem(key, exp);
|
|
27
28
|
}
|
|
28
|
-
function setExpirationDate() {
|
|
29
|
-
const exp = Number.parseFloat(getCookie(
|
|
29
|
+
function setExpirationDate(key = "exp") {
|
|
30
|
+
const exp = Number.parseFloat(getCookie(key));
|
|
30
31
|
if (!exp || !Number.isFinite(exp)) return;
|
|
31
|
-
localStorage.setItem(
|
|
32
|
+
localStorage.setItem(key, exp.toString());
|
|
32
33
|
}
|
|
33
|
-
function removeExpirationDate() {
|
|
34
|
-
localStorage.removeItem(
|
|
35
|
-
deleteCookie(
|
|
34
|
+
function removeExpirationDate(key = "exp") {
|
|
35
|
+
localStorage.removeItem(key);
|
|
36
|
+
deleteCookie(key);
|
|
36
37
|
}
|
|
37
|
-
var
|
|
38
|
-
function setRefreshTimestamp() {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
var refreshTimestampTimeouts = /* @__PURE__ */ new Map();
|
|
39
|
+
function setRefreshTimestamp(key = "exp") {
|
|
40
|
+
const refreshKey = getRefreshTimestampKey(key);
|
|
41
|
+
localStorage.setItem(refreshKey, (/* @__PURE__ */ new Date()).getTime().toString());
|
|
42
|
+
clearTimeout(refreshTimestampTimeouts.get(refreshKey));
|
|
43
|
+
refreshTimestampTimeouts.set(refreshKey, setTimeout(() => {
|
|
44
|
+
refreshTimestampTimeouts.delete(refreshKey);
|
|
45
|
+
localStorage.removeItem(refreshKey);
|
|
46
|
+
}, REFRESH_BUFFER_TIMEOUT));
|
|
44
47
|
}
|
|
45
|
-
function removeRefreshTimestamp() {
|
|
46
|
-
localStorage.removeItem(
|
|
48
|
+
function removeRefreshTimestamp(key = "exp") {
|
|
49
|
+
localStorage.removeItem(getRefreshTimestampKey(key));
|
|
47
50
|
}
|
|
48
|
-
function getLastRefreshPromise() {
|
|
49
|
-
const lastRefreshTimeStamp = Number.parseInt(localStorage.getItem(
|
|
51
|
+
function getLastRefreshPromise(key = "exp") {
|
|
52
|
+
const lastRefreshTimeStamp = Number.parseInt(localStorage.getItem(getRefreshTimestampKey(key)) ?? "");
|
|
50
53
|
if (!Number.isInteger(lastRefreshTimeStamp) || lastRefreshTimeStamp <= 0) return null;
|
|
51
54
|
const diff = (/* @__PURE__ */ new Date()).getTime() - lastRefreshTimeStamp;
|
|
52
55
|
if (diff <= 0 || diff > REFRESH_BUFFER_TIMEOUT) return null;
|
|
@@ -56,7 +59,7 @@ function getLastRefreshPromise() {
|
|
|
56
59
|
if (count < 1) {
|
|
57
60
|
clearInterval(interval);
|
|
58
61
|
reject(/* @__PURE__ */ new Error("Timed out"));
|
|
59
|
-
} else if (checkExpirationDate()) {
|
|
62
|
+
} else if (checkExpirationDate(key)) {
|
|
60
63
|
clearInterval(interval);
|
|
61
64
|
resolve();
|
|
62
65
|
} else count--;
|
|
@@ -28,7 +28,10 @@ export declare class ApiClientInstance implements ApiClient {
|
|
|
28
28
|
credentials?: RequestCredentials;
|
|
29
29
|
baseUrl?: BaseUrl;
|
|
30
30
|
noRecheck?: boolean;
|
|
31
|
+
/** Cookie holding when to refresh the session, in epoch seconds. Defaults to `exp` */
|
|
32
|
+
expirationCookie?: string;
|
|
31
33
|
});
|
|
34
|
+
private get expirationCookie();
|
|
32
35
|
setOnFailure(value: (response: Response) => void): void;
|
|
33
36
|
logout(): void;
|
|
34
37
|
private retry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/ApiClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAA;AAE7C,OAAO,EAAC,KAAK,GAAG,EAAM,MAAM,KAAK,CAAA;AAMjC,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAA;AAElE,eAAO,MAAM,YAAY,GAAI,QAAQ,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,KAAG,MAE9E,CAAA;AAYD,MAAM,WAAW,MAAM;CAAG;AAE1B,KAAK,MAAM,GAAG,MAAM,SAAS;IAAC,MAAM,EAAE,MAAM,KAAK,CAAA;CAAC,GAAG,KAAK,GAAG,IAAK,MAAO,GAAG,CAAA;AAC5E,KAAK,OAAO,GAAG,IAAK,MAAO,EAAE,GAAG,UAAW,MAAO,EAAE,GAAG,WAAY,MAAO,EAAE,CAAA;AAE5E,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IAEf,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAErG,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAE7K,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAE9K,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;CACzG;AAED,qBAAa,iBAAkB,YAAW,SAAS;IAKrC,OAAO,CAAC,MAAM;IAJ1B,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAO;IAC3C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,SAAgB,OAAO,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC,CAAA;gBAEvB,MAAM,EAAE;QAC1B,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;QACjC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;QAClC,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAA;QACxC,WAAW,CAAC,EAAE,kBAAkB,CAAA;QAChC,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,SAAS,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ApiClient.d.ts","sourceRoot":"","sources":["../../../src/utils/ApiClient.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/ApiClient.js
CHANGED
|
@@ -26,11 +26,14 @@ var ApiClientInstance = class {
|
|
|
26
26
|
return this.auth;
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
+
get expirationCookie() {
|
|
30
|
+
return this.config.expirationCookie ?? "exp";
|
|
31
|
+
}
|
|
29
32
|
setOnFailure(value) {
|
|
30
33
|
this.config.onFailure = value;
|
|
31
34
|
}
|
|
32
35
|
logout() {
|
|
33
|
-
removeExpirationDate();
|
|
36
|
+
removeExpirationDate(this.expirationCookie);
|
|
34
37
|
this.auth.value = false;
|
|
35
38
|
}
|
|
36
39
|
async retry(request) {
|
|
@@ -45,7 +48,7 @@ var ApiClientInstance = class {
|
|
|
45
48
|
}
|
|
46
49
|
async refresh() {
|
|
47
50
|
if (!this.refreshPromise) {
|
|
48
|
-
const refreshTimeoutPromise = getLastRefreshPromise();
|
|
51
|
+
const refreshTimeoutPromise = getLastRefreshPromise(this.expirationCookie);
|
|
49
52
|
if (refreshTimeoutPromise) this.refreshPromise = refreshTimeoutPromise.then(() => {
|
|
50
53
|
this.refreshPromise = null;
|
|
51
54
|
this.auth.value = true;
|
|
@@ -62,7 +65,7 @@ var ApiClientInstance = class {
|
|
|
62
65
|
}
|
|
63
66
|
});
|
|
64
67
|
else {
|
|
65
|
-
setRefreshTimestamp();
|
|
68
|
+
setRefreshTimestamp(this.expirationCookie);
|
|
66
69
|
const promise = this.config.tokenRefresh ? this.config.tokenRefresh() : this.fetch("GET", this.config.refreshUrl, { updateToken: true });
|
|
67
70
|
this.refreshPromise = promise.then(() => {
|
|
68
71
|
this.refreshPromise = null;
|
|
@@ -71,7 +74,7 @@ var ApiClientInstance = class {
|
|
|
71
74
|
this.refreshPromise = null;
|
|
72
75
|
this.auth.value = false;
|
|
73
76
|
return Promise.reject(error);
|
|
74
|
-
}).finally(removeRefreshTimestamp);
|
|
77
|
+
}).finally(() => removeRefreshTimestamp(this.expirationCookie));
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
80
|
return this.refreshPromise;
|
|
@@ -79,9 +82,9 @@ var ApiClientInstance = class {
|
|
|
79
82
|
checkAuth() {
|
|
80
83
|
let result;
|
|
81
84
|
if (this.config.tokenGetter) result = !!this.config.tokenGetter?.();
|
|
82
|
-
else result = checkExpirationDate();
|
|
85
|
+
else result = checkExpirationDate(this.expirationCookie);
|
|
83
86
|
if (result !== false) this.auth.value = result !== null;
|
|
84
|
-
if (result === null) removeExpirationDate();
|
|
87
|
+
if (result === null) removeExpirationDate(this.expirationCookie);
|
|
85
88
|
return result;
|
|
86
89
|
}
|
|
87
90
|
fetch(method, url, config, baseUrl) {
|
|
@@ -151,7 +154,7 @@ var ApiClientInstance = class {
|
|
|
151
154
|
}));
|
|
152
155
|
else reject(error);
|
|
153
156
|
}).finally(() => {
|
|
154
|
-
if (config?.updateToken) setExpirationDate();
|
|
157
|
+
if (config?.updateToken) setExpirationDate(this.expirationCookie);
|
|
155
158
|
});
|
|
156
159
|
});
|
|
157
160
|
}
|
package/docs/llms.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# eco-vue-js
|
|
2
2
|
|
|
3
|
-
> Vue 3 UI kit with Tailwind v4 — components, utilities, icons and recipes. These are the docs of version 0.26.
|
|
3
|
+
> Vue 3 UI kit with Tailwind v4 — components, utilities, icons and recipes. These are the docs of version 0.26.6, the one installed next to them. Start with Getting started and Conventions; each component page lists its props, events and slots with examples.
|
|
4
4
|
|
|
5
5
|
Release notes, for what changed between versions: https://github.com/rsmple/eco-vue-js/releases. The docs site, with live demos: https://rsmple.github.io/eco-vue-js/
|
|
6
6
|
|