@bsv/sdk 1.1.33 → 1.2.0

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 (214) hide show
  1. package/dist/cjs/mod.js +4 -0
  2. package/dist/cjs/mod.js.map +1 -1
  3. package/dist/cjs/package.json +4 -3
  4. package/dist/cjs/src/auth/Certificate.js +163 -0
  5. package/dist/cjs/src/auth/Certificate.js.map +1 -0
  6. package/dist/cjs/src/auth/index.js +9 -0
  7. package/dist/cjs/src/auth/index.js.map +1 -0
  8. package/dist/cjs/src/compat/BSM.js +17 -7
  9. package/dist/cjs/src/compat/BSM.js.map +1 -1
  10. package/dist/cjs/src/compat/ECIES.js +17 -7
  11. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  12. package/dist/cjs/src/compat/HD.js +17 -7
  13. package/dist/cjs/src/compat/HD.js.map +1 -1
  14. package/dist/cjs/src/compat/Mnemonic.js +17 -7
  15. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  16. package/dist/cjs/src/compat/index.js +17 -7
  17. package/dist/cjs/src/compat/index.js.map +1 -1
  18. package/dist/cjs/src/messages/index.js +17 -7
  19. package/dist/cjs/src/messages/index.js.map +1 -1
  20. package/dist/cjs/src/overlay-tools/LookupResolver.js +170 -0
  21. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -0
  22. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +69 -0
  23. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -0
  24. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +336 -0
  25. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -0
  26. package/dist/cjs/src/overlay-tools/index.js +29 -0
  27. package/dist/cjs/src/overlay-tools/index.js.map +1 -0
  28. package/dist/cjs/src/primitives/PrivateKey.js +17 -7
  29. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  30. package/dist/cjs/src/primitives/TransactionSignature.js +17 -7
  31. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  32. package/dist/cjs/src/primitives/index.js +17 -7
  33. package/dist/cjs/src/primitives/index.js.map +1 -1
  34. package/dist/cjs/src/script/Spend.js +17 -7
  35. package/dist/cjs/src/script/Spend.js.map +1 -1
  36. package/dist/cjs/src/script/templates/PushDrop.js +218 -0
  37. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -0
  38. package/dist/cjs/src/script/templates/index.js +3 -1
  39. package/dist/cjs/src/script/templates/index.js.map +1 -1
  40. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +1 -1
  41. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  42. package/dist/cjs/src/wallet/CachedKeyDeriver.js +177 -0
  43. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -0
  44. package/dist/cjs/src/wallet/KeyDeriver.js +174 -0
  45. package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -0
  46. package/dist/cjs/src/wallet/ProtoWallet.js +245 -0
  47. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -0
  48. package/dist/cjs/src/wallet/Wallet.interfaces.js +3 -0
  49. package/dist/cjs/src/wallet/Wallet.interfaces.js.map +1 -0
  50. package/dist/cjs/src/wallet/WalletClient.js +181 -0
  51. package/dist/cjs/src/wallet/WalletClient.js.map +1 -0
  52. package/dist/cjs/src/wallet/WalletError.js +28 -0
  53. package/dist/cjs/src/wallet/WalletError.js.map +1 -0
  54. package/dist/cjs/src/wallet/index.js +34 -0
  55. package/dist/cjs/src/wallet/index.js.map +1 -0
  56. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +45 -0
  57. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -0
  58. package/dist/cjs/src/wallet/substrates/WalletWire.js +3 -0
  59. package/dist/cjs/src/wallet/substrates/WalletWire.js.map +1 -0
  60. package/dist/cjs/src/wallet/substrates/WalletWireCalls.js +36 -0
  61. package/dist/cjs/src/wallet/substrates/WalletWireCalls.js.map +1 -0
  62. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1821 -0
  63. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -0
  64. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +1305 -0
  65. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -0
  66. package/dist/cjs/src/wallet/substrates/XDM.js +130 -0
  67. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -0
  68. package/dist/cjs/src/wallet/substrates/index.js +33 -0
  69. package/dist/cjs/src/wallet/substrates/index.js.map +1 -0
  70. package/dist/cjs/src/wallet/substrates/window.CWI.js +102 -0
  71. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -0
  72. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  73. package/dist/esm/mod.js +4 -0
  74. package/dist/esm/mod.js.map +1 -1
  75. package/dist/esm/src/auth/Certificate.js +185 -0
  76. package/dist/esm/src/auth/Certificate.js.map +1 -0
  77. package/dist/esm/src/auth/index.js +2 -0
  78. package/dist/esm/src/auth/index.js.map +1 -0
  79. package/dist/esm/src/overlay-tools/LookupResolver.js +167 -0
  80. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -0
  81. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +64 -0
  82. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -0
  83. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +335 -0
  84. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -0
  85. package/dist/esm/src/overlay-tools/index.js +6 -0
  86. package/dist/esm/src/overlay-tools/index.js.map +1 -0
  87. package/dist/esm/src/script/templates/PushDrop.js +215 -0
  88. package/dist/esm/src/script/templates/PushDrop.js.map +1 -0
  89. package/dist/esm/src/script/templates/index.js +1 -0
  90. package/dist/esm/src/script/templates/index.js.map +1 -1
  91. package/dist/esm/src/transaction/http/DefaultHttpClient.js +1 -1
  92. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  93. package/dist/esm/src/wallet/CachedKeyDeriver.js +174 -0
  94. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -0
  95. package/dist/esm/src/wallet/KeyDeriver.js +172 -0
  96. package/dist/esm/src/wallet/KeyDeriver.js.map +1 -0
  97. package/dist/esm/src/wallet/ProtoWallet.js +207 -0
  98. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -0
  99. package/dist/esm/src/wallet/Wallet.interfaces.js +2 -0
  100. package/dist/esm/src/wallet/Wallet.interfaces.js.map +1 -0
  101. package/dist/esm/src/wallet/WalletClient.js +177 -0
  102. package/dist/esm/src/wallet/WalletClient.js.map +1 -0
  103. package/dist/esm/src/wallet/WalletError.js +25 -0
  104. package/dist/esm/src/wallet/WalletError.js.map +1 -0
  105. package/dist/esm/src/wallet/index.js +9 -0
  106. package/dist/esm/src/wallet/index.js.map +1 -0
  107. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +42 -0
  108. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -0
  109. package/dist/esm/src/wallet/substrates/WalletWire.js +2 -0
  110. package/dist/esm/src/wallet/substrates/WalletWire.js.map +1 -0
  111. package/dist/esm/src/wallet/substrates/WalletWireCalls.js +34 -0
  112. package/dist/esm/src/wallet/substrates/WalletWireCalls.js.map +1 -0
  113. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1816 -0
  114. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -0
  115. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +1300 -0
  116. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -0
  117. package/dist/esm/src/wallet/substrates/XDM.js +128 -0
  118. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -0
  119. package/dist/esm/src/wallet/substrates/index.js +8 -0
  120. package/dist/esm/src/wallet/substrates/index.js.map +1 -0
  121. package/dist/esm/src/wallet/substrates/window.CWI.js +100 -0
  122. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -0
  123. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  124. package/dist/types/mod.d.ts +4 -0
  125. package/dist/types/mod.d.ts.map +1 -1
  126. package/dist/types/src/auth/Certificate.d.ts +76 -0
  127. package/dist/types/src/auth/Certificate.d.ts.map +1 -0
  128. package/dist/types/src/auth/index.d.ts +2 -0
  129. package/dist/types/src/auth/index.d.ts.map +1 -0
  130. package/dist/types/src/overlay-tools/LookupResolver.d.ts +71 -0
  131. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -0
  132. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +44 -0
  133. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -0
  134. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +90 -0
  135. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -0
  136. package/dist/types/src/overlay-tools/index.d.ts +6 -0
  137. package/dist/types/src/overlay-tools/index.d.ts.map +1 -0
  138. package/dist/types/src/script/templates/PushDrop.d.ts +53 -0
  139. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -0
  140. package/dist/types/src/script/templates/index.d.ts +1 -0
  141. package/dist/types/src/script/templates/index.d.ts.map +1 -1
  142. package/dist/types/src/wallet/CachedKeyDeriver.d.ts +92 -0
  143. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -0
  144. package/dist/types/src/wallet/KeyDeriver.d.ts +72 -0
  145. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -0
  146. package/dist/types/src/wallet/ProtoWallet.d.ts +415 -0
  147. package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -0
  148. package/dist/types/src/wallet/Wallet.interfaces.d.ts +996 -0
  149. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -0
  150. package/dist/types/src/wallet/WalletClient.d.ts +182 -0
  151. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -0
  152. package/dist/types/src/wallet/WalletError.d.ts +14 -0
  153. package/dist/types/src/wallet/WalletError.d.ts.map +1 -0
  154. package/dist/types/src/wallet/index.d.ts +9 -0
  155. package/dist/types/src/wallet/index.d.ts.map +1 -0
  156. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts +9 -0
  157. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -0
  158. package/dist/types/src/wallet/substrates/WalletWire.d.ts +7 -0
  159. package/dist/types/src/wallet/substrates/WalletWire.d.ts.map +1 -0
  160. package/dist/types/src/wallet/substrates/WalletWireCalls.d.ts +33 -0
  161. package/dist/types/src/wallet/substrates/WalletWireCalls.d.ts.map +1 -0
  162. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts +18 -0
  163. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -0
  164. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +196 -0
  165. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -0
  166. package/dist/types/src/wallet/substrates/XDM.d.ts +412 -0
  167. package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -0
  168. package/dist/types/src/wallet/substrates/index.d.ts +8 -0
  169. package/dist/types/src/wallet/substrates/index.d.ts.map +1 -0
  170. package/dist/types/src/wallet/substrates/window.CWI.d.ts +410 -0
  171. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -0
  172. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  173. package/dist/umd/bundle.js +1 -1
  174. package/docs/overlay-tools.md +551 -0
  175. package/docs/script.md +135 -0
  176. package/docs/totp.md +119 -0
  177. package/docs/wallet-substrates.md +10 -0
  178. package/docs/wallet.md +4182 -0
  179. package/mod.ts +5 -1
  180. package/package.json +44 -3
  181. package/src/auth/Certificate.ts +233 -0
  182. package/src/auth/__tests/Certificate.test.ts +282 -0
  183. package/src/auth/index.ts +1 -0
  184. package/src/overlay-tools/LookupResolver.ts +228 -0
  185. package/src/overlay-tools/OverlayAdminTokenTemplate.ts +79 -0
  186. package/src/overlay-tools/SHIPBroadcaster.ts +405 -0
  187. package/src/overlay-tools/__tests/LookupResolver.test.ts +1403 -0
  188. package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +69 -0
  189. package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +904 -0
  190. package/src/overlay-tools/index.ts +5 -0
  191. package/src/script/templates/PushDrop.ts +246 -0
  192. package/src/script/templates/__tests/PushDrop.test.ts +158 -0
  193. package/src/script/templates/index.ts +1 -0
  194. package/src/transaction/http/DefaultHttpClient.ts +1 -1
  195. package/src/wallet/CachedKeyDeriver.ts +193 -0
  196. package/src/wallet/KeyDeriver.ts +178 -0
  197. package/src/wallet/ProtoWallet.ts +732 -0
  198. package/src/wallet/Wallet.interfaces.ts +1170 -0
  199. package/src/wallet/WalletClient.ts +201 -0
  200. package/src/wallet/WalletError.ts +27 -0
  201. package/src/wallet/__tests/CachedKeyDeriver.test.ts +322 -0
  202. package/src/wallet/__tests/KeyDeriver.test.ts +118 -0
  203. package/src/wallet/__tests/ProtoWallet.test.ts +543 -0
  204. package/src/wallet/index.ts +8 -0
  205. package/src/wallet/substrates/HTTPWalletWire.ts +47 -0
  206. package/src/wallet/substrates/WalletWire.ts +6 -0
  207. package/src/wallet/substrates/WalletWireCalls.ts +34 -0
  208. package/src/wallet/substrates/WalletWireProcessor.ts +2046 -0
  209. package/src/wallet/substrates/WalletWireTransceiver.ts +1454 -0
  210. package/src/wallet/substrates/XDM.ts +157 -0
  211. package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +2194 -0
  212. package/src/wallet/substrates/__tests/XDM.test.ts +659 -0
  213. package/src/wallet/substrates/index.ts +7 -0
  214. package/src/wallet/substrates/window.CWI.ts +133 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/messages/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oEAAmD;AACnD,0EAAyD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/messages/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oEAAmD;AACnD,0EAAyD"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HTTPSOverlayLookupFacilitator = exports.DEFAULT_SLAP_TRACKERS = void 0;
7
+ const index_js_1 = require("../transaction/index.js");
8
+ const OverlayAdminTokenTemplate_js_1 = __importDefault(require("./OverlayAdminTokenTemplate.js"));
9
+ /** Default SLAP trackers */
10
+ exports.DEFAULT_SLAP_TRACKERS = [
11
+ // Babbage primary overlay service
12
+ 'https://overlay.babbage.systems',
13
+ // Babbage example overlay
14
+ 'https://overlay-example.babbage.systems',
15
+ // The Babbage office building
16
+ 'https://office.babbage.systems'
17
+ // NOTE: Other entities may submit pull requests to the library if they maintain SLAP overlay services.
18
+ // Additional trackers run by different entities contribute to greater network resiliency.
19
+ // It also generally doesn't hurt to have more trackers in this list.
20
+ // DISCLAIMER:
21
+ // Trackers known to host invalid or illegal records will be removed at the discretion of the BSV Association.
22
+ ];
23
+ class HTTPSOverlayLookupFacilitator {
24
+ constructor(httpClient = fetch) {
25
+ this.fetchClient = httpClient;
26
+ }
27
+ async lookup(url, question) {
28
+ if (!url.startsWith('https:')) {
29
+ throw new Error('HTTPS facilitator can only use URLs that start with "https:"');
30
+ }
31
+ const response = await fetch(`${url}/lookup`, {
32
+ method: 'POST',
33
+ headers: {
34
+ 'Content-Type': 'application/json'
35
+ },
36
+ body: JSON.stringify({ service: question.service, query: question.query })
37
+ });
38
+ if (response.ok) {
39
+ return await response.json();
40
+ }
41
+ else {
42
+ throw new Error('Failed to facilitate lookup');
43
+ }
44
+ }
45
+ }
46
+ exports.HTTPSOverlayLookupFacilitator = HTTPSOverlayLookupFacilitator;
47
+ /**
48
+ * Represents an SHIP transaction broadcaster.
49
+ */
50
+ class LookupResolver {
51
+ constructor(config) {
52
+ const { facilitator, slapTrackers, hostOverrides, additionalHosts } = config !== null && config !== void 0 ? config : {};
53
+ this.facilitator = facilitator !== null && facilitator !== void 0 ? facilitator : new HTTPSOverlayLookupFacilitator();
54
+ this.slapTrackers = slapTrackers !== null && slapTrackers !== void 0 ? slapTrackers : exports.DEFAULT_SLAP_TRACKERS;
55
+ this.hostOverrides = hostOverrides !== null && hostOverrides !== void 0 ? hostOverrides : {};
56
+ this.additionalHosts = additionalHosts !== null && additionalHosts !== void 0 ? additionalHosts : {};
57
+ }
58
+ /**
59
+ * Given a LookupQuestion, returns a LookupAnswer. Aggregates across multiple services and supports resiliency.
60
+ */
61
+ async query(question) {
62
+ let competentHosts = [];
63
+ if (question.service === 'ls_slap') {
64
+ competentHosts = this.slapTrackers;
65
+ }
66
+ else if (this.hostOverrides[question.service]) {
67
+ competentHosts = this.hostOverrides[question.service];
68
+ }
69
+ else {
70
+ competentHosts = await this.findCompetentHosts(question.service);
71
+ }
72
+ if (this.additionalHosts[question.service]) {
73
+ competentHosts = [
74
+ ...competentHosts,
75
+ ...this.additionalHosts[question.service]
76
+ ];
77
+ }
78
+ if (competentHosts.length < 1) {
79
+ throw new Error(`No competent hosts found by the SLAP trackers for lookup service: ${question.service}`);
80
+ }
81
+ // Use Promise.allSettled to handle individual host failures
82
+ const hostResponses = await Promise.allSettled(competentHosts.map(async (host) => await this.facilitator.lookup(host, question)));
83
+ const successfulResponses = hostResponses
84
+ .filter(result => result.status === 'fulfilled')
85
+ .map(result => (result).value);
86
+ if (successfulResponses.length === 0) {
87
+ throw new Error('No successful responses from any hosts');
88
+ }
89
+ // Process the successful responses
90
+ if (successfulResponses[0].type === 'freeform') {
91
+ // Return the first freeform response
92
+ return successfulResponses[0];
93
+ }
94
+ else {
95
+ // Aggregate outputs from all successful responses
96
+ const outputs = new Map();
97
+ for (const response of successfulResponses) {
98
+ if (response.type !== 'output-list') {
99
+ continue;
100
+ }
101
+ try {
102
+ for (const output of response.outputs) {
103
+ try {
104
+ const key = `${index_js_1.Transaction.fromBEEF(output.beef).id('hex')}.${output.outputIndex}`;
105
+ outputs.set(key, output);
106
+ }
107
+ catch (e) {
108
+ continue;
109
+ }
110
+ }
111
+ }
112
+ catch (e) {
113
+ continue;
114
+ }
115
+ }
116
+ return {
117
+ type: 'output-list',
118
+ outputs: Array.from(outputs.values())
119
+ };
120
+ }
121
+ }
122
+ /**
123
+ * Returns a list of competent hosts for a given lookup service.
124
+ * @param service Service for which competent hosts are to be returned
125
+ * @returns Array of hosts competent for resolving queries
126
+ */
127
+ async findCompetentHosts(service) {
128
+ const query = {
129
+ service: 'ls_slap',
130
+ query: {
131
+ service
132
+ }
133
+ };
134
+ // Use Promise.allSettled to handle individual SLAP tracker failures
135
+ const trackerResponses = await Promise.allSettled(this.slapTrackers.map(async (tracker) => await this.facilitator.lookup(tracker, query)));
136
+ const hosts = new Set();
137
+ for (const result of trackerResponses) {
138
+ if (result.status === 'fulfilled') {
139
+ const answer = result.value;
140
+ if (answer.type !== 'output-list') {
141
+ // Log invalid response and continue
142
+ continue;
143
+ }
144
+ for (const output of answer.outputs) {
145
+ try {
146
+ const tx = index_js_1.Transaction.fromBEEF(output.beef);
147
+ const script = tx.outputs[output.outputIndex].lockingScript;
148
+ const parsed = OverlayAdminTokenTemplate_js_1.default.decode(script);
149
+ if (parsed.topicOrService !== service || parsed.protocol !== 'SLAP') {
150
+ // Invalid advertisement, skip
151
+ continue;
152
+ }
153
+ hosts.add(parsed.domain);
154
+ }
155
+ catch (e) {
156
+ // Invalid output, skip
157
+ continue;
158
+ }
159
+ }
160
+ }
161
+ else {
162
+ // Log tracker failure and continue
163
+ continue;
164
+ }
165
+ }
166
+ return [...hosts];
167
+ }
168
+ }
169
+ exports.default = LookupResolver;
170
+ //# sourceMappingURL=LookupResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LookupResolver.js","sourceRoot":"","sources":["../../../../src/overlay-tools/LookupResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const PushDrop_js_1 = __importDefault(require("../script/templates/PushDrop.js"));
7
+ const index_js_1 = require("../primitives/index.js");
8
+ /**
9
+ * Script template enabling the creation, unlocking, and decoding of SHIP and SLAP advertisements.
10
+ */
11
+ class OverlayAdminTokenTemplate {
12
+ /**
13
+ * Decodes a SHIP or SLAP advertisement from a given locking script.
14
+ * @param script Locking script comprising a SHIP or SLAP token to decode
15
+ * @returns Decoded SHIP or SLAP advertisement
16
+ */
17
+ static decode(script) {
18
+ const result = PushDrop_js_1.default.decode(script);
19
+ if (result.fields.length < 4) {
20
+ throw new Error('Invalid SHIP/SLAP advertisement!');
21
+ }
22
+ const protocol = index_js_1.Utils.toUTF8(result.fields[0]);
23
+ if (protocol !== 'SHIP' && protocol !== 'SLAP') {
24
+ throw new Error('Invalid protocol type!');
25
+ }
26
+ const identityKey = index_js_1.Utils.toHex(result.fields[1]);
27
+ const domain = index_js_1.Utils.toUTF8(result.fields[2]);
28
+ const topicOrService = index_js_1.Utils.toUTF8(result.fields[3]);
29
+ return {
30
+ protocol,
31
+ identityKey,
32
+ domain,
33
+ topicOrService
34
+ };
35
+ }
36
+ /**
37
+ * Constructs a new Overlay Admin template instance
38
+ * @param wallet Wallet to use for locking and unlocking
39
+ */
40
+ constructor(wallet) {
41
+ this.pushDrop = new PushDrop_js_1.default(wallet);
42
+ }
43
+ /**
44
+ * Creates a new advertisement locking script
45
+ * @param protocol SHIP or SLAP
46
+ * @param domain Domain where the topic or service is available
47
+ * @param topicOrService Topic or service to advertise
48
+ * @returns Locking script comprising the advertisement token
49
+ */
50
+ async lock(protocol, domain, topicOrService) {
51
+ const { publicKey: identityKey } = await this.pushDrop.wallet.getPublicKey({ identityKey: true });
52
+ return await this.pushDrop.lock([
53
+ index_js_1.Utils.toArray(protocol, 'utf8'),
54
+ index_js_1.Utils.toArray(identityKey, 'hex'),
55
+ index_js_1.Utils.toArray(domain, 'utf8'),
56
+ index_js_1.Utils.toArray(topicOrService, 'utf8')
57
+ ], [2, protocol === 'SHIP' ? 'Service Host Interconnect' : 'Service Lookup Availability'], '1', 'self');
58
+ }
59
+ /**
60
+ * Unlocks an advertisement token as part of a transaction.
61
+ * @param protocol SHIP or SLAP, depending on the token to unlock
62
+ * @returns Script unlocker capable of unlocking the advertisement token
63
+ */
64
+ unlock(protocol) {
65
+ return this.pushDrop.unlock([2, protocol === 'SHIP' ? 'Service Host Interconnect' : 'Service Lookup Availability'], '1', 'self');
66
+ }
67
+ }
68
+ exports.default = OverlayAdminTokenTemplate;
69
+ //# sourceMappingURL=OverlayAdminTokenTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverlayAdminTokenTemplate.js","sourceRoot":"","sources":["../../../../src/overlay-tools/OverlayAdminTokenTemplate.ts"],"names":[],"mappings":";;;;;AAAA,kFAAsD;AAItD,qDAA8C;AAE9C;;GAEG;AACH,MAAqB,yBAAyB;IAG5C;;;;SAIK;IACL,MAAM,CAAC,MAAM,CAAC,MAAqB;QACjC,MAAM,MAAM,GAAG,qBAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACtC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;QACrD,CAAC;QACD,MAAM,QAAQ,GAAG,gBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC3C,CAAC;QACD,MAAM,WAAW,GAAG,gBAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,gBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7C,MAAM,cAAc,GAAG,gBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACrD,OAAO;YACL,QAAQ;YACR,WAAW;YACX,MAAM;YACN,cAAc;SACf,CAAA;IACH,CAAC;IAED;;;SAGK;IACL,YAAY,MAAc;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,qBAAQ,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;IAED;;;;;;SAMK;IACL,KAAK,CAAC,IAAI,CAAC,QAAyB,EAAE,MAAc,EAAE,cAAsB;QAC1E,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;QACjG,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC7B;YACE,gBAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC/B,gBAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;YACjC,gBAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;YAC7B,gBAAK,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC;SACtC,EACD,CAAC,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,6BAA6B,CAAC,EACtF,GAAG,EACH,MAAM,CACP,CAAA;IACH,CAAC;IAED;;;;SAIK;IACL,MAAM,CAAC,QAAyB;QAI9B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,6BAA6B,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;IAClI,CAAC;CACF;AArED,4CAqEC"}
@@ -0,0 +1,336 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HTTPSOverlayBroadcastFacilitator = void 0;
7
+ const index_js_1 = require("../transaction/index.js");
8
+ const LookupResolver_js_1 = __importDefault(require("./LookupResolver.js"));
9
+ const OverlayAdminTokenTemplate_js_1 = __importDefault(require("./OverlayAdminTokenTemplate.js"));
10
+ class HTTPSOverlayBroadcastFacilitator {
11
+ constructor(httpClient = fetch) {
12
+ this.httpClient = httpClient;
13
+ }
14
+ async send(url, taggedBEEF) {
15
+ if (!url.startsWith('https:')) {
16
+ throw new Error('HTTPS facilitator can only use URLs that start with "https:"');
17
+ }
18
+ const response = await fetch(`${url}/submit`, {
19
+ method: 'POST',
20
+ headers: {
21
+ 'Content-Type': 'application/octet-stream',
22
+ 'X-Topics': JSON.stringify(taggedBEEF.topics)
23
+ },
24
+ body: new Uint8Array(taggedBEEF.beef)
25
+ });
26
+ if (response.ok) {
27
+ return await response.json();
28
+ }
29
+ else {
30
+ throw new Error('Failed to facilitate broadcast');
31
+ }
32
+ }
33
+ }
34
+ exports.HTTPSOverlayBroadcastFacilitator = HTTPSOverlayBroadcastFacilitator;
35
+ /**
36
+ * Represents a SHIP transaction broadcaster.
37
+ */
38
+ class SHIPCast {
39
+ /**
40
+ * Constructs an instance of the SHIP broadcaster.
41
+ *
42
+ * @param {string[]} topics - The list of SHIP topic names where transactions are to be sent.
43
+ * @param {SHIPBroadcasterConfig} config - Configuration options for the SHIP broadcaster.
44
+ */
45
+ constructor(topics, config) {
46
+ if (topics.length === 0) {
47
+ throw new Error('At least one topic is required for broadcast.');
48
+ }
49
+ if (topics.some(x => !x.startsWith('tm_'))) {
50
+ throw new Error('Every topic must start with "tm_".');
51
+ }
52
+ this.topics = topics;
53
+ const { facilitator, resolver, requireAcknowledgmentFromAllHostsForTopics, requireAcknowledgmentFromAnyHostForTopics, requireAcknowledgmentFromSpecificHostsForTopics } = config !== null && config !== void 0 ? config : {};
54
+ this.facilitator = facilitator !== null && facilitator !== void 0 ? facilitator : new HTTPSOverlayBroadcastFacilitator();
55
+ this.resolver = resolver !== null && resolver !== void 0 ? resolver : new LookupResolver_js_1.default();
56
+ this.requireAcknowledgmentFromAllHostsForTopics = requireAcknowledgmentFromAllHostsForTopics !== null && requireAcknowledgmentFromAllHostsForTopics !== void 0 ? requireAcknowledgmentFromAllHostsForTopics : 'all';
57
+ this.requireAcknowledgmentFromAnyHostForTopics = requireAcknowledgmentFromAnyHostForTopics !== null && requireAcknowledgmentFromAnyHostForTopics !== void 0 ? requireAcknowledgmentFromAnyHostForTopics : [];
58
+ this.requireAcknowledgmentFromSpecificHostsForTopics = requireAcknowledgmentFromSpecificHostsForTopics !== null && requireAcknowledgmentFromSpecificHostsForTopics !== void 0 ? requireAcknowledgmentFromSpecificHostsForTopics : {};
59
+ }
60
+ /**
61
+ * Broadcasts a transaction to Overlay Services via SHIP.
62
+ *
63
+ * @param {Transaction} tx - The transaction to be sent.
64
+ * @returns {Promise<BroadcastResponse | BroadcastFailure>} A promise that resolves to either a success or failure response.
65
+ */
66
+ async broadcast(tx) {
67
+ let beef;
68
+ try {
69
+ beef = tx.toBEEF();
70
+ }
71
+ catch (error) {
72
+ throw new Error('Transactions sent via SHIP to Overlay Services must be serializable to BEEF format.');
73
+ }
74
+ const interestedHosts = await this.findInterestedHosts();
75
+ if (Object.keys(interestedHosts).length === 0) {
76
+ return {
77
+ status: 'error',
78
+ code: 'ERR_NO_HOSTS_INTERESTED',
79
+ description: 'No hosts are interested in receiving this transaction.'
80
+ };
81
+ }
82
+ const hostPromises = Object.entries(interestedHosts).map(async ([host, topics]) => {
83
+ try {
84
+ const steak = await this.facilitator.send(host, { beef, topics: [...topics] });
85
+ if (!steak || Object.keys(steak).length === 0) {
86
+ throw new Error('Steak has no topics.');
87
+ }
88
+ return { host, success: true, steak };
89
+ }
90
+ catch (error) {
91
+ // Log error if needed
92
+ return { host, success: false, error };
93
+ }
94
+ });
95
+ const results = await Promise.all(hostPromises);
96
+ const successfulHosts = results.filter(result => result.success);
97
+ if (successfulHosts.length === 0) {
98
+ return {
99
+ status: 'error',
100
+ code: 'ERR_ALL_HOSTS_REJECTED',
101
+ description: 'All SHIP hosts have rejected the transaction.'
102
+ };
103
+ }
104
+ // Collect host acknowledgments
105
+ const hostAcknowledgments = {};
106
+ for (const result of successfulHosts) {
107
+ const host = result.host;
108
+ const steak = result.steak;
109
+ const acknowledgedTopics = new Set();
110
+ for (const [topic, instructions] of Object.entries(steak)) {
111
+ const outputsToAdmit = instructions.outputsToAdmit;
112
+ const coinsToRetain = instructions.coinsToRetain;
113
+ if ((outputsToAdmit && outputsToAdmit.length > 0) || (coinsToRetain && coinsToRetain.length > 0)) {
114
+ acknowledgedTopics.add(topic);
115
+ }
116
+ }
117
+ hostAcknowledgments[host] = acknowledgedTopics;
118
+ }
119
+ // Now, perform the checks
120
+ // Check requireAcknowledgmentFromAllHostsForTopics
121
+ let requiredTopicsAllHosts;
122
+ let requireAllHosts;
123
+ if (this.requireAcknowledgmentFromAllHostsForTopics === 'all') {
124
+ requiredTopicsAllHosts = this.topics;
125
+ requireAllHosts = 'all';
126
+ }
127
+ else if (this.requireAcknowledgmentFromAllHostsForTopics === 'any') {
128
+ requiredTopicsAllHosts = this.topics;
129
+ requireAllHosts = 'any';
130
+ }
131
+ else if (Array.isArray(this.requireAcknowledgmentFromAllHostsForTopics)) {
132
+ requiredTopicsAllHosts = this.requireAcknowledgmentFromAllHostsForTopics;
133
+ requireAllHosts = 'all';
134
+ }
135
+ else {
136
+ // Default to 'all' and 'all'
137
+ requiredTopicsAllHosts = this.topics;
138
+ requireAllHosts = 'all';
139
+ }
140
+ if (requiredTopicsAllHosts.length > 0) {
141
+ const allHostsAcknowledged = this.checkAcknowledgmentFromAllHosts(hostAcknowledgments, requiredTopicsAllHosts, requireAllHosts);
142
+ if (!allHostsAcknowledged) {
143
+ return {
144
+ status: 'error',
145
+ code: 'ERR_REQUIRE_ACK_FROM_ALL_HOSTS_FAILED',
146
+ description: 'Not all hosts acknowledged the required topics.'
147
+ };
148
+ }
149
+ }
150
+ // Check requireAcknowledgmentFromAnyHostForTopics
151
+ let requiredTopicsAnyHost;
152
+ let requireAnyHost;
153
+ if (this.requireAcknowledgmentFromAnyHostForTopics === 'all') {
154
+ requiredTopicsAnyHost = this.topics;
155
+ requireAnyHost = 'all';
156
+ }
157
+ else if (this.requireAcknowledgmentFromAnyHostForTopics === 'any') {
158
+ requiredTopicsAnyHost = this.topics;
159
+ requireAnyHost = 'any';
160
+ }
161
+ else if (Array.isArray(this.requireAcknowledgmentFromAnyHostForTopics)) {
162
+ requiredTopicsAnyHost = this.requireAcknowledgmentFromAnyHostForTopics;
163
+ requireAnyHost = 'all';
164
+ }
165
+ else {
166
+ // No requirement
167
+ requiredTopicsAnyHost = [];
168
+ requireAnyHost = 'all';
169
+ }
170
+ if (requiredTopicsAnyHost.length > 0) {
171
+ const anyHostAcknowledged = this.checkAcknowledgmentFromAnyHost(hostAcknowledgments, requiredTopicsAnyHost, requireAnyHost);
172
+ if (!anyHostAcknowledged) {
173
+ return {
174
+ status: 'error',
175
+ code: 'ERR_REQUIRE_ACK_FROM_ANY_HOST_FAILED',
176
+ description: 'No host acknowledged the required topics.'
177
+ };
178
+ }
179
+ }
180
+ // Check requireAcknowledgmentFromSpecificHostsForTopics
181
+ if (Object.keys(this.requireAcknowledgmentFromSpecificHostsForTopics).length > 0) {
182
+ const specificHostsAcknowledged = this.checkAcknowledgmentFromSpecificHosts(hostAcknowledgments, this.requireAcknowledgmentFromSpecificHostsForTopics);
183
+ if (!specificHostsAcknowledged) {
184
+ return {
185
+ status: 'error',
186
+ code: 'ERR_REQUIRE_ACK_FROM_SPECIFIC_HOSTS_FAILED',
187
+ description: 'Specific hosts did not acknowledge the required topics.'
188
+ };
189
+ }
190
+ }
191
+ // If all checks pass, return success
192
+ return {
193
+ status: 'success',
194
+ txid: tx.id('hex'),
195
+ message: `Sent to ${successfulHosts.length} Overlay Services ${successfulHosts.length === 1 ? 'host' : 'hosts'}.`
196
+ };
197
+ }
198
+ checkAcknowledgmentFromAllHosts(hostAcknowledgments, requiredTopics, require) {
199
+ for (const acknowledgedTopics of Object.values(hostAcknowledgments)) {
200
+ if (require === 'all') {
201
+ for (const topic of requiredTopics) {
202
+ if (!acknowledgedTopics.has(topic)) {
203
+ return false;
204
+ }
205
+ }
206
+ }
207
+ else if (require === 'any') {
208
+ let anyAcknowledged = false;
209
+ for (const topic of requiredTopics) {
210
+ if (acknowledgedTopics.has(topic)) {
211
+ anyAcknowledged = true;
212
+ break;
213
+ }
214
+ }
215
+ if (!anyAcknowledged) {
216
+ return false;
217
+ }
218
+ }
219
+ }
220
+ return true;
221
+ }
222
+ checkAcknowledgmentFromAnyHost(hostAcknowledgments, requiredTopics, require) {
223
+ if (require === 'all') {
224
+ // All required topics must be acknowledged by at least one host
225
+ for (const acknowledgedTopics of Object.values(hostAcknowledgments)) {
226
+ let acknowledgesAllRequiredTopics = true;
227
+ for (const topic of requiredTopics) {
228
+ if (!acknowledgedTopics.has(topic)) {
229
+ acknowledgesAllRequiredTopics = false;
230
+ break;
231
+ }
232
+ }
233
+ if (acknowledgesAllRequiredTopics) {
234
+ return true;
235
+ }
236
+ }
237
+ return false;
238
+ }
239
+ else {
240
+ // At least one required topic must be acknowledged by at least one host
241
+ for (const acknowledgedTopics of Object.values(hostAcknowledgments)) {
242
+ for (const topic of requiredTopics) {
243
+ if (acknowledgedTopics.has(topic)) {
244
+ return true;
245
+ }
246
+ }
247
+ }
248
+ return false;
249
+ }
250
+ }
251
+ checkAcknowledgmentFromSpecificHosts(hostAcknowledgments, requirements) {
252
+ for (const [host, requiredTopicsOrAllAny] of Object.entries(requirements)) {
253
+ const acknowledgedTopics = hostAcknowledgments[host];
254
+ if (!acknowledgedTopics) {
255
+ // Host did not respond successfully
256
+ return false;
257
+ }
258
+ let requiredTopics;
259
+ let require;
260
+ if (requiredTopicsOrAllAny === 'all' || requiredTopicsOrAllAny === 'any') {
261
+ require = requiredTopicsOrAllAny;
262
+ requiredTopics = this.topics;
263
+ }
264
+ else if (Array.isArray(requiredTopicsOrAllAny)) {
265
+ requiredTopics = requiredTopicsOrAllAny;
266
+ require = 'all';
267
+ }
268
+ else {
269
+ // Invalid configuration
270
+ continue;
271
+ }
272
+ if (require === 'all') {
273
+ for (const topic of requiredTopics) {
274
+ if (!acknowledgedTopics.has(topic)) {
275
+ return false;
276
+ }
277
+ }
278
+ }
279
+ else if (require === 'any') {
280
+ let anyAcknowledged = false;
281
+ for (const topic of requiredTopics) {
282
+ if (acknowledgedTopics.has(topic)) {
283
+ anyAcknowledged = true;
284
+ break;
285
+ }
286
+ }
287
+ if (!anyAcknowledged) {
288
+ return false;
289
+ }
290
+ }
291
+ }
292
+ return true;
293
+ }
294
+ /**
295
+ * Finds which hosts are interested in transactions tagged with the given set of topics.
296
+ *
297
+ * @returns A mapping of URLs for hosts interested in this transaction. Keys are URLs, values are which of our topics the specific host cares about.
298
+ */
299
+ async findInterestedHosts() {
300
+ // TODO: cache the list of interested hosts to avoid spamming SHIP trackers.
301
+ // TODO: Monetize the operation of the SHIP tracker system.
302
+ // TODO: Cache ship/slap lookup with expiry (every 5min)
303
+ // Find all SHIP advertisements for the topics we care about
304
+ const results = {};
305
+ const answer = await this.resolver.query({
306
+ service: 'ls_ship',
307
+ query: {
308
+ topics: this.topics
309
+ }
310
+ });
311
+ if (answer.type !== 'output-list') {
312
+ throw new Error('SHIP answer is not an output list.');
313
+ }
314
+ for (const output of answer.outputs) {
315
+ try {
316
+ const tx = index_js_1.Transaction.fromBEEF(output.beef);
317
+ const script = tx.outputs[output.outputIndex].lockingScript;
318
+ const parsed = OverlayAdminTokenTemplate_js_1.default.decode(script);
319
+ if (!this.topics.includes(parsed.topicOrService) || parsed.protocol !== 'SHIP') {
320
+ // This should make us think a LOT less highly of this SHIP tracker if it ever happens...
321
+ continue;
322
+ }
323
+ if (!results[parsed.domain]) {
324
+ results[parsed.domain] = new Set();
325
+ }
326
+ results[parsed.domain].add(parsed.topicOrService);
327
+ }
328
+ catch (e) {
329
+ continue;
330
+ }
331
+ }
332
+ return results;
333
+ }
334
+ }
335
+ exports.default = SHIPCast;
336
+ //# sourceMappingURL=SHIPBroadcaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SHIPBroadcaster.js","sourceRoot":"","sources":["../../../../src/overlay-tools/SHIPBroadcaster.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.SHIPBroadcaster = exports.LookupResolver = exports.OverlayAdminTokenTemplate = void 0;
21
+ __exportStar(require("./LookupResolver.js"), exports);
22
+ __exportStar(require("./SHIPBroadcaster.js"), exports);
23
+ var OverlayAdminTokenTemplate_js_1 = require("./OverlayAdminTokenTemplate.js");
24
+ Object.defineProperty(exports, "OverlayAdminTokenTemplate", { enumerable: true, get: function () { return __importDefault(OverlayAdminTokenTemplate_js_1).default; } });
25
+ var LookupResolver_js_1 = require("./LookupResolver.js");
26
+ Object.defineProperty(exports, "LookupResolver", { enumerable: true, get: function () { return __importDefault(LookupResolver_js_1).default; } });
27
+ var SHIPBroadcaster_js_1 = require("./SHIPBroadcaster.js");
28
+ Object.defineProperty(exports, "SHIPBroadcaster", { enumerable: true, get: function () { return __importDefault(SHIPBroadcaster_js_1).default; } });
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/overlay-tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,uDAAoC;AACpC,+EAAqF;AAA5E,0JAAA,OAAO,OAA6B;AAC7C,yDAA+D;AAAtD,oIAAA,OAAO,OAAkB;AAClC,2DAAiE;AAAxD,sIAAA,OAAO,OAAmB"}