@leofcoin/peernet 1.2.28 → 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 (57) hide show
  1. package/README.md +44 -1
  2. package/exports/browser/{browser-CWeoyGUw.js → browser-D-r0O9Qn.js} +1 -1
  3. package/exports/browser/browser-_hiyXwPp.js +147 -0
  4. package/exports/browser/client-86Tnax66.js +2224 -0
  5. package/exports/browser/client-BFxJts6j.js +2224 -0
  6. package/exports/browser/{client-B-jyclOB.js → client-BVhUamQG.js} +4 -4
  7. package/exports/browser/client-BzvWzzLv.js +2224 -0
  8. package/exports/browser/client-C9GBz2Tf.js +2224 -0
  9. package/exports/browser/client-CQzuu6At.js +2224 -0
  10. package/exports/browser/client-CVkFejdx.js +2224 -0
  11. package/exports/browser/client-Cj_UUO8W.js +2224 -0
  12. package/exports/browser/client-CrGaeBjj.js +2224 -0
  13. package/exports/browser/client-DDC8C510.js +2224 -0
  14. package/exports/browser/client-ERocgKET.js +2224 -0
  15. package/exports/browser/client-a8rws3cu.js +2224 -0
  16. package/exports/browser/identity-ChyyZSve.js +8397 -0
  17. package/exports/browser/index-BD0Anx7_.js +37 -0
  18. package/exports/browser/messages-BFCmg6Vb.js +212 -0
  19. package/exports/browser/messages-BHIC2mQu.js +212 -0
  20. package/exports/browser/messages-CimzJ4wr.js +210 -0
  21. package/exports/browser/messages-Cjoa_LGO.js +210 -0
  22. package/exports/browser/messages-D7JxkkDW.js +212 -0
  23. package/exports/browser/{messages-FMRAS8QX.js → messages-DH0tgNM9.js} +1 -1
  24. package/exports/browser/messages-DVHcNvs_.js +212 -0
  25. package/exports/browser/messages-DqL_g2qw.js +210 -0
  26. package/exports/browser/messages-UKnuelZ7.js +207 -0
  27. package/exports/browser/messages-XgZZUMma.js +212 -0
  28. package/exports/browser/messages-kfFyctPL.js +210 -0
  29. package/exports/browser/messages-psROnfRi.js +212 -0
  30. package/exports/browser/peernet-B9VL4Xwe.js +9522 -0
  31. package/exports/browser/peernet-C-HNdrcd.js +9528 -0
  32. package/exports/browser/peernet-C4rOvyyU.js +9661 -0
  33. package/exports/browser/{peernet-CRbrmeU3.js → peernet-Ca1iM2tN.js} +2 -2
  34. package/exports/browser/peernet-CbI0-jFn.js +9651 -0
  35. package/exports/browser/peernet-CtHScDyh.js +9524 -0
  36. package/exports/browser/peernet-DfuxUK3u.js +9525 -0
  37. package/exports/browser/peernet-DiEcNDLD.js +9655 -0
  38. package/exports/browser/peernet-DtuRXOzP.js +9653 -0
  39. package/exports/browser/peernet-r_9IyzTe.js +9336 -0
  40. package/exports/browser/peernet-rcD5XL1y.js +9590 -0
  41. package/exports/browser/peernet-rw8HJGOz.js +9597 -0
  42. package/exports/browser/peernet.js +1 -1
  43. package/exports/messages-0uXHmQH7.js +209 -0
  44. package/exports/messages-DaUtFfBh.js +207 -0
  45. package/exports/peernet.js +358 -33
  46. package/exports/store.js +3 -0
  47. package/exports/types/file-transfer.d.ts +34 -0
  48. package/exports/types/peernet.d.ts +20 -4
  49. package/exports/types/proto/file.proto.d.ts +5 -0
  50. package/package.json +4 -3
  51. package/rollup.config.js +4 -8
  52. package/src/file-transfer.ts +194 -0
  53. package/src/peernet.ts +170 -28
  54. package/src/proto/file.proto.js +6 -1
  55. package/test/file-transfer.test.js +81 -0
  56. package/test/peernet.test.js +31 -2
  57. package/test-output.log +84 -0
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
-
@@ -1,4 +1,4 @@
1
- import { m as getDefaultExportFromCjs } from './identity-CYVPDmkf.js';
1
+ import { m as getDefaultExportFromCjs } from './identity-ChyyZSve.js';
2
2
 
3
3
  function _mergeNamespaces(n, m) {
4
4
  m.forEach(function (e) {
@@ -0,0 +1,147 @@
1
+ import { m as getDefaultExportFromCjs } from './identity-ChyyZSve.js';
2
+
3
+ function _mergeNamespaces(n, m) {
4
+ m.forEach(function (e) {
5
+ e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) {
6
+ if (k !== 'default' && !(k in n)) {
7
+ var d = Object.getOwnPropertyDescriptor(e, k);
8
+ Object.defineProperty(n, k, d.get ? d : {
9
+ enumerable: true,
10
+ get: function () { return e[k]; }
11
+ });
12
+ }
13
+ });
14
+ });
15
+ return Object.freeze(n);
16
+ }
17
+
18
+ var global;
19
+ var hasRequiredGlobal;
20
+
21
+ function requireGlobal () {
22
+ if (hasRequiredGlobal) return global;
23
+ hasRequiredGlobal = 1;
24
+ var naiveFallback = function () {
25
+ if (typeof self === "object" && self) return self;
26
+ if (typeof window === "object" && window) return window;
27
+ throw new Error("Unable to resolve global `this`");
28
+ };
29
+
30
+ global = (function () {
31
+ if (this) return this;
32
+
33
+ // Unexpected strict mode (may happen if e.g. bundled into ESM module)
34
+
35
+ // Fallback to standard globalThis if available
36
+ if (typeof globalThis === "object" && globalThis) return globalThis;
37
+
38
+ // Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis
39
+ // In all ES5+ engines global object inherits from Object.prototype
40
+ // (if you approached one that doesn't please report)
41
+ try {
42
+ Object.defineProperty(Object.prototype, "__global__", {
43
+ get: function () { return this; },
44
+ configurable: true
45
+ });
46
+ } catch (error) {
47
+ // Unfortunate case of updates to Object.prototype being restricted
48
+ // via preventExtensions, seal or freeze
49
+ return naiveFallback();
50
+ }
51
+ try {
52
+ // Safari case (window.__global__ works, but __global__ does not)
53
+ if (!__global__) return naiveFallback();
54
+ return __global__;
55
+ } finally {
56
+ delete Object.prototype.__global__;
57
+ }
58
+ })();
59
+ return global;
60
+ }
61
+
62
+ var version$1 = "1.0.35";
63
+ var require$$0 = {
64
+ version: version$1};
65
+
66
+ var version;
67
+ var hasRequiredVersion;
68
+
69
+ function requireVersion () {
70
+ if (hasRequiredVersion) return version;
71
+ hasRequiredVersion = 1;
72
+ version = require$$0.version;
73
+ return version;
74
+ }
75
+
76
+ var browser$2;
77
+ var hasRequiredBrowser;
78
+
79
+ function requireBrowser () {
80
+ if (hasRequiredBrowser) return browser$2;
81
+ hasRequiredBrowser = 1;
82
+ var _globalThis;
83
+ if (typeof globalThis === 'object') {
84
+ _globalThis = globalThis;
85
+ } else {
86
+ try {
87
+ _globalThis = requireGlobal();
88
+ } catch (error) {
89
+ } finally {
90
+ if (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }
91
+ if (!_globalThis) { throw new Error('Could not determine global this'); }
92
+ }
93
+ }
94
+
95
+ var NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;
96
+ var websocket_version = requireVersion();
97
+
98
+
99
+ /**
100
+ * Expose a W3C WebSocket class with just one or two arguments.
101
+ */
102
+ function W3CWebSocket(uri, protocols) {
103
+ var native_instance;
104
+
105
+ if (protocols) {
106
+ native_instance = new NativeWebSocket(uri, protocols);
107
+ }
108
+ else {
109
+ native_instance = new NativeWebSocket(uri);
110
+ }
111
+
112
+ /**
113
+ * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket
114
+ * class). Since it is an Object it will be returned as it is when creating an
115
+ * instance of W3CWebSocket via 'new W3CWebSocket()'.
116
+ *
117
+ * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2
118
+ */
119
+ return native_instance;
120
+ }
121
+ if (NativeWebSocket) {
122
+ ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {
123
+ Object.defineProperty(W3CWebSocket, prop, {
124
+ get: function() { return NativeWebSocket[prop]; }
125
+ });
126
+ });
127
+ }
128
+
129
+ /**
130
+ * Module exports.
131
+ */
132
+ browser$2 = {
133
+ 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,
134
+ 'version' : websocket_version
135
+ };
136
+ return browser$2;
137
+ }
138
+
139
+ var browserExports = requireBrowser();
140
+ var browser = /*@__PURE__*/getDefaultExportFromCjs(browserExports);
141
+
142
+ var browser$1 = /*#__PURE__*/_mergeNamespaces({
143
+ __proto__: null,
144
+ default: browser
145
+ }, [browserExports]);
146
+
147
+ export { browser$1 as b };