@fireproof/core 0.10.0-dev → 0.10.1-dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. package/package.json +5 -1
  2. package/.eslintrc.cjs +0 -37
  3. package/.vscode/launch.json +0 -12
  4. package/dist/crdt-helpers.browser.js +0 -4961
  5. package/dist/crdt-helpers.browser.js.map +0 -7
  6. package/dist/crdt-helpers.cjs.js +0 -4823
  7. package/dist/crdt-helpers.cjs.js.map +0 -7
  8. package/dist/crdt-helpers.esm.js +0 -4788
  9. package/dist/crdt-helpers.esm.js.map +0 -7
  10. package/dist/crdt.browser.js +0 -18214
  11. package/dist/crdt.browser.js.map +0 -7
  12. package/dist/crdt.cjs.js +0 -8692
  13. package/dist/crdt.cjs.js.map +0 -7
  14. package/dist/crdt.esm.js +0 -8682
  15. package/dist/crdt.esm.js.map +0 -7
  16. package/dist/database.browser.js +0 -18867
  17. package/dist/database.browser.js.map +0 -7
  18. package/dist/database.cjs.js +0 -9296
  19. package/dist/database.cjs.js.map +0 -7
  20. package/dist/database.esm.js +0 -9288
  21. package/dist/database.esm.js.map +0 -7
  22. package/dist/loader-helpers.browser.js +0 -6943
  23. package/dist/loader-helpers.browser.js.map +0 -7
  24. package/dist/loader-helpers.cjs.js +0 -4419
  25. package/dist/loader-helpers.cjs.js.map +0 -7
  26. package/dist/loader-helpers.esm.js +0 -4408
  27. package/dist/loader-helpers.esm.js.map +0 -7
  28. package/dist/loader.browser.js +0 -15968
  29. package/dist/loader.browser.js.map +0 -7
  30. package/dist/loader.cjs.js +0 -6667
  31. package/dist/loader.cjs.js.map +0 -7
  32. package/dist/loader.esm.js +0 -6657
  33. package/dist/loader.esm.js.map +0 -7
  34. package/dist/store-browser.browser.js +0 -1414
  35. package/dist/store-browser.browser.js.map +0 -7
  36. package/dist/store-browser.cjs.js +0 -1387
  37. package/dist/store-browser.cjs.js.map +0 -7
  38. package/dist/store-browser.esm.js +0 -1358
  39. package/dist/store-browser.esm.js.map +0 -7
  40. package/dist/store-fs.browser.js +0 -16142
  41. package/dist/store-fs.browser.js.map +0 -7
  42. package/dist/store-fs.cjs.js +0 -1171
  43. package/dist/store-fs.cjs.js.map +0 -7
  44. package/dist/store-fs.esm.js +0 -1143
  45. package/dist/store-fs.esm.js.map +0 -7
  46. package/dist/store.browser.js +0 -1113
  47. package/dist/store.browser.js.map +0 -7
  48. package/dist/store.cjs.js +0 -1126
  49. package/dist/store.cjs.js.map +0 -7
  50. package/dist/store.esm.js +0 -1097
  51. package/dist/store.esm.js.map +0 -7
  52. package/dist/transaction.browser.js +0 -17241
  53. package/dist/transaction.browser.js.map +0 -7
  54. package/dist/transaction.cjs.js +0 -7842
  55. package/dist/transaction.cjs.js.map +0 -7
  56. package/dist/transaction.esm.js +0 -7831
  57. package/dist/transaction.esm.js.map +0 -7
  58. package/dist/types.d.browser.js +0 -4
  59. package/dist/types.d.browser.js.map +0 -7
  60. package/dist/types.d.cjs.js +0 -19
  61. package/dist/types.d.cjs.js.map +0 -7
  62. package/dist/types.d.esm.js +0 -1
  63. package/dist/types.d.esm.js.map +0 -7
  64. package/scripts/analyze.js +0 -31
  65. package/scripts/build.js +0 -20
  66. package/scripts/serve.js +0 -20
  67. package/scripts/settings.js +0 -65
  68. package/scripts/test.js +0 -14
  69. package/src/crdt-helpers.ts +0 -89
  70. package/src/crdt.ts +0 -45
  71. package/src/database.ts +0 -61
  72. package/src/fireproof.ts +0 -6
  73. package/src/loader-helpers.ts +0 -53
  74. package/src/loader.ts +0 -66
  75. package/src/store-browser.ts +0 -76
  76. package/src/store-fs.ts +0 -51
  77. package/src/store.ts +0 -32
  78. package/src/transaction.ts +0 -68
  79. package/src/types.d.ts +0 -38
  80. package/test/crdt.test.js +0 -142
  81. package/test/database.test.js +0 -144
  82. package/test/fireproof.test.js +0 -50
  83. package/test/globals.d.ts +0 -4
  84. package/test/hello.test.js +0 -9
  85. package/test/helpers.js +0 -34
  86. package/test/loader.test.js +0 -112
  87. package/test/store-fs.test.js +0 -105
  88. package/test/transaction.test.js +0 -90
  89. package/tsconfig.json +0 -18
  90. package/webpack.config.cjs +0 -17
@@ -1,1171 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from2, except, desc) => {
11
- if (from2 && typeof from2 === "object" || typeof from2 === "function") {
12
- for (let key of __getOwnPropNames(from2))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from2[key], enumerable: !(desc = __getOwnPropDesc(from2, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/store-fs.ts
21
- var store_fs_exports = {};
22
- __export(store_fs_exports, {
23
- CarStoreFS: () => CarStoreFS,
24
- FORMAT: () => FORMAT,
25
- HeaderStoreFS: () => HeaderStoreFS,
26
- defaultConfig: () => defaultConfig
27
- });
28
- module.exports = __toCommonJS(store_fs_exports);
29
- var import_node_path = require("node:path");
30
- var import_node_os = require("node:os");
31
- var import_promises = require("node:fs/promises");
32
-
33
- // node_modules/multiformats/vendor/varint.js
34
- var encode_1 = encode;
35
- var MSB = 128;
36
- var REST = 127;
37
- var MSBALL = ~REST;
38
- var INT = Math.pow(2, 31);
39
- function encode(num, out, offset) {
40
- out = out || [];
41
- offset = offset || 0;
42
- var oldOffset = offset;
43
- while (num >= INT) {
44
- out[offset++] = num & 255 | MSB;
45
- num /= 128;
46
- }
47
- while (num & MSBALL) {
48
- out[offset++] = num & 255 | MSB;
49
- num >>>= 7;
50
- }
51
- out[offset] = num | 0;
52
- encode.bytes = offset - oldOffset + 1;
53
- return out;
54
- }
55
- var decode = read;
56
- var MSB$1 = 128;
57
- var REST$1 = 127;
58
- function read(buf, offset) {
59
- var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;
60
- do {
61
- if (counter >= l) {
62
- read.bytes = 0;
63
- throw new RangeError("Could not decode varint");
64
- }
65
- b = buf[counter++];
66
- res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);
67
- shift += 7;
68
- } while (b >= MSB$1);
69
- read.bytes = counter - offset;
70
- return res;
71
- }
72
- var N1 = Math.pow(2, 7);
73
- var N2 = Math.pow(2, 14);
74
- var N3 = Math.pow(2, 21);
75
- var N4 = Math.pow(2, 28);
76
- var N5 = Math.pow(2, 35);
77
- var N6 = Math.pow(2, 42);
78
- var N7 = Math.pow(2, 49);
79
- var N8 = Math.pow(2, 56);
80
- var N9 = Math.pow(2, 63);
81
- var length = function(value) {
82
- return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;
83
- };
84
- var varint = {
85
- encode: encode_1,
86
- decode,
87
- encodingLength: length
88
- };
89
- var _brrp_varint = varint;
90
- var varint_default = _brrp_varint;
91
-
92
- // node_modules/multiformats/src/varint.js
93
- var decode2 = (data, offset = 0) => {
94
- const code = varint_default.decode(data, offset);
95
- return [code, varint_default.decode.bytes];
96
- };
97
- var encodeTo = (int, target, offset = 0) => {
98
- varint_default.encode(int, target, offset);
99
- return target;
100
- };
101
- var encodingLength = (int) => {
102
- return varint_default.encodingLength(int);
103
- };
104
-
105
- // node_modules/multiformats/src/bytes.js
106
- var empty = new Uint8Array(0);
107
- var equals = (aa, bb) => {
108
- if (aa === bb)
109
- return true;
110
- if (aa.byteLength !== bb.byteLength) {
111
- return false;
112
- }
113
- for (let ii = 0; ii < aa.byteLength; ii++) {
114
- if (aa[ii] !== bb[ii]) {
115
- return false;
116
- }
117
- }
118
- return true;
119
- };
120
- var coerce = (o) => {
121
- if (o instanceof Uint8Array && o.constructor.name === "Uint8Array")
122
- return o;
123
- if (o instanceof ArrayBuffer)
124
- return new Uint8Array(o);
125
- if (ArrayBuffer.isView(o)) {
126
- return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);
127
- }
128
- throw new Error("Unknown type, must be binary type");
129
- };
130
-
131
- // node_modules/multiformats/src/hashes/digest.js
132
- var create = (code, digest) => {
133
- const size = digest.byteLength;
134
- const sizeOffset = encodingLength(code);
135
- const digestOffset = sizeOffset + encodingLength(size);
136
- const bytes = new Uint8Array(digestOffset + size);
137
- encodeTo(code, bytes, 0);
138
- encodeTo(size, bytes, sizeOffset);
139
- bytes.set(digest, digestOffset);
140
- return new Digest(code, size, digest, bytes);
141
- };
142
- var decode3 = (multihash) => {
143
- const bytes = coerce(multihash);
144
- const [code, sizeOffset] = decode2(bytes);
145
- const [size, digestOffset] = decode2(bytes.subarray(sizeOffset));
146
- const digest = bytes.subarray(sizeOffset + digestOffset);
147
- if (digest.byteLength !== size) {
148
- throw new Error("Incorrect length");
149
- }
150
- return new Digest(code, size, digest, bytes);
151
- };
152
- var equals2 = (a, b) => {
153
- if (a === b) {
154
- return true;
155
- } else {
156
- const data = (
157
- /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */
158
- b
159
- );
160
- return a.code === data.code && a.size === data.size && data.bytes instanceof Uint8Array && equals(a.bytes, data.bytes);
161
- }
162
- };
163
- var Digest = class {
164
- /**
165
- * Creates a multihash digest.
166
- *
167
- * @param {Code} code
168
- * @param {Size} size
169
- * @param {Uint8Array} digest
170
- * @param {Uint8Array} bytes
171
- */
172
- constructor(code, size, digest, bytes) {
173
- this.code = code;
174
- this.size = size;
175
- this.digest = digest;
176
- this.bytes = bytes;
177
- }
178
- };
179
-
180
- // node_modules/multiformats/vendor/base-x.js
181
- function base(ALPHABET, name) {
182
- if (ALPHABET.length >= 255) {
183
- throw new TypeError("Alphabet too long");
184
- }
185
- var BASE_MAP = new Uint8Array(256);
186
- for (var j = 0; j < BASE_MAP.length; j++) {
187
- BASE_MAP[j] = 255;
188
- }
189
- for (var i = 0; i < ALPHABET.length; i++) {
190
- var x = ALPHABET.charAt(i);
191
- var xc = x.charCodeAt(0);
192
- if (BASE_MAP[xc] !== 255) {
193
- throw new TypeError(x + " is ambiguous");
194
- }
195
- BASE_MAP[xc] = i;
196
- }
197
- var BASE = ALPHABET.length;
198
- var LEADER = ALPHABET.charAt(0);
199
- var FACTOR = Math.log(BASE) / Math.log(256);
200
- var iFACTOR = Math.log(256) / Math.log(BASE);
201
- function encode3(source) {
202
- if (source instanceof Uint8Array)
203
- ;
204
- else if (ArrayBuffer.isView(source)) {
205
- source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
206
- } else if (Array.isArray(source)) {
207
- source = Uint8Array.from(source);
208
- }
209
- if (!(source instanceof Uint8Array)) {
210
- throw new TypeError("Expected Uint8Array");
211
- }
212
- if (source.length === 0) {
213
- return "";
214
- }
215
- var zeroes = 0;
216
- var length2 = 0;
217
- var pbegin = 0;
218
- var pend = source.length;
219
- while (pbegin !== pend && source[pbegin] === 0) {
220
- pbegin++;
221
- zeroes++;
222
- }
223
- var size = (pend - pbegin) * iFACTOR + 1 >>> 0;
224
- var b58 = new Uint8Array(size);
225
- while (pbegin !== pend) {
226
- var carry = source[pbegin];
227
- var i2 = 0;
228
- for (var it1 = size - 1; (carry !== 0 || i2 < length2) && it1 !== -1; it1--, i2++) {
229
- carry += 256 * b58[it1] >>> 0;
230
- b58[it1] = carry % BASE >>> 0;
231
- carry = carry / BASE >>> 0;
232
- }
233
- if (carry !== 0) {
234
- throw new Error("Non-zero carry");
235
- }
236
- length2 = i2;
237
- pbegin++;
238
- }
239
- var it2 = size - length2;
240
- while (it2 !== size && b58[it2] === 0) {
241
- it2++;
242
- }
243
- var str = LEADER.repeat(zeroes);
244
- for (; it2 < size; ++it2) {
245
- str += ALPHABET.charAt(b58[it2]);
246
- }
247
- return str;
248
- }
249
- function decodeUnsafe(source) {
250
- if (typeof source !== "string") {
251
- throw new TypeError("Expected String");
252
- }
253
- if (source.length === 0) {
254
- return new Uint8Array();
255
- }
256
- var psz = 0;
257
- if (source[psz] === " ") {
258
- return;
259
- }
260
- var zeroes = 0;
261
- var length2 = 0;
262
- while (source[psz] === LEADER) {
263
- zeroes++;
264
- psz++;
265
- }
266
- var size = (source.length - psz) * FACTOR + 1 >>> 0;
267
- var b256 = new Uint8Array(size);
268
- while (source[psz]) {
269
- var carry = BASE_MAP[source.charCodeAt(psz)];
270
- if (carry === 255) {
271
- return;
272
- }
273
- var i2 = 0;
274
- for (var it3 = size - 1; (carry !== 0 || i2 < length2) && it3 !== -1; it3--, i2++) {
275
- carry += BASE * b256[it3] >>> 0;
276
- b256[it3] = carry % 256 >>> 0;
277
- carry = carry / 256 >>> 0;
278
- }
279
- if (carry !== 0) {
280
- throw new Error("Non-zero carry");
281
- }
282
- length2 = i2;
283
- psz++;
284
- }
285
- if (source[psz] === " ") {
286
- return;
287
- }
288
- var it4 = size - length2;
289
- while (it4 !== size && b256[it4] === 0) {
290
- it4++;
291
- }
292
- var vch = new Uint8Array(zeroes + (size - it4));
293
- var j2 = zeroes;
294
- while (it4 !== size) {
295
- vch[j2++] = b256[it4++];
296
- }
297
- return vch;
298
- }
299
- function decode5(string) {
300
- var buffer = decodeUnsafe(string);
301
- if (buffer) {
302
- return buffer;
303
- }
304
- throw new Error(`Non-${name} character`);
305
- }
306
- return {
307
- encode: encode3,
308
- decodeUnsafe,
309
- decode: decode5
310
- };
311
- }
312
- var src = base;
313
- var _brrp__multiformats_scope_baseX = src;
314
- var base_x_default = _brrp__multiformats_scope_baseX;
315
-
316
- // node_modules/multiformats/src/bases/base.js
317
- var Encoder = class {
318
- /**
319
- * @param {Base} name
320
- * @param {Prefix} prefix
321
- * @param {(bytes:Uint8Array) => string} baseEncode
322
- */
323
- constructor(name, prefix, baseEncode) {
324
- this.name = name;
325
- this.prefix = prefix;
326
- this.baseEncode = baseEncode;
327
- }
328
- /**
329
- * @param {Uint8Array} bytes
330
- * @returns {API.Multibase<Prefix>}
331
- */
332
- encode(bytes) {
333
- if (bytes instanceof Uint8Array) {
334
- return `${this.prefix}${this.baseEncode(bytes)}`;
335
- } else {
336
- throw Error("Unknown type, must be binary type");
337
- }
338
- }
339
- };
340
- var Decoder = class {
341
- /**
342
- * @param {Base} name
343
- * @param {Prefix} prefix
344
- * @param {(text:string) => Uint8Array} baseDecode
345
- */
346
- constructor(name, prefix, baseDecode) {
347
- this.name = name;
348
- this.prefix = prefix;
349
- if (prefix.codePointAt(0) === void 0) {
350
- throw new Error("Invalid prefix character");
351
- }
352
- this.prefixCodePoint = /** @type {number} */
353
- prefix.codePointAt(0);
354
- this.baseDecode = baseDecode;
355
- }
356
- /**
357
- * @param {string} text
358
- */
359
- decode(text) {
360
- if (typeof text === "string") {
361
- if (text.codePointAt(0) !== this.prefixCodePoint) {
362
- throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);
363
- }
364
- return this.baseDecode(text.slice(this.prefix.length));
365
- } else {
366
- throw Error("Can only multibase decode strings");
367
- }
368
- }
369
- /**
370
- * @template {string} OtherPrefix
371
- * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder
372
- * @returns {ComposedDecoder<Prefix|OtherPrefix>}
373
- */
374
- or(decoder) {
375
- return or(this, decoder);
376
- }
377
- };
378
- var ComposedDecoder = class {
379
- /**
380
- * @param {Decoders<Prefix>} decoders
381
- */
382
- constructor(decoders) {
383
- this.decoders = decoders;
384
- }
385
- /**
386
- * @template {string} OtherPrefix
387
- * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder
388
- * @returns {ComposedDecoder<Prefix|OtherPrefix>}
389
- */
390
- or(decoder) {
391
- return or(this, decoder);
392
- }
393
- /**
394
- * @param {string} input
395
- * @returns {Uint8Array}
396
- */
397
- decode(input) {
398
- const prefix = (
399
- /** @type {Prefix} */
400
- input[0]
401
- );
402
- const decoder = this.decoders[prefix];
403
- if (decoder) {
404
- return decoder.decode(input);
405
- } else {
406
- throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);
407
- }
408
- }
409
- };
410
- var or = (left, right) => new ComposedDecoder(
411
- /** @type {Decoders<L|R>} */
412
- {
413
- ...left.decoders || { [
414
- /** @type API.UnibaseDecoder<L> */
415
- left.prefix
416
- ]: left },
417
- ...right.decoders || { [
418
- /** @type API.UnibaseDecoder<R> */
419
- right.prefix
420
- ]: right }
421
- }
422
- );
423
- var Codec = class {
424
- /**
425
- * @param {Base} name
426
- * @param {Prefix} prefix
427
- * @param {(bytes:Uint8Array) => string} baseEncode
428
- * @param {(text:string) => Uint8Array} baseDecode
429
- */
430
- constructor(name, prefix, baseEncode, baseDecode) {
431
- this.name = name;
432
- this.prefix = prefix;
433
- this.baseEncode = baseEncode;
434
- this.baseDecode = baseDecode;
435
- this.encoder = new Encoder(name, prefix, baseEncode);
436
- this.decoder = new Decoder(name, prefix, baseDecode);
437
- }
438
- /**
439
- * @param {Uint8Array} input
440
- */
441
- encode(input) {
442
- return this.encoder.encode(input);
443
- }
444
- /**
445
- * @param {string} input
446
- */
447
- decode(input) {
448
- return this.decoder.decode(input);
449
- }
450
- };
451
- var from = ({ name, prefix, encode: encode3, decode: decode5 }) => new Codec(name, prefix, encode3, decode5);
452
- var baseX = ({ prefix, name, alphabet }) => {
453
- const { encode: encode3, decode: decode5 } = base_x_default(alphabet, name);
454
- return from({
455
- prefix,
456
- name,
457
- encode: encode3,
458
- /**
459
- * @param {string} text
460
- */
461
- decode: (text) => coerce(decode5(text))
462
- });
463
- };
464
- var decode4 = (string, alphabet, bitsPerChar, name) => {
465
- const codes = {};
466
- for (let i = 0; i < alphabet.length; ++i) {
467
- codes[alphabet[i]] = i;
468
- }
469
- let end = string.length;
470
- while (string[end - 1] === "=") {
471
- --end;
472
- }
473
- const out = new Uint8Array(end * bitsPerChar / 8 | 0);
474
- let bits = 0;
475
- let buffer = 0;
476
- let written = 0;
477
- for (let i = 0; i < end; ++i) {
478
- const value = codes[string[i]];
479
- if (value === void 0) {
480
- throw new SyntaxError(`Non-${name} character`);
481
- }
482
- buffer = buffer << bitsPerChar | value;
483
- bits += bitsPerChar;
484
- if (bits >= 8) {
485
- bits -= 8;
486
- out[written++] = 255 & buffer >> bits;
487
- }
488
- }
489
- if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {
490
- throw new SyntaxError("Unexpected end of data");
491
- }
492
- return out;
493
- };
494
- var encode2 = (data, alphabet, bitsPerChar) => {
495
- const pad = alphabet[alphabet.length - 1] === "=";
496
- const mask = (1 << bitsPerChar) - 1;
497
- let out = "";
498
- let bits = 0;
499
- let buffer = 0;
500
- for (let i = 0; i < data.length; ++i) {
501
- buffer = buffer << 8 | data[i];
502
- bits += 8;
503
- while (bits > bitsPerChar) {
504
- bits -= bitsPerChar;
505
- out += alphabet[mask & buffer >> bits];
506
- }
507
- }
508
- if (bits) {
509
- out += alphabet[mask & buffer << bitsPerChar - bits];
510
- }
511
- if (pad) {
512
- while (out.length * bitsPerChar & 7) {
513
- out += "=";
514
- }
515
- }
516
- return out;
517
- };
518
- var rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {
519
- return from({
520
- prefix,
521
- name,
522
- encode(input) {
523
- return encode2(input, alphabet, bitsPerChar);
524
- },
525
- decode(input) {
526
- return decode4(input, alphabet, bitsPerChar, name);
527
- }
528
- });
529
- };
530
-
531
- // node_modules/multiformats/src/bases/base58.js
532
- var base58btc = baseX({
533
- name: "base58btc",
534
- prefix: "z",
535
- alphabet: "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
536
- });
537
- var base58flickr = baseX({
538
- name: "base58flickr",
539
- prefix: "Z",
540
- alphabet: "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
541
- });
542
-
543
- // node_modules/multiformats/src/bases/base32.js
544
- var base32 = rfc4648({
545
- prefix: "b",
546
- name: "base32",
547
- alphabet: "abcdefghijklmnopqrstuvwxyz234567",
548
- bitsPerChar: 5
549
- });
550
- var base32upper = rfc4648({
551
- prefix: "B",
552
- name: "base32upper",
553
- alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",
554
- bitsPerChar: 5
555
- });
556
- var base32pad = rfc4648({
557
- prefix: "c",
558
- name: "base32pad",
559
- alphabet: "abcdefghijklmnopqrstuvwxyz234567=",
560
- bitsPerChar: 5
561
- });
562
- var base32padupper = rfc4648({
563
- prefix: "C",
564
- name: "base32padupper",
565
- alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",
566
- bitsPerChar: 5
567
- });
568
- var base32hex = rfc4648({
569
- prefix: "v",
570
- name: "base32hex",
571
- alphabet: "0123456789abcdefghijklmnopqrstuv",
572
- bitsPerChar: 5
573
- });
574
- var base32hexupper = rfc4648({
575
- prefix: "V",
576
- name: "base32hexupper",
577
- alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUV",
578
- bitsPerChar: 5
579
- });
580
- var base32hexpad = rfc4648({
581
- prefix: "t",
582
- name: "base32hexpad",
583
- alphabet: "0123456789abcdefghijklmnopqrstuv=",
584
- bitsPerChar: 5
585
- });
586
- var base32hexpadupper = rfc4648({
587
- prefix: "T",
588
- name: "base32hexpadupper",
589
- alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUV=",
590
- bitsPerChar: 5
591
- });
592
- var base32z = rfc4648({
593
- prefix: "h",
594
- name: "base32z",
595
- alphabet: "ybndrfg8ejkmcpqxot1uwisza345h769",
596
- bitsPerChar: 5
597
- });
598
-
599
- // node_modules/multiformats/src/cid.js
600
- var format = (link, base2) => {
601
- const { bytes, version } = link;
602
- switch (version) {
603
- case 0:
604
- return toStringV0(
605
- bytes,
606
- baseCache(link),
607
- /** @type {API.MultibaseEncoder<"z">} */
608
- base2 || base58btc.encoder
609
- );
610
- default:
611
- return toStringV1(
612
- bytes,
613
- baseCache(link),
614
- /** @type {API.MultibaseEncoder<Prefix>} */
615
- base2 || base32.encoder
616
- );
617
- }
618
- };
619
- var cache = /* @__PURE__ */ new WeakMap();
620
- var baseCache = (cid) => {
621
- const baseCache2 = cache.get(cid);
622
- if (baseCache2 == null) {
623
- const baseCache3 = /* @__PURE__ */ new Map();
624
- cache.set(cid, baseCache3);
625
- return baseCache3;
626
- }
627
- return baseCache2;
628
- };
629
- var CID = class _CID {
630
- /**
631
- * @param {Version} version - Version of the CID
632
- * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv
633
- * @param {API.MultihashDigest<Alg>} multihash - (Multi)hash of the of the content.
634
- * @param {Uint8Array} bytes
635
- *
636
- */
637
- constructor(version, code, multihash, bytes) {
638
- this.code = code;
639
- this.version = version;
640
- this.multihash = multihash;
641
- this.bytes = bytes;
642
- this["/"] = bytes;
643
- }
644
- /**
645
- * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`
646
- * please either use `CID.asCID(cid)` or switch to new signalling mechanism
647
- *
648
- * @deprecated
649
- */
650
- get asCID() {
651
- return this;
652
- }
653
- // ArrayBufferView
654
- get byteOffset() {
655
- return this.bytes.byteOffset;
656
- }
657
- // ArrayBufferView
658
- get byteLength() {
659
- return this.bytes.byteLength;
660
- }
661
- /**
662
- * @returns {CID<Data, API.DAG_PB, API.SHA_256, 0>}
663
- */
664
- toV0() {
665
- switch (this.version) {
666
- case 0: {
667
- return (
668
- /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */
669
- this
670
- );
671
- }
672
- case 1: {
673
- const { code, multihash } = this;
674
- if (code !== DAG_PB_CODE) {
675
- throw new Error("Cannot convert a non dag-pb CID to CIDv0");
676
- }
677
- if (multihash.code !== SHA_256_CODE) {
678
- throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");
679
- }
680
- return (
681
- /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */
682
- _CID.createV0(
683
- /** @type {API.MultihashDigest<API.SHA_256>} */
684
- multihash
685
- )
686
- );
687
- }
688
- default: {
689
- throw Error(
690
- `Can not convert CID version ${this.version} to version 0. This is a bug please report`
691
- );
692
- }
693
- }
694
- }
695
- /**
696
- * @returns {CID<Data, Format, Alg, 1>}
697
- */
698
- toV1() {
699
- switch (this.version) {
700
- case 0: {
701
- const { code, digest } = this.multihash;
702
- const multihash = create(code, digest);
703
- return (
704
- /** @type {CID<Data, Format, Alg, 1>} */
705
- _CID.createV1(this.code, multihash)
706
- );
707
- }
708
- case 1: {
709
- return (
710
- /** @type {CID<Data, Format, Alg, 1>} */
711
- this
712
- );
713
- }
714
- default: {
715
- throw Error(
716
- `Can not convert CID version ${this.version} to version 1. This is a bug please report`
717
- );
718
- }
719
- }
720
- }
721
- /**
722
- * @param {unknown} other
723
- * @returns {other is CID<Data, Format, Alg, Version>}
724
- */
725
- equals(other) {
726
- return _CID.equals(this, other);
727
- }
728
- /**
729
- * @template {unknown} Data
730
- * @template {number} Format
731
- * @template {number} Alg
732
- * @template {API.Version} Version
733
- * @param {API.Link<Data, Format, Alg, Version>} self
734
- * @param {unknown} other
735
- * @returns {other is CID}
736
- */
737
- static equals(self, other) {
738
- const unknown = (
739
- /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */
740
- other
741
- );
742
- return unknown && self.code === unknown.code && self.version === unknown.version && equals2(self.multihash, unknown.multihash);
743
- }
744
- /**
745
- * @param {API.MultibaseEncoder<string>} [base]
746
- * @returns {string}
747
- */
748
- toString(base2) {
749
- return format(this, base2);
750
- }
751
- toJSON() {
752
- return { "/": format(this) };
753
- }
754
- link() {
755
- return this;
756
- }
757
- get [Symbol.toStringTag]() {
758
- return "CID";
759
- }
760
- // Legacy
761
- [Symbol.for("nodejs.util.inspect.custom")]() {
762
- return `CID(${this.toString()})`;
763
- }
764
- /**
765
- * Takes any input `value` and returns a `CID` instance if it was
766
- * a `CID` otherwise returns `null`. If `value` is instanceof `CID`
767
- * it will return value back. If `value` is not instance of this CID
768
- * class, but is compatible CID it will return new instance of this
769
- * `CID` class. Otherwise returns null.
770
- *
771
- * This allows two different incompatible versions of CID library to
772
- * co-exist and interop as long as binary interface is compatible.
773
- *
774
- * @template {unknown} Data
775
- * @template {number} Format
776
- * @template {number} Alg
777
- * @template {API.Version} Version
778
- * @template {unknown} U
779
- * @param {API.Link<Data, Format, Alg, Version>|U} input
780
- * @returns {CID<Data, Format, Alg, Version>|null}
781
- */
782
- static asCID(input) {
783
- if (input == null) {
784
- return null;
785
- }
786
- const value = (
787
- /** @type {any} */
788
- input
789
- );
790
- if (value instanceof _CID) {
791
- return value;
792
- } else if (value["/"] != null && value["/"] === value.bytes || value.asCID === value) {
793
- const { version, code, multihash, bytes } = value;
794
- return new _CID(
795
- version,
796
- code,
797
- /** @type {API.MultihashDigest<Alg>} */
798
- multihash,
799
- bytes || encodeCID(version, code, multihash.bytes)
800
- );
801
- } else if (value[cidSymbol] === true) {
802
- const { version, multihash, code } = value;
803
- const digest = (
804
- /** @type {API.MultihashDigest<Alg>} */
805
- decode3(multihash)
806
- );
807
- return _CID.create(version, code, digest);
808
- } else {
809
- return null;
810
- }
811
- }
812
- /**
813
- *
814
- * @template {unknown} Data
815
- * @template {number} Format
816
- * @template {number} Alg
817
- * @template {API.Version} Version
818
- * @param {Version} version - Version of the CID
819
- * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv
820
- * @param {API.MultihashDigest<Alg>} digest - (Multi)hash of the of the content.
821
- * @returns {CID<Data, Format, Alg, Version>}
822
- */
823
- static create(version, code, digest) {
824
- if (typeof code !== "number") {
825
- throw new Error("String codecs are no longer supported");
826
- }
827
- if (!(digest.bytes instanceof Uint8Array)) {
828
- throw new Error("Invalid digest");
829
- }
830
- switch (version) {
831
- case 0: {
832
- if (code !== DAG_PB_CODE) {
833
- throw new Error(
834
- `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`
835
- );
836
- } else {
837
- return new _CID(version, code, digest, digest.bytes);
838
- }
839
- }
840
- case 1: {
841
- const bytes = encodeCID(version, code, digest.bytes);
842
- return new _CID(version, code, digest, bytes);
843
- }
844
- default: {
845
- throw new Error("Invalid version");
846
- }
847
- }
848
- }
849
- /**
850
- * Simplified version of `create` for CIDv0.
851
- *
852
- * @template {unknown} [T=unknown]
853
- * @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.
854
- * @returns {CID<T, typeof DAG_PB_CODE, typeof SHA_256_CODE, 0>}
855
- */
856
- static createV0(digest) {
857
- return _CID.create(0, DAG_PB_CODE, digest);
858
- }
859
- /**
860
- * Simplified version of `create` for CIDv1.
861
- *
862
- * @template {unknown} Data
863
- * @template {number} Code
864
- * @template {number} Alg
865
- * @param {Code} code - Content encoding format code.
866
- * @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.
867
- * @returns {CID<Data, Code, Alg, 1>}
868
- */
869
- static createV1(code, digest) {
870
- return _CID.create(1, code, digest);
871
- }
872
- /**
873
- * Decoded a CID from its binary representation. The byte array must contain
874
- * only the CID with no additional bytes.
875
- *
876
- * An error will be thrown if the bytes provided do not contain a valid
877
- * binary representation of a CID.
878
- *
879
- * @template {unknown} Data
880
- * @template {number} Code
881
- * @template {number} Alg
882
- * @template {API.Version} Ver
883
- * @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes
884
- * @returns {CID<Data, Code, Alg, Ver>}
885
- */
886
- static decode(bytes) {
887
- const [cid, remainder] = _CID.decodeFirst(bytes);
888
- if (remainder.length) {
889
- throw new Error("Incorrect length");
890
- }
891
- return cid;
892
- }
893
- /**
894
- * Decoded a CID from its binary representation at the beginning of a byte
895
- * array.
896
- *
897
- * Returns an array with the first element containing the CID and the second
898
- * element containing the remainder of the original byte array. The remainder
899
- * will be a zero-length byte array if the provided bytes only contained a
900
- * binary CID representation.
901
- *
902
- * @template {unknown} T
903
- * @template {number} C
904
- * @template {number} A
905
- * @template {API.Version} V
906
- * @param {API.ByteView<API.Link<T, C, A, V>>} bytes
907
- * @returns {[CID<T, C, A, V>, Uint8Array]}
908
- */
909
- static decodeFirst(bytes) {
910
- const specs = _CID.inspectBytes(bytes);
911
- const prefixSize = specs.size - specs.multihashSize;
912
- const multihashBytes = coerce(
913
- bytes.subarray(prefixSize, prefixSize + specs.multihashSize)
914
- );
915
- if (multihashBytes.byteLength !== specs.multihashSize) {
916
- throw new Error("Incorrect length");
917
- }
918
- const digestBytes = multihashBytes.subarray(
919
- specs.multihashSize - specs.digestSize
920
- );
921
- const digest = new Digest(
922
- specs.multihashCode,
923
- specs.digestSize,
924
- digestBytes,
925
- multihashBytes
926
- );
927
- const cid = specs.version === 0 ? _CID.createV0(
928
- /** @type {API.MultihashDigest<API.SHA_256>} */
929
- digest
930
- ) : _CID.createV1(specs.codec, digest);
931
- return [
932
- /** @type {CID<T, C, A, V>} */
933
- cid,
934
- bytes.subarray(specs.size)
935
- ];
936
- }
937
- /**
938
- * Inspect the initial bytes of a CID to determine its properties.
939
- *
940
- * Involves decoding up to 4 varints. Typically this will require only 4 to 6
941
- * bytes but for larger multicodec code values and larger multihash digest
942
- * lengths these varints can be quite large. It is recommended that at least
943
- * 10 bytes be made available in the `initialBytes` argument for a complete
944
- * inspection.
945
- *
946
- * @template {unknown} T
947
- * @template {number} C
948
- * @template {number} A
949
- * @template {API.Version} V
950
- * @param {API.ByteView<API.Link<T, C, A, V>>} initialBytes
951
- * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}
952
- */
953
- static inspectBytes(initialBytes) {
954
- let offset = 0;
955
- const next = () => {
956
- const [i, length2] = decode2(initialBytes.subarray(offset));
957
- offset += length2;
958
- return i;
959
- };
960
- let version = (
961
- /** @type {V} */
962
- next()
963
- );
964
- let codec = (
965
- /** @type {C} */
966
- DAG_PB_CODE
967
- );
968
- if (
969
- /** @type {number} */
970
- version === 18
971
- ) {
972
- version = /** @type {V} */
973
- 0;
974
- offset = 0;
975
- } else {
976
- codec = /** @type {C} */
977
- next();
978
- }
979
- if (version !== 0 && version !== 1) {
980
- throw new RangeError(`Invalid CID version ${version}`);
981
- }
982
- const prefixSize = offset;
983
- const multihashCode = (
984
- /** @type {A} */
985
- next()
986
- );
987
- const digestSize = next();
988
- const size = offset + digestSize;
989
- const multihashSize = size - prefixSize;
990
- return { version, codec, multihashCode, digestSize, multihashSize, size };
991
- }
992
- /**
993
- * Takes cid in a string representation and creates an instance. If `base`
994
- * decoder is not provided will use a default from the configuration. It will
995
- * throw an error if encoding of the CID is not compatible with supplied (or
996
- * a default decoder).
997
- *
998
- * @template {string} Prefix
999
- * @template {unknown} Data
1000
- * @template {number} Code
1001
- * @template {number} Alg
1002
- * @template {API.Version} Ver
1003
- * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source
1004
- * @param {API.MultibaseDecoder<Prefix>} [base]
1005
- * @returns {CID<Data, Code, Alg, Ver>}
1006
- */
1007
- static parse(source, base2) {
1008
- const [prefix, bytes] = parseCIDtoBytes(source, base2);
1009
- const cid = _CID.decode(bytes);
1010
- if (cid.version === 0 && source[0] !== "Q") {
1011
- throw Error("Version 0 CID string must not include multibase prefix");
1012
- }
1013
- baseCache(cid).set(prefix, source);
1014
- return cid;
1015
- }
1016
- };
1017
- var parseCIDtoBytes = (source, base2) => {
1018
- switch (source[0]) {
1019
- case "Q": {
1020
- const decoder = base2 || base58btc;
1021
- return [
1022
- /** @type {Prefix} */
1023
- base58btc.prefix,
1024
- decoder.decode(`${base58btc.prefix}${source}`)
1025
- ];
1026
- }
1027
- case base58btc.prefix: {
1028
- const decoder = base2 || base58btc;
1029
- return [
1030
- /** @type {Prefix} */
1031
- base58btc.prefix,
1032
- decoder.decode(source)
1033
- ];
1034
- }
1035
- case base32.prefix: {
1036
- const decoder = base2 || base32;
1037
- return [
1038
- /** @type {Prefix} */
1039
- base32.prefix,
1040
- decoder.decode(source)
1041
- ];
1042
- }
1043
- default: {
1044
- if (base2 == null) {
1045
- throw Error(
1046
- "To parse non base32 or base58btc encoded CID multibase decoder must be provided"
1047
- );
1048
- }
1049
- return [
1050
- /** @type {Prefix} */
1051
- source[0],
1052
- base2.decode(source)
1053
- ];
1054
- }
1055
- }
1056
- };
1057
- var toStringV0 = (bytes, cache2, base2) => {
1058
- const { prefix } = base2;
1059
- if (prefix !== base58btc.prefix) {
1060
- throw Error(`Cannot string encode V0 in ${base2.name} encoding`);
1061
- }
1062
- const cid = cache2.get(prefix);
1063
- if (cid == null) {
1064
- const cid2 = base2.encode(bytes).slice(1);
1065
- cache2.set(prefix, cid2);
1066
- return cid2;
1067
- } else {
1068
- return cid;
1069
- }
1070
- };
1071
- var toStringV1 = (bytes, cache2, base2) => {
1072
- const { prefix } = base2;
1073
- const cid = cache2.get(prefix);
1074
- if (cid == null) {
1075
- const cid2 = base2.encode(bytes);
1076
- cache2.set(prefix, cid2);
1077
- return cid2;
1078
- } else {
1079
- return cid;
1080
- }
1081
- };
1082
- var DAG_PB_CODE = 112;
1083
- var SHA_256_CODE = 18;
1084
- var encodeCID = (version, code, multihash) => {
1085
- const codeOffset = encodingLength(version);
1086
- const hashOffset = codeOffset + encodingLength(code);
1087
- const bytes = new Uint8Array(hashOffset + multihash.byteLength);
1088
- encodeTo(version, bytes, 0);
1089
- encodeTo(code, bytes, codeOffset);
1090
- bytes.set(multihash, hashOffset);
1091
- return bytes;
1092
- };
1093
- var cidSymbol = Symbol.for("@ipld/js-cid/CID");
1094
-
1095
- // node_modules/multiformats/src/link.js
1096
- var parse = (source, base2) => CID.parse(source, base2);
1097
-
1098
- // src/store.ts
1099
- var StoredHeader = class {
1100
- car;
1101
- constructor(jsonHeader) {
1102
- this.car = parse(jsonHeader.car);
1103
- }
1104
- };
1105
- var HeaderStore = class {
1106
- name;
1107
- constructor(name) {
1108
- this.name = name;
1109
- }
1110
- makeHeader(car) {
1111
- return JSON.stringify({ car: car.toString() });
1112
- }
1113
- parseHeader(headerData) {
1114
- const header = JSON.parse(headerData);
1115
- return new StoredHeader(header);
1116
- }
1117
- };
1118
- var CarStore = class {
1119
- name;
1120
- constructor(name) {
1121
- this.name = name;
1122
- }
1123
- };
1124
-
1125
- // src/store-fs.ts
1126
- var FORMAT = "0.9";
1127
- var encoder = new TextEncoder();
1128
- var defaultConfig = {
1129
- dataDir: (0, import_node_path.join)((0, import_node_os.homedir)(), ".fireproof", "v" + FORMAT)
1130
- };
1131
- var HeaderStoreFS = class extends HeaderStore {
1132
- async load(branch) {
1133
- branch = branch || "main";
1134
- const filepath = (0, import_node_path.join)(defaultConfig.dataDir, this.name, branch + ".json");
1135
- const bytes = await (0, import_promises.readFile)(filepath).catch((e) => {
1136
- if (e.code === "ENOENT")
1137
- return null;
1138
- throw e;
1139
- });
1140
- return bytes ? this.parseHeader(bytes.toString()) : null;
1141
- }
1142
- async save(carCid, branch) {
1143
- branch = branch || "main";
1144
- const filepath = (0, import_node_path.join)(defaultConfig.dataDir, this.name, branch + ".json");
1145
- const bytes = this.makeHeader(carCid);
1146
- await writePathFile(filepath, encoder.encode(bytes));
1147
- }
1148
- };
1149
- var CarStoreFS = class extends CarStore {
1150
- async save(car) {
1151
- const filepath = (0, import_node_path.join)(defaultConfig.dataDir, this.name, car.cid.toString() + ".car");
1152
- await writePathFile(filepath, car.bytes);
1153
- }
1154
- async load(cid) {
1155
- const filepath = (0, import_node_path.join)(defaultConfig.dataDir, this.name, cid.toString() + ".car");
1156
- const bytes = await (0, import_promises.readFile)(filepath);
1157
- return { cid, bytes: new Uint8Array(bytes) };
1158
- }
1159
- };
1160
- async function writePathFile(path, data) {
1161
- await (0, import_promises.mkdir)((0, import_node_path.dirname)(path), { recursive: true });
1162
- return await (0, import_promises.writeFile)(path, data);
1163
- }
1164
- // Annotate the CommonJS export names for ESM import in node:
1165
- 0 && (module.exports = {
1166
- CarStoreFS,
1167
- FORMAT,
1168
- HeaderStoreFS,
1169
- defaultConfig
1170
- });
1171
- //# sourceMappingURL=store-fs.cjs.js.map