@shuo-li/i18n 1.0.8 → 1.0.9
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/{chunk-5VHZCG34.js → chunk-3ALMQ7Q5.js} +2 -1
- package/dist/{chunk-2EV6FQIL.cjs → chunk-DSK7CM4G.cjs} +2 -1
- package/dist/index.cjs +22 -37
- package/dist/index.js +20 -35
- package/dist/mp/index.cjs +4 -4
- package/dist/mp/index.js +2 -2
- package/dist/native/index.cjs +4 -4
- package/dist/native/index.js +2 -2
- package/package.json +1 -1
|
@@ -339,7 +339,8 @@ async function _initI18n(options) {
|
|
|
339
339
|
resolvedStaticModules = options.staticLocales ? [...new Set(
|
|
340
340
|
Object.values(options.staticLocales).flatMap((langModules) => Object.keys(langModules))
|
|
341
341
|
)] : [];
|
|
342
|
-
|
|
342
|
+
const schemaVersion = options.version != null ? Math.max(1, Math.trunc(Number(options.version)) || 1) : 1;
|
|
343
|
+
await storage.ensureStores(resolvedStores, schemaVersion);
|
|
343
344
|
await checkCacheVersion(storage, options);
|
|
344
345
|
const allKnownModules = sortedModules();
|
|
345
346
|
for (const lang of resolvedLanguages) {
|
|
@@ -339,7 +339,8 @@ async function _initI18n(options) {
|
|
|
339
339
|
resolvedStaticModules = options.staticLocales ? [...new Set(
|
|
340
340
|
Object.values(options.staticLocales).flatMap((langModules) => Object.keys(langModules))
|
|
341
341
|
)] : [];
|
|
342
|
-
|
|
342
|
+
const schemaVersion = options.version != null ? Math.max(1, Math.trunc(Number(options.version)) || 1) : 1;
|
|
343
|
+
await storage.ensureStores(resolvedStores, schemaVersion);
|
|
343
344
|
await checkCacheVersion(storage, options);
|
|
344
345
|
const allKnownModules = sortedModules();
|
|
345
346
|
for (const lang of resolvedLanguages) {
|
package/dist/index.cjs
CHANGED
|
@@ -7,7 +7,7 @@ var _chunkAJJKJPNBcjs = require('./chunk-AJJKJPNB.cjs');
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkDSK7CM4Gcjs = require('./chunk-DSK7CM4G.cjs');
|
|
11
11
|
|
|
12
12
|
// src/index.ts
|
|
13
13
|
var _i18next = require('i18next'); var _i18next2 = _interopRequireDefault(_i18next);
|
|
@@ -20,12 +20,10 @@ function resourceStoreName(name) {
|
|
|
20
20
|
}
|
|
21
21
|
var dbInstance = null;
|
|
22
22
|
var dbOpenPromise = null;
|
|
23
|
-
|
|
24
|
-
function openDB(storeNames, version) {
|
|
23
|
+
function openDB(storeNames, idbVersion) {
|
|
25
24
|
return new Promise((resolve, reject) => {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
if (version === void 0) return;
|
|
25
|
+
const request = indexedDB.open(DB_NAME, idbVersion);
|
|
26
|
+
request.onupgradeneeded = (event) => {
|
|
29
27
|
const db = event.target.result;
|
|
30
28
|
for (const name of storeNames) {
|
|
31
29
|
const storeName = resourceStoreName(name);
|
|
@@ -36,8 +34,8 @@ function openDB(storeNames, version) {
|
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
36
|
};
|
|
39
|
-
|
|
40
|
-
const db =
|
|
37
|
+
request.onsuccess = () => {
|
|
38
|
+
const db = request.result;
|
|
41
39
|
db.onversionchange = () => {
|
|
42
40
|
db.close();
|
|
43
41
|
dbInstance = null;
|
|
@@ -47,31 +45,15 @@ function openDB(storeNames, version) {
|
|
|
47
45
|
dbInstance = null;
|
|
48
46
|
dbOpenPromise = null;
|
|
49
47
|
};
|
|
50
|
-
|
|
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);
|
|
48
|
+
resolve(db);
|
|
58
49
|
};
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
request.onerror = () => reject(request.error);
|
|
51
|
+
request.onblocked = () => reject(new Error("[i18n] IndexedDB open blocked"));
|
|
61
52
|
});
|
|
62
53
|
}
|
|
63
54
|
function getDB() {
|
|
64
55
|
if (dbInstance) return Promise.resolve(dbInstance);
|
|
65
|
-
if (!dbOpenPromise)
|
|
66
|
-
dbOpenPromise = openDB(dbStoreNames).then((db) => {
|
|
67
|
-
dbInstance = db;
|
|
68
|
-
dbOpenPromise = null;
|
|
69
|
-
return db;
|
|
70
|
-
}).catch((err) => {
|
|
71
|
-
dbOpenPromise = null;
|
|
72
|
-
throw err;
|
|
73
|
-
});
|
|
74
|
-
}
|
|
56
|
+
if (!dbOpenPromise) throw new Error("[i18n] ensureStores must be called before using the DB");
|
|
75
57
|
return dbOpenPromise;
|
|
76
58
|
}
|
|
77
59
|
function idbRequest(req) {
|
|
@@ -89,23 +71,26 @@ async function withRetry(fn) {
|
|
|
89
71
|
}
|
|
90
72
|
}
|
|
91
73
|
var IndexedDBAdapter = class {
|
|
92
|
-
|
|
74
|
+
/**
|
|
75
|
+
* schemaVersion 来自外部传入的 options.version。
|
|
76
|
+
* IDB 版本 = schemaVersion * 100 + stores.length,保证:
|
|
77
|
+
* - options.version 变化 → IDB 版本变化 → onupgradeneeded → 触发 checkCacheVersion 的数据清理
|
|
78
|
+
* - store 数量变化(未登录→登录)→ IDB 版本变化 → onupgradeneeded → 新增 store
|
|
79
|
+
*/
|
|
80
|
+
async ensureStores(stores, schemaVersion = 1) {
|
|
93
81
|
const storeNames = stores.map((s) => s.name);
|
|
94
|
-
|
|
82
|
+
const idbVersion = schemaVersion * 100 + storeNames.length;
|
|
95
83
|
if (dbInstance) {
|
|
96
84
|
const allExist = storeNames.every(
|
|
97
85
|
(n) => dbInstance.objectStoreNames.contains(resourceStoreName(n))
|
|
98
86
|
);
|
|
99
|
-
if (allExist) return;
|
|
100
|
-
const nextVersion = dbInstance.version + 1;
|
|
87
|
+
if (allExist && dbInstance.version === idbVersion) return;
|
|
101
88
|
dbInstance.close();
|
|
102
89
|
dbInstance = null;
|
|
103
90
|
dbOpenPromise = null;
|
|
104
|
-
dbInstance = await openDB(storeNames, nextVersion);
|
|
105
|
-
return;
|
|
106
91
|
}
|
|
107
92
|
if (!dbOpenPromise) {
|
|
108
|
-
dbOpenPromise = openDB(storeNames).then((db) => {
|
|
93
|
+
dbOpenPromise = openDB(storeNames, idbVersion).then((db) => {
|
|
109
94
|
dbInstance = db;
|
|
110
95
|
dbOpenPromise = null;
|
|
111
96
|
return db;
|
|
@@ -195,7 +180,7 @@ if (!_i18next2.default.isInitialized) {
|
|
|
195
180
|
}
|
|
196
181
|
});
|
|
197
182
|
}
|
|
198
|
-
var { initI18n, closeSSE, ensureModules, getResource, getAllRecordsByModule } =
|
|
183
|
+
var { initI18n, closeSSE, ensureModules, getResource, getAllRecordsByModule } = _chunkDSK7CM4Gcjs.createI18nManager.call(void 0, {
|
|
199
184
|
storage: new IndexedDBAdapter(),
|
|
200
185
|
createWorker: () => new (0, _chunkAJJKJPNBcjs.WebWorkerAdapter)(
|
|
201
186
|
new Worker(new URL("./workers/preload-worker.js", import.meta.url), { type: "module" })
|
|
@@ -211,4 +196,4 @@ var { initI18n, closeSSE, ensureModules, getResource, getAllRecordsByModule } =
|
|
|
211
196
|
|
|
212
197
|
|
|
213
198
|
|
|
214
|
-
exports.I18N_RESOURCES_UPDATED_EVENT =
|
|
199
|
+
exports.I18N_RESOURCES_UPDATED_EVENT = _chunkDSK7CM4Gcjs.I18N_RESOURCES_UPDATED_EVENT; exports.closeSSE = closeSSE; exports.emitI18nResourcesUpdated = _chunkDSK7CM4Gcjs.emitI18nResourcesUpdated; exports.ensureModules = ensureModules; exports.getAllRecordsByModule = getAllRecordsByModule; exports.getResource = getResource; exports.initI18n = initI18n; exports.useDict = _chunkAJJKJPNBcjs.useDict; exports.useTranslation = _chunkAJJKJPNBcjs.useTranslation;
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
I18N_RESOURCES_UPDATED_EVENT,
|
|
8
8
|
createI18nManager,
|
|
9
9
|
emitI18nResourcesUpdated
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-3ALMQ7Q5.js";
|
|
11
11
|
|
|
12
12
|
// src/index.ts
|
|
13
13
|
import i18n from "i18next";
|
|
@@ -20,12 +20,10 @@ function resourceStoreName(name) {
|
|
|
20
20
|
}
|
|
21
21
|
var dbInstance = null;
|
|
22
22
|
var dbOpenPromise = null;
|
|
23
|
-
|
|
24
|
-
function openDB(storeNames, version) {
|
|
23
|
+
function openDB(storeNames, idbVersion) {
|
|
25
24
|
return new Promise((resolve, reject) => {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
if (version === void 0) return;
|
|
25
|
+
const request = indexedDB.open(DB_NAME, idbVersion);
|
|
26
|
+
request.onupgradeneeded = (event) => {
|
|
29
27
|
const db = event.target.result;
|
|
30
28
|
for (const name of storeNames) {
|
|
31
29
|
const storeName = resourceStoreName(name);
|
|
@@ -36,8 +34,8 @@ function openDB(storeNames, version) {
|
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
36
|
};
|
|
39
|
-
|
|
40
|
-
const db =
|
|
37
|
+
request.onsuccess = () => {
|
|
38
|
+
const db = request.result;
|
|
41
39
|
db.onversionchange = () => {
|
|
42
40
|
db.close();
|
|
43
41
|
dbInstance = null;
|
|
@@ -47,31 +45,15 @@ function openDB(storeNames, version) {
|
|
|
47
45
|
dbInstance = null;
|
|
48
46
|
dbOpenPromise = null;
|
|
49
47
|
};
|
|
50
|
-
|
|
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);
|
|
48
|
+
resolve(db);
|
|
58
49
|
};
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
request.onerror = () => reject(request.error);
|
|
51
|
+
request.onblocked = () => reject(new Error("[i18n] IndexedDB open blocked"));
|
|
61
52
|
});
|
|
62
53
|
}
|
|
63
54
|
function getDB() {
|
|
64
55
|
if (dbInstance) return Promise.resolve(dbInstance);
|
|
65
|
-
if (!dbOpenPromise)
|
|
66
|
-
dbOpenPromise = openDB(dbStoreNames).then((db) => {
|
|
67
|
-
dbInstance = db;
|
|
68
|
-
dbOpenPromise = null;
|
|
69
|
-
return db;
|
|
70
|
-
}).catch((err) => {
|
|
71
|
-
dbOpenPromise = null;
|
|
72
|
-
throw err;
|
|
73
|
-
});
|
|
74
|
-
}
|
|
56
|
+
if (!dbOpenPromise) throw new Error("[i18n] ensureStores must be called before using the DB");
|
|
75
57
|
return dbOpenPromise;
|
|
76
58
|
}
|
|
77
59
|
function idbRequest(req) {
|
|
@@ -89,23 +71,26 @@ async function withRetry(fn) {
|
|
|
89
71
|
}
|
|
90
72
|
}
|
|
91
73
|
var IndexedDBAdapter = class {
|
|
92
|
-
|
|
74
|
+
/**
|
|
75
|
+
* schemaVersion 来自外部传入的 options.version。
|
|
76
|
+
* IDB 版本 = schemaVersion * 100 + stores.length,保证:
|
|
77
|
+
* - options.version 变化 → IDB 版本变化 → onupgradeneeded → 触发 checkCacheVersion 的数据清理
|
|
78
|
+
* - store 数量变化(未登录→登录)→ IDB 版本变化 → onupgradeneeded → 新增 store
|
|
79
|
+
*/
|
|
80
|
+
async ensureStores(stores, schemaVersion = 1) {
|
|
93
81
|
const storeNames = stores.map((s) => s.name);
|
|
94
|
-
|
|
82
|
+
const idbVersion = schemaVersion * 100 + storeNames.length;
|
|
95
83
|
if (dbInstance) {
|
|
96
84
|
const allExist = storeNames.every(
|
|
97
85
|
(n) => dbInstance.objectStoreNames.contains(resourceStoreName(n))
|
|
98
86
|
);
|
|
99
|
-
if (allExist) return;
|
|
100
|
-
const nextVersion = dbInstance.version + 1;
|
|
87
|
+
if (allExist && dbInstance.version === idbVersion) return;
|
|
101
88
|
dbInstance.close();
|
|
102
89
|
dbInstance = null;
|
|
103
90
|
dbOpenPromise = null;
|
|
104
|
-
dbInstance = await openDB(storeNames, nextVersion);
|
|
105
|
-
return;
|
|
106
91
|
}
|
|
107
92
|
if (!dbOpenPromise) {
|
|
108
|
-
dbOpenPromise = openDB(storeNames).then((db) => {
|
|
93
|
+
dbOpenPromise = openDB(storeNames, idbVersion).then((db) => {
|
|
109
94
|
dbInstance = db;
|
|
110
95
|
dbOpenPromise = null;
|
|
111
96
|
return db;
|
package/dist/mp/index.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkDSK7CM4Gcjs = require('../chunk-DSK7CM4G.cjs');
|
|
6
6
|
|
|
7
7
|
// src/storage/wx-sqlite.ts
|
|
8
8
|
var DB_NAME = "i18n_cache";
|
|
@@ -39,7 +39,7 @@ function exec(db, sql, args = []) {
|
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
41
|
var WxSQLiteAdapter = class {
|
|
42
|
-
async ensureStores(stores) {
|
|
42
|
+
async ensureStores(stores, _schemaVersion) {
|
|
43
43
|
const db = await getDB();
|
|
44
44
|
for (const store of stores) {
|
|
45
45
|
const table = resourceTable(store.name);
|
|
@@ -181,7 +181,7 @@ function wxFetch(input, init) {
|
|
|
181
181
|
}
|
|
182
182
|
|
|
183
183
|
// src/mp/index.ts
|
|
184
|
-
var { initI18n, closeSSE, ensureModules, getResource, getAllRecordsByModule } =
|
|
184
|
+
var { initI18n, closeSSE, ensureModules, getResource, getAllRecordsByModule } = _chunkDSK7CM4Gcjs.createI18nManager.call(void 0, {
|
|
185
185
|
storage: new WxSQLiteAdapter(),
|
|
186
186
|
createWorker: () => new WxWorkerAdapter(wx.createWorker("workers/preload-worker-mp.js")),
|
|
187
187
|
fetchFn: wxFetch
|
|
@@ -194,4 +194,4 @@ var { initI18n, closeSSE, ensureModules, getResource, getAllRecordsByModule } =
|
|
|
194
194
|
|
|
195
195
|
|
|
196
196
|
|
|
197
|
-
exports.I18N_RESOURCES_UPDATED_EVENT =
|
|
197
|
+
exports.I18N_RESOURCES_UPDATED_EVENT = _chunkDSK7CM4Gcjs.I18N_RESOURCES_UPDATED_EVENT; exports.closeSSE = closeSSE; exports.emitI18nResourcesUpdated = _chunkDSK7CM4Gcjs.emitI18nResourcesUpdated; exports.ensureModules = ensureModules; exports.getAllRecordsByModule = getAllRecordsByModule; exports.getResource = getResource; exports.initI18n = initI18n;
|
package/dist/mp/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
I18N_RESOURCES_UPDATED_EVENT,
|
|
3
3
|
createI18nManager,
|
|
4
4
|
emitI18nResourcesUpdated
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-3ALMQ7Q5.js";
|
|
6
6
|
|
|
7
7
|
// src/storage/wx-sqlite.ts
|
|
8
8
|
var DB_NAME = "i18n_cache";
|
|
@@ -39,7 +39,7 @@ function exec(db, sql, args = []) {
|
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
41
|
var WxSQLiteAdapter = class {
|
|
42
|
-
async ensureStores(stores) {
|
|
42
|
+
async ensureStores(stores, _schemaVersion) {
|
|
43
43
|
const db = await getDB();
|
|
44
44
|
for (const store of stores) {
|
|
45
45
|
const table = resourceTable(store.name);
|
package/dist/native/index.cjs
CHANGED
|
@@ -7,7 +7,7 @@ var _chunkAJJKJPNBcjs = require('../chunk-AJJKJPNB.cjs');
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkDSK7CM4Gcjs = require('../chunk-DSK7CM4G.cjs');
|
|
11
11
|
|
|
12
12
|
// src/native/index.ts
|
|
13
13
|
var _i18next = require('i18next'); var _i18next2 = _interopRequireDefault(_i18next);
|
|
@@ -30,7 +30,7 @@ async function execute(sql, params = []) {
|
|
|
30
30
|
return db.executeAsync(sql, params);
|
|
31
31
|
}
|
|
32
32
|
var SQLiteAdapter = class {
|
|
33
|
-
async ensureStores(stores) {
|
|
33
|
+
async ensureStores(stores, _schemaVersion) {
|
|
34
34
|
for (const store of stores) {
|
|
35
35
|
const table = resourceTable(store.name);
|
|
36
36
|
await execute(`
|
|
@@ -121,7 +121,7 @@ if (!_i18next2.default.isInitialized) {
|
|
|
121
121
|
}
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
|
-
var { initI18n, closeSSE, ensureModules, getResource, getAllRecordsByModule } =
|
|
124
|
+
var { initI18n, closeSSE, ensureModules, getResource, getAllRecordsByModule } = _chunkDSK7CM4Gcjs.createI18nManager.call(void 0, {
|
|
125
125
|
storage: new SQLiteAdapter(),
|
|
126
126
|
// Hermes Worker(RN 0.71+),API 与 Web Worker 一致
|
|
127
127
|
createWorker: () => new (0, _chunkAJJKJPNBcjs.WebWorkerAdapter)(
|
|
@@ -138,4 +138,4 @@ var { initI18n, closeSSE, ensureModules, getResource, getAllRecordsByModule } =
|
|
|
138
138
|
|
|
139
139
|
|
|
140
140
|
|
|
141
|
-
exports.I18N_RESOURCES_UPDATED_EVENT =
|
|
141
|
+
exports.I18N_RESOURCES_UPDATED_EVENT = _chunkDSK7CM4Gcjs.I18N_RESOURCES_UPDATED_EVENT; exports.closeSSE = closeSSE; exports.emitI18nResourcesUpdated = _chunkDSK7CM4Gcjs.emitI18nResourcesUpdated; exports.ensureModules = ensureModules; exports.getAllRecordsByModule = getAllRecordsByModule; exports.getResource = getResource; exports.initI18n = initI18n; exports.useDict = _chunkAJJKJPNBcjs.useDict; exports.useTranslation = _chunkAJJKJPNBcjs.useTranslation;
|
package/dist/native/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
I18N_RESOURCES_UPDATED_EVENT,
|
|
8
8
|
createI18nManager,
|
|
9
9
|
emitI18nResourcesUpdated
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-3ALMQ7Q5.js";
|
|
11
11
|
|
|
12
12
|
// src/native/index.ts
|
|
13
13
|
import i18n from "i18next";
|
|
@@ -30,7 +30,7 @@ async function execute(sql, params = []) {
|
|
|
30
30
|
return db.executeAsync(sql, params);
|
|
31
31
|
}
|
|
32
32
|
var SQLiteAdapter = class {
|
|
33
|
-
async ensureStores(stores) {
|
|
33
|
+
async ensureStores(stores, _schemaVersion) {
|
|
34
34
|
for (const store of stores) {
|
|
35
35
|
const table = resourceTable(store.name);
|
|
36
36
|
await execute(`
|