@fireproof/core 0.19.5-dev → 0.19.8-dev-alldocs
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/{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
|