@snail-js/api 0.1.11 → 0.1.13
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/snail-api.js
CHANGED
|
@@ -3566,7 +3566,7 @@ const INDEXDB_INDEX_NAME = "SNAIL_CACHE_INDEX";
|
|
|
3566
3566
|
class IndexDBCache {
|
|
3567
3567
|
constructor(ttl) {
|
|
3568
3568
|
__publicField(this, "ttl");
|
|
3569
|
-
__publicField(this, "db"
|
|
3569
|
+
__publicField(this, "db");
|
|
3570
3570
|
this.ttl = ttl;
|
|
3571
3571
|
}
|
|
3572
3572
|
async init() {
|
|
@@ -3595,9 +3595,9 @@ class IndexDBCache {
|
|
|
3595
3595
|
});
|
|
3596
3596
|
}
|
|
3597
3597
|
async get(key) {
|
|
3598
|
-
return new Promise((resolve, reject) => {
|
|
3599
|
-
if (this.db === null) {
|
|
3600
|
-
|
|
3598
|
+
return new Promise(async (resolve, reject) => {
|
|
3599
|
+
if (this.db === null || this.db === void 0) {
|
|
3600
|
+
await this.init();
|
|
3601
3601
|
}
|
|
3602
3602
|
const select = this.db.transaction(INDEXDB_OBJECT_STORE_NAME, "readonly").objectStore(INDEXDB_OBJECT_STORE_NAME).get(key);
|
|
3603
3603
|
select.onsuccess = () => {
|
|
@@ -3617,17 +3617,15 @@ class IndexDBCache {
|
|
|
3617
3617
|
});
|
|
3618
3618
|
}
|
|
3619
3619
|
async set(key, value) {
|
|
3620
|
-
return new Promise((resolve, reject) => {
|
|
3621
|
-
if (this.db === null) {
|
|
3622
|
-
|
|
3620
|
+
return new Promise(async (resolve, reject) => {
|
|
3621
|
+
if (this.db === null || this.db === void 0) {
|
|
3622
|
+
await this.init();
|
|
3623
3623
|
}
|
|
3624
|
-
const select = this.db.transaction(INDEXDB_OBJECT_STORE_NAME, "readwrite").objectStore(INDEXDB_OBJECT_STORE_NAME).put(
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
3629
|
-
}
|
|
3630
|
-
);
|
|
3624
|
+
const select = this.db.transaction(INDEXDB_OBJECT_STORE_NAME, "readwrite").objectStore(INDEXDB_OBJECT_STORE_NAME).put({
|
|
3625
|
+
data: value,
|
|
3626
|
+
exp: Math.ceil((/* @__PURE__ */ new Date()).getTime() / 1e3) + this.ttl,
|
|
3627
|
+
key
|
|
3628
|
+
});
|
|
3631
3629
|
select.onsuccess = () => {
|
|
3632
3630
|
resolve({ error: null, data: true });
|
|
3633
3631
|
};
|
|
@@ -3640,9 +3638,9 @@ class IndexDBCache {
|
|
|
3640
3638
|
});
|
|
3641
3639
|
}
|
|
3642
3640
|
async delete(key) {
|
|
3643
|
-
return new Promise((resolve, reject) => {
|
|
3644
|
-
if (this.db === null) {
|
|
3645
|
-
|
|
3641
|
+
return new Promise(async (resolve, reject) => {
|
|
3642
|
+
if (this.db === null || this.db === void 0) {
|
|
3643
|
+
await this.init();
|
|
3646
3644
|
}
|
|
3647
3645
|
const select = this.db.transaction(INDEXDB_OBJECT_STORE_NAME, "readwrite").objectStore(INDEXDB_OBJECT_STORE_NAME).delete(key);
|
|
3648
3646
|
select.onsuccess = () => {
|
|
@@ -3705,8 +3703,18 @@ function createCache(type, ttl) {
|
|
|
3705
3703
|
}
|
|
3706
3704
|
const apiKey = (apiInstance) => {
|
|
3707
3705
|
const { version, method, url, params, headers } = apiInstance;
|
|
3708
|
-
|
|
3706
|
+
const str = `${params ? `-${recordToString(params)}` : ""}${headers ? `-${recordToString(headers)}` : ""}`;
|
|
3707
|
+
return `[${method}]${version ? `-v${version}` : ""}-${url}-${generateShortUniqueHash(str)}`;
|
|
3709
3708
|
};
|
|
3709
|
+
async function generateShortUniqueHash(str) {
|
|
3710
|
+
const encoder = new TextEncoder();
|
|
3711
|
+
const data = encoder.encode(str);
|
|
3712
|
+
const hashBuffer = await window.crypto.subtle.digest("SHA-256", data);
|
|
3713
|
+
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
3714
|
+
let hashBase64 = btoa(String.fromCharCode.apply(null, hashArray));
|
|
3715
|
+
hashBase64 = hashBase64.replace(/\+/g, "0").replace(/\//g, "1").replace(/=/g, "");
|
|
3716
|
+
return hashBase64.substring(0, 16);
|
|
3717
|
+
}
|
|
3710
3718
|
function recordToString(record) {
|
|
3711
3719
|
return Object.keys(record).map((key) => {
|
|
3712
3720
|
return `${key}=${record[key]}`;
|
|
@@ -4211,5 +4219,6 @@ export {
|
|
|
4211
4219
|
Versioning,
|
|
4212
4220
|
VersioningType,
|
|
4213
4221
|
apiKey,
|
|
4222
|
+
generateShortUniqueHash,
|
|
4214
4223
|
recordToString
|
|
4215
4224
|
};
|
package/dist/snail-api.umd.cjs
CHANGED
|
@@ -3570,7 +3570,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
3570
3570
|
class IndexDBCache {
|
|
3571
3571
|
constructor(ttl) {
|
|
3572
3572
|
__publicField(this, "ttl");
|
|
3573
|
-
__publicField(this, "db"
|
|
3573
|
+
__publicField(this, "db");
|
|
3574
3574
|
this.ttl = ttl;
|
|
3575
3575
|
}
|
|
3576
3576
|
async init() {
|
|
@@ -3599,9 +3599,9 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
3599
3599
|
});
|
|
3600
3600
|
}
|
|
3601
3601
|
async get(key) {
|
|
3602
|
-
return new Promise((resolve, reject) => {
|
|
3603
|
-
if (this.db === null) {
|
|
3604
|
-
|
|
3602
|
+
return new Promise(async (resolve, reject) => {
|
|
3603
|
+
if (this.db === null || this.db === void 0) {
|
|
3604
|
+
await this.init();
|
|
3605
3605
|
}
|
|
3606
3606
|
const select = this.db.transaction(INDEXDB_OBJECT_STORE_NAME, "readonly").objectStore(INDEXDB_OBJECT_STORE_NAME).get(key);
|
|
3607
3607
|
select.onsuccess = () => {
|
|
@@ -3621,17 +3621,15 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
3621
3621
|
});
|
|
3622
3622
|
}
|
|
3623
3623
|
async set(key, value) {
|
|
3624
|
-
return new Promise((resolve, reject) => {
|
|
3625
|
-
if (this.db === null) {
|
|
3626
|
-
|
|
3624
|
+
return new Promise(async (resolve, reject) => {
|
|
3625
|
+
if (this.db === null || this.db === void 0) {
|
|
3626
|
+
await this.init();
|
|
3627
3627
|
}
|
|
3628
|
-
const select = this.db.transaction(INDEXDB_OBJECT_STORE_NAME, "readwrite").objectStore(INDEXDB_OBJECT_STORE_NAME).put(
|
|
3629
|
-
|
|
3630
|
-
|
|
3631
|
-
|
|
3632
|
-
|
|
3633
|
-
}
|
|
3634
|
-
);
|
|
3628
|
+
const select = this.db.transaction(INDEXDB_OBJECT_STORE_NAME, "readwrite").objectStore(INDEXDB_OBJECT_STORE_NAME).put({
|
|
3629
|
+
data: value,
|
|
3630
|
+
exp: Math.ceil((/* @__PURE__ */ new Date()).getTime() / 1e3) + this.ttl,
|
|
3631
|
+
key
|
|
3632
|
+
});
|
|
3635
3633
|
select.onsuccess = () => {
|
|
3636
3634
|
resolve({ error: null, data: true });
|
|
3637
3635
|
};
|
|
@@ -3644,9 +3642,9 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
3644
3642
|
});
|
|
3645
3643
|
}
|
|
3646
3644
|
async delete(key) {
|
|
3647
|
-
return new Promise((resolve, reject) => {
|
|
3648
|
-
if (this.db === null) {
|
|
3649
|
-
|
|
3645
|
+
return new Promise(async (resolve, reject) => {
|
|
3646
|
+
if (this.db === null || this.db === void 0) {
|
|
3647
|
+
await this.init();
|
|
3650
3648
|
}
|
|
3651
3649
|
const select = this.db.transaction(INDEXDB_OBJECT_STORE_NAME, "readwrite").objectStore(INDEXDB_OBJECT_STORE_NAME).delete(key);
|
|
3652
3650
|
select.onsuccess = () => {
|
|
@@ -3709,8 +3707,18 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
3709
3707
|
}
|
|
3710
3708
|
const apiKey = (apiInstance) => {
|
|
3711
3709
|
const { version, method, url, params, headers } = apiInstance;
|
|
3712
|
-
|
|
3710
|
+
const str = `${params ? `-${recordToString(params)}` : ""}${headers ? `-${recordToString(headers)}` : ""}`;
|
|
3711
|
+
return `[${method}]${version ? `-v${version}` : ""}-${url}-${generateShortUniqueHash(str)}`;
|
|
3713
3712
|
};
|
|
3713
|
+
async function generateShortUniqueHash(str) {
|
|
3714
|
+
const encoder = new TextEncoder();
|
|
3715
|
+
const data = encoder.encode(str);
|
|
3716
|
+
const hashBuffer = await window.crypto.subtle.digest("SHA-256", data);
|
|
3717
|
+
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
3718
|
+
let hashBase64 = btoa(String.fromCharCode.apply(null, hashArray));
|
|
3719
|
+
hashBase64 = hashBase64.replace(/\+/g, "0").replace(/\//g, "1").replace(/=/g, "");
|
|
3720
|
+
return hashBase64.substring(0, 16);
|
|
3721
|
+
}
|
|
3714
3722
|
function recordToString(record) {
|
|
3715
3723
|
return Object.keys(record).map((key) => {
|
|
3716
3724
|
return `${key}=${record[key]}`;
|
|
@@ -4214,6 +4222,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
|
|
|
4214
4222
|
exports2.Versioning = Versioning;
|
|
4215
4223
|
exports2.VersioningType = VersioningType;
|
|
4216
4224
|
exports2.apiKey = apiKey;
|
|
4225
|
+
exports2.generateShortUniqueHash = generateShortUniqueHash;
|
|
4217
4226
|
exports2.recordToString = recordToString;
|
|
4218
4227
|
Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
|
|
4219
4228
|
});
|
package/dist/utils/function.d.ts
CHANGED
|
@@ -6,4 +6,5 @@ export declare const apiKey: <T extends {
|
|
|
6
6
|
params?: Record<string, any>;
|
|
7
7
|
headers?: Record<string, any>;
|
|
8
8
|
}>(apiInstance: T) => string;
|
|
9
|
+
export declare function generateShortUniqueHash(str: string): Promise<string>;
|
|
9
10
|
export declare function recordToString(record: Record<string, any>): string;
|