@leofcoin/peernet 0.16.6 → 0.17.0

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/index.html CHANGED
@@ -9,9 +9,9 @@
9
9
  </script> -->
10
10
 
11
11
  <script type="module">
12
- import Peernet from './dist/browser/peernet.mjs';
12
+ import Peernet from './dist/peernet.js';
13
13
  (async () => {
14
- const peernet = await new Peernet()
14
+ const peernet = await new Peernet({network: 'leofcoin:peach', networkVersion: 'peach'})
15
15
  peernet.addRequestHandler('lastBlock', () => new peernet.protos['peernet-response']({response: new TextEncoder().encode(100)}))
16
16
  })()
17
17
  </script>
package/package.json CHANGED
@@ -1,13 +1,19 @@
1
1
  {
2
2
  "name": "@leofcoin/peernet",
3
- "version": "0.16.6",
3
+ "version": "0.17.0",
4
4
  "description": "",
5
5
  "main": "src/peernet.js",
6
+ "exports": {
7
+ ".": "./exports/peernet.js",
8
+ "./browser": "./exports/browser/peernet.js"
9
+ },
6
10
  "type": "module",
7
11
  "engines": {
8
12
  "node": ">=19.0.0"
9
13
  },
10
14
  "scripts": {
15
+ "build": "rollup -c",
16
+ "watch": "rollup -c -w",
11
17
  "set-flags": "set NODE_OPTIONS=--openssl-legacy-provider",
12
18
  "test": "npm run set-flags && node test/index.js",
13
19
  "server": "discovery-swarm-webrtc --port=4000",
@@ -19,20 +25,29 @@
19
25
  "license": "MIT",
20
26
  "dependencies": {
21
27
  "@leofcoin/codec-format-interface": "^1.4.0",
22
- "@leofcoin/generate-account": "^1.0.4",
23
- "@leofcoin/multi-wallet": "^2.1.2",
28
+ "@leofcoin/generate-account": "^1.2.0",
29
+ "@leofcoin/multi-wallet": "^3.0.1",
24
30
  "@leofcoin/peernet-swarm": "^0.5.0",
25
31
  "@leofcoin/storage": "^3.0.0",
32
+ "@types/node": "^18.11.18",
26
33
  "@vandeurenglenn/base32": "^1.1.0",
27
34
  "@vandeurenglenn/base58": "^1.1.0",
28
35
  "@vandeurenglenn/debug": "^1.0.0",
29
36
  "@vandeurenglenn/is-hex": "^1.0.0",
30
37
  "@vandeurenglenn/little-pubsub": "^1.3.1",
38
+ "multi-signature": "^1.3.1",
31
39
  "socket-request-client": "^1.5.0",
32
40
  "socket-request-server": "^1.5.0"
33
41
  },
34
42
  "devDependencies": {
43
+ "@rollup/plugin-json": "^6.0.0",
44
+ "@rollup/plugin-node-resolve": "^15.0.1",
45
+ "@rollup/plugin-wasm": "^6.1.1",
46
+ "@types/bs58check": "^2.1.0",
47
+ "@types/secp256k1": "^4.0.3",
48
+ "@types/varint": "^6.0.1",
35
49
  "eslint": "^8.29.0",
36
- "eslint-plugin-unicorn": "^45.0.1"
50
+ "eslint-plugin-unicorn": "^45.0.1",
51
+ "rollup": "^3.9.0"
37
52
  }
38
53
  }
@@ -0,0 +1,30 @@
1
+ import resolve from '@rollup/plugin-node-resolve'
2
+ import commonjs from '@rollup/plugin-commonjs'
3
+ import json from '@rollup/plugin-json'
4
+ import wasm from '@rollup/plugin-wasm'
5
+ import rimraf from 'rimraf'
6
+
7
+ rimraf.sync('./exports/**')
8
+
9
+
10
+ export default [{
11
+ input: ['./src/peernet.ts', './node_modules/@leofcoin/storage/exports/browser-store.js'],
12
+ output: {
13
+ format: 'es',
14
+ dir: './exports/browser'
15
+ },
16
+ plugins: [
17
+ json(),
18
+ wasm(),
19
+ commonjs(),
20
+ resolve({
21
+ mainFields: ["browser", "module", "main"]
22
+ })
23
+ ]
24
+ }, {
25
+ input: ['./src/peernet.ts', './node_modules/@leofcoin/storage/exports/store.js'],
26
+ output: {
27
+ format: 'es',
28
+ dir: './exports'
29
+ }
30
+ }]
@@ -79,8 +79,10 @@ export default class Peernet {
79
79
 
80
80
  this.hasDaemon ? Storage = LeofcoinStorageClient : Storage = LeofcoinStorage
81
81
 
82
- globalThis[`${name}Store`] = globalThis[`${name}Store`] ||
83
- await new Storage(name, root)
82
+ if (!globalThis[`${name}Store`]) {
83
+ globalThis[`${name}Store`] = new Storage(name, root)
84
+ await globalThis[`${name}Store`].init()
85
+ }
84
86
 
85
87
  globalThis[`${name}Store`].private = isPrivate
86
88
  if (!isPrivate) this.stores.push(name)
@@ -188,7 +190,7 @@ export default class Peernet {
188
190
 
189
191
  const {daemon, environment} = await target()
190
192
  this.hasDaemon = daemon
191
-
193
+
192
194
  for (const store of this.defaultStores) {
193
195
  await this.addStore(store, options.storePrefix, options.root)
194
196
  }
@@ -251,7 +253,7 @@ export default class Peernet {
251
253
  * @type {PeernetClient}
252
254
  */
253
255
  this.client = new importee.default(this.id, this.networkVersion, this.stars)
254
- if (globalThis.onbeforeunload) {
256
+ if (globalThis.navigator) {
255
257
  globalThis.addEventListener('beforeunload', async () => this.client.close());
256
258
  } else {
257
259
  process.on('SIGTERM', async () => {
package/tsconfig.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "compilerOptions": {
3
+ "module": "ES2022",
4
+ "target": "es2022",
5
+ // "noImplicitAny": true,
6
+ "removeComments": true,
7
+ "preserveConstEnums": true,
8
+ "outDir": ".build/",
9
+ "moduleResolution":"NodeNext",
10
+ "sourceMap": true,
11
+ "allowJs": true
12
+ },
13
+ "include": [
14
+ "./src/**/*",
15
+ "@vandeurenglenn/little-pubsub",
16
+ "@leofcoin/storage"
17
+ ],
18
+ "exclude": ["node_modules", "**/*.spec.ts"]
19
+ }
@@ -1,28 +0,0 @@
1
- 'use strict';
2
-
3
- var codecFormatInterface = require('@leofcoin/codec-format-interface');
4
-
5
- var proto = `
6
- // PeernetDHTMessageResponse
7
- message PeernetDHTMessageResponse {
8
- required string hash = 1;
9
- required bool has = 2;
10
- }
11
- `;
12
-
13
- class DHTMessageResponse extends codecFormatInterface.FormatInterface {
14
- get keys() {
15
- return ['hash', 'has']
16
- }
17
-
18
- get messageName() {
19
- return 'PeernetDHTMessageResponse'
20
- }
21
-
22
- constructor(data) {
23
- const name = 'peernet-dht-response';
24
- super(data, proto, {name});
25
- }
26
- }
27
-
28
- module.exports = DHTMessageResponse;
@@ -1,39 +0,0 @@
1
- 'use strict';
2
-
3
- var codecFormatInterface = require('@leofcoin/codec-format-interface');
4
-
5
- var proto = `
6
- // PeernetDHTMessage
7
- message PeernetDHTMessage {
8
- required string hash = 1;
9
- optional string store = 2;
10
- }
11
- `;
12
-
13
- /**
14
- * @example `
15
- new DHTMessage(hash, store)
16
- // store = optional if not set, peernet checks every store
17
- let message = new DHTMessage('hashmvbs124xcfd...', 'transaction')
18
- message = new DHTMessage('hashmvbs124xcfd...', 'block')
19
- `
20
- */
21
- class DHTMessage extends codecFormatInterface.FormatInterface {
22
- /**
23
- *
24
- */
25
- get keys() {
26
- return ['hash', 'store']
27
- }
28
-
29
- get messageName() {
30
- return 'PeernetDHTMessage'
31
- }
32
-
33
- constructor(data) {
34
- const name = 'peernet-dht';
35
- super(data, proto, {name});
36
- }
37
- }
38
-
39
- module.exports = DHTMessage;
@@ -1,194 +0,0 @@
1
- 'use strict';
2
-
3
- var peernet = require('./peernet2.js');
4
- var dht = require('./dht.js');
5
- var dhtResponse = require('./dht-response.js');
6
- var codecFormatInterface = require('@leofcoin/codec-format-interface');
7
- var request = require('./request.js');
8
- var response = require('./response.js');
9
-
10
- var proto$6 = `
11
- // PeernetDataMessage
12
- message PeernetDataMessage {
13
- required string hash = 1;
14
- optional string store = 2;
15
- }
16
- `;
17
-
18
- /**
19
- * @extends {CodecFormat}
20
- */
21
- class DataMessage extends codecFormatInterface.FormatInterface {
22
- get keys() {
23
- return ['hash', 'store']
24
- }
25
-
26
- get messageName() {
27
- return 'PeernetDataMessage'
28
- }
29
- /**
30
- * @param {Buffer|String|Object|DataMessage} data - The data needed to create the DataMessage
31
- */
32
- constructor(data) {
33
- super(data, proto$6, {name: 'peernet-data'});
34
- }
35
- }
36
-
37
- var proto$5 = `
38
- // PsMessage
39
- message PsMessage {
40
- required bytes data = 1;
41
- required bytes topic = 2;
42
- }`;
43
-
44
- class PsMessage extends codecFormatInterface.FormatInterface {
45
- get keys() {
46
- return ['data', 'topic']
47
- }
48
-
49
- get messageName() {
50
- return 'PsMessage'
51
- }
52
-
53
- constructor(buffer) {
54
- const name = 'peernet-ps';
55
- super(buffer, proto$5, {name});
56
- }
57
- }
58
-
59
- var proto$4 = `
60
- // PeernetPeerMessage
61
- message PeernetPeerMessage {
62
- required string id = 1;
63
- }
64
- `;
65
-
66
- class PeerMessage extends codecFormatInterface.FormatInterface {
67
- get keys() {
68
- return ['id']
69
- }
70
-
71
- get messageName() {
72
- return 'PeernetPeerMessage'
73
- }
74
-
75
- constructor(data) {
76
- const name = 'peernet-peer';
77
- super(data, proto$4, {name});
78
- }
79
- }
80
-
81
- var proto$3 = `
82
- // PeernetPeerMessageResponse
83
- message PeernetPeerMessageResponse {
84
- required string id = 1;
85
- }
86
- `;
87
-
88
- class PeerMessageResponse extends codecFormatInterface.FormatInterface {
89
- get keys() {
90
- return ['id']
91
- }
92
-
93
- get messageName() {
94
- return 'PeernetPeerMessageResponse'
95
- }
96
-
97
- constructor(data) {
98
- const name = 'peernet-peer-response';
99
- super(data, proto$3, {name});
100
- }
101
- }
102
-
103
- var proto$2 = `
104
- // PeernetDataMessageResponse
105
- message PeernetDataMessageResponse {
106
- required string hash = 1;
107
- required bytes data = 2;
108
- }
109
- `;
110
-
111
- class DataMessageResponse extends codecFormatInterface.FormatInterface {
112
- get keys() {
113
- return ['hash', 'data']
114
- }
115
-
116
- get messageName() {
117
- return 'PeernetDataMessageResponse'
118
- }
119
-
120
- constructor(data) {
121
- const name = 'peernet-data-response';
122
- super(data, proto$2, {name});
123
- }
124
- }
125
-
126
- var proto$1 = `
127
- message ChatMessage {
128
- required string value = 1;
129
- required string author = 2;
130
- required uint64 timestamp = 3;
131
- repeated string files = 4;
132
- }`;
133
-
134
- class ChatMessage extends codecFormatInterface.FormatInterface {
135
- get keys() {
136
- return ['author', 'value', 'timestamp', 'files']
137
- }
138
-
139
- get messageName() {
140
- return 'ChatMessage'
141
- }
142
-
143
- constructor(buffer) {
144
- const name = 'chat-message';
145
- super(buffer, proto$1, {name});
146
- }
147
- }
148
-
149
- var proto = `
150
- // PeernetFolder
151
- message PeernetFileLink {
152
- required string hash = 1;
153
- required string path = 2;
154
- optional string size = 3;
155
- }
156
-
157
- message PeernetFile {
158
- required string path = 1;
159
- optional string content = 2;
160
- repeated PeernetFileLink links = 3;
161
- }
162
- `;
163
-
164
- /**
165
- * @extends {CodecFormat}
166
- */
167
- class PeernetFile extends codecFormatInterface.FormatInterface {
168
- get keys() {
169
- return ['path', 'content', 'links']
170
- }
171
-
172
- get messageName() {
173
- return 'PeernetFile'
174
- }
175
- /**
176
- * @param {Buffer|String|Object|DataMessage} data - The data needed to create the DataMessage
177
- */
178
- constructor(data) {
179
- super(data, proto, {name: 'peernet-file'});
180
- }
181
- }
182
-
183
- exports.PeernetMessage = peernet;
184
- exports.DHTMessage = dht;
185
- exports.DHTMessageResponse = dhtResponse;
186
- exports.RequestMessage = request;
187
- exports.ResponseMessage = response;
188
- exports.ChatMessage = ChatMessage;
189
- exports.DataMessage = DataMessage;
190
- exports.DataMessageResponse = DataMessageResponse;
191
- exports.PeerMessage = PeerMessage;
192
- exports.PeerMessageResponse = PeerMessageResponse;
193
- exports.PeernetFile = PeernetFile;
194
- exports.PsMessage = PsMessage;