@paraswap/dex-lib 3.8.1 → 3.8.3

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 (213) hide show
  1. package/.vscode/launch.json +9 -49
  2. package/.vscode/settings.json +2 -1
  3. package/build/abi/Uncompressor.json +250 -0
  4. package/build/abi/integral/factory.json +333 -0
  5. package/build/abi/integral/oracle.json +501 -0
  6. package/build/abi/integral/pool.json +1041 -0
  7. package/build/abi/{wombat/pool.json → integral/relayer.json} +720 -473
  8. package/build/abi/oswap/oswap.abi.json +452 -0
  9. package/build/dex/aave-v1/aave-v1.d.ts +1 -2
  10. package/build/dex/aave-v1/aave-v1.js +0 -23
  11. package/build/dex/aave-v1/aave-v1.js.map +1 -1
  12. package/build/dex/aave-v3/aave-v3.js +2 -1
  13. package/build/dex/aave-v3/aave-v3.js.map +1 -1
  14. package/build/dex/aave-v3-stata/aave-v3-stata.js +1 -0
  15. package/build/dex/aave-v3-stata/aave-v3-stata.js.map +1 -1
  16. package/build/dex/angle-staked-stable/angle-staked-stable.js +4 -1
  17. package/build/dex/angle-staked-stable/angle-staked-stable.js.map +1 -1
  18. package/build/dex/compound/compound.js +2 -1
  19. package/build/dex/compound/compound.js.map +1 -1
  20. package/build/dex/compound.js +1 -1
  21. package/build/dex/compound.js.map +1 -1
  22. package/build/dex/etherfi/etherfi.d.ts +26 -0
  23. package/build/dex/etherfi/etherfi.js +96 -0
  24. package/build/dex/etherfi/etherfi.js.map +1 -0
  25. package/build/dex/etherfi.js +4 -1
  26. package/build/dex/etherfi.js.map +1 -1
  27. package/build/dex/idle-dao/idle-dao.js +1 -0
  28. package/build/dex/idle-dao/idle-dao.js.map +1 -1
  29. package/build/dex/integral/config.d.ts +4 -0
  30. package/build/dex/integral/config.js +20 -0
  31. package/build/dex/integral/config.js.map +1 -0
  32. package/build/dex/integral/context.d.ts +33 -0
  33. package/build/dex/integral/context.js +98 -0
  34. package/build/dex/integral/context.js.map +1 -0
  35. package/build/dex/integral/helpers.d.ts +17 -0
  36. package/build/dex/integral/helpers.js +157 -0
  37. package/build/dex/integral/helpers.js.map +1 -0
  38. package/build/dex/integral/integral-factory.d.ts +21 -0
  39. package/build/dex/integral/integral-factory.js +92 -0
  40. package/build/dex/integral/integral-factory.js.map +1 -0
  41. package/build/dex/integral/integral-pool.d.ts +46 -0
  42. package/build/dex/integral/integral-pool.js +143 -0
  43. package/build/dex/integral/integral-pool.js.map +1 -0
  44. package/build/dex/integral/integral-pricing.d.ts +18 -0
  45. package/build/dex/integral/integral-pricing.js +114 -0
  46. package/build/dex/integral/integral-pricing.js.map +1 -0
  47. package/build/dex/integral/integral-relayer.d.ts +39 -0
  48. package/build/dex/integral/integral-relayer.js +189 -0
  49. package/build/dex/integral/integral-relayer.js.map +1 -0
  50. package/build/dex/integral/integral-token.d.ts +22 -0
  51. package/build/dex/integral/integral-token.js +55 -0
  52. package/build/dex/integral/integral-token.js.map +1 -0
  53. package/build/dex/integral/integral.d.ts +41 -0
  54. package/build/dex/integral/integral.js +382 -0
  55. package/build/dex/integral/integral.js.map +1 -0
  56. package/build/dex/integral/types.d.ts +84 -0
  57. package/build/dex/integral/types.js +9 -0
  58. package/build/dex/integral/types.js.map +1 -0
  59. package/build/dex/integral/utils.d.ts +6 -0
  60. package/build/dex/integral/utils.js +23 -0
  61. package/build/dex/integral/utils.js.map +1 -0
  62. package/build/dex/mStable.js +1 -1
  63. package/build/dex/mStable.js.map +1 -1
  64. package/build/dex/oswap/config.d.ts +5 -0
  65. package/build/dex/oswap/config.js +31 -0
  66. package/build/dex/oswap/config.js.map +1 -0
  67. package/build/dex/oswap/oswap-pool.d.ts +51 -0
  68. package/build/dex/oswap/oswap-pool.js +150 -0
  69. package/build/dex/oswap/oswap-pool.js.map +1 -0
  70. package/build/dex/oswap/oswap.d.ts +46 -0
  71. package/build/dex/oswap/oswap.js +266 -0
  72. package/build/dex/oswap/oswap.js.map +1 -0
  73. package/build/dex/oswap/types.d.ts +20 -0
  74. package/build/dex/oswap/types.js +3 -0
  75. package/build/dex/oswap/types.js.map +1 -0
  76. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js +3 -0
  77. package/build/dex/paraswap-limit-orders/paraswap-limit-orders.js.map +1 -1
  78. package/build/dex/platypus/platypus.d.ts +1 -2
  79. package/build/dex/platypus/platypus.js +0 -45
  80. package/build/dex/platypus/platypus.js.map +1 -1
  81. package/build/dex/sdai/config.d.ts +11 -0
  82. package/build/dex/sdai/config.js +21 -0
  83. package/build/dex/sdai/config.js.map +1 -0
  84. package/build/dex/sdai/constants.d.ts +2 -0
  85. package/build/dex/sdai/constants.js +6 -0
  86. package/build/dex/sdai/constants.js.map +1 -0
  87. package/build/dex/sdai/scripts/validate-state.js +102 -0
  88. package/build/dex/sdai/scripts/validate-state.js.map +1 -0
  89. package/build/dex/sdai/sdai-pool.d.ts +16 -0
  90. package/build/dex/sdai/sdai-pool.js +85 -0
  91. package/build/dex/sdai/sdai-pool.js.map +1 -0
  92. package/build/dex/sdai/sdai.d.ts +51 -0
  93. package/build/dex/sdai/sdai.js +172 -0
  94. package/build/dex/sdai/sdai.js.map +1 -0
  95. package/build/dex/sdai/types.d.ts +21 -0
  96. package/build/dex/sdai/types.js +11 -0
  97. package/build/dex/sdai/types.js.map +1 -0
  98. package/build/dex/sdai/utils.d.ts +4 -0
  99. package/build/dex/sdai/utils.js +39 -0
  100. package/build/dex/sdai/utils.js.map +1 -0
  101. package/build/dex/simple-exchange.d.ts +1 -1
  102. package/build/dex/simple-exchange.js +4 -2
  103. package/build/dex/simple-exchange.js.map +1 -1
  104. package/build/dex/spark/spark.js +2 -1
  105. package/build/dex/spark/spark.js.map +1 -1
  106. package/build/dex/stable-pool.js +8 -1
  107. package/build/dex/stable-pool.js.map +1 -1
  108. package/build/dex/swaap-v1/swaap-v1.d.ts +1 -2
  109. package/build/dex/swaap-v1/swaap-v1.js +0 -14
  110. package/build/dex/swaap-v1/swaap-v1.js.map +1 -1
  111. package/build/executor/Executor01BytecodeBuilder.js +3 -1
  112. package/build/executor/Executor01BytecodeBuilder.js.map +1 -1
  113. package/build/executor/Executor02BytecodeBuilder.js +3 -1
  114. package/build/executor/Executor02BytecodeBuilder.js.map +1 -1
  115. package/build/executor/Executor03BytecodeBuilder.js +2 -0
  116. package/build/executor/Executor03BytecodeBuilder.js.map +1 -1
  117. package/build/executor/ExecutorBytecodeBuilder.js +2 -0
  118. package/build/executor/ExecutorBytecodeBuilder.js.map +1 -1
  119. package/build/executor/compressor/Compressor.d.ts +23 -0
  120. package/build/executor/compressor/Compressor.js +144 -0
  121. package/build/executor/compressor/Compressor.js.map +1 -0
  122. package/build/executor/compressor/compress.d.ts +17 -0
  123. package/build/executor/compressor/compress.js +187 -0
  124. package/build/executor/compressor/compress.js.map +1 -0
  125. package/build/executor/compressor/compress_functions/addressSubstitution.d.ts +6 -0
  126. package/build/executor/compressor/compress_functions/addressSubstitution.js +29 -0
  127. package/build/executor/compressor/compress_functions/addressSubstitution.js.map +1 -0
  128. package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.d.ts +10 -0
  129. package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.js +40 -0
  130. package/build/executor/compressor/compress_functions/addressSubstitutionFromObject.js.map +1 -0
  131. package/build/executor/compressor/compress_functions/byteSubstitution.d.ts +11 -0
  132. package/build/executor/compressor/compress_functions/byteSubstitution.js +64 -0
  133. package/build/executor/compressor/compress_functions/byteSubstitution.js.map +1 -0
  134. package/build/executor/compressor/compress_functions/ffSubstitution.d.ts +7 -0
  135. package/build/executor/compressor/compress_functions/ffSubstitution.js +54 -0
  136. package/build/executor/compressor/compress_functions/ffSubstitution.js.map +1 -0
  137. package/build/executor/compressor/compress_functions/findLongestAndSubstitute.d.ts +8 -0
  138. package/build/executor/compressor/compress_functions/findLongestAndSubstitute.js +67 -0
  139. package/build/executor/compressor/compress_functions/findLongestAndSubstitute.js.map +1 -0
  140. package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.d.ts +8 -0
  141. package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.js +61 -0
  142. package/build/executor/compressor/compress_functions/findLongestAndSubstitute_old.js.map +1 -0
  143. package/build/executor/compressor/compress_functions/reverseAddressSubstitution.d.ts +6 -0
  144. package/build/executor/compressor/compress_functions/reverseAddressSubstitution.js +37 -0
  145. package/build/executor/compressor/compress_functions/reverseAddressSubstitution.js.map +1 -0
  146. package/build/executor/compressor/compress_functions/searchUnusedBytes.d.ts +9 -0
  147. package/build/executor/compressor/compress_functions/searchUnusedBytes.js +33 -0
  148. package/build/executor/compressor/compress_functions/searchUnusedBytes.js.map +1 -0
  149. package/build/executor/compressor/fetchSaved.js +17 -0
  150. package/build/executor/compressor/fetchSaved.js.map +1 -0
  151. package/build/executor/compressor/utils/computeCostL2.d.ts +2 -0
  152. package/build/executor/compressor/utils/computeCostL2.js +14 -0
  153. package/build/executor/compressor/utils/computeCostL2.js.map +1 -0
  154. package/build/executor/compressor/utils/findLongestDuplicatedString.d.ts +2 -0
  155. package/build/executor/compressor/utils/findLongestDuplicatedString.js +30 -0
  156. package/build/executor/compressor/utils/findLongestDuplicatedString.js.map +1 -0
  157. package/build/executor/compressor/utils/getAllIndexes.d.ts +2 -0
  158. package/build/executor/compressor/utils/getAllIndexes.js +12 -0
  159. package/build/executor/compressor/utils/getAllIndexes.js.map +1 -0
  160. package/build/executor/compressor/utils/getByteForAddress.d.ts +2 -0
  161. package/build/executor/compressor/utils/getByteForAddress.js +14 -0
  162. package/build/executor/compressor/utils/getByteForAddress.js.map +1 -0
  163. package/build/executor/compressor/utils/intTo2Bytes.d.ts +2 -0
  164. package/build/executor/compressor/utils/intTo2Bytes.js +14 -0
  165. package/build/executor/compressor/utils/intTo2Bytes.js.map +1 -0
  166. package/build/executor/compressor/utils/intTo3Bytes.d.ts +2 -0
  167. package/build/executor/compressor/utils/intTo3Bytes.js +18 -0
  168. package/build/executor/compressor/utils/intTo3Bytes.js.map +1 -0
  169. package/build/executor/compressor/utils/intToByte.d.ts +2 -0
  170. package/build/executor/compressor/utils/intToByte.js +10 -0
  171. package/build/executor/compressor/utils/intToByte.js.map +1 -0
  172. package/build/types.d.ts +1 -0
  173. package/package.json +1 -1
  174. package/src/dex/aave-v3/aave-v3-e2e.test.ts +4 -9
  175. package/src/dex/aave-v3/aave-v3.ts +5 -0
  176. package/src/dex/aave-v3-stata/aave-v3-stata.ts +1 -0
  177. package/src/dex/angle-staked-stable/angle-staked-stable.ts +8 -0
  178. package/src/dex/compound/compound.ts +5 -0
  179. package/src/dex/etherfi.ts +5 -0
  180. package/src/dex/idle-dao/idle-dao.ts +1 -0
  181. package/src/dex/paraswap-limit-orders/paraswap-limit-orders-e2e.test.ts +152 -68
  182. package/src/dex/paraswap-limit-orders/paraswap-limit-orders.ts +3 -0
  183. package/src/dex/simple-exchange.ts +5 -5
  184. package/src/dex/spark/spark-e2e.test.ts +9 -1
  185. package/src/dex/spark/spark.ts +5 -0
  186. package/src/executor/Executor01BytecodeBuilder.ts +3 -1
  187. package/src/executor/Executor02BytecodeBuilder.ts +3 -1
  188. package/src/executor/Executor03BytecodeBuilder.ts +2 -0
  189. package/src/executor/ExecutorBytecodeBuilder.ts +2 -0
  190. package/src/executor/executor01-bytecode-builder-e2e.test.ts +25 -0
  191. package/src/executor/executor02-bytecode-builder-e2e.test.ts +29 -0
  192. package/src/types.ts +1 -0
  193. package/tests/constants-e2e.ts +14 -14
  194. package/tests/utils-e2e.ts +1 -1
  195. package/.vscode/tasks.json +0 -15
  196. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +0 -52
  197. package/build/dex/aave-v2/tokens-avalanche.json +0 -44
  198. package/build/dex/aave-v2/tokens-mainnet.json +0 -188
  199. package/build/dex/aave-v2/tokens-polygon.json +0 -44
  200. package/build/dex/maker-psm/scripts/gem.abi.json +0 -136
  201. package/build/dex/maker-psm/scripts/validate-state.js +0 -185
  202. package/build/dex/maker-psm/scripts/validate-state.js.map +0 -1
  203. package/build/dex/maker-psm/scripts/vat.abi.json +0 -243
  204. package/build/dex/solidly-v3/scripts/check-event-pool-event.js +0 -53
  205. package/build/dex/solidly-v3/scripts/check-event-pool-event.js.map +0 -1
  206. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.d.ts +0 -17
  207. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js +0 -64
  208. package/build/dex/uniswap-v3/forks/alien-base-v3/alien-base-v3.js.map +0 -1
  209. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +0 -17
  210. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +0 -79
  211. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +0 -1
  212. /package/build/dex/{solidly-v3/scripts/check-event-pool-event.d.ts → sdai/scripts/validate-state.d.ts} +0 -0
  213. /package/build/{dex/maker-psm/scripts/validate-state.d.ts → executor/compressor/fetchSaved.d.ts} +0 -0
@@ -0,0 +1,64 @@
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 intToByte_1 = __importDefault(require("../utils/intToByte"));
7
+ const byteSubstitution = ({ byte, callData, compressedCallData, addressPrefix, newAddressPrefix, }) => {
8
+ let countNoByte = 0; // Count of non-target bytes
9
+ let countByte = 0; // Count of target bytes
10
+ let bufferOfOccurences = ''; // Stores occurrences of target bytes
11
+ if (!compressedCallData)
12
+ compressedCallData = '';
13
+ // Looping through call data byte by byte
14
+ for (let i = 0; i < callData.length; i += 2) {
15
+ let amountToIncreaseI = 0;
16
+ const currentByte = callData.slice(i, i + 2);
17
+ // Handling target byte substitution
18
+ if (currentByte === byte) {
19
+ if (countNoByte > 0 || i == 0) {
20
+ compressedCallData += byte;
21
+ countNoByte = 0;
22
+ }
23
+ // Handle byte count exceeding limit
24
+ if (++countByte > 254) {
25
+ let hexValue = (0, intToByte_1.default)(countByte);
26
+ bufferOfOccurences += hexValue;
27
+ compressedCallData += byte + hexValue;
28
+ countByte = 0;
29
+ }
30
+ continue;
31
+ }
32
+ else {
33
+ // Handle other bytes and address prefixes
34
+ if (countByte > 0) {
35
+ let hexValue = (0, intToByte_1.default)(countByte);
36
+ if (byte === 'ff' && countByte === 1)
37
+ hexValue = '00';
38
+ bufferOfOccurences += hexValue;
39
+ compressedCallData += hexValue;
40
+ countByte = 0;
41
+ }
42
+ // Check for address and new address prefixes
43
+ if (currentByte === addressPrefix || currentByte === newAddressPrefix) {
44
+ let sliceLength = currentByte === addressPrefix ? 8 : 4;
45
+ compressedCallData += callData.slice(i, i + sliceLength);
46
+ amountToIncreaseI = sliceLength - 2;
47
+ countNoByte = 0;
48
+ }
49
+ countNoByte++;
50
+ }
51
+ if (!amountToIncreaseI)
52
+ compressedCallData += callData.slice(i, i + 2);
53
+ i += amountToIncreaseI;
54
+ }
55
+ // Append remaining byte counts after loop
56
+ if (countByte > 0) {
57
+ let hexValue = (0, intToByte_1.default)(countByte);
58
+ bufferOfOccurences += hexValue;
59
+ compressedCallData += hexValue;
60
+ }
61
+ return { bufferOfOccurences, compressedCallData };
62
+ };
63
+ exports.default = byteSubstitution;
64
+ //# sourceMappingURL=byteSubstitution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"byteSubstitution.js","sourceRoot":"","sources":["../../../../src/executor/compressor/compress_functions/byteSubstitution.ts"],"names":[],"mappings":";;;;;AAAA,mEAA2C;AAE3C,MAAM,gBAAgB,GAAG,CAAC,EACxB,IAAI,EACJ,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,gBAAgB,GAOjB,EAA8D,EAAE;IAC/D,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,4BAA4B;IACjD,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,wBAAwB;IAC3C,IAAI,kBAAkB,GAAG,EAAE,CAAC,CAAC,qCAAqC;IAElE,IAAI,CAAC,kBAAkB;QAAE,kBAAkB,GAAG,EAAE,CAAC;IAEjD,yCAAyC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC3C,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7C,oCAAoC;QACpC,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,IAAI,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC7B,kBAAkB,IAAI,IAAI,CAAC;gBAC3B,WAAW,GAAG,CAAC,CAAC;aACjB;YACD,oCAAoC;YACpC,IAAI,EAAE,SAAS,GAAG,GAAG,EAAE;gBACrB,IAAI,QAAQ,GAAG,IAAA,mBAAS,EAAC,SAAS,CAAC,CAAC;gBACpC,kBAAkB,IAAI,QAAQ,CAAC;gBAC/B,kBAAkB,IAAI,IAAI,GAAG,QAAQ,CAAC;gBACtC,SAAS,GAAG,CAAC,CAAC;aACf;YACD,SAAS;SACV;aAAM;YACL,0CAA0C;YAC1C,IAAI,SAAS,GAAG,CAAC,EAAE;gBACjB,IAAI,QAAQ,GAAG,IAAA,mBAAS,EAAC,SAAS,CAAC,CAAC;gBACpC,IAAI,IAAI,KAAK,IAAI,IAAI,SAAS,KAAK,CAAC;oBAAE,QAAQ,GAAG,IAAI,CAAC;gBACtD,kBAAkB,IAAI,QAAQ,CAAC;gBAC/B,kBAAkB,IAAI,QAAQ,CAAC;gBAC/B,SAAS,GAAG,CAAC,CAAC;aACf;YACD,6CAA6C;YAC7C,IAAI,WAAW,KAAK,aAAa,IAAI,WAAW,KAAK,gBAAgB,EAAE;gBACrE,IAAI,WAAW,GAAG,WAAW,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,kBAAkB,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;gBACzD,iBAAiB,GAAG,WAAW,GAAG,CAAC,CAAC;gBACpC,WAAW,GAAG,CAAC,CAAC;aACjB;YACD,WAAW,EAAE,CAAC;SACf;QACD,IAAI,CAAC,iBAAiB;YAAE,kBAAkB,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC,IAAI,iBAAiB,CAAC;KACxB;IAED,0CAA0C;IAC1C,IAAI,SAAS,GAAG,CAAC,EAAE;QACjB,IAAI,QAAQ,GAAG,IAAA,mBAAS,EAAC,SAAS,CAAC,CAAC;QACpC,kBAAkB,IAAI,QAAQ,CAAC;QAC/B,kBAAkB,IAAI,QAAQ,CAAC;KAChC;IAED,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;AACpD,CAAC,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const ffSubstitution: ({ compressedCallData, indexOfMethods, addressPrefix, newAddressPrefix, }: {
2
+ compressedCallData: string;
3
+ indexOfMethods: number;
4
+ addressPrefix: string;
5
+ newAddressPrefix: string;
6
+ }) => string;
7
+ export default ffSubstitution;
@@ -0,0 +1,54 @@
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 intToByte_1 = __importDefault(require("../utils/intToByte"));
7
+ const ffByte = 'ff';
8
+ const zeroByte = '00';
9
+ const ffSubstitution = ({ compressedCallData, indexOfMethods, addressPrefix, newAddressPrefix, }) => {
10
+ let ffCount = 0;
11
+ let maxI;
12
+ const startFFSearch = indexOfMethods > -1 ? 2 : 10;
13
+ for (let i = startFFSearch; i < compressedCallData.length; i += 2) {
14
+ const byte = compressedCallData.substring(i, i + 2);
15
+ maxI = i;
16
+ if (byte === ffByte) {
17
+ if (++ffCount > 254) {
18
+ // in case more than 255 bytes of ff
19
+ compressedCallData =
20
+ compressedCallData.substring(0, i + (1 - ffCount) * 2) +
21
+ (0, intToByte_1.default)(ffCount) +
22
+ compressedCallData.substring(i);
23
+ i -= ffCount * 2;
24
+ i += 2;
25
+ ffCount = 0;
26
+ }
27
+ continue;
28
+ }
29
+ if (ffCount > 0) {
30
+ if (ffCount === 1)
31
+ compressedCallData =
32
+ compressedCallData.substring(0, i) +
33
+ zeroByte +
34
+ compressedCallData.substring(i);
35
+ else {
36
+ compressedCallData =
37
+ compressedCallData.substring(0, i + (1 - ffCount) * 2) +
38
+ (0, intToByte_1.default)(ffCount) +
39
+ compressedCallData.substring(i);
40
+ i -= ffCount * 2;
41
+ }
42
+ i += 2;
43
+ ffCount = 0;
44
+ }
45
+ if (byte === addressPrefix)
46
+ i += 6;
47
+ if (byte === newAddressPrefix)
48
+ i += 2;
49
+ }
50
+ // console.log({ maxI: max, length: compressedCallData.length, compressedCallData });
51
+ return compressedCallData;
52
+ };
53
+ exports.default = ffSubstitution;
54
+ //# sourceMappingURL=ffSubstitution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ffSubstitution.js","sourceRoot":"","sources":["../../../../src/executor/compressor/compress_functions/ffSubstitution.ts"],"names":[],"mappings":";;;;;AAAA,mEAA2C;AAE3C,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,QAAQ,GAAG,IAAI,CAAC;AAEtB,MAAM,cAAc,GAAG,CAAC,EACtB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,gBAAgB,GAMjB,EAAU,EAAE;IACX,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,IAAY,CAAC;IACjB,MAAM,aAAa,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACjE,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,GAAG,CAAC,CAAC;QACT,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,IAAI,EAAE,OAAO,GAAG,GAAG,EAAE;gBACnB,oCAAoC;gBACpC,kBAAkB;oBAChB,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;wBACtD,IAAA,mBAAS,EAAC,OAAO,CAAC;wBAClB,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;gBACjB,CAAC,IAAI,CAAC,CAAC;gBACP,OAAO,GAAG,CAAC,CAAC;aACb;YACD,SAAS;SACV;QACD,IAAI,OAAO,GAAG,CAAC,EAAE;YACf,IAAI,OAAO,KAAK,CAAC;gBACf,kBAAkB;oBAChB,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;wBAClC,QAAQ;wBACR,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;iBAC/B;gBACH,kBAAkB;oBAChB,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;wBACtD,IAAA,mBAAS,EAAC,OAAO,CAAC;wBAClB,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAClC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;aAClB;YACD,CAAC,IAAI,CAAC,CAAC;YACP,OAAO,GAAG,CAAC,CAAC;SACb;QACD,IAAI,IAAI,KAAK,aAAa;YAAE,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,gBAAgB;YAAE,CAAC,IAAI,CAAC,CAAC;KACvC;IACD,qFAAqF;IACrF,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC;AAEF,kBAAe,cAAc,CAAC"}
@@ -0,0 +1,8 @@
1
+ declare const findLongestAndSubstitute: ({ compressedCallData, markers, }: {
2
+ compressedCallData: string;
3
+ markers?: string[] | undefined;
4
+ }) => {
5
+ newCompressedData: string;
6
+ nbOfDuplicatedStrings: number;
7
+ };
8
+ export default findLongestAndSubstitute;
@@ -0,0 +1,67 @@
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 findLongestDuplicatedString_1 = __importDefault(require("../utils/findLongestDuplicatedString"));
7
+ const findLongestAndSubstitute = ({ compressedCallData, markers, }) => {
8
+ if (!markers)
9
+ markers = [];
10
+ for (let i = 0; i < markers.length; i++) {
11
+ if (!markers[i] || markers[i] === '')
12
+ return {
13
+ newCompressedData: compressedCallData,
14
+ nbOfDuplicatedStrings: i,
15
+ };
16
+ const marker = markers[i];
17
+ let longestDuplicatedStringInCompressedData = (0, findLongestDuplicatedString_1.default)(compressedCallData);
18
+ // Checking if the length of the longest duplicated string is significant
19
+ // TODO: better check conditions to enter this (nb of occurences as well as length)
20
+ if (longestDuplicatedStringInCompressedData.length >= 8) {
21
+ // Creating regular expressions to find the longest duplicated string
22
+ const index = compressedCallData.indexOf(longestDuplicatedStringInCompressedData);
23
+ // If a match is found, surrounder the longest duplicated string with the marker in the compressed data
24
+ // and substitute the other occurences
25
+ if (index > -1) {
26
+ compressedCallData =
27
+ compressedCallData.substring(0, index) +
28
+ marker +
29
+ compressedCallData.substring(index, index + longestDuplicatedStringInCompressedData.length) +
30
+ marker +
31
+ compressedCallData.substring(index + longestDuplicatedStringInCompressedData.length);
32
+ let otherIndex = compressedCallData.indexOf(longestDuplicatedStringInCompressedData, index + 4 + longestDuplicatedStringInCompressedData.length);
33
+ while (otherIndex !== -1) {
34
+ if (otherIndex % 2 === 0) {
35
+ compressedCallData =
36
+ compressedCallData.substring(0, otherIndex) +
37
+ marker +
38
+ compressedCallData.substring(otherIndex + longestDuplicatedStringInCompressedData.length);
39
+ otherIndex = compressedCallData.indexOf(longestDuplicatedStringInCompressedData, otherIndex + 2);
40
+ }
41
+ else {
42
+ otherIndex = compressedCallData.indexOf(longestDuplicatedStringInCompressedData, otherIndex + 1);
43
+ }
44
+ }
45
+ }
46
+ else
47
+ return {
48
+ newCompressedData: compressedCallData,
49
+ nbOfDuplicatedStrings: i,
50
+ };
51
+ }
52
+ else {
53
+ // If the longest duplicated string is not significant, return the current state of compressed data and count of duplicated strings
54
+ return {
55
+ newCompressedData: compressedCallData,
56
+ nbOfDuplicatedStrings: i,
57
+ };
58
+ }
59
+ }
60
+ // After processing for all markers, return the final compressed data and the total number of duplicated strings found
61
+ return {
62
+ newCompressedData: compressedCallData,
63
+ nbOfDuplicatedStrings: markers.length,
64
+ };
65
+ };
66
+ exports.default = findLongestAndSubstitute;
67
+ //# sourceMappingURL=findLongestAndSubstitute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findLongestAndSubstitute.js","sourceRoot":"","sources":["../../../../src/executor/compressor/compress_functions/findLongestAndSubstitute.ts"],"names":[],"mappings":";;;;;AAAA,uGAA+E;AAE/E,MAAM,wBAAwB,GAAG,CAAC,EAChC,kBAAkB,EAClB,OAAO,GAIR,EAAgE,EAAE;IACjE,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,EAAE,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;YAClC,OAAO;gBACL,iBAAiB,EAAE,kBAAkB;gBACrC,qBAAqB,EAAE,CAAC;aACzB,CAAC;QAEJ,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAE1B,IAAI,uCAAuC,GACzC,IAAA,qCAA2B,EAAC,kBAAkB,CAAC,CAAC;QAElD,yEAAyE;QACzE,mFAAmF;QACnF,IAAI,uCAAuC,CAAC,MAAM,IAAI,CAAC,EAAE;YACvD,qEAAqE;YACrE,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CACtC,uCAAuC,CACxC,CAAC;YAEF,uGAAuG;YACvG,sCAAsC;YACtC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACd,kBAAkB;oBAChB,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;wBACtC,MAAM;wBACN,kBAAkB,CAAC,SAAS,CAC1B,KAAK,EACL,KAAK,GAAG,uCAAuC,CAAC,MAAM,CACvD;wBACD,MAAM;wBACN,kBAAkB,CAAC,SAAS,CAC1B,KAAK,GAAG,uCAAuC,CAAC,MAAM,CACvD,CAAC;gBAEJ,IAAI,UAAU,GAAG,kBAAkB,CAAC,OAAO,CACzC,uCAAuC,EACvC,KAAK,GAAG,CAAC,GAAG,uCAAuC,CAAC,MAAM,CAC3D,CAAC;gBACF,OAAO,UAAU,KAAK,CAAC,CAAC,EAAE;oBACxB,IAAI,UAAU,GAAG,CAAC,KAAK,CAAC,EAAE;wBACxB,kBAAkB;4BAChB,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC;gCAC3C,MAAM;gCACN,kBAAkB,CAAC,SAAS,CAC1B,UAAU,GAAG,uCAAuC,CAAC,MAAM,CAC5D,CAAC;wBACJ,UAAU,GAAG,kBAAkB,CAAC,OAAO,CACrC,uCAAuC,EACvC,UAAU,GAAG,CAAC,CACf,CAAC;qBACH;yBAAM;wBACL,UAAU,GAAG,kBAAkB,CAAC,OAAO,CACrC,uCAAuC,EACvC,UAAU,GAAG,CAAC,CACf,CAAC;qBACH;iBACF;aACF;;gBACC,OAAO;oBACL,iBAAiB,EAAE,kBAAkB;oBACrC,qBAAqB,EAAE,CAAC;iBACzB,CAAC;SACL;aAAM;YACL,mIAAmI;YACnI,OAAO;gBACL,iBAAiB,EAAE,kBAAkB;gBACrC,qBAAqB,EAAE,CAAC;aACzB,CAAC;SACH;KACF;IAED,sHAAsH;IACtH,OAAO;QACL,iBAAiB,EAAE,kBAAkB;QACrC,qBAAqB,EAAE,OAAO,CAAC,MAAM;KACtC,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,wBAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ declare const findLongestAndSubstitute: ({ compressedCallData, markers, }: {
2
+ compressedCallData: string;
3
+ markers?: string[] | undefined;
4
+ }) => {
5
+ newCompressedData: string;
6
+ nbOfDuplicatedStrings: number;
7
+ };
8
+ export default findLongestAndSubstitute;
@@ -0,0 +1,61 @@
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 findLongestDuplicatedString_1 = __importDefault(require("../utils/findLongestDuplicatedString"));
7
+ const findLongestAndSubstitute = ({ compressedCallData, markers, }) => {
8
+ if (!markers)
9
+ markers = [];
10
+ for (let i = 0; i < markers.length; i++) {
11
+ if (!markers[i] || markers[i] === '')
12
+ return {
13
+ newCompressedData: compressedCallData,
14
+ nbOfDuplicatedStrings: i,
15
+ };
16
+ const marker = markers[i];
17
+ let longestDuplicatedStringInCompressedData = (0, findLongestDuplicatedString_1.default)(compressedCallData);
18
+ // Checking if the length of the longest duplicated string is significant
19
+ // TODO: better check conditions to enter this (nb of occurences as well as length)
20
+ if (longestDuplicatedStringInCompressedData.length >= 8) {
21
+ // Creating regular expressions to find the longest duplicated string
22
+ const regexLongest = new RegExp('((^[a-zA-Z0-9]{2})*)' + longestDuplicatedStringInCompressedData);
23
+ const match = regexLongest.exec(compressedCallData);
24
+ // If a match is found, surrounder the longest duplicated string with the marker in the compressed data
25
+ // and substitute the other occurences
26
+ if (match) {
27
+ const indexOfLongest = match.index + match[1].length;
28
+ const regexLongestGlobal = new RegExp('((^[a-zA-Z0-9]{2})*)' + longestDuplicatedStringInCompressedData, 'g');
29
+ compressedCallData =
30
+ compressedCallData.substring(0, indexOfLongest) +
31
+ marker +
32
+ compressedCallData.substring(indexOfLongest, indexOfLongest + longestDuplicatedStringInCompressedData.length) +
33
+ marker +
34
+ compressedCallData
35
+ .substring(indexOfLongest + longestDuplicatedStringInCompressedData.length)
36
+ .replace(regexLongestGlobal, function (m, p1) {
37
+ return p1 + marker;
38
+ });
39
+ }
40
+ else
41
+ return {
42
+ newCompressedData: compressedCallData,
43
+ nbOfDuplicatedStrings: i,
44
+ };
45
+ }
46
+ else {
47
+ // If the longest duplicated string is not significant, return the current state of compressed data and count of duplicated strings
48
+ return {
49
+ newCompressedData: compressedCallData,
50
+ nbOfDuplicatedStrings: i,
51
+ };
52
+ }
53
+ }
54
+ // After processing for all markers, return the final compressed data and the total number of duplicated strings found
55
+ return {
56
+ newCompressedData: compressedCallData,
57
+ nbOfDuplicatedStrings: markers.length,
58
+ };
59
+ };
60
+ exports.default = findLongestAndSubstitute;
61
+ //# sourceMappingURL=findLongestAndSubstitute_old.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findLongestAndSubstitute_old.js","sourceRoot":"","sources":["../../../../src/executor/compressor/compress_functions/findLongestAndSubstitute_old.ts"],"names":[],"mappings":";;;;;AAAA,uGAA+E;AAE/E,MAAM,wBAAwB,GAAG,CAAC,EAChC,kBAAkB,EAClB,OAAO,GAIR,EAAgE,EAAE;IACjE,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,EAAE,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;YAClC,OAAO;gBACL,iBAAiB,EAAE,kBAAkB;gBACrC,qBAAqB,EAAE,CAAC;aACzB,CAAC;QAEJ,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAE1B,IAAI,uCAAuC,GACzC,IAAA,qCAA2B,EAAC,kBAAkB,CAAC,CAAC;QAElD,yEAAyE;QACzE,mFAAmF;QACnF,IAAI,uCAAuC,CAAC,MAAM,IAAI,CAAC,EAAE;YACvD,qEAAqE;YACrE,MAAM,YAAY,GAAG,IAAI,MAAM,CAC7B,sBAAsB,GAAG,uCAAuC,CACjE,CAAC;YACF,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAEpD,uGAAuG;YACvG,sCAAsC;YACtC,IAAI,KAAK,EAAE;gBACT,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACrD,MAAM,kBAAkB,GAAG,IAAI,MAAM,CACnC,sBAAsB,GAAG,uCAAuC,EAChE,GAAG,CACJ,CAAC;gBACF,kBAAkB;oBAChB,kBAAkB,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;wBAC/C,MAAM;wBACN,kBAAkB,CAAC,SAAS,CAC1B,cAAc,EACd,cAAc,GAAG,uCAAuC,CAAC,MAAM,CAChE;wBACD,MAAM;wBACN,kBAAkB;6BACf,SAAS,CACR,cAAc,GAAG,uCAAuC,CAAC,MAAM,CAChE;6BACA,OAAO,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAAE,EAAE;4BAC1C,OAAO,EAAE,GAAG,MAAM,CAAC;wBACrB,CAAC,CAAC,CAAC;aACR;;gBACC,OAAO;oBACL,iBAAiB,EAAE,kBAAkB;oBACrC,qBAAqB,EAAE,CAAC;iBACzB,CAAC;SACL;aAAM;YACL,mIAAmI;YACnI,OAAO;gBACL,iBAAiB,EAAE,kBAAkB;gBACrC,qBAAqB,EAAE,CAAC;aACzB,CAAC;SACH;KACF;IAED,sHAAsH;IACtH,OAAO;QACL,iBAAiB,EAAE,kBAAkB;QACrC,qBAAqB,EAAE,OAAO,CAAC,MAAM;KACtC,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,wBAAwB,CAAC"}
@@ -0,0 +1,6 @@
1
+ declare const reverseAddressSubstitution: ({ callData, addresses, isSavedAddresses, }: {
2
+ callData: string;
3
+ addresses: string[];
4
+ isSavedAddresses: boolean;
5
+ }) => string;
6
+ export default reverseAddressSubstitution;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const reverseAddressSubstitution = function ({ callData, addresses, isSavedAddresses, }) {
4
+ let markerLength = isSavedAddresses ? 5 : 3; // 'RR' + 3 bytes or 'TT' + 1 byte
5
+ let marker = isSavedAddresses ? 'RR' : 'TT';
6
+ let index = 0;
7
+ while (index < callData.length) {
8
+ let foundIndex = callData.indexOf(marker, index);
9
+ if (foundIndex === -1) {
10
+ break; // Marker not found, stop processing
11
+ }
12
+ else if (foundIndex % 2 !== 0) {
13
+ index++;
14
+ continue;
15
+ }
16
+ let addressIndex;
17
+ if (isSavedAddresses) {
18
+ // Extract 3 bytes after 'RR', convert to int
19
+ addressIndex = parseInt(callData.substring(foundIndex + 2, foundIndex + 5), 16);
20
+ }
21
+ else {
22
+ // Extract 1 byte after 'TT', convert to int
23
+ addressIndex = parseInt(callData.substring(foundIndex + 2, foundIndex + 3), 16);
24
+ }
25
+ if (addressIndex < addresses.length) {
26
+ // Replace marker and index bytes with the corresponding address
27
+ callData =
28
+ callData.substring(0, foundIndex) +
29
+ addresses[addressIndex] +
30
+ callData.substring(foundIndex + markerLength);
31
+ }
32
+ index = foundIndex + 1; // Update index to continue searching
33
+ }
34
+ return callData;
35
+ };
36
+ exports.default = reverseAddressSubstitution;
37
+ //# sourceMappingURL=reverseAddressSubstitution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reverseAddressSubstitution.js","sourceRoot":"","sources":["../../../../src/executor/compressor/compress_functions/reverseAddressSubstitution.ts"],"names":[],"mappings":";;AAAA,MAAM,0BAA0B,GAAG,UAAU,EAC3C,QAAQ,EACR,SAAS,EACT,gBAAgB,GAKjB;IACC,IAAI,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC;IAC/E,IAAI,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE;QAC9B,IAAI,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;YACrB,MAAM,CAAC,oCAAoC;SAC5C;aAAM,IAAI,UAAU,GAAG,CAAC,KAAK,CAAC,EAAE;YAC/B,KAAK,EAAE,CAAC;YACR,SAAS;SACV;QAED,IAAI,YAAoB,CAAC;QACzB,IAAI,gBAAgB,EAAE;YACpB,6CAA6C;YAC7C,YAAY,GAAG,QAAQ,CACrB,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,EAClD,EAAE,CACH,CAAC;SACH;aAAM;YACL,4CAA4C;YAC5C,YAAY,GAAG,QAAQ,CACrB,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,EAClD,EAAE,CACH,CAAC;SACH;QAED,IAAI,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE;YACnC,gEAAgE;YAChE,QAAQ;gBACN,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC;oBACjC,SAAS,CAAC,YAAY,CAAC;oBACvB,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY,CAAC,CAAC;SACjD;QACD,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,qCAAqC;KAC9D;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,kBAAe,0BAA0B,CAAC"}
@@ -0,0 +1,9 @@
1
+ declare const searchUnusedBytes: ({ newAddresses, compressedCallData, }: {
2
+ newAddresses: string[];
3
+ compressedCallData: string;
4
+ }) => {
5
+ addressPrefix: string;
6
+ newAddressPrefix: string;
7
+ duplicatedStringMarkers: string[];
8
+ };
9
+ export default searchUnusedBytes;
@@ -0,0 +1,33 @@
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 intToByte_1 = __importDefault(require("../utils/intToByte"));
7
+ const searchUnusedBytes = ({ newAddresses, compressedCallData, }) => {
8
+ let addressPrefix = '';
9
+ let newAddressPrefix = '';
10
+ let duplicatedStringMarkers = [];
11
+ for (let i = 1; i < 256; i++) {
12
+ if (addressPrefix.length &&
13
+ (newAddressPrefix.length || !newAddresses.length) &&
14
+ duplicatedStringMarkers.length === 6)
15
+ break;
16
+ let byte = (0, intToByte_1.default)(i);
17
+ if (!compressedCallData.includes(byte)) {
18
+ if (!addressPrefix.length)
19
+ addressPrefix = byte;
20
+ else if (!newAddressPrefix.length && newAddresses.length)
21
+ newAddressPrefix = byte;
22
+ else if (duplicatedStringMarkers.length < 6)
23
+ duplicatedStringMarkers.push(byte);
24
+ }
25
+ }
26
+ return {
27
+ addressPrefix,
28
+ newAddressPrefix,
29
+ duplicatedStringMarkers,
30
+ };
31
+ };
32
+ exports.default = searchUnusedBytes;
33
+ //# sourceMappingURL=searchUnusedBytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchUnusedBytes.js","sourceRoot":"","sources":["../../../../src/executor/compressor/compress_functions/searchUnusedBytes.ts"],"names":[],"mappings":";;;;;AAAA,mEAA2C;AAE3C,MAAM,iBAAiB,GAAG,CAAC,EACzB,YAAY,EACZ,kBAAkB,GAInB,EAIC,EAAE;IACF,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,uBAAuB,GAAa,EAAE,CAAC;IAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5B,IACE,aAAa,CAAC,MAAM;YACpB,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACjD,uBAAuB,CAAC,MAAM,KAAK,CAAC;YAEpC,MAAM;QAER,IAAI,IAAI,GAAG,IAAA,mBAAS,EAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,MAAM;gBAAE,aAAa,GAAG,IAAI,CAAC;iBAC3C,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM;gBACtD,gBAAgB,GAAG,IAAI,CAAC;iBACrB,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC;gBACzC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACtC;KACF;IAED,OAAO;QACL,aAAa;QACb,gBAAgB;QAChB,uBAAuB;KACxB,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ // import fetchSavedAddresses from './utils/fetchSavedAddresses';
3
+ // import fetchSavedMethods from './utils/fetchSavedMethods';
4
+ // import contractAddressByNetwork from './../data/contractAddressByNetwork';
5
+ // import fs from 'fs';
6
+ // const fetchSaved = async (): Promise<void> => {
7
+ // setInterval(async () => {
8
+ // for (const network in contractAddressByNetwork) {
9
+ // const savedAddresses = await fetchSavedAddresses(network);
10
+ // const savedMethods = await fetchSavedMethods(network);
11
+ // fs.writeFileSync(`./lib/data/${network}/savedAddresses.js`, `module.exports = ${JSON.stringify(savedAddresses)}`);
12
+ // fs.writeFileSync(`./lib/data/${network}/savedMethods.js`, `module.exports = ${JSON.stringify(savedMethods)}`);
13
+ // }
14
+ // }, 1000 * 300);
15
+ // };
16
+ // fetchSaved();
17
+ //# sourceMappingURL=fetchSaved.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchSaved.js","sourceRoot":"","sources":["../../../src/executor/compressor/fetchSaved.ts"],"names":[],"mappings":";AAAA,iEAAiE;AACjE,6DAA6D;AAC7D,6EAA6E;AAC7E,uBAAuB;AAEvB,kDAAkD;AAClD,8BAA8B;AAC9B,wDAAwD;AACxD,mEAAmE;AACnE,+DAA+D;AAE/D,2HAA2H;AAC3H,uHAAuH;AACvH,QAAQ;AACR,oBAAoB;AACpB,KAAK;AAEL,gBAAgB"}
@@ -0,0 +1,2 @@
1
+ declare function computeCost(data: string): number;
2
+ export default computeCost;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Function to compute cost based on zero and non-zero byte counts in data as priced by L2 (OP)
4
+ function computeCost(data) {
5
+ let countZero = 0;
6
+ for (let i = data.startsWith('0x') ? 2 : 0; i < data.length; i += 2) {
7
+ if (data.substring(i, i + 2) == '00')
8
+ countZero++;
9
+ }
10
+ const cost = countZero * 4 + (data.length / 2 - countZero) * 16;
11
+ return cost;
12
+ }
13
+ exports.default = computeCost;
14
+ //# sourceMappingURL=computeCostL2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeCostL2.js","sourceRoot":"","sources":["../../../../src/executor/compressor/utils/computeCostL2.ts"],"names":[],"mappings":";;AAAA,+FAA+F;AAC/F,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACnE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI;YAAE,SAAS,EAAE,CAAC;KACnD;IACD,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;IAChE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const findLongestDuplicatedString: (string: string) => string;
2
+ export default findLongestDuplicatedString;
@@ -0,0 +1,30 @@
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 computeCostL2_1 = __importDefault(require("./computeCostL2"));
7
+ const findLongestDuplicatedString = (string) => {
8
+ let maxLetters = '';
9
+ let maxCost = 0;
10
+ const allSames = [];
11
+ for (let i = 0; i < string.length; i += 2) {
12
+ let j = 0;
13
+ let searchedString = string.substring(i, i + 2);
14
+ while (string.substring(i + j * 2 + 2).indexOf(searchedString) > -1) {
15
+ let cost = (0, computeCostL2_1.default)(searchedString);
16
+ if (cost > maxCost) {
17
+ maxLetters = searchedString;
18
+ maxCost = cost;
19
+ }
20
+ j++;
21
+ searchedString = string.substring(i, i + j * 2 + 2);
22
+ }
23
+ if (searchedString.length > 6) {
24
+ allSames.push(searchedString.substring(0, searchedString.length - 2));
25
+ }
26
+ }
27
+ return maxLetters;
28
+ };
29
+ exports.default = findLongestDuplicatedString;
30
+ //# sourceMappingURL=findLongestDuplicatedString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findLongestDuplicatedString.js","sourceRoot":"","sources":["../../../../src/executor/compressor/utils/findLongestDuplicatedString.ts"],"names":[],"mappings":";;;;;AAAA,oEAA0C;AAE1C,MAAM,2BAA2B,GAAG,CAAC,MAAc,EAAU,EAAE;IAC7D,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACzC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAEhD,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;YACnE,IAAI,IAAI,GAAG,IAAA,uBAAW,EAAC,cAAc,CAAC,CAAC;YACvC,IAAI,IAAI,GAAG,OAAO,EAAE;gBAClB,UAAU,GAAG,cAAc,CAAC;gBAC5B,OAAO,GAAG,IAAI,CAAC;aAChB;YACD,CAAC,EAAE,CAAC;YACJ,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SACrD;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;SACvE;KACF;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,kBAAe,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare function getAllIndexes<T>(arr: T[], val: T): number[];
2
+ export default getAllIndexes;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function getAllIndexes(arr, val) {
4
+ let indexes = [];
5
+ let i = -1;
6
+ while ((i = arr.indexOf(val, i + 1)) != -1) {
7
+ indexes.push(i);
8
+ }
9
+ return indexes;
10
+ }
11
+ exports.default = getAllIndexes; // Function to get all indexes of a specific value in an array
12
+ //# sourceMappingURL=getAllIndexes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAllIndexes.js","sourceRoot":"","sources":["../../../../src/executor/compressor/utils/getAllIndexes.ts"],"names":[],"mappings":";;AAAA,SAAS,aAAa,CAAI,GAAQ,EAAE,GAAM;IACxC,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAEX,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kBAAe,aAAa,CAAC,CAAC,8DAA8D"}
@@ -0,0 +1,2 @@
1
+ declare const getByteForAddress: (addresses: string[], address: string) => string | null;
2
+ export default getByteForAddress;
@@ -0,0 +1,14 @@
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 intTo3Bytes_1 = __importDefault(require("./intTo3Bytes"));
7
+ const getByteForAddress = (addresses, address) => {
8
+ const index = addresses.indexOf(address.toLowerCase());
9
+ if (index < 0)
10
+ return null;
11
+ return (0, intTo3Bytes_1.default)(index);
12
+ };
13
+ exports.default = getByteForAddress;
14
+ //# sourceMappingURL=getByteForAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getByteForAddress.js","sourceRoot":"","sources":["../../../../src/executor/compressor/utils/getByteForAddress.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AAExC,MAAM,iBAAiB,GAAG,CACxB,SAAmB,EACnB,OAAe,EACA,EAAE;IACjB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACvD,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3B,OAAO,IAAA,qBAAW,EAAC,KAAK,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const intTo2Bytes: (int: number) => string;
2
+ export default intTo2Bytes;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const intTo2Bytes = (int) => {
4
+ let hex = int.toString(16);
5
+ if (hex.length < 2)
6
+ hex = '000' + hex;
7
+ else if (hex.length < 3)
8
+ hex = '00' + hex;
9
+ else if (hex.length < 4)
10
+ hex = '0' + hex;
11
+ return hex;
12
+ };
13
+ exports.default = intTo2Bytes;
14
+ //# sourceMappingURL=intTo2Bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intTo2Bytes.js","sourceRoot":"","sources":["../../../../src/executor/compressor/utils/intTo2Bytes.ts"],"names":[],"mappings":";;AAAA,MAAM,WAAW,GAAG,CAAC,GAAW,EAAU,EAAE;IAC1C,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;SACjC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;SACrC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAEzC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const intTo3Bytes: (int: number) => string;
2
+ export default intTo3Bytes;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const intTo3Bytes = (int) => {
4
+ let hex = int.toString(16);
5
+ if (hex.length < 2)
6
+ hex = '00000' + hex;
7
+ else if (hex.length < 3)
8
+ hex = '0000' + hex;
9
+ else if (hex.length < 4)
10
+ hex = '000' + hex;
11
+ else if (hex.length < 5)
12
+ hex = '00' + hex;
13
+ else if (hex.length < 6)
14
+ hex = '0' + hex;
15
+ return hex;
16
+ };
17
+ exports.default = intTo3Bytes;
18
+ //# sourceMappingURL=intTo3Bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intTo3Bytes.js","sourceRoot":"","sources":["../../../../src/executor/compressor/utils/intTo3Bytes.ts"],"names":[],"mappings":";;AAAA,MAAM,WAAW,GAAG,CAAC,GAAW,EAAU,EAAE;IAC1C,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;SACnC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;SACvC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;SACtC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;SACrC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAEzC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const intToByte: (int: number) => string;
2
+ export default intToByte;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const intToByte = (int) => {
4
+ let hex = int.toString(16);
5
+ if (hex.length < 2)
6
+ hex = '0' + hex;
7
+ return hex;
8
+ };
9
+ exports.default = intToByte;
10
+ //# sourceMappingURL=intToByte.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intToByte.js","sourceRoot":"","sources":["../../../../src/executor/compressor/utils/intToByte.ts"],"names":[],"mappings":";;AAAA,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE;IACxC,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACpC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC"}
package/build/types.d.ts CHANGED
@@ -134,6 +134,7 @@ export declare type AdapterExchangeParam = {
134
134
  };
135
135
  export declare type DexExchangeParam = {
136
136
  needWrapNative: boolean;
137
+ skipApproval?: boolean;
137
138
  wethAddress?: string;
138
139
  exchangeData: string;
139
140
  targetExchange: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "3.8.1",
3
+ "version": "3.8.3",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",