@atomiqlabs/lp-lib 14.0.0-dev.11 → 14.0.0-dev.13
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/LICENSE +201 -201
- package/dist/fees/IBtcFeeEstimator.d.ts +3 -3
- package/dist/fees/IBtcFeeEstimator.js +2 -2
- package/dist/index.d.ts +42 -42
- package/dist/index.js +58 -58
- package/dist/info/InfoHandler.d.ts +17 -17
- package/dist/info/InfoHandler.js +61 -61
- package/dist/plugins/IPlugin.d.ts +143 -143
- package/dist/plugins/IPlugin.js +34 -34
- package/dist/plugins/PluginManager.d.ts +112 -112
- package/dist/plugins/PluginManager.js +259 -259
- package/dist/prices/BinanceSwapPrice.d.ts +26 -26
- package/dist/prices/BinanceSwapPrice.js +92 -92
- package/dist/prices/CoinGeckoSwapPrice.d.ts +30 -30
- package/dist/prices/CoinGeckoSwapPrice.js +64 -64
- package/dist/prices/ISwapPrice.d.ts +43 -43
- package/dist/prices/ISwapPrice.js +55 -55
- package/dist/prices/OKXSwapPrice.d.ts +26 -26
- package/dist/prices/OKXSwapPrice.js +92 -92
- package/dist/storage/IIntermediaryStorage.d.ts +18 -18
- package/dist/storage/IIntermediaryStorage.js +2 -2
- package/dist/storagemanager/IntermediaryStorageManager.d.ts +19 -19
- package/dist/storagemanager/IntermediaryStorageManager.js +111 -111
- package/dist/storagemanager/StorageManager.d.ts +13 -13
- package/dist/storagemanager/StorageManager.js +64 -64
- package/dist/swaps/SwapHandler.d.ts +153 -153
- package/dist/swaps/SwapHandler.js +160 -160
- package/dist/swaps/SwapHandlerSwap.d.ts +79 -79
- package/dist/swaps/SwapHandlerSwap.js +78 -78
- package/dist/swaps/assertions/AmountAssertions.d.ts +28 -28
- package/dist/swaps/assertions/AmountAssertions.js +72 -72
- package/dist/swaps/assertions/FromBtcAmountAssertions.d.ts +76 -76
- package/dist/swaps/assertions/FromBtcAmountAssertions.js +172 -172
- package/dist/swaps/assertions/LightningAssertions.d.ts +44 -44
- package/dist/swaps/assertions/LightningAssertions.js +86 -86
- package/dist/swaps/assertions/ToBtcAmountAssertions.d.ts +53 -53
- package/dist/swaps/assertions/ToBtcAmountAssertions.js +150 -150
- package/dist/swaps/escrow/EscrowHandler.d.ts +51 -51
- package/dist/swaps/escrow/EscrowHandler.js +158 -158
- package/dist/swaps/escrow/EscrowHandlerSwap.d.ts +35 -35
- package/dist/swaps/escrow/EscrowHandlerSwap.js +69 -69
- package/dist/swaps/escrow/FromBtcBaseSwap.d.ts +14 -14
- package/dist/swaps/escrow/FromBtcBaseSwap.js +32 -32
- package/dist/swaps/escrow/FromBtcBaseSwapHandler.d.ts +102 -102
- package/dist/swaps/escrow/FromBtcBaseSwapHandler.js +210 -210
- package/dist/swaps/escrow/ToBtcBaseSwap.d.ts +36 -36
- package/dist/swaps/escrow/ToBtcBaseSwap.js +67 -67
- package/dist/swaps/escrow/ToBtcBaseSwapHandler.d.ts +53 -53
- package/dist/swaps/escrow/ToBtcBaseSwapHandler.js +81 -81
- package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.d.ts +83 -83
- package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.js +318 -318
- package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.d.ts +21 -21
- package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.js +50 -50
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.d.ts +107 -107
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.js +675 -648
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.d.ts +33 -33
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.js +91 -91
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.d.ts +104 -104
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.js +659 -629
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.d.ts +55 -55
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.js +120 -120
- package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.d.ts +171 -171
- package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.js +706 -706
- package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.d.ts +26 -26
- package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.js +62 -62
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.d.ts +177 -177
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.js +861 -861
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.d.ts +23 -23
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.js +56 -56
- package/dist/swaps/spv_vault_swap/SpvVault.d.ts +41 -41
- package/dist/swaps/spv_vault_swap/SpvVault.js +111 -111
- package/dist/swaps/spv_vault_swap/SpvVaultSwap.d.ts +67 -67
- package/dist/swaps/spv_vault_swap/SpvVaultSwap.js +158 -158
- package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.d.ts +68 -68
- package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.js +491 -490
- package/dist/swaps/spv_vault_swap/SpvVaults.d.ts +52 -52
- package/dist/swaps/spv_vault_swap/SpvVaults.js +364 -364
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.d.ts +51 -51
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.js +650 -650
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.d.ts +52 -52
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.js +118 -118
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.d.ts +76 -76
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.js +494 -494
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.d.ts +34 -34
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.js +81 -81
- package/dist/utils/Utils.d.ts +29 -29
- package/dist/utils/Utils.js +89 -89
- package/dist/utils/paramcoders/IParamReader.d.ts +5 -5
- package/dist/utils/paramcoders/IParamReader.js +2 -2
- package/dist/utils/paramcoders/IParamWriter.d.ts +4 -4
- package/dist/utils/paramcoders/IParamWriter.js +2 -2
- package/dist/utils/paramcoders/LegacyParamEncoder.d.ts +10 -10
- package/dist/utils/paramcoders/LegacyParamEncoder.js +22 -22
- package/dist/utils/paramcoders/ParamDecoder.d.ts +25 -25
- package/dist/utils/paramcoders/ParamDecoder.js +222 -222
- package/dist/utils/paramcoders/ParamEncoder.d.ts +9 -9
- package/dist/utils/paramcoders/ParamEncoder.js +22 -22
- package/dist/utils/paramcoders/SchemaVerifier.d.ts +21 -21
- package/dist/utils/paramcoders/SchemaVerifier.js +84 -84
- package/dist/utils/paramcoders/server/ServerParamDecoder.d.ts +8 -8
- package/dist/utils/paramcoders/server/ServerParamDecoder.js +107 -107
- package/dist/utils/paramcoders/server/ServerParamEncoder.d.ts +11 -11
- package/dist/utils/paramcoders/server/ServerParamEncoder.js +65 -65
- package/dist/wallets/IBitcoinWallet.d.ts +67 -67
- package/dist/wallets/IBitcoinWallet.js +2 -2
- package/dist/wallets/ILightningWallet.d.ts +117 -117
- package/dist/wallets/ILightningWallet.js +37 -37
- package/dist/wallets/ISpvVaultSigner.d.ts +7 -7
- package/dist/wallets/ISpvVaultSigner.js +2 -2
- package/package.json +36 -36
- package/src/fees/IBtcFeeEstimator.ts +6 -6
- package/src/index.ts +53 -53
- package/src/info/InfoHandler.ts +106 -106
- package/src/plugins/IPlugin.ts +168 -168
- package/src/plugins/PluginManager.ts +336 -336
- package/src/prices/BinanceSwapPrice.ts +113 -113
- package/src/prices/CoinGeckoSwapPrice.ts +87 -87
- package/src/prices/ISwapPrice.ts +88 -88
- package/src/prices/OKXSwapPrice.ts +113 -113
- package/src/storage/IIntermediaryStorage.ts +19 -19
- package/src/storagemanager/IntermediaryStorageManager.ts +118 -118
- package/src/storagemanager/StorageManager.ts +78 -78
- package/src/swaps/SwapHandler.ts +277 -277
- package/src/swaps/SwapHandlerSwap.ts +141 -141
- package/src/swaps/assertions/AmountAssertions.ts +76 -76
- package/src/swaps/assertions/FromBtcAmountAssertions.ts +238 -238
- package/src/swaps/assertions/LightningAssertions.ts +103 -103
- package/src/swaps/assertions/ToBtcAmountAssertions.ts +203 -203
- package/src/swaps/escrow/EscrowHandler.ts +179 -179
- package/src/swaps/escrow/EscrowHandlerSwap.ts +86 -86
- package/src/swaps/escrow/FromBtcBaseSwap.ts +38 -38
- package/src/swaps/escrow/FromBtcBaseSwapHandler.ts +286 -286
- package/src/swaps/escrow/ToBtcBaseSwap.ts +85 -85
- package/src/swaps/escrow/ToBtcBaseSwapHandler.ts +129 -129
- package/src/swaps/escrow/frombtc_abstract/FromBtcAbs.ts +452 -452
- package/src/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.ts +61 -61
- package/src/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.ts +856 -828
- package/src/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.ts +141 -141
- package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.ts +822 -789
- package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.ts +196 -196
- package/src/swaps/escrow/tobtc_abstract/ToBtcAbs.ts +879 -879
- package/src/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.ts +102 -102
- package/src/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.ts +1110 -1110
- package/src/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.ts +77 -77
- package/src/swaps/spv_vault_swap/SpvVault.ts +143 -143
- package/src/swaps/spv_vault_swap/SpvVaultSwap.ts +225 -225
- package/src/swaps/spv_vault_swap/SpvVaultSwapHandler.ts +627 -626
- package/src/swaps/spv_vault_swap/SpvVaults.ts +435 -435
- package/src/swaps/trusted/frombtc_trusted/FromBtcTrusted.ts +747 -747
- package/src/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.ts +185 -185
- package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.ts +590 -590
- package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.ts +121 -121
- package/src/utils/Utils.ts +104 -104
- package/src/utils/paramcoders/IParamReader.ts +7 -7
- package/src/utils/paramcoders/IParamWriter.ts +8 -8
- package/src/utils/paramcoders/LegacyParamEncoder.ts +27 -27
- package/src/utils/paramcoders/ParamDecoder.ts +218 -218
- package/src/utils/paramcoders/ParamEncoder.ts +29 -29
- package/src/utils/paramcoders/SchemaVerifier.ts +96 -96
- package/src/utils/paramcoders/server/ServerParamDecoder.ts +118 -118
- package/src/utils/paramcoders/server/ServerParamEncoder.ts +75 -75
- package/src/wallets/IBitcoinWallet.ts +68 -68
- package/src/wallets/ILightningWallet.ts +178 -178
- package/src/wallets/ISpvVaultSigner.ts +10 -10
|
@@ -1,222 +1,222 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ParamDecoder = void 0;
|
|
4
|
-
const SchemaVerifier_1 = require("./SchemaVerifier");
|
|
5
|
-
class ParamDecoder {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.frameHeader = null;
|
|
8
|
-
this.frameData = [];
|
|
9
|
-
this.frameDataLength = 0;
|
|
10
|
-
this.closed = false;
|
|
11
|
-
this.params = {};
|
|
12
|
-
}
|
|
13
|
-
onFrameRead(data) {
|
|
14
|
-
const obj = JSON.parse(data.toString());
|
|
15
|
-
for (let key in obj) {
|
|
16
|
-
if (this.params[key] == null) {
|
|
17
|
-
this.params[key] = {
|
|
18
|
-
promise: Promise.resolve(obj[key]),
|
|
19
|
-
resolve: null,
|
|
20
|
-
reject: null,
|
|
21
|
-
value: obj[key]
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
if (this.params[key].resolve != null) {
|
|
26
|
-
this.params[key].resolve(obj[key]);
|
|
27
|
-
this.params[key].resolve = null;
|
|
28
|
-
this.params[key].reject = null;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
onData(data) {
|
|
34
|
-
let leavesBuffer = data;
|
|
35
|
-
while (leavesBuffer != null && leavesBuffer.length > 0) {
|
|
36
|
-
if (this.frameHeader == null) {
|
|
37
|
-
if (leavesBuffer.length <= 4) {
|
|
38
|
-
this.frameHeader = leavesBuffer;
|
|
39
|
-
leavesBuffer = null;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
this.frameHeader = leavesBuffer.subarray(0, 4);
|
|
43
|
-
leavesBuffer = leavesBuffer.subarray(4);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
else if (this.frameHeader.length < 4) {
|
|
47
|
-
const requiredLen = 4 - this.frameHeader.length;
|
|
48
|
-
if (leavesBuffer.length <= requiredLen) {
|
|
49
|
-
this.frameHeader = Buffer.concat([this.frameHeader, leavesBuffer]);
|
|
50
|
-
leavesBuffer = null;
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
this.frameHeader = Buffer.concat([this.frameHeader, leavesBuffer.subarray(0, requiredLen)]);
|
|
54
|
-
leavesBuffer = leavesBuffer.subarray(requiredLen);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (leavesBuffer == null)
|
|
58
|
-
continue;
|
|
59
|
-
if (this.frameHeader == null || this.frameHeader.length < 4)
|
|
60
|
-
continue;
|
|
61
|
-
const frameLength = this.frameHeader.readUint32LE();
|
|
62
|
-
const requiredLen = frameLength - this.frameDataLength;
|
|
63
|
-
if (leavesBuffer.length <= requiredLen) {
|
|
64
|
-
this.frameData.push(leavesBuffer);
|
|
65
|
-
this.frameDataLength += leavesBuffer.length;
|
|
66
|
-
leavesBuffer = null;
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
this.frameData.push(leavesBuffer.subarray(0, requiredLen));
|
|
70
|
-
this.frameDataLength += requiredLen;
|
|
71
|
-
leavesBuffer = leavesBuffer.subarray(requiredLen);
|
|
72
|
-
}
|
|
73
|
-
if (frameLength === this.frameDataLength) {
|
|
74
|
-
//Message read success
|
|
75
|
-
this.onFrameRead(Buffer.concat(this.frameData));
|
|
76
|
-
this.frameHeader = null;
|
|
77
|
-
this.frameData = [];
|
|
78
|
-
this.frameDataLength = 0;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
onEnd() {
|
|
83
|
-
for (let key in this.params) {
|
|
84
|
-
if (this.params[key].reject != null) {
|
|
85
|
-
this.params[key].reject(new Error("EOF before field seen!"));
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
this.closed = true;
|
|
89
|
-
}
|
|
90
|
-
onError(e) {
|
|
91
|
-
for (let key in this.params) {
|
|
92
|
-
if (this.params[key].reject != null) {
|
|
93
|
-
this.params[key].reject(e);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
this.closed = true;
|
|
97
|
-
}
|
|
98
|
-
getParam(key) {
|
|
99
|
-
if (this.params[key] == null) {
|
|
100
|
-
if (this.closed)
|
|
101
|
-
return Promise.reject(new Error("Stream already closed without param received!"));
|
|
102
|
-
let resolve;
|
|
103
|
-
let reject;
|
|
104
|
-
const promise = new Promise((_resolve, _reject) => {
|
|
105
|
-
resolve = _resolve;
|
|
106
|
-
reject = _reject;
|
|
107
|
-
});
|
|
108
|
-
this.params[key] = {
|
|
109
|
-
resolve,
|
|
110
|
-
reject,
|
|
111
|
-
promise,
|
|
112
|
-
value: null
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
return this.params[key].promise;
|
|
116
|
-
}
|
|
117
|
-
async getParams(schema) {
|
|
118
|
-
const resultSchema = {};
|
|
119
|
-
for (let fieldName in schema) {
|
|
120
|
-
const val = await this.getParam(fieldName);
|
|
121
|
-
const type = schema[fieldName];
|
|
122
|
-
if (typeof (type) === "function") {
|
|
123
|
-
const result = type(val);
|
|
124
|
-
if (result == null)
|
|
125
|
-
return null;
|
|
126
|
-
resultSchema[fieldName] = result;
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
if (val == null && type >= 100) {
|
|
130
|
-
resultSchema[fieldName] = null;
|
|
131
|
-
continue;
|
|
132
|
-
}
|
|
133
|
-
if (type === SchemaVerifier_1.FieldTypeEnum.Any || type === SchemaVerifier_1.FieldTypeEnum.AnyOptional) {
|
|
134
|
-
resultSchema[fieldName] = val;
|
|
135
|
-
}
|
|
136
|
-
else if (type === SchemaVerifier_1.FieldTypeEnum.Boolean || type === SchemaVerifier_1.FieldTypeEnum.BooleanOptional) {
|
|
137
|
-
if (typeof (val) !== "boolean")
|
|
138
|
-
return null;
|
|
139
|
-
resultSchema[fieldName] = val;
|
|
140
|
-
}
|
|
141
|
-
else if (type === SchemaVerifier_1.FieldTypeEnum.Number || type === SchemaVerifier_1.FieldTypeEnum.NumberOptional) {
|
|
142
|
-
if (typeof (val) !== "number")
|
|
143
|
-
return null;
|
|
144
|
-
if (isNaN(val))
|
|
145
|
-
return null;
|
|
146
|
-
resultSchema[fieldName] = val;
|
|
147
|
-
}
|
|
148
|
-
else if (type === SchemaVerifier_1.FieldTypeEnum.BigInt || type === SchemaVerifier_1.FieldTypeEnum.BigIntOptional) {
|
|
149
|
-
const result = (0, SchemaVerifier_1.parseBigInt)(val);
|
|
150
|
-
if (result == null)
|
|
151
|
-
return null;
|
|
152
|
-
resultSchema[fieldName] = result;
|
|
153
|
-
}
|
|
154
|
-
else if (type === SchemaVerifier_1.FieldTypeEnum.String || type === SchemaVerifier_1.FieldTypeEnum.StringOptional) {
|
|
155
|
-
if (typeof (val) !== "string")
|
|
156
|
-
return null;
|
|
157
|
-
resultSchema[fieldName] = val;
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
//Probably another request schema
|
|
161
|
-
const result = (0, SchemaVerifier_1.verifySchema)(val, type);
|
|
162
|
-
if (result == null)
|
|
163
|
-
return null;
|
|
164
|
-
resultSchema[fieldName] = result;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
return resultSchema;
|
|
168
|
-
}
|
|
169
|
-
getExistingParamsOrNull(schema) {
|
|
170
|
-
const resultSchema = {};
|
|
171
|
-
for (let fieldName in schema) {
|
|
172
|
-
const val = this.params[fieldName]?.value;
|
|
173
|
-
if (val == null) {
|
|
174
|
-
resultSchema[fieldName] = null;
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
const type = schema[fieldName];
|
|
178
|
-
if (typeof (type) === "function") {
|
|
179
|
-
const result = type(val);
|
|
180
|
-
if (result == null)
|
|
181
|
-
return null;
|
|
182
|
-
resultSchema[fieldName] = result;
|
|
183
|
-
continue;
|
|
184
|
-
}
|
|
185
|
-
if (type === SchemaVerifier_1.FieldTypeEnum.Any || type === SchemaVerifier_1.FieldTypeEnum.AnyOptional) {
|
|
186
|
-
resultSchema[fieldName] = val;
|
|
187
|
-
}
|
|
188
|
-
else if (type === SchemaVerifier_1.FieldTypeEnum.Boolean || type === SchemaVerifier_1.FieldTypeEnum.BooleanOptional) {
|
|
189
|
-
if (typeof (val) !== "boolean")
|
|
190
|
-
return null;
|
|
191
|
-
resultSchema[fieldName] = val;
|
|
192
|
-
}
|
|
193
|
-
else if (type === SchemaVerifier_1.FieldTypeEnum.Number || type === SchemaVerifier_1.FieldTypeEnum.NumberOptional) {
|
|
194
|
-
if (typeof (val) !== "number")
|
|
195
|
-
return null;
|
|
196
|
-
if (isNaN(val))
|
|
197
|
-
return null;
|
|
198
|
-
resultSchema[fieldName] = val;
|
|
199
|
-
}
|
|
200
|
-
else if (type === SchemaVerifier_1.FieldTypeEnum.BigInt || type === SchemaVerifier_1.FieldTypeEnum.BigIntOptional) {
|
|
201
|
-
const result = (0, SchemaVerifier_1.parseBigInt)(val);
|
|
202
|
-
if (result == null)
|
|
203
|
-
return null;
|
|
204
|
-
resultSchema[fieldName] = result;
|
|
205
|
-
}
|
|
206
|
-
else if (type === SchemaVerifier_1.FieldTypeEnum.String || type === SchemaVerifier_1.FieldTypeEnum.StringOptional) {
|
|
207
|
-
if (typeof (val) !== "string")
|
|
208
|
-
return null;
|
|
209
|
-
resultSchema[fieldName] = val;
|
|
210
|
-
}
|
|
211
|
-
else {
|
|
212
|
-
//Probably another request schema
|
|
213
|
-
const result = (0, SchemaVerifier_1.verifySchema)(val, type);
|
|
214
|
-
if (result == null)
|
|
215
|
-
return null;
|
|
216
|
-
resultSchema[fieldName] = result;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
return resultSchema;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
exports.ParamDecoder = ParamDecoder;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParamDecoder = void 0;
|
|
4
|
+
const SchemaVerifier_1 = require("./SchemaVerifier");
|
|
5
|
+
class ParamDecoder {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.frameHeader = null;
|
|
8
|
+
this.frameData = [];
|
|
9
|
+
this.frameDataLength = 0;
|
|
10
|
+
this.closed = false;
|
|
11
|
+
this.params = {};
|
|
12
|
+
}
|
|
13
|
+
onFrameRead(data) {
|
|
14
|
+
const obj = JSON.parse(data.toString());
|
|
15
|
+
for (let key in obj) {
|
|
16
|
+
if (this.params[key] == null) {
|
|
17
|
+
this.params[key] = {
|
|
18
|
+
promise: Promise.resolve(obj[key]),
|
|
19
|
+
resolve: null,
|
|
20
|
+
reject: null,
|
|
21
|
+
value: obj[key]
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
if (this.params[key].resolve != null) {
|
|
26
|
+
this.params[key].resolve(obj[key]);
|
|
27
|
+
this.params[key].resolve = null;
|
|
28
|
+
this.params[key].reject = null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
onData(data) {
|
|
34
|
+
let leavesBuffer = data;
|
|
35
|
+
while (leavesBuffer != null && leavesBuffer.length > 0) {
|
|
36
|
+
if (this.frameHeader == null) {
|
|
37
|
+
if (leavesBuffer.length <= 4) {
|
|
38
|
+
this.frameHeader = leavesBuffer;
|
|
39
|
+
leavesBuffer = null;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.frameHeader = leavesBuffer.subarray(0, 4);
|
|
43
|
+
leavesBuffer = leavesBuffer.subarray(4);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (this.frameHeader.length < 4) {
|
|
47
|
+
const requiredLen = 4 - this.frameHeader.length;
|
|
48
|
+
if (leavesBuffer.length <= requiredLen) {
|
|
49
|
+
this.frameHeader = Buffer.concat([this.frameHeader, leavesBuffer]);
|
|
50
|
+
leavesBuffer = null;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.frameHeader = Buffer.concat([this.frameHeader, leavesBuffer.subarray(0, requiredLen)]);
|
|
54
|
+
leavesBuffer = leavesBuffer.subarray(requiredLen);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (leavesBuffer == null)
|
|
58
|
+
continue;
|
|
59
|
+
if (this.frameHeader == null || this.frameHeader.length < 4)
|
|
60
|
+
continue;
|
|
61
|
+
const frameLength = this.frameHeader.readUint32LE();
|
|
62
|
+
const requiredLen = frameLength - this.frameDataLength;
|
|
63
|
+
if (leavesBuffer.length <= requiredLen) {
|
|
64
|
+
this.frameData.push(leavesBuffer);
|
|
65
|
+
this.frameDataLength += leavesBuffer.length;
|
|
66
|
+
leavesBuffer = null;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.frameData.push(leavesBuffer.subarray(0, requiredLen));
|
|
70
|
+
this.frameDataLength += requiredLen;
|
|
71
|
+
leavesBuffer = leavesBuffer.subarray(requiredLen);
|
|
72
|
+
}
|
|
73
|
+
if (frameLength === this.frameDataLength) {
|
|
74
|
+
//Message read success
|
|
75
|
+
this.onFrameRead(Buffer.concat(this.frameData));
|
|
76
|
+
this.frameHeader = null;
|
|
77
|
+
this.frameData = [];
|
|
78
|
+
this.frameDataLength = 0;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
onEnd() {
|
|
83
|
+
for (let key in this.params) {
|
|
84
|
+
if (this.params[key].reject != null) {
|
|
85
|
+
this.params[key].reject(new Error("EOF before field seen!"));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
this.closed = true;
|
|
89
|
+
}
|
|
90
|
+
onError(e) {
|
|
91
|
+
for (let key in this.params) {
|
|
92
|
+
if (this.params[key].reject != null) {
|
|
93
|
+
this.params[key].reject(e);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
this.closed = true;
|
|
97
|
+
}
|
|
98
|
+
getParam(key) {
|
|
99
|
+
if (this.params[key] == null) {
|
|
100
|
+
if (this.closed)
|
|
101
|
+
return Promise.reject(new Error("Stream already closed without param received!"));
|
|
102
|
+
let resolve;
|
|
103
|
+
let reject;
|
|
104
|
+
const promise = new Promise((_resolve, _reject) => {
|
|
105
|
+
resolve = _resolve;
|
|
106
|
+
reject = _reject;
|
|
107
|
+
});
|
|
108
|
+
this.params[key] = {
|
|
109
|
+
resolve,
|
|
110
|
+
reject,
|
|
111
|
+
promise,
|
|
112
|
+
value: null
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return this.params[key].promise;
|
|
116
|
+
}
|
|
117
|
+
async getParams(schema) {
|
|
118
|
+
const resultSchema = {};
|
|
119
|
+
for (let fieldName in schema) {
|
|
120
|
+
const val = await this.getParam(fieldName);
|
|
121
|
+
const type = schema[fieldName];
|
|
122
|
+
if (typeof (type) === "function") {
|
|
123
|
+
const result = type(val);
|
|
124
|
+
if (result == null)
|
|
125
|
+
return null;
|
|
126
|
+
resultSchema[fieldName] = result;
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (val == null && type >= 100) {
|
|
130
|
+
resultSchema[fieldName] = null;
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
if (type === SchemaVerifier_1.FieldTypeEnum.Any || type === SchemaVerifier_1.FieldTypeEnum.AnyOptional) {
|
|
134
|
+
resultSchema[fieldName] = val;
|
|
135
|
+
}
|
|
136
|
+
else if (type === SchemaVerifier_1.FieldTypeEnum.Boolean || type === SchemaVerifier_1.FieldTypeEnum.BooleanOptional) {
|
|
137
|
+
if (typeof (val) !== "boolean")
|
|
138
|
+
return null;
|
|
139
|
+
resultSchema[fieldName] = val;
|
|
140
|
+
}
|
|
141
|
+
else if (type === SchemaVerifier_1.FieldTypeEnum.Number || type === SchemaVerifier_1.FieldTypeEnum.NumberOptional) {
|
|
142
|
+
if (typeof (val) !== "number")
|
|
143
|
+
return null;
|
|
144
|
+
if (isNaN(val))
|
|
145
|
+
return null;
|
|
146
|
+
resultSchema[fieldName] = val;
|
|
147
|
+
}
|
|
148
|
+
else if (type === SchemaVerifier_1.FieldTypeEnum.BigInt || type === SchemaVerifier_1.FieldTypeEnum.BigIntOptional) {
|
|
149
|
+
const result = (0, SchemaVerifier_1.parseBigInt)(val);
|
|
150
|
+
if (result == null)
|
|
151
|
+
return null;
|
|
152
|
+
resultSchema[fieldName] = result;
|
|
153
|
+
}
|
|
154
|
+
else if (type === SchemaVerifier_1.FieldTypeEnum.String || type === SchemaVerifier_1.FieldTypeEnum.StringOptional) {
|
|
155
|
+
if (typeof (val) !== "string")
|
|
156
|
+
return null;
|
|
157
|
+
resultSchema[fieldName] = val;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
//Probably another request schema
|
|
161
|
+
const result = (0, SchemaVerifier_1.verifySchema)(val, type);
|
|
162
|
+
if (result == null)
|
|
163
|
+
return null;
|
|
164
|
+
resultSchema[fieldName] = result;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return resultSchema;
|
|
168
|
+
}
|
|
169
|
+
getExistingParamsOrNull(schema) {
|
|
170
|
+
const resultSchema = {};
|
|
171
|
+
for (let fieldName in schema) {
|
|
172
|
+
const val = this.params[fieldName]?.value;
|
|
173
|
+
if (val == null) {
|
|
174
|
+
resultSchema[fieldName] = null;
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const type = schema[fieldName];
|
|
178
|
+
if (typeof (type) === "function") {
|
|
179
|
+
const result = type(val);
|
|
180
|
+
if (result == null)
|
|
181
|
+
return null;
|
|
182
|
+
resultSchema[fieldName] = result;
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
if (type === SchemaVerifier_1.FieldTypeEnum.Any || type === SchemaVerifier_1.FieldTypeEnum.AnyOptional) {
|
|
186
|
+
resultSchema[fieldName] = val;
|
|
187
|
+
}
|
|
188
|
+
else if (type === SchemaVerifier_1.FieldTypeEnum.Boolean || type === SchemaVerifier_1.FieldTypeEnum.BooleanOptional) {
|
|
189
|
+
if (typeof (val) !== "boolean")
|
|
190
|
+
return null;
|
|
191
|
+
resultSchema[fieldName] = val;
|
|
192
|
+
}
|
|
193
|
+
else if (type === SchemaVerifier_1.FieldTypeEnum.Number || type === SchemaVerifier_1.FieldTypeEnum.NumberOptional) {
|
|
194
|
+
if (typeof (val) !== "number")
|
|
195
|
+
return null;
|
|
196
|
+
if (isNaN(val))
|
|
197
|
+
return null;
|
|
198
|
+
resultSchema[fieldName] = val;
|
|
199
|
+
}
|
|
200
|
+
else if (type === SchemaVerifier_1.FieldTypeEnum.BigInt || type === SchemaVerifier_1.FieldTypeEnum.BigIntOptional) {
|
|
201
|
+
const result = (0, SchemaVerifier_1.parseBigInt)(val);
|
|
202
|
+
if (result == null)
|
|
203
|
+
return null;
|
|
204
|
+
resultSchema[fieldName] = result;
|
|
205
|
+
}
|
|
206
|
+
else if (type === SchemaVerifier_1.FieldTypeEnum.String || type === SchemaVerifier_1.FieldTypeEnum.StringOptional) {
|
|
207
|
+
if (typeof (val) !== "string")
|
|
208
|
+
return null;
|
|
209
|
+
resultSchema[fieldName] = val;
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
//Probably another request schema
|
|
213
|
+
const result = (0, SchemaVerifier_1.verifySchema)(val, type);
|
|
214
|
+
if (result == null)
|
|
215
|
+
return null;
|
|
216
|
+
resultSchema[fieldName] = result;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return resultSchema;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
exports.ParamDecoder = ParamDecoder;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { IParamWriter } from "./IParamWriter";
|
|
3
|
-
export declare class ParamEncoder implements IParamWriter {
|
|
4
|
-
private readonly writeFN;
|
|
5
|
-
private readonly endFN;
|
|
6
|
-
constructor(write: (data: Buffer) => Promise<void>, end: () => Promise<void>);
|
|
7
|
-
writeParams(data: any): Promise<void>;
|
|
8
|
-
end(): Promise<void>;
|
|
9
|
-
}
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { IParamWriter } from "./IParamWriter";
|
|
3
|
+
export declare class ParamEncoder implements IParamWriter {
|
|
4
|
+
private readonly writeFN;
|
|
5
|
+
private readonly endFN;
|
|
6
|
+
constructor(write: (data: Buffer) => Promise<void>, end: () => Promise<void>);
|
|
7
|
+
writeParams(data: any): Promise<void>;
|
|
8
|
+
end(): Promise<void>;
|
|
9
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ParamEncoder = void 0;
|
|
4
|
-
class ParamEncoder {
|
|
5
|
-
constructor(write, end) {
|
|
6
|
-
this.writeFN = write;
|
|
7
|
-
this.endFN = end;
|
|
8
|
-
}
|
|
9
|
-
writeParams(data) {
|
|
10
|
-
const serialized = Buffer.from(JSON.stringify(data));
|
|
11
|
-
const frameLengthBuffer = Buffer.alloc(4);
|
|
12
|
-
frameLengthBuffer.writeUint32LE(serialized.length);
|
|
13
|
-
return this.writeFN(Buffer.concat([
|
|
14
|
-
frameLengthBuffer,
|
|
15
|
-
serialized
|
|
16
|
-
]));
|
|
17
|
-
}
|
|
18
|
-
end() {
|
|
19
|
-
return this.endFN();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.ParamEncoder = ParamEncoder;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ParamEncoder = void 0;
|
|
4
|
+
class ParamEncoder {
|
|
5
|
+
constructor(write, end) {
|
|
6
|
+
this.writeFN = write;
|
|
7
|
+
this.endFN = end;
|
|
8
|
+
}
|
|
9
|
+
writeParams(data) {
|
|
10
|
+
const serialized = Buffer.from(JSON.stringify(data));
|
|
11
|
+
const frameLengthBuffer = Buffer.alloc(4);
|
|
12
|
+
frameLengthBuffer.writeUint32LE(serialized.length);
|
|
13
|
+
return this.writeFN(Buffer.concat([
|
|
14
|
+
frameLengthBuffer,
|
|
15
|
+
serialized
|
|
16
|
+
]));
|
|
17
|
+
}
|
|
18
|
+
end() {
|
|
19
|
+
return this.endFN();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.ParamEncoder = ParamEncoder;
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
export declare function parseBigInt(str: string | number): bigint | null;
|
|
2
|
-
export declare enum FieldTypeEnum {
|
|
3
|
-
String = 0,
|
|
4
|
-
Boolean = 1,
|
|
5
|
-
Number = 2,
|
|
6
|
-
BigInt = 3,
|
|
7
|
-
Any = 4,
|
|
8
|
-
StringOptional = 100,
|
|
9
|
-
BooleanOptional = 101,
|
|
10
|
-
NumberOptional = 102,
|
|
11
|
-
BigIntOptional = 103,
|
|
12
|
-
AnyOptional = 104
|
|
13
|
-
}
|
|
14
|
-
export type FieldType<T extends FieldTypeEnum | RequestSchema | ((val: any) => (string | boolean | number | bigint | any))> = T extends FieldTypeEnum.String ? string : T extends FieldTypeEnum.Boolean ? boolean : T extends FieldTypeEnum.Number ? number : T extends FieldTypeEnum.BigInt ? bigint : T extends FieldTypeEnum.Any ? any : T extends FieldTypeEnum.StringOptional ? string : T extends FieldTypeEnum.BooleanOptional ? boolean : T extends FieldTypeEnum.NumberOptional ? number : T extends FieldTypeEnum.BigIntOptional ? bigint : T extends FieldTypeEnum.AnyOptional ? any : T extends RequestSchema ? RequestSchemaResult<T> : T extends ((val: any) => string) ? string : T extends ((val: any) => boolean) ? boolean : T extends ((val: any) => number) ? number : T extends ((val: any) => bigint) ? bigint : T extends ((val: any) => any) ? any : never;
|
|
15
|
-
export type RequestSchemaResult<T extends RequestSchema> = {
|
|
16
|
-
[key in keyof T]: FieldType<T[key]>;
|
|
17
|
-
};
|
|
18
|
-
export type RequestSchema = {
|
|
19
|
-
[fieldName: string]: FieldTypeEnum | RequestSchema | ((val: any) => any);
|
|
20
|
-
};
|
|
21
|
-
export declare function verifySchema<T extends RequestSchema>(req: any, schema: T): RequestSchemaResult<T>;
|
|
1
|
+
export declare function parseBigInt(str: string | number): bigint | null;
|
|
2
|
+
export declare enum FieldTypeEnum {
|
|
3
|
+
String = 0,
|
|
4
|
+
Boolean = 1,
|
|
5
|
+
Number = 2,
|
|
6
|
+
BigInt = 3,
|
|
7
|
+
Any = 4,
|
|
8
|
+
StringOptional = 100,
|
|
9
|
+
BooleanOptional = 101,
|
|
10
|
+
NumberOptional = 102,
|
|
11
|
+
BigIntOptional = 103,
|
|
12
|
+
AnyOptional = 104
|
|
13
|
+
}
|
|
14
|
+
export type FieldType<T extends FieldTypeEnum | RequestSchema | ((val: any) => (string | boolean | number | bigint | any))> = T extends FieldTypeEnum.String ? string : T extends FieldTypeEnum.Boolean ? boolean : T extends FieldTypeEnum.Number ? number : T extends FieldTypeEnum.BigInt ? bigint : T extends FieldTypeEnum.Any ? any : T extends FieldTypeEnum.StringOptional ? string : T extends FieldTypeEnum.BooleanOptional ? boolean : T extends FieldTypeEnum.NumberOptional ? number : T extends FieldTypeEnum.BigIntOptional ? bigint : T extends FieldTypeEnum.AnyOptional ? any : T extends RequestSchema ? RequestSchemaResult<T> : T extends ((val: any) => string) ? string : T extends ((val: any) => boolean) ? boolean : T extends ((val: any) => number) ? number : T extends ((val: any) => bigint) ? bigint : T extends ((val: any) => any) ? any : never;
|
|
15
|
+
export type RequestSchemaResult<T extends RequestSchema> = {
|
|
16
|
+
[key in keyof T]: FieldType<T[key]>;
|
|
17
|
+
};
|
|
18
|
+
export type RequestSchema = {
|
|
19
|
+
[fieldName: string]: FieldTypeEnum | RequestSchema | ((val: any) => any);
|
|
20
|
+
};
|
|
21
|
+
export declare function verifySchema<T extends RequestSchema>(req: any, schema: T): RequestSchemaResult<T>;
|