@leofcoin/peernet 1.2.29 → 1.2.30
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/README.md +44 -1
- package/exports/browser/client-86Tnax66.js +2224 -0
- package/exports/browser/client-BFxJts6j.js +2224 -0
- package/exports/browser/client-BzvWzzLv.js +2224 -0
- package/exports/browser/client-C9GBz2Tf.js +2224 -0
- package/exports/browser/client-CQzuu6At.js +2224 -0
- package/exports/browser/client-CVkFejdx.js +2224 -0
- package/exports/browser/client-Cj_UUO8W.js +2224 -0
- package/exports/browser/client-CrGaeBjj.js +2224 -0
- package/exports/browser/client-ERocgKET.js +2224 -0
- package/exports/browser/client-a8rws3cu.js +2224 -0
- package/exports/browser/messages-BFCmg6Vb.js +212 -0
- package/exports/browser/messages-BHIC2mQu.js +212 -0
- package/exports/browser/messages-CimzJ4wr.js +210 -0
- package/exports/browser/messages-Cjoa_LGO.js +210 -0
- package/exports/browser/messages-D7JxkkDW.js +212 -0
- package/exports/browser/messages-DVHcNvs_.js +212 -0
- package/exports/browser/messages-DqL_g2qw.js +210 -0
- package/exports/browser/messages-XgZZUMma.js +212 -0
- package/exports/browser/messages-kfFyctPL.js +210 -0
- package/exports/browser/messages-psROnfRi.js +212 -0
- package/exports/browser/peernet-B9VL4Xwe.js +9522 -0
- package/exports/browser/peernet-C-HNdrcd.js +9528 -0
- package/exports/browser/peernet-C4rOvyyU.js +9661 -0
- package/exports/browser/peernet-CbI0-jFn.js +9651 -0
- package/exports/browser/peernet-CtHScDyh.js +9524 -0
- package/exports/browser/peernet-DfuxUK3u.js +9525 -0
- package/exports/browser/peernet-DiEcNDLD.js +9655 -0
- package/exports/browser/peernet-DtuRXOzP.js +9653 -0
- package/exports/browser/peernet-rcD5XL1y.js +9590 -0
- package/exports/browser/peernet-rw8HJGOz.js +9597 -0
- package/exports/browser/peernet.js +1 -1
- package/exports/messages-0uXHmQH7.js +209 -0
- package/exports/messages-DaUtFfBh.js +207 -0
- package/exports/peernet.js +358 -33
- package/exports/types/file-transfer.d.ts +34 -0
- package/exports/types/peernet.d.ts +20 -4
- package/exports/types/proto/file.proto.d.ts +5 -0
- package/package.json +2 -2
- package/rollup.config.js +2 -6
- package/src/file-transfer.ts +194 -0
- package/src/peernet.ts +170 -28
- package/src/proto/file.proto.js +6 -1
- package/test/file-transfer.test.js +81 -0
- package/test/peernet.test.js +31 -2
package/README.md
CHANGED
|
@@ -103,6 +103,50 @@ const hash = await peernet.broadcast('/hello.txt', {
|
|
|
103
103
|
});
|
|
104
104
|
```
|
|
105
105
|
|
|
106
|
+
Files larger than 256 KiB are automatically split into independently hashed pieces. The returned hash identifies a manifest, so receivers can verify every piece and request only pieces they still need. Override the piece size with `chunkSize`:
|
|
107
|
+
|
|
108
|
+
```js
|
|
109
|
+
const hash = await peernet.broadcast('/video.mp4', {
|
|
110
|
+
content: videoBytes,
|
|
111
|
+
chunkSize: 1024 * 1024
|
|
112
|
+
})
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
For a pausable/resumable download, use the transfer controller:
|
|
116
|
+
|
|
117
|
+
```js
|
|
118
|
+
const transfer = peernet.download(hash, { pin: true })
|
|
119
|
+
const unsubscribe = transfer.onProgress(({ transferredBytes, totalBytes, state }) => {
|
|
120
|
+
console.log(state, transferredBytes, totalBytes)
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
transfer.pause()
|
|
124
|
+
transfer.resume() // already completed pieces are not fetched again
|
|
125
|
+
|
|
126
|
+
const bytes = await transfer.result
|
|
127
|
+
unsubscribe()
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
`peernet.cat(hash)` also reassembles chunked files transparently. `pin: true` caches verified pieces in the local data store, allowing a later transfer instance to reuse them.
|
|
131
|
+
|
|
132
|
+
Downloads pipeline four chunks by default. Known manifest providers are reused for all chunk hashes and chunk requests rotate across those peers, allowing different pieces to arrive concurrently from different providers. Configure the queue with `transferConcurrency`. Chunk size adapts to payload size (256 KiB normally, 1 MiB from 32 MiB, and 4 MiB from 256 MiB); an explicit `chunkSize` always overrides it.
|
|
133
|
+
|
|
134
|
+
### Large blocks
|
|
135
|
+
|
|
136
|
+
Blocks larger than 1 MiB are also chunked internally, without changing the public block API or the canonical block hash supplied by the chain:
|
|
137
|
+
|
|
138
|
+
```js
|
|
139
|
+
await peernet.block.put(blockHash, encodedBlock)
|
|
140
|
+
const encodedBlockAgain = await peernet.block.get(blockHash)
|
|
141
|
+
|
|
142
|
+
const transfer = peernet.block.download(blockHash)
|
|
143
|
+
transfer.pause()
|
|
144
|
+
transfer.resume()
|
|
145
|
+
const bytes = await transfer.result
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
The block manifest remains stored under the canonical block hash; individual chunks have their own transport hashes. Peernet verifies every chunk before reconstruction. The chain layer must still verify the reconstructed canonical block hash and perform normal consensus validation before loading it. Defaults can be configured with `blockChunkThreshold` and `blockChunkSize` in the Peernet constructor.
|
|
149
|
+
|
|
106
150
|
**Broadcast a folder:**
|
|
107
151
|
```js
|
|
108
152
|
const folderHash = await peernet.broadcast('/my-folder', {
|
|
@@ -263,4 +307,3 @@ npm i -g @vandeurenglenn/project
|
|
|
263
307
|
## License
|
|
264
308
|
|
|
265
309
|
MIT
|
|
266
|
-
|