-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.js
More file actions
70 lines (57 loc) · 1.77 KB
/
index.js
File metadata and controls
70 lines (57 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
const util = require('util');
// ===== ENV DETECTION =====
const isBare = require('./modules/runtime.js').isBare();
const isBrowser = typeof window !== 'undefined';
const isRN = typeof navigator !== 'undefined' && navigator.product === 'ReactNative';
// ===== POLYFILLS =====
if (isBare) {
global.TextEncoder = util.TextEncoder;
global.TextDecoder = util.TextDecoder;
}
// ===== COMPATIBILITY LAYER =====
if (isBrowser || isRN) require('./modules/compat/sodium').ensureSodiumCompat(); // PBKDF2 ON SODIUM
if (isBrowser) require('./modules/compat/dom').ensureDOMCompat(); // DOM COMPATIBILITY (ONLY FOR BROWSER)
// ===== MODULES =====
const address = require('./modules/address.js');
const hash = require('./modules/hash.js');
const mnemonic = require('./modules/mnemonic.js');
const nonce = require('./modules/nonce.js');
const signature = require('./modules/signature.js');
const data = require('./modules/data.js');
const utils = require('./modules/utils.js');
const transaction = require('./modules/transaction.js');
const operation = require('./modules/operation.js');
const constants = require('./constants.js');
// ===== OPTIONAL (browser/RN) =====
let b4a;
let sodium;
try {
b4a = require('b4a');
} catch {}
try {
sodium = require('sodium-universal');
} catch {}
// ===== BASE =====
const sign = signature.sign;
// ===== EXPORT OBJECT =====
const exported = {
address,
hash,
mnemonic,
nonce,
signature,
utils,
transaction,
operation,
sign,
// node/base
data,
MAINNET_ID: constants.TRAC_NETWORK_MAINNET_ID,
TESTNET_ID: constants.TRAC_NETWORK_TESTNET_ID
};
// ===== BROWSER / RN EXTENSIONS =====
if (isBrowser || isRN) {
if (b4a) exported.b4a = b4a;
if (sodium) exported.sodium = sodium;
}
module.exports = exported;