@dxos/feed-store 0.8.4-main.dedc0f3 → 0.8.4-main.ead640a

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.
@@ -195,8 +195,8 @@ var FeedWrapper = class {
195
195
  put(index, data, proof) {
196
196
  return promisify(this._hypercore.put.bind(this._hypercore))(index, data, proof);
197
197
  }
198
- putBuffer(...args) {
199
- return promisify(this._hypercore.putBuffer.bind(this._hypercore))(...args);
198
+ putBuffer(index, data, proof, peer) {
199
+ return promisify(this._hypercore._putBuffer.bind(this._hypercore))(index, data, proof, peer);
200
200
  }
201
201
  /**
202
202
  * Clear and check for integrity.
@@ -568,4 +568,4 @@ export {
568
568
  FeedFactory,
569
569
  FeedStore
570
570
  };
571
- //# sourceMappingURL=chunk-RZXUVQ4A.mjs.map
571
+ //# sourceMappingURL=chunk-4RW534M7.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/feed-wrapper.ts", "../../../src/feed-factory.ts", "../../../src/feed-store.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { inspect } from 'node:util';\nimport { promisify } from 'node:util';\n\nimport { Readable, Transform } from 'streamx';\n\nimport { Trigger } from '@dxos/async';\nimport { StackTrace, inspectObject } from '@dxos/debug';\nimport type { Hypercore, HypercoreProperties, ReadStreamOptions } from '@dxos/hypercore';\nimport { assertArgument, invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Directory } from '@dxos/random-access-storage';\nimport { arrayToBuffer, rangeFromTo } from '@dxos/util';\nimport type { GetOptions, Proof } from '@dxos/vendor-hypercore/hypercore';\n\nimport { type FeedWriter, type WriteReceipt } from './feed-writer';\n\n/**\n * Async feed wrapper.\n */\nexport class FeedWrapper<T extends {}> {\n private _hypercore: Hypercore<T>;\n private readonly _pendingWrites = new Set<StackTrace>();\n\n // Pending while writes are happening. Resolves when there are no pending writes.\n private readonly _writeLock = new Trigger();\n\n private _closed = false;\n\n constructor(\n hypercore: Hypercore<T>,\n private _key: PublicKey, // TODO(burdon): Required since currently patching the key inside factory.\n private _storageDirectory: Directory,\n ) {\n assertArgument(hypercore, 'hypercore');\n this._hypercore = hypercore;\n invariant(this._key);\n this._writeLock.wake();\n }\n\n [inspect.custom](): string {\n return inspectObject(this);\n }\n\n toJSON(): { feedKey: PublicKey; length: number; opened: boolean; closed: boolean } {\n return {\n feedKey: this._key,\n length: this.properties.length,\n opened: this.properties.opened,\n closed: this.properties.closed,\n };\n }\n\n get key(): PublicKey {\n return this._key;\n }\n\n get core(): Hypercore<T> {\n return this._hypercore;\n }\n\n // TODO(burdon): Create proxy.\n get properties(): HypercoreProperties {\n return this._hypercore;\n }\n\n createReadableStream(opts?: ReadStreamOptions): Readable {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n const transform = new Transform({\n transform(data: any, cb: (err?: Error | null, data?: any) => void) {\n // Delay until write is complete.\n void self._writeLock.wait().then(() => {\n this.push(data);\n cb();\n });\n },\n });\n const readStream =\n opts?.batch !== undefined && opts?.batch > 1\n ? new BatchedReadStream(this._hypercore, opts)\n : this._hypercore.createReadStream(opts);\n\n readStream.pipe(transform, (err: any) => {\n // Ignore errors.\n // We might get \"Writable stream closed prematurely\" error.\n // Its okay since the pipeline is closed and does not expect more messages.\n });\n\n return transform;\n }\n\n createFeedWriter(): FeedWriter<T> {\n return {\n write: async (data: T, { afterWrite } = {}) => {\n log('write', { feed: this._key, seq: this._hypercore.length });\n invariant(!this._closed, 'Feed closed');\n const stackTrace = new StackTrace();\n\n try {\n // Pending writes pause the read stream.\n this._pendingWrites.add(stackTrace);\n if (this._pendingWrites.size === 1) {\n this._writeLock.reset();\n }\n\n const receipt = await this.appendWithReceipt(data);\n\n // TODO(dmaretskyi): Removing this will make user-intiated writes faster but might result in a data-loss.\n await this.flushToDisk();\n\n await afterWrite?.(receipt);\n\n return receipt;\n } finally {\n // Unblock the read stream after the write (and callback) is complete.\n this._pendingWrites.delete(stackTrace);\n if (this._pendingWrites.size === 0) {\n this._writeLock.wake();\n }\n }\n },\n };\n }\n\n async appendWithReceipt(data: T): Promise<WriteReceipt> {\n const seq = await this.append(data);\n invariant(seq < this.length, 'Invalid seq after write');\n log('write complete', { feed: this._key, seq });\n const receipt: WriteReceipt = {\n feedKey: this.key,\n seq,\n };\n return receipt;\n }\n\n /**\n * Flush pending changes to disk.\n * Calling this is not required unless you want to explicitly wait for data to be written.\n */\n async flushToDisk(): Promise<void> {\n await this._storageDirectory.flush();\n }\n\n get opened(): boolean {\n return this._hypercore.opened;\n }\n\n get closed(): boolean {\n return this._hypercore.closed;\n }\n\n get readable(): boolean {\n return this._hypercore.readable;\n }\n\n get length(): number {\n return this._hypercore.length;\n }\n\n get byteLength(): number {\n return this._hypercore.byteLength;\n }\n\n on(...args: any[]) {\n return (this._hypercore as any).on(...args);\n }\n\n off(...args: any[]) {\n return (this._hypercore as any).off(...args);\n }\n\n open(...args: Parameters<Hypercore<T>['open']>) {\n return promisify(this._hypercore.open.bind(this._hypercore) as any)(...args);\n }\n\n _close(...args: Parameters<Hypercore<T>['close']>) {\n return promisify(this._hypercore.close.bind(this._hypercore) as any)(...args);\n }\n\n close = async () => {\n if (this._pendingWrites.size) {\n log.warn('Closing feed with pending writes', {\n feed: this._key,\n count: this._pendingWrites.size,\n pendingWrites: Array.from(this._pendingWrites.values()).map((stack) => stack.getStack()),\n });\n }\n this._closed = true;\n await this.flushToDisk();\n await this._close();\n };\n\n has(start: number, end?: number) {\n return this._hypercore.has(start, end);\n }\n\n get(index: number, options?: GetOptions) {\n return promisify(this._hypercore.get.bind(this._hypercore) as any)(index, options);\n }\n\n // TODO(dmaretskyi): Type better\n append(data: any | any[]): Promise<number> {\n return promisify(this._hypercore.append.bind(this._hypercore))(data);\n }\n\n /**\n * Will not resolve if `end` parameter is not specified and the feed is not closed.\n */\n download(...args: Parameters<Hypercore<T>['download']>) {\n return this._hypercore.download(...args);\n }\n\n undownload(...args: Parameters<Hypercore<T>['undownload']>) {\n return this._hypercore.undownload(...args);\n }\n\n setDownloading(...args: Parameters<Hypercore<T>['setDownloading']>) {\n return this._hypercore.setDownloading(...args);\n }\n\n replicate(...args: Parameters<Hypercore<T>['replicate']>) {\n return this._hypercore.replicate(...args);\n }\n\n clear(start: number, end?: number) {\n return promisify(this._hypercore.clear.bind(this._hypercore))(start, end);\n }\n\n proof(index: number, options?: any) {\n return promisify(this._hypercore.proof.bind(this._hypercore))(index);\n }\n\n put(index: number, data: T, proof: Proof) {\n return promisify(this._hypercore.put.bind(this._hypercore))(index, data, proof);\n }\n\n putBuffer(index: number, data: Buffer | Uint8Array, proof: Proof, peer: null): Promise<void> {\n return promisify((this._hypercore as any)._putBuffer.bind(this._hypercore) as any)(index, data, proof, peer);\n }\n\n /**\n * Clear and check for integrity.\n */\n async safeClear(from: number, to: number): Promise<void> {\n invariant(from >= 0 && from < to && to <= this.length, 'Invalid range');\n\n const CHECK_MESSAGES = 20;\n const checkBegin = to;\n const checkEnd = Math.min(checkBegin + CHECK_MESSAGES, this.length);\n\n const messagesBefore = await Promise.all(\n rangeFromTo(checkBegin, checkEnd).map((idx) =>\n this.get(idx, {\n valueEncoding: { decode: (x: Uint8Array) => x } as any,\n }),\n ),\n );\n\n await this.clear(from, to);\n\n const messagesAfter = await Promise.all(\n rangeFromTo(checkBegin, checkEnd).map((idx) =>\n this.get(idx, {\n valueEncoding: { decode: (x: Uint8Array) => x } as any,\n }),\n ),\n );\n\n for (let i = 0; i < messagesBefore.length; i++) {\n const before = arrayToBuffer(messagesBefore[i]);\n const after = arrayToBuffer(messagesAfter[i]);\n if (!before.equals(after)) {\n throw new Error('Feed corruption on clear. There has likely been a data loss.');\n }\n }\n }\n}\n\nclass BatchedReadStream extends Readable {\n private readonly _feed: Hypercore<any>;\n private readonly _batch: number;\n private _cursor: number;\n private _reading = false;\n\n constructor(feed: Hypercore<any>, opts: ReadStreamOptions = {}) {\n super({ objectMode: true });\n invariant(opts.live === true, 'Only live mode supported');\n invariant(opts.batch !== undefined && opts.batch > 1);\n this._feed = feed;\n this._batch = opts.batch;\n this._cursor = opts.start ?? 0;\n }\n\n override _open(cb: (err: Error | null) => void): void {\n this._feed.ready(cb);\n }\n\n override _read(cb: (err: Error | null) => void): void {\n if (this._reading) {\n return;\n }\n\n if (this._feed.bitfield!.total(this._cursor, this._cursor + this._batch) === this._batch) {\n this._batchedRead(cb);\n } else {\n this._nonBatchedRead(cb);\n }\n }\n\n private _nonBatchedRead(cb: (err: Error | null) => void): void {\n this._feed.get(this._cursor, { wait: true }, (err, data) => {\n if (err) {\n cb(err);\n } else {\n this._cursor++;\n this._reading = false;\n this.push(data);\n cb(null);\n }\n });\n }\n\n private _batchedRead(cb: (err: Error | null) => void): void {\n this._feed.getBatch(this._cursor, this._cursor + this._batch, { wait: true }, (err, data) => {\n if (err) {\n cb(err);\n } else {\n this._cursor += data.length;\n this._reading = false;\n for (const item of data) {\n this.push(item);\n }\n cb(null);\n }\n });\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport defaultsDeep from 'lodash.defaultsdeep';\n\nimport { type Signer, subtleCrypto } from '@dxos/crypto';\nimport { failUndefined } from '@dxos/debug';\nimport type { HypercoreOptions } from '@dxos/hypercore';\nimport { createCrypto, hypercore } from '@dxos/hypercore';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Directory } from '@dxos/random-access-storage';\n\nimport { FeedWrapper } from './feed-wrapper';\n\nexport type FeedFactoryOptions = {\n root: Directory;\n signer?: Signer;\n hypercore?: HypercoreOptions;\n};\n\nexport type FeedOptions = HypercoreOptions & {\n writable?: boolean;\n /**\n * Optional hook called before data is written after being verified.\n * Called for writes done by this peer as well as for data replicated from other peers.\n * NOTE: The callback must be invoked to complete the write operation.\n * @param peer Always null in hypercore@9.12.0.\n */\n onwrite?: (index: number, data: any, peer: null, cb: (err: Error | null) => void) => void;\n};\n\n/**\n * Hypercore factory.\n */\nexport class FeedFactory<T extends {}> {\n private readonly _root: Directory;\n private readonly _signer?: Signer;\n private readonly _hypercoreOptions?: HypercoreOptions;\n\n constructor({ root, signer, hypercore }: FeedFactoryOptions) {\n log('FeedFactory', { options: hypercore });\n this._root = root ?? failUndefined();\n this._signer = signer;\n this._hypercoreOptions = hypercore;\n }\n\n get storageRoot() {\n return this._root;\n }\n\n async createFeed(publicKey: PublicKey, options?: FeedOptions): Promise<FeedWrapper<T>> {\n if (options?.writable && !this._signer) {\n throw new Error('Signer required to create writable feeds.');\n }\n if (options?.secretKey) {\n log.warn('Secret key ignored due to signer.');\n }\n\n // Required due to hypercore's 32-byte key limit.\n const key = await subtleCrypto.digest('SHA-256', Buffer.from(publicKey.toHex()));\n\n const opts = defaultsDeep(\n {\n // sparse: false,\n // stats: false,\n },\n this._hypercoreOptions,\n {\n secretKey: this._signer && options?.writable ? Buffer.from('secret') : undefined,\n crypto: this._signer ? createCrypto(this._signer, publicKey) : undefined,\n onwrite: options?.onwrite,\n noiseKeyPair: {}, // We're not using noise.\n },\n options,\n );\n\n const storageDir = this._root.createDirectory(publicKey.toHex());\n const makeStorage = (filename: string) => {\n const { type, native } = storageDir.getOrCreateFile(filename);\n log('created', {\n path: `${type}:${this._root.path}/${publicKey.truncate()}/${filename}`,\n });\n\n return native;\n };\n\n const core = hypercore(makeStorage, Buffer.from(key), opts);\n return new FeedWrapper(core, publicKey, storageDir);\n }\n}\n", "//\n// Copyright 2019 DXOS.org\n//\n\nimport { Event, Mutex } from '@dxos/async';\nimport { failUndefined } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { ComplexMap, defaultMap } from '@dxos/util';\n\nimport { type FeedFactory, type FeedOptions } from './feed-factory';\nimport { type FeedWrapper } from './feed-wrapper';\n\nexport interface FeedStoreOptions<T extends {}> {\n factory: FeedFactory<T>;\n}\n\n/**\n * Persistent hypercore store.\n */\nexport class FeedStore<T extends {}> {\n private readonly _feeds: ComplexMap<PublicKey, FeedWrapper<T>> = new ComplexMap(PublicKey.hash);\n private readonly _mutexes = new ComplexMap<PublicKey, Mutex>(PublicKey.hash);\n private readonly _factory: FeedFactory<T>;\n\n private _closed = false;\n\n readonly feedOpened = new Event<FeedWrapper<T>>();\n\n constructor({ factory }: FeedStoreOptions<T>) {\n this._factory = factory ?? failUndefined();\n }\n\n get size() {\n return this._feeds.size;\n }\n\n get feeds() {\n return Array.from(this._feeds.values());\n }\n\n /**\n * Get the open feed if it exists.\n */\n getFeed(publicKey: PublicKey): FeedWrapper<T> | undefined {\n return this._feeds.get(publicKey);\n }\n\n /**\n * Gets or opens a feed.\n * The feed is readonly unless a secret key is provided.\n */\n async openFeed(feedKey: PublicKey, { writable, sparse }: FeedOptions = {}): Promise<FeedWrapper<T>> {\n log('opening feed', { feedKey });\n invariant(feedKey);\n invariant(!this._closed, 'Feed store is closed');\n\n const mutex = defaultMap(this._mutexes, feedKey, () => new Mutex());\n\n return mutex.executeSynchronized(async () => {\n let feed = this.getFeed(feedKey);\n if (feed) {\n // TODO(burdon): Need to check that there's another instance being used (create test and break this).\n // TODO(burdon): Remove from store if feed is closed externally? (remove wrapped open/close methods?)\n if (writable && !feed.properties.writable) {\n throw new Error(`Read-only feed is already open: ${feedKey.truncate()}`);\n } else if ((sparse ?? false) !== feed.properties.sparse) {\n throw new Error(\n `Feed already open with different sparse setting: ${feedKey.truncate()} [${sparse} !== ${\n feed.properties.sparse\n }]`,\n );\n } else {\n await feed.open();\n return feed;\n }\n }\n\n feed = await this._factory.createFeed(feedKey, { writable, sparse });\n this._feeds.set(feed.key, feed);\n\n await feed.open();\n this.feedOpened.emit(feed);\n log('opened', { feedKey });\n return feed;\n });\n }\n\n /**\n * Close all feeds.\n */\n async close(): Promise<void> {\n log('closing...');\n this._closed = true;\n await Promise.all(\n Array.from(this._feeds.values()).map(async (feed) => {\n await feed.close();\n invariant(feed.closed);\n // TODO(burdon): SpaceProxy still being initialized.\n // SpaceProxy.initialize => Database.createItem => ... => FeedWrapper.append\n // Uncaught Error: Closed [random-access-storage/index.js:181:38]\n // await sleep(100);\n }),\n );\n\n this._feeds.clear();\n log('closed');\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["inspect", "promisify", "Readable", "Transform", "Trigger", "StackTrace", "inspectObject", "assertArgument", "invariant", "log", "arrayToBuffer", "rangeFromTo", "custom", "FeedWrapper", "toJSON", "feedKey", "_key", "length", "properties", "opened", "closed", "key", "core", "_hypercore", "createReadableStream", "opts", "self", "transform", "data", "cb", "_writeLock", "wait", "then", "push", "readStream", "batch", "undefined", "BatchedReadStream", "createReadStream", "pipe", "err", "createFeedWriter", "write", "afterWrite", "feed", "seq", "_closed", "stackTrace", "_pendingWrites", "add", "size", "reset", "receipt", "appendWithReceipt", "flushToDisk", "delete", "wake", "append", "_storageDirectory", "flush", "readable", "byteLength", "on", "args", "off", "open", "bind", "_close", "close", "has", "start", "end", "get", "index", "options", "download", "undownload", "setDownloading", "replicate", "clear", "proof", "put", "putBuffer", "peer", "_putBuffer", "safeClear", "from", "to", "CHECK_MESSAGES", "checkBegin", "checkEnd", "Math", "min", "messagesBefore", "Promise", "all", "map", "idx", "valueEncoding", "decode", "x", "messagesAfter", "i", "before", "after", "equals", "Error", "hypercore", "Set", "warn", "count", "pendingWrites", "Array", "values", "stack", "getStack", "_open", "_feed", "ready", "_read", "_reading", "bitfield", "total", "_cursor", "_batch", "_batchedRead", "_nonBatchedRead", "getBatch", "item", "objectMode", "live", "defaultsDeep", "subtleCrypto", "failUndefined", "createCrypto", "hypercore", "log", "FeedFactory", "storageRoot", "_root", "createFeed", "publicKey", "options", "writable", "_signer", "Error", "secretKey", "log", "warn", "key", "subtleCrypto", "digest", "Buffer", "from", "toHex", "opts", "defaultsDeep", "_hypercoreOptions", "undefined", "crypto", "createCrypto", "onwrite", "noiseKeyPair", "storageDir", "createDirectory", "makeStorage", "filename", "type", "native", "getOrCreateFile", "path", "truncate", "core", "hypercore", "FeedWrapper", "root", "signer", "_define_property", "failUndefined", "Event", "Mutex", "failUndefined", "invariant", "PublicKey", "log", "ComplexMap", "defaultMap", "FeedStore", "size", "_feeds", "feeds", "Array", "from", "values", "getFeed", "publicKey", "get", "openFeed", "feedKey", "writable", "sparse", "_closed", "mutex", "_mutexes", "executeSynchronized", "feed", "properties", "Error", "truncate", "open", "_factory", "createFeed", "set", "key", "feedOpened", "emit", "close", "Promise", "all", "map", "closed", "clear", "factory", "_define_property", "hash"]
7
+ }
@@ -3,7 +3,7 @@ import {
3
3
  FeedFactory,
4
4
  FeedStore,
5
5
  FeedWrapper
6
- } from "./chunk-RZXUVQ4A.mjs";
6
+ } from "./chunk-4RW534M7.mjs";
7
7
 
8
8
  // src/feed-iterator.ts
9
9
  import safeRace from "race-as-promised";
@@ -1 +1 @@
1
- {"inputs":{"src/feed-wrapper.ts":{"bytes":36654,"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/feed-factory.ts":{"bytes":9571,"imports":[{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/feed-wrapper.ts","kind":"import-statement","original":"./feed-wrapper"}],"format":"esm"},"src/feed-queue.ts":{"bytes":20539,"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/feed-iterator.ts":{"bytes":10629,"imports":[{"path":"race-as-promised","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"}],"format":"esm"},"src/feed-set-iterator.ts":{"bytes":20673,"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/feed-iterator.ts","kind":"import-statement","original":"./feed-iterator"},{"path":"src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"}],"format":"esm"},"src/feed-store.ts":{"bytes":12603,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/feed-writer.ts":{"bytes":2625,"imports":[],"format":"esm"},"src/index.ts":{"bytes":1106,"imports":[{"path":"src/feed-factory.ts","kind":"import-statement","original":"./feed-factory"},{"path":"src/feed-iterator.ts","kind":"import-statement","original":"./feed-iterator"},{"path":"src/feed-set-iterator.ts","kind":"import-statement","original":"./feed-set-iterator"},{"path":"src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"},{"path":"src/feed-store.ts","kind":"import-statement","original":"./feed-store"},{"path":"src/feed-wrapper.ts","kind":"import-statement","original":"./feed-wrapper"},{"path":"src/feed-writer.ts","kind":"import-statement","original":"./feed-writer"}],"format":"esm"},"src/testing/mocks.ts":{"bytes":3897,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"src/testing/test-generator.ts":{"bytes":5965,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true}],"format":"esm"},"src/testing/test-builder.ts":{"bytes":10366,"imports":[{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"src/feed-factory.ts","kind":"import-statement","original":"../feed-factory"},{"path":"src/feed-store.ts","kind":"import-statement","original":"../feed-store"},{"path":"src/testing/test-generator.ts","kind":"import-statement","original":"./test-generator"}],"format":"esm"},"src/testing/index.ts":{"bytes":660,"imports":[{"path":"src/testing/mocks.ts","kind":"import-statement","original":"./mocks"},{"path":"src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"src/testing/test-generator.ts","kind":"import-statement","original":"./test-generator"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":25092},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-RZXUVQ4A.mjs","kind":"import-statement"},{"path":"race-as-promised","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["AbstractFeedIterator","FeedFactory","FeedIterator","FeedQueue","FeedSetIterator","FeedStore","FeedWrapper","createFeedWriter","defaultFeedSetIteratorOptions","defaultReadStreamOptions","writeMessages"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/feed-iterator.ts":{"bytesInOutput":3182},"src/feed-queue.ts":{"bytesInOutput":5651},"src/feed-set-iterator.ts":{"bytesInOutput":5498},"src/feed-writer.ts":{"bytesInOutput":273}},"bytes":15102},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9894},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-RZXUVQ4A.mjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true}],"exports":["MockFeedWriter","TestBuilder","TestGenerator","TestItemBuilder","defaultCodec","defaultTestBlockGenerator","defaultTestGenerator","defaultValueEncoding"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/mocks.ts":{"bytesInOutput":1161},"src/testing/index.ts":{"bytesInOutput":0},"src/testing/test-builder.ts":{"bytesInOutput":2341},"src/testing/test-generator.ts":{"bytesInOutput":1307}},"bytes":5241},"dist/lib/browser/chunk-RZXUVQ4A.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":28223},"dist/lib/browser/chunk-RZXUVQ4A.mjs":{"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["FeedFactory","FeedStore","FeedWrapper"],"inputs":{"src/feed-wrapper.ts":{"bytesInOutput":9421},"src/feed-factory.ts":{"bytesInOutput":2403},"src/feed-store.ts":{"bytesInOutput":3498}},"bytes":15524}}}
1
+ {"inputs":{"src/feed-wrapper.ts":{"bytes":36897,"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/feed-factory.ts":{"bytes":9571,"imports":[{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/feed-wrapper.ts","kind":"import-statement","original":"./feed-wrapper"}],"format":"esm"},"src/feed-queue.ts":{"bytes":20539,"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/feed-iterator.ts":{"bytes":10629,"imports":[{"path":"race-as-promised","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"}],"format":"esm"},"src/feed-set-iterator.ts":{"bytes":20673,"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/feed-iterator.ts","kind":"import-statement","original":"./feed-iterator"},{"path":"src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"}],"format":"esm"},"src/feed-store.ts":{"bytes":12603,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/feed-writer.ts":{"bytes":2625,"imports":[],"format":"esm"},"src/index.ts":{"bytes":1106,"imports":[{"path":"src/feed-factory.ts","kind":"import-statement","original":"./feed-factory"},{"path":"src/feed-iterator.ts","kind":"import-statement","original":"./feed-iterator"},{"path":"src/feed-set-iterator.ts","kind":"import-statement","original":"./feed-set-iterator"},{"path":"src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"},{"path":"src/feed-store.ts","kind":"import-statement","original":"./feed-store"},{"path":"src/feed-wrapper.ts","kind":"import-statement","original":"./feed-wrapper"},{"path":"src/feed-writer.ts","kind":"import-statement","original":"./feed-writer"}],"format":"esm"},"src/testing/mocks.ts":{"bytes":3897,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"src/testing/test-generator.ts":{"bytes":5965,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true}],"format":"esm"},"src/testing/test-builder.ts":{"bytes":10366,"imports":[{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"src/feed-factory.ts","kind":"import-statement","original":"../feed-factory"},{"path":"src/feed-store.ts","kind":"import-statement","original":"../feed-store"},{"path":"src/testing/test-generator.ts","kind":"import-statement","original":"./test-generator"}],"format":"esm"},"src/testing/index.ts":{"bytes":660,"imports":[{"path":"src/testing/mocks.ts","kind":"import-statement","original":"./mocks"},{"path":"src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"src/testing/test-generator.ts","kind":"import-statement","original":"./test-generator"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":25092},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-4RW534M7.mjs","kind":"import-statement"},{"path":"race-as-promised","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["AbstractFeedIterator","FeedFactory","FeedIterator","FeedQueue","FeedSetIterator","FeedStore","FeedWrapper","createFeedWriter","defaultFeedSetIteratorOptions","defaultReadStreamOptions","writeMessages"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/feed-iterator.ts":{"bytesInOutput":3182},"src/feed-queue.ts":{"bytesInOutput":5651},"src/feed-set-iterator.ts":{"bytesInOutput":5498},"src/feed-writer.ts":{"bytesInOutput":273}},"bytes":15102},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9894},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-4RW534M7.mjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true}],"exports":["MockFeedWriter","TestBuilder","TestGenerator","TestItemBuilder","defaultCodec","defaultTestBlockGenerator","defaultTestGenerator","defaultValueEncoding"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/mocks.ts":{"bytesInOutput":1161},"src/testing/index.ts":{"bytesInOutput":0},"src/testing/test-builder.ts":{"bytesInOutput":2341},"src/testing/test-generator.ts":{"bytesInOutput":1307}},"bytes":5241},"dist/lib/browser/chunk-4RW534M7.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":28365},"dist/lib/browser/chunk-4RW534M7.mjs":{"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["FeedFactory","FeedStore","FeedWrapper"],"inputs":{"src/feed-wrapper.ts":{"bytesInOutput":9456},"src/feed-factory.ts":{"bytesInOutput":2403},"src/feed-store.ts":{"bytesInOutput":3498}},"bytes":15559}}}
@@ -2,7 +2,7 @@ import "@dxos/node-std/globals";
2
2
  import {
3
3
  FeedFactory,
4
4
  FeedStore
5
- } from "../chunk-RZXUVQ4A.mjs";
5
+ } from "../chunk-4RW534M7.mjs";
6
6
 
7
7
  // src/testing/mocks.ts
8
8
  import { Event, scheduleTask } from "@dxos/async";
@@ -195,8 +195,8 @@ var FeedWrapper = class {
195
195
  put(index, data, proof) {
196
196
  return promisify(this._hypercore.put.bind(this._hypercore))(index, data, proof);
197
197
  }
198
- putBuffer(...args) {
199
- return promisify(this._hypercore.putBuffer.bind(this._hypercore))(...args);
198
+ putBuffer(index, data, proof, peer) {
199
+ return promisify(this._hypercore._putBuffer.bind(this._hypercore))(index, data, proof, peer);
200
200
  }
201
201
  /**
202
202
  * Clear and check for integrity.
@@ -568,4 +568,4 @@ export {
568
568
  FeedFactory,
569
569
  FeedStore
570
570
  };
571
- //# sourceMappingURL=chunk-HZYWB6M3.mjs.map
571
+ //# sourceMappingURL=chunk-D4DVCY7Y.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/feed-wrapper.ts", "../../../src/feed-factory.ts", "../../../src/feed-store.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { inspect } from 'node:util';\nimport { promisify } from 'node:util';\n\nimport { Readable, Transform } from 'streamx';\n\nimport { Trigger } from '@dxos/async';\nimport { StackTrace, inspectObject } from '@dxos/debug';\nimport type { Hypercore, HypercoreProperties, ReadStreamOptions } from '@dxos/hypercore';\nimport { assertArgument, invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Directory } from '@dxos/random-access-storage';\nimport { arrayToBuffer, rangeFromTo } from '@dxos/util';\nimport type { GetOptions, Proof } from '@dxos/vendor-hypercore/hypercore';\n\nimport { type FeedWriter, type WriteReceipt } from './feed-writer';\n\n/**\n * Async feed wrapper.\n */\nexport class FeedWrapper<T extends {}> {\n private _hypercore: Hypercore<T>;\n private readonly _pendingWrites = new Set<StackTrace>();\n\n // Pending while writes are happening. Resolves when there are no pending writes.\n private readonly _writeLock = new Trigger();\n\n private _closed = false;\n\n constructor(\n hypercore: Hypercore<T>,\n private _key: PublicKey, // TODO(burdon): Required since currently patching the key inside factory.\n private _storageDirectory: Directory,\n ) {\n assertArgument(hypercore, 'hypercore');\n this._hypercore = hypercore;\n invariant(this._key);\n this._writeLock.wake();\n }\n\n [inspect.custom](): string {\n return inspectObject(this);\n }\n\n toJSON(): { feedKey: PublicKey; length: number; opened: boolean; closed: boolean } {\n return {\n feedKey: this._key,\n length: this.properties.length,\n opened: this.properties.opened,\n closed: this.properties.closed,\n };\n }\n\n get key(): PublicKey {\n return this._key;\n }\n\n get core(): Hypercore<T> {\n return this._hypercore;\n }\n\n // TODO(burdon): Create proxy.\n get properties(): HypercoreProperties {\n return this._hypercore;\n }\n\n createReadableStream(opts?: ReadStreamOptions): Readable {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n const transform = new Transform({\n transform(data: any, cb: (err?: Error | null, data?: any) => void) {\n // Delay until write is complete.\n void self._writeLock.wait().then(() => {\n this.push(data);\n cb();\n });\n },\n });\n const readStream =\n opts?.batch !== undefined && opts?.batch > 1\n ? new BatchedReadStream(this._hypercore, opts)\n : this._hypercore.createReadStream(opts);\n\n readStream.pipe(transform, (err: any) => {\n // Ignore errors.\n // We might get \"Writable stream closed prematurely\" error.\n // Its okay since the pipeline is closed and does not expect more messages.\n });\n\n return transform;\n }\n\n createFeedWriter(): FeedWriter<T> {\n return {\n write: async (data: T, { afterWrite } = {}) => {\n log('write', { feed: this._key, seq: this._hypercore.length });\n invariant(!this._closed, 'Feed closed');\n const stackTrace = new StackTrace();\n\n try {\n // Pending writes pause the read stream.\n this._pendingWrites.add(stackTrace);\n if (this._pendingWrites.size === 1) {\n this._writeLock.reset();\n }\n\n const receipt = await this.appendWithReceipt(data);\n\n // TODO(dmaretskyi): Removing this will make user-intiated writes faster but might result in a data-loss.\n await this.flushToDisk();\n\n await afterWrite?.(receipt);\n\n return receipt;\n } finally {\n // Unblock the read stream after the write (and callback) is complete.\n this._pendingWrites.delete(stackTrace);\n if (this._pendingWrites.size === 0) {\n this._writeLock.wake();\n }\n }\n },\n };\n }\n\n async appendWithReceipt(data: T): Promise<WriteReceipt> {\n const seq = await this.append(data);\n invariant(seq < this.length, 'Invalid seq after write');\n log('write complete', { feed: this._key, seq });\n const receipt: WriteReceipt = {\n feedKey: this.key,\n seq,\n };\n return receipt;\n }\n\n /**\n * Flush pending changes to disk.\n * Calling this is not required unless you want to explicitly wait for data to be written.\n */\n async flushToDisk(): Promise<void> {\n await this._storageDirectory.flush();\n }\n\n get opened(): boolean {\n return this._hypercore.opened;\n }\n\n get closed(): boolean {\n return this._hypercore.closed;\n }\n\n get readable(): boolean {\n return this._hypercore.readable;\n }\n\n get length(): number {\n return this._hypercore.length;\n }\n\n get byteLength(): number {\n return this._hypercore.byteLength;\n }\n\n on(...args: any[]) {\n return (this._hypercore as any).on(...args);\n }\n\n off(...args: any[]) {\n return (this._hypercore as any).off(...args);\n }\n\n open(...args: Parameters<Hypercore<T>['open']>) {\n return promisify(this._hypercore.open.bind(this._hypercore) as any)(...args);\n }\n\n _close(...args: Parameters<Hypercore<T>['close']>) {\n return promisify(this._hypercore.close.bind(this._hypercore) as any)(...args);\n }\n\n close = async () => {\n if (this._pendingWrites.size) {\n log.warn('Closing feed with pending writes', {\n feed: this._key,\n count: this._pendingWrites.size,\n pendingWrites: Array.from(this._pendingWrites.values()).map((stack) => stack.getStack()),\n });\n }\n this._closed = true;\n await this.flushToDisk();\n await this._close();\n };\n\n has(start: number, end?: number) {\n return this._hypercore.has(start, end);\n }\n\n get(index: number, options?: GetOptions) {\n return promisify(this._hypercore.get.bind(this._hypercore) as any)(index, options);\n }\n\n // TODO(dmaretskyi): Type better\n append(data: any | any[]): Promise<number> {\n return promisify(this._hypercore.append.bind(this._hypercore))(data);\n }\n\n /**\n * Will not resolve if `end` parameter is not specified and the feed is not closed.\n */\n download(...args: Parameters<Hypercore<T>['download']>) {\n return this._hypercore.download(...args);\n }\n\n undownload(...args: Parameters<Hypercore<T>['undownload']>) {\n return this._hypercore.undownload(...args);\n }\n\n setDownloading(...args: Parameters<Hypercore<T>['setDownloading']>) {\n return this._hypercore.setDownloading(...args);\n }\n\n replicate(...args: Parameters<Hypercore<T>['replicate']>) {\n return this._hypercore.replicate(...args);\n }\n\n clear(start: number, end?: number) {\n return promisify(this._hypercore.clear.bind(this._hypercore))(start, end);\n }\n\n proof(index: number, options?: any) {\n return promisify(this._hypercore.proof.bind(this._hypercore))(index);\n }\n\n put(index: number, data: T, proof: Proof) {\n return promisify(this._hypercore.put.bind(this._hypercore))(index, data, proof);\n }\n\n putBuffer(index: number, data: Buffer | Uint8Array, proof: Proof, peer: null): Promise<void> {\n return promisify((this._hypercore as any)._putBuffer.bind(this._hypercore) as any)(index, data, proof, peer);\n }\n\n /**\n * Clear and check for integrity.\n */\n async safeClear(from: number, to: number): Promise<void> {\n invariant(from >= 0 && from < to && to <= this.length, 'Invalid range');\n\n const CHECK_MESSAGES = 20;\n const checkBegin = to;\n const checkEnd = Math.min(checkBegin + CHECK_MESSAGES, this.length);\n\n const messagesBefore = await Promise.all(\n rangeFromTo(checkBegin, checkEnd).map((idx) =>\n this.get(idx, {\n valueEncoding: { decode: (x: Uint8Array) => x } as any,\n }),\n ),\n );\n\n await this.clear(from, to);\n\n const messagesAfter = await Promise.all(\n rangeFromTo(checkBegin, checkEnd).map((idx) =>\n this.get(idx, {\n valueEncoding: { decode: (x: Uint8Array) => x } as any,\n }),\n ),\n );\n\n for (let i = 0; i < messagesBefore.length; i++) {\n const before = arrayToBuffer(messagesBefore[i]);\n const after = arrayToBuffer(messagesAfter[i]);\n if (!before.equals(after)) {\n throw new Error('Feed corruption on clear. There has likely been a data loss.');\n }\n }\n }\n}\n\nclass BatchedReadStream extends Readable {\n private readonly _feed: Hypercore<any>;\n private readonly _batch: number;\n private _cursor: number;\n private _reading = false;\n\n constructor(feed: Hypercore<any>, opts: ReadStreamOptions = {}) {\n super({ objectMode: true });\n invariant(opts.live === true, 'Only live mode supported');\n invariant(opts.batch !== undefined && opts.batch > 1);\n this._feed = feed;\n this._batch = opts.batch;\n this._cursor = opts.start ?? 0;\n }\n\n override _open(cb: (err: Error | null) => void): void {\n this._feed.ready(cb);\n }\n\n override _read(cb: (err: Error | null) => void): void {\n if (this._reading) {\n return;\n }\n\n if (this._feed.bitfield!.total(this._cursor, this._cursor + this._batch) === this._batch) {\n this._batchedRead(cb);\n } else {\n this._nonBatchedRead(cb);\n }\n }\n\n private _nonBatchedRead(cb: (err: Error | null) => void): void {\n this._feed.get(this._cursor, { wait: true }, (err, data) => {\n if (err) {\n cb(err);\n } else {\n this._cursor++;\n this._reading = false;\n this.push(data);\n cb(null);\n }\n });\n }\n\n private _batchedRead(cb: (err: Error | null) => void): void {\n this._feed.getBatch(this._cursor, this._cursor + this._batch, { wait: true }, (err, data) => {\n if (err) {\n cb(err);\n } else {\n this._cursor += data.length;\n this._reading = false;\n for (const item of data) {\n this.push(item);\n }\n cb(null);\n }\n });\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport defaultsDeep from 'lodash.defaultsdeep';\n\nimport { type Signer, subtleCrypto } from '@dxos/crypto';\nimport { failUndefined } from '@dxos/debug';\nimport type { HypercoreOptions } from '@dxos/hypercore';\nimport { createCrypto, hypercore } from '@dxos/hypercore';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Directory } from '@dxos/random-access-storage';\n\nimport { FeedWrapper } from './feed-wrapper';\n\nexport type FeedFactoryOptions = {\n root: Directory;\n signer?: Signer;\n hypercore?: HypercoreOptions;\n};\n\nexport type FeedOptions = HypercoreOptions & {\n writable?: boolean;\n /**\n * Optional hook called before data is written after being verified.\n * Called for writes done by this peer as well as for data replicated from other peers.\n * NOTE: The callback must be invoked to complete the write operation.\n * @param peer Always null in hypercore@9.12.0.\n */\n onwrite?: (index: number, data: any, peer: null, cb: (err: Error | null) => void) => void;\n};\n\n/**\n * Hypercore factory.\n */\nexport class FeedFactory<T extends {}> {\n private readonly _root: Directory;\n private readonly _signer?: Signer;\n private readonly _hypercoreOptions?: HypercoreOptions;\n\n constructor({ root, signer, hypercore }: FeedFactoryOptions) {\n log('FeedFactory', { options: hypercore });\n this._root = root ?? failUndefined();\n this._signer = signer;\n this._hypercoreOptions = hypercore;\n }\n\n get storageRoot() {\n return this._root;\n }\n\n async createFeed(publicKey: PublicKey, options?: FeedOptions): Promise<FeedWrapper<T>> {\n if (options?.writable && !this._signer) {\n throw new Error('Signer required to create writable feeds.');\n }\n if (options?.secretKey) {\n log.warn('Secret key ignored due to signer.');\n }\n\n // Required due to hypercore's 32-byte key limit.\n const key = await subtleCrypto.digest('SHA-256', Buffer.from(publicKey.toHex()));\n\n const opts = defaultsDeep(\n {\n // sparse: false,\n // stats: false,\n },\n this._hypercoreOptions,\n {\n secretKey: this._signer && options?.writable ? Buffer.from('secret') : undefined,\n crypto: this._signer ? createCrypto(this._signer, publicKey) : undefined,\n onwrite: options?.onwrite,\n noiseKeyPair: {}, // We're not using noise.\n },\n options,\n );\n\n const storageDir = this._root.createDirectory(publicKey.toHex());\n const makeStorage = (filename: string) => {\n const { type, native } = storageDir.getOrCreateFile(filename);\n log('created', {\n path: `${type}:${this._root.path}/${publicKey.truncate()}/${filename}`,\n });\n\n return native;\n };\n\n const core = hypercore(makeStorage, Buffer.from(key), opts);\n return new FeedWrapper(core, publicKey, storageDir);\n }\n}\n", "//\n// Copyright 2019 DXOS.org\n//\n\nimport { Event, Mutex } from '@dxos/async';\nimport { failUndefined } from '@dxos/debug';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { ComplexMap, defaultMap } from '@dxos/util';\n\nimport { type FeedFactory, type FeedOptions } from './feed-factory';\nimport { type FeedWrapper } from './feed-wrapper';\n\nexport interface FeedStoreOptions<T extends {}> {\n factory: FeedFactory<T>;\n}\n\n/**\n * Persistent hypercore store.\n */\nexport class FeedStore<T extends {}> {\n private readonly _feeds: ComplexMap<PublicKey, FeedWrapper<T>> = new ComplexMap(PublicKey.hash);\n private readonly _mutexes = new ComplexMap<PublicKey, Mutex>(PublicKey.hash);\n private readonly _factory: FeedFactory<T>;\n\n private _closed = false;\n\n readonly feedOpened = new Event<FeedWrapper<T>>();\n\n constructor({ factory }: FeedStoreOptions<T>) {\n this._factory = factory ?? failUndefined();\n }\n\n get size() {\n return this._feeds.size;\n }\n\n get feeds() {\n return Array.from(this._feeds.values());\n }\n\n /**\n * Get the open feed if it exists.\n */\n getFeed(publicKey: PublicKey): FeedWrapper<T> | undefined {\n return this._feeds.get(publicKey);\n }\n\n /**\n * Gets or opens a feed.\n * The feed is readonly unless a secret key is provided.\n */\n async openFeed(feedKey: PublicKey, { writable, sparse }: FeedOptions = {}): Promise<FeedWrapper<T>> {\n log('opening feed', { feedKey });\n invariant(feedKey);\n invariant(!this._closed, 'Feed store is closed');\n\n const mutex = defaultMap(this._mutexes, feedKey, () => new Mutex());\n\n return mutex.executeSynchronized(async () => {\n let feed = this.getFeed(feedKey);\n if (feed) {\n // TODO(burdon): Need to check that there's another instance being used (create test and break this).\n // TODO(burdon): Remove from store if feed is closed externally? (remove wrapped open/close methods?)\n if (writable && !feed.properties.writable) {\n throw new Error(`Read-only feed is already open: ${feedKey.truncate()}`);\n } else if ((sparse ?? false) !== feed.properties.sparse) {\n throw new Error(\n `Feed already open with different sparse setting: ${feedKey.truncate()} [${sparse} !== ${\n feed.properties.sparse\n }]`,\n );\n } else {\n await feed.open();\n return feed;\n }\n }\n\n feed = await this._factory.createFeed(feedKey, { writable, sparse });\n this._feeds.set(feed.key, feed);\n\n await feed.open();\n this.feedOpened.emit(feed);\n log('opened', { feedKey });\n return feed;\n });\n }\n\n /**\n * Close all feeds.\n */\n async close(): Promise<void> {\n log('closing...');\n this._closed = true;\n await Promise.all(\n Array.from(this._feeds.values()).map(async (feed) => {\n await feed.close();\n invariant(feed.closed);\n // TODO(burdon): SpaceProxy still being initialized.\n // SpaceProxy.initialize => Database.createItem => ... => FeedWrapper.append\n // Uncaught Error: Closed [random-access-storage/index.js:181:38]\n // await sleep(100);\n }),\n );\n\n this._feeds.clear();\n log('closed');\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["inspect", "promisify", "Readable", "Transform", "Trigger", "StackTrace", "inspectObject", "assertArgument", "invariant", "log", "arrayToBuffer", "rangeFromTo", "custom", "FeedWrapper", "toJSON", "feedKey", "_key", "length", "properties", "opened", "closed", "key", "core", "_hypercore", "createReadableStream", "opts", "self", "transform", "data", "cb", "_writeLock", "wait", "then", "push", "readStream", "batch", "undefined", "BatchedReadStream", "createReadStream", "pipe", "err", "createFeedWriter", "write", "afterWrite", "feed", "seq", "_closed", "stackTrace", "_pendingWrites", "add", "size", "reset", "receipt", "appendWithReceipt", "flushToDisk", "delete", "wake", "append", "_storageDirectory", "flush", "readable", "byteLength", "on", "args", "off", "open", "bind", "_close", "close", "has", "start", "end", "get", "index", "options", "download", "undownload", "setDownloading", "replicate", "clear", "proof", "put", "putBuffer", "peer", "_putBuffer", "safeClear", "from", "to", "CHECK_MESSAGES", "checkBegin", "checkEnd", "Math", "min", "messagesBefore", "Promise", "all", "map", "idx", "valueEncoding", "decode", "x", "messagesAfter", "i", "before", "after", "equals", "Error", "hypercore", "Set", "warn", "count", "pendingWrites", "Array", "values", "stack", "getStack", "_open", "_feed", "ready", "_read", "_reading", "bitfield", "total", "_cursor", "_batch", "_batchedRead", "_nonBatchedRead", "getBatch", "item", "objectMode", "live", "defaultsDeep", "subtleCrypto", "failUndefined", "createCrypto", "hypercore", "log", "FeedFactory", "storageRoot", "_root", "createFeed", "publicKey", "options", "writable", "_signer", "Error", "secretKey", "log", "warn", "key", "subtleCrypto", "digest", "Buffer", "from", "toHex", "opts", "defaultsDeep", "_hypercoreOptions", "undefined", "crypto", "createCrypto", "onwrite", "noiseKeyPair", "storageDir", "createDirectory", "makeStorage", "filename", "type", "native", "getOrCreateFile", "path", "truncate", "core", "hypercore", "FeedWrapper", "root", "signer", "_define_property", "failUndefined", "Event", "Mutex", "failUndefined", "invariant", "PublicKey", "log", "ComplexMap", "defaultMap", "FeedStore", "size", "_feeds", "feeds", "Array", "from", "values", "getFeed", "publicKey", "get", "openFeed", "feedKey", "writable", "sparse", "_closed", "mutex", "_mutexes", "executeSynchronized", "feed", "properties", "Error", "truncate", "open", "_factory", "createFeed", "set", "key", "feedOpened", "emit", "close", "Promise", "all", "map", "closed", "clear", "factory", "_define_property", "hash"]
7
+ }
@@ -3,7 +3,7 @@ import {
3
3
  FeedFactory,
4
4
  FeedStore,
5
5
  FeedWrapper
6
- } from "./chunk-HZYWB6M3.mjs";
6
+ } from "./chunk-D4DVCY7Y.mjs";
7
7
 
8
8
  // src/feed-iterator.ts
9
9
  import safeRace from "race-as-promised";
@@ -1 +1 @@
1
- {"inputs":{"src/feed-wrapper.ts":{"bytes":36654,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/feed-factory.ts":{"bytes":9571,"imports":[{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/feed-wrapper.ts","kind":"import-statement","original":"./feed-wrapper"}],"format":"esm"},"src/feed-queue.ts":{"bytes":20539,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/feed-iterator.ts":{"bytes":10629,"imports":[{"path":"race-as-promised","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"}],"format":"esm"},"src/feed-set-iterator.ts":{"bytes":20673,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/feed-iterator.ts","kind":"import-statement","original":"./feed-iterator"},{"path":"src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"}],"format":"esm"},"src/feed-store.ts":{"bytes":12603,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/feed-writer.ts":{"bytes":2625,"imports":[],"format":"esm"},"src/index.ts":{"bytes":1106,"imports":[{"path":"src/feed-factory.ts","kind":"import-statement","original":"./feed-factory"},{"path":"src/feed-iterator.ts","kind":"import-statement","original":"./feed-iterator"},{"path":"src/feed-set-iterator.ts","kind":"import-statement","original":"./feed-set-iterator"},{"path":"src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"},{"path":"src/feed-store.ts","kind":"import-statement","original":"./feed-store"},{"path":"src/feed-wrapper.ts","kind":"import-statement","original":"./feed-wrapper"},{"path":"src/feed-writer.ts","kind":"import-statement","original":"./feed-writer"}],"format":"esm"},"src/testing/mocks.ts":{"bytes":3897,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"src/testing/test-generator.ts":{"bytes":5965,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true}],"format":"esm"},"src/testing/test-builder.ts":{"bytes":10366,"imports":[{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"src/feed-factory.ts","kind":"import-statement","original":"../feed-factory"},{"path":"src/feed-store.ts","kind":"import-statement","original":"../feed-store"},{"path":"src/testing/test-generator.ts","kind":"import-statement","original":"./test-generator"}],"format":"esm"},"src/testing/index.ts":{"bytes":660,"imports":[{"path":"src/testing/mocks.ts","kind":"import-statement","original":"./mocks"},{"path":"src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"src/testing/test-generator.ts","kind":"import-statement","original":"./test-generator"}],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":25092},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-HZYWB6M3.mjs","kind":"import-statement"},{"path":"race-as-promised","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["AbstractFeedIterator","FeedFactory","FeedIterator","FeedQueue","FeedSetIterator","FeedStore","FeedWrapper","createFeedWriter","defaultFeedSetIteratorOptions","defaultReadStreamOptions","writeMessages"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/feed-iterator.ts":{"bytesInOutput":3182},"src/feed-queue.ts":{"bytesInOutput":5641},"src/feed-set-iterator.ts":{"bytesInOutput":5488},"src/feed-writer.ts":{"bytesInOutput":273}},"bytes":15141},"dist/lib/node-esm/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9894},"dist/lib/node-esm/testing/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-HZYWB6M3.mjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true}],"exports":["MockFeedWriter","TestBuilder","TestGenerator","TestItemBuilder","defaultCodec","defaultTestBlockGenerator","defaultTestGenerator","defaultValueEncoding"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/mocks.ts":{"bytesInOutput":1161},"src/testing/index.ts":{"bytesInOutput":0},"src/testing/test-builder.ts":{"bytesInOutput":2341},"src/testing/test-generator.ts":{"bytesInOutput":1307}},"bytes":5300},"dist/lib/node-esm/chunk-HZYWB6M3.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":28223},"dist/lib/node-esm/chunk-HZYWB6M3.mjs":{"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["FeedFactory","FeedStore","FeedWrapper"],"inputs":{"src/feed-wrapper.ts":{"bytesInOutput":9401},"src/feed-factory.ts":{"bytesInOutput":2403},"src/feed-store.ts":{"bytesInOutput":3498}},"bytes":15563}}}
1
+ {"inputs":{"src/feed-wrapper.ts":{"bytes":36897,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/feed-factory.ts":{"bytes":9571,"imports":[{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/feed-wrapper.ts","kind":"import-statement","original":"./feed-wrapper"}],"format":"esm"},"src/feed-queue.ts":{"bytes":20539,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/feed-iterator.ts":{"bytes":10629,"imports":[{"path":"race-as-promised","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"}],"format":"esm"},"src/feed-set-iterator.ts":{"bytes":20673,"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/feed-iterator.ts","kind":"import-statement","original":"./feed-iterator"},{"path":"src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"}],"format":"esm"},"src/feed-store.ts":{"bytes":12603,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/feed-writer.ts":{"bytes":2625,"imports":[],"format":"esm"},"src/index.ts":{"bytes":1106,"imports":[{"path":"src/feed-factory.ts","kind":"import-statement","original":"./feed-factory"},{"path":"src/feed-iterator.ts","kind":"import-statement","original":"./feed-iterator"},{"path":"src/feed-set-iterator.ts","kind":"import-statement","original":"./feed-set-iterator"},{"path":"src/feed-queue.ts","kind":"import-statement","original":"./feed-queue"},{"path":"src/feed-store.ts","kind":"import-statement","original":"./feed-store"},{"path":"src/feed-wrapper.ts","kind":"import-statement","original":"./feed-wrapper"},{"path":"src/feed-writer.ts","kind":"import-statement","original":"./feed-writer"}],"format":"esm"},"src/testing/mocks.ts":{"bytes":3897,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true}],"format":"esm"},"src/testing/test-generator.ts":{"bytes":5965,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true}],"format":"esm"},"src/testing/test-builder.ts":{"bytes":10366,"imports":[{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"src/feed-factory.ts","kind":"import-statement","original":"../feed-factory"},{"path":"src/feed-store.ts","kind":"import-statement","original":"../feed-store"},{"path":"src/testing/test-generator.ts","kind":"import-statement","original":"./test-generator"}],"format":"esm"},"src/testing/index.ts":{"bytes":660,"imports":[{"path":"src/testing/mocks.ts","kind":"import-statement","original":"./mocks"},{"path":"src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"},{"path":"src/testing/test-generator.ts","kind":"import-statement","original":"./test-generator"}],"format":"esm"}},"outputs":{"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":25092},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-D4DVCY7Y.mjs","kind":"import-statement"},{"path":"race-as-promised","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["AbstractFeedIterator","FeedFactory","FeedIterator","FeedQueue","FeedSetIterator","FeedStore","FeedWrapper","createFeedWriter","defaultFeedSetIteratorOptions","defaultReadStreamOptions","writeMessages"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/feed-iterator.ts":{"bytesInOutput":3182},"src/feed-queue.ts":{"bytesInOutput":5641},"src/feed-set-iterator.ts":{"bytesInOutput":5488},"src/feed-writer.ts":{"bytesInOutput":273}},"bytes":15141},"dist/lib/node-esm/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9894},"dist/lib/node-esm/testing/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-D4DVCY7Y.mjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/keyring","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true}],"exports":["MockFeedWriter","TestBuilder","TestGenerator","TestItemBuilder","defaultCodec","defaultTestBlockGenerator","defaultTestGenerator","defaultValueEncoding"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/mocks.ts":{"bytesInOutput":1161},"src/testing/index.ts":{"bytesInOutput":0},"src/testing/test-builder.ts":{"bytesInOutput":2341},"src/testing/test-generator.ts":{"bytesInOutput":1307}},"bytes":5300},"dist/lib/node-esm/chunk-D4DVCY7Y.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":28365},"dist/lib/node-esm/chunk-D4DVCY7Y.mjs":{"imports":[{"path":"node:util","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"streamx","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"lodash.defaultsdeep","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/hypercore","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["FeedFactory","FeedStore","FeedWrapper"],"inputs":{"src/feed-wrapper.ts":{"bytesInOutput":9436},"src/feed-factory.ts":{"bytesInOutput":2403},"src/feed-store.ts":{"bytesInOutput":3498}},"bytes":15598}}}
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  FeedFactory,
4
4
  FeedStore
5
- } from "../chunk-HZYWB6M3.mjs";
5
+ } from "../chunk-D4DVCY7Y.mjs";
6
6
 
7
7
  // src/testing/mocks.ts
8
8
  import { Event, scheduleTask } from "@dxos/async";
@@ -58,7 +58,7 @@ export declare class FeedWrapper<T extends {}> {
58
58
  clear(start: number, end?: number): Promise<void>;
59
59
  proof(index: number, options?: any): Promise<Proof>;
60
60
  put(index: number, data: T, proof: Proof): Promise<void>;
61
- putBuffer(...args: any[]): any;
61
+ putBuffer(index: number, data: Buffer | Uint8Array, proof: Proof, peer: null): Promise<void>;
62
62
  /**
63
63
  * Clear and check for integrity.
64
64
  */
@@ -1 +1 @@
1
- {"version":3,"file":"feed-wrapper.d.ts","sourceRoot":"","sources":["../../../src/feed-wrapper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAC;AAI9C,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnE;;GAEG;AACH,qBAAa,WAAW,CAAC,CAAC,SAAS,EAAE;IAWjC,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,iBAAiB;IAX3B,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IAGxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAE5C,OAAO,CAAC,OAAO,CAAS;gBAGtB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EACf,IAAI,EAAE,SAAS,EAAE,0EAA0E;IAC3F,iBAAiB,EAAE,SAAS;IAQtC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM;IAI1B,MAAM,IAAI;QAAE,OAAO,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE;IASlF,IAAI,GAAG,IAAI,SAAS,CAEnB;IAED,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,CAEvB;IAGD,IAAI,UAAU,IAAI,mBAAmB,CAEpC;IAED,oBAAoB,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,QAAQ;IA0BxD,gBAAgB,IAAI,UAAU,CAAC,CAAC,CAAC;IAiC3B,iBAAiB,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAWvD;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAIjB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAIlB,IAAI,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAI9C,MAAM,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAIjD,KAAK,sBAWH;IAEF,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;IAI/B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;IAKvC,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1C;;OAEG;IACH,QAAQ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAItD,UAAU,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAI1D,cAAc,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAIlE,SAAS,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAIxD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;IAIjC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;IAIlC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK;IAIxC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;IAIxB;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiCzD"}
1
+ {"version":3,"file":"feed-wrapper.d.ts","sourceRoot":"","sources":["../../../src/feed-wrapper.ts"],"names":[],"mappings":"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"}