dash-shielded-native 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/LICENSE +27 -0
- package/README.md +36 -0
- package/android/build.gradle +56 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/java/app/edge/rndashshielded/RNDashShieldedModule.kt +215 -0
- package/android/src/main/java/app/edge/rndashshielded/RNDashShieldedPackage.kt +16 -0
- package/android/src/main/java/uniffi/dash/dash.kt +1665 -0
- package/android/src/main/jniLibs/arm64-v8a/libdashshielded.so +0 -0
- package/dash-shielded-native.podspec +32 -0
- package/ios/.uniffi-generated +1 -0
- package/ios/EdgeDashClient.swift +88 -0
- package/ios/RNDashShielded.m +83 -0
- package/ios/RNDashShielded.swift +214 -0
- package/ios/dash-shielded-native-Bridging-Header.h +2 -0
- package/ios/dash.swift +1124 -0
- package/ios/libdashshielded.xcframework/Info.plist +47 -0
- package/ios/libdashshielded.xcframework/ios-arm64/Headers/dashFFI.h +696 -0
- package/ios/libdashshielded.xcframework/ios-arm64/Headers/module.modulemap +7 -0
- package/ios/libdashshielded.xcframework/ios-arm64/libdashshielded.a +0 -0
- package/ios/libdashshielded.xcframework/ios-arm64-simulator/Headers/dashFFI.h +696 -0
- package/ios/libdashshielded.xcframework/ios-arm64-simulator/Headers/module.modulemap +7 -0
- package/ios/libdashshielded.xcframework/ios-arm64-simulator/libdashshielded.a +0 -0
- package/lib/load-addon.d.ts +34 -0
- package/lib/node.d.ts +50 -0
- package/lib/react-native.d.ts +31 -0
- package/lib/rndash.rn.js +267 -0
- package/lib/rndash.rn.js.map +1 -0
- package/lib/src/node.js +328 -0
- package/lib/src/node.js.map +1 -0
- package/lib/types.d.ts +73 -0
- package/node.d.ts +1 -0
- package/node.js +2 -0
- package/package.json +105 -0
- package/prebuilds/darwin-arm64/dashshielded.node +0 -0
- package/rust/Cargo.lock +6795 -0
- package/rust/Cargo.toml +63 -0
- package/rust/build.rs +7 -0
- package/rust/rust-toolchain.toml +3 -0
- package/rust/src/dash.udl +90 -0
- package/rust/src/lib.rs +16 -0
- package/rust/src/napi_api.rs +164 -0
- package/rust/src/uniffi_api.rs +116 -0
- package/rust/src/wallet.rs +888 -0
- package/rust/uniffi-bindgen.rs +3 -0
- package/src/load-addon.ts +99 -0
- package/src/node.ts +248 -0
- package/src/react-native.ts +212 -0
- package/src/types.ts +88 -0
package/lib/src/node.js
ADDED
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var fs = require('fs');
|
|
6
|
+
var path = require('path');
|
|
7
|
+
|
|
8
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) {
|
|
9
|
+
try {
|
|
10
|
+
var i = n[a](c),
|
|
11
|
+
u = i.value;
|
|
12
|
+
} catch (n) {
|
|
13
|
+
return void e(n);
|
|
14
|
+
}
|
|
15
|
+
i.done ? t(u) : Promise.resolve(u).then(r, o);
|
|
16
|
+
}
|
|
17
|
+
function _asyncToGenerator(n) {
|
|
18
|
+
return function () {
|
|
19
|
+
var t = this,
|
|
20
|
+
e = arguments;
|
|
21
|
+
return new Promise(function (r, o) {
|
|
22
|
+
var a = n.apply(t, e);
|
|
23
|
+
function _next(n) {
|
|
24
|
+
asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
|
|
25
|
+
}
|
|
26
|
+
function _throw(n) {
|
|
27
|
+
asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
|
|
28
|
+
}
|
|
29
|
+
_next(void 0);
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function candidatePaths() {
|
|
35
|
+
var here = __dirname;
|
|
36
|
+
var platform = process.platform + "-" + process.arch;
|
|
37
|
+
var out = [];
|
|
38
|
+
var dir = here;
|
|
39
|
+
for (var i = 0; i < 6; i++) {
|
|
40
|
+
out.push(path.join(dir, 'prebuilds', platform, 'dashshielded.node'));
|
|
41
|
+
out.push(path.join(dir, 'rust', 'target', 'release', 'libdashshielded.dylib'));
|
|
42
|
+
out.push(path.join(dir, 'rust', 'target', 'release', 'libdashshielded.so'));
|
|
43
|
+
var parent = path.join(dir, '..');
|
|
44
|
+
if (parent === dir) break;
|
|
45
|
+
dir = parent;
|
|
46
|
+
}
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
var cached;
|
|
50
|
+
function loadNativeAddon() {
|
|
51
|
+
if (cached != null) return cached;
|
|
52
|
+
var errors = [];
|
|
53
|
+
var missing = [];
|
|
54
|
+
for (var _i2 = 0, _candidatePaths2 = candidatePaths(); _i2 < _candidatePaths2.length; _i2++) {
|
|
55
|
+
var candidate = _candidatePaths2[_i2];
|
|
56
|
+
try {
|
|
57
|
+
if (!fs.existsSync(candidate)) {
|
|
58
|
+
missing.push(candidate);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
var mod = require(candidate);
|
|
62
|
+
if (typeof mod.initialize !== 'function') continue;
|
|
63
|
+
cached = mod;
|
|
64
|
+
return cached;
|
|
65
|
+
} catch (error) {
|
|
66
|
+
var message = error instanceof Error ? error.message : String(error);
|
|
67
|
+
errors.push(candidate + ": " + message);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
throw new Error('dash-shielded-native Node addon not found. Run `npm run build-native-host`. ' + (errors.length > 0 ? errors.join('; ') : "Looked in: " + missing.join(', ')));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function parseJsonObject(value) {
|
|
74
|
+
try {
|
|
75
|
+
return JSON.parse(value);
|
|
76
|
+
} catch (_unused) {
|
|
77
|
+
return {
|
|
78
|
+
errorMessage: value
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
var Tools = {
|
|
83
|
+
deriveViewingKey: function deriveViewingKey(mnemonicSeed, network) {
|
|
84
|
+
var addon = loadNativeAddon();
|
|
85
|
+
return Promise.resolve({
|
|
86
|
+
fullViewingKey: addon.deriveViewingKey(mnemonicSeed, network)
|
|
87
|
+
});
|
|
88
|
+
},
|
|
89
|
+
deriveShieldedAddress: function () {
|
|
90
|
+
var _deriveShieldedAddress = _asyncToGenerator(function* (mnemonicSeed, network, account) {
|
|
91
|
+
if (account === void 0) {
|
|
92
|
+
account = 0;
|
|
93
|
+
}
|
|
94
|
+
var addon = loadNativeAddon();
|
|
95
|
+
var alias = "tools-addr-" + network + "-" + account;
|
|
96
|
+
yield addon.initialize(mnemonicSeed, account, alias, network, '', 0);
|
|
97
|
+
var _yield$addon$deriveSh = yield addon.deriveShieldedAddress(alias),
|
|
98
|
+
shieldedAddress = _yield$addon$deriveSh.shieldedAddress;
|
|
99
|
+
yield addon.stop(alias);
|
|
100
|
+
return shieldedAddress;
|
|
101
|
+
});
|
|
102
|
+
function deriveShieldedAddress(_x, _x2, _x3) {
|
|
103
|
+
return _deriveShieldedAddress.apply(this, arguments);
|
|
104
|
+
}
|
|
105
|
+
return deriveShieldedAddress;
|
|
106
|
+
}(),
|
|
107
|
+
isValidAddress: function isValidAddress(address, network) {
|
|
108
|
+
if (network === void 0) {
|
|
109
|
+
network = 'mainnet';
|
|
110
|
+
}
|
|
111
|
+
var addon = loadNativeAddon();
|
|
112
|
+
return Promise.resolve(addon.isValidAddress(address, network));
|
|
113
|
+
},
|
|
114
|
+
warmUpProver: function () {
|
|
115
|
+
var _warmUpProver = _asyncToGenerator(function* () {
|
|
116
|
+
var addon = loadNativeAddon();
|
|
117
|
+
yield addon.warmUpProver();
|
|
118
|
+
});
|
|
119
|
+
function warmUpProver() {
|
|
120
|
+
return _warmUpProver.apply(this, arguments);
|
|
121
|
+
}
|
|
122
|
+
return warmUpProver;
|
|
123
|
+
}(),
|
|
124
|
+
isProverReady: function isProverReady() {
|
|
125
|
+
var addon = loadNativeAddon();
|
|
126
|
+
return Promise.resolve(addon.isProverReady());
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
var Synchronizer = /*#__PURE__*/function () {
|
|
130
|
+
function Synchronizer(alias, network, addon) {
|
|
131
|
+
this.alias = alias;
|
|
132
|
+
this.network = network;
|
|
133
|
+
this.addon = addon;
|
|
134
|
+
}
|
|
135
|
+
var _proto = Synchronizer.prototype;
|
|
136
|
+
_proto.stop = /*#__PURE__*/function () {
|
|
137
|
+
var _stop = _asyncToGenerator(function* () {
|
|
138
|
+
this.unsubscribe();
|
|
139
|
+
return this.addon.stop(this.alias);
|
|
140
|
+
});
|
|
141
|
+
function stop() {
|
|
142
|
+
return _stop.apply(this, arguments);
|
|
143
|
+
}
|
|
144
|
+
return stop;
|
|
145
|
+
}();
|
|
146
|
+
_proto.initialize = /*#__PURE__*/function () {
|
|
147
|
+
var _initialize = _asyncToGenerator(function* (config) {
|
|
148
|
+
var _config$mnemonicSeed;
|
|
149
|
+
var seed = (_config$mnemonicSeed = config.mnemonicSeed) != null ? _config$mnemonicSeed : config.seedHex;
|
|
150
|
+
if (seed == null) throw new Error('Missing mnemonicSeed');
|
|
151
|
+
yield this.addon.initialize(seed, config.account, config.alias, config.network, config.defaultHost, config.defaultPort);
|
|
152
|
+
});
|
|
153
|
+
function initialize(_x4) {
|
|
154
|
+
return _initialize.apply(this, arguments);
|
|
155
|
+
}
|
|
156
|
+
return initialize;
|
|
157
|
+
}();
|
|
158
|
+
_proto.startSync = /*#__PURE__*/function () {
|
|
159
|
+
var _startSync = _asyncToGenerator(function* () {
|
|
160
|
+
yield this.addon.startSync(this.alias);
|
|
161
|
+
});
|
|
162
|
+
function startSync() {
|
|
163
|
+
return _startSync.apply(this, arguments);
|
|
164
|
+
}
|
|
165
|
+
return startSync;
|
|
166
|
+
}();
|
|
167
|
+
_proto.stopSync = /*#__PURE__*/function () {
|
|
168
|
+
var _stopSync = _asyncToGenerator(function* () {
|
|
169
|
+
yield this.addon.stopSync(this.alias);
|
|
170
|
+
});
|
|
171
|
+
function stopSync() {
|
|
172
|
+
return _stopSync.apply(this, arguments);
|
|
173
|
+
}
|
|
174
|
+
return stopSync;
|
|
175
|
+
}();
|
|
176
|
+
_proto.deriveShieldedAddress = /*#__PURE__*/function () {
|
|
177
|
+
var _deriveShieldedAddress2 = _asyncToGenerator(function* () {
|
|
178
|
+
return this.addon.deriveShieldedAddress(this.alias);
|
|
179
|
+
});
|
|
180
|
+
function deriveShieldedAddress() {
|
|
181
|
+
return _deriveShieldedAddress2.apply(this, arguments);
|
|
182
|
+
}
|
|
183
|
+
return deriveShieldedAddress;
|
|
184
|
+
}();
|
|
185
|
+
_proto.getBalance = /*#__PURE__*/function () {
|
|
186
|
+
var _getBalance = _asyncToGenerator(function* () {
|
|
187
|
+
var snap = yield this.addon.poll(this.alias);
|
|
188
|
+
return {
|
|
189
|
+
availableCredits: snap.availableCredits,
|
|
190
|
+
totalCredits: snap.totalCredits
|
|
191
|
+
};
|
|
192
|
+
});
|
|
193
|
+
function getBalance() {
|
|
194
|
+
return _getBalance.apply(this, arguments);
|
|
195
|
+
}
|
|
196
|
+
return getBalance;
|
|
197
|
+
}();
|
|
198
|
+
_proto.getTransactions = /*#__PURE__*/function () {
|
|
199
|
+
var _getTransactions = _asyncToGenerator(function* () {
|
|
200
|
+
var snap = yield this.addon.poll(this.alias);
|
|
201
|
+
return snap.transactions;
|
|
202
|
+
});
|
|
203
|
+
function getTransactions() {
|
|
204
|
+
return _getTransactions.apply(this, arguments);
|
|
205
|
+
}
|
|
206
|
+
return getTransactions;
|
|
207
|
+
}();
|
|
208
|
+
_proto.proposeTransfer = /*#__PURE__*/function () {
|
|
209
|
+
var _proposeTransfer = _asyncToGenerator(function* (opts) {
|
|
210
|
+
var raw = yield this.addon.proposeTransfer(this.alias, opts.amountCredits, opts.toAddress, opts.memo);
|
|
211
|
+
return parseJsonObject(raw);
|
|
212
|
+
});
|
|
213
|
+
function proposeTransfer(_x5) {
|
|
214
|
+
return _proposeTransfer.apply(this, arguments);
|
|
215
|
+
}
|
|
216
|
+
return proposeTransfer;
|
|
217
|
+
}();
|
|
218
|
+
_proto.createTransfer = /*#__PURE__*/function () {
|
|
219
|
+
var _createTransfer = _asyncToGenerator(function* (opts) {
|
|
220
|
+
try {
|
|
221
|
+
var raw = yield this.addon.createTransfer(this.alias, opts.proposalId, opts.mnemonicSeed);
|
|
222
|
+
return parseJsonObject(raw);
|
|
223
|
+
} catch (error) {
|
|
224
|
+
var errorMessage = error instanceof Error ? error.message : String(error);
|
|
225
|
+
return {
|
|
226
|
+
errorMessage: errorMessage
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
function createTransfer(_x6) {
|
|
231
|
+
return _createTransfer.apply(this, arguments);
|
|
232
|
+
}
|
|
233
|
+
return createTransfer;
|
|
234
|
+
}();
|
|
235
|
+
_proto.subscribe = function subscribe(callbacks) {
|
|
236
|
+
var _this = this;
|
|
237
|
+
this.callbacks = callbacks;
|
|
238
|
+
this.pump()["catch"](function (error) {
|
|
239
|
+
callbacks.onError({
|
|
240
|
+
alias: _this.alias,
|
|
241
|
+
level: 'error',
|
|
242
|
+
message: "event pump failed: " + String(error)
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
};
|
|
246
|
+
_proto.unsubscribe = function unsubscribe() {
|
|
247
|
+
if (this.timer != null) {
|
|
248
|
+
clearTimeout(this.timer);
|
|
249
|
+
this.timer = undefined;
|
|
250
|
+
}
|
|
251
|
+
this.callbacks = undefined;
|
|
252
|
+
};
|
|
253
|
+
_proto.pump = /*#__PURE__*/function () {
|
|
254
|
+
var _pump = _asyncToGenerator(function* () {
|
|
255
|
+
var _this2 = this;
|
|
256
|
+
if (this.callbacks == null) return;
|
|
257
|
+
var snap = yield this.addon.poll(this.alias);
|
|
258
|
+
var _this$callbacks = this.callbacks,
|
|
259
|
+
onBalanceChanged = _this$callbacks.onBalanceChanged,
|
|
260
|
+
onStatusChanged = _this$callbacks.onStatusChanged,
|
|
261
|
+
onTransactionsChanged = _this$callbacks.onTransactionsChanged,
|
|
262
|
+
onUpdate = _this$callbacks.onUpdate;
|
|
263
|
+
onBalanceChanged({
|
|
264
|
+
availableCredits: snap.availableCredits,
|
|
265
|
+
totalCredits: snap.totalCredits
|
|
266
|
+
});
|
|
267
|
+
if (snap.status !== this.lastStatus) {
|
|
268
|
+
this.lastStatus = snap.status;
|
|
269
|
+
onStatusChanged({
|
|
270
|
+
alias: this.alias,
|
|
271
|
+
name: snap.status
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
onTransactionsChanged({
|
|
275
|
+
transactions: snap.transactions
|
|
276
|
+
});
|
|
277
|
+
onUpdate({
|
|
278
|
+
alias: this.alias,
|
|
279
|
+
scanProgress: snap.scanProgress,
|
|
280
|
+
networkBlockHeight: snap.networkBlockHeight
|
|
281
|
+
});
|
|
282
|
+
var delay = snap.status === 'SYNCING' ? 500 : 2000;
|
|
283
|
+
this.timer = setTimeout(function () {
|
|
284
|
+
_this2.pump()["catch"](function (error) {
|
|
285
|
+
var _this2$callbacks;
|
|
286
|
+
(_this2$callbacks = _this2.callbacks) == null || _this2$callbacks.onError({
|
|
287
|
+
alias: _this2.alias,
|
|
288
|
+
level: 'error',
|
|
289
|
+
message: "event pump failed: " + String(error)
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
}, delay);
|
|
293
|
+
});
|
|
294
|
+
function pump() {
|
|
295
|
+
return _pump.apply(this, arguments);
|
|
296
|
+
}
|
|
297
|
+
return pump;
|
|
298
|
+
}();
|
|
299
|
+
return Synchronizer;
|
|
300
|
+
}();
|
|
301
|
+
var makeSynchronizer = /*#__PURE__*/function () {
|
|
302
|
+
var _ref = _asyncToGenerator(function* (config) {
|
|
303
|
+
var addon = loadNativeAddon();
|
|
304
|
+
var synchronizer = new Synchronizer(config.alias, config.network, addon);
|
|
305
|
+
yield synchronizer.initialize(config);
|
|
306
|
+
return synchronizer;
|
|
307
|
+
});
|
|
308
|
+
return function makeSynchronizer(_x7) {
|
|
309
|
+
return _ref.apply(this, arguments);
|
|
310
|
+
};
|
|
311
|
+
}();
|
|
312
|
+
function makeNodeDashShieldedModule(opts) {
|
|
313
|
+
fs.mkdirSync(opts.documentDirectory, {
|
|
314
|
+
recursive: true
|
|
315
|
+
});
|
|
316
|
+
var addon = loadNativeAddon();
|
|
317
|
+
addon.setDocumentDirectory(opts.documentDirectory);
|
|
318
|
+
return {
|
|
319
|
+
Tools: Tools,
|
|
320
|
+
makeSynchronizer: makeSynchronizer
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
exports.Synchronizer = Synchronizer;
|
|
325
|
+
exports.Tools = Tools;
|
|
326
|
+
exports.makeNodeDashShieldedModule = makeNodeDashShieldedModule;
|
|
327
|
+
exports.makeSynchronizer = makeSynchronizer;
|
|
328
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sources":["../../src/load-addon.ts","../../src/node.ts"],"sourcesContent":["import { existsSync } from 'fs'\nimport { join } from 'path'\n\nexport interface NativeDashAddon {\n setDocumentDirectory: (path: string) => void\n initialize: (\n mnemonicSeed: string,\n account: number,\n alias: string,\n networkName: string,\n defaultHost: string,\n defaultPort: number\n ) => Promise<void>\n stop: (alias: string) => Promise<string>\n startSync: (alias: string) => Promise<void>\n stopSync: (alias: string) => Promise<void>\n deriveShieldedAddress: (alias: string) => Promise<{ shieldedAddress: string }>\n isValidAddress: (address: string, network: string) => boolean\n deriveViewingKey: (mnemonicSeed: string, network: string) => string\n warmUpProver: () => Promise<void>\n isProverReady: () => boolean\n poll: (\n alias: string\n ) => Promise<{\n alias: string\n status: string\n scanProgress: number\n networkBlockHeight: number\n availableCredits: string\n totalCredits: string\n transactions: Array<{\n txid: string\n blockTimeInSeconds: number\n minedHeight: number\n value: string\n fee?: string\n toAddress?: string\n memos: string[]\n }>\n }>\n proposeTransfer: (\n alias: string,\n amountCredits: string,\n toAddress: string,\n memo?: string\n ) => Promise<string>\n createTransfer: (\n alias: string,\n proposalId: string,\n mnemonicSeed: string\n ) => Promise<string>\n}\n\nfunction candidatePaths(): string[] {\n const here = __dirname\n const platform = `${process.platform}-${process.arch}`\n const out: string[] = []\n let dir = here\n for (let i = 0; i < 6; i++) {\n out.push(join(dir, 'prebuilds', platform, 'dashshielded.node'))\n out.push(join(dir, 'rust', 'target', 'release', 'libdashshielded.dylib'))\n out.push(join(dir, 'rust', 'target', 'release', 'libdashshielded.so'))\n const parent = join(dir, '..')\n if (parent === dir) break\n dir = parent\n }\n return out\n}\n\nlet cached: NativeDashAddon | undefined\n\nexport function loadNativeAddon(): NativeDashAddon {\n if (cached != null) return cached\n\n const errors: string[] = []\n const missing: string[] = []\n for (const candidate of candidatePaths()) {\n try {\n if (!existsSync(candidate)) {\n missing.push(candidate)\n continue\n }\n const mod = require(candidate) as NativeDashAddon\n if (typeof mod.initialize !== 'function') continue\n cached = mod\n return cached\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n errors.push(`${candidate}: ${message}`)\n }\n }\n\n throw new Error(\n 'dash-shielded-native Node addon not found. Run `npm run build-native-host`. ' +\n (errors.length > 0\n ? errors.join('; ')\n : `Looked in: ${missing.join(', ')}`)\n )\n}\n","import { mkdirSync } from 'fs'\n\nimport { loadNativeAddon, NativeDashAddon } from './load-addon'\nimport {\n Addresses,\n CreateTransferOpts,\n InitializerConfig,\n Network,\n ProposalSuccess,\n ProposeTransferOpts,\n SpendFailure,\n SpendSuccess,\n SynchronizerCallbacks,\n ViewingKeySet\n} from './types'\n\nexport * from './types'\n\nexport interface MakeNodeDashShieldedOpts {\n documentDirectory: string\n}\n\nfunction parseJsonObject(value: string): unknown {\n try {\n return JSON.parse(value)\n } catch {\n return { errorMessage: value }\n }\n}\n\nexport const Tools = {\n deriveViewingKey: (\n mnemonicSeed: string,\n network: Network\n ): Promise<ViewingKeySet> => {\n const addon = loadNativeAddon()\n return Promise.resolve({\n fullViewingKey: addon.deriveViewingKey(mnemonicSeed, network)\n })\n },\n deriveShieldedAddress: async (\n mnemonicSeed: string,\n network: Network,\n account: number = 0\n ): Promise<string> => {\n const addon = loadNativeAddon()\n const alias = `tools-addr-${network}-${account}`\n await addon.initialize(mnemonicSeed, account, alias, network, '', 0)\n const { shieldedAddress } = await addon.deriveShieldedAddress(alias)\n await addon.stop(alias)\n return shieldedAddress\n },\n isValidAddress: (\n address: string,\n network: Network = 'mainnet'\n ): Promise<boolean> => {\n const addon = loadNativeAddon()\n return Promise.resolve(addon.isValidAddress(address, network))\n },\n warmUpProver: async (): Promise<void> => {\n const addon = loadNativeAddon()\n await addon.warmUpProver()\n },\n isProverReady: (): Promise<boolean> => {\n const addon = loadNativeAddon()\n return Promise.resolve(addon.isProverReady())\n }\n}\n\nexport class Synchronizer {\n alias: string\n network: Network\n private readonly addon: NativeDashAddon\n private timer?: ReturnType<typeof setTimeout>\n private callbacks?: SynchronizerCallbacks\n private lastStatus?: string\n\n constructor(alias: string, network: Network, addon: NativeDashAddon) {\n this.alias = alias\n this.network = network\n this.addon = addon\n }\n\n async stop(): Promise<string> {\n this.unsubscribe()\n return this.addon.stop(this.alias)\n }\n\n async initialize(config: InitializerConfig): Promise<void> {\n const seed = config.mnemonicSeed ?? config.seedHex\n if (seed == null) throw new Error('Missing mnemonicSeed')\n await this.addon.initialize(\n seed,\n config.account,\n config.alias,\n config.network,\n config.defaultHost,\n config.defaultPort\n )\n }\n\n async startSync(): Promise<void> {\n await this.addon.startSync(this.alias)\n }\n\n async stopSync(): Promise<void> {\n await this.addon.stopSync(this.alias)\n }\n\n async deriveShieldedAddress(): Promise<Addresses> {\n return this.addon.deriveShieldedAddress(this.alias)\n }\n\n async getBalance(): Promise<{\n availableCredits: string\n totalCredits: string\n }> {\n const snap = await this.addon.poll(this.alias)\n return {\n availableCredits: snap.availableCredits,\n totalCredits: snap.totalCredits\n }\n }\n\n async getTransactions(): Promise<\n Array<{\n txid: string\n blockTimeInSeconds: number\n minedHeight: number\n value: string\n fee?: string\n toAddress?: string\n memos: string[]\n }>\n > {\n const snap = await this.addon.poll(this.alias)\n return snap.transactions\n }\n\n async proposeTransfer(opts: ProposeTransferOpts): Promise<ProposalSuccess> {\n const raw = await this.addon.proposeTransfer(\n this.alias,\n opts.amountCredits,\n opts.toAddress,\n opts.memo\n )\n return parseJsonObject(raw) as ProposalSuccess\n }\n\n async createTransfer(\n opts: CreateTransferOpts\n ): Promise<SpendSuccess | SpendFailure> {\n try {\n const raw = await this.addon.createTransfer(\n this.alias,\n opts.proposalId,\n opts.mnemonicSeed\n )\n return parseJsonObject(raw) as SpendSuccess\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error)\n return { errorMessage }\n }\n }\n\n subscribe(callbacks: SynchronizerCallbacks): void {\n this.callbacks = callbacks\n this.pump().catch(error => {\n callbacks.onError({\n alias: this.alias,\n level: 'error',\n message: `event pump failed: ${String(error)}`\n })\n })\n }\n\n unsubscribe(): void {\n if (this.timer != null) {\n clearTimeout(this.timer)\n this.timer = undefined\n }\n this.callbacks = undefined\n }\n\n private async pump(): Promise<void> {\n if (this.callbacks == null) return\n const snap = await this.addon.poll(this.alias)\n const {\n onBalanceChanged,\n onStatusChanged,\n onTransactionsChanged,\n onUpdate\n } = this.callbacks\n\n onBalanceChanged({\n availableCredits: snap.availableCredits,\n totalCredits: snap.totalCredits\n })\n\n if (snap.status !== this.lastStatus) {\n this.lastStatus = snap.status\n onStatusChanged({\n alias: this.alias,\n name: snap.status as 'STOPPED' | 'DISCONNECTED' | 'SYNCING' | 'SYNCED'\n })\n }\n\n onTransactionsChanged({ transactions: snap.transactions })\n onUpdate({\n alias: this.alias,\n scanProgress: snap.scanProgress,\n networkBlockHeight: snap.networkBlockHeight\n })\n\n const delay = snap.status === 'SYNCING' ? 500 : 2000\n this.timer = setTimeout(() => {\n this.pump().catch(error => {\n this.callbacks?.onError({\n alias: this.alias,\n level: 'error',\n message: `event pump failed: ${String(error)}`\n })\n })\n }, delay)\n }\n}\n\nexport const makeSynchronizer = async (\n config: InitializerConfig\n): Promise<Synchronizer> => {\n const addon = loadNativeAddon()\n const synchronizer = new Synchronizer(config.alias, config.network, addon)\n await synchronizer.initialize(config)\n return synchronizer\n}\n\nexport function makeNodeDashShieldedModule(\n opts: MakeNodeDashShieldedOpts\n): {\n Tools: typeof Tools\n makeSynchronizer: typeof makeSynchronizer\n} {\n mkdirSync(opts.documentDirectory, { recursive: true })\n const addon = loadNativeAddon()\n addon.setDocumentDirectory(opts.documentDirectory)\n return { Tools, makeSynchronizer }\n}\n"],"names":["candidatePaths","here","__dirname","platform","process","arch","out","dir","i","push","join","parent","cached","loadNativeAddon","errors","missing","_i2","_candidatePaths2","length","candidate","existsSync","mod","require","initialize","error","message","Error","String","parseJsonObject","value","JSON","parse","_unused","errorMessage","Tools","deriveViewingKey","mnemonicSeed","network","addon","Promise","resolve","fullViewingKey","deriveShieldedAddress","_deriveShieldedAddress","_asyncToGenerator","account","alias","_yield$addon$deriveSh","shieldedAddress","stop","_x","_x2","_x3","apply","arguments","isValidAddress","address","warmUpProver","_warmUpProver","isProverReady","Synchronizer","_proto","prototype","_stop","unsubscribe","_initialize","config","_config$mnemonicSeed","seed","seedHex","defaultHost","defaultPort","_x4","startSync","_startSync","stopSync","_stopSync","_deriveShieldedAddress2","getBalance","_getBalance","snap","poll","availableCredits","totalCredits","getTransactions","_getTransactions","transactions","proposeTransfer","_proposeTransfer","opts","raw","amountCredits","toAddress","memo","_x5","createTransfer","_createTransfer","proposalId","_x6","subscribe","callbacks","_this","pump","onError","level","timer","clearTimeout","undefined","_pump","_this2","_this$callbacks","onBalanceChanged","onStatusChanged","onTransactionsChanged","onUpdate","status","lastStatus","name","scanProgress","networkBlockHeight","delay","setTimeout","_this2$callbacks","makeSynchronizer","_ref","synchronizer","_x7","makeNodeDashShieldedModule","mkdirSync","documentDirectory","recursive","setDocumentDirectory"],"mappings":"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"}
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export declare type Network = 'mainnet' | 'testnet';
|
|
2
|
+
export interface ViewingKeySet {
|
|
3
|
+
fullViewingKey: string;
|
|
4
|
+
}
|
|
5
|
+
export interface InitializerConfig {
|
|
6
|
+
network: Network;
|
|
7
|
+
seedHex?: string;
|
|
8
|
+
mnemonicSeed?: string;
|
|
9
|
+
account: number;
|
|
10
|
+
alias: string;
|
|
11
|
+
dataDir: string;
|
|
12
|
+
defaultHost: string;
|
|
13
|
+
defaultPort: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ProposeTransferOpts {
|
|
16
|
+
toAddress: string;
|
|
17
|
+
amountCredits: string;
|
|
18
|
+
memo?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface CreateTransferOpts {
|
|
21
|
+
proposalId: string;
|
|
22
|
+
mnemonicSeed: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ProposalSuccess {
|
|
25
|
+
proposalId: string;
|
|
26
|
+
feeCredits: string;
|
|
27
|
+
}
|
|
28
|
+
export interface SpendSuccess {
|
|
29
|
+
txid: string;
|
|
30
|
+
}
|
|
31
|
+
export interface SpendFailure {
|
|
32
|
+
errorMessage?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface BalanceEvent {
|
|
35
|
+
availableCredits: string;
|
|
36
|
+
totalCredits: string;
|
|
37
|
+
}
|
|
38
|
+
export interface StatusEvent {
|
|
39
|
+
alias: string;
|
|
40
|
+
name: 'STOPPED' | 'DISCONNECTED' | 'SYNCING' | 'SYNCED';
|
|
41
|
+
}
|
|
42
|
+
export interface DashShieldedTx {
|
|
43
|
+
txid: string;
|
|
44
|
+
blockTimeInSeconds: number;
|
|
45
|
+
minedHeight: number;
|
|
46
|
+
value: string;
|
|
47
|
+
fee?: string;
|
|
48
|
+
toAddress?: string;
|
|
49
|
+
memos: string[];
|
|
50
|
+
}
|
|
51
|
+
export interface TransactionEvent {
|
|
52
|
+
transactions: DashShieldedTx[];
|
|
53
|
+
}
|
|
54
|
+
export interface UpdateEvent {
|
|
55
|
+
alias: string;
|
|
56
|
+
scanProgress: number;
|
|
57
|
+
networkBlockHeight: number;
|
|
58
|
+
}
|
|
59
|
+
export interface ErrorEvent {
|
|
60
|
+
alias: string;
|
|
61
|
+
level: 'critical' | 'error';
|
|
62
|
+
message: string;
|
|
63
|
+
}
|
|
64
|
+
export interface SynchronizerCallbacks {
|
|
65
|
+
onBalanceChanged(balance: BalanceEvent): void;
|
|
66
|
+
onStatusChanged(status: StatusEvent): void;
|
|
67
|
+
onTransactionsChanged(transactions: TransactionEvent): void;
|
|
68
|
+
onUpdate(event: UpdateEvent): void;
|
|
69
|
+
onError(error: ErrorEvent): void;
|
|
70
|
+
}
|
|
71
|
+
export interface Addresses {
|
|
72
|
+
shieldedAddress: string;
|
|
73
|
+
}
|
package/node.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib/src/node'
|
package/node.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dash-shielded-native",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Native Dash Platform shielded wallet library for React Native and Node.js",
|
|
5
|
+
"homepage": "https://github.com/EdgeApp/dash-shielded-native",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git@github.com:EdgeApp/dash-shielded-native.git"
|
|
9
|
+
},
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"author": "Airbitz Inc dba Edge",
|
|
12
|
+
"main": "lib/rndash.rn.js",
|
|
13
|
+
"types": "lib/react-native.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./lib/react-native.d.ts",
|
|
17
|
+
"default": "./lib/rndash.rn.js"
|
|
18
|
+
},
|
|
19
|
+
"./node": {
|
|
20
|
+
"types": "./lib/node.d.ts",
|
|
21
|
+
"default": "./lib/src/node.js"
|
|
22
|
+
},
|
|
23
|
+
"./rn": {
|
|
24
|
+
"types": "./lib/react-native.d.ts",
|
|
25
|
+
"default": "./lib/rndash.rn.js"
|
|
26
|
+
},
|
|
27
|
+
"./package.json": "./package.json"
|
|
28
|
+
},
|
|
29
|
+
"typesVersions": {
|
|
30
|
+
"*": {
|
|
31
|
+
"node": [
|
|
32
|
+
"lib/node.d.ts"
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"files": [
|
|
37
|
+
"/android/build.gradle",
|
|
38
|
+
"/android/src/",
|
|
39
|
+
"/CHANGELOG.md",
|
|
40
|
+
"/dash-shielded-native.podspec",
|
|
41
|
+
"/ios/",
|
|
42
|
+
"/lib/",
|
|
43
|
+
"/LICENSE",
|
|
44
|
+
"/node.d.ts",
|
|
45
|
+
"/node.js",
|
|
46
|
+
"/package.json",
|
|
47
|
+
"/prebuilds/",
|
|
48
|
+
"/README.md",
|
|
49
|
+
"/rust/build.rs",
|
|
50
|
+
"/rust/Cargo.lock",
|
|
51
|
+
"/rust/Cargo.toml",
|
|
52
|
+
"/rust/rust-toolchain.toml",
|
|
53
|
+
"/rust/src/",
|
|
54
|
+
"/rust/uniffi-bindgen.rs",
|
|
55
|
+
"/src/"
|
|
56
|
+
],
|
|
57
|
+
"scripts": {
|
|
58
|
+
"build-native-android": "node -r sucrase/register ./scripts/build-native-android.ts",
|
|
59
|
+
"build-native-host": "node -r sucrase/register ./scripts/build-native-host.ts",
|
|
60
|
+
"build-native-ios": "node -r sucrase/register ./scripts/build-native-ios.ts",
|
|
61
|
+
"fix": "npm run lint -- --fix",
|
|
62
|
+
"lint": "eslint .",
|
|
63
|
+
"prepare": "rimraf lib && rollup -c && tsc",
|
|
64
|
+
"prepublishOnly": "npm run build-native-ios && npm run build-native-android && npm run build-native-host",
|
|
65
|
+
"smoke-node": "node -r sucrase/register ./scripts/smoke-node.ts"
|
|
66
|
+
},
|
|
67
|
+
"dependencies": {
|
|
68
|
+
"biggystring": "^4.2.3"
|
|
69
|
+
},
|
|
70
|
+
"devDependencies": {
|
|
71
|
+
"@babel/core": "^7.9.6",
|
|
72
|
+
"@babel/plugin-transform-object-assign": "^7.8.3",
|
|
73
|
+
"@babel/preset-env": "^7.9.6",
|
|
74
|
+
"@babel/preset-typescript": "^7.9.0",
|
|
75
|
+
"@types/node": "^14.0.5",
|
|
76
|
+
"@types/react": "^16.14.62",
|
|
77
|
+
"@types/react-native": "^0.62.11",
|
|
78
|
+
"@typescript-eslint/eslint-plugin": "^2.34.0",
|
|
79
|
+
"@typescript-eslint/parser": "^3.0.1",
|
|
80
|
+
"babel-eslint": "^10.1.0",
|
|
81
|
+
"eslint": "^7.15.0",
|
|
82
|
+
"eslint-config-standard-kit": "^0.14.4",
|
|
83
|
+
"eslint-plugin-import": "^2.20.2",
|
|
84
|
+
"eslint-plugin-prettier": "^3.1.3",
|
|
85
|
+
"eslint-plugin-promise": "^4.2.1",
|
|
86
|
+
"eslint-plugin-simple-import-sort": "^5.0.3",
|
|
87
|
+
"eslint-plugin-standard": "^4.0.1",
|
|
88
|
+
"prettier": "^2.0.5",
|
|
89
|
+
"rimraf": "^3.0.2",
|
|
90
|
+
"rollup": "^2.80.0",
|
|
91
|
+
"rollup-plugin-babel": "^4.4.0",
|
|
92
|
+
"rollup-plugin-filesize": "^10.0.0",
|
|
93
|
+
"rollup-plugin-node-resolve": "^5.2.0",
|
|
94
|
+
"sucrase": "^3.15.0",
|
|
95
|
+
"typescript": "^3.9.3"
|
|
96
|
+
},
|
|
97
|
+
"peerDependencies": {
|
|
98
|
+
"react-native": ">=0.47.0 <1.0.0"
|
|
99
|
+
},
|
|
100
|
+
"peerDependenciesMeta": {
|
|
101
|
+
"react-native": {
|
|
102
|
+
"optional": true
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
Binary file
|