@leofcoin/peernet 1.2.5 → 1.2.7
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.
- package/exports/browser/{client-CniXCEmO.js → client-AodRTAgI.js} +1 -1
- package/exports/browser/{messages-hNQTVVEb.js → messages-Dy2W05lC.js} +1 -1
- package/exports/browser/{peernet-BNgO-BZL.js → peernet-Cmg8trCq.js} +70 -53
- package/exports/browser/peernet.js +1 -1
- package/exports/peernet.js +69 -52
- package/exports/types/peernet.d.ts +37 -2
- package/package.json +225 -7
- package/rollup.config.js +7 -1
- package/src/messages.js +0 -1
- package/src/peernet.ts +77 -59
- package/test/peernet.test.js +44 -0
- package/exports/browser/dht/dht.d.ts +0 -38
- package/exports/browser/discovery/peer-discovery.d.ts +0 -7
- package/exports/browser/errors/errors.d.ts +0 -3
- package/exports/browser/handlers/data.d.ts +0 -2
- package/exports/browser/handlers/message.d.ts +0 -30
- package/exports/browser/identity.d.ts +0 -19
- package/exports/browser/messages/data.d.ts +0 -10
- package/exports/browser/messages/file-link.d.ts +0 -10
- package/exports/browser/messages/file.d.ts +0 -10
- package/exports/browser/messages.d.ts +0 -12
- package/exports/browser/peer-info.d.ts +0 -4
- package/exports/browser/peernet.d.ts +0 -266
- package/exports/browser/prompts/password/browser.d.ts +0 -2
- package/exports/browser/prompts/password/node.d.ts +0 -2
- package/exports/browser/proto/chat-message.proto.d.ts +0 -7
- package/exports/browser/proto/data-response.proto.d.ts +0 -5
- package/exports/browser/proto/data.proto.d.ts +0 -5
- package/exports/browser/proto/dht-response.proto.d.ts +0 -5
- package/exports/browser/proto/dht.proto.d.ts +0 -5
- package/exports/browser/proto/file-link.proto.d.ts +0 -6
- package/exports/browser/proto/file.proto.d.ts +0 -6
- package/exports/browser/proto/peer-response.proto.d.ts +0 -4
- package/exports/browser/proto/peer.proto.d.ts +0 -4
- package/exports/browser/proto/peernet.proto.d.ts +0 -8
- package/exports/browser/proto/ps.proto.d.ts +0 -5
- package/exports/browser/proto/request.proto.d.ts +0 -5
- package/exports/browser/proto/response.proto.d.ts +0 -4
- package/exports/browser/types.d.ts +0 -15
- package/exports/browser/utils/utils.d.ts +0 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { L as LittlePubSub, d as deflate_1, i as inflate_1, c as createDebugger } from './peernet-
|
|
1
|
+
import { L as LittlePubSub, d as deflate_1, i as inflate_1, c as createDebugger } from './peernet-Cmg8trCq.js';
|
|
2
2
|
import './identity-nIyW_Xm8.js';
|
|
3
3
|
import './value-C3vAp-wb.js';
|
|
4
4
|
|
|
@@ -8318,7 +8318,7 @@ class Peernet {
|
|
|
8318
8318
|
return this.identity.accounts;
|
|
8319
8319
|
}
|
|
8320
8320
|
get defaultStores() {
|
|
8321
|
-
return ['account', 'wallet', 'block', 'transaction', 'chain', 'data', 'message'];
|
|
8321
|
+
return ['account', 'wallet', 'block', 'transaction', 'chain', 'data', 'message', 'share'];
|
|
8322
8322
|
}
|
|
8323
8323
|
selectAccount(account) {
|
|
8324
8324
|
return this.identity.selectAccount(account);
|
|
@@ -8331,7 +8331,12 @@ class Peernet {
|
|
|
8331
8331
|
return utils.addCodec(codec);
|
|
8332
8332
|
}
|
|
8333
8333
|
async addStore(name, prefix, root, isPrivate = true) {
|
|
8334
|
-
if (name === 'block' ||
|
|
8334
|
+
if (name === 'block' ||
|
|
8335
|
+
name === 'transaction' ||
|
|
8336
|
+
name === 'chain' ||
|
|
8337
|
+
name === 'data' ||
|
|
8338
|
+
name === 'message' ||
|
|
8339
|
+
name === 'share')
|
|
8335
8340
|
isPrivate = false;
|
|
8336
8341
|
let Storage;
|
|
8337
8342
|
this.hasDaemon ? (Storage = LeofcoinStorageClient) : (Storage = LeofcoinStorage);
|
|
@@ -8378,9 +8383,7 @@ class Peernet {
|
|
|
8378
8383
|
await getAddress();
|
|
8379
8384
|
this.storePrefix = options.storePrefix;
|
|
8380
8385
|
this.root = options.root;
|
|
8381
|
-
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile
|
|
8382
|
-
// FolderMessageResponse
|
|
8383
|
-
} = await import(/* webpackChunkName: "messages" */ './messages-hNQTVVEb.js');
|
|
8386
|
+
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile } = await import(/* webpackChunkName: "messages" */ './messages-Dy2W05lC.js');
|
|
8384
8387
|
/**
|
|
8385
8388
|
* proto Object containing protos
|
|
8386
8389
|
* @type {Object}
|
|
@@ -8414,58 +8417,11 @@ class Peernet {
|
|
|
8414
8417
|
await this.identity.load(password);
|
|
8415
8418
|
this._peerHandler = new PeerDiscovery(this.id);
|
|
8416
8419
|
this.peerId = this.id;
|
|
8417
|
-
// this.addRequestHandler('handshake', () => {
|
|
8418
|
-
// return new peernet.protos['peernet-response']({
|
|
8419
|
-
// response: { peerId: this.id }
|
|
8420
|
-
// })
|
|
8421
|
-
// })
|
|
8422
|
-
// pubsub.subscribe('peer:discovered', async (peer) => {
|
|
8423
|
-
// // console.log(peer);
|
|
8424
|
-
// if (this.requestProtos['version'] && !peer.version) {
|
|
8425
|
-
// let data = await new globalThis.peernet.protos['peernet-request']({
|
|
8426
|
-
// request: 'version'
|
|
8427
|
-
// })
|
|
8428
|
-
// let node = await globalThis.peernet.prepareMessage(data)
|
|
8429
|
-
// let response = await peer.request(node.encoded)
|
|
8430
|
-
// response = await new globalThis.peernet.protos['peernet-response'](new Uint8Array(Object.values(response)))
|
|
8431
|
-
// peer.version = response.decoded.response.version
|
|
8432
|
-
// }
|
|
8433
|
-
// if (!peer.peerId) {
|
|
8434
|
-
// let data = await new globalThis.peernet.protos['peernet-request']({
|
|
8435
|
-
// request: 'handshake'
|
|
8436
|
-
// })
|
|
8437
|
-
// let node = await globalThis.peernet.prepareMessage(data)
|
|
8438
|
-
// let response = await peer.request(node.encoded)
|
|
8439
|
-
// response = await new globalThis.peernet.protos['peernet-response'](new Uint8Array(Object.values(response)))
|
|
8440
|
-
// // todo: response.decoded should be the response and not response.peerId
|
|
8441
|
-
// // todo: ignore above and remove discover completly
|
|
8442
|
-
// response.decoded.response.peerId
|
|
8443
|
-
// }
|
|
8444
|
-
// this.connections[peer.peerId] = peer
|
|
8445
|
-
// pubsub.publish('peer:connected', peer)
|
|
8446
|
-
// todo: cleanup discovered
|
|
8447
|
-
// })
|
|
8448
|
-
// pubsub.subscribe('peer:left', this.#peerLeft.bind(this))
|
|
8449
8420
|
/**
|
|
8450
8421
|
* converts data -> message -> proto
|
|
8451
8422
|
* @see DataHandler
|
|
8452
8423
|
*/
|
|
8453
8424
|
pubsub.subscribe('peer:data', dataHandler);
|
|
8454
|
-
// // todo: remove below, already handles in the swarm
|
|
8455
|
-
// if (globalThis.navigator) {
|
|
8456
|
-
// globalThis.addEventListener('beforeunload', async () => this.client.close())
|
|
8457
|
-
// } else {
|
|
8458
|
-
// process.on('SIGTERM', async () => {
|
|
8459
|
-
// process.stdin.resume()
|
|
8460
|
-
// try {
|
|
8461
|
-
// await this.client.close()
|
|
8462
|
-
// } catch (error) {
|
|
8463
|
-
// // @ts-ignore
|
|
8464
|
-
// await this.client.close()
|
|
8465
|
-
// }
|
|
8466
|
-
// process.exit()
|
|
8467
|
-
// })
|
|
8468
|
-
// }
|
|
8469
8425
|
if (this.autoStart)
|
|
8470
8426
|
await this.start();
|
|
8471
8427
|
return this;
|
|
@@ -8474,7 +8430,7 @@ class Peernet {
|
|
|
8474
8430
|
if (this.#starting || this.#started)
|
|
8475
8431
|
return;
|
|
8476
8432
|
this.#starting = true;
|
|
8477
|
-
const importee = await import('./client-
|
|
8433
|
+
const importee = await import('./client-AodRTAgI.js');
|
|
8478
8434
|
/**
|
|
8479
8435
|
* @access public
|
|
8480
8436
|
* @type {PeernetClient}
|
|
@@ -8574,6 +8530,8 @@ class Peernet {
|
|
|
8574
8530
|
if (!this._inMemoryBroadcasts)
|
|
8575
8531
|
this._inMemoryBroadcasts = new Map();
|
|
8576
8532
|
this._inMemoryBroadcasts.set(hash, encoded);
|
|
8533
|
+
// Persist to share store
|
|
8534
|
+
await shareStore.put(hash, encoded);
|
|
8577
8535
|
await this.publish('broadcast', { hash, from: this.id });
|
|
8578
8536
|
return hash;
|
|
8579
8537
|
}
|
|
@@ -8897,6 +8855,65 @@ class Peernet {
|
|
|
8897
8855
|
has: async (hash) => await dataStore.has(hash)
|
|
8898
8856
|
};
|
|
8899
8857
|
}
|
|
8858
|
+
get share() {
|
|
8859
|
+
return {
|
|
8860
|
+
/**
|
|
8861
|
+
* Get content for given share hash
|
|
8862
|
+
*
|
|
8863
|
+
* @todo Add peer permission checking to validate if requesting peer has access
|
|
8864
|
+
*
|
|
8865
|
+
* @param {String} hash
|
|
8866
|
+
*/
|
|
8867
|
+
get: async (hash) => {
|
|
8868
|
+
debug(`get share ${hash}`);
|
|
8869
|
+
const data = await shareStore.has(hash);
|
|
8870
|
+
if (data)
|
|
8871
|
+
return await shareStore.get(hash);
|
|
8872
|
+
return undefined;
|
|
8873
|
+
},
|
|
8874
|
+
/**
|
|
8875
|
+
* put share content
|
|
8876
|
+
*
|
|
8877
|
+
* @param {String} hash
|
|
8878
|
+
* @param {Buffer} data
|
|
8879
|
+
*/
|
|
8880
|
+
put: async (hash, data) => await shareStore.put(hash, data),
|
|
8881
|
+
/**
|
|
8882
|
+
* @param {String} hash
|
|
8883
|
+
* @return {Boolean}
|
|
8884
|
+
*/
|
|
8885
|
+
has: async (hash) => await shareStore.has(hash),
|
|
8886
|
+
/**
|
|
8887
|
+
* Put folder content
|
|
8888
|
+
*
|
|
8889
|
+
* @param {Array} files
|
|
8890
|
+
*/
|
|
8891
|
+
putFolder: async (files) => {
|
|
8892
|
+
const links = [];
|
|
8893
|
+
for (const file of files) {
|
|
8894
|
+
const fileNode = await new globalThis.peernet.protos['peernet-file'](file);
|
|
8895
|
+
const hash = await fileNode.hash;
|
|
8896
|
+
await dataStore.put(hash, fileNode.encoded);
|
|
8897
|
+
links.push({ hash, path: file.path });
|
|
8898
|
+
}
|
|
8899
|
+
const node = await new globalThis.peernet.protos['peernet-file']({
|
|
8900
|
+
path: '/',
|
|
8901
|
+
links
|
|
8902
|
+
});
|
|
8903
|
+
const hash = await node.hash;
|
|
8904
|
+
await dataStore.put(hash, node.encoded);
|
|
8905
|
+
return hash;
|
|
8906
|
+
}
|
|
8907
|
+
};
|
|
8908
|
+
}
|
|
8909
|
+
/**
|
|
8910
|
+
* Get all shared hashes
|
|
8911
|
+
*
|
|
8912
|
+
* @returns {Promise<string[]>} Array of all shared hashes
|
|
8913
|
+
*/
|
|
8914
|
+
async allSharedHashes() {
|
|
8915
|
+
return await shareStore.keys();
|
|
8916
|
+
}
|
|
8900
8917
|
async addFolder(files) {
|
|
8901
8918
|
const links = [];
|
|
8902
8919
|
for (const file of files) {
|
package/exports/peernet.js
CHANGED
|
@@ -386,7 +386,7 @@ class Peernet {
|
|
|
386
386
|
return this.identity.accounts;
|
|
387
387
|
}
|
|
388
388
|
get defaultStores() {
|
|
389
|
-
return ['account', 'wallet', 'block', 'transaction', 'chain', 'data', 'message'];
|
|
389
|
+
return ['account', 'wallet', 'block', 'transaction', 'chain', 'data', 'message', 'share'];
|
|
390
390
|
}
|
|
391
391
|
selectAccount(account) {
|
|
392
392
|
return this.identity.selectAccount(account);
|
|
@@ -399,7 +399,12 @@ class Peernet {
|
|
|
399
399
|
return utils.addCodec(codec);
|
|
400
400
|
}
|
|
401
401
|
async addStore(name, prefix, root, isPrivate = true) {
|
|
402
|
-
if (name === 'block' ||
|
|
402
|
+
if (name === 'block' ||
|
|
403
|
+
name === 'transaction' ||
|
|
404
|
+
name === 'chain' ||
|
|
405
|
+
name === 'data' ||
|
|
406
|
+
name === 'message' ||
|
|
407
|
+
name === 'share')
|
|
403
408
|
isPrivate = false;
|
|
404
409
|
let Storage;
|
|
405
410
|
this.hasDaemon ? (Storage = LeofcoinStorageClient) : (Storage = LeofcoinStorage);
|
|
@@ -446,9 +451,7 @@ class Peernet {
|
|
|
446
451
|
await getAddress();
|
|
447
452
|
this.storePrefix = options.storePrefix;
|
|
448
453
|
this.root = options.root;
|
|
449
|
-
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile
|
|
450
|
-
// FolderMessageResponse
|
|
451
|
-
} = await import(/* webpackChunkName: "messages" */ './messages-C9lYBAhD.js');
|
|
454
|
+
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile } = await import(/* webpackChunkName: "messages" */ './messages-C9lYBAhD.js');
|
|
452
455
|
/**
|
|
453
456
|
* proto Object containing protos
|
|
454
457
|
* @type {Object}
|
|
@@ -482,58 +485,11 @@ class Peernet {
|
|
|
482
485
|
await this.identity.load(password);
|
|
483
486
|
this._peerHandler = new PeerDiscovery(this.id);
|
|
484
487
|
this.peerId = this.id;
|
|
485
|
-
// this.addRequestHandler('handshake', () => {
|
|
486
|
-
// return new peernet.protos['peernet-response']({
|
|
487
|
-
// response: { peerId: this.id }
|
|
488
|
-
// })
|
|
489
|
-
// })
|
|
490
|
-
// pubsub.subscribe('peer:discovered', async (peer) => {
|
|
491
|
-
// // console.log(peer);
|
|
492
|
-
// if (this.requestProtos['version'] && !peer.version) {
|
|
493
|
-
// let data = await new globalThis.peernet.protos['peernet-request']({
|
|
494
|
-
// request: 'version'
|
|
495
|
-
// })
|
|
496
|
-
// let node = await globalThis.peernet.prepareMessage(data)
|
|
497
|
-
// let response = await peer.request(node.encoded)
|
|
498
|
-
// response = await new globalThis.peernet.protos['peernet-response'](new Uint8Array(Object.values(response)))
|
|
499
|
-
// peer.version = response.decoded.response.version
|
|
500
|
-
// }
|
|
501
|
-
// if (!peer.peerId) {
|
|
502
|
-
// let data = await new globalThis.peernet.protos['peernet-request']({
|
|
503
|
-
// request: 'handshake'
|
|
504
|
-
// })
|
|
505
|
-
// let node = await globalThis.peernet.prepareMessage(data)
|
|
506
|
-
// let response = await peer.request(node.encoded)
|
|
507
|
-
// response = await new globalThis.peernet.protos['peernet-response'](new Uint8Array(Object.values(response)))
|
|
508
|
-
// // todo: response.decoded should be the response and not response.peerId
|
|
509
|
-
// // todo: ignore above and remove discover completly
|
|
510
|
-
// response.decoded.response.peerId
|
|
511
|
-
// }
|
|
512
|
-
// this.connections[peer.peerId] = peer
|
|
513
|
-
// pubsub.publish('peer:connected', peer)
|
|
514
|
-
// todo: cleanup discovered
|
|
515
|
-
// })
|
|
516
|
-
// pubsub.subscribe('peer:left', this.#peerLeft.bind(this))
|
|
517
488
|
/**
|
|
518
489
|
* converts data -> message -> proto
|
|
519
490
|
* @see DataHandler
|
|
520
491
|
*/
|
|
521
492
|
pubsub.subscribe('peer:data', dataHandler);
|
|
522
|
-
// // todo: remove below, already handles in the swarm
|
|
523
|
-
// if (globalThis.navigator) {
|
|
524
|
-
// globalThis.addEventListener('beforeunload', async () => this.client.close())
|
|
525
|
-
// } else {
|
|
526
|
-
// process.on('SIGTERM', async () => {
|
|
527
|
-
// process.stdin.resume()
|
|
528
|
-
// try {
|
|
529
|
-
// await this.client.close()
|
|
530
|
-
// } catch (error) {
|
|
531
|
-
// // @ts-ignore
|
|
532
|
-
// await this.client.close()
|
|
533
|
-
// }
|
|
534
|
-
// process.exit()
|
|
535
|
-
// })
|
|
536
|
-
// }
|
|
537
493
|
if (this.autoStart)
|
|
538
494
|
await this.start();
|
|
539
495
|
return this;
|
|
@@ -642,6 +598,8 @@ class Peernet {
|
|
|
642
598
|
if (!this._inMemoryBroadcasts)
|
|
643
599
|
this._inMemoryBroadcasts = new Map();
|
|
644
600
|
this._inMemoryBroadcasts.set(hash, encoded);
|
|
601
|
+
// Persist to share store
|
|
602
|
+
await shareStore.put(hash, encoded);
|
|
645
603
|
await this.publish('broadcast', { hash, from: this.id });
|
|
646
604
|
return hash;
|
|
647
605
|
}
|
|
@@ -965,6 +923,65 @@ class Peernet {
|
|
|
965
923
|
has: async (hash) => await dataStore.has(hash)
|
|
966
924
|
};
|
|
967
925
|
}
|
|
926
|
+
get share() {
|
|
927
|
+
return {
|
|
928
|
+
/**
|
|
929
|
+
* Get content for given share hash
|
|
930
|
+
*
|
|
931
|
+
* @todo Add peer permission checking to validate if requesting peer has access
|
|
932
|
+
*
|
|
933
|
+
* @param {String} hash
|
|
934
|
+
*/
|
|
935
|
+
get: async (hash) => {
|
|
936
|
+
debug(`get share ${hash}`);
|
|
937
|
+
const data = await shareStore.has(hash);
|
|
938
|
+
if (data)
|
|
939
|
+
return await shareStore.get(hash);
|
|
940
|
+
return undefined;
|
|
941
|
+
},
|
|
942
|
+
/**
|
|
943
|
+
* put share content
|
|
944
|
+
*
|
|
945
|
+
* @param {String} hash
|
|
946
|
+
* @param {Buffer} data
|
|
947
|
+
*/
|
|
948
|
+
put: async (hash, data) => await shareStore.put(hash, data),
|
|
949
|
+
/**
|
|
950
|
+
* @param {String} hash
|
|
951
|
+
* @return {Boolean}
|
|
952
|
+
*/
|
|
953
|
+
has: async (hash) => await shareStore.has(hash),
|
|
954
|
+
/**
|
|
955
|
+
* Put folder content
|
|
956
|
+
*
|
|
957
|
+
* @param {Array} files
|
|
958
|
+
*/
|
|
959
|
+
putFolder: async (files) => {
|
|
960
|
+
const links = [];
|
|
961
|
+
for (const file of files) {
|
|
962
|
+
const fileNode = await new globalThis.peernet.protos['peernet-file'](file);
|
|
963
|
+
const hash = await fileNode.hash;
|
|
964
|
+
await dataStore.put(hash, fileNode.encoded);
|
|
965
|
+
links.push({ hash, path: file.path });
|
|
966
|
+
}
|
|
967
|
+
const node = await new globalThis.peernet.protos['peernet-file']({
|
|
968
|
+
path: '/',
|
|
969
|
+
links
|
|
970
|
+
});
|
|
971
|
+
const hash = await node.hash;
|
|
972
|
+
await dataStore.put(hash, node.encoded);
|
|
973
|
+
return hash;
|
|
974
|
+
}
|
|
975
|
+
};
|
|
976
|
+
}
|
|
977
|
+
/**
|
|
978
|
+
* Get all shared hashes
|
|
979
|
+
*
|
|
980
|
+
* @returns {Promise<string[]>} Array of all shared hashes
|
|
981
|
+
*/
|
|
982
|
+
async allSharedHashes() {
|
|
983
|
+
return await shareStore.keys();
|
|
984
|
+
}
|
|
968
985
|
async addFolder(files) {
|
|
969
986
|
const links = [];
|
|
970
987
|
for (const file of files) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import PubSub from '@vandeurenglenn/little-pubsub';
|
|
1
|
+
import PubSub, { Handler } from '@vandeurenglenn/little-pubsub';
|
|
2
2
|
import PeerDiscovery from './discovery/peer-discovery.js';
|
|
3
3
|
import DHT from './dht/dht.js';
|
|
4
4
|
import MessageHandler from './handlers/message.js';
|
|
@@ -16,6 +16,7 @@ declare global {
|
|
|
16
16
|
var dataStore: LeofcoinStorageClass;
|
|
17
17
|
var walletStore: LeofcoinStorageClass;
|
|
18
18
|
var chainStore: LeofcoinStorageClass;
|
|
19
|
+
var shareStore: LeofcoinStorageClass;
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* @access public
|
|
@@ -220,6 +221,40 @@ export default class Peernet {
|
|
|
220
221
|
*/
|
|
221
222
|
has: (hash: any) => Promise<boolean | any[]>;
|
|
222
223
|
};
|
|
224
|
+
get share(): {
|
|
225
|
+
/**
|
|
226
|
+
* Get content for given share hash
|
|
227
|
+
*
|
|
228
|
+
* @todo Add peer permission checking to validate if requesting peer has access
|
|
229
|
+
*
|
|
230
|
+
* @param {String} hash
|
|
231
|
+
*/
|
|
232
|
+
get: (hash: any) => Promise<any>;
|
|
233
|
+
/**
|
|
234
|
+
* put share content
|
|
235
|
+
*
|
|
236
|
+
* @param {String} hash
|
|
237
|
+
* @param {Buffer} data
|
|
238
|
+
*/
|
|
239
|
+
put: (hash: any, data: any) => Promise<unknown>;
|
|
240
|
+
/**
|
|
241
|
+
* @param {String} hash
|
|
242
|
+
* @return {Boolean}
|
|
243
|
+
*/
|
|
244
|
+
has: (hash: any) => Promise<boolean | any[]>;
|
|
245
|
+
/**
|
|
246
|
+
* Put folder content
|
|
247
|
+
*
|
|
248
|
+
* @param {Array} files
|
|
249
|
+
*/
|
|
250
|
+
putFolder: (files: any) => Promise<any>;
|
|
251
|
+
};
|
|
252
|
+
/**
|
|
253
|
+
* Get all shared hashes
|
|
254
|
+
*
|
|
255
|
+
* @returns {Promise<string[]>} Array of all shared hashes
|
|
256
|
+
*/
|
|
257
|
+
allSharedHashes(): Promise<string[]>;
|
|
223
258
|
addFolder(files: any): Promise<any>;
|
|
224
259
|
ls(hash: any, options: any): Promise<any[]>;
|
|
225
260
|
cat(hash: any, options: any): Promise<any>;
|
|
@@ -260,7 +295,7 @@ export default class Peernet {
|
|
|
260
295
|
* @param {String} topic
|
|
261
296
|
* @param {Method} cb
|
|
262
297
|
*/
|
|
263
|
-
subscribe(topic: string, callback:
|
|
298
|
+
subscribe(topic: string, callback: Handler): Promise<void>;
|
|
264
299
|
removePeer(peer: any): Promise<void>;
|
|
265
300
|
get Buffer(): BufferConstructor;
|
|
266
301
|
}
|