@shuo-li/i18n 1.0.7 → 1.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/dist/index.cjs +44 -14
- package/dist/index.js +43 -13
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
@@ -15,17 +15,17 @@ var _reacti18next = require('react-i18next');
|
|
|
15
15
|
|
|
16
16
|
// src/storage/indexeddb.ts
|
|
17
17
|
var DB_NAME = "i18n_cache";
|
|
18
|
-
var SCHEMA_VERSION = 2;
|
|
19
18
|
function resourceStoreName(name) {
|
|
20
19
|
return `i18n_resources_${name}`;
|
|
21
20
|
}
|
|
22
21
|
var dbInstance = null;
|
|
23
22
|
var dbOpenPromise = null;
|
|
24
23
|
var dbStoreNames = [];
|
|
25
|
-
function openDB(storeNames) {
|
|
24
|
+
function openDB(storeNames, version) {
|
|
26
25
|
return new Promise((resolve, reject) => {
|
|
27
|
-
const
|
|
28
|
-
|
|
26
|
+
const req = version !== void 0 ? indexedDB.open(DB_NAME, version) : indexedDB.open(DB_NAME);
|
|
27
|
+
req.onupgradeneeded = (event) => {
|
|
28
|
+
if (version === void 0) return;
|
|
29
29
|
const db = event.target.result;
|
|
30
30
|
for (const name of storeNames) {
|
|
31
31
|
const storeName = resourceStoreName(name);
|
|
@@ -36,8 +36,8 @@ function openDB(storeNames) {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
|
-
|
|
40
|
-
const db =
|
|
39
|
+
req.onsuccess = () => {
|
|
40
|
+
const db = req.result;
|
|
41
41
|
db.onversionchange = () => {
|
|
42
42
|
db.close();
|
|
43
43
|
dbInstance = null;
|
|
@@ -47,16 +47,23 @@ function openDB(storeNames) {
|
|
|
47
47
|
dbInstance = null;
|
|
48
48
|
dbOpenPromise = null;
|
|
49
49
|
};
|
|
50
|
-
|
|
50
|
+
const missing = storeNames.filter((n) => !db.objectStoreNames.contains(resourceStoreName(n)));
|
|
51
|
+
if (missing.length === 0 || version !== void 0) {
|
|
52
|
+
resolve(db);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const nextVersion = db.version + 1;
|
|
56
|
+
db.close();
|
|
57
|
+
openDB(storeNames, nextVersion).then(resolve).catch(reject);
|
|
51
58
|
};
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
req.onerror = () => reject(req.error);
|
|
60
|
+
req.onblocked = () => reject(new Error("[i18n] IndexedDB open blocked"));
|
|
54
61
|
});
|
|
55
62
|
}
|
|
56
|
-
function getDB(
|
|
63
|
+
function getDB() {
|
|
57
64
|
if (dbInstance) return Promise.resolve(dbInstance);
|
|
58
65
|
if (!dbOpenPromise) {
|
|
59
|
-
dbOpenPromise = openDB(
|
|
66
|
+
dbOpenPromise = openDB(dbStoreNames).then((db) => {
|
|
60
67
|
dbInstance = db;
|
|
61
68
|
dbOpenPromise = null;
|
|
62
69
|
return db;
|
|
@@ -83,8 +90,31 @@ async function withRetry(fn) {
|
|
|
83
90
|
}
|
|
84
91
|
var IndexedDBAdapter = class {
|
|
85
92
|
async ensureStores(stores) {
|
|
86
|
-
|
|
87
|
-
|
|
93
|
+
const storeNames = stores.map((s) => s.name);
|
|
94
|
+
dbStoreNames = storeNames;
|
|
95
|
+
if (dbInstance) {
|
|
96
|
+
const allExist = storeNames.every(
|
|
97
|
+
(n) => dbInstance.objectStoreNames.contains(resourceStoreName(n))
|
|
98
|
+
);
|
|
99
|
+
if (allExist) return;
|
|
100
|
+
const nextVersion = dbInstance.version + 1;
|
|
101
|
+
dbInstance.close();
|
|
102
|
+
dbInstance = null;
|
|
103
|
+
dbOpenPromise = null;
|
|
104
|
+
dbInstance = await openDB(storeNames, nextVersion);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (!dbOpenPromise) {
|
|
108
|
+
dbOpenPromise = openDB(storeNames).then((db) => {
|
|
109
|
+
dbInstance = db;
|
|
110
|
+
dbOpenPromise = null;
|
|
111
|
+
return db;
|
|
112
|
+
}).catch((err) => {
|
|
113
|
+
dbOpenPromise = null;
|
|
114
|
+
throw err;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
await dbOpenPromise;
|
|
88
118
|
}
|
|
89
119
|
async getRecord(storeName, key) {
|
|
90
120
|
return withRetry(async () => {
|
package/dist/index.js
CHANGED
|
@@ -15,17 +15,17 @@ import { initReactI18next } from "react-i18next";
|
|
|
15
15
|
|
|
16
16
|
// src/storage/indexeddb.ts
|
|
17
17
|
var DB_NAME = "i18n_cache";
|
|
18
|
-
var SCHEMA_VERSION = 2;
|
|
19
18
|
function resourceStoreName(name) {
|
|
20
19
|
return `i18n_resources_${name}`;
|
|
21
20
|
}
|
|
22
21
|
var dbInstance = null;
|
|
23
22
|
var dbOpenPromise = null;
|
|
24
23
|
var dbStoreNames = [];
|
|
25
|
-
function openDB(storeNames) {
|
|
24
|
+
function openDB(storeNames, version) {
|
|
26
25
|
return new Promise((resolve, reject) => {
|
|
27
|
-
const
|
|
28
|
-
|
|
26
|
+
const req = version !== void 0 ? indexedDB.open(DB_NAME, version) : indexedDB.open(DB_NAME);
|
|
27
|
+
req.onupgradeneeded = (event) => {
|
|
28
|
+
if (version === void 0) return;
|
|
29
29
|
const db = event.target.result;
|
|
30
30
|
for (const name of storeNames) {
|
|
31
31
|
const storeName = resourceStoreName(name);
|
|
@@ -36,8 +36,8 @@ function openDB(storeNames) {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
|
-
|
|
40
|
-
const db =
|
|
39
|
+
req.onsuccess = () => {
|
|
40
|
+
const db = req.result;
|
|
41
41
|
db.onversionchange = () => {
|
|
42
42
|
db.close();
|
|
43
43
|
dbInstance = null;
|
|
@@ -47,16 +47,23 @@ function openDB(storeNames) {
|
|
|
47
47
|
dbInstance = null;
|
|
48
48
|
dbOpenPromise = null;
|
|
49
49
|
};
|
|
50
|
-
|
|
50
|
+
const missing = storeNames.filter((n) => !db.objectStoreNames.contains(resourceStoreName(n)));
|
|
51
|
+
if (missing.length === 0 || version !== void 0) {
|
|
52
|
+
resolve(db);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const nextVersion = db.version + 1;
|
|
56
|
+
db.close();
|
|
57
|
+
openDB(storeNames, nextVersion).then(resolve).catch(reject);
|
|
51
58
|
};
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
req.onerror = () => reject(req.error);
|
|
60
|
+
req.onblocked = () => reject(new Error("[i18n] IndexedDB open blocked"));
|
|
54
61
|
});
|
|
55
62
|
}
|
|
56
|
-
function getDB(
|
|
63
|
+
function getDB() {
|
|
57
64
|
if (dbInstance) return Promise.resolve(dbInstance);
|
|
58
65
|
if (!dbOpenPromise) {
|
|
59
|
-
dbOpenPromise = openDB(
|
|
66
|
+
dbOpenPromise = openDB(dbStoreNames).then((db) => {
|
|
60
67
|
dbInstance = db;
|
|
61
68
|
dbOpenPromise = null;
|
|
62
69
|
return db;
|
|
@@ -83,8 +90,31 @@ async function withRetry(fn) {
|
|
|
83
90
|
}
|
|
84
91
|
var IndexedDBAdapter = class {
|
|
85
92
|
async ensureStores(stores) {
|
|
86
|
-
|
|
87
|
-
|
|
93
|
+
const storeNames = stores.map((s) => s.name);
|
|
94
|
+
dbStoreNames = storeNames;
|
|
95
|
+
if (dbInstance) {
|
|
96
|
+
const allExist = storeNames.every(
|
|
97
|
+
(n) => dbInstance.objectStoreNames.contains(resourceStoreName(n))
|
|
98
|
+
);
|
|
99
|
+
if (allExist) return;
|
|
100
|
+
const nextVersion = dbInstance.version + 1;
|
|
101
|
+
dbInstance.close();
|
|
102
|
+
dbInstance = null;
|
|
103
|
+
dbOpenPromise = null;
|
|
104
|
+
dbInstance = await openDB(storeNames, nextVersion);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (!dbOpenPromise) {
|
|
108
|
+
dbOpenPromise = openDB(storeNames).then((db) => {
|
|
109
|
+
dbInstance = db;
|
|
110
|
+
dbOpenPromise = null;
|
|
111
|
+
return db;
|
|
112
|
+
}).catch((err) => {
|
|
113
|
+
dbOpenPromise = null;
|
|
114
|
+
throw err;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
await dbOpenPromise;
|
|
88
118
|
}
|
|
89
119
|
async getRecord(storeName, key) {
|
|
90
120
|
return withRetry(async () => {
|