@leofcoin/peernet 0.10.8 → 0.11.2
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/LICENSE +1 -1
- package/README.md +49 -49
- package/coverage/lcov-report/block-navigation.js +8 -0
- package/coverage/lcov-report/codec-format-interface.js.html +224 -120
- package/coverage/lcov-report/dht-response.js.html +44 -39
- package/coverage/lcov-report/index.html +39 -64
- package/coverage/lcov-report/sorter.js +26 -0
- package/coverage/lcov.info +164 -424
- package/dist/browser/326.peernet.js +29 -0
- package/dist/browser/peernet.js +84258 -95769
- package/dist/commonjs/client-1a1f75e6.js +324 -0
- package/dist/commonjs/{codec-6367213c.js → codec-8c8c652f.js} +198 -188
- package/dist/commonjs/codec-format-interface.js +169 -152
- package/dist/commonjs/codec.js +4 -4
- package/dist/commonjs/dht-response.js +13 -13
- package/dist/commonjs/dht.js +24 -24
- package/dist/commonjs/hash.js +151 -141
- package/dist/commonjs/{http-a94c5a81.js → http-4bc6caeb.js} +19 -15
- package/dist/commonjs/peernet-message.js +15 -15
- package/dist/commonjs/peernet.js +1901 -1794
- package/dist/commonjs/request.js +13 -13
- package/dist/commonjs/response.js +13 -13
- package/dist/module/peernet.js +2462 -2348
- package/index.html +5 -7
- package/package.json +22 -14
- package/rollup.config.js +33 -5
- package/rollup0.config.js +7 -0
- package/src/client.js +75 -75
- package/src/codec/codec-format-interface.js +172 -155
- package/src/codec/codec.js +124 -114
- package/src/codec/codecs.js +79 -79
- package/src/dht/dht.js +121 -121
- package/src/discovery/peer-discovery.js +75 -75
- package/src/handlers/message.js +50 -52
- package/src/hash/hash.js +155 -145
- package/src/http/client/http-client.js +44 -44
- package/src/messages/chat-message.js +14 -14
- package/src/messages/data-response.js +14 -14
- package/src/messages/data.js +18 -18
- package/src/messages/dht-response.js +14 -15
- package/src/messages/dht.js +25 -25
- package/src/messages/peer-response.js +14 -14
- package/src/messages/peer.js +14 -14
- package/src/messages/peernet-message.js +14 -14
- package/src/messages/ps.js +14 -14
- package/src/messages/request.js +14 -14
- package/src/messages/response.js +14 -14
- package/src/peer.js +67 -67
- package/src/peernet.js +614 -697
- package/src/proto/chat-message.proto.js +7 -7
- package/src/proto/peernet.proto.js +2 -2
- package/src/utils/utils.js +78 -78
- package/test/codec.js +3 -2
- package/test/messages.js +7 -4
- package/test.js +11 -4
- package/webpack.config.js +41 -0
- package/coverage/lcov-report/codec.js.html +0 -677
- package/coverage/lcov-report/hash.js.html +0 -551
- package/debug.log +0 -3
- package/dist/browser/peernet.js.tmp-browserify-14074318104595318069 +0 -0
- package/dist/browser/peernet.js.tmp-browserify-45407634493269122267 +0 -0
- package/dist/browser/peernet.js.tmp-browserify-53722389064799025427 +0 -0
- package/dist/browser/peernet.js.tmp-browserify-96323030449218949300 +0 -0
- package/dist/codec/codec-format-interface.js +0 -433
- package/dist/codec/codec.js +0 -199
- package/dist/commonjs/codec-73adfc0f.js +0 -205
- package/dist/commonjs/http-2c603501.js +0 -324
- package/dist/commonjs/http-42a6e555.js +0 -324
- package/dist/commonjs/http-43f4fafe.js +0 -324
- package/dist/commonjs/peernet-message-b6925673.js +0 -32
- package/dist/hash/hash.js +0 -340
- package/dist/messages/dht-response.js +0 -454
- package/dist/messages/dht.js +0 -453
- package/dist/messages/peernet.js +0 -456
- package/dist/module/http-273664bd.js +0 -317
- package/dist/module/http-8fe3c0d7.js +0 -317
- package/dist/module/http-c780c991.js +0 -317
- package/dist/module/http-f13e0d77.js +0 -317
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export default `
|
|
2
|
-
message ChatMessage {
|
|
3
|
-
required string value = 1;
|
|
4
|
-
required string author = 2;
|
|
5
|
-
required uint64 timestamp = 3;
|
|
6
|
-
repeated string files = 4;
|
|
7
|
-
}`
|
|
1
|
+
export default `
|
|
2
|
+
message ChatMessage {
|
|
3
|
+
required string value = 1;
|
|
4
|
+
required string author = 2;
|
|
5
|
+
required uint64 timestamp = 3;
|
|
6
|
+
repeated string files = 4;
|
|
7
|
+
}`
|
package/src/utils/utils.js
CHANGED
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
import fetch from 'node-fetch'
|
|
2
|
-
import Codec from './../codec/codec.js'
|
|
3
|
-
|
|
4
|
-
export const expected = (expected, actual) => {
|
|
5
|
-
const rule = (entry) => {
|
|
6
|
-
return !entry ? `: undefined - ${entry} ` :`: ${typeof entry} - `
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
const entries = Object.entries(actual)
|
|
10
|
-
.map((entry) => entry.join(rule(entry[1])));
|
|
11
|
-
|
|
12
|
-
return `\nExpected:
|
|
13
|
-
${expected.join('\n\t')}
|
|
14
|
-
|
|
15
|
-
actual:
|
|
16
|
-
${entries.join('\n\t')}`;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export const debug = (log) => {
|
|
20
|
-
if (globalThis.DEBUG || globalThis.debug) console.log(`%c ${log}`, 'color: #0080ff;')
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export const protoFor = (data) => {
|
|
24
|
-
if (!Buffer.isBuffer(data)) data = Buffer.from(data)
|
|
25
|
-
const codec = new Codec(data)
|
|
26
|
-
if (!codec.name) throw new Error('proto not found')
|
|
27
|
-
const Proto = globalThis.peernet.protos[codec.name]
|
|
28
|
-
if (!Proto) throw (new Error(`No proto defined for ${codec.name}`))
|
|
29
|
-
return new Proto(data)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* wether or not a peernet daemon is active
|
|
34
|
-
* @return {Boolean}
|
|
35
|
-
*/
|
|
36
|
-
export const hasDaemon = async () => {
|
|
37
|
-
try {
|
|
38
|
-
let response = await fetch('http://127.0.0.1:1000/api/version')
|
|
39
|
-
response = await response.json()
|
|
40
|
-
return Boolean(response.client === '@peernet/api/http')
|
|
41
|
-
} catch (e) {
|
|
42
|
-
return false
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export const https = () => {
|
|
47
|
-
if (!globalThis.location) return false;
|
|
48
|
-
return Boolean(globalThis.location.protocol === 'https:')
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Get current environment
|
|
53
|
-
* @return {String} current environment [node, electron, browser]
|
|
54
|
-
*/
|
|
55
|
-
export const environment = () => {
|
|
56
|
-
const _navigator = globalThis.navigator
|
|
57
|
-
if (!_navigator) {
|
|
58
|
-
return 'node'
|
|
59
|
-
} else if (_navigator && /electron/i.test(_navigator.userAgent)) {
|
|
60
|
-
return 'electron'
|
|
61
|
-
} else {
|
|
62
|
-
return 'browser'
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* * Get current environment
|
|
68
|
-
* @return {Object} result
|
|
69
|
-
* @property {Boolean} reult.daemon whether or not daemon is running
|
|
70
|
-
* @property {Boolean} reult.environment Current environment
|
|
71
|
-
*/
|
|
72
|
-
export const target = async () => {
|
|
73
|
-
let daemon = false
|
|
74
|
-
const env = await environment()
|
|
75
|
-
if (!https()) daemon = await hasDaemon()
|
|
76
|
-
|
|
77
|
-
return {daemon, environment: env}
|
|
78
|
-
}
|
|
1
|
+
import fetch from 'node-fetch'
|
|
2
|
+
import Codec from './../codec/codec.js'
|
|
3
|
+
|
|
4
|
+
export const expected = (expected, actual) => {
|
|
5
|
+
const rule = (entry) => {
|
|
6
|
+
return !entry ? `: undefined - ${entry} ` :`: ${typeof entry} - `
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const entries = Object.entries(actual)
|
|
10
|
+
.map((entry) => entry.join(rule(entry[1])));
|
|
11
|
+
|
|
12
|
+
return `\nExpected:
|
|
13
|
+
${expected.join('\n\t')}
|
|
14
|
+
|
|
15
|
+
actual:
|
|
16
|
+
${entries.join('\n\t')}`;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const debug = (log) => {
|
|
20
|
+
if (globalThis.DEBUG || globalThis.debug) console.log(`%c ${log}`, 'color: #0080ff;')
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export const protoFor = (data) => {
|
|
24
|
+
if (!Buffer.isBuffer(data)) data = Buffer.from(data)
|
|
25
|
+
const codec = new Codec(data)
|
|
26
|
+
if (!codec.name) throw new Error('proto not found')
|
|
27
|
+
const Proto = globalThis.peernet.protos[codec.name]
|
|
28
|
+
if (!Proto) throw (new Error(`No proto defined for ${codec.name}`))
|
|
29
|
+
return new Proto(data)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* wether or not a peernet daemon is active
|
|
34
|
+
* @return {Boolean}
|
|
35
|
+
*/
|
|
36
|
+
export const hasDaemon = async () => {
|
|
37
|
+
try {
|
|
38
|
+
let response = await fetch('http://127.0.0.1:1000/api/version')
|
|
39
|
+
response = await response.json()
|
|
40
|
+
return Boolean(response.client === '@peernet/api/http')
|
|
41
|
+
} catch (e) {
|
|
42
|
+
return false
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export const https = () => {
|
|
47
|
+
if (!globalThis.location) return false;
|
|
48
|
+
return Boolean(globalThis.location.protocol === 'https:')
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Get current environment
|
|
53
|
+
* @return {String} current environment [node, electron, browser]
|
|
54
|
+
*/
|
|
55
|
+
export const environment = () => {
|
|
56
|
+
const _navigator = globalThis.navigator
|
|
57
|
+
if (!_navigator) {
|
|
58
|
+
return 'node'
|
|
59
|
+
} else if (_navigator && /electron/i.test(_navigator.userAgent)) {
|
|
60
|
+
return 'electron'
|
|
61
|
+
} else {
|
|
62
|
+
return 'browser'
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* * Get current environment
|
|
68
|
+
* @return {Object} result
|
|
69
|
+
* @property {Boolean} reult.daemon whether or not daemon is running
|
|
70
|
+
* @property {Boolean} reult.environment Current environment
|
|
71
|
+
*/
|
|
72
|
+
export const target = async () => {
|
|
73
|
+
let daemon = false
|
|
74
|
+
const env = await environment()
|
|
75
|
+
if (!https()) daemon = await hasDaemon()
|
|
76
|
+
|
|
77
|
+
return {daemon, environment: env}
|
|
78
|
+
}
|
package/test/codec.js
CHANGED
|
@@ -3,17 +3,18 @@ const Codec = require('./../dist/commonjs/codec.js')
|
|
|
3
3
|
|
|
4
4
|
const block = '4lmacqas6kpnmvehxpmlvsndgydw5i46mf2pgnaub72eug63dozkw4oqxhk3fazbhkguvlhslcaeqm5jtwghxdk5nvmuakrs7yi2gl6xqmmmw';
|
|
5
5
|
const itx = '5hmacqb6ao252jmbhkhu5isr4yua3jnkhgb5ejjbiomrlzglwarlb777wq7aw5nfz5m4pubx5uffaxp2cqc4ckrh4xirss4nkujvcjbnmomtm';
|
|
6
|
-
const dht = '
|
|
6
|
+
const dht = 'b4wiyebqbigjfvm5mizik7ke3v6lyhoahecqiwergnl3cytarf5bd2qvqase'
|
|
7
7
|
const message = '4xnmcay'
|
|
8
8
|
const data = '4hemcay'
|
|
9
9
|
globalThis.peernet = {};
|
|
10
|
+
console.log(parseInt('706468', 16));
|
|
10
11
|
|
|
11
12
|
test('peernet dht codec', tape => {
|
|
12
13
|
tape.plan(2)
|
|
13
14
|
|
|
14
15
|
const codec = new Codec(dht)
|
|
15
16
|
const codec2 = new Codec(codec.encoded)
|
|
16
|
-
tape.equal(codec.name, 'peernet-dht', `name from encoded is valid ${codec.name}`)
|
|
17
|
+
tape.equal(codec.name, 'peernet-dht-response', `name from encoded is valid ${codec.name}`)
|
|
17
18
|
tape.equal(codec.name, codec2.name, `decoded name is valid ${codec.name}`)
|
|
18
19
|
})
|
|
19
20
|
|
package/test/messages.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
const test = require('tape')
|
|
2
2
|
const Node = require('./../dist/commonjs/dht-response.js')
|
|
3
3
|
|
|
4
|
-
const
|
|
5
|
-
const responseHash = '6lemcazaudes2wowemufpvcn27f4dxadsbielcitgv5rmjqis6qr5ikyajca'
|
|
4
|
+
const responseHash = 'cqbigjfvm5mizik7ke3v6lyhoahecqiwergnl3cytarf5bd2qvqase'
|
|
6
5
|
|
|
7
6
|
const block = '4lmacqas6kpnmvehxpmlvsndgydw5i46mf2pgnaub72eug63dozkw4oqxhk3fazbhkguvlhslcaeqm5jtwghxdk5nvmuakrs7yi2gl6xqmmmw';
|
|
8
7
|
const itx = '5hmacqb6ao252jmbhkhu5isr4yua3jnkhgb5ejjbiomrlzglwarlb777wq7aw5nfz5m4pubx5uffaxp2cqc4ckrh4xirss4nkujvcjbnmomtm';
|
|
@@ -10,12 +9,16 @@ const dht = '5demcay'
|
|
|
10
9
|
|
|
11
10
|
const message = '4xnmcay'
|
|
12
11
|
const data = '4hemcay'
|
|
13
|
-
|
|
12
|
+
globalThis.peernet = {
|
|
13
|
+
codecs: {}
|
|
14
|
+
}
|
|
14
15
|
test('peernet message dht-response', tape => {
|
|
15
16
|
tape.plan(4)
|
|
16
17
|
const n = new Node({ hash: 'hello', has: true })
|
|
17
|
-
|
|
18
|
+
console.log(n.hash);
|
|
19
|
+
const node = new Node(n.encoded)
|
|
18
20
|
const node2 = new Node(node.encoded)
|
|
21
|
+
|
|
19
22
|
tape.equal(node.name, 'peernet-dht-response', `name from encoded is valid ${node.name}`)
|
|
20
23
|
tape.equal(node.name, node2.name, `decoded name is valid ${node.name}`)
|
|
21
24
|
tape.equal(node.hash, responseHash, `hash from encoded is valid ${node.hash}`)
|
package/test.js
CHANGED
|
@@ -7,14 +7,21 @@ pubsub.subscribe('peer:connected', async peer => {
|
|
|
7
7
|
const request = new globalThis.peernet.protos['peernet-request']({
|
|
8
8
|
request:'lastBlock'
|
|
9
9
|
})
|
|
10
|
-
const to =
|
|
10
|
+
const to = peer.id
|
|
11
|
+
console.log(request);
|
|
11
12
|
const node = await peernet.prepareMessage(to, request.encoded)
|
|
13
|
+
console.log({node});
|
|
12
14
|
let response = await peer.request(node.encoded)
|
|
13
15
|
console.log({response});
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
+
const keys = Object.keys(response)
|
|
17
|
+
const uint8Array = new Uint8Array(keys.length)
|
|
18
|
+
for (const key of keys) {
|
|
19
|
+
uint8Array[Number(key)] = response[key]
|
|
20
|
+
}
|
|
21
|
+
const proto = new globalThis.peernet.protos['peernet-message'](uint8Array)
|
|
22
|
+
console.log(proto.decoded.data);
|
|
23
|
+
response = new globalThis.peernet.protos['peernet-response'](proto.decoded.data)
|
|
16
24
|
console.log({response});
|
|
17
|
-
console.log();
|
|
18
25
|
|
|
19
26
|
const block = JSON.parse(response.decoded.response)
|
|
20
27
|
console.log(block);
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const webpack = require('webpack');
|
|
3
|
+
module.exports = {
|
|
4
|
+
entry: './src/peernet.js',
|
|
5
|
+
plugins: [
|
|
6
|
+
// Work around for Buffer is undefined:
|
|
7
|
+
// https://github.com/webpack/changelog-v5/issues/10
|
|
8
|
+
new webpack.ProvidePlugin({
|
|
9
|
+
Buffer: ['buffer', 'Buffer'],
|
|
10
|
+
}),
|
|
11
|
+
new webpack.ProvidePlugin({
|
|
12
|
+
process: 'process/browser',
|
|
13
|
+
}),
|
|
14
|
+
new webpack.DefinePlugin({
|
|
15
|
+
HTTP_IMPORT: '',
|
|
16
|
+
"import fetch from 'node-fetch'": ''
|
|
17
|
+
})
|
|
18
|
+
],
|
|
19
|
+
optimization: {
|
|
20
|
+
minimize: false
|
|
21
|
+
},
|
|
22
|
+
resolve: {
|
|
23
|
+
extensions: [ '.ts', '.js' ],
|
|
24
|
+
fallback: {
|
|
25
|
+
fs: false,
|
|
26
|
+
util: false,
|
|
27
|
+
"stream": require.resolve("stream-browserify"),
|
|
28
|
+
"buffer": require.resolve("buffer"),
|
|
29
|
+
"path": require.resolve("path-browserify"),
|
|
30
|
+
"os": require.resolve("os-browserify")
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
output: {
|
|
34
|
+
library: {
|
|
35
|
+
name: 'Peernet',
|
|
36
|
+
type: 'global'
|
|
37
|
+
},
|
|
38
|
+
filename: 'peernet.js',
|
|
39
|
+
path: path.resolve(__dirname, 'dist', 'browser'),
|
|
40
|
+
},
|
|
41
|
+
};
|