Merge branch 'main' of github.com:mvid/cosmjs into authz-queries

This commit is contained in:
Mantas Vidutis 2022-11-24 11:36:44 -08:00
commit 94dbb54a38
No known key found for this signature in database
GPG Key ID: 60BDC8CD8FA60E29
49 changed files with 482 additions and 372 deletions

View File

@ -85,7 +85,7 @@ jobs:
name: Install Git Large File Storage (LFS)
# In the current image, `sudo apt install git-lfs` requires `sudo apt update` which is too slow
command: |
wget -O "$HOME/git-lfs.deb" https://packagecloud.io/github/git-lfs/packages/ubuntu/focal/git-lfs_2.12.1_amd64.deb/download.deb
wget -O "$HOME/git-lfs.deb" https://packagecloud.io/github/git-lfs/packages/ubuntu/focal/git-lfs_2.13.3_amd64.deb/download.deb
sudo dpkg -i "$HOME/git-lfs.deb"
- checkout
- run: # start early for less wait time below
@ -207,7 +207,7 @@ jobs:
name: Install Git Large File Storage (LFS)
# In the current image, `sudo apt install git-lfs` requires `sudo apt update` which is too slow
command: |
wget -O "$HOME/git-lfs.deb" https://packagecloud.io/github/git-lfs/packages/ubuntu/focal/git-lfs_2.12.1_amd64.deb/download.deb
wget -O "$HOME/git-lfs.deb" https://packagecloud.io/github/git-lfs/packages/ubuntu/focal/git-lfs_2.13.3_amd64.deb/download.deb
sudo dpkg -i "$HOME/git-lfs.deb"
- checkout
- run: # start early for less wait time below
@ -329,7 +329,7 @@ jobs:
name: Install Git Large File Storage (LFS)
# In the current image, `sudo apt install git-lfs` requires `sudo apt update` which is too slow
command: |
wget -O "$HOME/git-lfs.deb" https://packagecloud.io/github/git-lfs/packages/ubuntu/focal/git-lfs_2.12.1_amd64.deb/download.deb
wget -O "$HOME/git-lfs.deb" https://packagecloud.io/github/git-lfs/packages/ubuntu/focal/git-lfs_2.13.3_amd64.deb/download.deb
sudo dpkg -i "$HOME/git-lfs.deb"
- checkout
- run: # start early for less wait time below
@ -427,7 +427,7 @@ jobs:
name: Install Git Large File Storage (LFS)
# In the current image, `sudo apt install git-lfs` requires `sudo apt update` which is too slow
command: |
wget -O "$HOME/git-lfs.deb" https://packagecloud.io/github/git-lfs/packages/ubuntu/focal/git-lfs_2.12.1_amd64.deb/download.deb
wget -O "$HOME/git-lfs.deb" https://packagecloud.io/github/git-lfs/packages/ubuntu/focal/git-lfs_2.13.3_amd64.deb/download.deb
sudo dpkg -i "$HOME/git-lfs.deb"
- checkout
- run: # start early for less wait time below

116
.pnp.cjs generated
View File

@ -416,8 +416,8 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
"npm:1.1.0"\
],\
[\
"@socket.io/base64-arraybuffer",\
"npm:1.0.2"\
"@socket.io/component-emitter",\
"npm:3.1.0"\
],\
[\
"@tootallnate/once",\
@ -447,10 +447,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
"@types/body-parser",\
"npm:1.19.0"\
],\
[\
"@types/component-emitter",\
"npm:1.2.10"\
],\
[\
"@types/connect",\
"npm:3.4.34"\
@ -477,7 +473,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
],\
[\
"@types/elliptic",\
"npm:6.4.12"\
"npm:6.4.14"\
],\
[\
"@types/eslint",\
@ -995,10 +991,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
"commondir",\
"npm:1.0.1"\
],\
[\
"component-emitter",\
"npm:1.3.0"\
],\
[\
"concat-map",\
"npm:0.0.1"\
@ -1161,11 +1153,11 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
],\
[\
"engine.io",\
"npm:6.1.2"\
"npm:6.2.0"\
],\
[\
"engine.io-parser",\
"npm:5.0.3"\
"npm:5.0.4"\
],\
[\
"enhanced-resolve",\
@ -2453,15 +2445,15 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
],\
[\
"socket.io",\
"npm:4.4.1"\
"npm:4.5.3"\
],\
[\
"socket.io-adapter",\
"npm:2.3.3"\
"npm:2.4.0"\
],\
[\
"socket.io-parser",\
"npm:4.0.4"\
"npm:4.2.1"\
],\
[\
"socks",\
@ -3335,7 +3327,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
["@istanbuljs/nyc-config-typescript", "virtual:4f1584ad4aba8733a24be7c8aebbffafef25607f2d00f4b314cf96717145c692763628a31c2b85d4686fbb091ff21ebffa3cc337399c042c19a32b9bdb786464#npm:1.0.1"],\
["@noble/hashes", "npm:1.0.0"],\
["@types/bn.js", "npm:5.1.0"],\
["@types/elliptic", "npm:6.4.12"],\
["@types/elliptic", "npm:6.4.14"],\
["@types/eslint-plugin-prettier", "npm:3.1.0"],\
["@types/jasmine", "npm:4.0.3"],\
["@types/karma-firefox-launcher", "npm:2.1.0"],\
@ -4318,11 +4310,11 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
"linkType": "HARD"\
}]\
]],\
["@socket.io/base64-arraybuffer", [\
["npm:1.0.2", {\
"packageLocation": "./.yarn/cache/@socket.io-base64-arraybuffer-npm-1.0.2-066f9f7d09-fa3e58c758.zip/node_modules/@socket.io/base64-arraybuffer/",\
["@socket.io/component-emitter", [\
["npm:3.1.0", {\
"packageLocation": "./.yarn/cache/@socket.io-component-emitter-npm-3.1.0-3f778351c2-db069d9542.zip/node_modules/@socket.io/component-emitter/",\
"packageDependencies": [\
["@socket.io/base64-arraybuffer", "npm:1.0.2"]\
["@socket.io/component-emitter", "npm:3.1.0"]\
],\
"linkType": "HARD"\
}]\
@ -4395,15 +4387,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
"linkType": "HARD"\
}]\
]],\
["@types/component-emitter", [\
["npm:1.2.10", {\
"packageLocation": "./.yarn/cache/@types-component-emitter-npm-1.2.10-95c27b794b-7589d3a10e.zip/node_modules/@types/component-emitter/",\
"packageDependencies": [\
["@types/component-emitter", "npm:1.2.10"]\
],\
"linkType": "HARD"\
}]\
]],\
["@types/connect", [\
["npm:3.4.34", {\
"packageLocation": "./.yarn/cache/@types-connect-npm-3.4.34-39e4f7bb55-c6e2aa299c.zip/node_modules/@types/connect/",\
@ -4464,10 +4447,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
}]\
]],\
["@types/elliptic", [\
["npm:6.4.12", {\
"packageLocation": "./.yarn/cache/@types-elliptic-npm-6.4.12-02ae0f4627-35dc3b6b4b.zip/node_modules/@types/elliptic/",\
["npm:6.4.14", {\
"packageLocation": "./.yarn/cache/@types-elliptic-npm-6.4.14-77735f3256-d5a64f540e.zip/node_modules/@types/elliptic/",\
"packageDependencies": [\
["@types/elliptic", "npm:6.4.12"],\
["@types/elliptic", "npm:6.4.14"],\
["@types/bn.js", "npm:5.1.0"]\
],\
"linkType": "HARD"\
@ -6802,15 +6785,6 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
"linkType": "HARD"\
}]\
]],\
["component-emitter", [\
["npm:1.3.0", {\
"packageLocation": "./.yarn/cache/component-emitter-npm-1.3.0-4b848565b9-b3c46de38f.zip/node_modules/component-emitter/",\
"packageDependencies": [\
["component-emitter", "npm:1.3.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["concat-map", [\
["npm:0.0.1", {\
"packageLocation": "./.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip/node_modules/concat-map/",\
@ -7296,10 +7270,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
}]\
]],\
["engine.io", [\
["npm:6.1.2", {\
"packageLocation": "./.yarn/cache/engine.io-npm-6.1.2-733cb68993-bd98d6ce2b.zip/node_modules/engine.io/",\
["npm:6.2.0", {\
"packageLocation": "./.yarn/cache/engine.io-npm-6.2.0-a0c0d83e66-cc485c5ba2.zip/node_modules/engine.io/",\
"packageDependencies": [\
["engine.io", "npm:6.1.2"],\
["engine.io", "npm:6.2.0"],\
["@types/cookie", "npm:0.4.1"],\
["@types/cors", "npm:2.8.12"],\
["@types/node", "npm:15.9.0"],\
@ -7308,18 +7282,17 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
["cookie", "npm:0.4.1"],\
["cors", "npm:2.8.5"],\
["debug", "virtual:6d7ba8035a34a8cbc48e227f3e803dbc3acaabbab2521c3cd66a45a2853fa6bda5b3ccb3ab1942c8a738927bc0e228ea8d5baa6461d73e2cf6a345db629c4f47#npm:4.3.3"],\
["engine.io-parser", "npm:5.0.3"],\
["ws", "virtual:733cb6899318fc97abde396915533fc4f9852a2d62abe85daf265f0103211854a5c657d9a2fa18cdee56e1c047ccecb37162ba0f185d142200181f148b16695f#npm:8.2.3"]\
["engine.io-parser", "npm:5.0.4"],\
["ws", "virtual:a0c0d83e66563f51d601c822567e6d79b2ed7475481445e29115ee78d98a1ad5241e9e0cbf0e0eb707d80a4db444175061b5c5627b6aa1262f0868dc9ad1e7a1#npm:8.2.3"]\
],\
"linkType": "HARD"\
}]\
]],\
["engine.io-parser", [\
["npm:5.0.3", {\
"packageLocation": "./.yarn/cache/engine.io-parser-npm-5.0.3-55c5b3beef-88d664420a.zip/node_modules/engine.io-parser/",\
["npm:5.0.4", {\
"packageLocation": "./.yarn/cache/engine.io-parser-npm-5.0.4-27a510b395-d4ad0cef6f.zip/node_modules/engine.io-parser/",\
"packageDependencies": [\
["engine.io-parser", "npm:5.0.3"],\
["@socket.io/base64-arraybuffer", "npm:1.0.2"]\
["engine.io-parser", "npm:5.0.4"]\
],\
"linkType": "HARD"\
}]\
@ -9272,7 +9245,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
["qjobs", "npm:1.2.0"],\
["range-parser", "npm:1.2.1"],\
["rimraf", "npm:3.0.2"],\
["socket.io", "npm:4.4.1"],\
["socket.io", "npm:4.5.3"],\
["source-map", "npm:0.6.1"],\
["tmp", "npm:0.2.1"],\
["ua-parser-js", "npm:0.7.31"],\
@ -11246,36 +11219,35 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
}]\
]],\
["socket.io", [\
["npm:4.4.1", {\
"packageLocation": "./.yarn/cache/socket.io-npm-4.4.1-b2ec7c47a5-a559ae5235.zip/node_modules/socket.io/",\
["npm:4.5.3", {\
"packageLocation": "./.yarn/cache/socket.io-npm-4.5.3-30385c9144-2a7e4c64bb.zip/node_modules/socket.io/",\
"packageDependencies": [\
["socket.io", "npm:4.4.1"],\
["socket.io", "npm:4.5.3"],\
["accepts", "npm:1.3.7"],\
["base64id", "npm:2.0.0"],\
["debug", "virtual:6d7ba8035a34a8cbc48e227f3e803dbc3acaabbab2521c3cd66a45a2853fa6bda5b3ccb3ab1942c8a738927bc0e228ea8d5baa6461d73e2cf6a345db629c4f47#npm:4.3.3"],\
["engine.io", "npm:6.1.2"],\
["socket.io-adapter", "npm:2.3.3"],\
["socket.io-parser", "npm:4.0.4"]\
["engine.io", "npm:6.2.0"],\
["socket.io-adapter", "npm:2.4.0"],\
["socket.io-parser", "npm:4.2.1"]\
],\
"linkType": "HARD"\
}]\
]],\
["socket.io-adapter", [\
["npm:2.3.3", {\
"packageLocation": "./.yarn/cache/socket.io-adapter-npm-2.3.3-4fd6b5d0bd-73890e0a33.zip/node_modules/socket.io-adapter/",\
["npm:2.4.0", {\
"packageLocation": "./.yarn/cache/socket.io-adapter-npm-2.4.0-36a74a6ea1-a84639946d.zip/node_modules/socket.io-adapter/",\
"packageDependencies": [\
["socket.io-adapter", "npm:2.3.3"]\
["socket.io-adapter", "npm:2.4.0"]\
],\
"linkType": "HARD"\
}]\
]],\
["socket.io-parser", [\
["npm:4.0.4", {\
"packageLocation": "./.yarn/cache/socket.io-parser-npm-4.0.4-1dfc284556-c173b4f374.zip/node_modules/socket.io-parser/",\
["npm:4.2.1", {\
"packageLocation": "./.yarn/cache/socket.io-parser-npm-4.2.1-7ef513b498-2582202f22.zip/node_modules/socket.io-parser/",\
"packageDependencies": [\
["socket.io-parser", "npm:4.0.4"],\
["@types/component-emitter", "npm:1.2.10"],\
["component-emitter", "npm:1.3.0"],\
["socket.io-parser", "npm:4.2.1"],\
["@socket.io/component-emitter", "npm:3.1.0"],\
["debug", "virtual:6d7ba8035a34a8cbc48e227f3e803dbc3acaabbab2521c3cd66a45a2853fa6bda5b3ccb3ab1942c8a738927bc0e228ea8d5baa6461d73e2cf6a345db629c4f47#npm:4.3.3"]\
],\
"linkType": "HARD"\
@ -13751,10 +13723,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
],\
"linkType": "SOFT"\
}],\
["virtual:733cb6899318fc97abde396915533fc4f9852a2d62abe85daf265f0103211854a5c657d9a2fa18cdee56e1c047ccecb37162ba0f185d142200181f148b16695f#npm:8.2.3", {\
"packageLocation": "./.yarn/__virtual__/ws-virtual-4b865e96d3/0/cache/ws-npm-8.2.3-03a35b8ad7-c869296ccb.zip/node_modules/ws/",\
["virtual:992e8a49329af27dec1603ba7ec6f83173fb73e1d5752e95d78d0bec9ff8e148a218f65e20742125a49b958677fd4d6119ec35f9c56f9b4ea72f0e32f53b591b#npm:7.4.6", {\
"packageLocation": "./.yarn/__virtual__/ws-virtual-271fa5cbbc/0/cache/ws-npm-7.4.6-9c9a725604-3a990b32ed.zip/node_modules/ws/",\
"packageDependencies": [\
["ws", "virtual:733cb6899318fc97abde396915533fc4f9852a2d62abe85daf265f0103211854a5c657d9a2fa18cdee56e1c047ccecb37162ba0f185d142200181f148b16695f#npm:8.2.3"],\
["ws", "virtual:992e8a49329af27dec1603ba7ec6f83173fb73e1d5752e95d78d0bec9ff8e148a218f65e20742125a49b958677fd4d6119ec35f9c56f9b4ea72f0e32f53b591b#npm:7.4.6"],\
["@types/bufferutil", null],\
["@types/utf-8-validate", null],\
["bufferutil", null],\
@ -13768,10 +13740,10 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
],\
"linkType": "HARD"\
}],\
["virtual:992e8a49329af27dec1603ba7ec6f83173fb73e1d5752e95d78d0bec9ff8e148a218f65e20742125a49b958677fd4d6119ec35f9c56f9b4ea72f0e32f53b591b#npm:7.4.6", {\
"packageLocation": "./.yarn/__virtual__/ws-virtual-271fa5cbbc/0/cache/ws-npm-7.4.6-9c9a725604-3a990b32ed.zip/node_modules/ws/",\
["virtual:a0c0d83e66563f51d601c822567e6d79b2ed7475481445e29115ee78d98a1ad5241e9e0cbf0e0eb707d80a4db444175061b5c5627b6aa1262f0868dc9ad1e7a1#npm:8.2.3", {\
"packageLocation": "./.yarn/__virtual__/ws-virtual-d4fe871b31/0/cache/ws-npm-8.2.3-03a35b8ad7-c869296ccb.zip/node_modules/ws/",\
"packageDependencies": [\
["ws", "virtual:992e8a49329af27dec1603ba7ec6f83173fb73e1d5752e95d78d0bec9ff8e148a218f65e20742125a49b958677fd4d6119ec35f9c56f9b4ea72f0e32f53b591b#npm:7.4.6"],\
["ws", "virtual:a0c0d83e66563f51d601c822567e6d79b2ed7475481445e29115ee78d98a1ad5241e9e0cbf0e0eb707d80a4db444175061b5c5627b6aa1262f0868dc9ad1e7a1#npm:8.2.3"],\
["@types/bufferutil", null],\
["@types/utf-8-validate", null],\
["bufferutil", null],\

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.yarn/cache/@types-elliptic-npm-6.4.14-77735f3256-d5a64f540e.zip (Stored with Git LFS) vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
.yarn/cache/engine.io-npm-6.2.0-a0c0d83e66-cc485c5ba2.zip (Stored with Git LFS) vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
.yarn/cache/engine.io-parser-npm-5.0.4-27a510b395-d4ad0cef6f.zip (Stored with Git LFS) vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
.yarn/cache/socket.io-adapter-npm-2.4.0-36a74a6ea1-a84639946d.zip (Stored with Git LFS) vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
.yarn/cache/socket.io-npm-4.5.3-30385c9144-2a7e4c64bb.zip (Stored with Git LFS) vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
.yarn/cache/socket.io-parser-npm-4.2.1-7ef513b498-2582202f22.zip (Stored with Git LFS) vendored Normal file

Binary file not shown.

View File

@ -6,6 +6,36 @@ and this project adheres to
## [Unreleased]
### Deprecated
- @cosmjs/stargate: Deprecate `QueryClient.queryUnverified` in favour of newly
added `QueryClient.queryAbci`.
## [0.29.4] - 2022-11-15
### Added
- @cosmjs/tendermint-rpc: The options in the `HttpBatchClient` constructor are
now of type `Partial<HttpBatchClientOptions>`, allowing you to set only the
fields you want to change ([#1309]).
- @cosmjs/tendermint-rpc: Add missing exports `HttpBatchClient`,
`HttpBatchClientOptions`, `RpcClient` ([#1311]).
- @cosmjs/tendermint-rpc: Send batch immediately when full in `HttpBatchClient`
([#1310]).
[#1309]: https://github.com/cosmos/cosmjs/issues/1309
[#1310]: https://github.com/cosmos/cosmjs/issues/1310
[#1311]: https://github.com/cosmos/cosmjs/issues/1311
### Fixed
- @cosmjs/cosmwasm-stargate: Fix `ContractCodeHistory` decoding when msg
contains non-printable ASCII ([#1320]).
- @cosmjs/crypto: Bump elliptic version to ^6.5.4 due to
[CVE-2020-28498](https://github.com/advisories/GHSA-r9p9-mrjm-926w).
[#1320]: https://github.com/cosmos/cosmjs/pull/1320
## [0.29.3] - 2022-10-25
### Added
@ -1087,7 +1117,8 @@ CHANGELOG entries missing. Please see [the diff][0.24.1].
`FeeTable`. @cosmjs/cosmwasm has its own `FeeTable` with those properties.
- @cosmjs/sdk38: Rename package to @cosmjs/launchpad.
[unreleased]: https://github.com/cosmos/cosmjs/compare/v0.29.3...HEAD
[unreleased]: https://github.com/cosmos/cosmjs/compare/v0.29.4...HEAD
[0.29.4]: https://github.com/cosmos/cosmjs/compare/v0.29.3...v0.29.4
[0.29.3]: https://github.com/cosmos/cosmjs/compare/v0.29.2...v0.29.3
[0.29.2]: https://github.com/cosmos/cosmjs/compare/v0.29.1...v0.29.2
[0.29.1]: https://github.com/cosmos/cosmjs/compare/v0.29.0...v0.29.1

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/amino",
"version": "0.29.3",
"version": "0.29.4",
"description": "Helpers for Amino based signing.",
"contributors": [
"Simon Warta <webmaster128@users.noreply.github.com>"

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/cli",
"version": "0.29.3",
"version": "0.29.4",
"description": "Command line interface",
"contributors": [
"IOV SAS <admin@iov.one>",

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/cosmwasm-stargate",
"version": "0.29.3",
"version": "0.29.4",
"description": "CosmWasm SDK",
"contributors": [
"Will Clark <willclarktech@users.noreply.github.com>"

View File

@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/naming-convention */
import { fromAscii, toHex } from "@cosmjs/encoding";
import { fromUtf8, toHex } from "@cosmjs/encoding";
import { Uint53 } from "@cosmjs/math";
import {
Account,
@ -415,7 +415,7 @@ export class CosmWasmClient {
return {
operation: operations[entry.operation],
codeId: entry.codeId.toNumber(),
msg: JSON.parse(fromAscii(entry.msg)),
msg: JSON.parse(fromUtf8(entry.msg)),
};
});
}

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/crypto",
"version": "0.29.3",
"version": "0.29.4",
"description": "Cryptography resources for blockchain projects",
"contributors": [
"IOV SAS <admin@iov.one>",
@ -46,13 +46,13 @@
"@cosmjs/utils": "workspace:^",
"@noble/hashes": "^1",
"bn.js": "^5.2.0",
"elliptic": "^6.5.3",
"elliptic": "^6.5.4",
"libsodium-wrappers": "^0.7.6"
},
"devDependencies": {
"@istanbuljs/nyc-config-typescript": "^1.0.1",
"@types/bn.js": "^5",
"@types/elliptic": "^6.4.12",
"@types/elliptic": "^6.4.14",
"@types/eslint-plugin-prettier": "^3",
"@types/jasmine": "^4",
"@types/karma-firefox-launcher": "^2",

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/encoding",
"version": "0.29.3",
"version": "0.29.4",
"description": "Encoding helpers for blockchain projects",
"contributors": [
"IOV SAS <admin@iov.one>"

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/faucet-client",
"version": "0.29.3",
"version": "0.29.4",
"description": "The faucet client",
"contributors": [
"Will Clark <willclarktech@users.noreply.github.com>"

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/faucet",
"version": "0.29.3",
"version": "0.29.4",
"description": "The faucet",
"contributors": [
"Ethan Frey <ethanfrey@users.noreply.github.com>",

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/json-rpc",
"version": "0.29.3",
"version": "0.29.4",
"description": "Framework for implementing a JSON-RPC 2.0 API",
"contributors": [
"IOV SAS <admin@iov.one>",

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/ledger-amino",
"version": "0.29.3",
"version": "0.29.4",
"description": "A library for signing Amino-encoded transactions using Ledger devices",
"contributors": [
"Will Clark <willclarktech@users.noreply.github.com>"

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/math",
"version": "0.29.3",
"version": "0.29.4",
"description": "Math helpers for blockchain projects",
"contributors": [
"IOV SAS <admin@iov.one>"

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/proto-signing",
"version": "0.29.3",
"version": "0.29.4",
"description": "Utilities for protobuf based signing (Cosmos SDK 0.40+)",
"contributors": [
"Will Clark <willclarktech@users.noreply.github.com>",

View File

@ -46,7 +46,7 @@ export function makeAuthInfoBytes(
);
assert(feePayer === undefined || typeof feePayer === "string", "feePayer must be undefined or string");
const authInfo = {
const authInfo = AuthInfo.fromPartial({
signerInfos: makeSignerInfos(signers, signMode),
fee: {
amount: [...feeAmount],
@ -54,8 +54,8 @@ export function makeAuthInfoBytes(
granter: feeGranter,
payer: feePayer,
},
};
return AuthInfo.encode(AuthInfo.fromPartial(authInfo)).finish();
});
return AuthInfo.encode(authInfo).finish();
}
export function makeSignDoc(

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/socket",
"version": "0.29.3",
"version": "0.29.4",
"description": "Utility functions for working with WebSockets",
"contributors": [
"IOV SAS <admin@iov.one>",

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/stargate",
"version": "0.29.3",
"version": "0.29.4",
"description": "Utilities for Cosmos SDK 0.40",
"contributors": [
"Simon Warta <webmaster128@users.noreply.github.com>"

View File

@ -166,4 +166,95 @@ describe("QueryClient", () => {
tmClient.disconnect();
});
});
describe("queryAbci", () => {
it("works via WebSockets", async () => {
pendingWithoutSimapp();
const [client, tmClient] = await makeClient(simapp.tendermintUrlWs);
const requestData = Uint8Array.from(
QueryAllBalancesRequest.encode({ address: unused.address }).finish(),
);
const { value } = await client.queryAbci(`/cosmos.bank.v1beta1.Query/AllBalances`, requestData);
const response = QueryAllBalancesResponse.decode(value);
expect(response.balances.length).toEqual(2);
tmClient.disconnect();
});
it("works via http", async () => {
pendingWithoutSimapp();
const [client, tmClient] = await makeClient(simapp.tendermintUrlHttp);
const requestData = Uint8Array.from(
QueryAllBalancesRequest.encode({ address: unused.address }).finish(),
);
const { value } = await client.queryAbci(`/cosmos.bank.v1beta1.Query/AllBalances`, requestData);
const response = QueryAllBalancesResponse.decode(value);
expect(response.balances.length).toEqual(2);
tmClient.disconnect();
});
it("works for height", async () => {
pendingWithoutSimapp();
const [queryClient, tmClient] = await makeClient(simapp.tendermintUrlHttp);
const joe = makeRandomAddress();
const h1 = (await tmClient.status()).syncInfo.latestBlockHeight;
// Send tokens to `recipient`
const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic);
const client = await SigningStargateClient.connectWithSigner(
simapp.tendermintUrlHttp,
wallet,
defaultSigningClientOptions,
);
const amount = coin(332211, simapp.denomFee);
await client.sendTokens(faucet.address0, joe, [amount], "auto");
const h2 = (await tmClient.status()).syncInfo.latestBlockHeight;
assert(h1 < h2);
// Query with no height
{
const requestData = QueryBalanceRequest.encode({ address: joe, denom: simapp.denomFee }).finish();
const { value, height } = await queryClient.queryAbci(
`/cosmos.bank.v1beta1.Query/Balance`,
requestData,
);
const response = QueryBalanceResponse.decode(value);
expect(response.balance).toEqual(amount);
expect(height).toEqual(h2);
}
// Query at h2 (after send)
{
const requestData = QueryBalanceRequest.encode({ address: joe, denom: simapp.denomFee }).finish();
const { value, height } = await queryClient.queryAbci(
`/cosmos.bank.v1beta1.Query/Balance`,
requestData,
h2,
);
const response = QueryBalanceResponse.decode(value);
expect(response.balance).toEqual(amount);
expect(height).toEqual(h2);
}
// Query at h1 (before send)
{
const requestData = QueryBalanceRequest.encode({ address: joe, denom: simapp.denomFee }).finish();
const { value, height } = await queryClient.queryAbci(
`/cosmos.bank.v1beta1.Query/Balance`,
requestData,
h1,
);
const response = QueryBalanceResponse.decode(value);
expect(response.balance).toEqual({ amount: "0", denom: simapp.denomFee });
expect(height).toEqual(h1);
}
tmClient.disconnect();
});
});
});

View File

@ -26,6 +26,16 @@ export interface ProvenQuery {
readonly height: number;
}
/**
* The response of an ABCI query to Tendermint.
* This is a subset of `tendermint34.AbciQueryResponse` in order
* to abstract away Tendermint versions.
*/
export interface QueryAbciResponse {
readonly value: Uint8Array;
readonly height: number;
}
export class QueryClient {
/** Constructs a QueryClient with 0 extensions */
public static withExtensions(tmClient: Tendermint34Client): QueryClient;
@ -570,11 +580,32 @@ export class QueryClient {
};
}
/**
* Performs an ABCI query to Tendermint without requesting a proof.
*
* @deprecated use queryAbci instead
*/
public async queryUnverified(
path: string,
request: Uint8Array,
desiredHeight?: number,
): Promise<Uint8Array> {
const response = await this.queryAbci(path, request, desiredHeight);
return response.value;
}
/**
* Performs an ABCI query to Tendermint without requesting a proof.
*
* If the `desiredHeight` is set, a particular height is requested. Otherwise
* the latest height is requested. The response contains the actual height of
* the query.
*/
public async queryAbci(
path: string,
request: Uint8Array,
desiredHeight?: number,
): Promise<QueryAbciResponse> {
const response = await this.tmClient.abciQuery({
path: path,
data: request,
@ -586,7 +617,14 @@ export class QueryClient {
throw new Error(`Query failed with (${response.code}): ${response.log}`);
}
return response.value;
if (!response.height) {
throw new Error("No query height returned");
}
return {
value: response.value,
height: response.height,
};
}
// this must return the header for height+1

View File

@ -31,9 +31,10 @@ export interface ProtobufRpcClient {
export function createProtobufRpcClient(base: QueryClient): ProtobufRpcClient {
return {
request: (service: string, method: string, data: Uint8Array): Promise<Uint8Array> => {
request: async (service: string, method: string, data: Uint8Array): Promise<Uint8Array> => {
const path = `/${service}/${method}`;
return base.queryUnverified(path, data);
const response = await base.queryAbci(path, data, undefined);
return response.value;
},
};
}

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/stream",
"version": "0.29.3",
"version": "0.29.4",
"description": "Utility functions for producing and consuming streams",
"contributors": [
"IOV SAS <admin@iov.one>",

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/tendermint-rpc",
"version": "0.29.3",
"version": "0.29.4",
"description": "Tendermint RPC clients",
"contributors": [
"IOV SAS <admin@iov.one>",

View File

@ -12,11 +12,17 @@ export {
toRfc3339WithNanoseconds,
toSeconds,
} from "./dates";
// The public Tendermint34Client.create constructor allows manually choosing an RpcClient.
// This is currently the only way to switch to the HttpBatchClient (which may become default at some point).
// Due to this API, we make RPC client implementations public.
export {
// This type is part of the Tendermint34Client.connect API
HttpEndpoint,
HttpBatchClient,
HttpBatchClientOptions,
HttpClient,
HttpEndpoint, // This type is part of the Tendermint34Client.connect API
RpcClient, // Interface type in Tendermint34Client.create
WebsocketClient,
} from "./rpcclients";
export { HttpClient, WebsocketClient } from "./rpcclients"; // TODO: Why do we export those outside of this package?
export {
AbciInfoRequest,
AbciInfoResponse,

View File

@ -0,0 +1,63 @@
/* eslint-disable @typescript-eslint/naming-convention */
import { createJsonRpcRequest } from "../jsonrpc";
import { defaultInstance, pendingWithoutTendermint } from "../testutil.spec";
import { http } from "./http";
function pendingWithoutHttpServer(): void {
if (!process.env.HTTPSERVER_ENABLED) {
pending("Set HTTPSERVER_ENABLED to enable HTTP tests");
}
}
const tendermintUrl = defaultInstance.url;
const echoUrl = "http://localhost:5555/echo_headers";
describe("http", () => {
it("can send a health request", async () => {
pendingWithoutTendermint();
const response = await http("POST", `http://${tendermintUrl}`, undefined, createJsonRpcRequest("health"));
expect(response).toEqual(jasmine.objectContaining({ jsonrpc: "2.0" }));
});
it("errors for non-open port", async () => {
await expectAsync(
http("POST", `http://localhost:56745`, undefined, createJsonRpcRequest("health")),
).toBeRejectedWithError(/(ECONNREFUSED|Failed to fetch)/i);
});
it("can send custom headers", async () => {
pendingWithoutHttpServer();
// Without custom headers
const response1 = await http("POST", echoUrl, undefined, createJsonRpcRequest("health"));
expect(response1).toEqual({
request_headers: jasmine.objectContaining({
// Basic headers from http client
Accept: jasmine.any(String),
"Content-Length": jasmine.any(String),
"Content-Type": "application/json",
Host: jasmine.any(String),
"User-Agent": jasmine.any(String),
}),
});
// With custom headers
const response2 = await http(
"POST",
echoUrl,
{ foo: "bar123", Authorization: "Basic Z3Vlc3Q6bm9QYXNzMTIz" },
createJsonRpcRequest("health"),
);
expect(response2).toEqual({
request_headers: jasmine.objectContaining({
// Basic headers from http client
"Content-Length": jasmine.any(String),
"Content-Type": "application/json",
Host: jasmine.any(String),
"User-Agent": jasmine.any(String),
// Custom headers
foo: "bar123",
Authorization: "Basic Z3Vlc3Q6bm9QYXNzMTIz",
}),
});
});
});

View File

@ -0,0 +1,44 @@
import axios from "axios";
// Global symbols in some environments
// https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch
declare const fetch: any | undefined;
function filterBadStatus(res: any): any {
if (res.status >= 400) {
throw new Error(`Bad status on response: ${res.status}`);
}
return res;
}
/**
* Helper to work around missing CORS support in Tendermint (https://github.com/tendermint/tendermint/pull/2800)
*
* For some reason, fetch does not complain about missing server-side CORS support.
*/
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export async function http(
method: "POST",
url: string,
headers: Record<string, string> | undefined,
request?: any,
): Promise<any> {
if (typeof fetch !== "undefined") {
const settings = {
method: method,
body: request ? JSON.stringify(request) : undefined,
headers: {
// eslint-disable-next-line @typescript-eslint/naming-convention
"Content-Type": "application/json",
...headers,
},
};
return fetch(url, settings)
.then(filterBadStatus)
.then((res: any) => res.json());
} else {
return axios
.request({ url: url, method: method, data: request, headers: headers })
.then((res) => res.data);
}
}

View File

@ -2,7 +2,6 @@
import { createJsonRpcRequest } from "../jsonrpc";
import { defaultInstance } from "../testutil.spec";
import { HttpBatchClient } from "./httpbatchclient";
import { http } from "./httpclient";
function pendingWithoutTendermint(): void {
if (!process.env.TENDERMINT_ENABLED) {
@ -10,64 +9,7 @@ function pendingWithoutTendermint(): void {
}
}
function pendingWithoutHttpServer(): void {
if (!process.env.HTTPSERVER_ENABLED) {
pending("Set HTTPSERVER_ENABLED to enable HTTP tests");
}
}
const tendermintUrl = defaultInstance.url;
const echoUrl = "http://localhost:5555/echo_headers";
describe("http", () => {
it("can send a health request", async () => {
pendingWithoutTendermint();
const response = await http("POST", `http://${tendermintUrl}`, undefined, createJsonRpcRequest("health"));
expect(response).toEqual(jasmine.objectContaining({ jsonrpc: "2.0" }));
});
it("errors for non-open port", async () => {
await expectAsync(
http("POST", `http://localhost:56745`, undefined, createJsonRpcRequest("health")),
).toBeRejectedWithError(/(ECONNREFUSED|Failed to fetch)/i);
});
it("can send custom headers", async () => {
pendingWithoutHttpServer();
// Without custom headers
const response1 = await http("POST", echoUrl, undefined, createJsonRpcRequest("health"));
expect(response1).toEqual({
request_headers: jasmine.objectContaining({
// Basic headers from http client
Accept: jasmine.any(String),
"Content-Length": jasmine.any(String),
"Content-Type": "application/json",
Host: jasmine.any(String),
"User-Agent": jasmine.any(String),
}),
});
// With custom headers
const response2 = await http(
"POST",
echoUrl,
{ foo: "bar123", Authorization: "Basic Z3Vlc3Q6bm9QYXNzMTIz" },
createJsonRpcRequest("health"),
);
expect(response2).toEqual({
request_headers: jasmine.objectContaining({
// Basic headers from http client
"Content-Length": jasmine.any(String),
"Content-Type": "application/json",
Host: jasmine.any(String),
"User-Agent": jasmine.any(String),
// Custom headers
foo: "bar123",
Authorization: "Basic Z3Vlc3Q6bm9QYXNzMTIz",
}),
});
});
});
describe("HttpBatchClient", () => {
it("can make a simple call", async () => {
@ -88,4 +30,23 @@ describe("HttpBatchClient", () => {
client.disconnect();
});
it("dispatches requests as soon as batch size limit is reached", async () => {
pendingWithoutTendermint();
const client = new HttpBatchClient(tendermintUrl, {
dispatchInterval: 3600_000 /* 1h to make test time out if this is not working */,
batchSizeLimit: 3,
});
const healthResponse = await Promise.all([
client.execute(createJsonRpcRequest("health")),
client.execute(createJsonRpcRequest("health")),
client.execute(createJsonRpcRequest("health")),
]);
expect(healthResponse[0].result).toEqual({});
expect(healthResponse[1].result).toEqual({});
expect(healthResponse[2].result).toEqual({});
client.disconnect();
});
});

View File

@ -5,15 +5,21 @@ import {
parseJsonRpcResponse,
} from "@cosmjs/json-rpc";
import { http, HttpEndpoint } from "./httpclient";
import { http } from "./http";
import { HttpEndpoint } from "./httpclient";
import { hasProtocol, RpcClient } from "./rpcclient";
export interface HttpBatchClientOptions {
/** Interval for dispatching batches (in milliseconds) */
dispatchInterval: number;
/** Max number of items sent in one request */
batchSizeLimit: number;
}
export const defaultHttpBatchClientOptions: HttpBatchClientOptions = {
// Those values are private and can change any time.
// Does a user need to know them? I don't think so. You either set
// a custom value or leave the option field unset.
const defaultHttpBatchClientOptions: HttpBatchClientOptions = {
dispatchInterval: 20,
batchSizeLimit: 20,
};
@ -30,11 +36,11 @@ export class HttpBatchClient implements RpcClient {
reject: (a: Error) => void;
}> = [];
public constructor(
endpoint: string | HttpEndpoint,
options: HttpBatchClientOptions = defaultHttpBatchClientOptions,
) {
this.options = options;
public constructor(endpoint: string | HttpEndpoint, options: Partial<HttpBatchClientOptions> = {}) {
this.options = {
batchSizeLimit: options.batchSizeLimit ?? defaultHttpBatchClientOptions.batchSizeLimit,
dispatchInterval: options.dispatchInterval ?? defaultHttpBatchClientOptions.dispatchInterval,
};
if (typeof endpoint === "string") {
// accept host.name:port and assume http protocol
this.url = hasProtocol(endpoint) ? endpoint : "http://" + endpoint;
@ -54,6 +60,11 @@ export class HttpBatchClient implements RpcClient {
public async execute(request: JsonRpcRequest): Promise<JsonRpcSuccessResponse> {
return new Promise((resolve, reject) => {
this.queue.push({ request, resolve, reject });
if (this.queue.length >= this.options.batchSizeLimit) {
// this train is full, let's go
this.tick();
}
});
}
@ -67,27 +78,43 @@ export class HttpBatchClient implements RpcClient {
}
}
private async tick(): Promise<void> {
/**
* This is called in an interval where promise rejections cannot be handled.
* So this is not async and HTTP errors need to be handled by the queued promises.
*/
private tick(): void {
// Avoid race conditions
const queue = this.queue.splice(0, this.options.batchSizeLimit);
const batch = this.queue.splice(0, this.options.batchSizeLimit);
if (!queue.length) return;
if (!batch.length) return;
const request = queue.map((s) => s.request);
const raw = await http("POST", this.url, this.headers, request);
// Requests with a single entry return as an object
const arr = Array.isArray(raw) ? raw : [raw];
const requests = batch.map((s) => s.request);
const requestIds = requests.map((request) => request.id);
arr.forEach((el) => {
const req = queue.find((s) => s.request.id === el.id);
if (!req) return;
const { reject, resolve } = req;
const response = parseJsonRpcResponse(el);
if (isJsonRpcErrorResponse(response)) {
reject(new Error(JSON.stringify(response.error)));
} else {
resolve(response);
}
});
http("POST", this.url, this.headers, requests).then(
(raw) => {
// Requests with a single entry return as an object
const arr = Array.isArray(raw) ? raw : [raw];
arr.forEach((el) => {
const req = batch.find((s) => s.request.id === el.id);
if (!req) return;
const { reject, resolve } = req;
const response = parseJsonRpcResponse(el);
if (isJsonRpcErrorResponse(response)) {
reject(new Error(JSON.stringify(response.error)));
} else {
resolve(response);
}
});
},
(error) => {
for (const requestId of requestIds) {
const req = batch.find((s) => s.request.id === requestId);
if (!req) return;
req.reject(error);
}
},
);
}
}

View File

@ -1,7 +1,6 @@
/* eslint-disable @typescript-eslint/naming-convention */
import { createJsonRpcRequest } from "../jsonrpc";
import { defaultInstance } from "../testutil.spec";
import { http, HttpClient } from "./httpclient";
import { HttpClient } from "./httpclient";
function pendingWithoutTendermint(): void {
if (!process.env.TENDERMINT_ENABLED) {
@ -9,64 +8,7 @@ function pendingWithoutTendermint(): void {
}
}
function pendingWithoutHttpServer(): void {
if (!process.env.HTTPSERVER_ENABLED) {
pending("Set HTTPSERVER_ENABLED to enable HTTP tests");
}
}
const tendermintUrl = defaultInstance.url;
const echoUrl = "http://localhost:5555/echo_headers";
describe("http", () => {
it("can send a health request", async () => {
pendingWithoutTendermint();
const response = await http("POST", `http://${tendermintUrl}`, undefined, createJsonRpcRequest("health"));
expect(response).toEqual(jasmine.objectContaining({ jsonrpc: "2.0" }));
});
it("errors for non-open port", async () => {
await expectAsync(
http("POST", `http://localhost:56745`, undefined, createJsonRpcRequest("health")),
).toBeRejectedWithError(/(ECONNREFUSED|Failed to fetch)/i);
});
it("can send custom headers", async () => {
pendingWithoutHttpServer();
// Without custom headers
const response1 = await http("POST", echoUrl, undefined, createJsonRpcRequest("health"));
expect(response1).toEqual({
request_headers: jasmine.objectContaining({
// Basic headers from http client
Accept: jasmine.any(String),
"Content-Length": jasmine.any(String),
"Content-Type": "application/json",
Host: jasmine.any(String),
"User-Agent": jasmine.any(String),
}),
});
// With custom headers
const response2 = await http(
"POST",
echoUrl,
{ foo: "bar123", Authorization: "Basic Z3Vlc3Q6bm9QYXNzMTIz" },
createJsonRpcRequest("health"),
);
expect(response2).toEqual({
request_headers: jasmine.objectContaining({
// Basic headers from http client
"Content-Length": jasmine.any(String),
"Content-Type": "application/json",
Host: jasmine.any(String),
"User-Agent": jasmine.any(String),
// Custom headers
foo: "bar123",
Authorization: "Basic Z3Vlc3Q6bm9QYXNzMTIz",
}),
});
});
});
describe("HttpClient", () => {
it("can make a simple call", async () => {

View File

@ -4,53 +4,10 @@ import {
JsonRpcSuccessResponse,
parseJsonRpcResponse,
} from "@cosmjs/json-rpc";
import axios from "axios";
import { http } from "./http";
import { hasProtocol, RpcClient } from "./rpcclient";
// Global symbols in some environments
// https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch
declare const fetch: any | undefined;
function filterBadStatus(res: any): any {
if (res.status >= 400) {
throw new Error(`Bad status on response: ${res.status}`);
}
return res;
}
/**
* Helper to work around missing CORS support in Tendermint (https://github.com/tendermint/tendermint/pull/2800)
*
* For some reason, fetch does not complain about missing server-side CORS support.
*/
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export async function http(
method: "POST",
url: string,
headers: Record<string, string> | undefined,
request?: any,
): Promise<any> {
if (typeof fetch !== "undefined") {
const settings = {
method: method,
body: request ? JSON.stringify(request) : undefined,
headers: {
// eslint-disable-next-line @typescript-eslint/naming-convention
"Content-Type": "application/json",
...headers,
},
};
return fetch(url, settings)
.then(filterBadStatus)
.then((res: any) => res.json());
} else {
return axios
.request({ url: url, method: method, data: request, headers: headers })
.then((res) => res.data);
}
}
export interface HttpEndpoint {
/**
* The URL of the HTTP endpoint.

View File

@ -1,6 +1,6 @@
// This folder contains Tendermint-specific RPC clients
export { defaultHttpBatchClientOptions, HttpBatchClient } from "./httpbatchclient";
export { HttpBatchClient, HttpBatchClientOptions } from "./httpbatchclient";
export { HttpClient, HttpEndpoint } from "./httpclient";
export { instanceOfRpcStreamingClient, RpcClient, RpcStreamingClient, SubscriptionEvent } from "./rpcclient";
export { WebsocketClient } from "./websocketclient";

View File

@ -1,6 +1,6 @@
{
"name": "@cosmjs/utils",
"version": "0.29.3",
"version": "0.29.4",
"description": "Utility tools, primarily for testing code",
"contributors": [
"IOV SAS <admin@iov.one>"

View File

@ -450,7 +450,7 @@ __metadata:
"@istanbuljs/nyc-config-typescript": ^1.0.1
"@noble/hashes": ^1
"@types/bn.js": ^5
"@types/elliptic": ^6.4.12
"@types/elliptic": ^6.4.14
"@types/eslint-plugin-prettier": ^3
"@types/jasmine": ^4
"@types/karma-firefox-launcher": ^2
@ -462,7 +462,7 @@ __metadata:
"@typescript-eslint/parser": ^5.13.0
bn.js: ^5.2.0
buffer: ^6.0.3
elliptic: ^6.5.3
elliptic: ^6.5.4
eslint: ^7.5
eslint-config-prettier: ^8.3.0
eslint-import-resolver-node: ^0.3.4
@ -1341,10 +1341,10 @@ __metadata:
languageName: node
linkType: hard
"@socket.io/base64-arraybuffer@npm:~1.0.2":
version: 1.0.2
resolution: "@socket.io/base64-arraybuffer@npm:1.0.2"
checksum: fa3e58c7581643d0557969cd3bece20e198596df77968ff29ede6be329d488e65104bef900e68a67f39d8855abfa59baa2b08d96fb856504bd01cbdd8f52249c
"@socket.io/component-emitter@npm:~3.1.0":
version: 3.1.0
resolution: "@socket.io/component-emitter@npm:3.1.0"
checksum: db069d95425b419de1514dffe945cc439795f6a8ef5b9465715acf5b8b50798e2c91b8719cbf5434b3fe7de179d6cdcd503c277b7871cb3dd03febb69bdd50fa
languageName: node
linkType: hard
@ -1406,13 +1406,6 @@ __metadata:
languageName: node
linkType: hard
"@types/component-emitter@npm:^1.2.10":
version: 1.2.10
resolution: "@types/component-emitter@npm:1.2.10"
checksum: 7589d3a10ef4e1c60f415db0d7ad90680c2d60b589972d198c19ba092f06559988dde501f83c0293e945fe19b989ef2334da07802b802d1a9846b0dde7a34ab1
languageName: node
linkType: hard
"@types/connect@npm:*":
version: 3.4.34
resolution: "@types/connect@npm:3.4.34"
@ -1462,12 +1455,12 @@ __metadata:
languageName: node
linkType: hard
"@types/elliptic@npm:^6.4.12":
version: 6.4.12
resolution: "@types/elliptic@npm:6.4.12"
"@types/elliptic@npm:^6.4.14":
version: 6.4.14
resolution: "@types/elliptic@npm:6.4.14"
dependencies:
"@types/bn.js": "*"
checksum: 35dc3b6b4ba411b2e2ca2dfead45034d1411f5062183ec49270a693b7f2bdff27e3538aae8773a7fce2d04084018a28bacc8a442f578f594fad11431242d87aa
checksum: d5a64f540e0ed4b74a12dfa5cc88c0aa7b531eab3b7a9fab17948ffbfc6e01814230e63d7417ce1b607dbd8b5d70e1b64f5afac632deabf96e44875aaac0ae1b
languageName: node
linkType: hard
@ -2818,13 +2811,6 @@ __metadata:
languageName: node
linkType: hard
"component-emitter@npm:~1.3.0":
version: 1.3.0
resolution: "component-emitter@npm:1.3.0"
checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b
languageName: node
linkType: hard
"concat-map@npm:0.0.1":
version: 0.0.1
resolution: "concat-map@npm:0.0.1"
@ -3167,7 +3153,7 @@ __metadata:
languageName: node
linkType: hard
"elliptic@npm:^6.5.3":
"elliptic@npm:^6.5.4":
version: 6.5.4
resolution: "elliptic@npm:6.5.4"
dependencies:
@ -3214,18 +3200,16 @@ __metadata:
languageName: node
linkType: hard
"engine.io-parser@npm:~5.0.0":
version: 5.0.3
resolution: "engine.io-parser@npm:5.0.3"
dependencies:
"@socket.io/base64-arraybuffer": ~1.0.2
checksum: 88d664420a441dd02db17d110f7bbbd9efe971747918150bf666b82ee138df596a2f5038f461c8a01864c83af67cb202548364e4174543f8c0bf5f4776ca6e0d
"engine.io-parser@npm:~5.0.3":
version: 5.0.4
resolution: "engine.io-parser@npm:5.0.4"
checksum: d4ad0cef6ff63c350e35696da9bb3dbd180f67b56e93e90375010cc40393e6c0639b780d5680807e1d93a7e2e3d7b4a1c3b27cf75db28eb8cbf605bc1497da03
languageName: node
linkType: hard
"engine.io@npm:~6.1.0":
version: 6.1.2
resolution: "engine.io@npm:6.1.2"
"engine.io@npm:~6.2.0":
version: 6.2.0
resolution: "engine.io@npm:6.2.0"
dependencies:
"@types/cookie": ^0.4.1
"@types/cors": ^2.8.12
@ -3235,9 +3219,9 @@ __metadata:
cookie: ~0.4.1
cors: ~2.8.5
debug: ~4.3.1
engine.io-parser: ~5.0.0
engine.io-parser: ~5.0.3
ws: ~8.2.3
checksum: bd98d6ce2b1e868e8ff0f65d7667a885b90bce62065d851ea0394a00c86686925be824ab91237151222d6a5acfd5610634f36966fa9b4c502e7cf362fbdf974a
checksum: cc485c5ba2e0c4f6ca02dcafd192b22f9dad89d01dc815005298780d3fb910db4cebab4696e8615290c473c2eeb259e8bee2a1fb7ab594d9c80f9f3485771911
languageName: node
linkType: hard
@ -6634,35 +6618,34 @@ __metadata:
languageName: node
linkType: hard
"socket.io-adapter@npm:~2.3.3":
version: 2.3.3
resolution: "socket.io-adapter@npm:2.3.3"
checksum: 73890e0a33e48a9e4be83e5fa2b8ea9728d2a35ae2fed373cad4d6744c6512c0e1c735e7820df9821e58c4738dc355bdaec5aae30bc56f4d6a41d999596d0c82
"socket.io-adapter@npm:~2.4.0":
version: 2.4.0
resolution: "socket.io-adapter@npm:2.4.0"
checksum: a84639946dce13547b95f6e09fe167cdcd5d80941afc2e46790cc23384e0fd3c901e690ecc9bdd600939ce6292261ee15094a0b486f797ed621cfc8783d87a0c
languageName: node
linkType: hard
"socket.io-parser@npm:~4.0.4":
version: 4.0.4
resolution: "socket.io-parser@npm:4.0.4"
"socket.io-parser@npm:~4.2.0":
version: 4.2.1
resolution: "socket.io-parser@npm:4.2.1"
dependencies:
"@types/component-emitter": ^1.2.10
component-emitter: ~1.3.0
"@socket.io/component-emitter": ~3.1.0
debug: ~4.3.1
checksum: c173b4f3747c51e2af802eca35212f4dcfa8fe55d7fdc07b9a01da1ecc956791c1bf6591e307952548eab69e6500bcfe27cea8aff1386b860d9bb51f98e4fafb
checksum: 2582202f22538d7e6b4436991378cb4cea3b2f8219cda24923ae35afd291ab5ad6120e7d093e41738256b6c6ad10c667dd25753c2d9a2340fead04e9286f152d
languageName: node
linkType: hard
"socket.io@npm:^4.2.0":
version: 4.4.1
resolution: "socket.io@npm:4.4.1"
version: 4.5.3
resolution: "socket.io@npm:4.5.3"
dependencies:
accepts: ~1.3.4
base64id: ~2.0.0
debug: ~4.3.2
engine.io: ~6.1.0
socket.io-adapter: ~2.3.3
socket.io-parser: ~4.0.4
checksum: a559ae52359f1ca3ce5a347368cf985c72259e1ab1bf2bf769ca0add5db34e2a86f4e183a58f37f32676ec482c71fedb7b08d873dc31cf581f5ba0797a8382fe
engine.io: ~6.2.0
socket.io-adapter: ~2.4.0
socket.io-parser: ~4.2.0
checksum: 2a7e4c64bbebb444d211bc66fb8356c14dd0fd4138d31e1781db03fa5a731a3abb7b305fa32cb6c7b57e5ac788601583aad14bea6ff9b8c4ca7b74118ba55f66
languageName: node
linkType: hard