diff --git a/package.json b/package.json index 1dc7f6e..551f835 100644 --- a/package.json +++ b/package.json @@ -37,9 +37,9 @@ "test": "tsx test/tape.ts" }, "dependencies": { - "@cmdcode/crypto-tools": "^2.5.0", + "@cmdcode/crypto-tools": "^2.5.2", "@scrow/tapscript": "^2.0.17", - "@types/node": "^20.7.0" + "@types/node": "^20.8.6" }, "devDependencies": { "@types/tape": "^5.6.1", diff --git a/src/lib/client.ts b/src/lib/client.ts index a20ef7b..df5e300 100644 --- a/src/lib/client.ts +++ b/src/lib/client.ts @@ -26,7 +26,10 @@ import { WalletList, TxResult, CoreConfig, - CmdConfig + CmdConfig, + TxStatus, + TxConfirmedResult, + TxConfirmed } from '../types/index.js' export class CoreClient { @@ -158,12 +161,23 @@ export class CoreClient { } async get_tx (txid : string) { - const { hex, ...data } = await this.cmd( - 'getrawtransaction', - [ txid, true ], - { cache : true } - ) - return { hex, data } + let txdata : TxResult, + status : TxStatus = { confirmed : false } + + try { + txdata = await this.cmd('getrawtransaction', [ txid, true ], { cache : true }) + } catch (err) { + return null + } + + const { hex, blockhash, blocktime, confirmations, time, ...data } = txdata + + if (blockhash !== undefined) { + const { } = data as TxConfirmedResult + status = { confirmed : true, blockhash, confirmations, time: blocktime } as TxConfirmed + } + + return { data, hex, status } } async load_wallet (name : string) { diff --git a/src/types/info.ts b/src/types/info.ts index 5736ea1..8cfed92 100644 --- a/src/types/info.ts +++ b/src/types/info.ts @@ -1,3 +1,6 @@ +export type TxResult = TxConfirmedResult | TxUnconfirmedResult +export type TxStatus = TxUnconfimed | TxConfirmed + export interface AddressInfo { address : string scriptPubKey : string @@ -18,7 +21,7 @@ export interface AddressInfo { hdmasterfingerprint : string } -export interface TxResult { +export interface TxResultData { txid : string, hash : string, version : number, @@ -38,7 +41,32 @@ export interface TxResult { n : number value : number, scriptPubKey : ScriptKeyResult - }] + }], +} + +export interface TxUnconfirmedResult extends TxResultData { + blockhash ?: string + confirmations ?: number + time ?: number + blocktime ?: number +} + +export interface TxConfirmedResult extends TxResultData { + blockhash : string + confirmations : number + time : number + blocktime : number +} + +export interface TxUnconfimed { + confirmed : false +} + +export interface TxConfirmed { + confirmed : true + blockhash : string + confirmations : number + time : number } export interface ScriptKeyResult { diff --git a/test/scratch.ts b/test/scratch.ts index e89f0e5..2b34aff 100644 --- a/test/scratch.ts +++ b/test/scratch.ts @@ -1,8 +1,13 @@ import { CoreDaemon } from '../src/index.js' -const core = new CoreDaemon({ datapath: `${process.env.HOME}/.bitcoin` }) +const core = new CoreDaemon({ + datapath: `${process.env.HOME}/.bitcoin`, + debug : true +}) -core.run(async (client) => { - const block = await client.get_block() - console.log(block) +await core.run(async (client) => { + const txdata1 = await client.get_tx('2c47eea8e2cea19baae3f33bd1c7ef6b760d871f6841ab88f10458ad35b9855d') + console.log(txdata1) + const txdata2 = await client.get_tx('46a32c829ad4f59dc68d0e7550ce2dc93bfd7141c0f41657f9418f6e320ee505') + console.log(txdata2) }) diff --git a/yarn.lock b/yarn.lock index d48eaac..cc9f4de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,17 +2,20 @@ # yarn lockfile v1 -"@cmdcode/buff@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@cmdcode/buff/-/buff-2.0.3.tgz#76510797315a8e7ec85c775299f494b96887bbba" - integrity sha512-WPwtNvQNqYnpcKb7+/1Tmn8Ec11YpPXL9S31tjwicKQUkNMJtTfLJH4IBxKGAN1OifXYdiGUIZokuF/ZxE+kPg== +"@cmdcode/buff@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cmdcode/buff/-/buff-2.1.1.tgz#90f421ba015fafc65781beb30ca369c91bdaaa16" + integrity sha512-ZVOyK9TCi0v6MPrsaF8INXXO57XqddQvNXD1axXgoztcziPmvR4Y01vkcKU2N8WaEWJy6EyOnNoSndH/uJH0ow== + dependencies: + "@noble/hashes" "^1.3.0" + "@scure/base" "^1.1.3" -"@cmdcode/crypto-tools@^2.4.10", "@cmdcode/crypto-tools@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@cmdcode/crypto-tools/-/crypto-tools-2.5.0.tgz#4282adab1615063dbd09e7fc139716b040e641de" - integrity sha512-bFHBAAvg1MNgiNmA6CvBi7o8SC/+pDMNt20OSeJz9aM+cYKxpaLQ6rJy7dQXZ+qEkae27eb/+KanI6NlfWg7Jg== +"@cmdcode/crypto-tools@^2.5.2": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@cmdcode/crypto-tools/-/crypto-tools-2.5.2.tgz#ee481788f77c2af4f4ac9ee32d1e745c925b3894" + integrity sha512-AGDctG7STlhlErAwzaIG5VKs/UqihrAVHbxmD/NhJlGYJR/H8ASi2lLo4r6l2pYiEXjLqE2qa/u9tNJl3kodow== dependencies: - "@cmdcode/buff" "^2.0.3" + "@cmdcode/buff" "^2.1.1" "@noble/curves" "^1.1.0" "@noble/hashes" "^1.3.0" @@ -133,10 +136,12 @@ dependencies: "@ljharb/through" "^2.3.9" -"@ljharb/through@^2.3.9": - version "2.3.9" - resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.9.tgz#85f221eb82f9d555e180e87d6e50fb154af85408" - integrity sha512-yN599ZBuMPPK4tdoToLlvgJB4CLK8fGl7ntfy0Wn7U6ttNvHYurd81bfUiK/6sMkiIwm65R6ck4L6+Y3DfVbNQ== +"@ljharb/through@^2.3.11", "@ljharb/through@^2.3.9": + version "2.3.11" + resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.11.tgz#783600ff12c06f21a76cc26e33abd0b1595092f9" + integrity sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w== + dependencies: + call-bind "^1.0.2" "@noble/curves@^1.1.0": version "1.2.0" @@ -150,21 +155,28 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== -"@scrow/tapscript@^2.0.11": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@scrow/tapscript/-/tapscript-2.0.17.tgz#e45794db27c49ba80a6aee612cd20422e69055e7" - integrity sha512-e1WtmNvvU3Eo8W1H47sXRxrTEwsccRf4GEdZhlOIGGMvGx/+N/U7eZUpQGPy9W5cvzln82qmhKzkSzpO8mGG0w== +"@scrow/tapscript@^2.0.17": + version "2.0.26" + resolved "https://registry.yarnpkg.com/@scrow/tapscript/-/tapscript-2.0.26.tgz#90ff2a930589ae98524919ca21d8d19993c084c2" + integrity sha512-ihDwrkiTUU4kqiR72RnJxP3KG4VVu8HnJrjhZ4aNDgzWYQpYLwCC84qlpVoEwEwdRE3BS+lj/XQNpsv+7HEpeg== dependencies: - "@cmdcode/buff" "^2.0.3" - "@cmdcode/crypto-tools" "^2.5.0" - zod "^3.22.2" + "@cmdcode/buff" "^2.1.1" + "@cmdcode/crypto-tools" "^2.5.2" + zod "^3.22.4" + +"@scure/base@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f" + integrity sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q== -"@types/node@*", "@types/node@^20.7.0": - version "20.7.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" - integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== +"@types/node@*", "@types/node@^20.8.6": + version "20.8.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" + integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + dependencies: + undici-types "~5.25.1" -"@types/tape@^5.6.0": +"@types/tape@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@types/tape/-/tape-5.6.1.tgz#3285ad2e5433f7672974330e8b1c8264962a1281" integrity sha512-Rs3uJYjo+oAtF+X/icS75nIa/tnPmZEuFqxwZW456+PfM0gqyqDh4fU9Mp0msFkeeFzvLPp7F7nDfw1yYDLJVA== @@ -270,10 +282,10 @@ deep-equal@^2.2.2: which-collection "^1.0.1" which-typed-array "^1.1.9" -define-data-property@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" - integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== +define-data-property@^1.0.1, define-data-property@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== dependencies: get-intrinsic "^1.2.1" gopd "^1.0.1" @@ -424,9 +436,9 @@ fsevents@~2.3.3: integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== function.prototype.name@^1.1.6: version "1.1.6" @@ -438,7 +450,7 @@ function.prototype.name@^1.1.6: es-abstract "^1.22.1" functions-have-names "^1.2.3" -functions-have-names@^1.2.2, functions-have-names@^1.2.3: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -537,11 +549,9 @@ has-tostringtag@^1.0.0: has-symbols "^1.0.2" has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== inflight@^1.0.4: version "1.0.6" @@ -602,7 +612,7 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.9.0: +is-core-module@^2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== @@ -712,19 +722,21 @@ minimist@^1.2.8: integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== mock-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mock-property/-/mock-property-1.0.0.tgz#301518a59fb545312a407c8d1a861aba0357b4a6" - integrity sha512-imC60k5A55GPUU43PqczbubOyyxCudIgneACKzL3PKfsBk08dc1HgNNU8siQbEIAPPjVUhc+gb0v0ypZ/iP9pw== + version "1.0.2" + resolved "https://registry.yarnpkg.com/mock-property/-/mock-property-1.0.2.tgz#82791adffeebbda94705a48cab267586d2e0508a" + integrity sha512-GHVKHd3bFiXtvZtp23+8+EQLMeDJWcEVrSA2pOBs1KB5Uh2ww8Q+9fYDljS67k3GzU4DIDBa6+qRIgfZ2Bp+gQ== dependencies: - functions-have-names "^1.2.2" + define-data-property "^1.1.0" + functions-have-names "^1.2.3" + gopd "^1.0.1" has "^1.0.3" has-property-descriptors "^1.0.0" isarray "^2.0.5" object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + version "1.13.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" + integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== object-is@^1.1.5: version "1.1.5" @@ -780,12 +792,12 @@ resolve-pkg-maps@^1.0.0: resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== -resolve@^2.0.0-next.4: - version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== +resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -878,13 +890,13 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -tape@^5.6.6: - version "5.7.0" - resolved "https://registry.yarnpkg.com/tape/-/tape-5.7.0.tgz#7f31bf116159d3cdbc6f65baa11aaa025d34ccfc" - integrity sha512-6EZoHjMDUUhet8+k32w/9onULL1U8idXKvBCnZxuZF2iFe+tMYOsKo4bpCtXbTSngZmYBnkU08TMhJwsKaHhaw== +tape@^5.7.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/tape/-/tape-5.7.1.tgz#f5b837e4982561dd4d9354a1f77ede20391e3f5b" + integrity sha512-5U2nU0PbvWXXtJxE0hFv78VSyhJiyEPq1wNtMCWUxt17SZbeBqs9V5zcyDqkyguYN39d8qAjZxfFkjJ1+kB4yA== dependencies: "@ljharb/resumer" "^0.0.1" - "@ljharb/through" "^2.3.9" + "@ljharb/through" "^2.3.11" array.prototype.every "^1.1.5" call-bind "^1.0.2" deep-equal "^2.2.2" @@ -903,18 +915,18 @@ tape@^5.6.6: object-is "^1.1.5" object-keys "^1.1.1" object.assign "^4.1.4" - resolve "^2.0.0-next.4" + resolve "^2.0.0-next.5" string.prototype.trim "^1.2.8" -tslib@^2.6.1: +tslib@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tsx@^3.12.7: - version "3.13.0" - resolved "https://registry.yarnpkg.com/tsx/-/tsx-3.13.0.tgz#f860e511b33fcb41d74df87d7ba239a0b4012dbb" - integrity sha512-rjmRpTu3as/5fjNq/kOkOtihgLxuIz6pbKdj9xwP4J5jOLkBxw/rjN5ANw+KyrrOXV5uB7HC8+SrrSJxT65y+A== +tsx@^3.13.0: + version "3.14.0" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-3.14.0.tgz#be6e2176b6f210fe8f48124fb6e22e0f075e927b" + integrity sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg== dependencies: esbuild "~0.18.20" get-tsconfig "^4.7.2" @@ -961,7 +973,7 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typescript@^5.1.6: +typescript@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== @@ -976,6 +988,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici-types@~5.25.1: + version "5.25.3" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" + integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -1013,7 +1030,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -zod@^3.22.2: - version "3.22.2" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.2.tgz#3add8c682b7077c05ac6f979fea6998b573e157b" - integrity sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg== +zod@^3.22.4: + version "3.22.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" + integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==