@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.
Files changed (45) hide show
  1. package/README.md +44 -1
  2. package/exports/browser/client-86Tnax66.js +2224 -0
  3. package/exports/browser/client-BFxJts6j.js +2224 -0
  4. package/exports/browser/client-BzvWzzLv.js +2224 -0
  5. package/exports/browser/client-C9GBz2Tf.js +2224 -0
  6. package/exports/browser/client-CQzuu6At.js +2224 -0
  7. package/exports/browser/client-CVkFejdx.js +2224 -0
  8. package/exports/browser/client-Cj_UUO8W.js +2224 -0
  9. package/exports/browser/client-CrGaeBjj.js +2224 -0
  10. package/exports/browser/client-ERocgKET.js +2224 -0
  11. package/exports/browser/client-a8rws3cu.js +2224 -0
  12. package/exports/browser/messages-BFCmg6Vb.js +212 -0
  13. package/exports/browser/messages-BHIC2mQu.js +212 -0
  14. package/exports/browser/messages-CimzJ4wr.js +210 -0
  15. package/exports/browser/messages-Cjoa_LGO.js +210 -0
  16. package/exports/browser/messages-D7JxkkDW.js +212 -0
  17. package/exports/browser/messages-DVHcNvs_.js +212 -0
  18. package/exports/browser/messages-DqL_g2qw.js +210 -0
  19. package/exports/browser/messages-XgZZUMma.js +212 -0
  20. package/exports/browser/messages-kfFyctPL.js +210 -0
  21. package/exports/browser/messages-psROnfRi.js +212 -0
  22. package/exports/browser/peernet-B9VL4Xwe.js +9522 -0
  23. package/exports/browser/peernet-C-HNdrcd.js +9528 -0
  24. package/exports/browser/peernet-C4rOvyyU.js +9661 -0
  25. package/exports/browser/peernet-CbI0-jFn.js +9651 -0
  26. package/exports/browser/peernet-CtHScDyh.js +9524 -0
  27. package/exports/browser/peernet-DfuxUK3u.js +9525 -0
  28. package/exports/browser/peernet-DiEcNDLD.js +9655 -0
  29. package/exports/browser/peernet-DtuRXOzP.js +9653 -0
  30. package/exports/browser/peernet-rcD5XL1y.js +9590 -0
  31. package/exports/browser/peernet-rw8HJGOz.js +9597 -0
  32. package/exports/browser/peernet.js +1 -1
  33. package/exports/messages-0uXHmQH7.js +209 -0
  34. package/exports/messages-DaUtFfBh.js +207 -0
  35. package/exports/peernet.js +358 -33
  36. package/exports/types/file-transfer.d.ts +34 -0
  37. package/exports/types/peernet.d.ts +20 -4
  38. package/exports/types/proto/file.proto.d.ts +5 -0
  39. package/package.json +2 -2
  40. package/rollup.config.js +2 -6
  41. package/src/file-transfer.ts +194 -0
  42. package/src/peernet.ts +170 -28
  43. package/src/proto/file.proto.js +6 -1
  44. package/test/file-transfer.test.js +81 -0
  45. 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
-