hopefully fix websockets closing from over-use

This commit is contained in:
nitowa
2022-02-12 20:01:03 +01:00
parent de6d1da3c1
commit 2674141716
6 changed files with 250 additions and 148 deletions
+182 -126
View File
@@ -1,6 +1,6 @@
{ {
"name": "xrpio", "name": "xrpio",
"version": "0.0.2", "version": "0.0.4",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@@ -11,9 +11,9 @@
"dev": true "dev": true
}, },
"@types/lodash": { "@types/lodash": {
"version": "4.14.168", "version": "4.14.178",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.168.tgz", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz",
"integrity": "sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==" "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw=="
}, },
"@types/mocha": { "@types/mocha": {
"version": "8.2.2", "version": "8.2.2",
@@ -27,9 +27,9 @@
"integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==" "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw=="
}, },
"@types/ws": { "@types/ws": {
"version": "7.4.1", "version": "7.4.7",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.1.tgz", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz",
"integrity": "sha512-ISCK1iFnR+jYv7+jLNX0wDqesZ/5RAeY3wUx6QaphmocphU61h+b+PHjS18TF4WIPTu/MMzxIq2PHr32o2TS5Q==", "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==",
"requires": { "requires": {
"@types/node": "*" "@types/node": "*"
} }
@@ -85,11 +85,6 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true "dev": true
}, },
"array-filter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz",
"integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM="
},
"asn1.js": { "asn1.js": {
"version": "5.4.1", "version": "5.4.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
@@ -128,12 +123,9 @@
"dev": true "dev": true
}, },
"available-typed-arrays": { "available-typed-arrays": {
"version": "1.0.2", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
"integrity": "sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw=="
"requires": {
"array-filter": "^1.0.0"
}
}, },
"balanced-match": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
@@ -148,9 +140,9 @@
"dev": true "dev": true
}, },
"base-x": { "base-x": {
"version": "3.0.8", "version": "3.0.9",
"resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz",
"integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==",
"requires": { "requires": {
"safe-buffer": "^5.0.1" "safe-buffer": "^5.0.1"
} }
@@ -161,9 +153,9 @@
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
}, },
"big-integer": { "big-integer": {
"version": "1.6.48", "version": "1.6.51",
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
"integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg=="
}, },
"big.js": { "big.js": {
"version": "5.2.2", "version": "5.2.2",
@@ -172,9 +164,9 @@
"dev": true "dev": true
}, },
"bignumber.js": { "bignumber.js": {
"version": "9.0.1", "version": "9.0.2",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz",
"integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==" "integrity": "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw=="
}, },
"binary-extensions": { "binary-extensions": {
"version": "2.2.0", "version": "2.2.0",
@@ -485,9 +477,9 @@
} }
}, },
"debug": { "debug": {
"version": "4.3.1", "version": "4.3.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"requires": { "requires": {
"ms": "2.1.2" "ms": "2.1.2"
} }
@@ -499,9 +491,9 @@
"dev": true "dev": true
}, },
"decimal.js": { "decimal.js": {
"version": "10.2.1", "version": "10.3.1",
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz",
"integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ=="
}, },
"deep-eql": { "deep-eql": {
"version": "3.0.1", "version": "3.0.1",
@@ -598,26 +590,30 @@
} }
}, },
"es-abstract": { "es-abstract": {
"version": "1.18.0", "version": "1.19.1",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
"integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
"requires": { "requires": {
"call-bind": "^1.0.2", "call-bind": "^1.0.2",
"es-to-primitive": "^1.2.1", "es-to-primitive": "^1.2.1",
"function-bind": "^1.1.1", "function-bind": "^1.1.1",
"get-intrinsic": "^1.1.1", "get-intrinsic": "^1.1.1",
"get-symbol-description": "^1.0.0",
"has": "^1.0.3", "has": "^1.0.3",
"has-symbols": "^1.0.2", "has-symbols": "^1.0.2",
"is-callable": "^1.2.3", "internal-slot": "^1.0.3",
"is-callable": "^1.2.4",
"is-negative-zero": "^2.0.1", "is-negative-zero": "^2.0.1",
"is-regex": "^1.1.2", "is-regex": "^1.1.4",
"is-string": "^1.0.5", "is-shared-array-buffer": "^1.0.1",
"object-inspect": "^1.9.0", "is-string": "^1.0.7",
"is-weakref": "^1.0.1",
"object-inspect": "^1.11.0",
"object-keys": "^1.1.1", "object-keys": "^1.1.1",
"object.assign": "^4.1.2", "object.assign": "^4.1.2",
"string.prototype.trimend": "^1.0.4", "string.prototype.trimend": "^1.0.4",
"string.prototype.trimstart": "^1.0.4", "string.prototype.trimstart": "^1.0.4",
"unbox-primitive": "^1.0.0" "unbox-primitive": "^1.0.1"
} }
}, },
"es-to-primitive": { "es-to-primitive": {
@@ -727,6 +723,15 @@
"has-symbols": "^1.0.1" "has-symbols": "^1.0.1"
} }
}, },
"get-symbol-description": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
"integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
"requires": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.1.1"
}
},
"glob": { "glob": {
"version": "7.2.0", "version": "7.2.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
@@ -799,6 +804,14 @@
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
}, },
"has-tostringtag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
"integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
"requires": {
"has-symbols": "^1.0.2"
}
},
"hash-base": { "hash-base": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
@@ -863,18 +876,32 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
}, },
"is-arguments": { "internal-slot": {
"version": "1.1.0", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
"integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
"requires": { "requires": {
"call-bind": "^1.0.0" "get-intrinsic": "^1.1.0",
"has": "^1.0.3",
"side-channel": "^1.0.4"
}
},
"is-arguments": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
"integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
"requires": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
} }
}, },
"is-bigint": { "is-bigint": {
"version": "1.0.1", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
"integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==" "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
"requires": {
"has-bigints": "^1.0.1"
}
}, },
"is-binary-path": { "is-binary-path": {
"version": "2.1.0", "version": "2.1.0",
@@ -886,22 +913,26 @@
} }
}, },
"is-boolean-object": { "is-boolean-object": {
"version": "1.1.0", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
"integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
"requires": { "requires": {
"call-bind": "^1.0.0" "call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
} }
}, },
"is-callable": { "is-callable": {
"version": "1.2.3", "version": "1.2.4",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
"integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w=="
}, },
"is-date-object": { "is-date-object": {
"version": "1.0.2", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
"requires": {
"has-tostringtag": "^1.0.0"
}
}, },
"is-extglob": { "is-extglob": {
"version": "2.1.1", "version": "2.1.1",
@@ -916,9 +947,12 @@
"dev": true "dev": true
}, },
"is-generator-function": { "is-generator-function": {
"version": "1.0.8", "version": "1.0.10",
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.8.tgz", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
"integrity": "sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==" "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
"requires": {
"has-tostringtag": "^1.0.0"
}
}, },
"is-glob": { "is-glob": {
"version": "4.0.3", "version": "4.0.3",
@@ -939,9 +973,9 @@
} }
}, },
"is-negative-zero": { "is-negative-zero": {
"version": "2.0.1", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
"integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA=="
}, },
"is-number": { "is-number": {
"version": "7.0.0", "version": "7.0.0",
@@ -950,9 +984,12 @@
"dev": true "dev": true
}, },
"is-number-object": { "is-number-object": {
"version": "1.0.4", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
"integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==" "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
"requires": {
"has-tostringtag": "^1.0.0"
}
}, },
"is-plain-obj": { "is-plain-obj": {
"version": "2.1.0", "version": "2.1.0",
@@ -961,37 +998,45 @@
"dev": true "dev": true
}, },
"is-regex": { "is-regex": {
"version": "1.1.2", "version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
"integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"requires": { "requires": {
"call-bind": "^1.0.2", "call-bind": "^1.0.2",
"has-symbols": "^1.0.1" "has-tostringtag": "^1.0.0"
} }
}, },
"is-shared-array-buffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
"integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA=="
},
"is-string": { "is-string": {
"version": "1.0.5", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
"integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"requires": {
"has-tostringtag": "^1.0.0"
}
}, },
"is-symbol": { "is-symbol": {
"version": "1.0.3", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
"integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
"requires": { "requires": {
"has-symbols": "^1.0.1" "has-symbols": "^1.0.2"
} }
}, },
"is-typed-array": { "is-typed-array": {
"version": "1.1.5", "version": "1.1.8",
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz",
"integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==",
"requires": { "requires": {
"available-typed-arrays": "^1.0.2", "available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.2", "call-bind": "^1.0.2",
"es-abstract": "^1.18.0-next.2", "es-abstract": "^1.18.5",
"foreach": "^2.0.5", "foreach": "^2.0.5",
"has-symbols": "^1.0.1" "has-tostringtag": "^1.0.0"
} }
}, },
"is-unicode-supported": { "is-unicode-supported": {
@@ -1000,6 +1045,14 @@
"integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
"dev": true "dev": true
}, },
"is-weakref": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
"integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
"requires": {
"call-bind": "^1.0.2"
}
},
"isarray": { "isarray": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -1066,11 +1119,6 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
}, },
"lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
},
"log-symbols": { "log-symbols": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -1306,9 +1354,9 @@
"dev": true "dev": true
}, },
"object-inspect": { "object-inspect": {
"version": "1.9.0", "version": "1.12.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
"integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g=="
}, },
"object-is": { "object-is": {
"version": "1.1.5", "version": "1.1.5",
@@ -1506,43 +1554,43 @@
} }
}, },
"ripple-address-codec": { "ripple-address-codec": {
"version": "4.1.2", "version": "4.2.3",
"resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.1.2.tgz", "resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.2.3.tgz",
"integrity": "sha512-bIhmaxOg6rwVYkPQha9cuHdIdwmD8XTnaklBmyRjFvNZwYJ6Cf0cdCt+SpJd+RRJhRU65+U1Eup6YkoCBrqebg==", "integrity": "sha512-9Nd0hQmKoJEhSTzYR9kYjKmSWlH6HaVosNVAM7mIIVlzcNlQCPfKXj7CfvXcRiHl3C6XUZj7RFLqzVaPjq2ufA==",
"requires": { "requires": {
"base-x": "3.0.8", "base-x": "3.0.9",
"create-hash": "^1.1.2" "create-hash": "^1.1.2"
} }
}, },
"ripple-binary-codec": { "ripple-binary-codec": {
"version": "1.1.2", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.1.2.tgz", "resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.3.2.tgz",
"integrity": "sha512-BrsBkNic0F2++zEnCmWlHZEBNmMUJMN9xL2HL5I2fpmo0qlv+6g9oT7HrkxY3HCui52PJuKnkkrwBjqWvPBqpg==", "integrity": "sha512-8VG1vfb3EM1J7ZdPXo9E57Zv2hF4cxT64gP6rGSQzODVgMjiBCWozhN3729qNTGtHItz0e82Oix8v95vWYBQ3A==",
"requires": { "requires": {
"assert": "^2.0.0", "assert": "^2.0.0",
"big-integer": "^1.6.48", "big-integer": "^1.6.48",
"buffer": "5.6.0", "buffer": "5.6.0",
"create-hash": "^1.2.0", "create-hash": "^1.2.0",
"decimal.js": "^10.2.0", "decimal.js": "^10.2.0",
"ripple-address-codec": "^4.1.1" "ripple-address-codec": "^4.2.3"
} }
}, },
"ripple-keypairs": { "ripple-keypairs": {
"version": "1.0.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-1.0.3.tgz", "resolved": "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-1.1.3.tgz",
"integrity": "sha512-Na5q8sUdxjd5DXBM88ocJgL2Ig0I1USyO3bvI0SMxJPp7F9DHvqLdPX45PVXs7HUq0Dj691Z9Uz9NeD/K7/eOA==", "integrity": "sha512-y74Y3c0g652BgpDhWsf0x98GnUyY2D9eO2ay2exienUfbIe00TeIiFhYXQhCGVnliGsxeV9WTpU+YuEWuIxuhw==",
"requires": { "requires": {
"bn.js": "^5.1.1", "bn.js": "^5.1.1",
"brorand": "^1.0.5", "brorand": "^1.0.5",
"elliptic": "^6.5.2", "elliptic": "^6.5.4",
"hash.js": "^1.0.3", "hash.js": "^1.0.3",
"ripple-address-codec": "^4.0.0" "ripple-address-codec": "^4.2.3"
} }
}, },
"ripple-lib": { "ripple-lib": {
"version": "1.9.3", "version": "1.10.0",
"resolved": "https://registry.npmjs.org/ripple-lib/-/ripple-lib-1.9.3.tgz", "resolved": "https://registry.npmjs.org/ripple-lib/-/ripple-lib-1.10.0.tgz",
"integrity": "sha512-AUYK6uqt661EbQe/28QAl8v4WwWDU32alDSRU+GVxPQbngjmv70G1oUOPvCwSgWOexHqL9PR72b9GgMdLVSt1w==", "integrity": "sha512-Cg2u73UybfM1PnzcuLt5flvLKZn35ovdIp+1eLrReVB4swuRuUF/SskJG9hf5wMosbvh+E+jZu8A6IbYJoyFIA==",
"requires": { "requires": {
"@types/lodash": "^4.14.136", "@types/lodash": "^4.14.136",
"@types/ws": "^7.2.0", "@types/ws": "^7.2.0",
@@ -1550,9 +1598,8 @@
"https-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0",
"jsonschema": "1.2.2", "jsonschema": "1.2.2",
"lodash": "^4.17.4", "lodash": "^4.17.4",
"lodash.isequal": "^4.5.0",
"ripple-address-codec": "^4.1.1", "ripple-address-codec": "^4.1.1",
"ripple-binary-codec": "^1.1.2", "ripple-binary-codec": "^1.1.3",
"ripple-keypairs": "^1.0.3", "ripple-keypairs": "^1.0.3",
"ripple-lib-transactionparser": "0.8.2", "ripple-lib-transactionparser": "0.8.2",
"ws": "^7.2.0" "ws": "^7.2.0"
@@ -1616,6 +1663,16 @@
"vscode-textmate": "5.2.0" "vscode-textmate": "5.2.0"
} }
}, },
"side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"requires": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
"object-inspect": "^1.9.0"
}
},
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -1805,9 +1862,9 @@
"dev": true "dev": true
}, },
"util": { "util": {
"version": "0.12.3", "version": "0.12.4",
"resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz", "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz",
"integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==", "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==",
"requires": { "requires": {
"inherits": "^2.0.3", "inherits": "^2.0.3",
"is-arguments": "^1.0.4", "is-arguments": "^1.0.4",
@@ -1872,17 +1929,16 @@
} }
}, },
"which-typed-array": { "which-typed-array": {
"version": "1.1.4", "version": "1.1.7",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz",
"integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==",
"requires": { "requires": {
"available-typed-arrays": "^1.0.2", "available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.0", "call-bind": "^1.0.2",
"es-abstract": "^1.18.0-next.1", "es-abstract": "^1.18.5",
"foreach": "^2.0.5", "foreach": "^2.0.5",
"function-bind": "^1.1.1", "has-tostringtag": "^1.0.0",
"has-symbols": "^1.0.1", "is-typed-array": "^1.1.7"
"is-typed-array": "^1.1.3"
} }
}, },
"wordwrap": { "wordwrap": {
@@ -1915,9 +1971,9 @@
"dev": true "dev": true
}, },
"ws": { "ws": {
"version": "7.5.6", "version": "7.5.7",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz",
"integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==" "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A=="
}, },
"y18n": { "y18n": {
"version": "5.0.8", "version": "5.0.8",
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "xrpio", "name": "xrpio",
"version": "0.0.4", "version": "0.0.5",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://gitea.nitowa.xyz/npm-packages/xrpio.git" "url": "https://gitea.nitowa.xyz/npm-packages/xrpio.git"
@@ -28,7 +28,7 @@
"author": "nitowa", "author": "nitowa",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"ripple-lib": "^1.9.3" "ripple-lib": "^1.10.0"
}, },
"devDependencies": { "devDependencies": {
"@types/chai": "^4.2.21", "@types/chai": "^4.2.21",
+45 -15
View File
@@ -12,9 +12,16 @@ const PAYLOAD_SIZE = 925
const debug = false const debug = false
const cloneApi = async (api: RippleAPI): Promise<RippleAPI> => { const cloneApi = async (api: RippleAPI): Promise<RippleAPI> => {
const subApi = new RippleAPI({ server: api.connection['_url'] }) try{
await subApi.connect() const subApi = new RippleAPI({ server: api.connection['_url'] })
return subApi await subApi.connect()
return subApi
}catch(e){
if(debug){
console.log("CLONEAPI ERR", e)
}
return await cloneApi(api)
}
} }
export const getLatestSequence = async (api: RippleAPI, accountAddress: string): Promise<number> => { export const getLatestSequence = async (api: RippleAPI, accountAddress: string): Promise<number> => {
@@ -31,7 +38,7 @@ const sendReliably = (api: RippleAPI, signed: any, preparedPayment,): Promise<an
let status let status
try { try {
status = await api.getTransaction(signed.id, { status = await api.getTransaction(signed.id, {
minLedgerVersion: 20368096 minLedgerVersion: 25235454
}) })
} catch (e) { } catch (e) {
@@ -85,23 +92,26 @@ export const sendPayment = async (api: RippleAPI, data: Memo[], from: string, to
}, },
memos: data, memos: data,
}; };
const _api = await cloneApi(api)
try { try {
const _api = await cloneApi(api)
const prepared = await _api.preparePayment(from, payment, options) const prepared = await _api.preparePayment(from, payment, options)
const signed = _api.sign(prepared.txJSON, secret); const signed = _api.sign(prepared.txJSON, secret);
const txHash = await _api.submit(signed.signedTransaction) const txHash = await _api.submit(signed.signedTransaction)
if(debug) console.log("Transaction submitted", txHash) //if(debug) console.log("Transaction submitted", txHash)
await sendReliably(_api, signed, prepared) await sendReliably(_api, signed, prepared)
_api.disconnect()
return txHash return txHash
} catch (error) { } catch (error) {
//console.log("SENDPAYMENT ERROR", error) if(debug)
console.log("SENDPAYMENT ERROR", error)
throw error throw error
}finally{
_api.disconnect()
} }
} }
export const getTransactions = async (api: RippleAPI, address: string, minLedgerVersion: number = 19832467): Promise<any[]> => { export const getTransactions = async (api: RippleAPI, address: string, minLedgerVersion: number = 25235454): Promise<any[]> => {
const txs = await api.getTransactions(address, { const txs = await api.getTransactions(address, {
minLedgerVersion: minLedgerVersion, minLedgerVersion: minLedgerVersion,
earliestFirst: true, earliestFirst: true,
@@ -110,7 +120,8 @@ export const getTransactions = async (api: RippleAPI, address: string, minLedger
return txs return txs
} }
export const writeRaw = async (api: RippleAPI, data: Memo, from: string, to: string, secret: string, sequence?: number): Promise<string> => { export const writeRaw = async (api: RippleAPI, data: Memo, from:
string, to: string, secret: string, sequence?: number): Promise<string> => {
//if (memoSize(data) > 1000) throw new Error("data length exceeds capacity") //if (memoSize(data) > 1000) throw new Error("data length exceeds capacity")
try { try {
if (!sequence) { if (!sequence) {
@@ -121,19 +132,38 @@ export const writeRaw = async (api: RippleAPI, data: Memo, from: string, to: str
const resp = await sendPayment(api, [data], from, to, secret, sequence) const resp = await sendPayment(api, [data], from, to, secret, sequence)
return resp['tx_json'].hash return resp['tx_json'].hash
} catch (error) { } catch (error) {
console.log("WRITERAW ERR", error); if(debug){
console.log("WRITERAW ERR", error);
}
throw error
} }
} }
export const readRaw = async (api: RippleAPI, hash: string): Promise<Memo> => { export const readRaw = async (api: RippleAPI, hash: string): Promise<Memo> => {
const tx = await api.getTransaction(hash, { let _api
minLedgerVersion: 16392480 if(!api.isConnected()){
}) _api = await cloneApi(api)
}else{
_api = api
}
let tx
try{
tx = await _api.getTransaction(hash, {
minLedgerVersion: 25235454
})
}catch(e){
if(debug){
console.log("READRAW ERR", e)
throw e
}
}finally{
await _api.disconnect()
}
if (!tx || !tx.specification || !tx.specification['memos'] || !tx.specification['memos'][0]) { if (!tx || !tx.specification || !tx.specification['memos'] || !tx.specification['memos'][0]) {
throw new Error('Invalid Transaction ' + hash) throw new Error('Invalid Transaction ' + hash)
} }
return tx.specification['memos'][0] return tx.specification['memos'][0]
} }
+4
View File
@@ -1,4 +1,6 @@
import { Wallet } from "../src/util/types"; import { Wallet } from "../src/util/types";
import { readFileSync } from 'fs'
const Path = require('path')
export const TEST_CONFIG = { export const TEST_CONFIG = {
"rippleNode": "wss://s.altnet.rippletest.net:51233" "rippleNode": "wss://s.altnet.rippletest.net:51233"
@@ -22,6 +24,8 @@ export const makeTestnetWallet = () : Promise<Wallet> => fetch('https://faucet.a
}) })
}); });
export const htmlTxt = readFileSync(Path.resolve(__dirname, '..', '..', 'test', 'index.html')).toString('ascii')
export const longText = `Software testing export const longText = `Software testing
From Wikipedia, the free encyclopedia From Wikipedia, the free encyclopedia
Jump to navigationJump to search Jump to navigationJump to search
+1
View File
File diff suppressed because one or more lines are too long
+16 -5
View File
@@ -1,5 +1,5 @@
import { RippleAPI } from 'ripple-lib' import { RippleAPI } from 'ripple-lib'
import { longText, makeTestnetWallet, TEST_CONFIG, TEST_DATA } from './CONSTANTS' import { htmlTxt, longText, makeTestnetWallet, TEST_CONFIG, TEST_DATA } from './CONSTANTS'
import { getLatestSequence, sendPayment, treeRead, treeWrite } from '../src/xrpIO/ripple-binding' import { getLatestSequence, sendPayment, treeRead, treeWrite } from '../src/xrpIO/ripple-binding'
import * as chai from 'chai'; import * as chai from 'chai';
import { Wallet } from '../src/util/types'; import { Wallet } from '../src/util/types';
@@ -19,7 +19,7 @@ describe('XRPIO', () => {
await new Promise((res, rej) => setTimeout(res, 10000)) //it takes a moment for the wallets to become active await new Promise((res, rej) => setTimeout(res, 10000)) //it takes a moment for the wallets to become active
}) })
before(async () => { beforeEach(async () => {
try { try {
api = new RippleAPI({ server: TEST_CONFIG.rippleNode }) api = new RippleAPI({ server: TEST_CONFIG.rippleNode })
return await api.connect() return await api.connect()
@@ -29,7 +29,7 @@ describe('XRPIO', () => {
} }
}) })
after(async function () { afterEach(async function () {
try { try {
return await api.disconnect() return await api.disconnect()
} catch (e) { } catch (e) {
@@ -64,7 +64,7 @@ describe('XRPIO', () => {
}) })
it('can tree read', async function () { it('can tree read', async function () {
this.timeout(1500) this.timeout(15000)
const data = await treeRead(api, [treeRoot]) const data = await treeRead(api, [treeRoot])
expect(data).to.be.equal(TEST_DATA) expect(data).to.be.equal(TEST_DATA)
}) })
@@ -75,11 +75,22 @@ describe('XRPIO', () => {
}) })
it('can tree read large', async function () { it('can tree read large', async function () {
this.timeout(3000) this.timeout(30000)
const data = await treeRead(api, [treeRoot]) const data = await treeRead(api, [treeRoot])
expect(data).to.be.equal(longText) expect(data).to.be.equal(longText)
}) })
it(`can tree write extra large (${htmlTxt.length} bytes)`, async function () {
this.timeout(300000)
treeRoot = await treeWrite(api, htmlTxt, sendWallet, receiveWallet.address)
})
it('can tree read extra large', async function () {
this.timeout(300000)
const data = await treeRead(api, [treeRoot])
expect(data).to.be.equal(htmlTxt)
})
it("can r/w binary", async function () { it("can r/w binary", async function () {
this.timeout(10000); this.timeout(10000);