@dxos/random-access-storage 0.8.4-main.9be5663bfe → 0.8.4-main.abd8ff62ef

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.
@@ -16,7 +16,7 @@ import {
16
16
  getFullPath,
17
17
  stringDiff,
18
18
  wrapFile
19
- } from "../chunk-V26DCZ2O.mjs";
19
+ } from "../chunk-V3ALAPAH.mjs";
20
20
 
21
21
  // ../../../node_modules/.pnpm/random-access-idb@1.2.2_patch_hash=207ec2404ef8b5e9e6d9de8ce83586d215ef77b94a7d0cadced03125874a1d9e/node_modules/random-access-idb/lib/blocks.js
22
22
  var require_blocks = __commonJS({
@@ -267,15 +267,7 @@ var IDbStorage = class extends AbstractStorage {
267
267
  }
268
268
  async _loadFiles(path) {
269
269
  const db = await this._db;
270
- invariant(db, "Database is not initialized.", {
271
- F: __dxlog_file,
272
- L: 85,
273
- S: this,
274
- A: [
275
- "db",
276
- "'Database is not initialized.'"
277
- ]
278
- });
270
+ invariant(db, "Database is not initialized.", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 69, S: this, A: ["db", "'Database is not initialized.'"] });
279
271
  const lowerBound = path;
280
272
  const upperBound = `${path}\uFFFF`;
281
273
  const range = IDBKeyRange.bound(lowerBound, upperBound);
@@ -317,13 +309,13 @@ import { synchronized } from "@dxos/async";
317
309
  import { invariant as invariant2 } from "@dxos/invariant";
318
310
  import { log } from "@dxos/log";
319
311
  import { TimeSeriesCounter, trace } from "@dxos/tracing";
312
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/common/random-access-storage/src/browser/web-fs.ts";
320
313
  function _ts_decorate(decorators, target, key, desc) {
321
314
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
322
315
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
323
316
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
324
317
  return c > 3 && r && Object.defineProperty(target, key, r), r;
325
318
  }
326
- var __dxlog_file2 = "/__w/dxos/dxos/packages/common/random-access-storage/src/browser/web-fs.ts";
327
319
  var WebFS = class {
328
320
  path;
329
321
  _files = /* @__PURE__ */ new Map();
@@ -359,15 +351,7 @@ var WebFS = class {
359
351
  return this._root;
360
352
  }
361
353
  this._root = await navigator.storage.getDirectory();
362
- invariant2(this._root, "Root is undefined", {
363
- F: __dxlog_file2,
364
- L: 73,
365
- S: this,
366
- A: [
367
- "this._root",
368
- "'Root is undefined'"
369
- ]
370
- });
354
+ invariant2(this._root, "Root is undefined", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 65, S: this, A: ["this._root", "'Root is undefined'"] });
371
355
  return this._root;
372
356
  }
373
357
  createDirectory(sub = "") {
@@ -407,12 +391,7 @@ var WebFS = class {
407
391
  }
408
392
  async _delete(path) {
409
393
  await Promise.all(Array.from(this._getFiles(path)).map(async ([path2, file]) => {
410
- await file.destroy().catch((err) => log.warn(err, void 0, {
411
- F: __dxlog_file2,
412
- L: 116,
413
- S: this,
414
- C: (f, a) => f(...a)
415
- }));
394
+ await file.destroy().catch((err) => log.warn(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 105, S: this }));
416
395
  this._files.delete(path2);
417
396
  }));
418
397
  }
@@ -424,12 +403,7 @@ var WebFS = class {
424
403
  }).catch((err) => log.warn("failed to remove an entry", {
425
404
  filename,
426
405
  err
427
- }, {
428
- F: __dxlog_file2,
429
- L: 126,
430
- S: this,
431
- C: (f, a) => f(...a)
432
- }));
406
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 114, S: this }));
433
407
  this._files.delete(filename);
434
408
  }
435
409
  this._root = void 0;
@@ -439,12 +413,7 @@ var WebFS = class {
439
413
  return file.close().catch((e) => log.warn("failed to close a file", {
440
414
  file: file.fileName,
441
415
  e
442
- }, {
443
- F: __dxlog_file2,
444
- L: 136,
445
- S: this,
446
- C: (f, a) => f(...a)
447
- }));
416
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 124, S: this }));
448
417
  }));
449
418
  }
450
419
  _getFullFilename(path, filename) {
@@ -559,15 +528,7 @@ var WebFile = class extends EventEmitter {
559
528
  this._flushSequence = sequence + 1;
560
529
  this._flushes.inc();
561
530
  await this._loadBufferGuarded();
562
- invariant2(this._buffer, void 0, {
563
- F: __dxlog_file2,
564
- L: 300,
565
- S: this,
566
- A: [
567
- "this._buffer",
568
- ""
569
- ]
570
- });
531
+ invariant2(this._buffer, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 243, S: this, A: ["this._buffer", ""] });
571
532
  const fileHandle = await this._fileHandle;
572
533
  const writable = await fileHandle.createWritable({
573
534
  keepExistingData: true
@@ -587,23 +548,13 @@ var WebFile = class extends EventEmitter {
587
548
  setTimeout(async () => {
588
549
  await this._flushPromise;
589
550
  this._flushScheduled = false;
590
- this._flushPromise = this._flushCache(sequence).catch((err) => log.warn(err, void 0, {
591
- F: __dxlog_file2,
592
- L: 318,
593
- S: this,
594
- C: (f, a) => f(...a)
595
- }));
551
+ this._flushPromise = this._flushCache(sequence).catch((err) => log.warn(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 264, S: this }));
596
552
  });
597
553
  this._flushScheduled = true;
598
554
  }
599
555
  async _flushNow() {
600
556
  await this._flushPromise;
601
- this._flushPromise = this._flushCache(this._flushSequence).catch((err) => log.warn(err, void 0, {
602
- F: __dxlog_file2,
603
- L: 326,
604
- S: this,
605
- C: (f, a) => f(...a)
606
- }));
557
+ this._flushPromise = this._flushCache(this._flushSequence).catch((err) => log.warn(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 270, S: this }));
607
558
  await this._flushPromise;
608
559
  }
609
560
  async read(offset, size) {
@@ -613,15 +564,7 @@ var WebFile = class extends EventEmitter {
613
564
  this._readBytes.inc(size);
614
565
  if (!this._buffer) {
615
566
  await this._loadBufferGuarded();
616
- invariant2(this._buffer, void 0, {
617
- F: __dxlog_file2,
618
- L: 339,
619
- S: this,
620
- A: [
621
- "this._buffer",
622
- ""
623
- ]
624
- });
567
+ invariant2(this._buffer, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 280, S: this, A: ["this._buffer", ""] });
625
568
  }
626
569
  if (offset + size > this._buffer.length) {
627
570
  throw new Error("Read out of bounds");
@@ -635,15 +578,7 @@ var WebFile = class extends EventEmitter {
635
578
  this._writeBytes.inc(data.length);
636
579
  if (!this._buffer) {
637
580
  await this._loadBufferGuarded();
638
- invariant2(this._buffer, void 0, {
639
- F: __dxlog_file2,
640
- L: 359,
641
- S: this,
642
- A: [
643
- "this._buffer",
644
- ""
645
- ]
646
- });
581
+ invariant2(this._buffer, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 295, S: this, A: ["this._buffer", ""] });
647
582
  }
648
583
  if (offset + data.length <= this._buffer.length) {
649
584
  this._buffer.set(data, offset);
@@ -663,15 +598,7 @@ var WebFile = class extends EventEmitter {
663
598
  }
664
599
  if (!this._buffer) {
665
600
  await this._loadBufferGuarded();
666
- invariant2(this._buffer, void 0, {
667
- F: __dxlog_file2,
668
- L: 386,
669
- S: this,
670
- A: [
671
- "this._buffer",
672
- ""
673
- ]
674
- });
601
+ invariant2(this._buffer, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 316, S: this, A: ["this._buffer", ""] });
675
602
  }
676
603
  let leftoverSize = 0;
677
604
  if (offset + size < this._buffer.length) {
@@ -686,15 +613,7 @@ var WebFile = class extends EventEmitter {
686
613
  this._operations.inc();
687
614
  if (!this._buffer) {
688
615
  await this._loadBufferGuarded();
689
- invariant2(this._buffer, void 0, {
690
- F: __dxlog_file2,
691
- L: 408,
692
- S: this,
693
- A: [
694
- "this._buffer",
695
- ""
696
- ]
697
- });
616
+ invariant2(this._buffer, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 332, S: this, A: ["this._buffer", ""] });
698
617
  }
699
618
  return {
700
619
  size: this._buffer.length
@@ -705,15 +624,7 @@ var WebFile = class extends EventEmitter {
705
624
  this._operations.inc();
706
625
  if (!this._buffer) {
707
626
  await this._loadBufferGuarded();
708
- invariant2(this._buffer, void 0, {
709
- F: __dxlog_file2,
710
- L: 423,
711
- S: this,
712
- A: [
713
- "this._buffer",
714
- ""
715
- ]
716
- });
627
+ invariant2(this._buffer, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 343, S: this, A: ["this._buffer", ""] });
717
628
  }
718
629
  this._buffer = this._buffer.slice(0, offset);
719
630
  this._flushLater();
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../node_modules/.pnpm/random-access-idb@1.2.2_patch_hash=207ec2404ef8b5e9e6d9de8ce83586d215ef77b94a7d0cadced03125874a1d9e/node_modules/random-access-idb/lib/blocks.js", "../../../../../../../node_modules/.pnpm/random-access-idb@1.2.2_patch_hash=207ec2404ef8b5e9e6d9de8ce83586d215ef77b94a7d0cadced03125874a1d9e/node_modules/random-access-idb/index.js", "../../../../src/browser/idb-storage.ts", "../../../../src/browser/web-fs.ts", "../../../../src/browser/storage.ts"],
4
4
  "sourcesContent": ["module.exports = function (size, start, end) {\n var result = []\n for (var n = Math.floor(start/size)*size; n < end; n += size) {\n result.push({\n block: Math.floor(n/size),\n start: Math.max(n,start) % size,\n end: Math.min(n+size,end) % size || size\n })\n }\n return result\n}\n", "var RandomAccess = require('random-access-storage')\nvar inherits = require('inherits')\nvar nextTick = require('next-tick')\nvar once = require('once')\nvar blocks = require('./lib/blocks.js')\nvar bufferFrom = require('buffer-from')\nvar bufferAlloc = require('buffer-alloc')\n\nvar DELIM = '\\0'\nvar win = typeof window !== 'undefined' ? window\n : (typeof self !== 'undefined' ? self : {})\n\nmodule.exports = function (dbname, xopts) {\n if (!xopts) xopts = {}\n var idb = xopts.idb || (typeof win !== 'undefined'\n ? win.indexedDB || win.mozIndexedDB\n || win.webkitIndexedDB || win.msIndexedDB\n : null)\n if (!idb) throw new Error('indexedDB not present and not given')\n var db = null, dbqueue = []\n if (typeof idb.open === 'function') {\n var req = idb.open(dbname)\n req.addEventListener('upgradeneeded', function () {\n db = req.result\n db.createObjectStore('data')\n })\n req.addEventListener('success', function () {\n db = req.result\n dbqueue.forEach(function (cb) { cb(db) })\n dbqueue = null\n })\n } else {\n db = idb\n }\n function getdb (cb) {\n if (db) nextTick(function () { cb(db) })\n else dbqueue.push(cb)\n }\n return {\n create: function (name, opts) {\n if (typeof name === 'object') {\n opts = name\n name = opts.name\n }\n\n if (!opts) opts = {}\n opts.name = name\n\n return new Store(Object.assign({ db: getdb }, xopts, opts))\n },\n getdb\n }\n}\n\nfunction Store (opts) {\n if (!(this instanceof Store)) return new Store(opts)\n RandomAccess.call(this)\n if (!opts) opts = {}\n if (typeof opts === 'string') opts = { name: opts }\n this.size = opts.size || 4096\n this.name = opts.name\n this.length = opts.length || 0\n this._getdb = opts.db\n}\ninherits(Store, RandomAccess)\n\nStore.prototype._blocks = function (i, j) {\n return blocks(this.size, i, j)\n}\n\nStore.prototype._read = function (req) {\n var self = this\n var buffers = []\n self._store('readonly', function (err, store) {\n if ((self.length || 0) < req.offset+req.size) {\n return req.callback(new Error('Could not satisfy length'))\n }\n if (err) return req.callback(err)\n var offsets = self._blocks(req.offset, req.offset+req.size)\n var pending = offsets.length + 1\n var firstBlock = offsets.length > 0 ? offsets[0].block : 0\n var j = 0\n for (var i = 0; i < offsets.length; i++) (function (o) {\n var key = self.name + DELIM + o.block\n backify(store.get(key), function (err, ev) {\n if (err) return req.callback(err)\n buffers[o.block-firstBlock] = ev.target.result\n ? bufferFrom(ev.target.result.subarray(o.start,o.end))\n : bufferAlloc(o.end-o.start)\n if (--pending === 0) req.callback(null, Buffer.concat(buffers))\n })\n })(offsets[i])\n if (--pending === 0) req.callback(null, Buffer.concat(buffers))\n })\n}\n\nStore.prototype._write = function (req) {\n var self = this\n self._store('readwrite', function (err, store) {\n if (err) return req.callback(err)\n var offsets = self._blocks(req.offset, req.offset + req.data.length)\n var pending = 1\n var buffers = {}\n for (var i = 0; i < offsets.length; i++) (function (o,i) {\n if (o.end-o.start === self.size) return\n pending++\n var key = self.name + DELIM + o.block\n backify(store.get(key), function (err, ev) {\n if (err) return req.callback(err)\n buffers[i] = bufferFrom(ev.target.result || bufferAlloc(self.size))\n if (--pending === 0) write(store, offsets, buffers)\n })\n })(offsets[i],i)\n if (--pending === 0) write(store, offsets, buffers)\n })\n function write (store, offsets, buffers) {\n var block\n for (var i = 0, j = 0; i < offsets.length; i++) {\n var o = offsets[i]\n var len = o.end - o.start\n if (len === self.size) {\n block = bufferFrom(req.data.slice(j, j+len))\n } else {\n block = buffers[i]\n req.data.copy(block, o.start, j, j+len)\n }\n store.put(block,self.name + DELIM + o.block)\n j += len\n }\n var length = Math.max(self.length || 0, req.offset + req.data.length)\n store.put(length, self.name + DELIM + 'length')\n store.transaction.addEventListener('complete', function () {\n self.length = length\n req.callback(null)\n })\n store.transaction.addEventListener('error', function (err) {\n req.callback(err)\n })\n }\n}\n\nStore.prototype._store = function (mode, cb) {\n cb = once(cb)\n var self = this\n self._getdb(function (db) {\n var tx = db.transaction(['data'], mode)\n var store = tx.objectStore('data')\n tx.addEventListener('error', cb)\n cb(null, store)\n })\n}\n\nStore.prototype._open = function (req) {\n var self = this\n this._getdb(function(db) {\n self._store('readonly', function (err, store) {\n backify(store.get(self.name + DELIM + \"length\"), function(err, ev) {\n self.length = ev.target.result || 0\n req.callback(null)\n })\n })\n })\n}\n\nStore.prototype._close = function (req) {\n this._getdb(function (db) {\n // db.close() // TODO: reopen gracefully. Close breaks with corestore, as innercorestore closes the db\n req.callback()\n })\n}\n\nStore.prototype._stat = function (req) {\n var self = this\n nextTick(function () {\n req.callback(null, { size: self.length })\n })\n}\n\nfunction backify (r, cb) {\n r.addEventListener('success', function (ev) { cb(null, ev) })\n r.addEventListener('error', cb)\n}\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport idb from 'random-access-idb';\nimport { type RandomAccessStorage } from 'random-access-storage';\n\nimport { invariant } from '@dxos/invariant';\n\nimport { AbstractStorage, StorageType, getFullPath, wrapFile } from '../common';\n\nconst DELIM = '\\0';\n/**\n * Storage interface implementation for index DB.\n * https://github.com/random-access-storage/random-access-idb\n */\nexport class IDbStorage extends AbstractStorage {\n public override type: StorageType = StorageType.IDB;\n private _db!: Promise<IDBDatabase>;\n private readonly _store = 'data';\n private _initialized = false;\n protected readonly _fileStorage: (filename: string, opts?: {}) => RandomAccessStorage;\n\n constructor(path: string) {\n super(path);\n this._fileStorage = this._createFileStorage(path);\n }\n\n protected _createFileStorage(path: string): (filename: string, opts?: {}) => RandomAccessStorage {\n // Note: We use patched version of random-access-idb here that exposes the getdb method.\n const database = idb(path);\n let res: (db: IDBDatabase) => void;\n this._db = new Promise((resolve) => {\n res = resolve;\n });\n\n database.getdb(res!);\n return database.create;\n }\n\n override async close(): Promise<void> {\n await this._closeFilesInPath('');\n // TODO(dmaretskyi): Set a flag to make the current instance unusable.\n }\n\n override async reset(): Promise<void> {\n // We don't delete the database, just erase the data.\n // Deleting that database causes IDB errors which I have no idea how to fix.\n await this._closeFilesInPath('');\n await this._remove('');\n // TODO(dmaretskyi): Set a flag to make the current instance unusable.\n }\n\n protected override async _destroy(): Promise<void> {\n throw new Error('Unreachable');\n }\n\n protected override _createFile(path: string, filename: string): RandomAccessStorage {\n const file = this._fileStorage(getFullPath(path, filename));\n file.destroy = (cb: (err: Error | null) => void) => {\n void this._db.then((db) => {\n const lowerBound = getFullPath(path, filename);\n const upperBound = `${lowerBound}\\uffff`;\n const range = IDBKeyRange.bound(lowerBound, upperBound);\n\n const transaction = db.transaction(this._store, 'readwrite');\n const objectStore = transaction.objectStore(this._store);\n objectStore.delete(range);\n transaction.oncomplete = () => {\n (file as any).destroyed = true;\n (file as any).unlinked = true;\n (file as any).closed = true;\n cb(null);\n };\n transaction.onerror = () => cb(transaction.error);\n });\n };\n (file as any).deletable = true;\n\n return file;\n }\n\n async _loadFiles(path: string): Promise<void> {\n const db = await this._db;\n invariant(db, 'Database is not initialized.');\n const lowerBound = path;\n const upperBound = `${path}\\uffff`;\n const range = IDBKeyRange.bound(lowerBound, upperBound);\n\n const transaction = db.transaction(this._store);\n const objectStore = transaction.objectStore(this._store);\n const request = objectStore.openCursor(range);\n\n return new Promise((resolve, reject) => {\n transaction.onerror = () => {\n reject(request.error!);\n };\n\n request.onsuccess = (event) => {\n const cursor = (event.target as IDBRequest).result as IDBCursorWithValue;\n if (cursor) {\n // NOTE: The key contains some metadata at the end added by random-access-idb, so we need to split it.\n const filename = String(cursor.key).split(DELIM)[0];\n if (filename && !this._files.has(getFullPath(this.path, filename))) {\n const file = this._createFile(path, filename);\n this._files.set(getFullPath(this.path, filename), wrapFile(file, this.type));\n }\n cursor.continue();\n } else {\n resolve();\n }\n };\n });\n }\n\n protected override async _getFiles(path: string) {\n if (!this._initialized) {\n await this._loadFiles(this.path);\n this._initialized = true;\n }\n\n return super._getFiles(path);\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { EventEmitter } from 'node:events';\nimport { callbackify } from 'node:util';\nimport { type RandomAccessStorage } from 'random-access-storage';\n\nimport { synchronized } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { TimeSeriesCounter, trace } from '@dxos/tracing';\n\nimport { Directory, type DiskInfo, type File, type Storage, StorageType, getFullPath } from '../common';\n\n/**\n * Web file systems.\n */\nexport class WebFS implements Storage {\n private readonly _files = new Map<string, WebFile>();\n\n readonly type = StorageType.WEBFS;\n\n protected _root?: FileSystemDirectoryHandle;\n\n constructor(public readonly path: string) {}\n\n public get size() {\n return this._files.size;\n }\n\n private _getFiles(path: string): Map<string, WebFile> {\n const fullName = this._getFullFilename(this.path, path);\n return new Map(\n [...this._files.entries()].filter(([path, file]) => {\n return path.includes(fullName) && !file.destroyed;\n }),\n );\n }\n\n private async _list(path: string): Promise<string[]> {\n const fullName = this._getFullFilename(path);\n\n const root = await this._initialize();\n\n // TODO(dmaretskyi): While we're storing all files in flat namespace we just iterate the root.\n // console.log({ path, fullName })\n // let dir: FileSystemDirectoryHandle;\n // if (path === '') {\n // dir = root;\n // } else {\n // dir = await root.getDirectoryHandle(fullName, { create: true });\n // }\n const entries: string[] = [];\n\n for await (const entry of (root as any).keys()) {\n // Filter out .crswap files.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1228068\n // https://github.com/logseq/logseq/issues/4466#:~:text=Jun%2015%2C%202023-,.,is%20used%20to%20edit%20files.\n if (entry.startsWith(fullName + '_') && !entry.endsWith('.crswap')) {\n entries.push(entry.slice(fullName.length + 1));\n }\n }\n return entries;\n }\n\n @synchronized\n private async _initialize(): Promise<FileSystemDirectoryHandle> {\n if (this._root) {\n return this._root;\n }\n this._root = await navigator.storage.getDirectory();\n invariant(this._root, 'Root is undefined');\n return this._root;\n }\n\n createDirectory(sub = ''): Directory {\n return new Directory({\n type: this.type,\n path: getFullPath(this.path, sub),\n list: (path) => this._list(path),\n getOrCreateFile: (...args) => this.getOrCreateFile(...args),\n remove: () => this._delete(sub),\n onFlush: async () => {\n await Promise.all(Array.from(this._getFiles(sub)).map(([_, file]) => file.flush()));\n },\n });\n }\n\n getOrCreateFile(path: string, filename: string, opts?: any): File {\n const fullName = this._getFullFilename(path, filename);\n const existingFile = this._files.get(fullName);\n if (existingFile) {\n return existingFile;\n }\n const file = this._createFile(fullName);\n this._files.set(fullName, file);\n return file;\n }\n\n private _createFile(fullName: string): WebFile {\n return new WebFile({\n fileName: fullName,\n file: this._initialize().then((root) => root.getFileHandle(fullName, { create: true })),\n destroy: async () => {\n this._files.delete(fullName);\n const root = await this._initialize();\n return root.removeEntry(fullName);\n },\n });\n }\n\n private async _delete(path: string): Promise<void> {\n await Promise.all(\n Array.from(this._getFiles(path)).map(async ([path, file]) => {\n await file.destroy().catch((err: any) => log.warn(err));\n this._files.delete(path);\n }),\n );\n }\n\n async reset(): Promise<void> {\n await this._initialize();\n for await (const filename of await (this._root as any).keys()) {\n await this._root!.removeEntry(filename, { recursive: true }).catch((err: any) =>\n log.warn('failed to remove an entry', { filename, err }),\n );\n this._files.delete(filename);\n }\n this._root = undefined;\n }\n\n async close(): Promise<void> {\n await Promise.all(\n Array.from(this._files.values()).map((file) => {\n return file.close().catch((e) => log.warn('failed to close a file', { file: file.fileName, e }));\n }),\n );\n }\n\n private _getFullFilename(path: string, filename?: string): string {\n // Replace slashes with underscores. Because we can't have slashes in filenames in Browser File Handle API.\n if (filename) {\n return getFullPath(path, filename).replace(/\\//g, '_');\n } else {\n return path.replace(/\\//g, '_');\n }\n }\n\n async getDiskInfo(): Promise<DiskInfo> {\n let used = 0;\n\n const recurse = async (handle: FileSystemDirectoryHandle) => {\n const promises = [];\n\n for await (const entry of (handle as any).values()) {\n promises.push(\n (async () => {\n switch (entry.kind) {\n case 'file':\n used += await (entry as FileSystemFileHandle).getFile().then((f) => f.size);\n break;\n case 'directory':\n await recurse(entry as FileSystemDirectoryHandle);\n break;\n }\n })(),\n );\n }\n await Promise.all(promises);\n };\n\n await recurse(this._root!);\n\n return {\n used,\n };\n }\n}\n\n// TODO(mykola): Remove EventEmitter.\n// @trace.resource()\nexport class WebFile extends EventEmitter implements File {\n @trace.info()\n readonly fileName: string;\n\n private readonly _fileHandle: Promise<FileSystemFileHandle>;\n private readonly _destroy: () => Promise<void>;\n\n /**\n * Current view of the file contents.\n */\n private _buffer: Uint8Array | null = null;\n\n private _loadBufferPromise: Promise<void> | null = null;\n\n private _flushScheduled = false;\n private _flushPromise: Promise<void> = Promise.resolve();\n /**\n * Used to discard unnecessary scheduled flushes.\n * If _flushNow() is called with a lower sequence number it should early exit.\n */\n private _flushSequence = 0;\n\n //\n // Metrics\n //\n\n @trace.metricsCounter()\n private _flushes = new TimeSeriesCounter();\n\n @trace.metricsCounter()\n private _operations = new TimeSeriesCounter();\n\n @trace.metricsCounter()\n private _reads = new TimeSeriesCounter();\n\n @trace.metricsCounter()\n private _readBytes = new TimeSeriesCounter();\n\n @trace.metricsCounter()\n private _writes = new TimeSeriesCounter();\n\n @trace.metricsCounter()\n private _writeBytes = new TimeSeriesCounter();\n\n @trace.info()\n get _bufferSize() {\n return this._buffer?.length;\n }\n\n constructor({\n fileName,\n file,\n destroy,\n }: {\n file: Promise<FileSystemFileHandle>;\n fileName: string;\n destroy: () => Promise<void>;\n }) {\n super();\n this.fileName = fileName;\n this._fileHandle = file;\n this._destroy = destroy;\n\n void this._loadBufferGuarded();\n }\n\n type: StorageType = StorageType.WEBFS;\n\n //\n // random-access-storage library compatibility\n //\n\n // TODO(dmaretskyi): Are those all needed?\n readonly opened: boolean = true;\n readonly suspended: boolean = false;\n readonly closed: boolean = false;\n readonly unlinked: boolean = false;\n readonly writing: boolean = false;\n readonly readable: boolean = true;\n readonly writable: boolean = true;\n readonly deletable: boolean = true;\n readonly truncatable: boolean = true;\n readonly statable: boolean = true;\n\n destroyed = false;\n directory = '';\n // TODO(dmaretskyi): is this used?\n filename = '';\n native: RandomAccessStorage = {\n write: callbackify(this.write.bind(this)),\n read: callbackify(this.read.bind(this)),\n del: callbackify(this.del.bind(this)),\n stat: callbackify(this.stat.bind(this)),\n destroy: callbackify(this.destroy.bind(this)),\n truncate: callbackify(this.truncate?.bind(this)),\n } as any as RandomAccessStorage;\n\n private async _loadBuffer(): Promise<void> {\n const fileHandle = await this._fileHandle;\n const file = await fileHandle.getFile();\n this._buffer = new Uint8Array(await file.arrayBuffer());\n }\n\n private async _loadBufferGuarded(): Promise<void> {\n await (this._loadBufferPromise ??= this._loadBuffer());\n }\n\n // Do not call directly, use _flushLater or _flushNow.\n private async _flushCache(sequence: number): Promise<void> {\n if (this.destroyed || sequence < this._flushSequence) {\n return;\n }\n this._flushSequence = sequence + 1;\n\n this._flushes.inc();\n\n await this._loadBufferGuarded();\n invariant(this._buffer);\n\n const fileHandle = await this._fileHandle;\n const writable = await fileHandle.createWritable({ keepExistingData: true });\n await writable.write({ type: 'write', data: this._buffer as Uint8Array<ArrayBuffer>, position: 0 });\n await writable.close();\n }\n\n private _flushLater(): void {\n if (this._flushScheduled) {\n return;\n }\n\n const sequence = this._flushSequence;\n setTimeout(async () => {\n // Making sure only one flush can run at a time.\n await this._flushPromise;\n this._flushScheduled = false;\n this._flushPromise = this._flushCache(sequence).catch((err) => log.warn(err));\n });\n\n this._flushScheduled = true;\n }\n\n private async _flushNow(): Promise<void> {\n await this._flushPromise;\n this._flushPromise = this._flushCache(this._flushSequence).catch((err) => log.warn(err));\n await this._flushPromise;\n }\n\n async read(offset: number, size: number): Promise<Buffer> {\n this.assertNotDestroyed('Read');\n\n this._operations.inc();\n this._reads.inc();\n this._readBytes.inc(size);\n\n if (!this._buffer) {\n await this._loadBufferGuarded();\n invariant(this._buffer);\n }\n\n if (offset + size > this._buffer.length) {\n throw new Error('Read out of bounds');\n }\n\n // Copy data into a new buffer.\n return Buffer.from(this._buffer.slice(offset, offset + size));\n }\n\n async write(offset: number, data: Buffer): Promise<void> {\n this.assertNotDestroyed('Write');\n\n this._operations.inc();\n this._writes.inc();\n this._writeBytes.inc(data.length);\n\n if (!this._buffer) {\n await this._loadBufferGuarded();\n invariant(this._buffer);\n }\n\n if (offset + data.length <= this._buffer.length) {\n this._buffer.set(data, offset);\n } else {\n // TODO(dmaretskyi): Optimize re-allocations.\n const newCache = new Uint8Array(offset + data.length);\n newCache.set(this._buffer);\n newCache.set(data, offset);\n this._buffer = newCache;\n }\n\n this._flushLater();\n }\n\n async del(offset: number, size: number): Promise<void> {\n this.assertNotDestroyed('Del');\n\n this._operations.inc();\n\n if (offset < 0 || size <= 0) {\n return;\n }\n\n if (!this._buffer) {\n await this._loadBufferGuarded();\n invariant(this._buffer);\n }\n\n let leftoverSize = 0;\n if (offset + size < this._buffer.length) {\n leftoverSize = this._buffer.length - (offset + size);\n this._buffer.set(this._buffer.slice(offset + size, offset + size + leftoverSize), offset);\n }\n\n this._buffer = this._buffer.slice(0, offset + leftoverSize);\n\n this._flushLater();\n }\n\n async stat(): Promise<{ size: number }> {\n this.assertNotDestroyed('Truncate');\n\n this._operations.inc();\n\n // NOTE: This will load all data from the file just to get it's size. While this is a lot of overhead, this works ok for out use cases.\n if (!this._buffer) {\n await this._loadBufferGuarded();\n invariant(this._buffer);\n }\n\n return {\n size: this._buffer.length,\n };\n }\n\n async truncate(offset: number): Promise<void> {\n this.assertNotDestroyed('Truncate');\n\n this._operations.inc();\n\n if (!this._buffer) {\n await this._loadBufferGuarded();\n invariant(this._buffer);\n }\n\n this._buffer = this._buffer.slice(0, offset);\n\n this._flushLater();\n }\n\n async flush(): Promise<void> {\n this.assertNotDestroyed('Flush');\n\n await this._flushNow();\n }\n\n /**\n * It's best to avoid using this method as it doesn't really close a file.\n * We could update the _opened flag and add a guard like for destroyed, but this would break\n * the FileSystemFileHandle sharing required for browser tests to run, where writes are\n * not immediately visible if using different file handles.\n */\n async close(): Promise<void> {\n await this._flushNow();\n }\n\n @synchronized\n async destroy(): Promise<void> {\n if (!this.destroyed) {\n // We need to flush the buffer before destroying a file so that the call to a storage API\n // finds an entry for deletion\n await this._flushNow();\n this.destroyed = true;\n return await this._destroy();\n }\n }\n\n private assertNotDestroyed(operation: string): void {\n if (this.destroyed) {\n throw new Error(`${operation} on a destroyed or closed file`);\n }\n }\n}\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport { MemoryStorage, type Storage, type StorageConstructor, StorageType } from '../common';\nimport { IDbStorage } from './idb-storage';\nimport { WebFS } from './web-fs';\n\nexport const createStorage: StorageConstructor = ({ type, root = '' } = {}): Storage => {\n if (type === undefined) {\n return new IDbStorage(root);\n }\n\n switch (type) {\n case StorageType.RAM: {\n return new MemoryStorage(root);\n }\n\n case StorageType.IDB:\n case StorageType.CHROME:\n case StorageType.FIREFOX: {\n return new IDbStorage(root);\n }\n\n case StorageType.WEBFS: {\n return new WebFS(root);\n }\n\n default: {\n throw new Error(`Invalid type: ${type}`);\n }\n }\n};\n"],
5
- "mappings": "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",
6
- "names": ["DELIM", "idb", "self", "err", "i", "invariant", "DELIM", "IDbStorage", "AbstractStorage", "type", "StorageType", "IDB", "_db", "_store", "_initialized", "_fileStorage", "path", "_createFileStorage", "database", "idb", "res", "Promise", "resolve", "getdb", "create", "close", "_closeFilesInPath", "reset", "_remove", "_destroy", "Error", "_createFile", "filename", "file", "getFullPath", "destroy", "cb", "then", "db", "lowerBound", "upperBound", "range", "IDBKeyRange", "bound", "transaction", "objectStore", "delete", "oncomplete", "destroyed", "unlinked", "closed", "onerror", "error", "deletable", "_loadFiles", "invariant", "request", "openCursor", "reject", "onsuccess", "event", "cursor", "target", "result", "String", "key", "split", "_files", "has", "set", "wrapFile", "continue", "_getFiles", "EventEmitter", "callbackify", "synchronized", "invariant", "log", "TimeSeriesCounter", "trace", "WebFS", "_files", "Map", "type", "StorageType", "WEBFS", "_root", "path", "size", "_getFiles", "fullName", "_getFullFilename", "entries", "filter", "file", "includes", "destroyed", "_list", "root", "_initialize", "entry", "keys", "startsWith", "endsWith", "push", "slice", "length", "navigator", "storage", "getDirectory", "invariant", "createDirectory", "sub", "Directory", "getFullPath", "list", "getOrCreateFile", "args", "remove", "_delete", "onFlush", "Promise", "all", "Array", "from", "map", "_", "flush", "filename", "opts", "existingFile", "get", "_createFile", "set", "WebFile", "fileName", "then", "getFileHandle", "create", "destroy", "delete", "removeEntry", "catch", "err", "log", "warn", "reset", "recursive", "undefined", "close", "values", "e", "replace", "getDiskInfo", "used", "recurse", "handle", "promises", "kind", "getFile", "f", "EventEmitter", "_fileHandle", "_destroy", "_buffer", "_loadBufferPromise", "_flushScheduled", "_flushPromise", "resolve", "_flushSequence", "_flushes", "TimeSeriesCounter", "_operations", "_reads", "_readBytes", "_writes", "_writeBytes", "_bufferSize", "_loadBufferGuarded", "opened", "suspended", "closed", "unlinked", "writing", "readable", "writable", "deletable", "truncatable", "statable", "directory", "native", "write", "callbackify", "bind", "read", "del", "stat", "truncate", "_loadBuffer", "fileHandle", "Uint8Array", "arrayBuffer", "_flushCache", "sequence", "inc", "createWritable", "keepExistingData", "data", "position", "_flushLater", "setTimeout", "_flushNow", "offset", "assertNotDestroyed", "Error", "Buffer", "newCache", "leftoverSize", "operation", "info", "metricsCounter", "createStorage", "type", "root", "undefined", "IDbStorage", "StorageType", "RAM", "MemoryStorage", "IDB", "CHROME", "FIREFOX", "WEBFS", "WebFS", "Error"]
5
+ "mappings": "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",
6
+ "names": ["DELIM", "idb", "self", "err", "i", "invariant", "_store", "_initialized", "_fileStorage", "path", "_createFileStorage", "database", "_db", "Promise", "resolve", "res", "getdb", "close", "_createFile", "filename", "destroy", "cb", "then", "db", "lowerBound", "upperBound", "range", "IDBKeyRange", "transaction", "objectStore", "oncomplete", "destroyed", "unlinked", "file", "closed", "deletable", "_loadFiles", "invariant", "request", "openCursor", "reject", "onerror", "onsuccess", "event", "cursor", "set", "getFullPath", "wrapFile", "continue", "callbackify", "synchronized", "invariant", "log", "TimeSeriesCounter", "Directory", "StorageType", "getFullPath", "__dxlog_file", "_files", "type", "StorageType", "_root", "path", "_getFiles", "fullName", "filter", "file", "includes", "root", "entry", "entries", "length", "invariant", "createDirectory", "Directory", "getFullPath", "list", "_list", "getOrCreateFile", "args", "remove", "_delete", "sub", "onFlush", "all", "_getFullFilename", "existingFile", "set", "_createFile", "WebFile", "fileName", "create", "destroy", "delete", "_initialize", "removeEntry", "Promise", "catch", "err", "warn", "filename", "recursive", "close", "e", "recurse", "promises", "used", "_fileHandle", "_destroy", "_loadBufferPromise", "_flushScheduled", "_flushPromise", "_operations", "TimeSeriesCounter", "_reads", "_readBytes", "_writes", "_writeBytes", "_bufferSize", "_buffer", "_loadBufferGuarded", "suspended", "closed", "unlinked", "writing", "readable", "writable", "deletable", "truncatable", "statable", "destroyed", "directory", "native", "write", "read", "callbackify", "bind", "del", "stat", "truncate", "fileHandle", "getFile", "Uint8Array", "sequence", "_flushes", "keepExistingData", "data", "position", "_flushLater", "setTimeout", "assertNotDestroyed", "inc", "offset", "newCache", "size", "leftoverSize", "_flushNow", "info", "metricsCounter", "createStorage", "type", "root", "undefined", "IDbStorage", "StorageType", "RAM", "MemoryStorage", "IDB", "CHROME", "FIREFOX", "WEBFS", "WebFS", "Error"]
7
7
  }
@@ -113,12 +113,7 @@ var pifyFields = (object, type, fields) => {
113
113
  type,
114
114
  operation: field,
115
115
  elapsed
116
- }, {
117
- F: __dxlog_file,
118
- L: 62,
119
- S: void 0,
120
- C: (f, a) => f(...a)
121
- });
116
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 19, S: void 0 });
122
117
  }
123
118
  return res;
124
119
  };
@@ -182,28 +177,13 @@ var AbstractStorage = class {
182
177
  */
183
178
  async reset() {
184
179
  try {
185
- log2.info("Erasing all data...", void 0, {
186
- F: __dxlog_file2,
187
- L: 60,
188
- S: this,
189
- C: (f, a) => f(...a)
190
- });
180
+ log2.info("Erasing all data...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 50, S: this });
191
181
  await this._closeFilesInPath("");
192
182
  await this._remove("");
193
183
  await this._destroy();
194
- log2("Erased...", void 0, {
195
- F: __dxlog_file2,
196
- L: 64,
197
- S: this,
198
- C: (f, a) => f(...a)
199
- });
184
+ log2("Erased...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 54, S: this });
200
185
  } catch (err) {
201
- log2.catch(err, void 0, {
202
- F: __dxlog_file2,
203
- L: 66,
204
- S: this,
205
- C: (f, a) => f(...a)
206
- });
186
+ log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 56, S: this });
207
187
  }
208
188
  }
209
189
  async _list(path) {
@@ -256,12 +236,7 @@ var AbstractStorage = class {
256
236
  ].filter(([path2, file]) => path2.includes(fullPath) && file.destroyed !== true));
257
237
  }
258
238
  async _closeFilesInPath(path) {
259
- await Promise.all(Array.from((await this._getFiles(path)).values()).map((file) => file.close().catch((err) => log2.catch(err, void 0, {
260
- F: __dxlog_file2,
261
- L: 134,
262
- S: this,
263
- C: (f, a) => f(...a)
264
- }))));
239
+ await Promise.all(Array.from((await this._getFiles(path)).values()).map((file) => file.close().catch((err) => log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 109, S: this }))));
265
240
  }
266
241
  async close() {
267
242
  await this._closeFilesInPath("");
@@ -269,12 +244,7 @@ var AbstractStorage = class {
269
244
  // TODO(burdon): Delete directory (not just listed files).
270
245
  async _remove(path) {
271
246
  await Promise.all(Array.from(await this._getFiles(path)).map(([path2, file]) => {
272
- return file.destroy().then(() => this._files.delete(path2)).catch((err) => log2.error(err.message, void 0, {
273
- F: __dxlog_file2,
274
- L: 149,
275
- S: this,
276
- C: (f, a) => f(...a)
277
- }));
247
+ return file.destroy().then(() => this._files.delete(path2)).catch((err) => log2.error(err.message, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 117, S: this }));
278
248
  }));
279
249
  }
280
250
  };
@@ -338,4 +308,4 @@ export {
338
308
  StorageType,
339
309
  MemoryStorage
340
310
  };
341
- //# sourceMappingURL=chunk-V26DCZ2O.mjs.map
311
+ //# sourceMappingURL=chunk-V3ALAPAH.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/common/utils.ts", "../../../src/common/directory.ts", "../../../src/common/file.ts", "../../../src/common/abstract-storage.ts", "../../../src/common/storage.ts", "../../../src/common/memory-storage.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { join } from 'node:path';\n\n// TODO(burdon): Document.\nexport const stringDiff = (first: string, second: string) => first.split(second).join('');\n\nexport const getFullPath = (root: string, path: string) => join(root, stringDiff(path, root));\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { type File } from './file';\nimport { type StorageType } from './storage';\nimport { getFullPath } from './utils';\n\nexport type DirectoryProps = {\n type: StorageType;\n path: string;\n // TODO(burdon): Create interface for these methods (shared with AbstractStorage).\n list: (path: string) => Promise<string[]>;\n getOrCreateFile: (path: string, filename: string, opts?: any) => File;\n remove: () => Promise<void>;\n onFlush?: () => Promise<void>;\n};\n\n/**\n * Wraps a directory in the storage file system.\n */\nexport class Directory {\n public readonly type: StorageType;\n public readonly path: string;\n // TODO(burdon): Create interface for these methods (shared with AbstractStorage).\n private readonly _list: (path: string) => Promise<string[]>;\n private readonly _getOrCreateFile: (path: string, filename: string, opts?: any) => File;\n private readonly _remove: () => Promise<void>;\n private readonly _onFlush?: () => Promise<void>;\n\n constructor({ type, path, list, getOrCreateFile, remove, onFlush }: DirectoryProps) {\n this.type = type;\n this.path = path;\n this._list = list;\n this._getOrCreateFile = getOrCreateFile;\n this._remove = remove;\n this._onFlush = onFlush;\n }\n\n toString(): string {\n return `Directory(${JSON.stringify({ type: this.type, path: this.path })})`;\n }\n\n /**\n * Create a new sub-directory.\n */\n createDirectory(path: string): Directory {\n return new Directory({\n type: this.type,\n path: getFullPath(this.path, path),\n list: this._list,\n getOrCreateFile: this._getOrCreateFile,\n remove: this._remove,\n });\n }\n\n /**\n * Get all files in the current directory.\n */\n list(): Promise<string[]> {\n return this._list(this.path);\n }\n\n /**\n * Get or create a new file.\n */\n getOrCreateFile(filename: string, opts?: any): File {\n return this._getOrCreateFile(this.path, filename, opts);\n }\n\n async flush(): Promise<void> {\n await this._onFlush?.();\n }\n\n /**\n * Close and delete all files in the directory and all its sub-directories.\n */\n async delete(): Promise<void> {\n await this._remove();\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport pify from 'pify';\nimport type { FileStat, RandomAccessStorage, RandomAccessStorageProperties } from 'random-access-storage';\n\nimport { log } from '@dxos/log';\n\nimport { type StorageType } from './storage';\n\nconst MAX_STORAGE_OPERATION_TIME = 50;\n\n/**\n * Random access file wrapper.\n * https://github.com/random-access-storage/random-access-storage\n */\nexport interface File extends RandomAccessStorageProperties {\n readonly destroyed: boolean;\n\n // TODO(burdon): Can we remove these since they are not standard across implementations?\n readonly directory: string;\n readonly filename: string;\n\n // Added by factory.\n readonly type: StorageType;\n readonly native: RandomAccessStorage;\n\n write(offset: number, data: Buffer): Promise<void>;\n read(offset: number, size: number): Promise<Buffer>;\n del(offset: number, size: number): Promise<void>;\n stat(): Promise<FileStat>;\n close(): Promise<Error | void>;\n destroy(): Promise<Error | void>;\n\n /**\n * Save changes to disk.\n */\n flush?(): Promise<void>;\n\n // Not supported in node, memory.\n truncate?(offset: number): Promise<void>;\n\n // random-access-memory only.\n clone?(): RandomAccessStorage;\n}\n\nconst pifyFields = (object: any, type: StorageType, fields: string[]) => {\n for (const field of fields) {\n if (!object[field]) {\n // TODO(burdon): Suppress warning and throw error if used.\n // console.warn(`Field not supported for type: ${JSON.stringify({ type, field })}`);\n } else {\n const fn = pify(object[field].bind(object));\n object[field] = async (...args: any) => {\n const before = performance.now();\n\n const res = await fn(...args);\n\n const elapsed = performance.now() - before;\n if (elapsed > MAX_STORAGE_OPERATION_TIME) {\n log('Slow storage operation', { type, operation: field, elapsed });\n }\n\n return res;\n };\n }\n }\n\n return object;\n};\n\n/**\n * Construct async File wrapper.\n * NOTE: This is safe since these are interface methods only (not used internally).\n */\nexport const wrapFile = (native: RandomAccessStorage, type: StorageType): File => {\n const file = pifyFields(native, type, ['write', 'read', 'del', 'stat', 'close', 'destroy', 'truncate']);\n return Object.assign(file, { type, native });\n};\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport { join } from 'node:path';\nimport { inspect } from 'node:util';\nimport type { RandomAccessStorage } from 'random-access-storage';\n\nimport { inspectObject } from '@dxos/debug';\nimport { log } from '@dxos/log';\n\nimport { Directory } from './directory';\nimport { type File, wrapFile } from './file';\nimport { type Storage, type StorageType } from './storage';\nimport { getFullPath } from './utils';\n\n/**\n * Base class for all storage implementations.\n * https://github.com/random-access-storage\n * https://github.com/random-access-storage/random-access-storage\n */\n// TODO(dmaretskyi): Remove this class.\nexport abstract class AbstractStorage implements Storage {\n protected readonly _files = new Map<string, File>();\n\n public abstract readonly type: StorageType;\n\n // TODO(burdon): Make required.\n constructor(public readonly path: string) {}\n\n [inspect.custom](): string {\n return inspectObject(this);\n }\n\n toJSON(): { type: StorageType; path: string } {\n return { type: this.type, path: this.path };\n }\n\n public get size() {\n return this._files.size;\n }\n\n // TODO(burdon): Make required.\n public createDirectory(sub = ''): Directory {\n // invariant(sub.length);\n return new Directory({\n type: this.type,\n path: getFullPath(this.path, sub),\n list: this._list.bind(this),\n getOrCreateFile: (...args) => this.getOrCreateFile(...args),\n remove: () => this._remove(sub),\n });\n }\n\n /**\n * Delete all files.\n */\n async reset(): Promise<void> {\n try {\n log.info('Erasing all data...');\n await this._closeFilesInPath('');\n await this._remove('');\n await this._destroy();\n log('Erased...');\n } catch (err: any) {\n log.catch(err);\n }\n }\n\n protected async _list(path: string): Promise<string[]> {\n // TODO(dmaretskyi): Fix me.\n return Array.from((await this._getFiles(path)).keys()).map((filename) => {\n let name = filename.replace(path, '');\n if (name.startsWith('/')) {\n name = name.substring(1);\n }\n return name;\n });\n }\n\n protected getOrCreateFile(path: string, filename: string, opts?: any): File {\n const fullPath = join(path, filename);\n\n let native;\n let file = this._getFileIfExists(fullPath);\n if (file) {\n if (!file.closed) {\n return file;\n }\n\n native = this._openFile(file.native);\n }\n\n if (!native) {\n native = this._createFile(path, filename, opts);\n }\n\n file = wrapFile(native, this.type);\n this._files.set(fullPath, file);\n return file;\n }\n\n protected _destroy(): Promise<void> | undefined {\n return undefined;\n }\n\n /**\n * Attempt to reopen file.\n */\n protected _openFile(file: RandomAccessStorage): RandomAccessStorage | undefined {\n return undefined;\n }\n\n protected abstract _createFile(path: string, filename: string, opts?: any): RandomAccessStorage;\n\n private _getFileIfExists(filename: string): File | undefined {\n if (this._files.has(filename)) {\n const file = this._files.get(filename);\n if (file && !file.destroyed) {\n return file;\n }\n }\n }\n\n protected async _getFiles(path: string): Promise<Map<string, File>> {\n const fullPath = getFullPath(this.path, path);\n return new Map(\n [...this._files.entries()].filter(([path, file]) => path.includes(fullPath) && file.destroyed !== true),\n );\n }\n\n protected async _closeFilesInPath(path: string): Promise<void> {\n await Promise.all(\n Array.from((await this._getFiles(path)).values()).map((file) => file.close().catch((err: any) => log.catch(err))),\n );\n }\n\n async close(): Promise<void> {\n await this._closeFilesInPath('');\n }\n\n // TODO(burdon): Delete directory (not just listed files).\n protected async _remove(path: string): Promise<void> {\n await Promise.all(\n Array.from(await this._getFiles(path)).map(([path, file]) => {\n return file\n .destroy()\n .then(() => this._files.delete(path))\n .catch((err: any) => log.error(err.message));\n }),\n );\n }\n}\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport { type Directory } from './directory';\n\n// TODO(burdon): Reconcile with ConfigProto.\nexport enum StorageType {\n RAM = 'ram',\n IDB = 'idb',\n /**\n * @deprecated\n */\n CHROME = 'chrome',\n /**\n * @deprecated\n */\n FIREFOX = 'firefox',\n NODE = 'node',\n /**\n * @deprecated\n */\n WEBFS = 'webfs',\n}\n\nexport type DiskInfo = {\n /**\n * Bytes.\n */\n used: number;\n};\n\nexport interface Storage {\n readonly path: string;\n readonly type: StorageType;\n readonly size: number;\n\n getDiskInfo?(): Promise<DiskInfo>;\n\n // TODO(burdon): Make required.\n createDirectory: (path?: string) => Directory;\n reset: () => Promise<void>;\n close: () => Promise<void>;\n}\n\nexport type StorageConstructor = (params?: { type?: StorageType; root?: string }) => Storage;\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport ram from 'random-access-memory';\nimport { type Callback, type RandomAccessStorage } from 'random-access-storage';\n\nimport { arrayToBuffer } from '@dxos/util';\n\nimport { AbstractStorage } from './abstract-storage';\nimport { type DiskInfo, StorageType } from './storage';\n\n/**\n * Storage interface implementation for RAM.\n * https://github.com/random-access-storage/random-access-memory\n */\nexport class MemoryStorage extends AbstractStorage {\n public override type: StorageType = StorageType.RAM;\n\n protected override _createFile(path: string, filename: string): RandomAccessStorage {\n return this._patchFile(ram());\n }\n\n protected override _openFile(file: RandomAccessStorage): RandomAccessStorage {\n const newFile = file.clone!();\n (newFile as any).closed = false;\n return this._patchFile(newFile);\n }\n\n private _patchFile(file: RandomAccessStorage): RandomAccessStorage {\n // Patch required to make consistent across platforms.\n const trueRead = file.read.bind(file);\n\n file.read = (offset: number, size: number, cb: Callback<Buffer>) =>\n trueRead(offset, size, (err: Error | null, data?: Buffer) => {\n if (err) {\n return cb(err);\n } else {\n return cb(err, arrayToBuffer(data!));\n }\n });\n\n return file;\n }\n\n async getDiskInfo(): Promise<DiskInfo> {\n let used = 0;\n\n for (const file of this._files.values()) {\n const size = (file as any).length;\n used += Number.isNaN(size) ? 0 : size;\n }\n\n return {\n used,\n };\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAASA,YAAY;AAGd,IAAMC,aAAa,CAACC,OAAeC,WAAmBD,MAAME,MAAMD,MAAAA,EAAQE,KAAK,EAAA;AAE/E,IAAMC,cAAc,CAACC,MAAcC,SAAiBH,KAAKE,MAAMN,WAAWO,MAAMD,IAAAA,CAAAA;;;ACYhF,IAAME,YAAN,MAAMA,WAAAA;EACKC;EACAC;;EAECC;EACAC;EACAC;EACAC;EAEjB,YAAY,EAAEL,MAAMC,MAAMK,MAAMC,iBAAiBC,QAAQC,QAAO,GAAoB;AAClF,SAAKT,OAAOA;AACZ,SAAKC,OAAOA;AACZ,SAAKC,QAAQI;AACb,SAAKH,mBAAmBI;AACxB,SAAKH,UAAUI;AACf,SAAKH,WAAWI;EAClB;EAEAC,WAAmB;AACjB,WAAO,aAAaC,KAAKC,UAAU;MAAEZ,MAAM,KAAKA;MAAMC,MAAM,KAAKA;IAAK,CAAA,CAAA;EACxE;;;;EAKAY,gBAAgBZ,MAAyB;AACvC,WAAO,IAAIF,WAAU;MACnBC,MAAM,KAAKA;MACXC,MAAMa,YAAY,KAAKb,MAAMA,IAAAA;MAC7BK,MAAM,KAAKJ;MACXK,iBAAiB,KAAKJ;MACtBK,QAAQ,KAAKJ;IACf,CAAA;EACF;;;;EAKAE,OAA0B;AACxB,WAAO,KAAKJ,MAAM,KAAKD,IAAI;EAC7B;;;;EAKAM,gBAAgBQ,UAAkBC,MAAkB;AAClD,WAAO,KAAKb,iBAAiB,KAAKF,MAAMc,UAAUC,IAAAA;EACpD;EAEA,MAAMC,QAAuB;AAC3B,UAAM,KAAKZ,WAAQ;EACrB;;;;EAKA,MAAMa,SAAwB;AAC5B,UAAM,KAAKd,QAAO;EACpB;AACF;;;AC5EA,OAAOe,UAAU;AAGjB,SAASC,WAAW;;AAIpB,IAAMC,6BAA6B;AAoCnC,IAAMC,aAAa,CAACC,QAAaC,MAAmBC,WAAAA;AAClD,aAAWC,SAASD,QAAQ;AAC1B,QAAI,CAACF,OAAOG,KAAAA,GAAQ;IAGpB,OAAO;AACL,YAAMC,KAAKR,KAAKI,OAAOG,KAAAA,EAAOE,KAAKL,MAAAA,CAAAA;AACnCA,aAAOG,KAAAA,IAAS,UAAUG,SAAAA;AACxB,cAAMC,SAASC,YAAYC,IAAG;AAE9B,cAAMC,MAAM,MAAMN,GAAAA,GAAME,IAAAA;AAExB,cAAMK,UAAUH,YAAYC,IAAG,IAAKF;AACpC,YAAII,UAAUb,4BAA4B;AACxCD,cAAI,0BAA0B;YAAEI;YAAMW,WAAWT;YAAOQ;UAAQ,GAAA;;;;;;QAClE;AAEA,eAAOD;MACT;IACF;EACF;AAEA,SAAOV;AACT;AAMO,IAAMa,WAAW,CAACC,QAA6Bb,SAAAA;AACpD,QAAMc,OAAOhB,WAAWe,QAAQb,MAAM;IAAC;IAAS;IAAQ;IAAO;IAAQ;IAAS;IAAW;GAAW;AACtG,SAAOe,OAAOC,OAAOF,MAAM;IAAEd;IAAMa;EAAO,CAAA;AAC5C;;;AC3EA,SAASI,QAAAA,aAAY;AACrB,SAASC,eAAe;AAGxB,SAASC,qBAAqB;AAC9B,SAASC,OAAAA,YAAW;;AAab,IAAeC,kBAAf,MAAeA;;EACDC,SAAS,oBAAIC,IAAAA;;EAKhC,YAA4BC,MAAc;SAAdA,OAAAA;EAAe;EAE3C,CAACC,QAAQC,MAAM,IAAY;AACzB,WAAOC,cAAc,IAAI;EAC3B;EAEAC,SAA8C;AAC5C,WAAO;MAAEC,MAAM,KAAKA;MAAML,MAAM,KAAKA;IAAK;EAC5C;EAEA,IAAWM,OAAO;AAChB,WAAO,KAAKR,OAAOQ;EACrB;;EAGOC,gBAAgBC,MAAM,IAAe;AAE1C,WAAO,IAAIC,UAAU;MACnBJ,MAAM,KAAKA;MACXL,MAAMU,YAAY,KAAKV,MAAMQ,GAAAA;MAC7BG,MAAM,KAAKC,MAAMC,KAAK,IAAI;MAC1BC,iBAAiB,IAAIC,SAAS,KAAKD,gBAAe,GAAIC,IAAAA;MACtDC,QAAQ,MAAM,KAAKC,QAAQT,GAAAA;IAC7B,CAAA;EACF;;;;EAKA,MAAMU,QAAuB;AAC3B,QAAI;AACFC,MAAAA,KAAIC,KAAK,uBAAA,QAAA;;;;;;AACT,YAAM,KAAKC,kBAAkB,EAAA;AAC7B,YAAM,KAAKJ,QAAQ,EAAA;AACnB,YAAM,KAAKK,SAAQ;AACnBH,MAAAA,KAAI,aAAA,QAAA;;;;;;IACN,SAASI,KAAU;AACjBJ,MAAAA,KAAIK,MAAMD,KAAAA,QAAAA;;;;;;IACZ;EACF;EAEA,MAAgBX,MAAMZ,MAAiC;AAErD,WAAOyB,MAAMC,MAAM,MAAM,KAAKC,UAAU3B,IAAAA,GAAO4B,KAAI,CAAA,EAAIC,IAAI,CAACC,aAAAA;AAC1D,UAAIC,OAAOD,SAASE,QAAQhC,MAAM,EAAA;AAClC,UAAI+B,KAAKE,WAAW,GAAA,GAAM;AACxBF,eAAOA,KAAKG,UAAU,CAAA;MACxB;AACA,aAAOH;IACT,CAAA;EACF;EAEUjB,gBAAgBd,MAAc8B,UAAkBK,MAAkB;AAC1E,UAAMC,WAAWC,MAAKrC,MAAM8B,QAAAA;AAE5B,QAAIQ;AACJ,QAAIC,OAAO,KAAKC,iBAAiBJ,QAAAA;AACjC,QAAIG,MAAM;AACR,UAAI,CAACA,KAAKE,QAAQ;AAChB,eAAOF;MACT;AAEAD,eAAS,KAAKI,UAAUH,KAAKD,MAAM;IACrC;AAEA,QAAI,CAACA,QAAQ;AACXA,eAAS,KAAKK,YAAY3C,MAAM8B,UAAUK,IAAAA;IAC5C;AAEAI,WAAOK,SAASN,QAAQ,KAAKjC,IAAI;AACjC,SAAKP,OAAO+C,IAAIT,UAAUG,IAAAA;AAC1B,WAAOA;EACT;EAEUjB,WAAsC;AAC9C,WAAOwB;EACT;;;;EAKUJ,UAAUH,MAA4D;AAC9E,WAAOO;EACT;EAIQN,iBAAiBV,UAAoC;AAC3D,QAAI,KAAKhC,OAAOiD,IAAIjB,QAAAA,GAAW;AAC7B,YAAMS,OAAO,KAAKzC,OAAOkD,IAAIlB,QAAAA;AAC7B,UAAIS,QAAQ,CAACA,KAAKU,WAAW;AAC3B,eAAOV;MACT;IACF;EACF;EAEA,MAAgBZ,UAAU3B,MAA0C;AAClE,UAAMoC,WAAW1B,YAAY,KAAKV,MAAMA,IAAAA;AACxC,WAAO,IAAID,IACT;SAAI,KAAKD,OAAOoD,QAAO;MAAIC,OAAO,CAAC,CAACnD,OAAMuC,IAAAA,MAAUvC,MAAKoD,SAAShB,QAAAA,KAAaG,KAAKU,cAAc,IAAA,CAAA;EAEtG;EAEA,MAAgB5B,kBAAkBrB,MAA6B;AAC7D,UAAMqD,QAAQC,IACZ7B,MAAMC,MAAM,MAAM,KAAKC,UAAU3B,IAAAA,GAAOuD,OAAM,CAAA,EAAI1B,IAAI,CAACU,SAASA,KAAKiB,MAAK,EAAGhC,MAAM,CAACD,QAAaJ,KAAIK,MAAMD,KAAAA,QAAAA;;;;;;EAE/G;EAEA,MAAMiC,QAAuB;AAC3B,UAAM,KAAKnC,kBAAkB,EAAA;EAC/B;;EAGA,MAAgBJ,QAAQjB,MAA6B;AACnD,UAAMqD,QAAQC,IACZ7B,MAAMC,KAAK,MAAM,KAAKC,UAAU3B,IAAAA,CAAAA,EAAO6B,IAAI,CAAC,CAAC7B,OAAMuC,IAAAA,MAAK;AACtD,aAAOA,KACJkB,QAAO,EACPC,KAAK,MAAM,KAAK5D,OAAO6D,OAAO3D,KAAAA,CAAAA,EAC9BwB,MAAM,CAACD,QAAaJ,KAAIyC,MAAMrC,IAAIsC,SAAO,QAAA;;;;;;IAC9C,CAAA,CAAA;EAEJ;AACF;;;ACjJO,IAAKC,cAAAA,0BAAAA,cAAAA;;;AAKT,EAAAA,aAAA,QAAA,IAAA;AAIA,EAAAA,aAAA,SAAA,IAAA;;AAKA,EAAAA,aAAA,OAAA,IAAA;SAdSA;;;;ACHZ,OAAOC,SAAS;AAGhB,SAASC,qBAAqB;AASvB,IAAMC,gBAAN,cAA4BC,gBAAAA;EACjBC,OAAoBC,YAAYC;EAE7BC,YAAYC,MAAcC,UAAuC;AAClF,WAAO,KAAKC,WAAWC,IAAAA,CAAAA;EACzB;EAEmBC,UAAUC,MAAgD;AAC3E,UAAMC,UAAUD,KAAKE,MAAK;AACzBD,YAAgBE,SAAS;AAC1B,WAAO,KAAKN,WAAWI,OAAAA;EACzB;EAEQJ,WAAWG,MAAgD;AAEjE,UAAMI,WAAWJ,KAAKK,KAAKC,KAAKN,IAAAA;AAEhCA,SAAKK,OAAO,CAACE,QAAgBC,MAAcC,OACzCL,SAASG,QAAQC,MAAM,CAACE,KAAmBC,SAAAA;AACzC,UAAID,KAAK;AACP,eAAOD,GAAGC,GAAAA;MACZ,OAAO;AACL,eAAOD,GAAGC,KAAKE,cAAcD,IAAAA,CAAAA;MAC/B;IACF,CAAA;AAEF,WAAOX;EACT;EAEA,MAAMa,cAAiC;AACrC,QAAIC,OAAO;AAEX,eAAWd,QAAQ,KAAKe,OAAOC,OAAM,GAAI;AACvC,YAAMR,OAAQR,KAAaiB;AAC3BH,cAAQI,OAAOC,MAAMX,IAAAA,IAAQ,IAAIA;IACnC;AAEA,WAAO;MACLM;IACF;EACF;AACF;",
6
- "names": ["join", "stringDiff", "first", "second", "split", "join", "getFullPath", "root", "path", "Directory", "type", "path", "_list", "_getOrCreateFile", "_remove", "_onFlush", "list", "getOrCreateFile", "remove", "onFlush", "toString", "JSON", "stringify", "createDirectory", "getFullPath", "filename", "opts", "flush", "delete", "pify", "log", "MAX_STORAGE_OPERATION_TIME", "pifyFields", "object", "type", "fields", "field", "fn", "bind", "args", "before", "performance", "now", "res", "elapsed", "operation", "wrapFile", "native", "file", "Object", "assign", "join", "inspect", "inspectObject", "log", "AbstractStorage", "_files", "Map", "path", "inspect", "custom", "inspectObject", "toJSON", "type", "size", "createDirectory", "sub", "Directory", "getFullPath", "list", "_list", "bind", "getOrCreateFile", "args", "remove", "_remove", "reset", "log", "info", "_closeFilesInPath", "_destroy", "err", "catch", "Array", "from", "_getFiles", "keys", "map", "filename", "name", "replace", "startsWith", "substring", "opts", "fullPath", "join", "native", "file", "_getFileIfExists", "closed", "_openFile", "_createFile", "wrapFile", "set", "undefined", "has", "get", "destroyed", "entries", "filter", "includes", "Promise", "all", "values", "close", "destroy", "then", "delete", "error", "message", "StorageType", "ram", "arrayToBuffer", "MemoryStorage", "AbstractStorage", "type", "StorageType", "RAM", "_createFile", "path", "filename", "_patchFile", "ram", "_openFile", "file", "newFile", "clone", "closed", "trueRead", "read", "bind", "offset", "size", "cb", "err", "data", "arrayToBuffer", "getDiskInfo", "used", "_files", "values", "length", "Number", "isNaN"]
5
+ "mappings": "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",
6
+ "names": ["join", "stringDiff", "first", "second", "split", "getFullPath", "root", "path", "Directory", "type", "path", "_list", "_getOrCreateFile", "_remove", "_onFlush", "list", "getOrCreateFile", "remove", "onFlush", "toString", "JSON", "stringify", "createDirectory", "getFullPath", "filename", "opts", "flush", "delete", "pify", "log", "MAX_STORAGE_OPERATION_TIME", "field", "object", "before", "performance", "res", "fn", "args", "elapsed", "type", "operation", "native", "join", "inspect", "inspectObject", "log", "__dxlog_file", "_files", "path", "inspect", "custom", "toJSON", "type", "size", "createDirectory", "Directory", "getFullPath", "list", "_list", "getOrCreateFile", "args", "remove", "_remove", "sub", "log", "_destroy", "err", "catch", "Array", "from", "startsWith", "name", "substring", "native", "file", "_getFileIfExists", "fullPath", "closed", "wrapFile", "destroyed", "Map", "filter", "_closeFilesInPath", "close", "destroy", "StorageType", "ram", "arrayToBuffer", "MemoryStorage", "AbstractStorage", "type", "StorageType", "RAM", "_createFile", "path", "filename", "_patchFile", "ram", "_openFile", "file", "newFile", "clone", "closed", "trueRead", "read", "bind", "offset", "size", "cb", "err", "data", "arrayToBuffer", "getDiskInfo", "used", "_files", "values", "length", "Number", "isNaN"]
7
7
  }