ns-auth-sdk 1.14.0 → 1.14.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 (153) hide show
  1. package/dist/{cjs-CSUAVztq.cjs → browser-index.cjs} +5476 -296
  2. package/dist/browser-index.cjs.map +1 -0
  3. package/dist/browser-index.d.cts +1998 -0
  4. package/dist/browser-index.d.cts.map +1 -0
  5. package/dist/browser-index.d.mts +1998 -0
  6. package/dist/browser-index.d.mts.map +1 -0
  7. package/dist/{cjs-sm5h7qxv.mjs → browser-index.mjs} +5169 -69
  8. package/dist/browser-index.mjs.map +1 -0
  9. package/dist/{group-coordination-BlFpBVpn.mjs → group-coordination-BV6PKlKp.mjs} +1 -1
  10. package/dist/{group-coordination-BlFpBVpn.mjs.map → group-coordination-BV6PKlKp.mjs.map} +1 -1
  11. package/dist/{group-coordination-ImuoJEoy.mjs → group-coordination-BytkmY9j.mjs} +1 -1
  12. package/dist/{group-coordination-LGIyipaX.cjs → group-coordination-DL39hJ3R.cjs} +1 -1
  13. package/dist/{group-coordination-LGIyipaX.cjs.map → group-coordination-DL39hJ3R.cjs.map} +1 -1
  14. package/dist/{group-coordination-Cf18OjZt.cjs → group-coordination-DLban6a7.cjs} +1 -1
  15. package/dist/index.cjs +8899 -41
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts.map +1 -1
  18. package/dist/index.mjs +9072 -213
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/{prf-handler-D3EqUNWe.cjs → prf-handler-BNd7gmXJ.cjs} +1 -1
  21. package/dist/{prf-handler-D3EqUNWe.cjs.map → prf-handler-BNd7gmXJ.cjs.map} +1 -1
  22. package/dist/prf-handler-CRMgzJG2.cjs +3 -0
  23. package/dist/{prf-handler-Dly_WZGn.mjs → prf-handler-DG99ZkS2.mjs} +1 -1
  24. package/dist/{prf-handler-Db8CsoIP.mjs → prf-handler-Dj2WTO9i.mjs} +1 -1
  25. package/dist/{prf-handler-Db8CsoIP.mjs.map → prf-handler-Dj2WTO9i.mjs.map} +1 -1
  26. package/dist/zkm.service-Bv88tVS5.mjs +3 -0
  27. package/dist/zkm.service-D2BZ_aqA.cjs +3 -0
  28. package/dist/{zkm.service-DfSPbuOl.cjs → zkm.service-DX06sSfB.cjs} +1 -1
  29. package/dist/{zkm.service-DfSPbuOl.cjs.map → zkm.service-DX06sSfB.cjs.map} +1 -1
  30. package/dist/{zkm.service-B24N_0FB.mjs → zkm.service-j0HlN7Oq.mjs} +1 -1
  31. package/dist/{zkm.service-B24N_0FB.mjs.map → zkm.service-j0HlN7Oq.mjs.map} +1 -1
  32. package/package.json +19 -6
  33. package/dist/_esm-C7FRLTj2.cjs +0 -9030
  34. package/dist/_esm-C7FRLTj2.cjs.map +0 -1
  35. package/dist/_esm-D_oMW5T5.mjs +0 -9028
  36. package/dist/_esm-D_oMW5T5.mjs.map +0 -1
  37. package/dist/base64-js-B8y7dH5k.mjs +0 -93
  38. package/dist/base64-js-B8y7dH5k.mjs.map +0 -1
  39. package/dist/base64-js-Tm-kCeud.cjs +0 -98
  40. package/dist/base64-js-Tm-kCeud.cjs.map +0 -1
  41. package/dist/ccip-157tdxqP.cjs +0 -7947
  42. package/dist/ccip-157tdxqP.cjs.map +0 -1
  43. package/dist/ccip-BEMMdVyd.cjs +0 -4
  44. package/dist/ccip-BSmCdJ3K.mjs +0 -3
  45. package/dist/ccip-okqXkslP.mjs +0 -6567
  46. package/dist/ccip-okqXkslP.mjs.map +0 -1
  47. package/dist/chains-CTeD2UcS.mjs +0 -33
  48. package/dist/chains-CTeD2UcS.mjs.map +0 -1
  49. package/dist/chains-Du-lv_5i.cjs +0 -33
  50. package/dist/chains-Du-lv_5i.cjs.map +0 -1
  51. package/dist/chunk-Bnu9O96Y.cjs +0 -60
  52. package/dist/chunk-CVYhg9ik.mjs +0 -45
  53. package/dist/cjs-CSUAVztq.cjs.map +0 -1
  54. package/dist/cjs-sm5h7qxv.mjs.map +0 -1
  55. package/dist/defineChain-7QG67hYU.cjs +0 -30
  56. package/dist/defineChain-7QG67hYU.cjs.map +0 -1
  57. package/dist/defineChain-DBem8ZQY.mjs +0 -24
  58. package/dist/defineChain-DBem8ZQY.mjs.map +0 -1
  59. package/dist/dist-BPmSxkxc.cjs +0 -10676
  60. package/dist/dist-BPmSxkxc.cjs.map +0 -1
  61. package/dist/dist-BSjH4t6s.cjs +0 -12932
  62. package/dist/dist-BSjH4t6s.cjs.map +0 -1
  63. package/dist/dist-C-KjTK4Q.cjs +0 -447
  64. package/dist/dist-C-KjTK4Q.cjs.map +0 -1
  65. package/dist/dist-C2h97xM-.mjs +0 -355
  66. package/dist/dist-C2h97xM-.mjs.map +0 -1
  67. package/dist/dist-CT7grDWb.mjs +0 -12920
  68. package/dist/dist-CT7grDWb.mjs.map +0 -1
  69. package/dist/dist-D7fRmK6G.mjs +0 -10632
  70. package/dist/dist-D7fRmK6G.mjs.map +0 -1
  71. package/dist/dist-DlmcyFmM.mjs +0 -16951
  72. package/dist/dist-DlmcyFmM.mjs.map +0 -1
  73. package/dist/dist-O0uZr5OF.cjs +0 -17122
  74. package/dist/dist-O0uZr5OF.cjs.map +0 -1
  75. package/dist/echo-BB-JgAYZ.cjs +0 -339
  76. package/dist/echo-BB-JgAYZ.cjs.map +0 -1
  77. package/dist/echo-Bwy4_Cvh.mjs +0 -316
  78. package/dist/echo-Bwy4_Cvh.mjs.map +0 -1
  79. package/dist/echo-D6X2IuNW.cjs +0 -9
  80. package/dist/echo-DvfG_heb.mjs +0 -8
  81. package/dist/esm-BcHKCX5i.mjs +0 -569
  82. package/dist/esm-BcHKCX5i.mjs.map +0 -1
  83. package/dist/esm-Bh_YwFIz.cjs +0 -599
  84. package/dist/esm-Bh_YwFIz.cjs.map +0 -1
  85. package/dist/esm-C0XO9TQm.cjs +0 -30449
  86. package/dist/esm-C0XO9TQm.cjs.map +0 -1
  87. package/dist/esm-vMUVj9k4.mjs +0 -30440
  88. package/dist/esm-vMUVj9k4.mjs.map +0 -1
  89. package/dist/keyset-CKMQXvsb.mjs +0 -172
  90. package/dist/keyset-CKMQXvsb.mjs.map +0 -1
  91. package/dist/keyset-Cxdgu110.cjs +0 -237
  92. package/dist/keyset-Cxdgu110.cjs.map +0 -1
  93. package/dist/keyset-DLxpGhdu.cjs +0 -6
  94. package/dist/keyset-IKjlhvqF.mjs +0 -4
  95. package/dist/node-3EUJ4ga9.cjs +0 -9
  96. package/dist/node-C2UpE11T.cjs +0 -444
  97. package/dist/node-C2UpE11T.cjs.map +0 -1
  98. package/dist/node-CHdpTQdN.mjs +0 -8679
  99. package/dist/node-CHdpTQdN.mjs.map +0 -1
  100. package/dist/node-DQt1CVGl.mjs +0 -6
  101. package/dist/node-Dy8ww1LG.cjs +0 -8680
  102. package/dist/node-Dy8ww1LG.cjs.map +0 -1
  103. package/dist/node-IX55IH6z.mjs +0 -397
  104. package/dist/node-IX55IH6z.mjs.map +0 -1
  105. package/dist/nostr-BTOpBN_5.cjs +0 -11
  106. package/dist/nostr-D4E52XRU.mjs +0 -224
  107. package/dist/nostr-D4E52XRU.mjs.map +0 -1
  108. package/dist/nostr-Hv2tsnuI.cjs +0 -272
  109. package/dist/nostr-Hv2tsnuI.cjs.map +0 -1
  110. package/dist/nostr-ZwJe_DlZ.mjs +0 -4
  111. package/dist/pako.esm-DTVnlCJh.cjs +0 -3856
  112. package/dist/pako.esm-DTVnlCJh.cjs.map +0 -1
  113. package/dist/pako.esm-ORhkEHM2.mjs +0 -3838
  114. package/dist/pako.esm-ORhkEHM2.mjs.map +0 -1
  115. package/dist/peer-B9g3OQ5D.cjs +0 -18
  116. package/dist/peer-CptDj7zu.mjs +0 -745
  117. package/dist/peer-CptDj7zu.mjs.map +0 -1
  118. package/dist/peer-CtqL0yiE.mjs +0 -9
  119. package/dist/peer-XrPL0O6z.cjs +0 -822
  120. package/dist/peer-XrPL0O6z.cjs.map +0 -1
  121. package/dist/ping-BXKREIdI.mjs +0 -7
  122. package/dist/ping-BtVhKocl.cjs +0 -379
  123. package/dist/ping-BtVhKocl.cjs.map +0 -1
  124. package/dist/ping-D5fpMhGC.cjs +0 -11
  125. package/dist/ping-DOD50kW_.mjs +0 -332
  126. package/dist/ping-DOD50kW_.mjs.map +0 -1
  127. package/dist/policy-8HcjulLD.cjs +0 -293
  128. package/dist/policy-8HcjulLD.cjs.map +0 -1
  129. package/dist/policy-BA6MEOBY.mjs +0 -5
  130. package/dist/policy-BFNdXvmM.cjs +0 -11
  131. package/dist/policy-D_nFHHjo.mjs +0 -228
  132. package/dist/policy-D_nFHHjo.mjs.map +0 -1
  133. package/dist/prf-handler-BNiyCQMt.cjs +0 -3
  134. package/dist/src-CVfTUJQl.mjs +0 -822
  135. package/dist/src-CVfTUJQl.mjs.map +0 -1
  136. package/dist/src-D5S86Xpf.cjs +0 -827
  137. package/dist/src-D5S86Xpf.cjs.map +0 -1
  138. package/dist/types-B-TLIS13.cjs +0 -212
  139. package/dist/types-B-TLIS13.cjs.map +0 -1
  140. package/dist/types-CTm_FHYD.mjs +0 -111
  141. package/dist/types-CTm_FHYD.mjs.map +0 -1
  142. package/dist/validation-1xwWVXqE.mjs +0 -3
  143. package/dist/validation-DnpurN79.cjs +0 -405
  144. package/dist/validation-DnpurN79.cjs.map +0 -1
  145. package/dist/validation-IsAUvsvy.mjs +0 -334
  146. package/dist/validation-IsAUvsvy.mjs.map +0 -1
  147. package/dist/validation-yCvZCqIs.cjs +0 -6
  148. package/dist/wrapper-C5NpyacC.cjs +0 -3552
  149. package/dist/wrapper-C5NpyacC.cjs.map +0 -1
  150. package/dist/wrapper-CHq_CV4J.mjs +0 -3552
  151. package/dist/wrapper-CHq_CV4J.mjs.map +0 -1
  152. package/dist/zkm.service-BrXyI4BS.mjs +0 -3
  153. package/dist/zkm.service-BvQ01wSH.cjs +0 -3
@@ -1,332 +0,0 @@
1
- import { l as NodeError } from "./types-CTm_FHYD.mjs";
2
- import { a as createBifrostNode, n as closeNode, r as connectNode } from "./node-IX55IH6z.mjs";
3
-
4
- //#region node_modules/@frostr/igloo-core/dist/ping.js
5
- /**
6
- * Default relay URLs for ping functionality
7
- */
8
- const DEFAULT_PING_RELAYS = ["wss://relay.damus.io", "wss://relay.primal.net"];
9
- /**
10
- * Default ping timeout in milliseconds
11
- */
12
- const DEFAULT_PING_TIMEOUT = 5e3;
13
- /**
14
- * Default ping interval for monitoring in milliseconds
15
- */
16
- const DEFAULT_PING_INTERVAL = 3e4;
17
- /**
18
- * Ping a specific peer using bifrost ping protocol
19
- */
20
- async function pingPeer(node, peerPubkey, options = {}) {
21
- const { timeout = DEFAULT_PING_TIMEOUT, eventConfig = { enableLogging: false } } = options;
22
- return new Promise((resolve) => {
23
- let isResolved = false;
24
- let timeoutId = null;
25
- const startTime = Date.now();
26
- let onPingResponse = null;
27
- let onPingError = null;
28
- const safeResolve = (result) => {
29
- if (!isResolved) {
30
- isResolved = true;
31
- if (timeoutId) {
32
- clearTimeout(timeoutId);
33
- timeoutId = null;
34
- }
35
- if (onPingResponse) {
36
- const nodeAny = node;
37
- if (typeof nodeAny.off === "function") nodeAny.off("/ping/sender/ret", onPingResponse);
38
- else if (typeof nodeAny.removeListener === "function") nodeAny.removeListener("/ping/sender/ret", onPingResponse);
39
- onPingResponse = null;
40
- }
41
- if (onPingError) {
42
- const nodeAny = node;
43
- if (typeof nodeAny.off === "function") nodeAny.off("/ping/sender/err", onPingError);
44
- else if (typeof nodeAny.removeListener === "function") nodeAny.removeListener("/ping/sender/err", onPingError);
45
- onPingError = null;
46
- }
47
- resolve(result);
48
- }
49
- };
50
- const customLogger = (level, message, data) => {
51
- const prefix = `[pingPeer:${peerPubkey.slice(0, 8)}]`;
52
- if (eventConfig.customLogger) eventConfig.customLogger(level, `${prefix} ${message}`, data);
53
- else if (eventConfig.enableLogging) console.log(`${prefix} [${level.toUpperCase()}] ${message}`, data || "");
54
- };
55
- timeoutId = setTimeout(() => {
56
- safeResolve({
57
- success: false,
58
- pubkey: peerPubkey,
59
- error: `Ping timeout after ${timeout}ms`,
60
- timestamp: /* @__PURE__ */ new Date()
61
- });
62
- }, timeout);
63
- try {
64
- onPingResponse = (peerData) => {
65
- if (peerData && peerData.pubkey === peerPubkey) {
66
- const latency = Date.now() - startTime;
67
- customLogger("info", `Ping successful, latency: ${latency}ms`);
68
- safeResolve({
69
- success: true,
70
- pubkey: peerPubkey,
71
- latency,
72
- policy: peerData.policy,
73
- timestamp: /* @__PURE__ */ new Date()
74
- });
75
- }
76
- };
77
- onPingError = (reason, msg) => {
78
- customLogger("error", `Ping failed: ${reason}`);
79
- safeResolve({
80
- success: false,
81
- pubkey: peerPubkey,
82
- error: reason,
83
- timestamp: /* @__PURE__ */ new Date()
84
- });
85
- };
86
- node.on("/ping/sender/ret", onPingResponse);
87
- node.on("/ping/sender/err", onPingError);
88
- node.req.ping(peerPubkey).then((result) => {
89
- if (result.ok) customLogger("debug", "Ping request sent successfully");
90
- else safeResolve({
91
- success: false,
92
- pubkey: peerPubkey,
93
- error: result.err,
94
- timestamp: /* @__PURE__ */ new Date()
95
- });
96
- }).catch((error) => {
97
- customLogger("error", `Ping request failed: ${error.message}`);
98
- safeResolve({
99
- success: false,
100
- pubkey: peerPubkey,
101
- error: error.message,
102
- timestamp: /* @__PURE__ */ new Date()
103
- });
104
- });
105
- } catch (error) {
106
- customLogger("error", `Ping setup failed: ${error.message}`);
107
- safeResolve({
108
- success: false,
109
- pubkey: peerPubkey,
110
- error: error.message,
111
- timestamp: /* @__PURE__ */ new Date()
112
- });
113
- }
114
- });
115
- }
116
- /**
117
- * Ping multiple peers concurrently
118
- */
119
- async function pingPeers(node, peerPubkeys, options = {}) {
120
- const { timeout = DEFAULT_PING_TIMEOUT, eventConfig = { enableLogging: false } } = options;
121
- const customLogger = (level, message, data) => {
122
- const prefix = "[pingPeers]";
123
- if (eventConfig.customLogger) eventConfig.customLogger(level, `${prefix} ${message}`, data);
124
- else if (eventConfig.enableLogging) console.log(`${prefix} [${level.toUpperCase()}] ${message}`, data || "");
125
- };
126
- customLogger("info", `Pinging ${peerPubkeys.length} peers`);
127
- try {
128
- const pingPromises = peerPubkeys.map((pubkey) => pingPeer(node, pubkey, {
129
- timeout,
130
- eventConfig
131
- }));
132
- const results = await Promise.all(pingPromises);
133
- const successCount = results.filter((r) => r.success).length;
134
- customLogger("info", `Ping completed: ${successCount}/${results.length} peers responded`);
135
- return results;
136
- } catch (error) {
137
- customLogger("error", `Ping operation failed: ${error.message}`);
138
- return peerPubkeys.map((pubkey) => ({
139
- success: false,
140
- pubkey,
141
- error: error.message,
142
- timestamp: /* @__PURE__ */ new Date()
143
- }));
144
- }
145
- }
146
- /**
147
- * Create a ping monitor for continuous peer monitoring
148
- */
149
- function createPingMonitor(node, peerPubkeys, config = {}) {
150
- const { interval = DEFAULT_PING_INTERVAL, timeout = DEFAULT_PING_TIMEOUT, onPingResult, onError, relays = DEFAULT_PING_RELAYS, eventConfig = { enableLogging: false } } = config;
151
- let intervalId = null;
152
- let isRunning = false;
153
- const customLogger = (level, message, data) => {
154
- const prefix = "[PingMonitor]";
155
- if (eventConfig.customLogger) eventConfig.customLogger(level, `${prefix} ${message}`, data);
156
- else if (eventConfig.enableLogging) console.log(`${prefix} [${level.toUpperCase()}] ${message}`, data || "");
157
- };
158
- const ping = async () => {
159
- try {
160
- customLogger("debug", `Pinging ${peerPubkeys.length} peers`);
161
- const results = await pingPeers(node, peerPubkeys, {
162
- timeout,
163
- eventConfig
164
- });
165
- if (onPingResult) results.forEach((result) => {
166
- try {
167
- onPingResult(result);
168
- } catch (error) {
169
- customLogger("error", `Error in ping result callback: ${error.message}`);
170
- }
171
- });
172
- return results;
173
- } catch (error) {
174
- customLogger("error", `Ping monitor error: ${error.message}`);
175
- if (onError) onError(error, "ping");
176
- return [];
177
- }
178
- };
179
- const start = () => {
180
- if (isRunning) {
181
- customLogger("warn", "Ping monitor is already running");
182
- return;
183
- }
184
- customLogger("info", `Starting ping monitor (interval: ${interval}ms, timeout: ${timeout}ms)`);
185
- isRunning = true;
186
- ping().catch((error) => {
187
- customLogger("error", `Initial ping failed: ${error.message}`);
188
- });
189
- intervalId = setInterval(() => {
190
- if (isRunning) ping().catch((error) => {
191
- customLogger("error", `Scheduled ping failed: ${error.message}`);
192
- });
193
- }, interval);
194
- };
195
- const stop = () => {
196
- if (!isRunning) {
197
- customLogger("warn", "Ping monitor is not running");
198
- return;
199
- }
200
- customLogger("info", "Stopping ping monitor");
201
- isRunning = false;
202
- if (intervalId) {
203
- clearInterval(intervalId);
204
- intervalId = null;
205
- }
206
- };
207
- const cleanup = () => {
208
- stop();
209
- customLogger("debug", "Ping monitor cleaned up");
210
- };
211
- return {
212
- start,
213
- stop,
214
- get isRunning() {
215
- return isRunning;
216
- },
217
- ping,
218
- cleanup
219
- };
220
- }
221
- /**
222
- * Ping peers from credentials (convenience function)
223
- */
224
- async function pingPeersFromCredentials(groupCredential, shareCredential, options = {}) {
225
- const { relays = DEFAULT_PING_RELAYS, timeout = DEFAULT_PING_TIMEOUT, eventConfig = { enableLogging: false } } = options;
226
- let node = null;
227
- try {
228
- node = createBifrostNode({
229
- group: groupCredential,
230
- share: shareCredential,
231
- relays
232
- }, eventConfig);
233
- await connectNode(node);
234
- const { extractPeersFromCredentials } = await import("./peer-CtqL0yiE.mjs");
235
- const peerPubkeys = extractPeersFromCredentials(groupCredential, shareCredential);
236
- return await pingPeers(node, peerPubkeys, {
237
- timeout,
238
- eventConfig
239
- });
240
- } catch (error) {
241
- throw new NodeError(`Failed to ping peers: ${error.message}`, { error });
242
- } finally {
243
- if (node) try {
244
- closeNode(node);
245
- } catch (error) {
246
- console.warn("[pingPeersFromCredentials] Error during cleanup:", error);
247
- }
248
- }
249
- }
250
- /**
251
- * Create a comprehensive ping test for network diagnostics
252
- */
253
- async function runPingDiagnostics(node, peerPubkeys, options = {}) {
254
- const { rounds = 3, timeout = DEFAULT_PING_TIMEOUT, interval = 1e3, eventConfig = { enableLogging: false } } = options;
255
- const customLogger = (level, message, data) => {
256
- const prefix = "[PingDiagnostics]";
257
- if (eventConfig.customLogger) eventConfig.customLogger(level, `${prefix} ${message}`, data);
258
- else if (eventConfig.enableLogging) console.log(`${prefix} [${level.toUpperCase()}] ${message}`, data || "");
259
- };
260
- customLogger("info", `Starting ping diagnostics: ${rounds} rounds, ${peerPubkeys.length} peers`);
261
- const allRounds = [];
262
- const peerStats = {};
263
- peerPubkeys.forEach((pubkey) => {
264
- peerStats[pubkey] = {
265
- successCount: 0,
266
- totalAttempts: 0,
267
- latencies: [],
268
- averageLatency: 0,
269
- minLatency: Infinity,
270
- maxLatency: 0,
271
- successRate: 0
272
- };
273
- });
274
- for (let round = 0; round < rounds; round++) {
275
- customLogger("info", `Running ping round ${round + 1}/${rounds}`);
276
- const results = await pingPeers(node, peerPubkeys, {
277
- timeout,
278
- eventConfig
279
- });
280
- allRounds.push(results);
281
- results.forEach((result) => {
282
- const stats = peerStats[result.pubkey];
283
- stats.totalAttempts++;
284
- if (result.success && result.latency !== void 0) {
285
- stats.successCount++;
286
- stats.latencies.push(result.latency);
287
- stats.minLatency = Math.min(stats.minLatency, result.latency);
288
- stats.maxLatency = Math.max(stats.maxLatency, result.latency);
289
- }
290
- });
291
- if (round < rounds - 1) await new Promise((resolve) => setTimeout(resolve, interval));
292
- }
293
- let totalLatencies = [];
294
- let totalSuccesses = 0;
295
- let totalAttempts = 0;
296
- Object.keys(peerStats).forEach((pubkey) => {
297
- const stats = peerStats[pubkey];
298
- stats.averageLatency = stats.latencies.length > 0 ? stats.latencies.reduce((a, b) => a + b, 0) / stats.latencies.length : 0;
299
- stats.successRate = stats.totalAttempts > 0 ? stats.successCount / stats.totalAttempts * 100 : 0;
300
- if (stats.minLatency === Infinity) stats.minLatency = 0;
301
- totalLatencies.push(...stats.latencies);
302
- totalSuccesses += stats.successCount;
303
- totalAttempts += stats.totalAttempts;
304
- delete stats.latencies;
305
- });
306
- const averageLatency = totalLatencies.length > 0 ? totalLatencies.reduce((a, b) => a + b, 0) / totalLatencies.length : 0;
307
- const successRate = totalAttempts > 0 ? totalSuccesses / totalAttempts * 100 : 0;
308
- const peerLatencies = Object.entries(peerStats).filter(([_, stats]) => stats.averageLatency > 0).map(([pubkey, stats]) => ({
309
- pubkey,
310
- latency: stats.averageLatency
311
- }));
312
- const fastestPeer = peerLatencies.length > 0 ? peerLatencies.reduce((min, peer) => peer.latency < min.latency ? peer : min).pubkey : void 0;
313
- const slowestPeer = peerLatencies.length > 0 ? peerLatencies.reduce((max, peer) => peer.latency > max.latency ? peer : max).pubkey : void 0;
314
- const summary = {
315
- totalRounds: rounds,
316
- totalPeers: peerPubkeys.length,
317
- averageLatency: Math.round(averageLatency * 100) / 100,
318
- successRate: Math.round(successRate * 100) / 100,
319
- fastestPeer,
320
- slowestPeer
321
- };
322
- customLogger("info", `Ping diagnostics completed`, summary);
323
- return {
324
- summary,
325
- rounds: allRounds,
326
- peerStats
327
- };
328
- }
329
-
330
- //#endregion
331
- export { pingPeer as a, runPingDiagnostics as c, createPingMonitor as i, DEFAULT_PING_RELAYS as n, pingPeers as o, DEFAULT_PING_TIMEOUT as r, pingPeersFromCredentials as s, DEFAULT_PING_INTERVAL as t };
332
- //# sourceMappingURL=ping-DOD50kW_.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ping-DOD50kW_.mjs","names":[],"sources":["../node_modules/@frostr/igloo-core/dist/ping.js"],"sourcesContent":["import { createBifrostNode, connectNode, closeNode } from './node.js';\nimport { NodeError } from './types.js';\n/**\n * Default relay URLs for ping functionality\n */\nexport const DEFAULT_PING_RELAYS = [\n \"wss://relay.damus.io\",\n \"wss://relay.primal.net\"\n];\n/**\n * Default ping timeout in milliseconds\n */\nexport const DEFAULT_PING_TIMEOUT = 5000;\n/**\n * Default ping interval for monitoring in milliseconds\n */\nexport const DEFAULT_PING_INTERVAL = 30000;\n/**\n * Ping a specific peer using bifrost ping protocol\n */\nexport async function pingPeer(node, peerPubkey, options = {}) {\n const { timeout = DEFAULT_PING_TIMEOUT, eventConfig = { enableLogging: false } } = options;\n return new Promise((resolve) => {\n let isResolved = false;\n let timeoutId = null;\n const startTime = Date.now();\n let onPingResponse = null;\n let onPingError = null;\n const safeResolve = (result) => {\n if (!isResolved) {\n isResolved = true;\n // Clear timeout\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n // Remove event listeners to prevent memory leaks\n if (onPingResponse) {\n const nodeAny = node;\n if (typeof nodeAny.off === 'function') {\n nodeAny.off('/ping/sender/ret', onPingResponse);\n }\n else if (typeof nodeAny.removeListener === 'function') {\n nodeAny.removeListener('/ping/sender/ret', onPingResponse);\n }\n onPingResponse = null;\n }\n if (onPingError) {\n const nodeAny = node;\n if (typeof nodeAny.off === 'function') {\n nodeAny.off('/ping/sender/err', onPingError);\n }\n else if (typeof nodeAny.removeListener === 'function') {\n nodeAny.removeListener('/ping/sender/err', onPingError);\n }\n onPingError = null;\n }\n resolve(result);\n }\n };\n const customLogger = (level, message, data) => {\n const prefix = `[pingPeer:${peerPubkey.slice(0, 8)}]`;\n if (eventConfig.customLogger) {\n eventConfig.customLogger(level, `${prefix} ${message}`, data);\n }\n else if (eventConfig.enableLogging) {\n console.log(`${prefix} [${level.toUpperCase()}] ${message}`, data || '');\n }\n };\n // Set up timeout\n timeoutId = setTimeout(() => {\n safeResolve({\n success: false,\n pubkey: peerPubkey,\n error: `Ping timeout after ${timeout}ms`,\n timestamp: new Date()\n });\n }, timeout);\n try {\n // Set up event listeners for ping response\n onPingResponse = (peerData) => {\n if (peerData && peerData.pubkey === peerPubkey) {\n const latency = Date.now() - startTime;\n customLogger('info', `Ping successful, latency: ${latency}ms`);\n safeResolve({\n success: true,\n pubkey: peerPubkey,\n latency,\n policy: peerData.policy,\n timestamp: new Date()\n });\n }\n };\n onPingError = (reason, msg) => {\n customLogger('error', `Ping failed: ${reason}`);\n safeResolve({\n success: false,\n pubkey: peerPubkey,\n error: reason,\n timestamp: new Date()\n });\n };\n // Attach event listeners\n node.on('/ping/sender/ret', onPingResponse);\n node.on('/ping/sender/err', onPingError);\n // Send ping request\n node.req.ping(peerPubkey).then(result => {\n if (result.ok) {\n // Success is handled by the event listener\n customLogger('debug', 'Ping request sent successfully');\n }\n else {\n safeResolve({\n success: false,\n pubkey: peerPubkey,\n error: result.err,\n timestamp: new Date()\n });\n }\n }).catch(error => {\n customLogger('error', `Ping request failed: ${error.message}`);\n safeResolve({\n success: false,\n pubkey: peerPubkey,\n error: error.message,\n timestamp: new Date()\n });\n });\n }\n catch (error) {\n customLogger('error', `Ping setup failed: ${error.message}`);\n safeResolve({\n success: false,\n pubkey: peerPubkey,\n error: error.message,\n timestamp: new Date()\n });\n }\n });\n}\n/**\n * Ping multiple peers concurrently\n */\nexport async function pingPeers(node, peerPubkeys, options = {}) {\n const { timeout = DEFAULT_PING_TIMEOUT, eventConfig = { enableLogging: false } } = options;\n const customLogger = (level, message, data) => {\n const prefix = '[pingPeers]';\n if (eventConfig.customLogger) {\n eventConfig.customLogger(level, `${prefix} ${message}`, data);\n }\n else if (eventConfig.enableLogging) {\n console.log(`${prefix} [${level.toUpperCase()}] ${message}`, data || '');\n }\n };\n customLogger('info', `Pinging ${peerPubkeys.length} peers`);\n try {\n // Ping all peers concurrently\n const pingPromises = peerPubkeys.map(pubkey => pingPeer(node, pubkey, { timeout, eventConfig }));\n const results = await Promise.all(pingPromises);\n const successCount = results.filter(r => r.success).length;\n customLogger('info', `Ping completed: ${successCount}/${results.length} peers responded`);\n return results;\n }\n catch (error) {\n customLogger('error', `Ping operation failed: ${error.message}`);\n // Return failed results for all peers\n return peerPubkeys.map(pubkey => ({\n success: false,\n pubkey,\n error: error.message,\n timestamp: new Date()\n }));\n }\n}\n/**\n * Create a ping monitor for continuous peer monitoring\n */\nexport function createPingMonitor(node, peerPubkeys, config = {}) {\n const { interval = DEFAULT_PING_INTERVAL, timeout = DEFAULT_PING_TIMEOUT, onPingResult, onError, relays = DEFAULT_PING_RELAYS, eventConfig = { enableLogging: false } } = config;\n let intervalId = null;\n let isRunning = false;\n const customLogger = (level, message, data) => {\n const prefix = '[PingMonitor]';\n if (eventConfig.customLogger) {\n eventConfig.customLogger(level, `${prefix} ${message}`, data);\n }\n else if (eventConfig.enableLogging) {\n console.log(`${prefix} [${level.toUpperCase()}] ${message}`, data || '');\n }\n };\n const ping = async () => {\n try {\n customLogger('debug', `Pinging ${peerPubkeys.length} peers`);\n const results = await pingPeers(node, peerPubkeys, {\n timeout,\n eventConfig\n });\n // Call result callback for each peer\n if (onPingResult) {\n results.forEach(result => {\n try {\n onPingResult(result);\n }\n catch (error) {\n customLogger('error', `Error in ping result callback: ${error.message}`);\n }\n });\n }\n return results;\n }\n catch (error) {\n customLogger('error', `Ping monitor error: ${error.message}`);\n if (onError) {\n onError(error, 'ping');\n }\n return [];\n }\n };\n const start = () => {\n if (isRunning) {\n customLogger('warn', 'Ping monitor is already running');\n return;\n }\n customLogger('info', `Starting ping monitor (interval: ${interval}ms, timeout: ${timeout}ms)`);\n isRunning = true;\n // Initial ping\n ping().catch(error => {\n customLogger('error', `Initial ping failed: ${error.message}`);\n });\n // Set up interval\n intervalId = setInterval(() => {\n if (isRunning) {\n ping().catch(error => {\n customLogger('error', `Scheduled ping failed: ${error.message}`);\n });\n }\n }, interval);\n };\n const stop = () => {\n if (!isRunning) {\n customLogger('warn', 'Ping monitor is not running');\n return;\n }\n customLogger('info', 'Stopping ping monitor');\n isRunning = false;\n if (intervalId) {\n clearInterval(intervalId);\n intervalId = null;\n }\n };\n const cleanup = () => {\n stop();\n customLogger('debug', 'Ping monitor cleaned up');\n };\n return {\n start,\n stop,\n get isRunning() { return isRunning; },\n ping,\n cleanup\n };\n}\n/**\n * Ping peers from credentials (convenience function)\n */\nexport async function pingPeersFromCredentials(groupCredential, shareCredential, options = {}) {\n const { relays = DEFAULT_PING_RELAYS, timeout = DEFAULT_PING_TIMEOUT, eventConfig = { enableLogging: false } } = options;\n let node = null;\n try {\n // Create temporary node for pinging\n node = createBifrostNode({ group: groupCredential, share: shareCredential, relays }, eventConfig);\n await connectNode(node);\n // Extract peer pubkeys from the group\n const { extractPeersFromCredentials } = await import('./peer.js');\n const peerPubkeys = extractPeersFromCredentials(groupCredential, shareCredential);\n // Ping all peers\n const results = await pingPeers(node, peerPubkeys, { timeout, eventConfig });\n return results;\n }\n catch (error) {\n throw new NodeError(`Failed to ping peers: ${error.message}`, { error });\n }\n finally {\n if (node) {\n try {\n closeNode(node);\n }\n catch (error) {\n console.warn('[pingPeersFromCredentials] Error during cleanup:', error);\n }\n }\n }\n}\n/**\n * Create a comprehensive ping test for network diagnostics\n */\nexport async function runPingDiagnostics(node, peerPubkeys, options = {}) {\n const { rounds = 3, timeout = DEFAULT_PING_TIMEOUT, interval = 1000, eventConfig = { enableLogging: false } } = options;\n const customLogger = (level, message, data) => {\n const prefix = '[PingDiagnostics]';\n if (eventConfig.customLogger) {\n eventConfig.customLogger(level, `${prefix} ${message}`, data);\n }\n else if (eventConfig.enableLogging) {\n console.log(`${prefix} [${level.toUpperCase()}] ${message}`, data || '');\n }\n };\n customLogger('info', `Starting ping diagnostics: ${rounds} rounds, ${peerPubkeys.length} peers`);\n const allRounds = [];\n const peerStats = {};\n // Initialize peer stats\n peerPubkeys.forEach(pubkey => {\n peerStats[pubkey] = {\n successCount: 0,\n totalAttempts: 0,\n latencies: [],\n averageLatency: 0,\n minLatency: Infinity,\n maxLatency: 0,\n successRate: 0\n };\n });\n // Run ping rounds\n for (let round = 0; round < rounds; round++) {\n customLogger('info', `Running ping round ${round + 1}/${rounds}`);\n const results = await pingPeers(node, peerPubkeys, { timeout, eventConfig });\n allRounds.push(results);\n // Update peer stats\n results.forEach(result => {\n const stats = peerStats[result.pubkey];\n stats.totalAttempts++;\n if (result.success && result.latency !== undefined) {\n stats.successCount++;\n stats.latencies.push(result.latency);\n stats.minLatency = Math.min(stats.minLatency, result.latency);\n stats.maxLatency = Math.max(stats.maxLatency, result.latency);\n }\n });\n // Wait between rounds (except for the last round)\n if (round < rounds - 1) {\n await new Promise(resolve => setTimeout(resolve, interval));\n }\n }\n // Calculate final statistics\n let totalLatencies = [];\n let totalSuccesses = 0;\n let totalAttempts = 0;\n Object.keys(peerStats).forEach(pubkey => {\n const stats = peerStats[pubkey];\n stats.averageLatency = stats.latencies.length > 0\n ? stats.latencies.reduce((a, b) => a + b, 0) / stats.latencies.length\n : 0;\n stats.successRate = stats.totalAttempts > 0\n ? (stats.successCount / stats.totalAttempts) * 100\n : 0;\n if (stats.minLatency === Infinity)\n stats.minLatency = 0;\n totalLatencies.push(...stats.latencies);\n totalSuccesses += stats.successCount;\n totalAttempts += stats.totalAttempts;\n // Remove internal latencies array from final output\n delete stats.latencies;\n });\n const averageLatency = totalLatencies.length > 0\n ? totalLatencies.reduce((a, b) => a + b, 0) / totalLatencies.length\n : 0;\n const successRate = totalAttempts > 0 ? (totalSuccesses / totalAttempts) * 100 : 0;\n // Find fastest and slowest peers\n const peerLatencies = Object.entries(peerStats)\n .filter(([_, stats]) => stats.averageLatency > 0)\n .map(([pubkey, stats]) => ({ pubkey, latency: stats.averageLatency }));\n const fastestPeer = peerLatencies.length > 0\n ? peerLatencies.reduce((min, peer) => peer.latency < min.latency ? peer : min).pubkey\n : undefined;\n const slowestPeer = peerLatencies.length > 0\n ? peerLatencies.reduce((max, peer) => peer.latency > max.latency ? peer : max).pubkey\n : undefined;\n const summary = {\n totalRounds: rounds,\n totalPeers: peerPubkeys.length,\n averageLatency: Math.round(averageLatency * 100) / 100,\n successRate: Math.round(successRate * 100) / 100,\n fastestPeer,\n slowestPeer\n };\n customLogger('info', `Ping diagnostics completed`, summary);\n return {\n summary,\n rounds: allRounds,\n peerStats\n };\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,293 +0,0 @@
1
- const require_types = require('./types-B-TLIS13.cjs');
2
- const require_nostr = require('./nostr-Hv2tsnuI.cjs');
3
-
4
- //#region node_modules/@frostr/igloo-core/dist/policy.js
5
- const COMPRESSED_PUBKEY_REGEX = /^(02|03)[0-9a-fA-F]{64}$/;
6
- const STRIPPED_PUBKEY_REGEX = /^[0-9a-fA-F]{64}$/;
7
- const policyMetadataStore = /* @__PURE__ */ new WeakMap();
8
- function normalizePolicyPubkey(pubkey) {
9
- if (!pubkey) throw new require_types.PolicyError("Peer pubkey is required");
10
- let normalized = pubkey.trim();
11
- if (normalized.startsWith("npub")) try {
12
- normalized = require_nostr.npubToHex(normalized);
13
- } catch (error) {
14
- throw new require_types.PolicyError("Failed to convert npub to hex", {
15
- pubkey,
16
- error
17
- });
18
- }
19
- if (COMPRESSED_PUBKEY_REGEX.test(normalized)) normalized = normalized.slice(2);
20
- if (STRIPPED_PUBKEY_REGEX.test(normalized)) return normalized.toLowerCase();
21
- throw new require_types.PolicyError("Peer pubkey must be a 64-character hex string", { pubkey });
22
- }
23
- function normalizePeerPubkeyLoose(pubkey) {
24
- if (!pubkey) return "";
25
- const trimmed = pubkey.trim();
26
- if (STRIPPED_PUBKEY_REGEX.test(trimmed)) return trimmed.toLowerCase();
27
- if (COMPRESSED_PUBKEY_REGEX.test(trimmed)) return trimmed.slice(2).toLowerCase();
28
- return trimmed.toLowerCase();
29
- }
30
- function extractPolicyExtras(policy) {
31
- const { label, roles, metadata, note, source } = policy;
32
- const extras = {};
33
- if (label) extras.label = label;
34
- if (roles && roles.length) extras.roles = [...roles];
35
- if (metadata && Object.keys(metadata).length) extras.metadata = metadata;
36
- if (note) extras.note = note;
37
- if (source) extras.source = source;
38
- return Object.keys(extras).length ? extras : void 0;
39
- }
40
- function getPolicyMetadataMap(node) {
41
- let map = policyMetadataStore.get(node);
42
- if (!map) {
43
- map = /* @__PURE__ */ new Map();
44
- policyMetadataStore.set(node, map);
45
- }
46
- return map;
47
- }
48
- function normalizeNodePolicyInputInternal(policy) {
49
- const parsed = require_types.NodePolicyInputSchema.parse(policy);
50
- return {
51
- pubkey: normalizePolicyPubkey(parsed.pubkey),
52
- allowSend: parsed.allowSend ?? parsed.send ?? parsed.policy?.send ?? true,
53
- allowReceive: parsed.allowReceive ?? parsed.recv ?? parsed.policy?.recv ?? true,
54
- label: parsed.label,
55
- roles: parsed.roles,
56
- metadata: parsed.metadata,
57
- note: parsed.note,
58
- source: parsed.source ?? "config"
59
- };
60
- }
61
- function normalizeNodePolicyInput(policy) {
62
- return normalizeNodePolicyInputInternal(policy);
63
- }
64
- function normalizeNodePolicies(policies) {
65
- if (!policies || policies.length === 0) return [];
66
- const dedup = /* @__PURE__ */ new Map();
67
- for (const policy of policies) {
68
- const normalized = normalizeNodePolicyInputInternal(policy);
69
- dedup.set(normalized.pubkey, normalized);
70
- }
71
- return Array.from(dedup.values());
72
- }
73
- function toPeerConfig(policy) {
74
- return {
75
- pubkey: policy.pubkey,
76
- policy: {
77
- send: policy.allowSend,
78
- recv: policy.allowReceive
79
- }
80
- };
81
- }
82
- function prepareNodePolicies(policies) {
83
- const normalizedPolicies = normalizeNodePolicies(policies);
84
- return {
85
- peerConfigs: normalizedPolicies.map(toPeerConfig),
86
- normalizedPolicies
87
- };
88
- }
89
- function syncPolicyMetadata(node, policies, merge) {
90
- const map = getPolicyMetadataMap(node);
91
- if (!merge) map.clear();
92
- for (const policy of policies) {
93
- const extras = extractPolicyExtras(policy);
94
- if (extras) if (merge && map.has(policy.pubkey)) map.set(policy.pubkey, {
95
- ...map.get(policy.pubkey),
96
- ...extras
97
- });
98
- else map.set(policy.pubkey, extras);
99
- else if (!merge) map.delete(policy.pubkey);
100
- }
101
- }
102
- function syncPeersWithPolicies(node, policyMap, merge) {
103
- const peers = node.peers;
104
- if (!peers) return;
105
- for (const peer of peers) {
106
- const key = normalizePeerPubkeyLoose(peer.pubkey);
107
- const policy = policyMap.get(key);
108
- if (policy) peer.policy = {
109
- send: policy.send,
110
- recv: policy.recv
111
- };
112
- else if (!merge) peer.policy = {
113
- send: true,
114
- recv: true
115
- };
116
- }
117
- }
118
- function collectPolicyMapFromConfig(node) {
119
- const map = /* @__PURE__ */ new Map();
120
- const configPolicies = node.config?.policies;
121
- if (!configPolicies) return map;
122
- for (const peerConfig of configPolicies) {
123
- const key = normalizePeerPubkeyLoose(peerConfig.pubkey);
124
- const send = peerConfig.policy?.send ?? true;
125
- const recv = peerConfig.policy?.recv ?? true;
126
- map.set(key, {
127
- send,
128
- recv
129
- });
130
- }
131
- return map;
132
- }
133
- function buildNodePolicySummary(pubkey, policy, peer, extras, defaultSource) {
134
- const status = peer?.status === "online" || peer?.status === "offline" ? peer.status : "unknown";
135
- const lastUpdated = typeof peer?.updated === "number" && !Number.isNaN(peer.updated) ? new Date(peer.updated) : void 0;
136
- return {
137
- pubkey,
138
- allowSend: policy.send,
139
- allowReceive: policy.recv,
140
- label: extras?.label,
141
- roles: extras?.roles,
142
- metadata: extras?.metadata,
143
- note: extras?.note,
144
- source: extras?.source ?? defaultSource,
145
- status,
146
- lastUpdated
147
- };
148
- }
149
- function registerNodePolicyMetadata(node, policies) {
150
- if (!policies.length) return;
151
- syncPolicyMetadata(node, policies, false);
152
- }
153
- function setNodePolicies(node, policies, options = {}) {
154
- const { merge = false } = options;
155
- const { normalizedPolicies } = prepareNodePolicies(policies);
156
- const policyMap = merge ? collectPolicyMapFromConfig(node) : /* @__PURE__ */ new Map();
157
- for (const policy of normalizedPolicies) policyMap.set(policy.pubkey, {
158
- send: policy.allowSend,
159
- recv: policy.allowReceive
160
- });
161
- const config = node.config;
162
- if (!config) throw new require_types.PolicyError("Bifrost node config is not available");
163
- config.policies = Array.from(policyMap.entries()).map(([pubkey, policy]) => ({
164
- pubkey,
165
- policy
166
- }));
167
- syncPeersWithPolicies(node, policyMap, merge);
168
- syncPolicyMetadata(node, normalizedPolicies, merge);
169
- return getNodePolicies(node);
170
- }
171
- function updateNodePolicy(node, policy) {
172
- const summaries = setNodePolicies(node, [policy], { merge: true });
173
- const targetPubkey = normalizePolicyPubkey(policy.pubkey);
174
- return summaries.find((summary) => summary.pubkey === targetPubkey);
175
- }
176
- function getNodePolicies(node) {
177
- const peers = node.peers;
178
- const configMap = collectPolicyMapFromConfig(node);
179
- const metadataMap = getPolicyMetadataMap(node);
180
- const summaries = [];
181
- const seen = /* @__PURE__ */ new Set();
182
- if (peers) for (const peer of peers) {
183
- const key = normalizePeerPubkeyLoose(peer.pubkey);
184
- const policy = configMap.get(key) ?? peer.policy ?? {
185
- send: true,
186
- recv: true
187
- };
188
- const extras = metadataMap.get(key);
189
- summaries.push(buildNodePolicySummary(key, policy, peer, extras, "runtime"));
190
- seen.add(key);
191
- }
192
- for (const [pubkey, policy] of configMap.entries()) {
193
- if (seen.has(pubkey)) continue;
194
- const extras = metadataMap.get(pubkey);
195
- summaries.push(buildNodePolicySummary(pubkey, policy, void 0, extras, "config"));
196
- }
197
- return summaries.sort((a, b) => a.pubkey.localeCompare(b.pubkey));
198
- }
199
- function getNodePolicy(node, pubkey) {
200
- const normalized = normalizePolicyPubkey(pubkey);
201
- return getNodePolicies(node).find((policy) => policy.pubkey === normalized);
202
- }
203
- function canSendToPeer(node, pubkey) {
204
- const normalized = normalizePolicyPubkey(pubkey);
205
- const configMap = collectPolicyMapFromConfig(node);
206
- if (configMap.has(normalized)) return configMap.get(normalized).send !== false;
207
- return (node.peers?.find((p) => normalizePeerPubkeyLoose(p.pubkey) === normalized))?.policy?.send ?? true;
208
- }
209
- function canReceiveFromPeer(node, pubkey) {
210
- const normalized = normalizePolicyPubkey(pubkey);
211
- const configMap = collectPolicyMapFromConfig(node);
212
- if (configMap.has(normalized)) return configMap.get(normalized).recv !== false;
213
- return (node.peers?.find((p) => normalizePeerPubkeyLoose(p.pubkey) === normalized))?.policy?.recv ?? true;
214
- }
215
- function summarizeNodePolicyMatrix(node) {
216
- return getNodePolicies(node).reduce((acc, summary) => {
217
- acc[summary.pubkey] = {
218
- send: summary.allowSend,
219
- recv: summary.allowReceive,
220
- status: summary.status
221
- };
222
- return acc;
223
- }, {});
224
- }
225
-
226
- //#endregion
227
- Object.defineProperty(exports, 'canReceiveFromPeer', {
228
- enumerable: true,
229
- get: function () {
230
- return canReceiveFromPeer;
231
- }
232
- });
233
- Object.defineProperty(exports, 'canSendToPeer', {
234
- enumerable: true,
235
- get: function () {
236
- return canSendToPeer;
237
- }
238
- });
239
- Object.defineProperty(exports, 'getNodePolicies', {
240
- enumerable: true,
241
- get: function () {
242
- return getNodePolicies;
243
- }
244
- });
245
- Object.defineProperty(exports, 'getNodePolicy', {
246
- enumerable: true,
247
- get: function () {
248
- return getNodePolicy;
249
- }
250
- });
251
- Object.defineProperty(exports, 'normalizeNodePolicies', {
252
- enumerable: true,
253
- get: function () {
254
- return normalizeNodePolicies;
255
- }
256
- });
257
- Object.defineProperty(exports, 'normalizeNodePolicyInput', {
258
- enumerable: true,
259
- get: function () {
260
- return normalizeNodePolicyInput;
261
- }
262
- });
263
- Object.defineProperty(exports, 'prepareNodePolicies', {
264
- enumerable: true,
265
- get: function () {
266
- return prepareNodePolicies;
267
- }
268
- });
269
- Object.defineProperty(exports, 'registerNodePolicyMetadata', {
270
- enumerable: true,
271
- get: function () {
272
- return registerNodePolicyMetadata;
273
- }
274
- });
275
- Object.defineProperty(exports, 'setNodePolicies', {
276
- enumerable: true,
277
- get: function () {
278
- return setNodePolicies;
279
- }
280
- });
281
- Object.defineProperty(exports, 'summarizeNodePolicyMatrix', {
282
- enumerable: true,
283
- get: function () {
284
- return summarizeNodePolicyMatrix;
285
- }
286
- });
287
- Object.defineProperty(exports, 'updateNodePolicy', {
288
- enumerable: true,
289
- get: function () {
290
- return updateNodePolicy;
291
- }
292
- });
293
- //# sourceMappingURL=policy-8HcjulLD.cjs.map