@dxos/hypercore 0.1.41 → 0.1.45-next.45667d4

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/crypto.ts", "../../../src/defaults.ts", "../../../src/hypercore-factory.ts", "../../../src/util.ts", "../../../src/iterator.ts"],
4
- "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { AbstractValueEncoding, Crypto } from 'hypercore';\nimport assert from 'node:assert';\nimport { callbackify } from 'node:util';\n\nimport { Codec, EncodingOptions } from '@dxos/codec-protobuf';\nimport { Signer, verifySignature } from '@dxos/crypto';\nimport { PublicKey } from '@dxos/keys';\n\n/**\n * Create encoding (e.g., from protobuf codec).\n */\nexport const createCodecEncoding = <T>(codec: Codec<T>, opts?: EncodingOptions): AbstractValueEncoding<T> => ({\n encode: (obj: T) => Buffer.from(codec.encode(obj, opts)),\n decode: (buffer: Buffer) => codec.decode(buffer, opts)\n});\n\n/**\n * Create a custom hypercore crypto signer.\n */\n// TODO(burdon): Create test without adding deps.\nexport const createCrypto = (signer: Signer, publicKey: PublicKey): Crypto => {\n assert(signer);\n assert(publicKey);\n\n return {\n sign: (message, secretKey, cb) => {\n callbackify(signer.sign.bind(signer!))(publicKey, message, (err, result) => {\n if (err) {\n cb(err, null);\n return;\n }\n\n cb(null, Buffer.from(result));\n });\n },\n\n verify: async (message, signature, key, cb) => {\n // NOTE: Uses the public key passed into function.\n callbackify(verifySignature)(publicKey, message, signature, cb);\n }\n };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport type { HypercoreOptions, ReadStreamOptions, ReplicationOptions, WriteStreamOptions } from 'hypercore';\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-feed--hypercorestorage-key-options\n */\nexport const defaultFeedOptions: HypercoreOptions = {\n createIfMissing: true,\n valueEncoding: 'binary'\n};\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedcreatereadstreamoptions\n */\nexport const defaultReadStreamOptions: ReadStreamOptions = {\n start: 0,\n end: Infinity,\n snapshot: true,\n tail: false,\n live: false,\n timeout: 0,\n wait: true,\n batch: 1\n};\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedcreatewritestreamopts\n */\nexport const defaultWriteStreamOptions: WriteStreamOptions = {\n maxBlockSize: Infinity\n};\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedreplicateisinitiator-options\n */\nexport const defaultReplicateOptions: ReplicationOptions = {\n live: false,\n ack: false,\n download: true,\n upload: true,\n encrypted: true,\n noise: true\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport hypercore from 'hypercore';\nimport type { Hypercore, HypercoreOptions } from 'hypercore';\nimport assert from 'node:assert';\n\nimport { createStorage, Directory, StorageType } from '@dxos/random-access-storage';\n\nimport { py } from './util';\n\n/**\n * Creates feeds with default properties.\n */\nexport class HypercoreFactory<T> {\n // prettier-ignore\n constructor(\n private readonly _root: Directory = createStorage({ type: StorageType.RAM }).createDirectory(),\n private readonly _options?: HypercoreOptions\n ) {\n assert(this._root);\n }\n\n /**\n * Creates a feed using a storage factory prefixed with the feed's key.\n * NOTE: We have to use our `random-access-storage` implementation since the native ones\n * do not behave uniformly across platforms.\n */\n createFeed(publicKey: Buffer, options?: HypercoreOptions): Hypercore<T> {\n const directory = this._root.createDirectory(publicKey.toString());\n const storage = (filename: string) => directory.getOrCreateFile(filename).native;\n return hypercore(storage, publicKey, Object.assign({}, this._options, options));\n }\n\n /**\n * Creates and opens a feed.\n */\n async openFeed(publicKey: Buffer, options?: HypercoreOptions): Promise<Hypercore<T>> {\n const feed = this.createFeed(publicKey, options);\n await py(feed, feed.open)(); // TODO(burdon): Sometimes strange bug if done inside function.\n return feed;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport util from 'node:util';\n\nexport const py = (obj: any, fn: Function) => util.promisify(fn.bind(obj));\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Readable } from 'readable-stream';\nimport { Readable as StreamXReadable } from 'streamx';\n\n/**\n * Wraps streamx.Readable (hypercore.createReadStream) to a standard Readable stream.\n *\n * The read-stream package is mirror of the streams implementations in Node.js 18.9.0.\n * This function is here to standardize the cast in case there are incompatibilities\n * across different platforms.\n *\n * Hypercore createReadStream returns a `streamx` Readable, which does not close properly on destroy.\n *\n * https://github.com/nodejs/readable-stream\n * https://nodejs.org/api/stream.html#readable-streams\n * https://nodejs.org/dist/v18.9.0/docs/api/stream.html#readablewrapstream\n */\nexport const createReadable = (stream: StreamXReadable): Readable => {\n return new Readable({ objectMode: true }).wrap(stream as any);\n};\n\n/**\n * Converts streamx.Readable (hypercore.createReadStream) to an async iterator.\n *\n * https://github.com/tc39/proposal-async-iteration\n * https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-3.html#async-iteration\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols\n */\nexport const createAsyncIterator = (stream: Readable): AsyncIterator<any> => {\n return stream[Symbol.asyncIterator]();\n};\n"],
4
+ "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { AbstractValueEncoding, Crypto } from 'hypercore';\nimport assert from 'node:assert';\nimport { callbackify } from 'node:util';\n\nimport { Codec, EncodingOptions } from '@dxos/codec-protobuf';\nimport { Signer, verifySignature } from '@dxos/crypto';\nimport { PublicKey } from '@dxos/keys';\n\n/**\n * Create encoding (e.g., from protobuf codec).\n */\nexport const createCodecEncoding = <T>(codec: Codec<T>, opts?: EncodingOptions): AbstractValueEncoding<T> => ({\n encode: (obj: T) => Buffer.from(codec.encode(obj, opts)),\n decode: (buffer: Buffer) => codec.decode(buffer, opts),\n});\n\n/**\n * Create a custom hypercore crypto signer.\n */\n// TODO(burdon): Create test without adding deps.\nexport const createCrypto = (signer: Signer, publicKey: PublicKey): Crypto => {\n assert(signer);\n assert(publicKey);\n\n return {\n sign: (message, secretKey, cb) => {\n callbackify(signer.sign.bind(signer!))(publicKey, message, (err, result) => {\n if (err) {\n cb(err, null);\n return;\n }\n\n cb(null, Buffer.from(result));\n });\n },\n\n verify: async (message, signature, key, cb) => {\n // NOTE: Uses the public key passed into function.\n callbackify(verifySignature)(publicKey, message, signature, cb);\n },\n };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport type { HypercoreOptions, ReadStreamOptions, ReplicationOptions, WriteStreamOptions } from 'hypercore';\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-feed--hypercorestorage-key-options\n */\nexport const defaultFeedOptions: HypercoreOptions = {\n createIfMissing: true,\n valueEncoding: 'binary',\n};\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedcreatereadstreamoptions\n */\nexport const defaultReadStreamOptions: ReadStreamOptions = {\n start: 0,\n end: Infinity,\n snapshot: true,\n tail: false,\n live: false,\n timeout: 0,\n wait: true,\n batch: 1,\n};\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedcreatewritestreamopts\n */\nexport const defaultWriteStreamOptions: WriteStreamOptions = {\n maxBlockSize: Infinity,\n};\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedreplicateisinitiator-options\n */\nexport const defaultReplicateOptions: ReplicationOptions = {\n live: false,\n ack: false,\n download: true,\n upload: true,\n encrypted: true,\n noise: true,\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport hypercore from 'hypercore';\nimport type { Hypercore, HypercoreOptions } from 'hypercore';\nimport assert from 'node:assert';\n\nimport { createStorage, Directory, StorageType } from '@dxos/random-access-storage';\n\nimport { py } from './util';\n\n/**\n * Creates feeds with default properties.\n */\nexport class HypercoreFactory<T> {\n // prettier-ignore\n constructor(\n private readonly _root: Directory = createStorage({ type: StorageType.RAM }).createDirectory(),\n private readonly _options?: HypercoreOptions\n ) {\n assert(this._root);\n }\n\n /**\n * Creates a feed using a storage factory prefixed with the feed's key.\n * NOTE: We have to use our `random-access-storage` implementation since the native ones\n * do not behave uniformly across platforms.\n */\n createFeed(publicKey: Buffer, options?: HypercoreOptions): Hypercore<T> {\n const directory = this._root.createDirectory(publicKey.toString());\n const storage = (filename: string) => directory.getOrCreateFile(filename).native;\n return hypercore(storage, publicKey, Object.assign({}, this._options, options));\n }\n\n /**\n * Creates and opens a feed.\n */\n async openFeed(publicKey: Buffer, options?: HypercoreOptions): Promise<Hypercore<T>> {\n const feed = this.createFeed(publicKey, options);\n await py(feed, feed.open)(); // TODO(burdon): Sometimes strange bug if done inside function.\n return feed;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport util from 'node:util';\n\nexport const py = (obj: any, fn: Function) => util.promisify(fn.bind(obj));\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Readable } from 'readable-stream';\nimport { Readable as StreamXReadable } from 'streamx';\n\n/**\n * Wraps streamx.Readable (hypercore.createReadStream) to a standard Readable stream.\n *\n * The read-stream package is mirror of the streams implementations in Node.js 18.9.0.\n * This function is here to standardize the cast in case there are incompatibilities\n * across different platforms.\n *\n * Hypercore createReadStream returns a `streamx` Readable, which does not close properly on destroy.\n *\n * https://github.com/nodejs/readable-stream\n * https://nodejs.org/api/stream.html#readable-streams\n * https://nodejs.org/dist/v18.9.0/docs/api/stream.html#readablewrapstream\n */\nexport const createReadable = (stream: StreamXReadable): Readable => {\n return new Readable({ objectMode: true }).wrap(stream as any);\n};\n\n/**\n * Converts streamx.Readable (hypercore.createReadStream) to an async iterator.\n *\n * https://github.com/tc39/proposal-async-iteration\n * https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-3.html#async-iteration\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols\n */\nexport const createAsyncIterator = (stream: Readable): AsyncIterator<any> => {\n return stream[Symbol.asyncIterator]();\n};\n"],
5
5
  "mappings": ";;;AAKA,OAAOA,YAAY;AACnB,SAASC,mBAAmB;AAG5B,SAAiBC,uBAAuB;AAMjC,IAAMC,sBAAsB,CAAIC,OAAiBC,UAAsD;EAC5GC,QAAQ,CAACC,QAAWC,OAAOC,KAAKL,MAAME,OAAOC,KAAKF,IAAAA,CAAAA;EAClDK,QAAQ,CAACC,WAAmBP,MAAMM,OAAOC,QAAQN,IAAAA;AACnD;AAMO,IAAMO,eAAe,CAACC,QAAgBC,cAAiC;AAC5Ed,SAAOa,MAAAA;AACPb,SAAOc,SAAAA;AAEP,SAAO;IACLC,MAAM,CAACC,SAASC,WAAWC,OAAO;AAChCjB,kBAAYY,OAAOE,KAAKI,KAAKN,MAAAA,CAAAA,EAAUC,WAAWE,SAAS,CAACI,KAAKC,WAAW;AAC1E,YAAID,KAAK;AACPF,aAAGE,KAAK,IAAI;AACZ;QACF;AAEAF,WAAG,MAAMV,OAAOC,KAAKY,MAAAA,CAAAA;MACvB,CAAA;IACF;IAEAC,QAAQ,OAAON,SAASO,WAAWC,KAAKN,OAAO;AAE7CjB,kBAAYC,eAAAA,EAAiBY,WAAWE,SAASO,WAAWL,EAAAA;IAC9D;EACF;AACF;;;ACpCO,IAAMO,qBAAuC;EAClDC,iBAAiB;EACjBC,eAAe;AACjB;AAKO,IAAMC,2BAA8C;EACzDC,OAAO;EACPC,KAAKC;EACLC,UAAU;EACVC,MAAM;EACNC,MAAM;EACNC,SAAS;EACTC,MAAM;EACNC,OAAO;AACT;AAKO,IAAMC,4BAAgD;EAC3DC,cAAcR;AAChB;AAKO,IAAMS,0BAA8C;EACzDN,MAAM;EACNO,KAAK;EACLC,UAAU;EACVC,QAAQ;EACRC,WAAW;EACXC,OAAO;AACT;;;ACzCA,OAAOC,eAAe;AAEtB,OAAOC,aAAY;AAEnB,SAASC,eAA0BC,mBAAmB;;;ACJtD,OAAOC,UAAU;AAEV,IAAMC,KAAK,CAACC,KAAUC,OAAiBH,KAAKI,UAAUD,GAAGE,KAAKH,GAAAA,CAAAA;;;ADS9D,IAAMI,mBAAN,MAAMA;;EAEXC,YACmBC,QAAmBC,cAAc;IAAEC,MAAMC,YAAYC;EAAI,CAAA,EAAGC,gBAAe,GAC3EC,UACjB;iBAFiBN;oBACAM;AAEjBC,IAAAA,QAAO,KAAKP,KAAK;EACnB;;;;;;EAOAQ,WAAWC,WAAmBC,SAA0C;AACtE,UAAMC,YAAY,KAAKX,MAAMK,gBAAgBI,UAAUG,SAAQ,CAAA;AAC/D,UAAMC,UAAU,CAACC,aAAqBH,UAAUI,gBAAgBD,QAAAA,EAAUE;AAC1E,WAAOC,UAAUJ,SAASJ,WAAWS,OAAOC,OAAO,CAAC,GAAG,KAAKb,UAAUI,OAAAA,CAAAA;EACxE;;;;EAKA,MAAMU,SAASX,WAAmBC,SAAmD;AACnF,UAAMW,OAAO,KAAKb,WAAWC,WAAWC,OAAAA;AACxC,UAAMY,GAAGD,MAAMA,KAAKE,IAAI,EAAA;AACxB,WAAOF;EACT;AACF;;;AEvCA,SAASG,gBAAgB;AAgBlB,IAAMC,iBAAiB,CAACC,WAAsC;AACnE,SAAO,IAAIF,SAAS;IAAEG,YAAY;EAAK,CAAA,EAAGC,KAAKF,MAAAA;AACjD;AAUO,IAAMG,sBAAsB,CAACH,WAAyC;AAC3E,SAAOA,OAAOI,OAAOC,aAAa,EAAC;AACrC;",
6
6
  "names": ["assert", "callbackify", "verifySignature", "createCodecEncoding", "codec", "opts", "encode", "obj", "Buffer", "from", "decode", "buffer", "createCrypto", "signer", "publicKey", "sign", "message", "secretKey", "cb", "bind", "err", "result", "verify", "signature", "key", "defaultFeedOptions", "createIfMissing", "valueEncoding", "defaultReadStreamOptions", "start", "end", "Infinity", "snapshot", "tail", "live", "timeout", "wait", "batch", "defaultWriteStreamOptions", "maxBlockSize", "defaultReplicateOptions", "ack", "download", "upload", "encrypted", "noise", "hypercore", "assert", "createStorage", "StorageType", "util", "py", "obj", "fn", "promisify", "bind", "HypercoreFactory", "constructor", "_root", "createStorage", "type", "StorageType", "RAM", "createDirectory", "_options", "assert", "createFeed", "publicKey", "options", "directory", "toString", "storage", "filename", "getOrCreateFile", "native", "hypercore", "Object", "assign", "openFeed", "feed", "py", "open", "Readable", "createReadable", "stream", "objectMode", "wrap", "createAsyncIterator", "Symbol", "asyncIterator"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/common/hypercore/src/crypto.ts":{"bytes":4377,"imports":[{"path":"@dxos/node-std/assert","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true}]},"packages/common/hypercore/src/defaults.ts":{"bytes":3698,"imports":[]},"packages/common/hypercore/src/util.ts":{"bytes":713,"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true}]},"packages/common/hypercore/src/hypercore-factory.ts":{"bytes":4820,"imports":[{"path":"hypercore","kind":"import-statement","external":true},{"path":"@dxos/node-std/assert","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"packages/common/hypercore/src/util.ts","kind":"import-statement","original":"./util"}]},"packages/common/hypercore/src/iterator.ts":{"bytes":3893,"imports":[{"path":"readable-stream","kind":"import-statement","external":true}]},"packages/common/hypercore/src/index.ts":{"bytes":659,"imports":[{"path":"packages/common/hypercore/src/crypto.ts","kind":"import-statement","original":"./crypto"},{"path":"packages/common/hypercore/src/defaults.ts","kind":"import-statement","original":"./defaults"},{"path":"packages/common/hypercore/src/hypercore-factory.ts","kind":"import-statement","original":"./hypercore-factory"},{"path":"packages/common/hypercore/src/iterator.ts","kind":"import-statement","original":"./iterator"}]}},"outputs":{"packages/common/hypercore/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8713},"packages/common/hypercore/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/node-std/assert","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"hypercore","kind":"import-statement","external":true},{"path":"@dxos/node-std/assert","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"readable-stream","kind":"import-statement","external":true}],"exports":["HypercoreFactory","createAsyncIterator","createCodecEncoding","createCrypto","createReadable","defaultFeedOptions","defaultReadStreamOptions","defaultReplicateOptions","defaultWriteStreamOptions"],"entryPoint":"packages/common/hypercore/src/index.ts","inputs":{"packages/common/hypercore/src/crypto.ts":{"bytesInOutput":782},"packages/common/hypercore/src/index.ts":{"bytesInOutput":0},"packages/common/hypercore/src/defaults.ts":{"bytesInOutput":426},"packages/common/hypercore/src/hypercore-factory.ts":{"bytesInOutput":1074},"packages/common/hypercore/src/util.ts":{"bytesInOutput":92},"packages/common/hypercore/src/iterator.ts":{"bytesInOutput":230}},"bytes":3176}}}
1
+ {"inputs":{"packages/common/hypercore/src/crypto.ts":{"bytes":4381,"imports":[{"path":"@dxos/node-std/assert","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true}]},"packages/common/hypercore/src/defaults.ts":{"bytes":3706,"imports":[]},"packages/common/hypercore/src/util.ts":{"bytes":713,"imports":[{"path":"@dxos/node-std/util","kind":"import-statement","external":true}]},"packages/common/hypercore/src/hypercore-factory.ts":{"bytes":4820,"imports":[{"path":"hypercore","kind":"import-statement","external":true},{"path":"@dxos/node-std/assert","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"packages/common/hypercore/src/util.ts","kind":"import-statement","original":"./util"}]},"packages/common/hypercore/src/iterator.ts":{"bytes":3893,"imports":[{"path":"readable-stream","kind":"import-statement","external":true}]},"packages/common/hypercore/src/index.ts":{"bytes":659,"imports":[{"path":"packages/common/hypercore/src/crypto.ts","kind":"import-statement","original":"./crypto"},{"path":"packages/common/hypercore/src/defaults.ts","kind":"import-statement","original":"./defaults"},{"path":"packages/common/hypercore/src/hypercore-factory.ts","kind":"import-statement","original":"./hypercore-factory"},{"path":"packages/common/hypercore/src/iterator.ts","kind":"import-statement","original":"./iterator"}]}},"outputs":{"packages/common/hypercore/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8719},"packages/common/hypercore/dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/node-std/assert","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true},{"path":"hypercore","kind":"import-statement","external":true},{"path":"@dxos/node-std/assert","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"@dxos/node-std/util","kind":"import-statement","external":true},{"path":"readable-stream","kind":"import-statement","external":true}],"exports":["HypercoreFactory","createAsyncIterator","createCodecEncoding","createCrypto","createReadable","defaultFeedOptions","defaultReadStreamOptions","defaultReplicateOptions","defaultWriteStreamOptions"],"entryPoint":"packages/common/hypercore/src/index.ts","inputs":{"packages/common/hypercore/src/crypto.ts":{"bytesInOutput":782},"packages/common/hypercore/src/index.ts":{"bytesInOutput":0},"packages/common/hypercore/src/defaults.ts":{"bytesInOutput":426},"packages/common/hypercore/src/hypercore-factory.ts":{"bytesInOutput":1074},"packages/common/hypercore/src/util.ts":{"bytesInOutput":92},"packages/common/hypercore/src/iterator.ts":{"bytesInOutput":230}},"bytes":3176}}}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/index.ts", "../../../src/crypto.ts", "../../../src/defaults.ts", "../../../src/hypercore-factory.ts", "../../../src/util.ts", "../../../src/iterator.ts"],
4
- "sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\nexport * from './crypto';\nexport * from './defaults';\nexport * from './hypercore-factory';\nexport * from './iterator';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { AbstractValueEncoding, Crypto } from 'hypercore';\nimport assert from 'node:assert';\nimport { callbackify } from 'node:util';\n\nimport { Codec, EncodingOptions } from '@dxos/codec-protobuf';\nimport { Signer, verifySignature } from '@dxos/crypto';\nimport { PublicKey } from '@dxos/keys';\n\n/**\n * Create encoding (e.g., from protobuf codec).\n */\nexport const createCodecEncoding = <T>(codec: Codec<T>, opts?: EncodingOptions): AbstractValueEncoding<T> => ({\n encode: (obj: T) => Buffer.from(codec.encode(obj, opts)),\n decode: (buffer: Buffer) => codec.decode(buffer, opts)\n});\n\n/**\n * Create a custom hypercore crypto signer.\n */\n// TODO(burdon): Create test without adding deps.\nexport const createCrypto = (signer: Signer, publicKey: PublicKey): Crypto => {\n assert(signer);\n assert(publicKey);\n\n return {\n sign: (message, secretKey, cb) => {\n callbackify(signer.sign.bind(signer!))(publicKey, message, (err, result) => {\n if (err) {\n cb(err, null);\n return;\n }\n\n cb(null, Buffer.from(result));\n });\n },\n\n verify: async (message, signature, key, cb) => {\n // NOTE: Uses the public key passed into function.\n callbackify(verifySignature)(publicKey, message, signature, cb);\n }\n };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport type { HypercoreOptions, ReadStreamOptions, ReplicationOptions, WriteStreamOptions } from 'hypercore';\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-feed--hypercorestorage-key-options\n */\nexport const defaultFeedOptions: HypercoreOptions = {\n createIfMissing: true,\n valueEncoding: 'binary'\n};\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedcreatereadstreamoptions\n */\nexport const defaultReadStreamOptions: ReadStreamOptions = {\n start: 0,\n end: Infinity,\n snapshot: true,\n tail: false,\n live: false,\n timeout: 0,\n wait: true,\n batch: 1\n};\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedcreatewritestreamopts\n */\nexport const defaultWriteStreamOptions: WriteStreamOptions = {\n maxBlockSize: Infinity\n};\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedreplicateisinitiator-options\n */\nexport const defaultReplicateOptions: ReplicationOptions = {\n live: false,\n ack: false,\n download: true,\n upload: true,\n encrypted: true,\n noise: true\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport hypercore from 'hypercore';\nimport type { Hypercore, HypercoreOptions } from 'hypercore';\nimport assert from 'node:assert';\n\nimport { createStorage, Directory, StorageType } from '@dxos/random-access-storage';\n\nimport { py } from './util';\n\n/**\n * Creates feeds with default properties.\n */\nexport class HypercoreFactory<T> {\n // prettier-ignore\n constructor(\n private readonly _root: Directory = createStorage({ type: StorageType.RAM }).createDirectory(),\n private readonly _options?: HypercoreOptions\n ) {\n assert(this._root);\n }\n\n /**\n * Creates a feed using a storage factory prefixed with the feed's key.\n * NOTE: We have to use our `random-access-storage` implementation since the native ones\n * do not behave uniformly across platforms.\n */\n createFeed(publicKey: Buffer, options?: HypercoreOptions): Hypercore<T> {\n const directory = this._root.createDirectory(publicKey.toString());\n const storage = (filename: string) => directory.getOrCreateFile(filename).native;\n return hypercore(storage, publicKey, Object.assign({}, this._options, options));\n }\n\n /**\n * Creates and opens a feed.\n */\n async openFeed(publicKey: Buffer, options?: HypercoreOptions): Promise<Hypercore<T>> {\n const feed = this.createFeed(publicKey, options);\n await py(feed, feed.open)(); // TODO(burdon): Sometimes strange bug if done inside function.\n return feed;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport util from 'node:util';\n\nexport const py = (obj: any, fn: Function) => util.promisify(fn.bind(obj));\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Readable } from 'readable-stream';\nimport { Readable as StreamXReadable } from 'streamx';\n\n/**\n * Wraps streamx.Readable (hypercore.createReadStream) to a standard Readable stream.\n *\n * The read-stream package is mirror of the streams implementations in Node.js 18.9.0.\n * This function is here to standardize the cast in case there are incompatibilities\n * across different platforms.\n *\n * Hypercore createReadStream returns a `streamx` Readable, which does not close properly on destroy.\n *\n * https://github.com/nodejs/readable-stream\n * https://nodejs.org/api/stream.html#readable-streams\n * https://nodejs.org/dist/v18.9.0/docs/api/stream.html#readablewrapstream\n */\nexport const createReadable = (stream: StreamXReadable): Readable => {\n return new Readable({ objectMode: true }).wrap(stream as any);\n};\n\n/**\n * Converts streamx.Readable (hypercore.createReadStream) to an async iterator.\n *\n * https://github.com/tc39/proposal-async-iteration\n * https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-3.html#async-iteration\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols\n */\nexport const createAsyncIterator = (stream: Readable): AsyncIterator<any> => {\n return stream[Symbol.asyncIterator]();\n};\n"],
4
+ "sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\nexport * from './crypto';\nexport * from './defaults';\nexport * from './hypercore-factory';\nexport * from './iterator';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { AbstractValueEncoding, Crypto } from 'hypercore';\nimport assert from 'node:assert';\nimport { callbackify } from 'node:util';\n\nimport { Codec, EncodingOptions } from '@dxos/codec-protobuf';\nimport { Signer, verifySignature } from '@dxos/crypto';\nimport { PublicKey } from '@dxos/keys';\n\n/**\n * Create encoding (e.g., from protobuf codec).\n */\nexport const createCodecEncoding = <T>(codec: Codec<T>, opts?: EncodingOptions): AbstractValueEncoding<T> => ({\n encode: (obj: T) => Buffer.from(codec.encode(obj, opts)),\n decode: (buffer: Buffer) => codec.decode(buffer, opts),\n});\n\n/**\n * Create a custom hypercore crypto signer.\n */\n// TODO(burdon): Create test without adding deps.\nexport const createCrypto = (signer: Signer, publicKey: PublicKey): Crypto => {\n assert(signer);\n assert(publicKey);\n\n return {\n sign: (message, secretKey, cb) => {\n callbackify(signer.sign.bind(signer!))(publicKey, message, (err, result) => {\n if (err) {\n cb(err, null);\n return;\n }\n\n cb(null, Buffer.from(result));\n });\n },\n\n verify: async (message, signature, key, cb) => {\n // NOTE: Uses the public key passed into function.\n callbackify(verifySignature)(publicKey, message, signature, cb);\n },\n };\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport type { HypercoreOptions, ReadStreamOptions, ReplicationOptions, WriteStreamOptions } from 'hypercore';\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-feed--hypercorestorage-key-options\n */\nexport const defaultFeedOptions: HypercoreOptions = {\n createIfMissing: true,\n valueEncoding: 'binary',\n};\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedcreatereadstreamoptions\n */\nexport const defaultReadStreamOptions: ReadStreamOptions = {\n start: 0,\n end: Infinity,\n snapshot: true,\n tail: false,\n live: false,\n timeout: 0,\n wait: true,\n batch: 1,\n};\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedcreatewritestreamopts\n */\nexport const defaultWriteStreamOptions: WriteStreamOptions = {\n maxBlockSize: Infinity,\n};\n\n/**\n * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedreplicateisinitiator-options\n */\nexport const defaultReplicateOptions: ReplicationOptions = {\n live: false,\n ack: false,\n download: true,\n upload: true,\n encrypted: true,\n noise: true,\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport hypercore from 'hypercore';\nimport type { Hypercore, HypercoreOptions } from 'hypercore';\nimport assert from 'node:assert';\n\nimport { createStorage, Directory, StorageType } from '@dxos/random-access-storage';\n\nimport { py } from './util';\n\n/**\n * Creates feeds with default properties.\n */\nexport class HypercoreFactory<T> {\n // prettier-ignore\n constructor(\n private readonly _root: Directory = createStorage({ type: StorageType.RAM }).createDirectory(),\n private readonly _options?: HypercoreOptions\n ) {\n assert(this._root);\n }\n\n /**\n * Creates a feed using a storage factory prefixed with the feed's key.\n * NOTE: We have to use our `random-access-storage` implementation since the native ones\n * do not behave uniformly across platforms.\n */\n createFeed(publicKey: Buffer, options?: HypercoreOptions): Hypercore<T> {\n const directory = this._root.createDirectory(publicKey.toString());\n const storage = (filename: string) => directory.getOrCreateFile(filename).native;\n return hypercore(storage, publicKey, Object.assign({}, this._options, options));\n }\n\n /**\n * Creates and opens a feed.\n */\n async openFeed(publicKey: Buffer, options?: HypercoreOptions): Promise<Hypercore<T>> {\n const feed = this.createFeed(publicKey, options);\n await py(feed, feed.open)(); // TODO(burdon): Sometimes strange bug if done inside function.\n return feed;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport util from 'node:util';\n\nexport const py = (obj: any, fn: Function) => util.promisify(fn.bind(obj));\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Readable } from 'readable-stream';\nimport { Readable as StreamXReadable } from 'streamx';\n\n/**\n * Wraps streamx.Readable (hypercore.createReadStream) to a standard Readable stream.\n *\n * The read-stream package is mirror of the streams implementations in Node.js 18.9.0.\n * This function is here to standardize the cast in case there are incompatibilities\n * across different platforms.\n *\n * Hypercore createReadStream returns a `streamx` Readable, which does not close properly on destroy.\n *\n * https://github.com/nodejs/readable-stream\n * https://nodejs.org/api/stream.html#readable-streams\n * https://nodejs.org/dist/v18.9.0/docs/api/stream.html#readablewrapstream\n */\nexport const createReadable = (stream: StreamXReadable): Readable => {\n return new Readable({ objectMode: true }).wrap(stream as any);\n};\n\n/**\n * Converts streamx.Readable (hypercore.createReadStream) to an async iterator.\n *\n * https://github.com/tc39/proposal-async-iteration\n * https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-3.html#async-iteration\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols\n */\nexport const createAsyncIterator = (stream: Readable): AsyncIterator<any> => {\n return stream[Symbol.asyncIterator]();\n};\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;ACKA,yBAAmB;AACnB,uBAA4B;AAG5B,oBAAwC;AAMjC,IAAMA,sBAAsB,CAAIC,OAAiBC,UAAsD;EAC5GC,QAAQ,CAACC,QAAWC,OAAOC,KAAKL,MAAME,OAAOC,KAAKF,IAAAA,CAAAA;EAClDK,QAAQ,CAACC,WAAmBP,MAAMM,OAAOC,QAAQN,IAAAA;AACnD;AAMO,IAAMO,eAAe,CAACC,QAAgBC,cAAiC;AAC5EC,yBAAAA,SAAOF,MAAAA;AACPE,yBAAAA,SAAOD,SAAAA;AAEP,SAAO;IACLE,MAAM,CAACC,SAASC,WAAWC,OAAO;AAChCC,wCAAYP,OAAOG,KAAKK,KAAKR,MAAAA,CAAAA,EAAUC,WAAWG,SAAS,CAACK,KAAKC,WAAW;AAC1E,YAAID,KAAK;AACPH,aAAGG,KAAK,IAAI;AACZ;QACF;AAEAH,WAAG,MAAMX,OAAOC,KAAKc,MAAAA,CAAAA;MACvB,CAAA;IACF;IAEAC,QAAQ,OAAOP,SAASQ,WAAWC,KAAKP,OAAO;AAE7CC,wCAAYO,6BAAAA,EAAiBb,WAAWG,SAASQ,WAAWN,EAAAA;IAC9D;EACF;AACF;;;ACpCO,IAAMS,qBAAuC;EAClDC,iBAAiB;EACjBC,eAAe;AACjB;AAKO,IAAMC,2BAA8C;EACzDC,OAAO;EACPC,KAAKC;EACLC,UAAU;EACVC,MAAM;EACNC,MAAM;EACNC,SAAS;EACTC,MAAM;EACNC,OAAO;AACT;AAKO,IAAMC,4BAAgD;EAC3DC,cAAcR;AAChB;AAKO,IAAMS,0BAA8C;EACzDN,MAAM;EACNO,KAAK;EACLC,UAAU;EACVC,QAAQ;EACRC,WAAW;EACXC,OAAO;AACT;;;ACzCA,uBAAsB;AAEtB,IAAAC,sBAAmB;AAEnB,mCAAsD;;;ACJtD,IAAAC,oBAAiB;AAEV,IAAMC,KAAK,CAACC,KAAUC,OAAiBC,kBAAAA,QAAKC,UAAUF,GAAGG,KAAKJ,GAAAA,CAAAA;;;ADS9D,IAAMK,mBAAN,MAAMA;;EAEXC,YACmBC,YAAmBC,4CAAc;IAAEC,MAAMC,yCAAYC;EAAI,CAAA,EAAGC,gBAAe,GAC3EC,UACjB;iBAFiBN;oBACAM;AAEjBC,4BAAAA,SAAO,KAAKP,KAAK;EACnB;;;;;;EAOAQ,WAAWC,WAAmBC,SAA0C;AACtE,UAAMC,YAAY,KAAKX,MAAMK,gBAAgBI,UAAUG,SAAQ,CAAA;AAC/D,UAAMC,UAAU,CAACC,aAAqBH,UAAUI,gBAAgBD,QAAAA,EAAUE;AAC1E,eAAOC,iBAAAA,SAAUJ,SAASJ,WAAWS,OAAOC,OAAO,CAAC,GAAG,KAAKb,UAAUI,OAAAA,CAAAA;EACxE;;;;EAKA,MAAMU,SAASX,WAAmBC,SAAmD;AACnF,UAAMW,OAAO,KAAKb,WAAWC,WAAWC,OAAAA;AACxC,UAAMY,GAAGD,MAAMA,KAAKE,IAAI,EAAA;AACxB,WAAOF;EACT;AACF;;;AEvCA,6BAAyB;AAgBlB,IAAMG,iBAAiB,CAACC,WAAsC;AACnE,SAAO,IAAIC,gCAAS;IAAEC,YAAY;EAAK,CAAA,EAAGC,KAAKH,MAAAA;AACjD;AAUO,IAAMI,sBAAsB,CAACJ,WAAyC;AAC3E,SAAOA,OAAOK,OAAOC,aAAa,EAAC;AACrC;",
6
6
  "names": ["createCodecEncoding", "codec", "opts", "encode", "obj", "Buffer", "from", "decode", "buffer", "createCrypto", "signer", "publicKey", "assert", "sign", "message", "secretKey", "cb", "callbackify", "bind", "err", "result", "verify", "signature", "key", "verifySignature", "defaultFeedOptions", "createIfMissing", "valueEncoding", "defaultReadStreamOptions", "start", "end", "Infinity", "snapshot", "tail", "live", "timeout", "wait", "batch", "defaultWriteStreamOptions", "maxBlockSize", "defaultReplicateOptions", "ack", "download", "upload", "encrypted", "noise", "import_node_assert", "import_node_util", "py", "obj", "fn", "util", "promisify", "bind", "HypercoreFactory", "constructor", "_root", "createStorage", "type", "StorageType", "RAM", "createDirectory", "_options", "assert", "createFeed", "publicKey", "options", "directory", "toString", "storage", "filename", "getOrCreateFile", "native", "hypercore", "Object", "assign", "openFeed", "feed", "py", "open", "createReadable", "stream", "Readable", "objectMode", "wrap", "createAsyncIterator", "Symbol", "asyncIterator"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/common/hypercore/src/crypto.ts":{"bytes":4377,"imports":[{"path":"node:assert","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true}]},"packages/common/hypercore/src/defaults.ts":{"bytes":3698,"imports":[]},"packages/common/hypercore/src/util.ts":{"bytes":713,"imports":[{"path":"node:util","kind":"import-statement","external":true}]},"packages/common/hypercore/src/hypercore-factory.ts":{"bytes":4820,"imports":[{"path":"hypercore","kind":"import-statement","external":true},{"path":"node:assert","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"packages/common/hypercore/src/util.ts","kind":"import-statement","original":"./util"}]},"packages/common/hypercore/src/iterator.ts":{"bytes":3893,"imports":[{"path":"readable-stream","kind":"import-statement","external":true}]},"packages/common/hypercore/src/index.ts":{"bytes":659,"imports":[{"path":"packages/common/hypercore/src/crypto.ts","kind":"import-statement","original":"./crypto"},{"path":"packages/common/hypercore/src/defaults.ts","kind":"import-statement","original":"./defaults"},{"path":"packages/common/hypercore/src/hypercore-factory.ts","kind":"import-statement","original":"./hypercore-factory"},{"path":"packages/common/hypercore/src/iterator.ts","kind":"import-statement","original":"./iterator"}]}},"outputs":{"packages/common/hypercore/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8931},"packages/common/hypercore/dist/lib/node/index.cjs":{"imports":[{"path":"node:assert","kind":"require-call","external":true},{"path":"node:util","kind":"require-call","external":true},{"path":"@dxos/crypto","kind":"require-call","external":true},{"path":"hypercore","kind":"require-call","external":true},{"path":"node:assert","kind":"require-call","external":true},{"path":"@dxos/random-access-storage","kind":"require-call","external":true},{"path":"node:util","kind":"require-call","external":true},{"path":"readable-stream","kind":"require-call","external":true}],"exports":[],"entryPoint":"packages/common/hypercore/src/index.ts","inputs":{"packages/common/hypercore/src/index.ts":{"bytesInOutput":541},"packages/common/hypercore/src/crypto.ts":{"bytesInOutput":895},"packages/common/hypercore/src/defaults.ts":{"bytesInOutput":426},"packages/common/hypercore/src/hypercore-factory.ts":{"bytesInOutput":1216},"packages/common/hypercore/src/util.ts":{"bytesInOutput":128},"packages/common/hypercore/src/iterator.ts":{"bytesInOutput":266}},"bytes":5530}}}
1
+ {"inputs":{"packages/common/hypercore/src/crypto.ts":{"bytes":4381,"imports":[{"path":"node:assert","kind":"import-statement","external":true},{"path":"node:util","kind":"import-statement","external":true},{"path":"@dxos/crypto","kind":"import-statement","external":true}]},"packages/common/hypercore/src/defaults.ts":{"bytes":3706,"imports":[]},"packages/common/hypercore/src/util.ts":{"bytes":713,"imports":[{"path":"node:util","kind":"import-statement","external":true}]},"packages/common/hypercore/src/hypercore-factory.ts":{"bytes":4820,"imports":[{"path":"hypercore","kind":"import-statement","external":true},{"path":"node:assert","kind":"import-statement","external":true},{"path":"@dxos/random-access-storage","kind":"import-statement","external":true},{"path":"packages/common/hypercore/src/util.ts","kind":"import-statement","original":"./util"}]},"packages/common/hypercore/src/iterator.ts":{"bytes":3893,"imports":[{"path":"readable-stream","kind":"import-statement","external":true}]},"packages/common/hypercore/src/index.ts":{"bytes":659,"imports":[{"path":"packages/common/hypercore/src/crypto.ts","kind":"import-statement","original":"./crypto"},{"path":"packages/common/hypercore/src/defaults.ts","kind":"import-statement","original":"./defaults"},{"path":"packages/common/hypercore/src/hypercore-factory.ts","kind":"import-statement","original":"./hypercore-factory"},{"path":"packages/common/hypercore/src/iterator.ts","kind":"import-statement","original":"./iterator"}]}},"outputs":{"packages/common/hypercore/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8937},"packages/common/hypercore/dist/lib/node/index.cjs":{"imports":[{"path":"node:assert","kind":"require-call","external":true},{"path":"node:util","kind":"require-call","external":true},{"path":"@dxos/crypto","kind":"require-call","external":true},{"path":"hypercore","kind":"require-call","external":true},{"path":"node:assert","kind":"require-call","external":true},{"path":"@dxos/random-access-storage","kind":"require-call","external":true},{"path":"node:util","kind":"require-call","external":true},{"path":"readable-stream","kind":"require-call","external":true}],"exports":[],"entryPoint":"packages/common/hypercore/src/index.ts","inputs":{"packages/common/hypercore/src/index.ts":{"bytesInOutput":541},"packages/common/hypercore/src/crypto.ts":{"bytesInOutput":895},"packages/common/hypercore/src/defaults.ts":{"bytesInOutput":426},"packages/common/hypercore/src/hypercore-factory.ts":{"bytesInOutput":1216},"packages/common/hypercore/src/util.ts":{"bytesInOutput":128},"packages/common/hypercore/src/iterator.ts":{"bytesInOutput":266}},"bytes":5530}}}
@@ -1,10 +1,10 @@
1
1
  export declare const noop: () => void;
2
- export declare type TestDataItem = {
2
+ export type TestDataItem = {
3
3
  id: number;
4
4
  text: string;
5
5
  };
6
6
  export declare const createDataItem: (n: number) => TestDataItem;
7
- declare type BatchCallback = (next: (num: number) => void, index: number, remaining: number) => void;
7
+ type BatchCallback = (next: (num: number) => void, index: number, remaining: number) => void;
8
8
  export declare const batch: (cb: BatchCallback, total: number) => void;
9
9
  export {};
10
10
  //# sourceMappingURL=testing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../src/testing.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,IAAI,YAAW,CAAC;AAG7B,oBAAY,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,eAAO,MAAM,cAAc,MAAO,MAAM,KAAG,YAGzC,CAAC;AAEH,aAAK,aAAa,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;AAG7F,eAAO,MAAM,KAAK,OAAQ,aAAa,SAAS,MAAM,SAiBrD,CAAC"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../src/testing.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,IAAI,YAAW,CAAC;AAG7B,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,eAAO,MAAM,cAAc,MAAO,MAAM,KAAG,YAGzC,CAAC;AAEH,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;AAG7F,eAAO,MAAM,KAAK,OAAQ,aAAa,SAAS,MAAM,SAiBrD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/hypercore",
3
- "version": "0.1.41",
3
+ "version": "0.1.45-next.45667d4",
4
4
  "description": "Hypercore wrapper and utils.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -20,13 +20,13 @@
20
20
  "hypercore-protocol": "^8.0.7",
21
21
  "readable-stream": "^3.6.0",
22
22
  "streamx": "^2.12.5",
23
- "@dxos/async": "0.1.41",
24
- "@dxos/codec-protobuf": "0.1.41",
25
- "@dxos/crypto": "0.1.41",
26
- "@dxos/debug": "0.1.41",
27
- "@dxos/keys": "0.1.41",
28
- "@dxos/node-std": "0.1.41",
29
- "@dxos/random-access-storage": "0.1.41"
23
+ "@dxos/async": "0.1.45-next.45667d4",
24
+ "@dxos/codec-protobuf": "0.1.45-next.45667d4",
25
+ "@dxos/crypto": "0.1.45-next.45667d4",
26
+ "@dxos/debug": "0.1.45-next.45667d4",
27
+ "@dxos/keys": "0.1.45-next.45667d4",
28
+ "@dxos/node-std": "0.1.45-next.45667d4",
29
+ "@dxos/random-access-storage": "0.1.45-next.45667d4"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/debug": "^4.1.7",
@@ -36,8 +36,8 @@
36
36
  "debug": "^4.3.3",
37
37
  "faker": "^5.5.3",
38
38
  "random-access-memory": "^4.1.0",
39
- "@dxos/log": "0.1.41",
40
- "@dxos/util": "0.1.41"
39
+ "@dxos/log": "0.1.45-next.45667d4",
40
+ "@dxos/util": "0.1.45-next.45667d4"
41
41
  },
42
42
  "publishConfig": {
43
43
  "access": "public"
package/src/crypto.ts CHANGED
@@ -15,7 +15,7 @@ import { PublicKey } from '@dxos/keys';
15
15
  */
16
16
  export const createCodecEncoding = <T>(codec: Codec<T>, opts?: EncodingOptions): AbstractValueEncoding<T> => ({
17
17
  encode: (obj: T) => Buffer.from(codec.encode(obj, opts)),
18
- decode: (buffer: Buffer) => codec.decode(buffer, opts)
18
+ decode: (buffer: Buffer) => codec.decode(buffer, opts),
19
19
  });
20
20
 
21
21
  /**
@@ -41,6 +41,6 @@ export const createCrypto = (signer: Signer, publicKey: PublicKey): Crypto => {
41
41
  verify: async (message, signature, key, cb) => {
42
42
  // NOTE: Uses the public key passed into function.
43
43
  callbackify(verifySignature)(publicKey, message, signature, cb);
44
- }
44
+ },
45
45
  };
46
46
  };
package/src/defaults.ts CHANGED
@@ -9,7 +9,7 @@ import type { HypercoreOptions, ReadStreamOptions, ReplicationOptions, WriteStre
9
9
  */
10
10
  export const defaultFeedOptions: HypercoreOptions = {
11
11
  createIfMissing: true,
12
- valueEncoding: 'binary'
12
+ valueEncoding: 'binary',
13
13
  };
14
14
 
15
15
  /**
@@ -23,14 +23,14 @@ export const defaultReadStreamOptions: ReadStreamOptions = {
23
23
  live: false,
24
24
  timeout: 0,
25
25
  wait: true,
26
- batch: 1
26
+ batch: 1,
27
27
  };
28
28
 
29
29
  /**
30
30
  * https://github.com/hypercore-protocol/hypercore/tree/v9.12.0#var-stream--feedcreatewritestreamopts
31
31
  */
32
32
  export const defaultWriteStreamOptions: WriteStreamOptions = {
33
- maxBlockSize: Infinity
33
+ maxBlockSize: Infinity,
34
34
  };
35
35
 
36
36
  /**
@@ -42,5 +42,5 @@ export const defaultReplicateOptions: ReplicationOptions = {
42
42
  download: true,
43
43
  upload: true,
44
44
  encrypted: true,
45
- noise: true
45
+ noise: true,
46
46
  };
@@ -24,7 +24,7 @@ describe('HypercoreFactory', () => {
24
24
  Array.from({ length: numFeeds }).map(async () => {
25
25
  const { publicKey, secretKey } = createKeyPair();
26
26
  return await factory.openFeed(publicKey, { secretKey });
27
- })
27
+ }),
28
28
  );
29
29
 
30
30
  // Write data.
@@ -25,14 +25,14 @@ describe('ProtocolStream', () => {
25
25
  onhandshake: () => {
26
26
  log('onhandshake', { key: PublicKey.from(stream1.publicKey) });
27
27
  setHandshake();
28
- }
28
+ },
29
29
  });
30
30
 
31
31
  const stream2 = new ProtocolStream(false, {
32
32
  onhandshake: () => {
33
33
  log('onhandshake', { key: PublicKey.from(stream2.publicKey) });
34
34
  setHandshake();
35
- }
35
+ },
36
36
  });
37
37
 
38
38
  const [closed, setClosed] = latch({ count: 2 });
@@ -54,14 +54,14 @@ describe('ProtocolStream', () => {
54
54
  onhandshake: () => {
55
55
  log('onhandshake', { key: PublicKey.from(stream1.publicKey) });
56
56
  setHandshake();
57
- }
57
+ },
58
58
  });
59
59
 
60
60
  const stream2 = new ProtocolStream(false, {
61
61
  onhandshake: () => {
62
62
  log('onhandshake', { key: PublicKey.from(stream2.publicKey) });
63
63
  setHandshake();
64
- }
64
+ },
65
65
  });
66
66
 
67
67
  const [streamClosed, setStreamClosed] = latch({ count: 2 });
@@ -95,20 +95,20 @@ describe('ProtocolStream', () => {
95
95
  onmessage: (msg: any) => {
96
96
  log('onmessage', {
97
97
  key: PublicKey.from(stream1.publicKey),
98
- msg: msg.toString()
98
+ msg: msg.toString(),
99
99
  });
100
100
  incMessage();
101
- }
101
+ },
102
102
  });
103
103
 
104
104
  const extension2 = stream2.registerExtension('stream-extension', {
105
105
  onmessage: (msg: any) => {
106
106
  log('onmessage', {
107
107
  key: PublicKey.from(stream2.publicKey),
108
- msg: msg.toString()
108
+ msg: msg.toString(),
109
109
  });
110
110
  incMessage();
111
- }
111
+ },
112
112
  });
113
113
 
114
114
  extension1.send(Buffer.from('message-1'));
@@ -129,7 +129,7 @@ describe('ProtocolStream', () => {
129
129
 
130
130
  core2.on('sync', () => {
131
131
  log('sync', {
132
- core: { key: PublicKey.from(core2.key), length: core2.length }
132
+ core: { key: PublicKey.from(core2.key), length: core2.length },
133
133
  });
134
134
  expect(core2.length).to.eq(numBlocks);
135
135
  setSynced();
@@ -20,7 +20,7 @@ type TestItem = {
20
20
 
21
21
  const codec: Codec<TestItem> = {
22
22
  encode: (obj: TestItem) => Buffer.from(JSON.stringify(obj)),
23
- decode: (buffer: Uint8Array) => JSON.parse(buffer.toString())
23
+ decode: (buffer: Uint8Array) => JSON.parse(buffer.toString()),
24
24
  };
25
25
 
26
26
  const valueEncoding: AbstractValueEncoding<TestItem> = createCodecEncoding(codec);
@@ -73,7 +73,7 @@ describe('Hypercore', () => {
73
73
  expect(core.length).to.eq(0);
74
74
  const seq = await append({
75
75
  key: 'test-1',
76
- value: 'test'
76
+ value: 'test',
77
77
  });
78
78
 
79
79
  expect(core.length).to.eq(1);
@@ -39,7 +39,7 @@ describe('Multiplexing', () => {
39
39
  plex1.addFeed(core1, true);
40
40
  plex2.addFeed(core2);
41
41
  return [core1, core2];
42
- })
42
+ }),
43
43
  );
44
44
 
45
45
  feeds.forEach(([core1, core2]) => {
@@ -105,7 +105,7 @@ describe('Multiplexing', () => {
105
105
  transform: (data: Buffer, next: (err: Error | null, data: Buffer) => void) => {
106
106
  log(label, { length: data.length });
107
107
  next(null, data);
108
- }
108
+ },
109
109
  });
110
110
 
111
111
  const [pipelineClosed, onStreamClose] = latch({ count: 2 });
@@ -54,10 +54,10 @@ export class Multiplexer {
54
54
  log('send', { id: this._id, feedKey: PublicKey.from(feedKey), payload: data.length });
55
55
  next(null, {
56
56
  feedKey: core.key,
57
- payload: data
57
+ payload: data,
58
58
  });
59
- }
60
- })
59
+ },
60
+ }),
61
61
  )
62
62
  .pipe(this.output, () => {
63
63
  log('pipeline closed', { id: this._id });
@@ -82,8 +82,8 @@ export class Multiplexer {
82
82
  log('recv', { id: this._id, feedKey: PublicKey.from(feedKey), payload: (payload as Buffer).length });
83
83
  feedStream.write(payload);
84
84
  next();
85
- }
86
- })
85
+ },
86
+ }),
87
87
  );
88
88
 
89
89
  log('opened');
@@ -134,7 +134,7 @@ describe('Replication', () => {
134
134
  batch((next, i, remaining) => {
135
135
  const size = faker.datatype.number({
136
136
  min: 1,
137
- max: Math.min(10, remaining)
137
+ max: Math.min(10, remaining),
138
138
  });
139
139
  for (let j = 0; j < size; j++) {
140
140
  core1.append(JSON.stringify(createDataItem(i + j)), noop);
@@ -213,7 +213,7 @@ describe('Replication', () => {
213
213
  setTimeout(async () => {
214
214
  for (const _ of Array.from(Array(numBlocks))) {
215
215
  const block = {
216
- text: faker.lorem.sentence()
216
+ text: faker.lorem.sentence(),
217
217
  };
218
218
 
219
219
  core1.append(JSON.stringify(block), noop);
@@ -29,8 +29,8 @@ describe('Streams', () => {
29
29
  log('received', { data: String(data) });
30
30
  incProcessed();
31
31
  next();
32
- }
33
- })
32
+ },
33
+ }),
34
34
  );
35
35
 
36
36
  {
package/src/testing.ts CHANGED
@@ -11,7 +11,7 @@ export type TestDataItem = { id: number; text: string };
11
11
 
12
12
  export const createDataItem = (n: number): TestDataItem => ({
13
13
  id: n,
14
- text: faker.lorem.sentence()
14
+ text: faker.lorem.sentence(),
15
15
  });
16
16
 
17
17
  type BatchCallback = (next: (num: number) => void, index: number, remaining: number) => void;
@@ -29,7 +29,7 @@ export const batch = (cb: BatchCallback, total: number) => {
29
29
  }
30
30
  },
31
31
  i,
32
- remaining
32
+ remaining,
33
33
  );
34
34
  };
35
35