@dxos/signal 2.33.9-dev.d0ae5f95 → 2.33.9-dev.d0dce35f

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. package/.eslintrc.js +6 -0
  2. package/.rush/temp/package-deps_build.json +17 -0
  3. package/.rush/temp/package-deps_build_test.json +17 -0
  4. package/.rush/temp/shrinkwrap-deps.json +296 -0
  5. package/bin/signal-test-darwin-amd64 +0 -0
  6. package/bin/signal-test-darwin-arm64 +0 -0
  7. package/bin/signal-test-linux-amd64 +0 -0
  8. package/bin/signal-test-linux-arm64 +0 -0
  9. package/bin/signal.js +0 -0
  10. package/dist/src/index.d.ts +1 -3
  11. package/dist/src/index.d.ts.map +1 -1
  12. package/dist/src/index.js +2 -4
  13. package/dist/src/index.js.map +1 -1
  14. package/dist/src/test-broker.d.ts +19 -0
  15. package/dist/src/test-broker.d.ts.map +1 -0
  16. package/dist/src/test-broker.js +104 -0
  17. package/dist/src/test-broker.js.map +1 -0
  18. package/dist/tsconfig.tsbuildinfo +1 -1
  19. package/package.json +11 -57
  20. package/signal.build.log +0 -0
  21. package/src/index.ts +2 -4
  22. package/src/test-broker.ts +94 -0
  23. package/tsconfig.json +20 -0
  24. package/dist/package.json +0 -94
  25. package/dist/src/bin.d.ts +0 -3
  26. package/dist/src/bin.d.ts.map +0 -1
  27. package/dist/src/bin.js +0 -79
  28. package/dist/src/bin.js.map +0 -1
  29. package/dist/src/broker.d.ts +0 -30
  30. package/dist/src/broker.d.ts.map +0 -1
  31. package/dist/src/broker.js +0 -99
  32. package/dist/src/broker.js.map +0 -1
  33. package/dist/src/broker.test.d.ts +0 -2
  34. package/dist/src/broker.test.d.ts.map +0 -1
  35. package/dist/src/broker.test.js +0 -30
  36. package/dist/src/broker.test.js.map +0 -1
  37. package/dist/src/presence.test.d.ts +0 -2
  38. package/dist/src/presence.test.d.ts.map +0 -1
  39. package/dist/src/presence.test.js +0 -54
  40. package/dist/src/presence.test.js.map +0 -1
  41. package/dist/src/serializer.d.ts +0 -7
  42. package/dist/src/serializer.d.ts.map +0 -1
  43. package/dist/src/serializer.js +0 -21
  44. package/dist/src/serializer.js.map +0 -1
  45. package/dist/src/services/discovery.d.ts +0 -21
  46. package/dist/src/services/discovery.d.ts.map +0 -1
  47. package/dist/src/services/discovery.js +0 -93
  48. package/dist/src/services/discovery.js.map +0 -1
  49. package/dist/src/services/index.d.ts +0 -6
  50. package/dist/src/services/index.d.ts.map +0 -1
  51. package/dist/src/services/index.js +0 -25
  52. package/dist/src/services/index.js.map +0 -1
  53. package/dist/src/services/network.d.ts +0 -24
  54. package/dist/src/services/network.d.ts.map +0 -1
  55. package/dist/src/services/network.js +0 -105
  56. package/dist/src/services/network.js.map +0 -1
  57. package/dist/src/services/presence.d.ts +0 -17
  58. package/dist/src/services/presence.d.ts.map +0 -1
  59. package/dist/src/services/presence.js +0 -74
  60. package/dist/src/services/presence.js.map +0 -1
  61. package/dist/src/services/status.d.ts +0 -46
  62. package/dist/src/services/status.d.ts.map +0 -1
  63. package/dist/src/services/status.js +0 -248
  64. package/dist/src/services/status.js.map +0 -1
  65. package/dist/src/services/web.d.ts +0 -8
  66. package/dist/src/services/web.d.ts.map +0 -1
  67. package/dist/src/services/web.js +0 -28
  68. package/dist/src/services/web.js.map +0 -1
  69. package/dist/src/signal/index.d.ts +0 -3
  70. package/dist/src/signal/index.d.ts.map +0 -1
  71. package/dist/src/signal/index.js +0 -22
  72. package/dist/src/signal/index.js.map +0 -1
  73. package/dist/src/signal/peer-map.d.ts +0 -63
  74. package/dist/src/signal/peer-map.d.ts.map +0 -1
  75. package/dist/src/signal/peer-map.js +0 -135
  76. package/dist/src/signal/peer-map.js.map +0 -1
  77. package/dist/src/signal/peer-map.test.d.ts +0 -2
  78. package/dist/src/signal/peer-map.test.d.ts.map +0 -1
  79. package/dist/src/signal/peer-map.test.js +0 -44
  80. package/dist/src/signal/peer-map.test.js.map +0 -1
  81. package/dist/src/signal/signal-server.d.ts +0 -17
  82. package/dist/src/signal/signal-server.d.ts.map +0 -1
  83. package/dist/src/signal/signal-server.js +0 -92
  84. package/dist/src/signal/signal-server.js.map +0 -1
  85. package/dist/src/signal.test.d.ts +0 -2
  86. package/dist/src/signal.test.d.ts.map +0 -1
  87. package/dist/src/signal.test.js +0 -67
  88. package/dist/src/signal.test.js.map +0 -1
  89. package/dist/src/system-information.d.ts +0 -5
  90. package/dist/src/system-information.d.ts.map +0 -1
  91. package/dist/src/system-information.js +0 -96
  92. package/dist/src/system-information.js.map +0 -1
  93. package/dist/src/testing.d.ts +0 -9
  94. package/dist/src/testing.d.ts.map +0 -1
  95. package/dist/src/testing.js +0 -25
  96. package/dist/src/testing.js.map +0 -1
  97. package/dist/src/transporter/bootstrap-node.d.ts +0 -2
  98. package/dist/src/transporter/bootstrap-node.d.ts.map +0 -1
  99. package/dist/src/transporter/bootstrap-node.js +0 -95
  100. package/dist/src/transporter/bootstrap-node.js.map +0 -1
  101. package/dist/src/transporter/index.d.ts +0 -38
  102. package/dist/src/transporter/index.d.ts.map +0 -1
  103. package/dist/src/transporter/index.js +0 -151
  104. package/dist/src/transporter/index.js.map +0 -1
  105. package/dist/src/transporter/messenger.d.ts +0 -2
  106. package/dist/src/transporter/messenger.d.ts.map +0 -1
  107. package/dist/src/transporter/messenger.js +0 -193
  108. package/dist/src/transporter/messenger.js.map +0 -1
  109. package/src/bin.ts +0 -81
  110. package/src/broker.test.js +0 -35
  111. package/src/broker.ts +0 -134
  112. package/src/presence.test.js +0 -67
  113. package/src/serializer.js +0 -17
  114. package/src/services/discovery.js +0 -101
  115. package/src/services/index.ts +0 -9
  116. package/src/services/network.ts +0 -129
  117. package/src/services/presence.js +0 -77
  118. package/src/services/status.js +0 -259
  119. package/src/services/web.ts +0 -24
  120. package/src/shims.d.ts +0 -6
  121. package/src/signal/index.ts +0 -6
  122. package/src/signal/peer-map.test.js +0 -58
  123. package/src/signal/peer-map.ts +0 -174
  124. package/src/signal/signal-server.js +0 -106
  125. package/src/signal.test.js +0 -78
  126. package/src/system-information.ts +0 -110
  127. package/src/testing.ts +0 -27
  128. package/src/transporter/bootstrap-node.js +0 -112
  129. package/src/transporter/index.js +0 -179
  130. package/src/transporter/messenger.js +0 -223
@@ -1,30 +0,0 @@
1
- /// <reference types="node" />
2
- import { ServiceBroker } from 'moleculer';
3
- export declare const SIGNAL_PROTOCOL_VERSION = 4;
4
- export declare type LogLevel = 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace';
5
- export declare type LogFormat = 'full' | 'short' | 'simple' | 'json';
6
- export interface CreateBrokerOpts {
7
- port?: string | number;
8
- keyPair?: {
9
- publicKey: Buffer;
10
- secretKey: Buffer;
11
- };
12
- hyperswarm?: {
13
- bootstrap?: boolean | string[];
14
- maxPeers?: number;
15
- };
16
- asBootstrap?: boolean;
17
- repl?: boolean;
18
- logger?: boolean;
19
- logLevel?: LogLevel;
20
- logFormat?: LogFormat;
21
- logDir?: string;
22
- discoveryService?: boolean;
23
- presenceService?: boolean;
24
- statusService?: boolean;
25
- }
26
- /**
27
- * Create a ServiceBroker
28
- */
29
- export declare const createBroker: (topic: Buffer, opts?: CreateBrokerOpts) => ServiceBroker;
30
- //# sourceMappingURL=broker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../src/broker.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAS1C,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,oBAAY,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAC9E,oBAAY,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,UAAU,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,UAAW,MAAM,SAAQ,gBAAgB,kBAgGjE,CAAC"}
@@ -1,99 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2021 DXOS.org
4
- //
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.createBroker = exports.SIGNAL_PROTOCOL_VERSION = void 0;
10
- const crypto_1 = __importDefault(require("crypto"));
11
- const moleculer_1 = require("moleculer");
12
- const node_assert_1 = __importDefault(require("node:assert"));
13
- const package_json_1 = __importDefault(require("../package.json"));
14
- const serializer_1 = require("./serializer");
15
- const services_1 = require("./services");
16
- const signal_1 = require("./signal");
17
- const transporter_1 = require("./transporter");
18
- exports.SIGNAL_PROTOCOL_VERSION = 4;
19
- /**
20
- * Create a ServiceBroker
21
- */
22
- const createBroker = (topic, opts = {}) => {
23
- var _a;
24
- (0, node_assert_1.default)(Buffer.isBuffer(topic) && topic.length === 32, 'topic is required and must be a buffer of 32 bytes');
25
- // TODO(burdon): Lint error (void function used).
26
- topic = crypto_1.default.createHash('sha256')
27
- .update(topic.toString('hex') + exports.SIGNAL_PROTOCOL_VERSION)
28
- .digest();
29
- const { port = (_a = process.env.PORT) !== null && _a !== void 0 ? _a : 4000, keyPair = transporter_1.ProtocolTransporter.keyPair(), hyperswarm, asBootstrap = false, repl = false, logger: loggerEnabled = true, logLevel, logFormat = 'full', logDir, discoveryService = true, presenceService = true, statusService = true } = opts;
30
- const logger = loggerEnabled
31
- ? {
32
- type: 'Console',
33
- options: {
34
- formatter: logFormat
35
- }
36
- }
37
- : false;
38
- if (logger && logDir) {
39
- logger.type = 'File';
40
- logger.options = {
41
- folder: logDir,
42
- filename: 'dxos-signal-{nodeID}-{date}.log',
43
- formatter: logFormat
44
- };
45
- }
46
- const broker = new moleculer_1.ServiceBroker({
47
- nodeID: keyPair.publicKey.toString('hex'),
48
- logger,
49
- logLevel,
50
- // code repl,
51
- transporter: new transporter_1.ProtocolTransporter({
52
- topic,
53
- keyPair,
54
- hyperswarm,
55
- asBootstrap,
56
- bootstrapPort: port
57
- }),
58
- serializer: new serializer_1.Serializer(),
59
- metadata: {
60
- port,
61
- version: package_json_1.default.version
62
- },
63
- created: (broker) => {
64
- broker.shared = {
65
- keyPair,
66
- peerMap: new signal_1.PeerMap(keyPair.publicKey)
67
- };
68
- },
69
- started: (broker) => {
70
- broker.logger.info('SIGNAL_PROTOCOL_VERSION:', exports.SIGNAL_PROTOCOL_VERSION);
71
- broker.logger.info('SIGNAL_PROTOCOL_TOPIC:', topic.toString('hex'));
72
- if (repl) {
73
- return broker.repl();
74
- }
75
- },
76
- errorHandler(err, info) {
77
- // Handle the error.
78
- if (err.code) {
79
- // Ignore webrtc peer errors.
80
- this.logger.debug('GLOBAL_ERROR:', err);
81
- return;
82
- }
83
- this.logger.warn('GLOBAL_ERROR:', err);
84
- }
85
- });
86
- broker.createService(services_1.WebService);
87
- if (discoveryService) {
88
- broker.createService(services_1.DiscoveryService);
89
- }
90
- if (presenceService) {
91
- broker.createService(services_1.PresenceService);
92
- }
93
- if (statusService) {
94
- broker.createService(services_1.StatusService);
95
- }
96
- return broker;
97
- };
98
- exports.createBroker = createBroker;
99
- //# sourceMappingURL=broker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/broker.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=broker.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broker.test.d.ts","sourceRoot":"","sources":["../../src/broker.test.js"],"names":[],"mappings":""}
@@ -1,30 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2021 DXOS.org
4
- //
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- const crypto_1 = __importDefault(require("crypto"));
10
- const debug_1 = __importDefault(require("debug"));
11
- const p_event_1 = __importDefault(require("p-event"));
12
- const broker_1 = require("./broker");
13
- const log = (0, debug_1.default)('dxos:test:broker');
14
- jest.setTimeout(100 * 1000);
15
- const MAX_BROKERS = 10;
16
- test(`${MAX_BROKERS} brokers connectivity`, async () => {
17
- const topic = crypto_1.default.randomBytes(32);
18
- const brokers = [...Array(MAX_BROKERS).keys()].map(i => (0, broker_1.createBroker)(topic, { port: 4000 + i, logger: false, hyperswarm: { bootstrap: false } }));
19
- const waitForConnected = Promise.all(brokers.map(broker => {
20
- const nodes = brokers.filter(b => b.nodeID !== broker.nodeID).map(b => b.nodeID);
21
- return Promise.all(nodes.map(nodeID => (0, p_event_1.default)(broker.localBus, '$node.connected', ({ node }) => node.id === nodeID)));
22
- }));
23
- log('> starting brokers');
24
- await Promise.all(brokers.map(b => b.start()));
25
- log('> waiting for the nodes to be connected');
26
- await waitForConnected;
27
- log('> stopping brokers');
28
- return Promise.all(brokers.map(b => b.stop()));
29
- });
30
- //# sourceMappingURL=broker.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broker.test.js","sourceRoot":"","sources":["../../src/broker.test.js"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;AAEF,oDAA4B;AAC5B,kDAA0B;AAC1B,sDAA6B;AAE7B,qCAAwC;AAExC,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,kBAAkB,CAAC,CAAC;AAEtC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AAE5B,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,IAAI,CAAC,GAAG,WAAW,uBAAuB,EAAE,KAAK,IAAI,EAAE;IACrD,MAAM,KAAK,GAAG,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,qBAAY,EAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAElJ,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QACxD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACjF,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAA,iBAAM,EAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;IACxH,CAAC,CAAC,CAAC,CAAC;IAEJ,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC1B,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE/C,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAC/C,MAAM,gBAAgB,CAAC;IAEvB,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=presence.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"presence.test.d.ts","sourceRoot":"","sources":["../../src/presence.test.js"],"names":[],"mappings":""}
@@ -1,54 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2021 DXOS.org
4
- //
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- const crypto_1 = __importDefault(require("crypto"));
10
- const debug_1 = __importDefault(require("debug"));
11
- const p_event_1 = __importDefault(require("p-event"));
12
- const broker_1 = require("./broker");
13
- const log = (0, debug_1.default)('dxos:test:presence');
14
- // TODO(burdon): A worker process has failed to exit gracefully and has been force exited.
15
- jest.setTimeout(100 * 1000);
16
- const complete = (nodeID, graph, max) => {
17
- if (graph.nodes().length !== max) {
18
- return false;
19
- }
20
- const nodes = graph.nodes().filter(id => id !== nodeID);
21
- const edges = [];
22
- for (const edge of graph.edgeEntries(nodeID)) {
23
- const source = edge[2];
24
- const target = edge[3];
25
- edges.push(source === nodeID ? target : source);
26
- }
27
- if (edges.length < (max - 1)) {
28
- return false;
29
- }
30
- for (const id of nodes) {
31
- if (!edges.includes(id)) {
32
- return false;
33
- }
34
- }
35
- return true;
36
- };
37
- test('5 brokers full network connected', async () => {
38
- const MAX_BROKERS = 5;
39
- const topic = crypto_1.default.randomBytes(32);
40
- const brokers = [...Array(MAX_BROKERS).keys()].map(i => (0, broker_1.createBroker)(topic, { port: 6000 + i, logger: false, hyperswarm: { bootstrap: false } }));
41
- const waitForPresenceGraph = Promise.all(brokers.map(async (broker) => (0, p_event_1.default)(broker.localBus, '$broker.presence-update', (graph) => complete(broker.nodeID, graph, MAX_BROKERS))));
42
- const waitForConnected = Promise.all(brokers.map(broker => {
43
- const nodes = brokers.filter(b => b.nodeID !== broker.nodeID).map(b => b.nodeID);
44
- return Promise.all(nodes.map(nodeID => (0, p_event_1.default)(broker.localBus, '$node.connected', ({ node }) => node.id === nodeID)));
45
- }));
46
- log('Starting brokers...');
47
- await Promise.all(brokers.map(b => b.start()));
48
- await waitForConnected;
49
- log('Waiting for the nodes to be fully connected...');
50
- await waitForPresenceGraph;
51
- log('Stopping brokers...');
52
- return Promise.all(brokers.map(b => b.stop()));
53
- });
54
- //# sourceMappingURL=presence.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"presence.test.js","sourceRoot":"","sources":["../../src/presence.test.js"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- declare const Serializer_base: typeof import("moleculer").Serializer;
2
- export class Serializer extends Serializer_base {
3
- serialize(obj: any): any;
4
- deserialize(buf: any): any;
5
- }
6
- export {};
7
- //# sourceMappingURL=serializer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/serializer.js"],"names":[],"mappings":";AAQA;IACE,yBAEC;IAED,2BAEC;CACF"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2021 DXOS.org
4
- //
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.Serializer = void 0;
10
- const buffer_json_encoding_1 = __importDefault(require("buffer-json-encoding"));
11
- const { Serializers: { Base: BaseSerializer } } = require('moleculer'); // eslint-disable-line @typescript-eslint/no-var-requires
12
- class Serializer extends BaseSerializer {
13
- serialize(obj) {
14
- return buffer_json_encoding_1.default.encode(obj);
15
- }
16
- deserialize(buf) {
17
- return buffer_json_encoding_1.default.decode(buf);
18
- }
19
- }
20
- exports.Serializer = Serializer;
21
- //# sourceMappingURL=serializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/serializer.js"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,gFAA6C;AAE7C,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,yDAAyD;AAEjI,MAAa,UAAW,SAAQ,cAAc;IAC5C,SAAS,CAAE,GAAG;QACZ,OAAO,8BAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,WAAW,CAAE,GAAG;QACd,OAAO,8BAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;CACF;AARD,gCAQC"}
@@ -1,21 +0,0 @@
1
- export namespace DiscoveryService {
2
- const name: string;
3
- const events: {
4
- '$node.disconnected'(ctx: any): void;
5
- '$node.connected'(): any;
6
- 'discovery.update'(ctx: any): void;
7
- };
8
- namespace actions {
9
- function offer(ctx: any): any;
10
- function offer(ctx: any): any;
11
- function signal(ctx: any): any;
12
- function signal(ctx: any): any;
13
- }
14
- function created(): void;
15
- function created(): void;
16
- function started(): Promise<void>;
17
- function started(): Promise<void>;
18
- function stopped(): Promise<void>;
19
- function stopped(): Promise<void>;
20
- }
21
- //# sourceMappingURL=discovery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/services/discovery.js"],"names":[],"mappings":";;;;;;;;QA0CI,8BAYC;QAZD,8BAYC;QACD,+BAYC;QAZD,+BAYC;;IAEH,yBAoBC;IApBD,yBAoBC;IACD,kCAIC;IAJD,kCAIC;IACD,kCAIC;IAJD,kCAIC"}
@@ -1,93 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2021 DXOS.org
4
- //
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.DiscoveryService = void 0;
10
- const lodash_debounce_1 = __importDefault(require("lodash.debounce"));
11
- const p_limit_1 = __importDefault(require("p-limit"));
12
- exports.DiscoveryService = {
13
- name: 'discovery',
14
- events: {
15
- '$node.disconnected'(ctx) {
16
- const { peerMap } = this.broker.shared;
17
- peerMap.deletePeersByOwner(Buffer.from(ctx.params.node.id, 'hex'));
18
- },
19
- '$node.connected'() {
20
- const { peerMap } = this.broker.shared;
21
- const owner = Buffer.from(this.broker.nodeID, 'hex');
22
- const peers = peerMap
23
- .peers
24
- .filter(p => p.owner.equals(owner))
25
- .map(peerMap.encode);
26
- if (peers.length === 0) {
27
- return;
28
- }
29
- return this.broker.broadcast('discovery.update', { peers }).catch(() => { });
30
- },
31
- 'discovery.update'(ctx) {
32
- const { peerMap } = this.broker.shared;
33
- const { peers } = ctx.params;
34
- if (ctx.nodeID === this.broker.nodeID) {
35
- this._discoveryUpdate();
36
- return;
37
- }
38
- peerMap.updatePeersByOwner(Buffer.from(ctx.nodeID, 'hex'), peers.map(peerMap.decode));
39
- this._discoveryUpdate();
40
- }
41
- },
42
- actions: {
43
- offer(ctx) {
44
- this.logger.debug('offer', ctx.params);
45
- const { peerMap } = this.broker.shared;
46
- const { remoteId } = ctx.params;
47
- const peer = peerMap.peers.find(p => p.id.equals(remoteId) && p.rpc);
48
- if (!peer) {
49
- throw new Error('rpc not found');
50
- }
51
- return peer.rpc.call('offer', ctx.params);
52
- },
53
- signal(ctx) {
54
- this.logger.debug('signal', ctx.params);
55
- const { peerMap } = this.broker.shared;
56
- const { remoteId } = ctx.params;
57
- const peer = peerMap.peers.find(p => p.id.equals(remoteId) && p.rpc);
58
- if (!peer) {
59
- throw new Error('rpc not found');
60
- }
61
- return peer.rpc.emit('signal', ctx.params);
62
- }
63
- },
64
- created() {
65
- const { peerMap } = this.broker.shared;
66
- const owner = Buffer.from(this.broker.nodeID, 'hex');
67
- this._limit = (0, p_limit_1.default)(1);
68
- this._updatePeers = (0, lodash_debounce_1.default)(() => {
69
- this._limit(() => {
70
- this._limit.clearQueue();
71
- const peers = peerMap
72
- .peers
73
- .filter(p => p.owner.equals(owner))
74
- .map(peerMap.encode);
75
- return this.broker.broadcast('discovery.update', { peers }).catch(() => { });
76
- }).catch(() => { });
77
- }, 1000);
78
- this._discoveryUpdate = (0, lodash_debounce_1.default)(() => {
79
- this.broker.broadcastLocal('$broker.discovery-update');
80
- }, 1000);
81
- },
82
- async started() {
83
- const { peerMap } = this.broker.shared;
84
- peerMap.on('peer-added', this._updatePeers);
85
- peerMap.on('peer-deleted', this._updatePeers);
86
- },
87
- async stopped() {
88
- const { peerMap } = this.broker.shared;
89
- peerMap.off('peer-added', this._updatePeers);
90
- peerMap.off('peer-deleted', this._updatePeers);
91
- }
92
- };
93
- //# sourceMappingURL=discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/services/discovery.js"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,sEAAuC;AACvC,sDAA6B;AAEhB,QAAA,gBAAgB,GAAG;IAC9B,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE;QACN,oBAAoB,CAAE,GAAG;YACvB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAEvC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,iBAAiB;YACf,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,OAAO;iBAClB,KAAK;iBACL,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAClC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAEvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtB,OAAO;aACR;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,kBAAkB,CAAE,GAAG;YACrB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAE7B,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,OAAO;aACR;YAED,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACtF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;KACF;IACD,OAAO,EAAE;QACP,KAAK,CAAE,GAAG;YACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAEvC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAEhC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,EAAE;gBACT,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;aAClC;YAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,CAAE,GAAG;YACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAExC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAEhC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,EAAE;gBACT,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;aAClC;YAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;KACF;IACD,OAAO;QACL,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAErD,IAAI,CAAC,MAAM,GAAG,IAAA,iBAAM,EAAC,CAAC,CAAC,CAAC;QAExB,IAAI,CAAC,YAAY,GAAG,IAAA,yBAAQ,EAAC,GAAG,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,OAAO;qBAClB,KAAK;qBACL,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBAClC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACvB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,IAAI,CAAC,gBAAgB,GAAG,IAAA,yBAAQ,EAAC,GAAG,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAC;QACzD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IACD,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACvC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IACD,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC;CACF,CAAC"}
@@ -1,6 +0,0 @@
1
- export * from './discovery';
2
- export * from './network';
3
- export * from './presence';
4
- export * from './status';
5
- export * from './web';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC"}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2021 DXOS.org
4
- //
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
- };
19
- Object.defineProperty(exports, "__esModule", { value: true });
20
- __exportStar(require("./discovery"), exports);
21
- __exportStar(require("./network"), exports);
22
- __exportStar(require("./presence"), exports);
23
- __exportStar(require("./status"), exports);
24
- __exportStar(require("./web"), exports);
25
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,8CAA4B;AAC5B,4CAA0B;AAC1B,6CAA2B;AAC3B,2CAAyB;AACzB,wCAAsB"}
@@ -1,24 +0,0 @@
1
- /// <reference types="node" />
2
- import { EventEmitter } from 'events';
3
- import Graph from 'graphology';
4
- import debounce from 'lodash.debounce';
5
- export interface Connection {
6
- key: string;
7
- target: string;
8
- }
9
- export declare class Network extends EventEmitter {
10
- private readonly _owner;
11
- private readonly _graph;
12
- private readonly _limit;
13
- private readonly _lastUpdate;
14
- readonly publish: ReturnType<typeof debounce>;
15
- constructor(owner: string, publish: ReturnType<typeof debounce>);
16
- get graph(): Graph;
17
- getConnections(id?: string): Connection[];
18
- update(id: string, timestamp: number, connections?: Connection[]): void;
19
- addPeer(id: string): void;
20
- deletePeer(id: string): void;
21
- addConnection(initiator: any, sessionKey: string, peerId: string): void;
22
- deleteConnection(peer1: string, peer2: string): void;
23
- }
24
- //# sourceMappingURL=network.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../src/services/network.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAOvC,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,OAAQ,SAAQ,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAM;IAClC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;gBAEjC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC;IAoBhE,IAAI,KAAK,UAER;IAED,cAAc,CAAE,EAAE,SAAc;IAehC,MAAM,CAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAE,UAAU,EAAO;IA+BrE,OAAO,CAAE,EAAE,EAAE,MAAM;IAMnB,UAAU,CAAE,EAAE,EAAE,MAAM;IAMtB,aAAa,CAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAcjE,gBAAgB,CAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAO/C"}
@@ -1,105 +0,0 @@
1
- "use strict";
2
- //
3
- // Copyright 2021 DXOS.org
4
- //
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.Network = void 0;
10
- const events_1 = require("events");
11
- const graphology_1 = __importDefault(require("graphology"));
12
- const lodash_debounce_1 = __importDefault(require("lodash.debounce"));
13
- const monotonic_timestamp_1 = __importDefault(require("monotonic-timestamp"));
14
- const p_limit_1 = __importDefault(require("p-limit"));
15
- const tiny_lru_1 = __importDefault(require("tiny-lru"));
16
- const MAX_WAIT = 2 * 1000;
17
- class Network extends events_1.EventEmitter {
18
- constructor(owner, publish) {
19
- super();
20
- this._owner = owner;
21
- this._graph = new graphology_1.default({ multi: true, type: 'undirected' });
22
- this._graph.addNode(owner);
23
- this._limit = (0, p_limit_1.default)(1);
24
- this._lastUpdate = (0, tiny_lru_1.default)(1000);
25
- this.publish = (0, lodash_debounce_1.default)(() => {
26
- void this._limit(() => {
27
- this._limit.clearQueue();
28
- return publish({ timestamp: (0, monotonic_timestamp_1.default)(), connections: this.getConnections() });
29
- });
30
- }, MAX_WAIT);
31
- const onChange = (0, lodash_debounce_1.default)(() => this.emit('change', this._graph), MAX_WAIT);
32
- ['nodeAdded', 'edgeAdded', 'nodeDropped', 'edgeDropped'].forEach(ev => this._graph.on(ev, onChange));
33
- }
34
- get graph() {
35
- return this._graph;
36
- }
37
- getConnections(id = this._owner) {
38
- const connections = [];
39
- if (!this._graph.hasNode(id)) {
40
- return [];
41
- }
42
- this._graph.forEachEdge(id, (key, attr, source, target) => {
43
- if (source === id) {
44
- connections.push({ key, target });
45
- }
46
- });
47
- return connections;
48
- }
49
- update(id, timestamp, connections = []) {
50
- // ignore old messages
51
- const lastTimestamp = this._lastUpdate.get(id) || 0;
52
- if (lastTimestamp > timestamp) {
53
- return;
54
- }
55
- this._lastUpdate.set(id, timestamp);
56
- if (!this._graph.hasNode(id)) {
57
- this._graph.addNode(id);
58
- }
59
- this._graph.forEachEdge(id, (key, attr, source) => {
60
- if (source === id) {
61
- this._graph.dropEdge(key);
62
- }
63
- });
64
- this._graph.import({
65
- edges: connections.map(conn => ({
66
- key: conn.key,
67
- source: id,
68
- target: conn.target,
69
- undirected: true
70
- })),
71
- nodes: Array.from(new Set(connections.reduce((acc, { key, target }) => [...acc, key, target], [])).values()).map(key => ({ key }))
72
- });
73
- }
74
- addPeer(id) {
75
- if (!this._graph.hasNode(id)) {
76
- this._graph.addNode(id);
77
- }
78
- }
79
- deletePeer(id) {
80
- if (this._graph.hasNode(id)) {
81
- this._graph.dropNode(id);
82
- }
83
- }
84
- addConnection(initiator, sessionKey, peerId) {
85
- if (!this._graph.hasNode(peerId)) {
86
- this._graph.addNode(peerId);
87
- }
88
- if (initiator) {
89
- this._graph.addEdgeWithKey(sessionKey, this._owner, peerId);
90
- }
91
- else {
92
- this._graph.addEdgeWithKey(sessionKey, peerId, this._owner);
93
- }
94
- this.publish();
95
- }
96
- deleteConnection(peer1, peer2) {
97
- if (!this._graph.hasEdge(peer1, peer2)) {
98
- return;
99
- }
100
- this._graph.dropEdge(peer1, peer2);
101
- this.publish();
102
- }
103
- }
104
- exports.Network = Network;
105
- //# sourceMappingURL=network.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/services/network.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- export namespace PresenceService {
2
- const name: string;
3
- const events: {
4
- '$node.disconnected'(ctx: any): void;
5
- '$node.connected'(ctx: any): void;
6
- 'presence.update'(ctx: any): any;
7
- };
8
- namespace actions {
9
- function network(): any;
10
- function network(): any;
11
- }
12
- function created(): void;
13
- function created(): void;
14
- function started(): Promise<void>;
15
- function started(): Promise<void>;
16
- }
17
- //# sourceMappingURL=presence.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../../src/services/presence.js"],"names":[],"mappings":";;;;;;;;QA4BI,wBAEC;QAFD,wBAEC;;IAEH,yBAwCC;IAxCD,yBAwCC;IACD,kCAEC;IAFD,kCAEC"}