@chainflip/redis 1.0.2 → 2.1.0-beta.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/dist/_virtual/rolldown_runtime.cjs +29 -0
- package/dist/index.cjs +65 -223
- package/dist/index.d.cts +51 -384
- package/dist/index.d.mts +55 -0
- package/dist/index.mjs +65 -0
- package/dist/parsers.cjs +119 -0
- package/dist/parsers.d.cts +560 -0
- package/dist/parsers.d.mts +560 -0
- package/dist/parsers.mjs +114 -0
- package/dist/utils.cjs +12 -0
- package/dist/utils.d.cts +7 -0
- package/dist/utils.d.mts +7 -0
- package/dist/utils.mjs +10 -0
- package/package.json +8 -10
- package/dist/index.d.ts +0 -387
- package/dist/index.js +0 -201
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
//#region rolldown:runtime
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
+
for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
11
|
+
key = keys[i];
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except) {
|
|
13
|
+
__defProp(to, key, {
|
|
14
|
+
get: ((k) => from[k]).bind(null, key),
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
23
|
+
value: mod,
|
|
24
|
+
enumerable: true
|
|
25
|
+
}) : target, mod));
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
|
|
29
|
+
exports.__toESM = __toESM;
|
package/dist/index.cjs
CHANGED
|
@@ -1,227 +1,69 @@
|
|
|
1
|
-
|
|
1
|
+
const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_parsers = require('./parsers.cjs');
|
|
3
|
+
let _chainflip_utils_bytes = require("@chainflip/utils/bytes");
|
|
4
|
+
let _chainflip_utils_chainflip = require("@chainflip/utils/chainflip");
|
|
5
|
+
let _chainflip_utils_ss58 = require("@chainflip/utils/ss58");
|
|
6
|
+
_chainflip_utils_ss58 = require_rolldown_runtime.__toESM(_chainflip_utils_ss58);
|
|
7
|
+
let _chainflip_utils_string = require("@chainflip/utils/string");
|
|
8
|
+
let assert = require("assert");
|
|
9
|
+
assert = require_rolldown_runtime.__toESM(assert);
|
|
10
|
+
let ioredis = require("ioredis");
|
|
11
|
+
ioredis = require_rolldown_runtime.__toESM(ioredis);
|
|
2
12
|
|
|
3
|
-
|
|
4
|
-
var chainflip = require('@chainflip/utils/chainflip');
|
|
5
|
-
var consts = require('@chainflip/utils/consts');
|
|
6
|
-
var number = require('@chainflip/utils/number');
|
|
7
|
-
var ss58 = require('@chainflip/utils/ss58');
|
|
8
|
-
var string = require('@chainflip/utils/string');
|
|
9
|
-
var assert = require('assert');
|
|
10
|
-
var Redis = require('ioredis');
|
|
11
|
-
var zod = require('zod');
|
|
12
|
-
|
|
13
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
-
|
|
15
|
-
function _interopNamespace(e) {
|
|
16
|
-
if (e && e.__esModule) return e;
|
|
17
|
-
var n = Object.create(null);
|
|
18
|
-
if (e) {
|
|
19
|
-
Object.keys(e).forEach(function (k) {
|
|
20
|
-
if (k !== 'default') {
|
|
21
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
22
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
23
|
-
enumerable: true,
|
|
24
|
-
get: function () { return e[k]; }
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
n.default = e;
|
|
30
|
-
return Object.freeze(n);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
var ss58__namespace = /*#__PURE__*/_interopNamespace(ss58);
|
|
34
|
-
var assert__default = /*#__PURE__*/_interopDefault(assert);
|
|
35
|
-
var Redis__default = /*#__PURE__*/_interopDefault(Redis);
|
|
36
|
-
|
|
37
|
-
// src/index.ts
|
|
38
|
-
|
|
39
|
-
// src/utils.ts
|
|
40
|
-
var snakeToCamelCase = (str) => str.replace(/_(.)/g, (match, group) => group.toUpperCase());
|
|
41
|
-
var transformKeysToCamelCase = (obj) => {
|
|
42
|
-
if (obj == null || typeof obj !== "object") return obj;
|
|
43
|
-
if (Array.isArray(obj)) return obj.map(transformKeysToCamelCase);
|
|
44
|
-
return Object.fromEntries(
|
|
45
|
-
Object.entries(obj).map(([key, value]) => [
|
|
46
|
-
snakeToCamelCase(key),
|
|
47
|
-
transformKeysToCamelCase(value)
|
|
48
|
-
])
|
|
49
|
-
);
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
// src/index.ts
|
|
53
|
-
var uncheckedAssetAndChain = zod.z.object({
|
|
54
|
-
asset: zod.z.string(),
|
|
55
|
-
chain: zod.z.string()
|
|
56
|
-
});
|
|
57
|
-
var assetAndChain = uncheckedAssetAndChain.refine(
|
|
58
|
-
(value) => chainflip.isValidAssetAndChain(value),
|
|
59
|
-
{ message: "Invalid asset and chain" }
|
|
60
|
-
).transform((value) => chainflip.getInternalAsset(value));
|
|
61
|
-
var numericString = zod.z.string().regex(/^[0-9]+$/);
|
|
62
|
-
var hexString = zod.z.string().refine((v) => /^0x[0-9a-f]*$/i.test(v));
|
|
63
|
-
var u128 = zod.z.union([zod.z.number(), numericString, hexString]).transform((arg) => BigInt(arg));
|
|
64
|
-
var chainflipAddress = zod.z.string().refine(
|
|
65
|
-
(address) => ss58__namespace.decode(address).ss58Format === consts.CHAINFLIP_SS58_PREFIX,
|
|
66
|
-
(address) => ({ message: `${address} is not a valid Chainflip address` })
|
|
67
|
-
);
|
|
68
|
-
var jsonString = zod.z.string().transform((value) => JSON.parse(value));
|
|
69
|
-
var bitcoinDeposit = zod.z.object({
|
|
70
|
-
tx_id: hexString.transform((value) => bytes.reverseBytes(value).slice(2)),
|
|
71
|
-
vout: zod.z.number().int()
|
|
72
|
-
}).transform((obj) => ({ ...obj, type: "Bitcoin" }));
|
|
73
|
-
var evmDeposit = zod.z.object({ tx_hashes: zod.z.array(hexString) }).transform((obj) => ({ ...obj, type: "EVM" }));
|
|
74
|
-
var polkadotDeposit = zod.z.object({ extrinsic_index: zod.z.number() }).transform((obj) => ({ ...obj, type: "Polkadot" }));
|
|
75
|
-
var depositSchema = jsonString.pipe(
|
|
76
|
-
zod.z.object({
|
|
77
|
-
amount: u128,
|
|
78
|
-
asset: assetAndChain,
|
|
79
|
-
deposit_chain_block_height: zod.z.number(),
|
|
80
|
-
deposit_details: zod.z.union([evmDeposit, bitcoinDeposit, polkadotDeposit]).nullable()
|
|
81
|
-
})
|
|
82
|
-
);
|
|
83
|
-
var broadcastParsers = {
|
|
84
|
-
Ethereum: zod.z.object({
|
|
85
|
-
tx_out_id: zod.z.object({
|
|
86
|
-
signature: zod.z.object({
|
|
87
|
-
k_times_g_address: zod.z.array(zod.z.number()),
|
|
88
|
-
s: zod.z.array(zod.z.number())
|
|
89
|
-
})
|
|
90
|
-
}),
|
|
91
|
-
tx_ref: zod.z.object({
|
|
92
|
-
hash: hexString
|
|
93
|
-
}).transform(({ hash }) => hash)
|
|
94
|
-
}),
|
|
95
|
-
Polkadot: zod.z.object({
|
|
96
|
-
tx_out_id: zod.z.object({ signature: zod.z.string() }),
|
|
97
|
-
tx_ref: zod.z.object({
|
|
98
|
-
transaction_id: zod.z.object({
|
|
99
|
-
block_number: zod.z.number(),
|
|
100
|
-
extrinsic_index: zod.z.number()
|
|
101
|
-
})
|
|
102
|
-
}).transform(
|
|
103
|
-
({ transaction_id }) => `${transaction_id.block_number}-${transaction_id.extrinsic_index}`
|
|
104
|
-
)
|
|
105
|
-
}),
|
|
106
|
-
Assethub: zod.z.object({
|
|
107
|
-
tx_out_id: zod.z.object({ signature: zod.z.string() }),
|
|
108
|
-
tx_ref: zod.z.object({
|
|
109
|
-
transaction_id: zod.z.object({
|
|
110
|
-
block_number: zod.z.number(),
|
|
111
|
-
extrinsic_index: zod.z.number()
|
|
112
|
-
})
|
|
113
|
-
}).transform(
|
|
114
|
-
({ transaction_id }) => `${transaction_id.block_number}-${transaction_id.extrinsic_index}`
|
|
115
|
-
)
|
|
116
|
-
}),
|
|
117
|
-
Bitcoin: zod.z.object({
|
|
118
|
-
tx_out_id: zod.z.object({ hash: zod.z.string() }),
|
|
119
|
-
tx_ref: zod.z.object({
|
|
120
|
-
hash: zod.z.string().transform((value) => value.startsWith("0x") ? value.slice(2) : value)
|
|
121
|
-
}).transform(({ hash }) => hash)
|
|
122
|
-
}),
|
|
123
|
-
Arbitrum: zod.z.object({
|
|
124
|
-
tx_out_id: zod.z.object({
|
|
125
|
-
signature: zod.z.object({
|
|
126
|
-
k_times_g_address: zod.z.array(zod.z.number()),
|
|
127
|
-
s: zod.z.array(zod.z.number())
|
|
128
|
-
})
|
|
129
|
-
}),
|
|
130
|
-
tx_ref: zod.z.object({
|
|
131
|
-
hash: hexString
|
|
132
|
-
}).transform(({ hash }) => hash)
|
|
133
|
-
})
|
|
134
|
-
};
|
|
135
|
-
var accountFee = zod.z.object({
|
|
136
|
-
account: chainflipAddress,
|
|
137
|
-
bps: zod.z.number()
|
|
138
|
-
}).transform(({ account, bps }) => ({ account, commissionBps: bps }));
|
|
139
|
-
var vaultDepositSchema = jsonString.pipe(
|
|
140
|
-
zod.z.object({
|
|
141
|
-
amount: u128,
|
|
142
|
-
destination_address: zod.z.string(),
|
|
143
|
-
input_asset: assetAndChain,
|
|
144
|
-
output_asset: assetAndChain,
|
|
145
|
-
deposit_chain_block_height: zod.z.number().nullable().optional(),
|
|
146
|
-
affiliate_fees: zod.z.array(accountFee),
|
|
147
|
-
broker_fee: accountFee.optional(),
|
|
148
|
-
max_boost_fee: zod.z.number().optional(),
|
|
149
|
-
dca_params: zod.z.object({
|
|
150
|
-
chunk_interval: zod.z.number(),
|
|
151
|
-
number_of_chunks: zod.z.number()
|
|
152
|
-
}).nullable().optional(),
|
|
153
|
-
refund_params: zod.z.object({
|
|
154
|
-
min_price: u128,
|
|
155
|
-
retry_duration: zod.z.number(),
|
|
156
|
-
refund_address: zod.z.string()
|
|
157
|
-
}).nullable().optional(),
|
|
158
|
-
ccm_deposit_metadata: zod.z.object({
|
|
159
|
-
channel_metadata: zod.z.object({
|
|
160
|
-
ccm_additional_data: zod.z.any(),
|
|
161
|
-
message: zod.z.string(),
|
|
162
|
-
gas_budget: zod.z.union([numericString, hexString]).transform((n) => number.hexEncodeNumber(BigInt(n)))
|
|
163
|
-
})
|
|
164
|
-
}).nullable().optional()
|
|
165
|
-
}).transform(transformKeysToCamelCase)
|
|
166
|
-
);
|
|
167
|
-
var mempoolTransaction = jsonString.pipe(
|
|
168
|
-
zod.z.object({
|
|
169
|
-
confirmations: zod.z.number(),
|
|
170
|
-
value: u128,
|
|
171
|
-
tx_hash: zod.z.string(),
|
|
172
|
-
deposit_chain_block_height: zod.z.number().optional()
|
|
173
|
-
})
|
|
174
|
-
);
|
|
13
|
+
//#region src/index.ts
|
|
175
14
|
var RedisClient = class {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
15
|
+
client;
|
|
16
|
+
constructor(url) {
|
|
17
|
+
this.client = new ioredis.default(url);
|
|
18
|
+
}
|
|
19
|
+
async getBroadcast(chain, broadcastId) {
|
|
20
|
+
if (chain === "Solana" || chain === "Polkadot") return null;
|
|
21
|
+
const key = `broadcast:${chain}:${broadcastId}`;
|
|
22
|
+
const value = await this.client.get(key);
|
|
23
|
+
return value ? require_parsers.broadcastParsers[chain].parse(JSON.parse(value)) : null;
|
|
24
|
+
}
|
|
25
|
+
async getDeposits(asset, address) {
|
|
26
|
+
const { chain } = _chainflip_utils_chainflip.assetConstants[asset];
|
|
27
|
+
const key = `deposit:${chain}:${chain === "Assethub" ? _chainflip_utils_ss58.toPublicKey(address) : address}`;
|
|
28
|
+
return (await this.client.lrange(key, 0, -1)).map((depositString) => {
|
|
29
|
+
const { deposit_details, ...deposit } = require_parsers.depositSchema.parse(depositString);
|
|
30
|
+
switch (deposit_details?.type) {
|
|
31
|
+
case "EVM": return {
|
|
32
|
+
...deposit,
|
|
33
|
+
tx_refs: deposit_details.tx_hashes
|
|
34
|
+
};
|
|
35
|
+
case "Bitcoin": return {
|
|
36
|
+
...deposit,
|
|
37
|
+
tx_refs: [deposit_details.tx_id]
|
|
38
|
+
};
|
|
39
|
+
case "Assethub": return {
|
|
40
|
+
...deposit,
|
|
41
|
+
tx_refs: [`${deposit.deposit_chain_block_height}-${deposit_details.extrinsic_index}`]
|
|
42
|
+
};
|
|
43
|
+
default:
|
|
44
|
+
(0, assert.default)(deposit_details === null, "Invalid deposit details");
|
|
45
|
+
return {
|
|
46
|
+
...deposit,
|
|
47
|
+
tx_refs: []
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}).filter((deposit) => deposit.asset === asset).sort((a, b) => a.deposit_chain_block_height - b.deposit_chain_block_height);
|
|
51
|
+
}
|
|
52
|
+
async getMempoolTransaction(chain, address) {
|
|
53
|
+
const key = `mempool:${chain}:${address}`;
|
|
54
|
+
const value = await this.client.get(key);
|
|
55
|
+
return value ? require_parsers.mempoolTransaction.parse(value) : null;
|
|
56
|
+
}
|
|
57
|
+
async getPendingVaultSwap(chain, txId) {
|
|
58
|
+
if (["Solana", "Assethub"].includes(chain)) return null;
|
|
59
|
+
const redisTxId = chain === "Bitcoin" && (0, _chainflip_utils_string.isHex)(`0x${txId}`) ? (0, _chainflip_utils_bytes.reverseBytes)(`0x${txId}`) : txId;
|
|
60
|
+
const value = await this.client.get(`vault_deposit:${chain}:${redisTxId}`);
|
|
61
|
+
return value ? require_parsers.vaultDepositSchema.parse(value) : null;
|
|
62
|
+
}
|
|
63
|
+
quit() {
|
|
64
|
+
return this.client.quit();
|
|
65
|
+
}
|
|
225
66
|
};
|
|
226
67
|
|
|
227
|
-
|
|
68
|
+
//#endregion
|
|
69
|
+
module.exports = RedisClient;
|