@fireproof/core 0.19.8-dev → 0.19.8-dev-alldocs-export
Sign up to get free protection for your applications and to get access to all the features.
- package/{chunk-QHSXUST7.js → chunk-5UFCF36O.js} +3 -3
- package/{chunk-HCXR2M5B.js → chunk-DG6XSV44.js} +175 -7
- package/chunk-DG6XSV44.js.map +1 -0
- package/{chunk-H3A2HMMM.js → chunk-OWQAHX2V.js} +2 -2
- package/chunk-OWQAHX2V.js.map +1 -0
- package/{chunk-7OGPZSGT.js → chunk-PRQHQG4I.js} +2 -2
- package/index.cjs +248 -191
- package/index.cjs.map +1 -1
- package/index.d.cts +174 -68
- package/index.d.ts +174 -68
- package/index.global.js +24688 -0
- package/index.global.js.map +1 -0
- package/index.js +60 -127
- package/index.js.map +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/metafile-iife.json +1 -0
- package/{node-sys-container-E7LADX2Z.js → node-sys-container-TTGEC66A.js} +2 -2
- package/package.json +1 -1
- package/{sqlite-data-store-YS4U7AQ4.js → sqlite-data-store-MA55LVQE.js} +4 -4
- package/{sqlite-meta-store-FJZSZG4R.js → sqlite-meta-store-UNQKVYRM.js} +4 -4
- package/{sqlite-wal-store-6JZ4URNS.js → sqlite-wal-store-KVUOC4PO.js} +4 -4
- package/{store-file-HMHPQTUV.js → store-file-WD746RSY.js} +3 -3
- package/{store-indexdb-MRVZG4OG.js → store-indexdb-NG45BU3Q.js} +4 -4
- package/{store-sql-5XMJ5OWJ.js → store-sql-QVFNIGND.js} +7 -69
- package/store-sql-QVFNIGND.js.map +1 -0
- package/tests/blockstore/loader.test.ts +265 -0
- package/tests/blockstore/store.test.ts +164 -0
- package/tests/blockstore/transaction.test.ts +121 -0
- package/tests/fireproof/config.test.ts +212 -0
- package/tests/fireproof/crdt.test.ts +434 -0
- package/tests/fireproof/database.test.ts +466 -0
- package/tests/fireproof/fireproof.test.ts +602 -0
- package/tests/fireproof/hello.test.ts +54 -0
- package/tests/fireproof/indexer.test.ts +389 -0
- package/tests/helpers.ts +81 -0
- package/tests/react/useFireproof.test.tsx +19 -0
- package/tests/www/gallery.html +132 -0
- package/tests/www/iife.html +42 -0
- package/tests/www/todo-aws.html +232 -0
- package/tests/www/todo-ipfs.html +213 -0
- package/tests/www/todo-local.html +214 -0
- package/tests/www/todo-netlify.html +227 -0
- package/tests/www/todo.html +236 -0
- package/chunk-H3A2HMMM.js.map +0 -1
- package/chunk-HCXR2M5B.js.map +0 -1
- package/store-sql-5XMJ5OWJ.js.map +0 -1
- /package/{chunk-QHSXUST7.js.map → chunk-5UFCF36O.js.map} +0 -0
- /package/{chunk-7OGPZSGT.js.map → chunk-PRQHQG4I.js.map} +0 -0
- /package/{node-sys-container-E7LADX2Z.js.map → node-sys-container-TTGEC66A.js.map} +0 -0
- /package/{sqlite-data-store-YS4U7AQ4.js.map → sqlite-data-store-MA55LVQE.js.map} +0 -0
- /package/{sqlite-meta-store-FJZSZG4R.js.map → sqlite-meta-store-UNQKVYRM.js.map} +0 -0
- /package/{sqlite-wal-store-6JZ4URNS.js.map → sqlite-wal-store-KVUOC4PO.js.map} +0 -0
- /package/{store-file-HMHPQTUV.js.map → store-file-WD746RSY.js.map} +0 -0
- /package/{store-indexdb-MRVZG4OG.js.map → store-indexdb-NG45BU3Q.js.map} +0 -0
package/index.cjs
CHANGED
@@ -225,10 +225,6 @@ var init_sys_container = __esm({
|
|
225
225
|
|
226
226
|
// src/runtime/data-dir.ts
|
227
227
|
function dataDir(name, base) {
|
228
|
-
const dataDir2 = _dataDir(name, base);
|
229
|
-
return dataDir2;
|
230
|
-
}
|
231
|
-
function _dataDir(name, base) {
|
232
228
|
if (!base) {
|
233
229
|
if (import_std_env.isNode || import_std_env.isDeno) {
|
234
230
|
base = SysContainer.env.get("FP_STORAGE_URL") || `file://${SysContainer.join(SysContainer.homedir(), ".fireproof")}`;
|
@@ -298,6 +294,203 @@ var init_store_file_utils = __esm({
|
|
298
294
|
}
|
299
295
|
});
|
300
296
|
|
297
|
+
// src/runtime/store-sql/types.ts
|
298
|
+
var DefaultSQLTableNames;
|
299
|
+
var init_types2 = __esm({
|
300
|
+
"src/runtime/store-sql/types.ts"() {
|
301
|
+
"use strict";
|
302
|
+
DefaultSQLTableNames = {
|
303
|
+
data: "Datas",
|
304
|
+
meta: "Metas",
|
305
|
+
wal: "Wals"
|
306
|
+
};
|
307
|
+
}
|
308
|
+
});
|
309
|
+
|
310
|
+
// src/runtime/store-sql/ensurer.ts
|
311
|
+
function sqlTableName(...names) {
|
312
|
+
return names.map((name) => name.replace(/^[^a-zA-Z0-9]+/, "").replace(/[^a-zA-Z0-9]+/g, "_")).filter((i) => i.length).join("_");
|
313
|
+
}
|
314
|
+
function ensureTableNames(url, opts) {
|
315
|
+
let isIndex = "";
|
316
|
+
if (url.searchParams.has("index")) {
|
317
|
+
isIndex = url.searchParams.get("index") || ".idx";
|
318
|
+
}
|
319
|
+
const ret = opts?.tableNames || DefaultSQLTableNames;
|
320
|
+
if (isIndex.length) {
|
321
|
+
return {
|
322
|
+
data: sqlTableName(isIndex, ret.data),
|
323
|
+
meta: sqlTableName(isIndex, ret.meta),
|
324
|
+
wal: sqlTableName(isIndex, ret.wal)
|
325
|
+
};
|
326
|
+
}
|
327
|
+
return {
|
328
|
+
data: sqlTableName(ret.data),
|
329
|
+
meta: sqlTableName(ret.meta),
|
330
|
+
wal: sqlTableName(ret.wal)
|
331
|
+
};
|
332
|
+
}
|
333
|
+
function ensureTextEncoder(opts) {
|
334
|
+
return opts?.textEncoder || textEncoder;
|
335
|
+
}
|
336
|
+
function ensureTextDecoder(opts) {
|
337
|
+
return opts?.textDecoder || textDecoder;
|
338
|
+
}
|
339
|
+
function url2sqlFlavor(url, logger) {
|
340
|
+
const flavor = url.protocol.replace(/:.*$/, "");
|
341
|
+
switch (flavor) {
|
342
|
+
case "sqlite":
|
343
|
+
case "mysql":
|
344
|
+
case "postgres":
|
345
|
+
return flavor;
|
346
|
+
default:
|
347
|
+
throw logger.Error().Str("flavor", flavor).Msg("unsupported protocol").AsError();
|
348
|
+
}
|
349
|
+
}
|
350
|
+
function ensureSQLOpts(url, opts, componentName, ctx) {
|
351
|
+
const logger = ensureLogger(opts, componentName, ctx);
|
352
|
+
return {
|
353
|
+
url,
|
354
|
+
sqlFlavor: url2sqlFlavor(url, logger),
|
355
|
+
tableNames: ensureTableNames(url, opts),
|
356
|
+
logger,
|
357
|
+
textEncoder: ensureTextEncoder(opts),
|
358
|
+
textDecoder: ensureTextDecoder(opts)
|
359
|
+
};
|
360
|
+
}
|
361
|
+
var textEncoder, textDecoder;
|
362
|
+
var init_ensurer = __esm({
|
363
|
+
"src/runtime/store-sql/ensurer.ts"() {
|
364
|
+
"use strict";
|
365
|
+
init_utils();
|
366
|
+
init_types2();
|
367
|
+
textEncoder = new TextEncoder();
|
368
|
+
textDecoder = new TextDecoder();
|
369
|
+
}
|
370
|
+
});
|
371
|
+
|
372
|
+
// src/runtime/store-sql/index.ts
|
373
|
+
var store_sql_exports = {};
|
374
|
+
__export(store_sql_exports, {
|
375
|
+
DefaultSQLTableNames: () => DefaultSQLTableNames,
|
376
|
+
ensureSQLOpts: () => ensureSQLOpts
|
377
|
+
});
|
378
|
+
var init_store_sql = __esm({
|
379
|
+
"src/runtime/store-sql/index.ts"() {
|
380
|
+
"use strict";
|
381
|
+
init_types2();
|
382
|
+
init_ensurer();
|
383
|
+
}
|
384
|
+
});
|
385
|
+
|
386
|
+
// src/runtime/crypto.ts
|
387
|
+
var crypto_exports = {};
|
388
|
+
__export(crypto_exports, {
|
389
|
+
toCryptoOpts: () => toCryptoOpts
|
390
|
+
});
|
391
|
+
function randomBytes(size) {
|
392
|
+
const bytes = new Uint8Array(size);
|
393
|
+
if (size > 0) {
|
394
|
+
crypto.getRandomValues(bytes);
|
395
|
+
}
|
396
|
+
return bytes;
|
397
|
+
}
|
398
|
+
function digestSHA256(data) {
|
399
|
+
return Promise.resolve(crypto.subtle.digest("SHA-256", data));
|
400
|
+
}
|
401
|
+
function toCryptoOpts(cryptoOpts = {}) {
|
402
|
+
const opts = {
|
403
|
+
importKey: cryptoOpts.importKey || crypto.subtle.importKey.bind(crypto.subtle),
|
404
|
+
encrypt: cryptoOpts.encrypt || crypto.subtle.encrypt.bind(crypto.subtle),
|
405
|
+
decrypt: cryptoOpts.decrypt || crypto.subtle.decrypt.bind(crypto.subtle),
|
406
|
+
randomBytes: cryptoOpts.randomBytes || randomBytes,
|
407
|
+
digestSHA256: cryptoOpts.digestSHA256 || digestSHA256
|
408
|
+
};
|
409
|
+
return opts;
|
410
|
+
}
|
411
|
+
var init_crypto = __esm({
|
412
|
+
"src/runtime/crypto.ts"() {
|
413
|
+
"use strict";
|
414
|
+
}
|
415
|
+
});
|
416
|
+
|
417
|
+
// src/runtime/files.ts
|
418
|
+
var files_exports = {};
|
419
|
+
__export(files_exports, {
|
420
|
+
decodeFile: () => decodeFile,
|
421
|
+
encodeFile: () => encodeFile
|
422
|
+
});
|
423
|
+
async function collect(collectable) {
|
424
|
+
const chunks = [];
|
425
|
+
await collectable.pipeTo(
|
426
|
+
new WritableStream({
|
427
|
+
write(chunk) {
|
428
|
+
chunks.push(chunk);
|
429
|
+
}
|
430
|
+
})
|
431
|
+
);
|
432
|
+
return chunks;
|
433
|
+
}
|
434
|
+
async function encodeFile(blob) {
|
435
|
+
const readable = createFileEncoderStream(blob);
|
436
|
+
const blocks = await collect(readable);
|
437
|
+
return { cid: blocks.at(-1).cid, blocks };
|
438
|
+
}
|
439
|
+
async function decodeFile(blocks, cid, meta) {
|
440
|
+
const entry = await (0, import_ipfs_unixfs_exporter.exporter)(cid.toString(), blocks, { length: meta.size });
|
441
|
+
const chunks = [];
|
442
|
+
for await (const chunk of entry.content()) {
|
443
|
+
chunks.push(chunk);
|
444
|
+
}
|
445
|
+
return new File(chunks, entry.name, { type: meta.type, lastModified: 0 });
|
446
|
+
}
|
447
|
+
function createFileEncoderStream(blob) {
|
448
|
+
const { readable, writable } = new TransformStream({}, queuingStrategy);
|
449
|
+
const unixfsWriter = UnixFS.createWriter({ writable, settings });
|
450
|
+
const fileBuilder = new UnixFSFileBuilder("", blob);
|
451
|
+
void (async () => {
|
452
|
+
await fileBuilder.finalize(unixfsWriter);
|
453
|
+
await unixfsWriter.close();
|
454
|
+
})();
|
455
|
+
return readable;
|
456
|
+
}
|
457
|
+
var UnixFS, raw, import_fixed, import_balanced, import_ipfs_unixfs_exporter, queuingStrategy, settings, UnixFSFileBuilder;
|
458
|
+
var init_files = __esm({
|
459
|
+
"src/runtime/files.ts"() {
|
460
|
+
"use strict";
|
461
|
+
UnixFS = __toESM(require("@ipld/unixfs"), 1);
|
462
|
+
raw = __toESM(require("multiformats/codecs/raw"), 1);
|
463
|
+
import_fixed = require("@ipld/unixfs/file/chunker/fixed");
|
464
|
+
import_balanced = require("@ipld/unixfs/file/layout/balanced");
|
465
|
+
import_ipfs_unixfs_exporter = require("ipfs-unixfs-exporter");
|
466
|
+
queuingStrategy = UnixFS.withCapacity();
|
467
|
+
settings = UnixFS.configure({
|
468
|
+
fileChunkEncoder: raw,
|
469
|
+
smallFileEncoder: raw,
|
470
|
+
chunker: (0, import_fixed.withMaxChunkSize)(1024 * 1024),
|
471
|
+
fileLayout: (0, import_balanced.withWidth)(1024)
|
472
|
+
});
|
473
|
+
UnixFSFileBuilder = class {
|
474
|
+
#file;
|
475
|
+
constructor(name, file) {
|
476
|
+
this.name = name;
|
477
|
+
this.#file = file;
|
478
|
+
}
|
479
|
+
async finalize(writer) {
|
480
|
+
const unixfsFileWriter = UnixFS.createFileWriter(writer);
|
481
|
+
await this.#file.stream().pipeTo(
|
482
|
+
new WritableStream({
|
483
|
+
async write(chunk) {
|
484
|
+
await unixfsFileWriter.write(chunk);
|
485
|
+
}
|
486
|
+
})
|
487
|
+
);
|
488
|
+
return await unixfsFileWriter.close();
|
489
|
+
}
|
490
|
+
};
|
491
|
+
}
|
492
|
+
});
|
493
|
+
|
301
494
|
// src/runtime/store-file-version.ts
|
302
495
|
var FILESTORE_VERSION;
|
303
496
|
var init_store_file_version = __esm({
|
@@ -332,11 +525,14 @@ __export(runtime_exports, {
|
|
332
525
|
INDEXDB_VERSION: () => INDEXDB_VERSION,
|
333
526
|
SQLITE_VERSION: () => SQLITE_VERSION,
|
334
527
|
SysContainer: () => SysContainer,
|
528
|
+
crypto: () => crypto_exports,
|
335
529
|
dataDir: () => dataDir,
|
336
530
|
ensureIndexName: () => ensureIndexName,
|
531
|
+
files: () => files_exports,
|
337
532
|
getFileName: () => getFileName,
|
338
533
|
getPath: () => getPath,
|
339
|
-
join: () => join
|
534
|
+
join: () => join,
|
535
|
+
sql: () => store_sql_exports
|
340
536
|
});
|
341
537
|
var init_runtime = __esm({
|
342
538
|
"src/runtime/index.ts"() {
|
@@ -344,6 +540,9 @@ var init_runtime = __esm({
|
|
344
540
|
init_sys_container();
|
345
541
|
init_data_dir();
|
346
542
|
init_store_file_utils();
|
543
|
+
init_store_sql();
|
544
|
+
init_crypto();
|
545
|
+
init_files();
|
347
546
|
init_store_file_version();
|
348
547
|
init_store_indexdb_version();
|
349
548
|
init_version();
|
@@ -863,81 +1062,6 @@ var init_store_file = __esm({
|
|
863
1062
|
}
|
864
1063
|
});
|
865
1064
|
|
866
|
-
// src/runtime/store-sql/types.ts
|
867
|
-
var DefaultSQLTableNames;
|
868
|
-
var init_types2 = __esm({
|
869
|
-
"src/runtime/store-sql/types.ts"() {
|
870
|
-
"use strict";
|
871
|
-
DefaultSQLTableNames = {
|
872
|
-
data: "Datas",
|
873
|
-
meta: "Metas",
|
874
|
-
wal: "Wals"
|
875
|
-
};
|
876
|
-
}
|
877
|
-
});
|
878
|
-
|
879
|
-
// src/runtime/store-sql/ensurer.ts
|
880
|
-
function sqlTableName(...names) {
|
881
|
-
return names.map((name) => name.replace(/^[^a-zA-Z0-9]+/, "").replace(/[^a-zA-Z0-9]+/g, "_")).filter((i) => i.length).join("_");
|
882
|
-
}
|
883
|
-
function ensureTableNames(url, opts) {
|
884
|
-
let isIndex = "";
|
885
|
-
if (url.searchParams.has("index")) {
|
886
|
-
isIndex = url.searchParams.get("index") || ".idx";
|
887
|
-
}
|
888
|
-
const ret = opts?.tableNames || DefaultSQLTableNames;
|
889
|
-
if (isIndex.length) {
|
890
|
-
return {
|
891
|
-
data: sqlTableName(isIndex, ret.data),
|
892
|
-
meta: sqlTableName(isIndex, ret.meta),
|
893
|
-
wal: sqlTableName(isIndex, ret.wal)
|
894
|
-
};
|
895
|
-
}
|
896
|
-
return {
|
897
|
-
data: sqlTableName(ret.data),
|
898
|
-
meta: sqlTableName(ret.meta),
|
899
|
-
wal: sqlTableName(ret.wal)
|
900
|
-
};
|
901
|
-
}
|
902
|
-
function ensureTextEncoder(opts) {
|
903
|
-
return opts?.textEncoder || textEncoder2;
|
904
|
-
}
|
905
|
-
function ensureTextDecoder(opts) {
|
906
|
-
return opts?.textDecoder || textDecoder2;
|
907
|
-
}
|
908
|
-
function url2sqlFlavor(url, logger) {
|
909
|
-
const flavor = url.protocol.replace(/:.*$/, "");
|
910
|
-
switch (flavor) {
|
911
|
-
case "sqlite":
|
912
|
-
case "mysql":
|
913
|
-
case "postgres":
|
914
|
-
return flavor;
|
915
|
-
default:
|
916
|
-
throw logger.Error().Str("flavor", flavor).Msg("unsupported protocol").AsError();
|
917
|
-
}
|
918
|
-
}
|
919
|
-
function ensureSQLOpts(url, opts, componentName, ctx) {
|
920
|
-
const logger = ensureLogger(opts, componentName, ctx);
|
921
|
-
return {
|
922
|
-
url,
|
923
|
-
sqlFlavor: url2sqlFlavor(url, logger),
|
924
|
-
tableNames: ensureTableNames(url, opts),
|
925
|
-
logger,
|
926
|
-
textEncoder: ensureTextEncoder(opts),
|
927
|
-
textDecoder: ensureTextDecoder(opts)
|
928
|
-
};
|
929
|
-
}
|
930
|
-
var textEncoder2, textDecoder2;
|
931
|
-
var init_ensurer = __esm({
|
932
|
-
"src/runtime/store-sql/ensurer.ts"() {
|
933
|
-
"use strict";
|
934
|
-
init_utils();
|
935
|
-
init_types2();
|
936
|
-
textEncoder2 = new TextEncoder();
|
937
|
-
textDecoder2 = new TextDecoder();
|
938
|
-
}
|
939
|
-
});
|
940
|
-
|
941
1065
|
// src/runtime/store-sql/sqlite-adapter-better-sqlite3.ts
|
942
1066
|
var import_cement8, onceSQLiteConnections, SQLiteConnection;
|
943
1067
|
var init_sqlite_adapter_better_sqlite3 = __esm({
|
@@ -1479,15 +1603,15 @@ var init_store_version_factory = __esm({
|
|
1479
1603
|
});
|
1480
1604
|
|
1481
1605
|
// src/runtime/store-sql/store-sql.ts
|
1482
|
-
var
|
1483
|
-
__export(
|
1606
|
+
var store_sql_exports2 = {};
|
1607
|
+
__export(store_sql_exports2, {
|
1484
1608
|
SQLDataGateway: () => SQLDataGateway,
|
1485
1609
|
SQLMetaGateway: () => SQLMetaGateway,
|
1486
1610
|
SQLTestStore: () => SQLTestStore,
|
1487
1611
|
SQLWalGateway: () => SQLWalGateway
|
1488
1612
|
});
|
1489
1613
|
var import_cement13, SQLWalGateway, SQLMetaGateway, SQLDataGateway, SQLTestStore;
|
1490
|
-
var
|
1614
|
+
var init_store_sql2 = __esm({
|
1491
1615
|
"src/runtime/store-sql/store-sql.ts"() {
|
1492
1616
|
"use strict";
|
1493
1617
|
import_cement13 = require("@adviser/cement");
|
@@ -1733,6 +1857,7 @@ __export(src_exports, {
|
|
1733
1857
|
index: () => index,
|
1734
1858
|
isFalsy: () => isFalsy,
|
1735
1859
|
rt: () => runtime_exports,
|
1860
|
+
runtime: () => runtime_exports,
|
1736
1861
|
throwFalsy: () => throwFalsy
|
1737
1862
|
});
|
1738
1863
|
module.exports = __toCommonJS(src_exports);
|
@@ -1992,72 +2117,7 @@ var ConnectREST = class extends ConnectionBase {
|
|
1992
2117
|
// src/blockstore/store-factory.ts
|
1993
2118
|
var import_cement14 = require("@adviser/cement");
|
1994
2119
|
init_data_dir();
|
1995
|
-
|
1996
|
-
// src/runtime/files.ts
|
1997
|
-
var UnixFS = __toESM(require("@ipld/unixfs"), 1);
|
1998
|
-
var raw = __toESM(require("multiformats/codecs/raw"), 1);
|
1999
|
-
var import_fixed = require("@ipld/unixfs/file/chunker/fixed");
|
2000
|
-
var import_balanced = require("@ipld/unixfs/file/layout/balanced");
|
2001
|
-
var import_ipfs_unixfs_exporter = require("ipfs-unixfs-exporter");
|
2002
|
-
var queuingStrategy = UnixFS.withCapacity();
|
2003
|
-
var settings = UnixFS.configure({
|
2004
|
-
fileChunkEncoder: raw,
|
2005
|
-
smallFileEncoder: raw,
|
2006
|
-
chunker: (0, import_fixed.withMaxChunkSize)(1024 * 1024),
|
2007
|
-
fileLayout: (0, import_balanced.withWidth)(1024)
|
2008
|
-
});
|
2009
|
-
async function collect(collectable) {
|
2010
|
-
const chunks = [];
|
2011
|
-
await collectable.pipeTo(
|
2012
|
-
new WritableStream({
|
2013
|
-
write(chunk) {
|
2014
|
-
chunks.push(chunk);
|
2015
|
-
}
|
2016
|
-
})
|
2017
|
-
);
|
2018
|
-
return chunks;
|
2019
|
-
}
|
2020
|
-
async function encodeFile(blob) {
|
2021
|
-
const readable = createFileEncoderStream(blob);
|
2022
|
-
const blocks = await collect(readable);
|
2023
|
-
return { cid: blocks.at(-1).cid, blocks };
|
2024
|
-
}
|
2025
|
-
async function decodeFile(blocks, cid, meta) {
|
2026
|
-
const entry = await (0, import_ipfs_unixfs_exporter.exporter)(cid.toString(), blocks, { length: meta.size });
|
2027
|
-
const chunks = [];
|
2028
|
-
for await (const chunk of entry.content()) {
|
2029
|
-
chunks.push(chunk);
|
2030
|
-
}
|
2031
|
-
return new File(chunks, entry.name, { type: meta.type, lastModified: 0 });
|
2032
|
-
}
|
2033
|
-
function createFileEncoderStream(blob) {
|
2034
|
-
const { readable, writable } = new TransformStream({}, queuingStrategy);
|
2035
|
-
const unixfsWriter = UnixFS.createWriter({ writable, settings });
|
2036
|
-
const fileBuilder = new UnixFSFileBuilder("", blob);
|
2037
|
-
void (async () => {
|
2038
|
-
await fileBuilder.finalize(unixfsWriter);
|
2039
|
-
await unixfsWriter.close();
|
2040
|
-
})();
|
2041
|
-
return readable;
|
2042
|
-
}
|
2043
|
-
var UnixFSFileBuilder = class {
|
2044
|
-
#file;
|
2045
|
-
constructor(name, file) {
|
2046
|
-
this.name = name;
|
2047
|
-
this.#file = file;
|
2048
|
-
}
|
2049
|
-
async finalize(writer) {
|
2050
|
-
const unixfsFileWriter = UnixFS.createFileWriter(writer);
|
2051
|
-
await this.#file.stream().pipeTo(
|
2052
|
-
new WritableStream({
|
2053
|
-
async write(chunk) {
|
2054
|
-
await unixfsFileWriter.write(chunk);
|
2055
|
-
}
|
2056
|
-
})
|
2057
|
-
);
|
2058
|
-
return await unixfsFileWriter.close();
|
2059
|
-
}
|
2060
|
-
};
|
2120
|
+
init_files();
|
2061
2121
|
|
2062
2122
|
// src/blockstore/store.ts
|
2063
2123
|
var import_p_limit2 = __toESM(require("p-limit"), 1);
|
@@ -2127,7 +2187,7 @@ var import_multiformats2 = require("multiformats");
|
|
2127
2187
|
var import_block3 = require("multiformats/block");
|
2128
2188
|
var dagcbor = __toESM(require("@ipld/dag-cbor"), 1);
|
2129
2189
|
var import_block4 = require("@web3-storage/pail/block");
|
2130
|
-
var
|
2190
|
+
var import_utils8 = require("prolly-trees/utils");
|
2131
2191
|
var import_cache = require("prolly-trees/cache");
|
2132
2192
|
var import_cid_set = require("prolly-trees/cid-set");
|
2133
2193
|
|
@@ -2315,7 +2375,7 @@ function makeEncDec(logger, crypto2, randomBytes2) {
|
|
2315
2375
|
};
|
2316
2376
|
return { encrypt, decrypt };
|
2317
2377
|
}
|
2318
|
-
var chunker = (0,
|
2378
|
+
var chunker = (0, import_utils8.bf)(30);
|
2319
2379
|
function hexStringToUint8Array(hexString) {
|
2320
2380
|
const length = hexString.length;
|
2321
2381
|
const uint8Array = new Uint8Array(length / 2);
|
@@ -2380,30 +2440,7 @@ async function decodeCarBlocks(logger, crypto2, root3, get2, keyMaterial) {
|
|
2380
2440
|
// src/blockstore/transaction.ts
|
2381
2441
|
var import_block5 = require("@web3-storage/pail/block");
|
2382
2442
|
init_types();
|
2383
|
-
|
2384
|
-
// src/runtime/crypto.ts
|
2385
|
-
function randomBytes(size) {
|
2386
|
-
const bytes = new Uint8Array(size);
|
2387
|
-
if (size > 0) {
|
2388
|
-
crypto.getRandomValues(bytes);
|
2389
|
-
}
|
2390
|
-
return bytes;
|
2391
|
-
}
|
2392
|
-
function digestSHA256(data) {
|
2393
|
-
return Promise.resolve(crypto.subtle.digest("SHA-256", data));
|
2394
|
-
}
|
2395
|
-
function toCryptoOpts(cryptoOpts = {}) {
|
2396
|
-
const opts = {
|
2397
|
-
importKey: cryptoOpts.importKey || crypto.subtle.importKey.bind(crypto.subtle),
|
2398
|
-
encrypt: cryptoOpts.encrypt || crypto.subtle.encrypt.bind(crypto.subtle),
|
2399
|
-
decrypt: cryptoOpts.decrypt || crypto.subtle.decrypt.bind(crypto.subtle),
|
2400
|
-
randomBytes: cryptoOpts.randomBytes || randomBytes,
|
2401
|
-
digestSHA256: cryptoOpts.digestSHA256 || digestSHA256
|
2402
|
-
};
|
2403
|
-
return opts;
|
2404
|
-
}
|
2405
|
-
|
2406
|
-
// src/blockstore/transaction.ts
|
2443
|
+
init_crypto();
|
2407
2444
|
init_utils();
|
2408
2445
|
var CarTransaction = class extends import_block5.MemoryBlockstore {
|
2409
2446
|
constructor(parent, opts = { add: true }) {
|
@@ -3071,8 +3108,8 @@ var VersionedStore = class {
|
|
3071
3108
|
this._onClosed.push(fn);
|
3072
3109
|
}
|
3073
3110
|
};
|
3074
|
-
var
|
3075
|
-
var
|
3111
|
+
var textEncoder2 = new TextEncoder();
|
3112
|
+
var textDecoder2 = new TextDecoder();
|
3076
3113
|
var MetaStore = class extends VersionedStore {
|
3077
3114
|
constructor(name, url, logger, gateway) {
|
3078
3115
|
super(name, url, ensureLogger(logger, "MetaStore", {}));
|
@@ -3111,7 +3148,7 @@ var MetaStore = class extends VersionedStore {
|
|
3111
3148
|
throw this.logger.Error().Err(bytes.Err()).Msg("gateway get").AsError();
|
3112
3149
|
}
|
3113
3150
|
try {
|
3114
|
-
return [this.parseHeader(
|
3151
|
+
return [this.parseHeader(textDecoder2.decode(bytes.Ok()))];
|
3115
3152
|
} catch (e) {
|
3116
3153
|
throw this.logger.Error().Err(e).Msg("parseHeader").AsError();
|
3117
3154
|
}
|
@@ -3123,7 +3160,7 @@ var MetaStore = class extends VersionedStore {
|
|
3123
3160
|
if (url.isErr()) {
|
3124
3161
|
throw this.logger.Error().Err(url.Err()).Str("branch", branch).Url(this.url).Msg("got error from gateway.buildUrl").AsError();
|
3125
3162
|
}
|
3126
|
-
const res = await this.gateway.put(url.Ok(),
|
3163
|
+
const res = await this.gateway.put(url.Ok(), textEncoder2.encode(bytes));
|
3127
3164
|
if (res.isErr()) {
|
3128
3165
|
throw this.logger.Error().Err(res.Err()).Msg("got error from gateway.put").AsError();
|
3129
3166
|
}
|
@@ -3363,7 +3400,7 @@ var RemoteWAL = class extends VersionedStore {
|
|
3363
3400
|
throw this.logger.Error().Err(bytes.Err()).Msg("error get").AsError();
|
3364
3401
|
}
|
3365
3402
|
try {
|
3366
|
-
return bytes && (0, import_dag_json.parse)(
|
3403
|
+
return bytes && (0, import_dag_json.parse)(textDecoder2.decode(bytes.Ok()));
|
3367
3404
|
} catch (e) {
|
3368
3405
|
throw this.logger.Error().Err(e).Msg("error parse").AsError();
|
3369
3406
|
}
|
@@ -3379,7 +3416,7 @@ var RemoteWAL = class extends VersionedStore {
|
|
3379
3416
|
} catch (e) {
|
3380
3417
|
throw this.logger.Error().Err(e).Any("state", state).Msg("error format").AsError();
|
3381
3418
|
}
|
3382
|
-
const res = await this.gateway.put(filepath.Ok(),
|
3419
|
+
const res = await this.gateway.put(filepath.Ok(), textEncoder2.encode(encoded));
|
3383
3420
|
if (res.isErr()) {
|
3384
3421
|
throw this.logger.Error().Err(res.Err()).Str("filePath", filepath.Ok().toString()).Msg("error saving").AsError();
|
3385
3422
|
}
|
@@ -3415,16 +3452,34 @@ function toURL(pathOrUrl, isIndex) {
|
|
3415
3452
|
return ensureIsIndex(url, isIndex);
|
3416
3453
|
}
|
3417
3454
|
}
|
3455
|
+
var storeFactory = /* @__PURE__ */ new Map();
|
3456
|
+
function ensureName(name, url) {
|
3457
|
+
if (!url.searchParams.has("name")) {
|
3458
|
+
url.searchParams.set("name", name);
|
3459
|
+
}
|
3460
|
+
}
|
3418
3461
|
function buildURL(optURL, loader) {
|
3419
3462
|
const storeOpts = loader.ebOpts.store;
|
3420
|
-
|
3463
|
+
const obuItem = Array.from(storeFactory.values()).find((items) => items.overrideBaseURL);
|
3464
|
+
let obuUrl;
|
3465
|
+
if (obuItem && obuItem.overrideBaseURL) {
|
3466
|
+
obuUrl = new URL(obuItem.overrideBaseURL);
|
3467
|
+
}
|
3468
|
+
return toURL(optURL || obuUrl || dataDir(loader.name, storeOpts.stores?.base), storeOpts.isIndex);
|
3421
3469
|
}
|
3422
|
-
var storeFactory = /* @__PURE__ */ new Map();
|
3423
3470
|
function registerStoreProtocol(item) {
|
3424
3471
|
if (storeFactory.has(item.protocol)) {
|
3425
3472
|
throw new Error(`protocol ${item.protocol} already registered`);
|
3426
3473
|
}
|
3474
|
+
if (item.overrideBaseURL) {
|
3475
|
+
Array.from(storeFactory.values()).forEach((items) => {
|
3476
|
+
items.overrideBaseURL = void 0;
|
3477
|
+
});
|
3478
|
+
}
|
3427
3479
|
storeFactory.set(item.protocol, item);
|
3480
|
+
return () => {
|
3481
|
+
storeFactory.delete(item.protocol);
|
3482
|
+
};
|
3428
3483
|
}
|
3429
3484
|
function runStoreFactory(url, logger, run) {
|
3430
3485
|
const item = storeFactory.get(url.protocol);
|
@@ -3443,6 +3498,7 @@ function loadDataGateway(url, logger) {
|
|
3443
3498
|
var onceDataStoreFactory = new import_cement14.KeyedResolvOnce();
|
3444
3499
|
async function dataStoreFactory(loader) {
|
3445
3500
|
const url = buildURL(loader.ebOpts.store.stores?.data, loader);
|
3501
|
+
ensureName(loader.name, url);
|
3446
3502
|
const logger = ensureLogger(loader.logger, "dataStoreFactory", { url: url.toString() });
|
3447
3503
|
url.searchParams.set("store", "data");
|
3448
3504
|
return onceDataStoreFactory.get(url.toString()).once(async () => {
|
@@ -3462,15 +3518,14 @@ function loadMetaGateway(url, logger) {
|
|
3462
3518
|
var onceMetaStoreFactory = new import_cement14.KeyedResolvOnce();
|
3463
3519
|
async function metaStoreFactory(loader) {
|
3464
3520
|
const url = buildURL(loader.ebOpts.store.stores?.meta, loader);
|
3521
|
+
ensureName(loader.name, url);
|
3465
3522
|
const logger = ensureLogger(loader.logger, "metaStoreFactory", { url: () => url.toString() });
|
3466
3523
|
url.searchParams.set("store", "meta");
|
3467
3524
|
return onceMetaStoreFactory.get(url.toString()).once(async () => {
|
3468
3525
|
logger.Debug().Str("protocol", url.protocol).Msg("pre-protocol switch");
|
3469
3526
|
const gateway = await loadMetaGateway(url, logger);
|
3470
3527
|
const store = new MetaStore(loader.name, url, loader.logger, gateway);
|
3471
|
-
logger.Debug().Msg("pre-start");
|
3472
3528
|
await store.start();
|
3473
|
-
logger.Debug().Msg("post-start");
|
3474
3529
|
return store;
|
3475
3530
|
});
|
3476
3531
|
}
|
@@ -3483,6 +3538,7 @@ function loadWalGateway(url, logger) {
|
|
3483
3538
|
var onceRemoteWalFactory = new import_cement14.KeyedResolvOnce();
|
3484
3539
|
async function remoteWalFactory(loader) {
|
3485
3540
|
const url = buildURL(loader.ebOpts.store.stores?.meta, loader);
|
3541
|
+
ensureName(loader.name, url);
|
3486
3542
|
const logger = ensureLogger(loader.logger, "remoteWalFactory", { url: url.toString() });
|
3487
3543
|
url.searchParams.set("store", "wal");
|
3488
3544
|
return onceRemoteWalFactory.get(url.toString()).once(async () => {
|
@@ -3562,19 +3618,19 @@ registerStoreProtocol({
|
|
3562
3618
|
registerStoreProtocol({
|
3563
3619
|
protocol: "sqlite:",
|
3564
3620
|
data: async (logger) => {
|
3565
|
-
const { SQLDataGateway: SQLDataGateway2 } = await Promise.resolve().then(() => (
|
3621
|
+
const { SQLDataGateway: SQLDataGateway2 } = await Promise.resolve().then(() => (init_store_sql2(), store_sql_exports2));
|
3566
3622
|
return new SQLDataGateway2(logger);
|
3567
3623
|
},
|
3568
3624
|
meta: async (logger) => {
|
3569
|
-
const { SQLMetaGateway: SQLMetaGateway2 } = await Promise.resolve().then(() => (
|
3625
|
+
const { SQLMetaGateway: SQLMetaGateway2 } = await Promise.resolve().then(() => (init_store_sql2(), store_sql_exports2));
|
3570
3626
|
return new SQLMetaGateway2(logger);
|
3571
3627
|
},
|
3572
3628
|
wal: async (logger) => {
|
3573
|
-
const { SQLWalGateway: SQLWalGateway2 } = await Promise.resolve().then(() => (
|
3629
|
+
const { SQLWalGateway: SQLWalGateway2 } = await Promise.resolve().then(() => (init_store_sql2(), store_sql_exports2));
|
3574
3630
|
return new SQLWalGateway2(logger);
|
3575
3631
|
},
|
3576
3632
|
test: async (logger) => {
|
3577
|
-
const { SQLTestStore: SQLTestStore2 } = await Promise.resolve().then(() => (
|
3633
|
+
const { SQLTestStore: SQLTestStore2 } = await Promise.resolve().then(() => (init_store_sql2(), store_sql_exports2));
|
3578
3634
|
return new SQLTestStore2(logger);
|
3579
3635
|
}
|
3580
3636
|
});
|
@@ -4536,7 +4592,7 @@ var Database = class {
|
|
4536
4592
|
}));
|
4537
4593
|
return { rows, clock: head };
|
4538
4594
|
}
|
4539
|
-
async allDocs() {
|
4595
|
+
async allDocs(opts = {}) {
|
4540
4596
|
await this.ready();
|
4541
4597
|
const { result, head } = await this._crdt.allDocs();
|
4542
4598
|
const rows = result.map(({ id: key, value, del }) => ({
|
@@ -4640,10 +4696,11 @@ function makeName(fnString) {
|
|
4640
4696
|
// src/index.ts
|
4641
4697
|
init_types();
|
4642
4698
|
init_runtime();
|
4699
|
+
init_runtime();
|
4643
4700
|
init_utils();
|
4644
4701
|
|
4645
4702
|
// src/version.ts
|
4646
4703
|
var PACKAGE_VERSION = Object.keys({
|
4647
|
-
"0.
|
4704
|
+
"0.0.0-dev": "xxxx"
|
4648
4705
|
})[0];
|
4649
4706
|
//# sourceMappingURL=index.cjs.map
|