@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.
Files changed (78) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +49 -49
  3. package/coverage/lcov-report/block-navigation.js +8 -0
  4. package/coverage/lcov-report/codec-format-interface.js.html +224 -120
  5. package/coverage/lcov-report/dht-response.js.html +44 -39
  6. package/coverage/lcov-report/index.html +39 -64
  7. package/coverage/lcov-report/sorter.js +26 -0
  8. package/coverage/lcov.info +164 -424
  9. package/dist/browser/326.peernet.js +29 -0
  10. package/dist/browser/peernet.js +84258 -95769
  11. package/dist/commonjs/client-1a1f75e6.js +324 -0
  12. package/dist/commonjs/{codec-6367213c.js → codec-8c8c652f.js} +198 -188
  13. package/dist/commonjs/codec-format-interface.js +169 -152
  14. package/dist/commonjs/codec.js +4 -4
  15. package/dist/commonjs/dht-response.js +13 -13
  16. package/dist/commonjs/dht.js +24 -24
  17. package/dist/commonjs/hash.js +151 -141
  18. package/dist/commonjs/{http-a94c5a81.js → http-4bc6caeb.js} +19 -15
  19. package/dist/commonjs/peernet-message.js +15 -15
  20. package/dist/commonjs/peernet.js +1901 -1794
  21. package/dist/commonjs/request.js +13 -13
  22. package/dist/commonjs/response.js +13 -13
  23. package/dist/module/peernet.js +2462 -2348
  24. package/index.html +5 -7
  25. package/package.json +22 -14
  26. package/rollup.config.js +33 -5
  27. package/rollup0.config.js +7 -0
  28. package/src/client.js +75 -75
  29. package/src/codec/codec-format-interface.js +172 -155
  30. package/src/codec/codec.js +124 -114
  31. package/src/codec/codecs.js +79 -79
  32. package/src/dht/dht.js +121 -121
  33. package/src/discovery/peer-discovery.js +75 -75
  34. package/src/handlers/message.js +50 -52
  35. package/src/hash/hash.js +155 -145
  36. package/src/http/client/http-client.js +44 -44
  37. package/src/messages/chat-message.js +14 -14
  38. package/src/messages/data-response.js +14 -14
  39. package/src/messages/data.js +18 -18
  40. package/src/messages/dht-response.js +14 -15
  41. package/src/messages/dht.js +25 -25
  42. package/src/messages/peer-response.js +14 -14
  43. package/src/messages/peer.js +14 -14
  44. package/src/messages/peernet-message.js +14 -14
  45. package/src/messages/ps.js +14 -14
  46. package/src/messages/request.js +14 -14
  47. package/src/messages/response.js +14 -14
  48. package/src/peer.js +67 -67
  49. package/src/peernet.js +614 -697
  50. package/src/proto/chat-message.proto.js +7 -7
  51. package/src/proto/peernet.proto.js +2 -2
  52. package/src/utils/utils.js +78 -78
  53. package/test/codec.js +3 -2
  54. package/test/messages.js +7 -4
  55. package/test.js +11 -4
  56. package/webpack.config.js +41 -0
  57. package/coverage/lcov-report/codec.js.html +0 -677
  58. package/coverage/lcov-report/hash.js.html +0 -551
  59. package/debug.log +0 -3
  60. package/dist/browser/peernet.js.tmp-browserify-14074318104595318069 +0 -0
  61. package/dist/browser/peernet.js.tmp-browserify-45407634493269122267 +0 -0
  62. package/dist/browser/peernet.js.tmp-browserify-53722389064799025427 +0 -0
  63. package/dist/browser/peernet.js.tmp-browserify-96323030449218949300 +0 -0
  64. package/dist/codec/codec-format-interface.js +0 -433
  65. package/dist/codec/codec.js +0 -199
  66. package/dist/commonjs/codec-73adfc0f.js +0 -205
  67. package/dist/commonjs/http-2c603501.js +0 -324
  68. package/dist/commonjs/http-42a6e555.js +0 -324
  69. package/dist/commonjs/http-43f4fafe.js +0 -324
  70. package/dist/commonjs/peernet-message-b6925673.js +0 -32
  71. package/dist/hash/hash.js +0 -340
  72. package/dist/messages/dht-response.js +0 -454
  73. package/dist/messages/dht.js +0 -453
  74. package/dist/messages/peernet.js +0 -456
  75. package/dist/module/http-273664bd.js +0 -317
  76. package/dist/module/http-8fe3c0d7.js +0 -317
  77. package/dist/module/http-c780c991.js +0 -317
  78. 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
+ }`
@@ -3,7 +3,7 @@ export default `
3
3
  message PeernetMessage {
4
4
  required bytes data = 1;
5
5
  required bytes signature = 2;
6
- optional bytes from = 3;
7
- optional bytes to = 4;
6
+ optional string from = 3;
7
+ optional string to = 4;
8
8
  optional string id = 5;
9
9
  }`
@@ -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 = '5demcay'
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 response = '6lemcaykavugk3dmn4iac'
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
- const node = new Node(response)
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 = peernet._getPeerId(peer.id)
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 proto = new globalThis.peernet.protos['peernet-message'](Buffer.from(response.data))
15
- response = new globalThis.peernet.protos['peernet-response'](Buffer.from(proto.decoded.data))
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
+ };