@fireproof/core 0.20.0-dev-preview-53 → 0.20.0-dev-preview-54
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/deno.json +1 -3
- package/index.cjs +224 -255
- package/index.cjs.map +1 -1
- package/index.d.cts +16 -16
- package/index.d.ts +16 -16
- package/index.js +168 -199
- package/index.js.map +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/package.json +3 -5
- package/tests/fireproof/database.test.ts +39 -0
package/index.cjs
CHANGED
@@ -74,7 +74,7 @@ __export(index_exports, {
|
|
74
74
|
module.exports = __toCommonJS(index_exports);
|
75
75
|
|
76
76
|
// src/ledger.ts
|
77
|
-
var
|
77
|
+
var import_cement21 = require("@adviser/cement");
|
78
78
|
|
79
79
|
// src/utils.ts
|
80
80
|
var import_cement = require("@adviser/cement");
|
@@ -569,70 +569,34 @@ __export(files_exports, {
|
|
569
569
|
decodeFile: () => decodeFile,
|
570
570
|
encodeFile: () => encodeFile
|
571
571
|
});
|
572
|
-
var UnixFS = __toESM(require("@ipld/unixfs"), 1);
|
573
572
|
var raw = __toESM(require("multiformats/codecs/raw"), 1);
|
574
|
-
var
|
575
|
-
var
|
576
|
-
var
|
577
|
-
var queuingStrategy = UnixFS.withCapacity();
|
578
|
-
var settings = UnixFS.configure({
|
579
|
-
fileChunkEncoder: raw,
|
580
|
-
smallFileEncoder: raw,
|
581
|
-
chunker: (0, import_fixed.withMaxChunkSize)(1024 * 1024),
|
582
|
-
fileLayout: (0, import_balanced.withWidth)(1024)
|
583
|
-
});
|
584
|
-
async function collect(collectable) {
|
585
|
-
const chunks = [];
|
586
|
-
await collectable.pipeTo(
|
587
|
-
new WritableStream({
|
588
|
-
write(chunk) {
|
589
|
-
chunks.push(chunk);
|
590
|
-
}
|
591
|
-
})
|
592
|
-
);
|
593
|
-
return chunks;
|
594
|
-
}
|
573
|
+
var import_cid = require("multiformats/cid");
|
574
|
+
var import_sha2 = require("multiformats/hashes/sha2");
|
575
|
+
var import_cement3 = require("@adviser/cement");
|
595
576
|
async function encodeFile(blob) {
|
596
|
-
const
|
597
|
-
const
|
598
|
-
|
577
|
+
const data = await (0, import_cement3.top_uint8)(blob);
|
578
|
+
const bytes = raw.encode(data);
|
579
|
+
const hash = await import_sha2.sha256.digest(bytes);
|
580
|
+
const cid = import_cid.CID.create(1, raw.code, hash);
|
581
|
+
const block = { cid, bytes };
|
582
|
+
return { cid, blocks: [block] };
|
599
583
|
}
|
600
|
-
|
601
|
-
|
602
|
-
const chunks = [];
|
603
|
-
for await (const chunk of entry.content()) {
|
604
|
-
chunks.push(chunk);
|
605
|
-
}
|
606
|
-
return new File(chunks, entry.name, { type: meta.type, lastModified: 0 });
|
584
|
+
function isHasBlockAGet(obj) {
|
585
|
+
return typeof obj.get === "function";
|
607
586
|
}
|
608
|
-
function
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
await
|
614
|
-
|
615
|
-
|
616
|
-
|
587
|
+
async function decodeFile(blocks, cid, meta) {
|
588
|
+
if (!isHasBlockAGet(blocks)) {
|
589
|
+
return import_cement3.Result.Err(new Error("Invalid block storage"));
|
590
|
+
}
|
591
|
+
return (0, import_cement3.exception2Result)(async () => {
|
592
|
+
const bytes = await blocks.get(cid);
|
593
|
+
const data = raw.decode(bytes);
|
594
|
+
return new File([data], "file", {
|
595
|
+
type: meta.type,
|
596
|
+
lastModified: meta.lastModified || 0
|
597
|
+
});
|
598
|
+
});
|
617
599
|
}
|
618
|
-
var UnixFSFileBuilder = class {
|
619
|
-
#file;
|
620
|
-
constructor(name, file) {
|
621
|
-
this.name = name;
|
622
|
-
this.#file = file;
|
623
|
-
}
|
624
|
-
async finalize(writer) {
|
625
|
-
const unixfsFileWriter = UnixFS.createFileWriter(writer);
|
626
|
-
await this.#file.stream().pipeTo(
|
627
|
-
new WritableStream({
|
628
|
-
async write(chunk) {
|
629
|
-
await unixfsFileWriter.write(chunk);
|
630
|
-
}
|
631
|
-
})
|
632
|
-
);
|
633
|
-
return await unixfsFileWriter.close();
|
634
|
-
}
|
635
|
-
};
|
636
600
|
|
637
601
|
// src/runtime/key-bag.ts
|
638
602
|
var key_bag_exports = {};
|
@@ -645,13 +609,13 @@ __export(key_bag_exports, {
|
|
645
609
|
registerKeyBagProviderFactory: () => registerKeyBagProviderFactory,
|
646
610
|
toKeyWithFingerPrint: () => toKeyWithFingerPrint
|
647
611
|
});
|
648
|
-
var
|
612
|
+
var import_cement5 = require("@adviser/cement");
|
649
613
|
var import_base582 = require("multiformats/bases/base58");
|
650
614
|
|
651
615
|
// src/runtime/gateways/file/sys-file-system-factory.ts
|
652
|
-
var
|
616
|
+
var import_cement4 = require("@adviser/cement");
|
653
617
|
function sysFileSystemFactory(uri) {
|
654
|
-
const rt = (0,
|
618
|
+
const rt = (0, import_cement4.runtimeFn)();
|
655
619
|
switch (true) {
|
656
620
|
case rt.isNodeIsh:
|
657
621
|
return import("@fireproof/core/node").then((m) => m.getSysFileSystem(uri));
|
@@ -771,7 +735,7 @@ async function toKeyWithFingerPrint(keybag, materialStrOrUint8) {
|
|
771
735
|
}
|
772
736
|
const key = await keybag.subtleKey(material);
|
773
737
|
const fpr = await keybag.rt.crypto.digestSHA256(material);
|
774
|
-
return
|
738
|
+
return import_cement5.Result.Ok({
|
775
739
|
key,
|
776
740
|
fingerPrint: import_base582.base58btc.encode(new Uint8Array(fpr)),
|
777
741
|
extract: async () => {
|
@@ -827,13 +791,13 @@ var keysByFingerprint = class _keysByFingerprint {
|
|
827
791
|
def = !!def;
|
828
792
|
const rKfp = await toKeyWithFingerPrint(this.keybag, materialStrOrUint8);
|
829
793
|
if (rKfp.isErr()) {
|
830
|
-
return
|
794
|
+
return import_cement5.Result.Err(rKfp);
|
831
795
|
}
|
832
796
|
const kfp = rKfp.Ok();
|
833
797
|
let found = this.keys[kfp.fingerPrint];
|
834
798
|
if (found) {
|
835
799
|
if (found.default === def) {
|
836
|
-
return
|
800
|
+
return import_cement5.Result.Ok({
|
837
801
|
modified: false,
|
838
802
|
kfp: found
|
839
803
|
});
|
@@ -853,7 +817,7 @@ var keysByFingerprint = class _keysByFingerprint {
|
|
853
817
|
if (keyBagAction) {
|
854
818
|
this.keybag._upsertNamedKey(this);
|
855
819
|
}
|
856
|
-
return
|
820
|
+
return import_cement5.Result.Ok({
|
857
821
|
modified: keyBagAction && true,
|
858
822
|
kfp: found
|
859
823
|
});
|
@@ -883,8 +847,8 @@ var keysByFingerprint = class _keysByFingerprint {
|
|
883
847
|
};
|
884
848
|
var KeyBag = class {
|
885
849
|
constructor(rt) {
|
886
|
-
this._warnOnce = new
|
887
|
-
this._seq = new
|
850
|
+
this._warnOnce = new import_cement5.ResolveOnce();
|
851
|
+
this._seq = new import_cement5.ResolveSeq();
|
888
852
|
// async getNamedExtractableKey(name: string, failIfNotFound = false): Promise<Result<KeysByFingerprint>> {
|
889
853
|
// const ret = await this.getNamedKey(name, failIfNotFound);
|
890
854
|
// if (ret.isErr()) {
|
@@ -902,7 +866,7 @@ var KeyBag = class {
|
|
902
866
|
// },
|
903
867
|
// });
|
904
868
|
// }
|
905
|
-
this._namedKeyCache = new
|
869
|
+
this._namedKeyCache = new import_cement5.KeyedResolvOnce();
|
906
870
|
this.rt = rt;
|
907
871
|
this.logger = ensureLogger(rt.sthis, "KeyBag");
|
908
872
|
}
|
@@ -932,24 +896,24 @@ var KeyBag = class {
|
|
932
896
|
async ensureKeyFromUrl(url, keyFactory) {
|
933
897
|
const storeKey = url.getParam(PARAM.STORE_KEY);
|
934
898
|
if (storeKey === "insecure") {
|
935
|
-
return
|
899
|
+
return import_cement5.Result.Ok(url);
|
936
900
|
}
|
937
901
|
if (!storeKey) {
|
938
902
|
const keyName = `@${keyFactory()}@`;
|
939
903
|
const ret = await this.getNamedKey(keyName);
|
940
904
|
if (ret.isErr()) {
|
941
|
-
return
|
905
|
+
return import_cement5.Result.Err(ret);
|
942
906
|
}
|
943
907
|
const urb = url.build().setParam(PARAM.STORE_KEY, keyName);
|
944
|
-
return
|
908
|
+
return import_cement5.Result.Ok(urb.URI());
|
945
909
|
}
|
946
910
|
if (storeKey.startsWith("@") && storeKey.endsWith("@")) {
|
947
911
|
const ret = await this.getNamedKey(storeKey);
|
948
912
|
if (ret.isErr()) {
|
949
|
-
return
|
913
|
+
return import_cement5.Result.Err(ret);
|
950
914
|
}
|
951
915
|
}
|
952
|
-
return
|
916
|
+
return import_cement5.Result.Ok(url);
|
953
917
|
}
|
954
918
|
async toKeysItem(ki) {
|
955
919
|
if (!ki) return void 0;
|
@@ -1008,7 +972,7 @@ var KeyBag = class {
|
|
1008
972
|
this._namedKeyCache.unget(ksi.name);
|
1009
973
|
}
|
1010
974
|
await bag.set(await ksi.asKeysItem());
|
1011
|
-
return
|
975
|
+
return import_cement5.Result.Ok(ksi);
|
1012
976
|
});
|
1013
977
|
}
|
1014
978
|
async _getNamedKey(name, failIfNotFound, material) {
|
@@ -1018,7 +982,7 @@ var KeyBag = class {
|
|
1018
982
|
const named = await this.toKeysItem(await bag.get(name));
|
1019
983
|
if (named) {
|
1020
984
|
this.logger.Debug().Str("id", id).Str("name", name).Any("fprs", Object.keys(named.keys)).Msg("fingerPrint getNamedKey");
|
1021
|
-
return
|
985
|
+
return import_cement5.Result.Ok(await keysByFingerprint.from(this, named));
|
1022
986
|
}
|
1023
987
|
if (!named && failIfNotFound) {
|
1024
988
|
this._namedKeyCache.unget(name);
|
@@ -1039,10 +1003,10 @@ var KeyBag = class {
|
|
1039
1003
|
}
|
1040
1004
|
const res = await kp.upsert(keyMaterial, true);
|
1041
1005
|
if (res.isErr()) {
|
1042
|
-
return
|
1006
|
+
return import_cement5.Result.Err(res);
|
1043
1007
|
}
|
1044
1008
|
this.logger.Debug().Str("id", id).Str("name", name).Str("fpr", res.Ok().kfp.fingerPrint).Msg("createKey getNamedKey-post");
|
1045
|
-
return
|
1009
|
+
return import_cement5.Result.Ok(kp);
|
1046
1010
|
});
|
1047
1011
|
}
|
1048
1012
|
async getNamedKey(name, failIfNotFound = false, material) {
|
@@ -1084,15 +1048,15 @@ function registerKeyBagProviderFactory(item) {
|
|
1084
1048
|
function defaultKeyBagUrl(sthis) {
|
1085
1049
|
let bagFnameOrUrl = sthis.env.get("FP_KEYBAG_URL");
|
1086
1050
|
let url;
|
1087
|
-
if ((0,
|
1088
|
-
url =
|
1051
|
+
if ((0, import_cement5.runtimeFn)().isBrowser) {
|
1052
|
+
url = import_cement5.URI.from(bagFnameOrUrl || "indexeddb://fp-keybag");
|
1089
1053
|
} else {
|
1090
1054
|
if (!bagFnameOrUrl) {
|
1091
1055
|
const home = sthis.env.get("HOME");
|
1092
1056
|
bagFnameOrUrl = `${home}/.fireproof/keybag`;
|
1093
|
-
url =
|
1057
|
+
url = import_cement5.URI.from(`file://${bagFnameOrUrl}`);
|
1094
1058
|
} else {
|
1095
|
-
url =
|
1059
|
+
url = import_cement5.URI.from(bagFnameOrUrl);
|
1096
1060
|
}
|
1097
1061
|
}
|
1098
1062
|
const logger = ensureLogger(sthis, "defaultKeyBagUrl");
|
@@ -1107,19 +1071,19 @@ function defaultKeyBagOpts(sthis, kbo) {
|
|
1107
1071
|
const logger = ensureLogger(sthis, "KeyBag");
|
1108
1072
|
let url;
|
1109
1073
|
if (kbo.url) {
|
1110
|
-
url =
|
1074
|
+
url = import_cement5.URI.from(kbo.url);
|
1111
1075
|
logger.Debug().Url(url).Msg("from opts");
|
1112
1076
|
} else {
|
1113
1077
|
let bagFnameOrUrl = sthis.env.get("FP_KEYBAG_URL");
|
1114
|
-
if ((0,
|
1115
|
-
url =
|
1078
|
+
if ((0, import_cement5.runtimeFn)().isBrowser) {
|
1079
|
+
url = import_cement5.URI.from(bagFnameOrUrl || "indexeddb://fp-keybag");
|
1116
1080
|
} else {
|
1117
1081
|
if (!bagFnameOrUrl) {
|
1118
1082
|
const home = sthis.env.get("HOME");
|
1119
1083
|
bagFnameOrUrl = `${home}/.fireproof/keybag`;
|
1120
|
-
url =
|
1084
|
+
url = import_cement5.URI.from(`file://${bagFnameOrUrl}`);
|
1121
1085
|
} else {
|
1122
|
-
url =
|
1086
|
+
url = import_cement5.URI.from(bagFnameOrUrl);
|
1123
1087
|
}
|
1124
1088
|
}
|
1125
1089
|
logger.Debug().Url(url).Msg("from env");
|
@@ -1133,7 +1097,7 @@ function defaultKeyBagOpts(sthis, kbo) {
|
|
1133
1097
|
}
|
1134
1098
|
return {
|
1135
1099
|
url,
|
1136
|
-
crypto: kbo.crypto || (0,
|
1100
|
+
crypto: kbo.crypto || (0, import_cement5.toCryptoRuntime)({}),
|
1137
1101
|
sthis,
|
1138
1102
|
logger,
|
1139
1103
|
keyLength: kbo.keyLength || 16,
|
@@ -1143,7 +1107,7 @@ function defaultKeyBagOpts(sthis, kbo) {
|
|
1143
1107
|
}
|
1144
1108
|
};
|
1145
1109
|
}
|
1146
|
-
var _keyBags = new
|
1110
|
+
var _keyBags = new import_cement5.KeyedResolvOnce();
|
1147
1111
|
async function getKeyBag(sthis, kbo = {}) {
|
1148
1112
|
await sthis.start();
|
1149
1113
|
const rt = defaultKeyBagOpts(sthis, kbo);
|
@@ -1151,7 +1115,7 @@ async function getKeyBag(sthis, kbo = {}) {
|
|
1151
1115
|
}
|
1152
1116
|
|
1153
1117
|
// src/blockstore/register-store-protocol.ts
|
1154
|
-
var
|
1118
|
+
var import_cement11 = require("@adviser/cement");
|
1155
1119
|
|
1156
1120
|
// src/runtime/gateways/file/version.ts
|
1157
1121
|
var FILESTORE_VERSION = "v0.19-file";
|
@@ -1160,10 +1124,9 @@ var FILESTORE_VERSION = "v0.19-file";
|
|
1160
1124
|
var INDEXEDDB_VERSION = "v0.19-indexeddb";
|
1161
1125
|
|
1162
1126
|
// src/runtime/gateways/file/gateway-impl.ts
|
1163
|
-
var
|
1127
|
+
var import_cement6 = require("@adviser/cement");
|
1164
1128
|
|
1165
1129
|
// src/runtime/gateways/file/utils.ts
|
1166
|
-
var import_core = require("@fireproof/core");
|
1167
1130
|
function getPath(url, sthis) {
|
1168
1131
|
const basePath = url.pathname;
|
1169
1132
|
const name = url.getParam("name");
|
@@ -1175,7 +1138,7 @@ function getPath(url, sthis) {
|
|
1175
1138
|
function getFileName(url, sthis) {
|
1176
1139
|
const key = url.getParam("key");
|
1177
1140
|
if (!key) throw sthis.logger.Error().Url(url).Msg(`key not found`).AsError();
|
1178
|
-
const res =
|
1141
|
+
const res = getStore(url, sthis, (...a) => a.join("-"));
|
1179
1142
|
switch (res.fromUrl) {
|
1180
1143
|
case "file":
|
1181
1144
|
return sthis.pathOps.join(res.name, key);
|
@@ -1190,7 +1153,7 @@ function getFileName(url, sthis) {
|
|
1190
1153
|
}
|
1191
1154
|
|
1192
1155
|
// src/runtime/gateways/file/gateway-impl.ts
|
1193
|
-
var versionFiles = new
|
1156
|
+
var versionFiles = new import_cement6.KeyedResolvOnce();
|
1194
1157
|
var FileGateway = class {
|
1195
1158
|
constructor(sthis, fs) {
|
1196
1159
|
this.fs = fs;
|
@@ -1215,7 +1178,7 @@ var FileGateway = class {
|
|
1215
1178
|
});
|
1216
1179
|
}
|
1217
1180
|
start(baseURL, sthis) {
|
1218
|
-
return (0,
|
1181
|
+
return (0, import_cement6.exception2Result)(async () => {
|
1219
1182
|
await this.fs.start();
|
1220
1183
|
const url = baseURL.build();
|
1221
1184
|
url.defParam(PARAM.VERSION, FILESTORE_VERSION);
|
@@ -1229,10 +1192,10 @@ var FileGateway = class {
|
|
1229
1192
|
});
|
1230
1193
|
}
|
1231
1194
|
async buildUrl(baseUrl, key) {
|
1232
|
-
return
|
1195
|
+
return import_cement6.Result.Ok(baseUrl.build().setParam(PARAM.KEY, key).URI());
|
1233
1196
|
}
|
1234
1197
|
async close() {
|
1235
|
-
return
|
1198
|
+
return import_cement6.Result.Ok(void 0);
|
1236
1199
|
}
|
1237
1200
|
getFilePath(url, sthis) {
|
1238
1201
|
const key = url.getParam(PARAM.KEY);
|
@@ -1240,7 +1203,7 @@ var FileGateway = class {
|
|
1240
1203
|
return sthis.pathOps.join(getPath(url, sthis), getFileName(url, sthis));
|
1241
1204
|
}
|
1242
1205
|
async put(url, bytes, sthis) {
|
1243
|
-
return (0,
|
1206
|
+
return (0, import_cement6.exception2Result)(async () => {
|
1244
1207
|
const file = await this.getFilePath(url, sthis);
|
1245
1208
|
sthis.logger.Debug().Str("url", url.toString()).Str("file", file).Msg("put");
|
1246
1209
|
await this.fs.writefile(file, bytes);
|
@@ -1252,17 +1215,17 @@ var FileGateway = class {
|
|
1252
1215
|
try {
|
1253
1216
|
sthis.logger.Debug().Url(url).Str("file", file).Msg("get");
|
1254
1217
|
const res = await this.fs.readfile(file);
|
1255
|
-
return
|
1218
|
+
return import_cement6.Result.Ok(res);
|
1256
1219
|
} catch (e) {
|
1257
1220
|
if (isNotFoundError(e)) {
|
1258
|
-
return
|
1221
|
+
return import_cement6.Result.Err(new NotFoundError(`file not found: ${file}`));
|
1259
1222
|
}
|
1260
|
-
return
|
1223
|
+
return import_cement6.Result.Err(e);
|
1261
1224
|
}
|
1262
1225
|
});
|
1263
1226
|
}
|
1264
1227
|
async delete(url, sthis) {
|
1265
|
-
return (0,
|
1228
|
+
return (0, import_cement6.exception2Result)(async () => {
|
1266
1229
|
await this.fs.unlink(this.getFilePath(url, sthis));
|
1267
1230
|
});
|
1268
1231
|
}
|
@@ -1288,7 +1251,7 @@ var FileGateway = class {
|
|
1288
1251
|
}
|
1289
1252
|
}
|
1290
1253
|
}
|
1291
|
-
return
|
1254
|
+
return import_cement6.Result.Ok(void 0);
|
1292
1255
|
}
|
1293
1256
|
async getPlain(iurl, key, sthis) {
|
1294
1257
|
const url = iurl.build().setParam(PARAM.KEY, key).URI();
|
@@ -1296,7 +1259,7 @@ var FileGateway = class {
|
|
1296
1259
|
sthis.logger.Debug().Url(url).Str("dbFile", dbFile).Msg("get");
|
1297
1260
|
const buffer = await this.fs.readfile(dbFile);
|
1298
1261
|
sthis.logger.Debug().Url(url).Str("dbFile", dbFile).Len(buffer).Msg("got");
|
1299
|
-
return
|
1262
|
+
return import_cement6.Result.Ok(buffer);
|
1300
1263
|
}
|
1301
1264
|
};
|
1302
1265
|
|
@@ -1305,7 +1268,7 @@ var gateway_exports = {};
|
|
1305
1268
|
__export(gateway_exports, {
|
1306
1269
|
MemoryGateway: () => MemoryGateway
|
1307
1270
|
});
|
1308
|
-
var
|
1271
|
+
var import_cement7 = require("@adviser/cement");
|
1309
1272
|
|
1310
1273
|
// src/runtime/gateways/memory/version.ts
|
1311
1274
|
var MEMORY_VERSION = "v0.19-memory";
|
@@ -1318,14 +1281,14 @@ var MemoryGateway = class {
|
|
1318
1281
|
this.sthis = sthis;
|
1319
1282
|
}
|
1320
1283
|
buildUrl(baseUrl, key) {
|
1321
|
-
return Promise.resolve(
|
1284
|
+
return Promise.resolve(import_cement7.Result.Ok(baseUrl.build().setParam(PARAM.KEY, key).URI()));
|
1322
1285
|
}
|
1323
1286
|
start(baseUrl) {
|
1324
|
-
return Promise.resolve(
|
1287
|
+
return Promise.resolve(import_cement7.Result.Ok(baseUrl.build().setParam(PARAM.VERSION, MEMORY_VERSION).URI()));
|
1325
1288
|
}
|
1326
1289
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1327
1290
|
close(baseUrl) {
|
1328
|
-
return Promise.resolve(
|
1291
|
+
return Promise.resolve(import_cement7.Result.Ok(void 0));
|
1329
1292
|
}
|
1330
1293
|
destroy(baseUrl) {
|
1331
1294
|
const keyUrl = baseUrl.toString();
|
@@ -1335,38 +1298,38 @@ var MemoryGateway = class {
|
|
1335
1298
|
}
|
1336
1299
|
}
|
1337
1300
|
this.memorys.clear();
|
1338
|
-
return Promise.resolve(
|
1301
|
+
return Promise.resolve(import_cement7.Result.Ok(void 0));
|
1339
1302
|
}
|
1340
1303
|
async put(url, bytes) {
|
1341
1304
|
this.memorys.set(url.toString(), bytes);
|
1342
|
-
return
|
1305
|
+
return import_cement7.Result.Ok(void 0);
|
1343
1306
|
}
|
1344
1307
|
// get could return a NotFoundError if the key is not found
|
1345
1308
|
get(url) {
|
1346
1309
|
const x = this.memorys.get(url.toString());
|
1347
1310
|
if (!x) {
|
1348
|
-
return Promise.resolve(
|
1311
|
+
return Promise.resolve(import_cement7.Result.Err(new NotFoundError(`not found: ${url.toString()}`)));
|
1349
1312
|
}
|
1350
|
-
return Promise.resolve(
|
1313
|
+
return Promise.resolve(import_cement7.Result.Ok(x));
|
1351
1314
|
}
|
1352
1315
|
delete(url) {
|
1353
1316
|
this.memorys.delete(url.toString());
|
1354
|
-
return Promise.resolve(
|
1317
|
+
return Promise.resolve(import_cement7.Result.Ok(void 0));
|
1355
1318
|
}
|
1356
1319
|
async getPlain(url, key) {
|
1357
1320
|
const x = this.memorys.get(url.build().setParam(PARAM.KEY, key).toString());
|
1358
1321
|
if (!x) {
|
1359
|
-
return
|
1322
|
+
return import_cement7.Result.Err(new NotFoundError("not found"));
|
1360
1323
|
}
|
1361
|
-
return
|
1324
|
+
return import_cement7.Result.Ok(x);
|
1362
1325
|
}
|
1363
1326
|
};
|
1364
1327
|
|
1365
1328
|
// src/runtime/gateways/def-serde-gateway.ts
|
1366
|
-
var
|
1329
|
+
var import_cement10 = require("@adviser/cement");
|
1367
1330
|
|
1368
1331
|
// src/blockstore/fp-envelope.ts
|
1369
|
-
var
|
1332
|
+
var import_cement8 = require("@adviser/cement");
|
1370
1333
|
var FPEnvelopeTypes = {
|
1371
1334
|
CAR: "car",
|
1372
1335
|
FILE: "file",
|
@@ -1374,14 +1337,14 @@ var FPEnvelopeTypes = {
|
|
1374
1337
|
WAL: "wal"
|
1375
1338
|
};
|
1376
1339
|
function Car2FPMsg(fpcar) {
|
1377
|
-
return
|
1340
|
+
return import_cement8.Result.Ok({ type: FPEnvelopeTypes.CAR, payload: fpcar });
|
1378
1341
|
}
|
1379
1342
|
function File2FPMsg(fpfile) {
|
1380
|
-
return
|
1343
|
+
return import_cement8.Result.Ok({ type: FPEnvelopeTypes.FILE, payload: fpfile });
|
1381
1344
|
}
|
1382
1345
|
|
1383
1346
|
// src/runtime/gateways/fp-envelope-serialize.ts
|
1384
|
-
var
|
1347
|
+
var import_cement9 = require("@adviser/cement");
|
1385
1348
|
var import_clock = require("@fireproof/vendor/@web3-storage/pail/clock");
|
1386
1349
|
var import_base64 = require("multiformats/bases/base64");
|
1387
1350
|
var import_multiformats = require("multiformats");
|
@@ -1420,10 +1383,10 @@ function WALState2Serialized(sthis, wal) {
|
|
1420
1383
|
return serializedWAL;
|
1421
1384
|
}
|
1422
1385
|
var defaultEncoder = {
|
1423
|
-
car: async (sthis, payload) =>
|
1424
|
-
file: async (sthis, payload) =>
|
1425
|
-
meta: async (sthis, payload) =>
|
1426
|
-
wal: async (sthis, payload) =>
|
1386
|
+
car: async (sthis, payload) => import_cement9.Result.Ok(payload),
|
1387
|
+
file: async (sthis, payload) => import_cement9.Result.Ok(payload),
|
1388
|
+
meta: async (sthis, payload) => import_cement9.Result.Ok(sthis.txt.encode(JSON.stringify(payload))),
|
1389
|
+
wal: async (sthis, payload) => import_cement9.Result.Ok(sthis.txt.encode(JSON.stringify(payload)))
|
1427
1390
|
};
|
1428
1391
|
async function fpSerialize(sthis, env, pencoder) {
|
1429
1392
|
const encoder = {
|
@@ -1445,13 +1408,13 @@ async function fpSerialize(sthis, env, pencoder) {
|
|
1445
1408
|
}
|
1446
1409
|
async function decode2DbMetaEvents(sthis, rserializedMeta) {
|
1447
1410
|
if (rserializedMeta.isErr()) {
|
1448
|
-
return
|
1411
|
+
return import_cement9.Result.Err(rserializedMeta.Err());
|
1449
1412
|
}
|
1450
1413
|
const serializedMeta = rserializedMeta.unwrap();
|
1451
1414
|
if (!Array.isArray(serializedMeta)) {
|
1452
1415
|
return sthis.logger.Debug().Any("metaEntries", serializedMeta).Msg("No data in MetaEntries").ResultError();
|
1453
1416
|
}
|
1454
|
-
return
|
1417
|
+
return import_cement9.Result.Ok(
|
1455
1418
|
await Promise.all(
|
1456
1419
|
serializedMeta.map(async (metaEntry) => {
|
1457
1420
|
const eventBlock = await (0, import_clock.decodeEventBlock)(import_base64.base64pad.decode(metaEntry.data));
|
@@ -1473,10 +1436,10 @@ function toCid(sthis, link) {
|
|
1473
1436
|
}
|
1474
1437
|
async function decode2WalState(sthis, rserializedWAL) {
|
1475
1438
|
if (rserializedWAL.isErr()) {
|
1476
|
-
return
|
1439
|
+
return import_cement9.Result.Err(rserializedWAL.Err());
|
1477
1440
|
}
|
1478
1441
|
const serializedWAL = rserializedWAL.unwrap();
|
1479
|
-
return
|
1442
|
+
return import_cement9.Result.Ok({
|
1480
1443
|
fileOperations: (serializedWAL.fileOperations || []).map((fop) => ({
|
1481
1444
|
cid: toCid(sthis, fop.cid),
|
1482
1445
|
public: !!fop.public
|
@@ -1490,16 +1453,16 @@ async function decode2WalState(sthis, rserializedWAL) {
|
|
1490
1453
|
});
|
1491
1454
|
}
|
1492
1455
|
var defaultDecoder = {
|
1493
|
-
car: async (sthis, payload) =>
|
1494
|
-
file: async (sthis, payload) =>
|
1495
|
-
meta: async (sthis, payload) => (0,
|
1496
|
-
wal: async (sthis, payload) => (0,
|
1456
|
+
car: async (sthis, payload) => import_cement9.Result.Ok(payload),
|
1457
|
+
file: async (sthis, payload) => import_cement9.Result.Ok(payload),
|
1458
|
+
meta: async (sthis, payload) => (0, import_cement9.exception2Result)(() => JSON.parse(sthis.txt.decode(payload))),
|
1459
|
+
wal: async (sthis, payload) => (0, import_cement9.exception2Result)(() => JSON.parse(sthis.txt.decode(payload)))
|
1497
1460
|
};
|
1498
1461
|
function makeFPEnvelope(type, payload) {
|
1499
1462
|
if (payload.isErr()) {
|
1500
|
-
return
|
1463
|
+
return import_cement9.Result.Err(payload.Err());
|
1501
1464
|
}
|
1502
|
-
return
|
1465
|
+
return import_cement9.Result.Ok({
|
1503
1466
|
type,
|
1504
1467
|
payload: payload.unwrap()
|
1505
1468
|
});
|
@@ -1507,7 +1470,7 @@ function makeFPEnvelope(type, payload) {
|
|
1507
1470
|
async function fpDeserialize(sthis, url, intoRaw, pdecoder) {
|
1508
1471
|
const rraw = await coercePromiseIntoUint8(intoRaw);
|
1509
1472
|
if (rraw.isErr()) {
|
1510
|
-
return
|
1473
|
+
return import_cement9.Result.Err(rraw.Err());
|
1511
1474
|
}
|
1512
1475
|
const raw2 = rraw.unwrap();
|
1513
1476
|
const decoder = {
|
@@ -1558,12 +1521,12 @@ var DefSerdeGateway = class {
|
|
1558
1521
|
}
|
1559
1522
|
async get({ loader: { sthis }, decoder }, url) {
|
1560
1523
|
const res = await this.gw.get(url, sthis);
|
1561
|
-
if (res.isErr()) return
|
1524
|
+
if (res.isErr()) return import_cement10.Result.Err(res.Err());
|
1562
1525
|
return fpDeserialize(sthis, url, res, decoder);
|
1563
1526
|
}
|
1564
1527
|
async subscribe({ loader: { sthis }, decoder }, url, callback) {
|
1565
1528
|
function rawCallback(raw2) {
|
1566
|
-
return fpDeserialize(sthis, url,
|
1529
|
+
return fpDeserialize(sthis, url, import_cement10.Result.Ok(raw2), decoder).then((res) => {
|
1567
1530
|
if (res.isErr()) {
|
1568
1531
|
sthis.logger.Error().Err(res).Msg("Failed to deserialize");
|
1569
1532
|
return;
|
@@ -1573,12 +1536,12 @@ var DefSerdeGateway = class {
|
|
1573
1536
|
}
|
1574
1537
|
if (!this.gw.subscribe) {
|
1575
1538
|
if (!url.hasParam(PARAM.SELF_REFLECT)) {
|
1576
|
-
return
|
1539
|
+
return import_cement10.Result.Ok(() => {
|
1577
1540
|
});
|
1578
1541
|
}
|
1579
1542
|
const urlWithoutKey = url.build().delParam(PARAM.KEY).delParam(PARAM.SELF_REFLECT).toString();
|
1580
1543
|
this.subscribeFn.set(urlWithoutKey, rawCallback);
|
1581
|
-
return
|
1544
|
+
return import_cement10.Result.Ok(() => {
|
1582
1545
|
this.subscribeFn.delete(urlWithoutKey);
|
1583
1546
|
});
|
1584
1547
|
}
|
@@ -1655,10 +1618,10 @@ function defaultGatewayFactoryItem() {
|
|
1655
1618
|
return found;
|
1656
1619
|
}
|
1657
1620
|
function defaultURI(sthis) {
|
1658
|
-
const rt = (0,
|
1659
|
-
return
|
1621
|
+
const rt = (0, import_cement11.runtimeFn)();
|
1622
|
+
return import_cement11.BuildURI.from("file://").pathname(`${sthis.env.get("HOME")}/.fireproof/${FILESTORE_VERSION.replace(/-.*$/, "")}`).setParam(PARAM.VERSION, FILESTORE_VERSION).setParam(PARAM.URL_GEN, "default").setParam(PARAM.RUNTIME, rt.isNodeIsh ? "node" : rt.isDeno ? "deno" : "unknown").URI();
|
1660
1623
|
}
|
1661
|
-
if ((0,
|
1624
|
+
if ((0, import_cement11.runtimeFn)().isNodeIsh || (0, import_cement11.runtimeFn)().isDeno) {
|
1662
1625
|
registerStoreProtocol({
|
1663
1626
|
protocol: "file:",
|
1664
1627
|
isDefault: true,
|
@@ -1668,12 +1631,12 @@ if ((0, import_cement10.runtimeFn)().isNodeIsh || (0, import_cement10.runtimeFn)
|
|
1668
1631
|
}
|
1669
1632
|
});
|
1670
1633
|
}
|
1671
|
-
if ((0,
|
1634
|
+
if ((0, import_cement11.runtimeFn)().isBrowser) {
|
1672
1635
|
registerStoreProtocol({
|
1673
1636
|
protocol: "indexeddb:",
|
1674
1637
|
isDefault: true,
|
1675
1638
|
defaultURI: () => {
|
1676
|
-
return
|
1639
|
+
return import_cement11.BuildURI.from("indexeddb://").pathname("fp").setParam(PARAM.VERSION, INDEXEDDB_VERSION).setParam(PARAM.RUNTIME, "browser").URI();
|
1677
1640
|
},
|
1678
1641
|
gateway: async () => {
|
1679
1642
|
const { GatewayImpl } = await import("@fireproof/core/indexeddb");
|
@@ -1686,7 +1649,7 @@ registerStoreProtocol({
|
|
1686
1649
|
protocol: "memory:",
|
1687
1650
|
isDefault: false,
|
1688
1651
|
defaultURI: () => {
|
1689
|
-
return
|
1652
|
+
return import_cement11.BuildURI.from("memory://").pathname("ram").URI();
|
1690
1653
|
},
|
1691
1654
|
gateway: async (sthis) => {
|
1692
1655
|
return new MemoryGateway(sthis, memory);
|
@@ -1699,44 +1662,44 @@ __export(block_exports, {
|
|
1699
1662
|
Block: () => Block,
|
1700
1663
|
create: () => create,
|
1701
1664
|
createUnsafe: () => createUnsafe,
|
1702
|
-
decode: () =>
|
1703
|
-
encode: () =>
|
1665
|
+
decode: () => decode2,
|
1666
|
+
encode: () => encode2
|
1704
1667
|
});
|
1705
1668
|
var import_multiformats2 = require("multiformats");
|
1706
1669
|
var import_block = require("multiformats/block");
|
1707
1670
|
var Block = import_block.Block;
|
1708
|
-
async function
|
1671
|
+
async function decode2({
|
1709
1672
|
bytes,
|
1710
1673
|
codec: codec3,
|
1711
|
-
hasher:
|
1674
|
+
hasher: hasher7
|
1712
1675
|
}) {
|
1713
1676
|
if (bytes == null) throw new Error('Missing required argument "bytes"');
|
1714
|
-
if (codec3 == null ||
|
1677
|
+
if (codec3 == null || hasher7 == null) throw new Error("Missing required argument: codec or hasher");
|
1715
1678
|
const value = await Promise.resolve(codec3.decode(bytes));
|
1716
1679
|
let toHash = bytes;
|
1717
1680
|
if (codec3.valueToHashBytes) {
|
1718
1681
|
toHash = await Promise.resolve(codec3.valueToHashBytes(value));
|
1719
1682
|
}
|
1720
|
-
const hash = await
|
1683
|
+
const hash = await hasher7.digest(toHash);
|
1721
1684
|
const cid = import_multiformats2.CID.create(1, codec3.code, hash);
|
1722
1685
|
return new import_block.Block({ value, bytes: toHash, cid });
|
1723
1686
|
}
|
1724
|
-
async function
|
1687
|
+
async function encode2({
|
1725
1688
|
value,
|
1726
1689
|
codec: codec3,
|
1727
|
-
hasher:
|
1690
|
+
hasher: hasher7
|
1728
1691
|
}) {
|
1729
1692
|
if (typeof value === "undefined") throw new Error('Missing required argument "value"');
|
1730
|
-
if (codec3 == null ||
|
1693
|
+
if (codec3 == null || hasher7 == null) throw new Error("Missing required argument: codec or hasher");
|
1731
1694
|
let bytes;
|
1732
1695
|
let hash;
|
1733
1696
|
if (codec3.bytesToHash) {
|
1734
1697
|
const hashable = await Promise.resolve(codec3.bytesToHash(value));
|
1735
|
-
hash = await
|
1698
|
+
hash = await hasher7.digest(hashable);
|
1736
1699
|
bytes = await Promise.resolve(codec3.encode(value));
|
1737
1700
|
} else {
|
1738
1701
|
bytes = await Promise.resolve(codec3.encode(value));
|
1739
|
-
hash = await
|
1702
|
+
hash = await hasher7.digest(bytes);
|
1740
1703
|
}
|
1741
1704
|
const cid = import_multiformats2.CID.create(1, codec3.code, hash);
|
1742
1705
|
return new Block({ value, bytes, cid });
|
@@ -1744,13 +1707,13 @@ async function encode({
|
|
1744
1707
|
async function create({
|
1745
1708
|
bytes,
|
1746
1709
|
cid,
|
1747
|
-
hasher:
|
1710
|
+
hasher: hasher7,
|
1748
1711
|
codec: codec3
|
1749
1712
|
}) {
|
1750
1713
|
if (bytes == null) throw new Error('Missing required argument "bytes"');
|
1751
|
-
if (
|
1714
|
+
if (hasher7 == null) throw new Error('Missing required argument "hasher"');
|
1752
1715
|
const value = await Promise.resolve(codec3.decode(bytes));
|
1753
|
-
const hash = await
|
1716
|
+
const hash = await hasher7.digest(bytes);
|
1754
1717
|
if (!import_multiformats2.bytes.equals(cid.multihash.bytes, hash.bytes)) {
|
1755
1718
|
throw new Error("CID hash does not match bytes");
|
1756
1719
|
}
|
@@ -1777,11 +1740,11 @@ async function createUnsafe({
|
|
1777
1740
|
}
|
1778
1741
|
|
1779
1742
|
// src/indexer-helpers.ts
|
1780
|
-
var
|
1743
|
+
var import_sha22 = require("multiformats/hashes/sha2");
|
1781
1744
|
var codec = __toESM(require("@ipld/dag-cbor"), 1);
|
1782
1745
|
var import_charwise = __toESM(require("charwise"), 1);
|
1783
1746
|
var DbIndex = __toESM(require("prolly-trees/db-index"), 1);
|
1784
|
-
var
|
1747
|
+
var import_utils9 = require("prolly-trees/utils");
|
1785
1748
|
var import_cache = require("prolly-trees/cache");
|
1786
1749
|
var IndexTree = class {
|
1787
1750
|
};
|
@@ -1789,17 +1752,17 @@ function refCompare(aRef, bRef) {
|
|
1789
1752
|
if (Number.isNaN(aRef)) return -1;
|
1790
1753
|
if (Number.isNaN(bRef)) throw new Error("ref may not be Infinity or NaN");
|
1791
1754
|
if (aRef === Infinity) return 1;
|
1792
|
-
return (0,
|
1755
|
+
return (0, import_utils9.simpleCompare)(aRef, bRef);
|
1793
1756
|
}
|
1794
1757
|
function compare(a, b) {
|
1795
1758
|
const [aKey, aRef] = a;
|
1796
1759
|
const [bKey, bRef] = b;
|
1797
|
-
const comp = (0,
|
1760
|
+
const comp = (0, import_utils9.simpleCompare)(aKey, bKey);
|
1798
1761
|
if (comp !== 0) return comp;
|
1799
1762
|
return refCompare(aRef, bRef);
|
1800
1763
|
}
|
1801
|
-
var byKeyOpts = { cache: import_cache.nocache, chunker: (0,
|
1802
|
-
var byIdOpts = { cache: import_cache.nocache, chunker: (0,
|
1764
|
+
var byKeyOpts = { cache: import_cache.nocache, chunker: (0, import_utils9.bf)(30), codec, hasher: import_sha22.sha256, compare };
|
1765
|
+
var byIdOpts = { cache: import_cache.nocache, chunker: (0, import_utils9.bf)(30), codec, hasher: import_sha22.sha256, compare: import_utils9.simpleCompare };
|
1803
1766
|
function indexEntriesForChanges(changes, mapFn) {
|
1804
1767
|
const indexEntries = [];
|
1805
1768
|
changes.forEach(({ id: key, value, del }) => {
|
@@ -1827,7 +1790,7 @@ function makeProllyGetBlock(blocks) {
|
|
1827
1790
|
const block = await blocks.get(address);
|
1828
1791
|
if (!block) throw new Error(`Missing block ${address.toString()}`);
|
1829
1792
|
const { cid, bytes } = block;
|
1830
|
-
return create({ cid, bytes, hasher:
|
1793
|
+
return create({ cid, bytes, hasher: import_sha22.sha256, codec });
|
1831
1794
|
};
|
1832
1795
|
}
|
1833
1796
|
async function bulkIndex(logger, tblocks, inIndex, indexEntries, opts) {
|
@@ -2242,7 +2205,7 @@ var DatabaseImpl = class {
|
|
2242
2205
|
};
|
2243
2206
|
|
2244
2207
|
// src/crdt.ts
|
2245
|
-
var
|
2208
|
+
var import_cement20 = require("@adviser/cement");
|
2246
2209
|
|
2247
2210
|
// src/blockstore/index.ts
|
2248
2211
|
var blockstore_exports = {};
|
@@ -2333,24 +2296,24 @@ var WALActiveStore = class extends BaseActiveStore {
|
|
2333
2296
|
};
|
2334
2297
|
|
2335
2298
|
// src/blockstore/store-factory.ts
|
2336
|
-
var
|
2299
|
+
var import_cement18 = require("@adviser/cement");
|
2337
2300
|
|
2338
2301
|
// src/blockstore/store.ts
|
2339
|
-
var
|
2302
|
+
var import_cement17 = require("@adviser/cement");
|
2340
2303
|
|
2341
2304
|
// src/blockstore/loader.ts
|
2342
2305
|
var import_p_limit = __toESM(require("p-limit"), 1);
|
2343
2306
|
var import_reader = require("@ipld/car/reader");
|
2344
|
-
var
|
2307
|
+
var import_cement15 = require("@adviser/cement");
|
2345
2308
|
|
2346
2309
|
// src/blockstore/loader-helpers.ts
|
2347
|
-
var
|
2310
|
+
var import_sha23 = require("multiformats/hashes/sha2");
|
2348
2311
|
var dagCodec = __toESM(require("@ipld/dag-cbor"), 1);
|
2349
2312
|
async function parseCarFile(reader, logger) {
|
2350
2313
|
const roots = await reader.roots;
|
2351
2314
|
const header = reader.blocks.find((i) => i.cid.equals(roots[0]));
|
2352
2315
|
if (!header) throw logger.Error().Msg("missing header block").AsError();
|
2353
|
-
const dec = await
|
2316
|
+
const dec = await decode2({ bytes: header.bytes, hasher: import_sha23.sha256, codec: dagCodec });
|
2354
2317
|
const fpvalue = dec.value;
|
2355
2318
|
if (fpvalue && !fpvalue.fp) {
|
2356
2319
|
throw logger.Error().Msg("missing fp").AsError();
|
@@ -2360,7 +2323,7 @@ async function parseCarFile(reader, logger) {
|
|
2360
2323
|
|
2361
2324
|
// src/blockstore/transaction.ts
|
2362
2325
|
var import_block4 = require("@fireproof/vendor/@web3-storage/pail/block");
|
2363
|
-
var
|
2326
|
+
var import_cement12 = require("@adviser/cement");
|
2364
2327
|
var CarTransactionImpl = class {
|
2365
2328
|
#memblock = new import_block4.MemoryBlockstore();
|
2366
2329
|
#hackUnshift;
|
@@ -2415,7 +2378,7 @@ function defaultedBlockstoreRuntime(sthis, opts, component, ctx) {
|
|
2415
2378
|
...opts,
|
2416
2379
|
logger,
|
2417
2380
|
keyBag: opts.keyBag || {},
|
2418
|
-
crypto: (0,
|
2381
|
+
crypto: (0, import_cement12.toCryptoRuntime)(opts.crypto),
|
2419
2382
|
storeUrls: opts.storeUrls,
|
2420
2383
|
taskManager: {
|
2421
2384
|
removeAfter: 3,
|
@@ -2591,7 +2554,7 @@ var CompactionFetcher = class {
|
|
2591
2554
|
};
|
2592
2555
|
|
2593
2556
|
// src/blockstore/commit-queue.ts
|
2594
|
-
var
|
2557
|
+
var import_cement13 = require("@adviser/cement");
|
2595
2558
|
var CommitQueue = class {
|
2596
2559
|
constructor() {
|
2597
2560
|
this.queue = [];
|
@@ -2602,7 +2565,7 @@ var CommitQueue = class {
|
|
2602
2565
|
if (this.queue.length === 0 && !this.processing) {
|
2603
2566
|
return Promise.resolve();
|
2604
2567
|
}
|
2605
|
-
const fn = new
|
2568
|
+
const fn = new import_cement13.Future();
|
2606
2569
|
this._waitIdleItems.add(fn);
|
2607
2570
|
return fn.asPromise();
|
2608
2571
|
}
|
@@ -2644,7 +2607,7 @@ var CommitQueue = class {
|
|
2644
2607
|
// src/blockstore/commitor.ts
|
2645
2608
|
var CBW = __toESM(require("@ipld/car/buffer-writer"), 1);
|
2646
2609
|
var dagCodec2 = __toESM(require("@ipld/dag-cbor"), 1);
|
2647
|
-
var
|
2610
|
+
var import_sha24 = require("multiformats/hashes/sha2");
|
2648
2611
|
async function encodeCarFile(roots, t, codec3) {
|
2649
2612
|
let size = 0;
|
2650
2613
|
const headerSize = CBW.headerLength({ roots });
|
@@ -2661,7 +2624,7 @@ async function encodeCarFile(roots, t, codec3) {
|
|
2661
2624
|
writer.write({ cid, bytes });
|
2662
2625
|
}
|
2663
2626
|
writer.close();
|
2664
|
-
return await
|
2627
|
+
return await encode2({ value: writer.bytes, hasher: import_sha24.sha256, codec: codec3 });
|
2665
2628
|
}
|
2666
2629
|
async function createCarFile(encoder, cid, t) {
|
2667
2630
|
return encodeCarFile([cid], t, encoder);
|
@@ -2699,9 +2662,9 @@ function makeCarHeader(meta, cars, compact = false) {
|
|
2699
2662
|
return { ...coreHeader, meta };
|
2700
2663
|
}
|
2701
2664
|
async function encodeCarHeader(fp) {
|
2702
|
-
return await
|
2665
|
+
return await encode2({
|
2703
2666
|
value: { fp },
|
2704
|
-
hasher:
|
2667
|
+
hasher: import_sha24.sha256,
|
2705
2668
|
codec: dagCodec2
|
2706
2669
|
});
|
2707
2670
|
}
|
@@ -2744,7 +2707,7 @@ async function prepareCarFiles(encoder, threshold, rootBlock, t) {
|
|
2744
2707
|
}
|
2745
2708
|
|
2746
2709
|
// src/blockstore/loader.ts
|
2747
|
-
var
|
2710
|
+
var import_sha25 = require("multiformats/hashes/sha2");
|
2748
2711
|
|
2749
2712
|
// src/blockstore/task-manager.ts
|
2750
2713
|
var TaskManager = class {
|
@@ -2795,7 +2758,7 @@ var TaskManager = class {
|
|
2795
2758
|
};
|
2796
2759
|
|
2797
2760
|
// src/blockstore/attachable-store.ts
|
2798
|
-
var
|
2761
|
+
var import_cement14 = require("@adviser/cement");
|
2799
2762
|
var AttachedImpl = class {
|
2800
2763
|
constructor(gws, stores, unreg) {
|
2801
2764
|
this.gatewayUrls = gws;
|
@@ -2962,7 +2925,7 @@ async function createAttachedStores(urlOrGup, arOrLoadable, name = "local") {
|
|
2962
2925
|
if (!urlOrGup) {
|
2963
2926
|
throw new Error("urlOrGup is required");
|
2964
2927
|
}
|
2965
|
-
if ((0,
|
2928
|
+
if ((0, import_cement14.isCoerceURI)(urlOrGup)) {
|
2966
2929
|
const url = urlOrGup;
|
2967
2930
|
gup = {
|
2968
2931
|
car: { url },
|
@@ -2980,7 +2943,7 @@ async function createAttachedStores(urlOrGup, arOrLoadable, name = "local") {
|
|
2980
2943
|
}
|
2981
2944
|
var AttachedRemotesImpl = class {
|
2982
2945
|
constructor(loadable) {
|
2983
|
-
this._remotes = new
|
2946
|
+
this._remotes = new import_cement14.KeyedResolvOnce();
|
2984
2947
|
this.loadable = loadable;
|
2985
2948
|
}
|
2986
2949
|
forRemotes(action) {
|
@@ -2996,8 +2959,8 @@ var AttachedRemotesImpl = class {
|
|
2996
2959
|
return new ActiveStoreImpl(this._local.stores, this);
|
2997
2960
|
}
|
2998
2961
|
activate(store) {
|
2999
|
-
if ((0,
|
3000
|
-
const activateUrl =
|
2962
|
+
if ((0, import_cement14.isCoerceURI)(store)) {
|
2963
|
+
const activateUrl = import_cement14.URI.from(store);
|
3001
2964
|
let maxScore = 0;
|
3002
2965
|
let maxStore;
|
3003
2966
|
for (const { value } of this._remotes.values()) {
|
@@ -3033,19 +2996,19 @@ var AttachedRemotesImpl = class {
|
|
3033
2996
|
const gws = {
|
3034
2997
|
car: {
|
3035
2998
|
...gwp.car,
|
3036
|
-
url: ensureURIDefaults(this.loadable.sthis, attached.name, gwp.car.url,
|
2999
|
+
url: ensureURIDefaults(this.loadable.sthis, attached.name, gwp.car.url, import_cement14.URI.from(gwp.car.url), "car")
|
3037
3000
|
},
|
3038
3001
|
file: {
|
3039
3002
|
...gwp.file,
|
3040
|
-
url: ensureURIDefaults(this.loadable.sthis, attached.name, void 0,
|
3003
|
+
url: ensureURIDefaults(this.loadable.sthis, attached.name, void 0, import_cement14.URI.from(gwp.file.url), "file", { file: true })
|
3041
3004
|
},
|
3042
3005
|
meta: {
|
3043
3006
|
...gwp.meta,
|
3044
|
-
url: ensureURIDefaults(this.loadable.sthis, attached.name, void 0,
|
3007
|
+
url: ensureURIDefaults(this.loadable.sthis, attached.name, void 0, import_cement14.URI.from(gwp.meta.url), "meta")
|
3045
3008
|
},
|
3046
3009
|
wal: gwp.wal ? {
|
3047
3010
|
...gwp.wal,
|
3048
|
-
url: ensureURIDefaults(this.loadable.sthis, attached.name, void 0,
|
3011
|
+
url: ensureURIDefaults(this.loadable.sthis, attached.name, void 0, import_cement14.URI.from(gwp.wal.url), "wal")
|
3049
3012
|
} : void 0
|
3050
3013
|
};
|
3051
3014
|
const key = JSON.stringify(
|
@@ -3086,7 +3049,7 @@ function carLogIncludesGroup(list, cids) {
|
|
3086
3049
|
(arr) => cidSet === arr.map((cid) => cid.toString()).sort().join(",")
|
3087
3050
|
);
|
3088
3051
|
}
|
3089
|
-
function uniqueCids(list, remove = new
|
3052
|
+
function uniqueCids(list, remove = new import_cement15.LRUSet()) {
|
3090
3053
|
const byString = /* @__PURE__ */ new Map();
|
3091
3054
|
for (const cid of list) {
|
3092
3055
|
if (remove.has(cid.toString())) continue;
|
@@ -3100,7 +3063,7 @@ var Loader = class {
|
|
3100
3063
|
this.isCompacting = false;
|
3101
3064
|
this.maxConcurrentWrite = (0, import_p_limit.default)(1);
|
3102
3065
|
this.carLog = new CarLog();
|
3103
|
-
this.onceReady = new
|
3066
|
+
this.onceReady = new import_cement15.ResolveOnce();
|
3104
3067
|
this.sthis = sthis;
|
3105
3068
|
this.ebOpts = defaultedBlockstoreRuntime(
|
3106
3069
|
sthis,
|
@@ -3111,15 +3074,15 @@ var Loader = class {
|
|
3111
3074
|
"Loader"
|
3112
3075
|
);
|
3113
3076
|
this.logger = ensureLogger(sthis, "Loader");
|
3114
|
-
this.cidCache = new
|
3077
|
+
this.cidCache = new import_cement15.KeyedResolvOnce({
|
3115
3078
|
lru: {
|
3116
3079
|
maxEntries: parseInt(this.ebOpts.storeUrls.car.getParam(PARAM.CAR_CACHE_SIZE, "1000"), 10)
|
3117
3080
|
}
|
3118
3081
|
});
|
3119
|
-
this.seenMeta = new
|
3082
|
+
this.seenMeta = new import_cement15.LRUSet({
|
3120
3083
|
maxEntries: parseInt(this.ebOpts.storeUrls.meta.getParam(PARAM.CAR_META_CACHE_SIZE, "1000"), 10)
|
3121
3084
|
});
|
3122
|
-
this.seenCompacted = new
|
3085
|
+
this.seenCompacted = new import_cement15.LRUSet({
|
3123
3086
|
maxEntries: parseInt(this.ebOpts.storeUrls.car.getParam(PARAM.CAR_COMPACT_CACHE_SIZE, "1000"), 10)
|
3124
3087
|
});
|
3125
3088
|
this.maxConcurrentCarReader = (0, import_p_limit.default)(parseInt(this.ebOpts.storeUrls.car.getParam(PARAM.CAR_PARALLEL, "5"), 10));
|
@@ -3424,7 +3387,7 @@ var Loader = class {
|
|
3424
3387
|
if (!loadedCar) {
|
3425
3388
|
throw this.logger.Error().Url(store.local().url()).Str("cid", carCidStr).Msg("missing car files").AsError();
|
3426
3389
|
}
|
3427
|
-
const bytes = await
|
3390
|
+
const bytes = await decode2({ bytes: loadedCar.bytes, hasher: import_sha25.sha256, codec: (await activeStore.keyedCrypto()).codec() });
|
3428
3391
|
const rawReader = await import_reader.CarReader.fromBytes(bytes.value.data);
|
3429
3392
|
const blocks = [];
|
3430
3393
|
for await (const block of rawReader.blocks()) {
|
@@ -3465,7 +3428,7 @@ __export(keyed_crypto_exports, {
|
|
3465
3428
|
keyedCryptoFactory: () => keyedCryptoFactory
|
3466
3429
|
});
|
3467
3430
|
var import_base583 = require("multiformats/bases/base58");
|
3468
|
-
var
|
3431
|
+
var import_sha26 = require("multiformats/hashes/sha2");
|
3469
3432
|
var CBOR = __toESM(require("cborg"), 1);
|
3470
3433
|
var generateIV = {
|
3471
3434
|
random: {
|
@@ -3480,7 +3443,7 @@ var generateIV = {
|
|
3480
3443
|
},
|
3481
3444
|
hash: {
|
3482
3445
|
calc: async (ko, crypto, data) => {
|
3483
|
-
const hash = await
|
3446
|
+
const hash = await import_sha26.sha256.digest(data);
|
3484
3447
|
const hashBytes = new Uint8Array(hash.bytes);
|
3485
3448
|
const hashArray = new Uint8Array(ko.ivLength);
|
3486
3449
|
for (let i = 0; i < hashBytes.length; i++) {
|
@@ -3668,39 +3631,39 @@ var import_p_retry = __toESM(require("p-retry"), 1);
|
|
3668
3631
|
var import_p_map = __toESM(require("p-map"), 1);
|
3669
3632
|
|
3670
3633
|
// src/blockstore/interceptor-gateway.ts
|
3671
|
-
var
|
3634
|
+
var import_cement16 = require("@adviser/cement");
|
3672
3635
|
var PassThroughGateway = class {
|
3673
3636
|
async buildUrl(ctx, url, key) {
|
3674
3637
|
const op = { url, key };
|
3675
|
-
return
|
3638
|
+
return import_cement16.Result.Ok({ op });
|
3676
3639
|
}
|
3677
3640
|
async start(ctx, url) {
|
3678
3641
|
const op = { url };
|
3679
|
-
return
|
3642
|
+
return import_cement16.Result.Ok({ op });
|
3680
3643
|
}
|
3681
3644
|
async close(ctx, url) {
|
3682
3645
|
const op = { url };
|
3683
|
-
return
|
3646
|
+
return import_cement16.Result.Ok({ op });
|
3684
3647
|
}
|
3685
3648
|
async delete(ctx, url) {
|
3686
3649
|
const op = { url };
|
3687
|
-
return
|
3650
|
+
return import_cement16.Result.Ok({ op });
|
3688
3651
|
}
|
3689
3652
|
async destroy(ctx, url) {
|
3690
3653
|
const op = { url };
|
3691
|
-
return
|
3654
|
+
return import_cement16.Result.Ok({ op });
|
3692
3655
|
}
|
3693
3656
|
async put(ctx, url, body) {
|
3694
3657
|
const op = { url, body };
|
3695
|
-
return
|
3658
|
+
return import_cement16.Result.Ok({ op });
|
3696
3659
|
}
|
3697
3660
|
async get(ctx, url) {
|
3698
3661
|
const op = { url };
|
3699
|
-
return
|
3662
|
+
return import_cement16.Result.Ok({ op });
|
3700
3663
|
}
|
3701
3664
|
async subscribe(ctx, url, callback) {
|
3702
3665
|
const op = { url, callback };
|
3703
|
-
return
|
3666
|
+
return import_cement16.Result.Ok({ op });
|
3704
3667
|
}
|
3705
3668
|
};
|
3706
3669
|
var passThrougthGateway = new PassThroughGateway();
|
@@ -3712,7 +3675,7 @@ var InterceptorGateway = class {
|
|
3712
3675
|
async buildUrl(ctx, baseUrl, key) {
|
3713
3676
|
const rret = await this.interceptor.buildUrl(ctx, baseUrl, key);
|
3714
3677
|
if (rret.isErr()) {
|
3715
|
-
return
|
3678
|
+
return import_cement16.Result.Err(rret.Err());
|
3716
3679
|
}
|
3717
3680
|
const ret = rret.unwrap();
|
3718
3681
|
if (ret.stop && ret.value) {
|
@@ -3723,7 +3686,7 @@ var InterceptorGateway = class {
|
|
3723
3686
|
async destroy(ctx, iurl) {
|
3724
3687
|
const rret = await this.interceptor.destroy(ctx, iurl);
|
3725
3688
|
if (rret.isErr()) {
|
3726
|
-
return
|
3689
|
+
return import_cement16.Result.Err(rret.Err());
|
3727
3690
|
}
|
3728
3691
|
const ret = rret.unwrap();
|
3729
3692
|
if (ret.stop && ret.value) {
|
@@ -3734,7 +3697,7 @@ var InterceptorGateway = class {
|
|
3734
3697
|
async start(ctx, url) {
|
3735
3698
|
const rret = await this.interceptor.start(ctx, url);
|
3736
3699
|
if (rret.isErr()) {
|
3737
|
-
return
|
3700
|
+
return import_cement16.Result.Err(rret.Err());
|
3738
3701
|
}
|
3739
3702
|
const ret = rret.unwrap();
|
3740
3703
|
if (ret.stop && ret.value) {
|
@@ -3745,7 +3708,7 @@ var InterceptorGateway = class {
|
|
3745
3708
|
async close(ctx, url) {
|
3746
3709
|
const rret = await this.interceptor.close(ctx, url);
|
3747
3710
|
if (rret.isErr()) {
|
3748
|
-
return
|
3711
|
+
return import_cement16.Result.Err(rret.Err());
|
3749
3712
|
}
|
3750
3713
|
const ret = rret.unwrap();
|
3751
3714
|
if (ret.stop && ret.value) {
|
@@ -3756,7 +3719,7 @@ var InterceptorGateway = class {
|
|
3756
3719
|
async put(ctx, url, fpEnv) {
|
3757
3720
|
const rret = await this.interceptor.put(ctx, url, fpEnv);
|
3758
3721
|
if (rret.isErr()) {
|
3759
|
-
return
|
3722
|
+
return import_cement16.Result.Err(rret.Err());
|
3760
3723
|
}
|
3761
3724
|
const ret = rret.unwrap();
|
3762
3725
|
if (ret.stop && ret.value) {
|
@@ -3767,7 +3730,7 @@ var InterceptorGateway = class {
|
|
3767
3730
|
async get(ctx, url) {
|
3768
3731
|
const rret = await this.interceptor.get(ctx, url);
|
3769
3732
|
if (rret.isErr()) {
|
3770
|
-
return
|
3733
|
+
return import_cement16.Result.Err(rret.Err());
|
3771
3734
|
}
|
3772
3735
|
const ret = rret.unwrap();
|
3773
3736
|
if (ret.stop && ret.value) {
|
@@ -3777,11 +3740,11 @@ var InterceptorGateway = class {
|
|
3777
3740
|
}
|
3778
3741
|
async subscribe(ctx, url, callback) {
|
3779
3742
|
if (!this.innerGW.subscribe) {
|
3780
|
-
return
|
3743
|
+
return import_cement16.Result.Err(ctx.loader.sthis.logger.Error().Url(url).Msg("subscribe not supported").AsError());
|
3781
3744
|
}
|
3782
3745
|
const rret = await this.interceptor.subscribe(ctx, url, callback);
|
3783
3746
|
if (rret.isErr()) {
|
3784
|
-
return
|
3747
|
+
return import_cement16.Result.Err(rret.Err());
|
3785
3748
|
}
|
3786
3749
|
const ret = rret.unwrap();
|
3787
3750
|
if (ret.stop && ret.value) {
|
@@ -3792,7 +3755,7 @@ var InterceptorGateway = class {
|
|
3792
3755
|
async delete(ctx, url) {
|
3793
3756
|
const rret = await this.interceptor.delete(ctx, url);
|
3794
3757
|
if (rret.isErr()) {
|
3795
|
-
return
|
3758
|
+
return import_cement16.Result.Err(rret.Err());
|
3796
3759
|
}
|
3797
3760
|
const ret = rret.unwrap();
|
3798
3761
|
if (ret.stop && ret.value) {
|
@@ -3808,9 +3771,9 @@ var InterceptorGateway = class {
|
|
3808
3771
|
// src/blockstore/store.ts
|
3809
3772
|
function guardVersion(url) {
|
3810
3773
|
if (!url.hasParam("version")) {
|
3811
|
-
return
|
3774
|
+
return import_cement17.Result.Err(`missing version: ${url.toString()}`);
|
3812
3775
|
}
|
3813
|
-
return
|
3776
|
+
return import_cement17.Result.Ok(url);
|
3814
3777
|
}
|
3815
3778
|
var BaseStoreImpl = class {
|
3816
3779
|
// readonly loader: Loadable;
|
@@ -3870,7 +3833,7 @@ var BaseStoreImpl = class {
|
|
3870
3833
|
}
|
3871
3834
|
if (this.ready) {
|
3872
3835
|
const fn = this.ready.bind(this);
|
3873
|
-
const ready = await (0,
|
3836
|
+
const ready = await (0, import_cement17.exception2Result)(fn);
|
3874
3837
|
if (ready.isErr()) {
|
3875
3838
|
await this.close();
|
3876
3839
|
return ready;
|
@@ -3977,7 +3940,7 @@ var MetaStoreImpl = class extends BaseStoreImpl {
|
|
3977
3940
|
async close() {
|
3978
3941
|
await this.gateway.close({ loader: this.loader }, this.url());
|
3979
3942
|
this._onClosed.forEach((fn) => fn());
|
3980
|
-
return
|
3943
|
+
return import_cement17.Result.Ok(void 0);
|
3981
3944
|
}
|
3982
3945
|
async destroy() {
|
3983
3946
|
this.logger.Debug().Msg("destroy");
|
@@ -4044,7 +4007,7 @@ var DataStoreImpl = class extends BaseStoreImpl {
|
|
4044
4007
|
async close() {
|
4045
4008
|
await this.gateway.close({ loader: this.loader }, this.url());
|
4046
4009
|
this._onClosed.forEach((fn) => fn());
|
4047
|
-
return
|
4010
|
+
return import_cement17.Result.Ok(void 0);
|
4048
4011
|
}
|
4049
4012
|
destroy() {
|
4050
4013
|
this.logger.Debug().Msg("destroy");
|
@@ -4069,7 +4032,7 @@ var WALStoreImpl = class extends BaseStoreImpl {
|
|
4069
4032
|
this.storeType = "wal";
|
4070
4033
|
// readonly tag: string = "rwal-base";
|
4071
4034
|
// readonly loader: Loadable;
|
4072
|
-
this._ready = new
|
4035
|
+
this._ready = new import_cement17.ResolveOnce();
|
4073
4036
|
this.walState = { operations: [], noLoaderOps: [], fileOperations: [] };
|
4074
4037
|
this.processing = void 0;
|
4075
4038
|
this.processQueue = new CommitQueue();
|
@@ -4246,7 +4209,7 @@ var WALStoreImpl = class extends BaseStoreImpl {
|
|
4246
4209
|
async close() {
|
4247
4210
|
await this.gateway.close({ loader: this.loader }, this.url());
|
4248
4211
|
this._onClosed.forEach((fn) => fn());
|
4249
|
-
return
|
4212
|
+
return import_cement17.Result.Ok(void 0);
|
4250
4213
|
}
|
4251
4214
|
destroy() {
|
4252
4215
|
this.logger.Debug().Msg("destroy");
|
@@ -4255,8 +4218,8 @@ var WALStoreImpl = class extends BaseStoreImpl {
|
|
4255
4218
|
};
|
4256
4219
|
|
4257
4220
|
// src/blockstore/store-factory.ts
|
4258
|
-
var onceGateway = new
|
4259
|
-
var gatewayInstances = new
|
4221
|
+
var onceGateway = new import_cement18.KeyedResolvOnce();
|
4222
|
+
var gatewayInstances = new import_cement18.KeyedResolvOnce();
|
4260
4223
|
async function getStartedGateway(ctx, url) {
|
4261
4224
|
return onceGateway.get(url.toString()).once(async () => {
|
4262
4225
|
const item = getGatewayFactoryItem(url.protocol);
|
@@ -4269,12 +4232,12 @@ async function getStartedGateway(ctx, url) {
|
|
4269
4232
|
};
|
4270
4233
|
const res = await ret.gateway.start(ctx, url);
|
4271
4234
|
if (res.isErr()) {
|
4272
|
-
return
|
4235
|
+
return import_cement18.Result.Err(ctx.loader.sthis.logger.Error().Result("start", res).Msg("start failed").AsError());
|
4273
4236
|
}
|
4274
4237
|
ret.url = res.Ok();
|
4275
|
-
return
|
4238
|
+
return import_cement18.Result.Ok(ret);
|
4276
4239
|
}
|
4277
|
-
return
|
4240
|
+
return import_cement18.Result.Err(ctx.loader.sthis.logger.Warn().Url(url).Msg("unsupported protocol").AsError());
|
4278
4241
|
});
|
4279
4242
|
}
|
4280
4243
|
async function carStoreFactory(ctx, uai) {
|
@@ -4378,7 +4341,7 @@ function toStoreRuntime(sthis, endeOpts = {}) {
|
|
4378
4341
|
|
4379
4342
|
// src/crdt-helpers.ts
|
4380
4343
|
var import_link2 = require("multiformats/link");
|
4381
|
-
var
|
4344
|
+
var import_sha27 = require("multiformats/hashes/sha2");
|
4382
4345
|
var codec2 = __toESM(require("@ipld/dag-cbor"), 1);
|
4383
4346
|
var import_crdt = require("@fireproof/vendor/@web3-storage/pail/crdt");
|
4384
4347
|
var import_clock3 = require("@fireproof/vendor/@web3-storage/pail/clock");
|
@@ -4465,7 +4428,7 @@ async function writeDocContent(store, blocks, update, logger) {
|
|
4465
4428
|
await processFiles(store, blocks, update.value, logger);
|
4466
4429
|
value = { doc: update.value };
|
4467
4430
|
}
|
4468
|
-
const block = await
|
4431
|
+
const block = await encode2({ value, hasher: import_sha27.sha256, codec: codec2 });
|
4469
4432
|
blocks.putSync(block.cid, block.bytes);
|
4470
4433
|
return block.cid;
|
4471
4434
|
}
|
@@ -4496,11 +4459,11 @@ async function processFileset(logger, store, blocks, files) {
|
|
4496
4459
|
for (const block of fileBlocks) {
|
4497
4460
|
t.putSync(block.cid, block.bytes);
|
4498
4461
|
}
|
4499
|
-
files[filename] = { cid, type: file.type, size: file.size };
|
4462
|
+
files[filename] = { cid, type: file.type, size: file.size, lastModified: file.lastModified };
|
4500
4463
|
} else {
|
4501
|
-
const { cid, type, size, car } = files[filename];
|
4464
|
+
const { cid, type, size, car, lastModified } = files[filename];
|
4502
4465
|
if (cid && type && size && car) {
|
4503
|
-
files[filename] = { cid, type, size, car };
|
4466
|
+
files[filename] = { cid, type, size, car, lastModified };
|
4504
4467
|
}
|
4505
4468
|
}
|
4506
4469
|
}
|
@@ -4540,15 +4503,21 @@ function readFileset(blocks, files, isPublic = false) {
|
|
4540
4503
|
fileMeta.url = `https://${fileMeta.cid.toString()}.ipfs.w3s.link/`;
|
4541
4504
|
}
|
4542
4505
|
if (fileMeta.car) {
|
4543
|
-
fileMeta.file = async () =>
|
4544
|
-
|
4545
|
-
|
4546
|
-
|
4547
|
-
|
4548
|
-
|
4549
|
-
|
4550
|
-
|
4551
|
-
|
4506
|
+
fileMeta.file = async () => {
|
4507
|
+
const result = await blocks.ebOpts.storeRuntime.decodeFile(
|
4508
|
+
{
|
4509
|
+
get: async (cid) => {
|
4510
|
+
return await blocks.getFile(throwFalsy(fileMeta.car), cid);
|
4511
|
+
}
|
4512
|
+
},
|
4513
|
+
fileMeta.cid,
|
4514
|
+
fileMeta
|
4515
|
+
);
|
4516
|
+
if (result.isErr()) {
|
4517
|
+
throw blocks.logger.Error().Any("error", result.Err()).Any("cid", fileMeta.cid).Msg("Error decoding file").AsError();
|
4518
|
+
}
|
4519
|
+
return result.unwrap();
|
4520
|
+
};
|
4552
4521
|
}
|
4553
4522
|
}
|
4554
4523
|
files[filename] = fileMeta;
|
@@ -4557,7 +4526,7 @@ function readFileset(blocks, files, isPublic = false) {
|
|
4557
4526
|
async function getValueFromLink(blocks, link, logger) {
|
4558
4527
|
const block = await blocks.get(link);
|
4559
4528
|
if (!block) throw logger.Error().Str("link", link.toString()).Msg(`Missing linked block`).AsError();
|
4560
|
-
const { value } = await
|
4529
|
+
const { value } = await decode2({ bytes: block.bytes, hasher: import_sha27.sha256, codec: codec2 });
|
4561
4530
|
const cvalue = {
|
4562
4531
|
...value,
|
4563
4532
|
cid: link
|
@@ -4683,14 +4652,14 @@ async function doCompact(blockLog, head, logger) {
|
|
4683
4652
|
async function getBlock(blocks, cidString) {
|
4684
4653
|
const block = await blocks.get((0, import_link2.parse)(cidString));
|
4685
4654
|
if (!block) throw new Error(`Missing block ${cidString}`);
|
4686
|
-
const { cid, value } = await
|
4655
|
+
const { cid, value } = await decode2({ bytes: block.bytes, codec: codec2, hasher: import_sha27.sha256 });
|
4687
4656
|
return new Block({ cid, value, bytes: block.bytes });
|
4688
4657
|
}
|
4689
4658
|
|
4690
4659
|
// src/crdt-clock.ts
|
4691
4660
|
var import_clock4 = require("@fireproof/vendor/@web3-storage/pail/clock");
|
4692
4661
|
var import_crdt2 = require("@fireproof/vendor/@web3-storage/pail/crdt");
|
4693
|
-
var
|
4662
|
+
var import_cement19 = require("@adviser/cement");
|
4694
4663
|
|
4695
4664
|
// src/apply-head-queue.ts
|
4696
4665
|
function applyHeadQueue(worker, logger) {
|
@@ -4747,7 +4716,7 @@ var CRDTClockImpl = class {
|
|
4747
4716
|
this.zoomers = /* @__PURE__ */ new Map();
|
4748
4717
|
this.watchers = /* @__PURE__ */ new Map();
|
4749
4718
|
this.emptyWatchers = /* @__PURE__ */ new Map();
|
4750
|
-
this._ready = new
|
4719
|
+
this._ready = new import_cement19.ResolveOnce();
|
4751
4720
|
this.sthis = blockstore.sthis;
|
4752
4721
|
this.blockstore = blockstore;
|
4753
4722
|
this.logger = ensureLogger(blockstore.sthis, "CRDTClock");
|
@@ -4877,7 +4846,7 @@ async function advanceBlocks(logger, newHead, tblocks, head) {
|
|
4877
4846
|
var CRDTImpl = class {
|
4878
4847
|
constructor(sthis, opts) {
|
4879
4848
|
this.indexers = /* @__PURE__ */ new Map();
|
4880
|
-
this.onceReady = new
|
4849
|
+
this.onceReady = new import_cement20.ResolveOnce();
|
4881
4850
|
this.sthis = sthis;
|
4882
4851
|
this.crdt = this;
|
4883
4852
|
this.logger = ensureLogger(sthis, "CRDT");
|
@@ -5023,7 +4992,7 @@ var Context = class {
|
|
5023
4992
|
};
|
5024
4993
|
|
5025
4994
|
// src/ledger.ts
|
5026
|
-
var ledgers = new
|
4995
|
+
var ledgers = new import_cement21.KeyedResolvOnce();
|
5027
4996
|
function keyConfigOpts(sthis, name, opts) {
|
5028
4997
|
return JSON.stringify(
|
5029
4998
|
toSortedArray({
|
@@ -5115,7 +5084,7 @@ var LedgerImpl = class {
|
|
5115
5084
|
this.shells = /* @__PURE__ */ new Set();
|
5116
5085
|
this.context = new Context();
|
5117
5086
|
this._onClosedFns = /* @__PURE__ */ new Map();
|
5118
|
-
this._ready = new
|
5087
|
+
this._ready = new import_cement21.ResolveOnce();
|
5119
5088
|
this.opts = opts;
|
5120
5089
|
this.sthis = sthis;
|
5121
5090
|
this.id = sthis.timeOrderedNextId().str;
|
@@ -5223,12 +5192,12 @@ function toStoreURIRuntime(sthis, name, sopts) {
|
|
5223
5192
|
if (!sopts.base) {
|
5224
5193
|
const fp_env = sthis.env.get("FP_STORAGE_URL");
|
5225
5194
|
if (fp_env) {
|
5226
|
-
sopts = { ...sopts, base:
|
5195
|
+
sopts = { ...sopts, base: import_cement21.BuildURI.from(fp_env).setParam(PARAM.URL_GEN, "fromEnv") };
|
5227
5196
|
} else {
|
5228
5197
|
sopts = { ...sopts, base: getDefaultURI(sthis).build().setParam(PARAM.URL_GEN, "default") };
|
5229
5198
|
}
|
5230
5199
|
}
|
5231
|
-
const base =
|
5200
|
+
const base = import_cement21.URI.from(sopts.base);
|
5232
5201
|
return {
|
5233
5202
|
idx: {
|
5234
5203
|
car: ensureURIDefaults(sthis, name, sopts.idx?.car ?? sopts.data?.car, base, "car", { idx: true }),
|
@@ -5269,7 +5238,7 @@ __export(runtime_exports, {
|
|
5269
5238
|
keysByFingerprint: () => keysByFingerprint,
|
5270
5239
|
mf: () => wait_pr_multiformats_exports,
|
5271
5240
|
registerKeyBagProviderFactory: () => registerKeyBagProviderFactory,
|
5272
|
-
runtimeFn: () =>
|
5241
|
+
runtimeFn: () => import_cement22.runtimeFn,
|
5273
5242
|
toKeyWithFingerPrint: () => toKeyWithFingerPrint
|
5274
5243
|
});
|
5275
5244
|
|
@@ -5284,7 +5253,7 @@ __export(wait_pr_multiformats_exports, {
|
|
5284
5253
|
var codec_interface_exports = {};
|
5285
5254
|
|
5286
5255
|
// src/runtime/index.ts
|
5287
|
-
var
|
5256
|
+
var import_cement22 = require("@adviser/cement");
|
5288
5257
|
|
5289
5258
|
// src/runtime/gateways/index.ts
|
5290
5259
|
var gateways_exports = {};
|
@@ -5307,6 +5276,6 @@ __export(file_exports, {
|
|
5307
5276
|
|
5308
5277
|
// src/version.ts
|
5309
5278
|
var PACKAGE_VERSION = Object.keys({
|
5310
|
-
"0.20.0-dev-preview-
|
5279
|
+
"0.20.0-dev-preview-54": "xxxx"
|
5311
5280
|
})[0];
|
5312
5281
|
//# sourceMappingURL=index.cjs.map
|