@leofcoin/peernet 0.10.7 → 0.11.1

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 (76) 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/peernet.js +101788 -93018
  10. package/dist/commonjs/client-1a1f75e6.js +324 -0
  11. package/dist/commonjs/{codec-6367213c.js → codec-8c8c652f.js} +198 -188
  12. package/dist/commonjs/codec-format-interface.js +169 -152
  13. package/dist/commonjs/codec.js +4 -4
  14. package/dist/commonjs/dht-response.js +13 -13
  15. package/dist/commonjs/dht.js +24 -24
  16. package/dist/commonjs/hash.js +151 -141
  17. package/dist/commonjs/{http-a94c5a81.js → http-7bbac90a.js} +19 -15
  18. package/dist/commonjs/peernet-message.js +13 -13
  19. package/dist/commonjs/peernet.js +1901 -1794
  20. package/dist/commonjs/request.js +13 -13
  21. package/dist/commonjs/response.js +13 -13
  22. package/dist/module/peernet.js +2460 -2346
  23. package/index.html +4 -6
  24. package/package.json +22 -14
  25. package/rollup.config.js +33 -5
  26. package/rollup0.config.js +7 -0
  27. package/src/client.js +75 -75
  28. package/src/codec/codec-format-interface.js +172 -155
  29. package/src/codec/codec.js +124 -114
  30. package/src/codec/codecs.js +79 -79
  31. package/src/dht/dht.js +121 -121
  32. package/src/discovery/peer-discovery.js +75 -75
  33. package/src/handlers/message.js +52 -52
  34. package/src/hash/hash.js +155 -145
  35. package/src/http/client/http-client.js +44 -44
  36. package/src/messages/chat-message.js +14 -14
  37. package/src/messages/data-response.js +14 -14
  38. package/src/messages/data.js +18 -18
  39. package/src/messages/dht-response.js +14 -15
  40. package/src/messages/dht.js +25 -25
  41. package/src/messages/peer-response.js +14 -14
  42. package/src/messages/peer.js +14 -14
  43. package/src/messages/peernet-message.js +14 -14
  44. package/src/messages/ps.js +14 -14
  45. package/src/messages/request.js +14 -14
  46. package/src/messages/response.js +14 -14
  47. package/src/peer.js +67 -67
  48. package/src/peernet.js +612 -697
  49. package/src/proto/chat-message.proto.js +7 -7
  50. package/src/utils/utils.js +78 -78
  51. package/test/codec.js +3 -2
  52. package/test/messages.js +7 -4
  53. package/test.js +11 -4
  54. package/webpack.config.js +35 -0
  55. package/coverage/lcov-report/codec.js.html +0 -677
  56. package/coverage/lcov-report/hash.js.html +0 -551
  57. package/debug.log +0 -3
  58. package/dist/browser/peernet.js.tmp-browserify-14074318104595318069 +0 -0
  59. package/dist/browser/peernet.js.tmp-browserify-45407634493269122267 +0 -0
  60. package/dist/browser/peernet.js.tmp-browserify-53722389064799025427 +0 -0
  61. package/dist/browser/peernet.js.tmp-browserify-96323030449218949300 +0 -0
  62. package/dist/codec/codec-format-interface.js +0 -433
  63. package/dist/codec/codec.js +0 -199
  64. package/dist/commonjs/codec-73adfc0f.js +0 -205
  65. package/dist/commonjs/http-2c603501.js +0 -324
  66. package/dist/commonjs/http-42a6e555.js +0 -324
  67. package/dist/commonjs/http-43f4fafe.js +0 -324
  68. package/dist/commonjs/peernet-message-b6925673.js +0 -32
  69. package/dist/hash/hash.js +0 -340
  70. package/dist/messages/dht-response.js +0 -454
  71. package/dist/messages/dht.js +0 -453
  72. package/dist/messages/peernet.js +0 -456
  73. package/dist/module/http-273664bd.js +0 -317
  74. package/dist/module/http-8fe3c0d7.js +0 -317
  75. package/dist/module/http-c780c991.js +0 -317
  76. 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
+ }`
@@ -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,35 @@
1
+ const path = require('path');
2
+ const webpack = require('webpack');
3
+ module.exports = {
4
+ entry: './dist/browser/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
+ ],
15
+ optimization: {
16
+ minimize: false
17
+ },
18
+ resolve: {
19
+ extensions: [ '.ts', '.js' ],
20
+ fallback: {
21
+ "stream": require.resolve("stream-browserify"),
22
+ "buffer": require.resolve("buffer"),
23
+ "path": require.resolve("path-browserify"),
24
+ "os": require.resolve("os-browserify")
25
+ }
26
+ },
27
+ output: {
28
+ library: {
29
+ name: 'Peernet',
30
+ type: 'global'
31
+ },
32
+ filename: 'peernet.js',
33
+ path: path.resolve(__dirname, 'dist', 'browser'),
34
+ },
35
+ };