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