k99 0.6.0-alpha.0 → 0.6.0-alpha.10
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/LICENSE +1 -1
- package/{browser/index.mjs → browser.cjs} +6 -345
- package/browser.d.ts +28 -0
- package/{browser/index.js → browser.js} +2 -351
- package/browser.min.js +6 -0
- package/browser.min.mjs +6 -0
- package/browser.mjs +206 -0
- package/cli/{index.mjs → index.cjs} +55 -43
- package/cli/{index.d.ts → index.d.cts} +13 -41
- package/cli.cjs +14 -0
- package/index.cjs +1549 -0
- package/index.d.ts +398 -338
- package/index.js +1212 -2077
- package/index.min.js +3 -3
- package/index.min.mjs +3 -3
- package/index.mjs +1198 -2070
- package/node/{index.mjs → index.cjs} +283 -528
- package/node/{index.d.ts → index.d.cts} +37 -37
- package/package.json +32 -6
- package/services.cjs +96 -0
- package/services.d.ts +14 -0
- package/{services/index.js → services.js} +26 -71
- package/services.min.js +6 -0
- package/services.min.mjs +6 -0
- package/{services/index.mjs → services.mjs} +26 -69
- package/starter.cjs +15 -0
- package/browser/index.d.ts +0 -38
- package/browser/index.min.js +0 -6
- package/browser/index.min.mjs +0 -6
- package/browser/package.json +0 -7
- package/cli/package.json +0 -4
- package/cli.mjs +0 -12
- package/node/package.json +0 -4
- package/services/index.d.ts +0 -16
- package/services/index.min.js +0 -6
- package/services/index.min.mjs +0 -6
- package/services/package.json +0 -7
- package/starter.mjs +0 -13
package/LICENSE
CHANGED
|
@@ -1,66 +1,54 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* k99 v0.6.0-alpha.
|
|
3
|
-
* (c) 2019-
|
|
2
|
+
* k99 v0.6.0-alpha.10
|
|
3
|
+
* (c) 2019-2023 猛火Fierflame
|
|
4
4
|
* @license MIT
|
|
5
5
|
*/
|
|
6
|
+
'use strict';
|
|
7
|
+
|
|
6
8
|
function createSettingsApi$1(cache, root) {
|
|
7
9
|
return {
|
|
8
10
|
async read(path) {
|
|
9
11
|
path = `${root}${path}`;
|
|
10
12
|
const response = await cache.match(path);
|
|
11
|
-
|
|
12
13
|
if (!response) {
|
|
13
14
|
return undefined;
|
|
14
15
|
}
|
|
15
|
-
|
|
16
16
|
return response.json();
|
|
17
17
|
},
|
|
18
|
-
|
|
19
18
|
async write(path, cfg) {
|
|
20
19
|
path = `${root}${path}`;
|
|
21
|
-
|
|
22
20
|
if (cfg === undefined) {
|
|
23
21
|
return cache.delete(path);
|
|
24
22
|
}
|
|
25
|
-
|
|
26
23
|
await cache.put(path, new Response(JSON.stringify(cfg)));
|
|
27
24
|
return true;
|
|
28
25
|
}
|
|
29
|
-
|
|
30
26
|
};
|
|
31
27
|
}
|
|
32
|
-
|
|
33
28
|
function createAssetsApi$1(cache, root) {
|
|
34
29
|
return {
|
|
35
30
|
async read(path) {
|
|
36
31
|
path = `${root}${path}`;
|
|
37
32
|
const response = await cache.match(path);
|
|
38
|
-
|
|
39
33
|
if (!response) {
|
|
40
34
|
return null;
|
|
41
35
|
}
|
|
42
|
-
|
|
43
36
|
return new Uint8Array(await response.arrayBuffer());
|
|
44
37
|
},
|
|
45
|
-
|
|
46
38
|
async write(path, data) {
|
|
47
39
|
path = `${root}${path}`;
|
|
48
40
|
await cache.put(path, new Response(data));
|
|
49
41
|
return true;
|
|
50
42
|
},
|
|
51
|
-
|
|
52
43
|
async delete(path) {
|
|
53
44
|
path = `${root}${path}`;
|
|
54
45
|
return cache.delete(path);
|
|
55
46
|
},
|
|
56
|
-
|
|
57
47
|
stat() {
|
|
58
48
|
return null;
|
|
59
49
|
}
|
|
60
|
-
|
|
61
50
|
};
|
|
62
51
|
}
|
|
63
|
-
|
|
64
52
|
function createLogApi$1(cache, root) {
|
|
65
53
|
return {
|
|
66
54
|
async read(path) {
|
|
@@ -68,7 +56,6 @@ function createLogApi$1(cache, root) {
|
|
|
68
56
|
const response = await cache.match(path);
|
|
69
57
|
return response ? response.text() : '';
|
|
70
58
|
},
|
|
71
|
-
|
|
72
59
|
async write(path, log) {
|
|
73
60
|
path = `${root}${path}`;
|
|
74
61
|
const response = await cache.match(path);
|
|
@@ -76,46 +63,36 @@ function createLogApi$1(cache, root) {
|
|
|
76
63
|
await cache.put(path, new Response(text));
|
|
77
64
|
return true;
|
|
78
65
|
},
|
|
79
|
-
|
|
80
66
|
async clear(path) {
|
|
81
67
|
path = `${root}${path}`;
|
|
82
68
|
await cache.delete(path);
|
|
83
69
|
}
|
|
84
|
-
|
|
85
70
|
};
|
|
86
71
|
}
|
|
87
|
-
|
|
88
72
|
async function createCacheApis(name = 'k99', {
|
|
89
73
|
assets = '/k99/assets',
|
|
90
74
|
log = '/k99/log',
|
|
91
75
|
settings = '/k99/settings'
|
|
92
76
|
} = {}) {
|
|
93
77
|
const cache = await caches.open(name);
|
|
94
|
-
|
|
95
78
|
if (assets[assets.length - 1] !== '/') {
|
|
96
79
|
assets = `${assets}/`;
|
|
97
80
|
}
|
|
98
|
-
|
|
99
81
|
if (assets[0] !== '/') {
|
|
100
82
|
assets = `/${assets}`;
|
|
101
83
|
}
|
|
102
|
-
|
|
103
84
|
if (log[log.length - 1] !== '/') {
|
|
104
85
|
log = `${log}/`;
|
|
105
86
|
}
|
|
106
|
-
|
|
107
87
|
if (log[0] !== '/') {
|
|
108
88
|
log = `/${log}`;
|
|
109
89
|
}
|
|
110
|
-
|
|
111
90
|
if (settings[log.length - 1] !== '/') {
|
|
112
91
|
settings = `${settings}/`;
|
|
113
92
|
}
|
|
114
|
-
|
|
115
93
|
if (settings[0] !== '/') {
|
|
116
94
|
settings = `/${settings}`;
|
|
117
95
|
}
|
|
118
|
-
|
|
119
96
|
return {
|
|
120
97
|
logApi: createLogApi$1(cache, log),
|
|
121
98
|
assetsApi: createAssetsApi$1(cache, assets),
|
|
@@ -132,7 +109,6 @@ function createAssetsApi(db, store) {
|
|
|
132
109
|
request.addEventListener('success', () => r(request.result || null));
|
|
133
110
|
});
|
|
134
111
|
},
|
|
135
|
-
|
|
136
112
|
async write(path, data) {
|
|
137
113
|
return new Promise(r => {
|
|
138
114
|
const request = db.transaction(store, 'readwrite').objectStore(store).add(data, path);
|
|
@@ -140,7 +116,6 @@ function createAssetsApi(db, store) {
|
|
|
140
116
|
request.addEventListener('success', () => r(true));
|
|
141
117
|
});
|
|
142
118
|
},
|
|
143
|
-
|
|
144
119
|
async delete(path) {
|
|
145
120
|
return new Promise(r => {
|
|
146
121
|
const request = db.transaction(store, 'readwrite').objectStore(store).delete(path);
|
|
@@ -148,14 +123,11 @@ function createAssetsApi(db, store) {
|
|
|
148
123
|
request.addEventListener('success', () => r(true));
|
|
149
124
|
});
|
|
150
125
|
},
|
|
151
|
-
|
|
152
126
|
stat() {
|
|
153
127
|
return null;
|
|
154
128
|
}
|
|
155
|
-
|
|
156
129
|
};
|
|
157
130
|
}
|
|
158
|
-
|
|
159
131
|
function createSettingsApi(db, store) {
|
|
160
132
|
return {
|
|
161
133
|
async read(path) {
|
|
@@ -165,7 +137,6 @@ function createSettingsApi(db, store) {
|
|
|
165
137
|
request.addEventListener('success', () => r(request.result || null));
|
|
166
138
|
});
|
|
167
139
|
},
|
|
168
|
-
|
|
169
140
|
async write(path, cfg) {
|
|
170
141
|
if (cfg === null || cfg === undefined) {
|
|
171
142
|
return new Promise(r => {
|
|
@@ -174,17 +145,14 @@ function createSettingsApi(db, store) {
|
|
|
174
145
|
request.addEventListener('success', () => r(true));
|
|
175
146
|
});
|
|
176
147
|
}
|
|
177
|
-
|
|
178
148
|
return new Promise(r => {
|
|
179
149
|
const request = db.transaction(store, 'readwrite').objectStore(store).add(cfg, path);
|
|
180
150
|
request.addEventListener('error', () => r(false));
|
|
181
151
|
request.addEventListener('success', () => r(true));
|
|
182
152
|
});
|
|
183
153
|
}
|
|
184
|
-
|
|
185
154
|
};
|
|
186
155
|
}
|
|
187
|
-
|
|
188
156
|
function createLogApi(db, store) {
|
|
189
157
|
return {
|
|
190
158
|
async read(path) {
|
|
@@ -194,7 +162,6 @@ function createLogApi(db, store) {
|
|
|
194
162
|
request.addEventListener('success', () => r(request.result || null));
|
|
195
163
|
});
|
|
196
164
|
},
|
|
197
|
-
|
|
198
165
|
async write(path, log) {
|
|
199
166
|
return new Promise(r => {
|
|
200
167
|
const transaction = db.transaction(store, 'readwrite');
|
|
@@ -207,7 +174,6 @@ function createLogApi(db, store) {
|
|
|
207
174
|
});
|
|
208
175
|
});
|
|
209
176
|
},
|
|
210
|
-
|
|
211
177
|
async clear(path) {
|
|
212
178
|
return new Promise(r => {
|
|
213
179
|
const request = db.transaction(store, 'readwrite').objectStore(store).delete(path);
|
|
@@ -215,10 +181,8 @@ function createLogApi(db, store) {
|
|
|
215
181
|
request.addEventListener('success', () => r());
|
|
216
182
|
});
|
|
217
183
|
}
|
|
218
|
-
|
|
219
184
|
};
|
|
220
185
|
}
|
|
221
|
-
|
|
222
186
|
function createIndexedApis(database = 'k99', {
|
|
223
187
|
assets = 'assets',
|
|
224
188
|
log = 'log',
|
|
@@ -241,308 +205,5 @@ function createIndexedApis(database = 'k99', {
|
|
|
241
205
|
}));
|
|
242
206
|
}
|
|
243
207
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
let current = 0;
|
|
247
|
-
let cb = null;
|
|
248
|
-
let end = false;
|
|
249
|
-
const dataList = [];
|
|
250
|
-
let dataSize = 0;
|
|
251
|
-
const list = [];
|
|
252
|
-
|
|
253
|
-
function get() {
|
|
254
|
-
if (!current || dataSize <= current) {
|
|
255
|
-
const chunk = new Uint8Array(dataSize);
|
|
256
|
-
let index = 0;
|
|
257
|
-
|
|
258
|
-
for (const item of dataList) {
|
|
259
|
-
for (let i = 0; i < item.byteLength; i++, index++) {
|
|
260
|
-
chunk[index] = item[i];
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
dataSize = 0;
|
|
265
|
-
dataList.length = 0;
|
|
266
|
-
return chunk;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
let item = dataList.shift();
|
|
270
|
-
|
|
271
|
-
if (!item) {
|
|
272
|
-
return null;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
const chunk = new Uint8Array(current);
|
|
276
|
-
let index = 0;
|
|
277
|
-
let i = 0;
|
|
278
|
-
let len = item.length;
|
|
279
|
-
|
|
280
|
-
while (index < current) {
|
|
281
|
-
if (i >= length) {
|
|
282
|
-
item = dataList.shift();
|
|
283
|
-
|
|
284
|
-
if (!item) {
|
|
285
|
-
break;
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
i = 0;
|
|
289
|
-
len = item.length;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
chunk[index] = item[i];
|
|
293
|
-
i++;
|
|
294
|
-
index++;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
if (item && i < len) {
|
|
298
|
-
dataList.unshift(new Uint8Array(item.buffer.slice(i)));
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
dataSize -= current;
|
|
302
|
-
return chunk;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
function add(data) {
|
|
306
|
-
dataSize += data.length || 0;
|
|
307
|
-
dataList.push(data);
|
|
308
|
-
return dataSize;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
function runCb() {
|
|
312
|
-
if (!cb) {
|
|
313
|
-
return;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
const v = dataSize ? get() : null;
|
|
317
|
-
cb(v);
|
|
318
|
-
[current, cb] = list.shift() || [0, null];
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
async function run() {
|
|
322
|
-
|
|
323
|
-
for (;;) {
|
|
324
|
-
if (!cb) {
|
|
325
|
-
break;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
if (end) {
|
|
329
|
-
runCb();
|
|
330
|
-
continue;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
if (dataSize && (!current || dataSize >= current)) {
|
|
334
|
-
runCb();
|
|
335
|
-
continue;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
const {
|
|
339
|
-
value,
|
|
340
|
-
done
|
|
341
|
-
} = await reader.read();
|
|
342
|
-
|
|
343
|
-
if (done) {
|
|
344
|
-
end = true;
|
|
345
|
-
continue;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
add(value);
|
|
349
|
-
|
|
350
|
-
if (dataSize && (!current || dataSize >= current)) {
|
|
351
|
-
runCb();
|
|
352
|
-
continue;
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
function read(size = 0) {
|
|
358
|
-
return new Promise(resolve => {
|
|
359
|
-
if (!reader) {
|
|
360
|
-
reader = readableStream.getReader();
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
size = Math.max(size, 0);
|
|
364
|
-
|
|
365
|
-
if (cb) {
|
|
366
|
-
list.push([size, resolve]);
|
|
367
|
-
return;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
current = size;
|
|
371
|
-
cb = resolve;
|
|
372
|
-
run();
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
return read;
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
function createBufferRead(request) {
|
|
380
|
-
let arrayBuffer;
|
|
381
|
-
|
|
382
|
-
function read(size = 0) {
|
|
383
|
-
if (!arrayBuffer) {
|
|
384
|
-
arrayBuffer = request.arrayBuffer().then(t => [new Uint8Array(0), new Uint8Array(t), 0]);
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
arrayBuffer = arrayBuffer.then(v => {
|
|
388
|
-
if (!v) {
|
|
389
|
-
return null;
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
let [, buff, index] = v;
|
|
393
|
-
|
|
394
|
-
if (index >= buff.byteLength) {
|
|
395
|
-
return null;
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
if (!size || size + index >= buff.byteLength) {
|
|
399
|
-
return [buff.slice(index), buff, buff.byteLength];
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
let end = index + size;
|
|
403
|
-
return [buff.slice(index, end), buff, end];
|
|
404
|
-
});
|
|
405
|
-
return arrayBuffer.then(v => {
|
|
406
|
-
if (!v) {
|
|
407
|
-
return null;
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
const [value] = v;
|
|
411
|
-
return value;
|
|
412
|
-
});
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
return read;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
function getNameValue(s) {
|
|
419
|
-
const index = s.indexOf('=');
|
|
420
|
-
|
|
421
|
-
if (index < 0) {
|
|
422
|
-
return [decodeURIComponent(s), ''];
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
return [decodeURIComponent(s.substring(0, index)), decodeURIComponent(s.substring(index + 1))];
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
function parseQuery(s) {
|
|
429
|
-
const query = {};
|
|
430
|
-
|
|
431
|
-
for (const k of s.split('&').filter(Boolean)) {
|
|
432
|
-
const [index, value] = getNameValue(k);
|
|
433
|
-
|
|
434
|
-
if (index in query) {
|
|
435
|
-
query[index] = [query[index], value].flat();
|
|
436
|
-
} else {
|
|
437
|
-
query[index] = value;
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
return query;
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
function getHeaders(h) {
|
|
445
|
-
const headers = {};
|
|
446
|
-
|
|
447
|
-
for (const [k, v] of h.entries()) {
|
|
448
|
-
headers[k.toLowerCase()] = v;
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
return headers;
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
function createRequest(request, searchParser = parseQuery) {
|
|
455
|
-
const url = new URL(request.url);
|
|
456
|
-
const {
|
|
457
|
-
body,
|
|
458
|
-
signal
|
|
459
|
-
} = request;
|
|
460
|
-
const aborted = new Promise((_, reject) => {
|
|
461
|
-
if (signal.aborted) {
|
|
462
|
-
return reject(new DOMException('The user aborted a request.'));
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
const abort = () => {
|
|
466
|
-
signal.removeEventListener('abort', abort);
|
|
467
|
-
reject(new DOMException('The user aborted a request.'));
|
|
468
|
-
};
|
|
469
|
-
|
|
470
|
-
signal.addEventListener('abort', abort);
|
|
471
|
-
});
|
|
472
|
-
return {
|
|
473
|
-
method: (request.method || 'GET').toUpperCase(),
|
|
474
|
-
url: `${url.pathname}${url.search}` || '/',
|
|
475
|
-
headers: getHeaders(request.headers),
|
|
476
|
-
pathname: url.pathname || '/',
|
|
477
|
-
search: url.search || '',
|
|
478
|
-
query: searchParser(url.search.substring(1)),
|
|
479
|
-
aborted,
|
|
480
|
-
read: body ? createStreamRead(body) : createBufferRead(request)
|
|
481
|
-
};
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
function createHeaders(target) {
|
|
485
|
-
const headers = new Headers();
|
|
486
|
-
|
|
487
|
-
for (const [k, v] of Object.entries(target.headers)) {
|
|
488
|
-
for (const it of [v].flat()) {
|
|
489
|
-
headers.append(k.toLowerCase(), String(it));
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
return headers;
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
function createResponse(target) {
|
|
497
|
-
return new Response(new ReadableStream({
|
|
498
|
-
async pull(controller) {
|
|
499
|
-
const {
|
|
500
|
-
value,
|
|
501
|
-
done
|
|
502
|
-
} = await target.next();
|
|
503
|
-
|
|
504
|
-
if (done) {
|
|
505
|
-
controller.close();
|
|
506
|
-
} else {
|
|
507
|
-
controller.enqueue(value);
|
|
508
|
-
}
|
|
509
|
-
},
|
|
510
|
-
|
|
511
|
-
async cancel(reason) {
|
|
512
|
-
return target.throw(reason).then(() => {}, () => {});
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
}), {
|
|
516
|
-
status: target.status,
|
|
517
|
-
headers: createHeaders(target)
|
|
518
|
-
});
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
function createFetch(app, notFound, searchParser) {
|
|
522
|
-
return async function fetch(input, init) {
|
|
523
|
-
const request = new Request(input, init);
|
|
524
|
-
const {
|
|
525
|
-
signal
|
|
526
|
-
} = request;
|
|
527
|
-
|
|
528
|
-
if (signal.aborted) {
|
|
529
|
-
return Promise.reject(new DOMException('The user aborted a request.'));
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
const r = await app.request(createRequest(request, searchParser));
|
|
533
|
-
|
|
534
|
-
if (r) {
|
|
535
|
-
return createResponse(r);
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
if (typeof notFound === 'function') {
|
|
539
|
-
return notFound(request);
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
return new Response(null, {
|
|
543
|
-
status: 404
|
|
544
|
-
});
|
|
545
|
-
};
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
export { createBufferRead, createCacheApis, createFetch, createIndexedApis, createRequest, createResponse, createStreamRead };
|
|
208
|
+
exports.createCacheApis = createCacheApis;
|
|
209
|
+
exports.createIndexedApis = createIndexedApis;
|
package/browser.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* k99 v0.6.0-alpha.10
|
|
3
|
+
* (c) 2019-2023 猛火Fierflame
|
|
4
|
+
* @license MIT
|
|
5
|
+
*/
|
|
6
|
+
import { Log, Asset, Setting } from 'k99';
|
|
7
|
+
|
|
8
|
+
declare function createCacheApis(name?: string, { assets, log, settings, }?: {
|
|
9
|
+
assets?: string;
|
|
10
|
+
log?: string;
|
|
11
|
+
settings?: string;
|
|
12
|
+
}): Promise<{
|
|
13
|
+
logApi: Log.Api;
|
|
14
|
+
assetsApi: Asset.Api;
|
|
15
|
+
settingsApi: Setting.Api;
|
|
16
|
+
}>;
|
|
17
|
+
|
|
18
|
+
declare function createIndexedApis(database?: string, { assets, log, settings, }?: {
|
|
19
|
+
assets?: string;
|
|
20
|
+
log?: string;
|
|
21
|
+
settings?: string;
|
|
22
|
+
}, version?: number): Promise<{
|
|
23
|
+
logApi: Log.Api;
|
|
24
|
+
assetsApi: Asset.Api;
|
|
25
|
+
settingsApi: Setting.Api;
|
|
26
|
+
}>;
|
|
27
|
+
|
|
28
|
+
export { createCacheApis, createIndexedApis };
|