From a66fe3dc4d2cdfdc7fb1323c6946326eeab1d85a Mon Sep 17 00:00:00 2001 From: Jack Waller Date: Tue, 6 Jan 2026 10:16:58 +1100 Subject: [PATCH 01/51] chore: update yellowstone to rust bindings version --- sdk/package.json | 3 +- sdk/src/accounts/grpcAccountSubscriber.ts | 3 +- .../accounts/grpcMultiAccountSubscriber.ts | 6 +- .../accounts/grpcProgramAccountSubscriber.ts | 6 +- sdk/src/isomorphic/grpc.node.ts | 4 - sdk/yarn.lock | 231 ++++++++++++++++-- 6 files changed, 210 insertions(+), 43 deletions(-) diff --git a/sdk/package.json b/sdk/package.json index ee7de9c176..a5270862eb 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -44,7 +44,6 @@ "@coral-xyz/anchor": "0.29.0", "@coral-xyz/anchor-30": "npm:@coral-xyz/anchor@0.30.1", "@ellipsis-labs/phoenix-sdk": "1.4.5", - "@grpc/grpc-js": "1.14.0", "@msgpack/msgpack": "^3.1.2", "@openbook-dex/openbook-v2": "0.2.10", "@project-serum/serum": "0.13.65", @@ -55,7 +54,7 @@ "@solana/web3.js": "1.98.0", "@switchboard-xyz/common": "3.0.14", "@switchboard-xyz/on-demand": "2.4.1", - "@triton-one/yellowstone-grpc": "1.4.1", + "@triton-one/yellowstone-grpc": "5.0.1-beta-12", "anchor-bankrun": "0.3.0", "gill": "^0.10.2", "helius-laserstream": "0.1.8", diff --git a/sdk/src/accounts/grpcAccountSubscriber.ts b/sdk/src/accounts/grpcAccountSubscriber.ts index 50adb2f318..c21a4bf4ed 100644 --- a/sdk/src/accounts/grpcAccountSubscriber.ts +++ b/sdk/src/accounts/grpcAccountSubscriber.ts @@ -6,7 +6,6 @@ import * as Buffer from 'buffer'; import { WebSocketAccountSubscriber } from './webSocketAccountSubscriber'; import { Client, - ClientDuplexStream, CommitmentLevel, createClient, SubscribeRequest, @@ -15,7 +14,7 @@ import { export class grpcAccountSubscriber extends WebSocketAccountSubscriber { private client: Client; - private stream: ClientDuplexStream; + private stream; private commitmentLevel: CommitmentLevel; public listenerId?: number; diff --git a/sdk/src/accounts/grpcMultiAccountSubscriber.ts b/sdk/src/accounts/grpcMultiAccountSubscriber.ts index 7a442ac5cd..64c30a3107 100644 --- a/sdk/src/accounts/grpcMultiAccountSubscriber.ts +++ b/sdk/src/accounts/grpcMultiAccountSubscriber.ts @@ -5,7 +5,6 @@ import bs58 from 'bs58'; import { Client, - ClientDuplexStream, CommitmentLevel, SubscribeRequest, SubscribeUpdate, @@ -38,7 +37,7 @@ function commitmentLevelToCommitment( export class grpcMultiAccountSubscriber { private client: Client; - private stream: ClientDuplexStream; + private stream; private commitmentLevel: CommitmentLevel; private program: Program; private accountName: string; @@ -225,8 +224,7 @@ export class grpcMultiAccountSubscriber { }); } - this.stream = - (await this.client.subscribe()) as unknown as typeof this.stream; + this.stream = await this.client.subscribe(); const request: SubscribeRequest = { slots: {}, accounts: { diff --git a/sdk/src/accounts/grpcProgramAccountSubscriber.ts b/sdk/src/accounts/grpcProgramAccountSubscriber.ts index f575c64229..4fa497fae3 100644 --- a/sdk/src/accounts/grpcProgramAccountSubscriber.ts +++ b/sdk/src/accounts/grpcProgramAccountSubscriber.ts @@ -6,7 +6,6 @@ import * as Buffer from 'buffer'; import { WebSocketProgramAccountSubscriber } from './webSocketProgramAccountSubscriber'; import { Client, - ClientDuplexStream, CommitmentLevel, createClient, SubscribeRequest, @@ -17,7 +16,7 @@ export class grpcProgramAccountSubscriber< T, > extends WebSocketProgramAccountSubscriber { private client: Client; - private stream: ClientDuplexStream; + private stream; private commitmentLevel: CommitmentLevel; public listenerId?: number; @@ -92,8 +91,7 @@ export class grpcProgramAccountSubscriber< this.onChange = onChange; // Subscribe with grpc - this.stream = - (await this.client.subscribe()) as unknown as typeof this.stream; + this.stream = await this.client.subscribe(); const filters = this.options.filters.map((filter) => { return { memcmp: { diff --git a/sdk/src/isomorphic/grpc.node.ts b/sdk/src/isomorphic/grpc.node.ts index 267a81c8a6..6aa1129368 100644 --- a/sdk/src/isomorphic/grpc.node.ts +++ b/sdk/src/isomorphic/grpc.node.ts @@ -4,8 +4,6 @@ import type { SubscribeUpdate, } from '@triton-one/yellowstone-grpc'; import { CommitmentLevel } from '@triton-one/yellowstone-grpc'; -import type { ClientDuplexStream, ChannelOptions } from '@grpc/grpc-js'; - import { CommitmentLevel as LaserCommitmentLevel, subscribe as LaserSubscribe, @@ -25,8 +23,6 @@ export { CompressionAlgorithms, }; export type { - ClientDuplexStream, - ChannelOptions, SubscribeRequest, SubscribeUpdate, LaserstreamConfig, diff --git a/sdk/yarn.lock b/sdk/yarn.lock index 85552471dc..c3c056568a 100644 --- a/sdk/yarn.lock +++ b/sdk/yarn.lock @@ -41,6 +41,11 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" +"@bufbuild/protobuf@=2.10.2": + version "2.10.2" + resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.10.2.tgz#d7c063301f2a33095fc202f06bf3cce0c138dfcd" + integrity sha512-uFsRXwIGyu+r6AMdz+XijIIZJYpoWeYzILt5yZ2d3mCjQrWUTVpVD9WL/jZAbvp+Ed04rOhrsk7FiTcEDseB5A== + "@coral-xyz/anchor-30@npm:@coral-xyz/anchor@0.30.1": version "0.30.1" resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.1.tgz#17f3e9134c28cd0ea83574c6bab4e410bcecec5d" @@ -164,15 +169,7 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== -"@grpc/grpc-js@1.14.0": - version "1.14.0" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.14.0.tgz#a3c47e7816ca2b4d5490cba9e06a3cf324e675ad" - integrity sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg== - dependencies: - "@grpc/proto-loader" "^0.8.0" - "@js-sdsl/ordered-map" "^4.4.2" - -"@grpc/grpc-js@^1.8.0", "@grpc/grpc-js@^1.8.13": +"@grpc/grpc-js@^1.8.13": version "1.13.4" resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.13.4.tgz#922fbc496e229c5fa66802d2369bf181c1df1c5a" integrity sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg== @@ -190,16 +187,6 @@ protobufjs "^7.2.5" yargs "^17.7.2" -"@grpc/proto-loader@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.8.0.tgz#b6c324dd909c458a0e4aa9bfd3d69cf78a4b9bd8" - integrity sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.5.3" - yargs "^17.7.2" - "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -601,6 +588,17 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" +"@solana/addresses@5.1.0", "@solana/addresses@=5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/addresses/-/addresses-5.1.0.tgz#9ee95bb4808a7147aaca40cb568dc401db96614e" + integrity sha512-X84qSZLgve9YeYsyxGI49WnfEre53tdFu4x9/4oULBgoj8d0A+P9VGLYzmRJ0YFYKRcZG7U4u3MQpI5uLZ1AsQ== + dependencies: + "@solana/assertions" "5.1.0" + "@solana/codecs-core" "5.1.0" + "@solana/codecs-strings" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/nominal-types" "5.1.0" + "@solana/assertions@2.3.0", "@solana/assertions@^2.1.1": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-2.3.0.tgz#f96f655088dea6fe9f79604da7615c745c64173b" @@ -608,6 +606,13 @@ dependencies: "@solana/errors" "2.3.0" +"@solana/assertions@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-5.1.0.tgz#7b0599a053d862e4e224214cfe4df0d111db0ab8" + integrity sha512-5But2wyxuvGXMIOnD0jBMQ9yq1QQF2LSK3IbIRSkAkXbD3DS6O2tRvKUHNhogd+BpkPyCGOQHBycezgnxmStlg== + dependencies: + "@solana/errors" "5.1.0" + "@solana/buffer-layout-utils@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" @@ -646,7 +651,14 @@ dependencies: "@solana/errors" "2.3.0" -"@solana/codecs-data-structures@2.0.0-preview.4", "@solana/codecs-data-structures@2.0.0-rc.1", "@solana/codecs-data-structures@2.3.0": +"@solana/codecs-core@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-5.1.0.tgz#2ac0cc56b1264898dbdaffa3e395f3f0557d9578" + integrity sha512-vDwi03mxWeWCS5Il6BCdNdifYdOoHVz97YOmbWGIt45b77Ivu5NUYeSD2+ccl6fSw8eYQ6QaqqKXMjbSfsXv4g== + dependencies: + "@solana/errors" "5.1.0" + +"@solana/codecs-data-structures@2.0.0-preview.4", "@solana/codecs-data-structures@2.0.0-rc.1", "@solana/codecs-data-structures@2.3.0", "@solana/codecs-data-structures@5.1.0": version "2.0.0-preview.4" resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.4.tgz#f8a2470982a9792334737ea64000ccbdff287247" integrity sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA== @@ -679,6 +691,14 @@ "@solana/codecs-core" "2.3.0" "@solana/errors" "2.3.0" +"@solana/codecs-numbers@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-5.1.0.tgz#2dfbff8c6f0964d12a097b5d24b7f6bb6041c20b" + integrity sha512-Ea5/9yjDNOrDZcI40UGzzi6Aq1JNsmzM4m5pOk6Xb3JRZ0YdKOv/MwuCqb6jRgzZ7SQjHhkfGL43kHLJA++bOw== + dependencies: + "@solana/codecs-core" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/codecs-strings@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz#e1d9167075b8c5b0b60849f8add69c0f24307018" @@ -697,6 +717,15 @@ "@solana/codecs-numbers" "2.3.0" "@solana/errors" "2.3.0" +"@solana/codecs-strings@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-5.1.0.tgz#1f2626c5d256d1153242bc6929c208e0962b8f6f" + integrity sha512-014xwl5T/3VnGW0gceizF47DUs5EURRtgGmbWIR5+Z32yxgQ6hT9Zl0atZbL268RHbUQ03/J8Ush1StQgy7sfQ== + dependencies: + "@solana/codecs-core" "5.1.0" + "@solana/codecs-numbers" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/codecs@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-rc.1.tgz#146dc5db58bd3c28e04b4c805e6096c2d2a0a875" @@ -719,7 +748,7 @@ "@solana/codecs-strings" "2.3.0" "@solana/options" "2.3.0" -"@solana/errors@2.0.0-preview.4", "@solana/errors@2.0.0-rc.1", "@solana/errors@2.3.0": +"@solana/errors@2.0.0-preview.4", "@solana/errors@2.0.0-rc.1", "@solana/errors@2.3.0", "@solana/errors@5.1.0": version "2.0.0-preview.4" resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.4.tgz#056ba76b6dd900dafa70117311bec3aef0f5250b" integrity sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA== @@ -737,6 +766,11 @@ resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-2.3.0.tgz#ac33815655e954bb78151446a571bc6c9fd9be28" integrity sha512-AgsPh3W3tE+nK3eEw/W9qiSfTGwLYEvl0rWaxHht/lRcuDVwfKRzeSa5G79eioWFFqr+pTtoCr3D3OLkwKz02Q== +"@solana/functional@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-5.1.0.tgz#efd4b338b001a603627ed01493262dfac67e7edc" + integrity sha512-R6jacWU0Gr+j49lTDp+FSECBolqw2Gq7JlC22rI0JkcxJiiAlp3G80v6zAYq0FkHzxZbjyR6//JYUXSwliem5g== + "@solana/instructions@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-2.3.0.tgz#ff25cbe545000a33fb3604d83f4e2b683de94ad3" @@ -745,6 +779,14 @@ "@solana/codecs-core" "2.3.0" "@solana/errors" "2.3.0" +"@solana/instructions@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-5.1.0.tgz#ea51bdbec9098bcd2ebfc63850eb8a68b0674d28" + integrity sha512-fkwpUwwqk5K14T/kZDnCrfeR0kww49HBx+BK8xdSeJx+bt4QTwAHa9YeOkGhGrHEFVEJEUf8FKoxxTzZzJZtKQ== + dependencies: + "@solana/codecs-core" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/keys@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-2.3.0.tgz#9d0b0ec09c2789a051b4df1945ed52631261186e" @@ -756,6 +798,17 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" +"@solana/keys@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-5.1.0.tgz#ddfb57d7273c147e4072334d34e55010233e508e" + integrity sha512-ma4zTTuSOmtTCvATHMfUGNTw0Vqah/6XPe1VmLc66ohwXMI3yqatX1FQPXgDZozr15SvLAesfs7/bgl2TRoe9w== + dependencies: + "@solana/assertions" "5.1.0" + "@solana/codecs-core" "5.1.0" + "@solana/codecs-strings" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/nominal-types" "5.1.0" + "@solana/kit@^2.1.1": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/kit/-/kit-2.3.0.tgz#92deb7c4883293617209aecac9a43d5e41ccf092" @@ -785,6 +838,11 @@ resolved "https://registry.yarnpkg.com/@solana/nominal-types/-/nominal-types-2.3.0.tgz#b67637241b4a45c756464e049c7a830880b6e944" integrity sha512-uKlMnlP4PWW5UTXlhKM8lcgIaNj8dvd8xO4Y9l+FVvh9RvW2TO0GwUO6JCo7JBzCB0PSqRJdWWaQ8pu1Ti/OkA== +"@solana/nominal-types@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/nominal-types/-/nominal-types-5.1.0.tgz#39f1efc19ce4f5429c02c01a518731f441ef98a1" + integrity sha512-+4Cm+SpK+D811i9giqv4Up93ZlmUcZfLDHkSH24F4in61+Y2TKA+XKuRtKhNytQMmqCfbvJZ9MHFaIeZw5g+Bg== + "@solana/options@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-rc.1.tgz#06924ba316dc85791fc46726a51403144a85fc4d" @@ -837,16 +895,43 @@ "@solana/transaction-messages" "2.3.0" "@solana/transactions" "2.3.0" +"@solana/rpc-api@=5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-api/-/rpc-api-5.1.0.tgz#6da7bbea267eb8755bdf6c2f6eb6c945b3de9f95" + integrity sha512-eI1tY0i3gmih1C65gFECYbfPRpHEYqFp+9IKjpknZtYpQIe9BqBKSpfYpGiCAbKdN/TMadBNPOzdK15ewhkkvQ== + dependencies: + "@solana/addresses" "5.1.0" + "@solana/codecs-core" "5.1.0" + "@solana/codecs-strings" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/keys" "5.1.0" + "@solana/rpc-parsed-types" "5.1.0" + "@solana/rpc-spec" "5.1.0" + "@solana/rpc-transformers" "5.1.0" + "@solana/rpc-types" "5.1.0" + "@solana/transaction-messages" "5.1.0" + "@solana/transactions" "5.1.0" + "@solana/rpc-parsed-types@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-2.3.0.tgz#132b03f6b4c1b4688336ad48e76c2eea0d8c91d7" integrity sha512-B5pHzyEIbBJf9KHej+zdr5ZNAdSvu7WLU2lOUPh81KHdHQs6dEb310LGxcpCc7HVE8IEdO20AbckewDiAN6OCg== +"@solana/rpc-parsed-types@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-5.1.0.tgz#4881fecebdf006def3eeb71364275b2b0086b39b" + integrity sha512-ZJoXHNItALMNa1zmGrNnIh96RBlc9GpIqoaZkdE14mAQ7gWe7Oc0ejYavUeSCmcL0wZcvIFh50AsfVxrHr4+2Q== + "@solana/rpc-spec-types@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-2.3.0.tgz#010ea9de2f720e84bec2b93ca77ad3664b77235f" integrity sha512-xQsb65lahjr8Wc9dMtP7xa0ZmDS8dOE2ncYjlvfyw/h4mpdXTUdrSMi6RtFwX33/rGuztQ7Hwaid5xLNSLvsFQ== +"@solana/rpc-spec-types@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-5.1.0.tgz#4e2bcd7f8ca0bc5bd6d057fd5cebd39ee2309420" + integrity sha512-B8/WyjmHpC34vXtAmTpZyPwRCm7WwoSkmjBcBouaaY1uilJ9+Wp2nptbq2cJyWairOoMSoI7v5kvvnrJuquq4Q== + "@solana/rpc-spec@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-2.3.0.tgz#2b679eb750c0f9270da6d451ea1bdc2c7783eb42" @@ -855,6 +940,14 @@ "@solana/errors" "2.3.0" "@solana/rpc-spec-types" "2.3.0" +"@solana/rpc-spec@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-5.1.0.tgz#e192f72345596c04a5144411011a9744517d0bf6" + integrity sha512-y8B6fUWA1EBKXUsNo6b9EiFcQPsaJREPLlcIDbo4b6TucQNwvl7FHfpf1VHJL64SkI/WE69i2WEkiOJYjmLO0A== + dependencies: + "@solana/errors" "5.1.0" + "@solana/rpc-spec-types" "5.1.0" + "@solana/rpc-subscriptions-api@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-2.3.0.tgz#e779b8ad10e89b2f4a4ccb0fcd1a722d8bdd7729" @@ -916,6 +1009,17 @@ "@solana/rpc-spec-types" "2.3.0" "@solana/rpc-types" "2.3.0" +"@solana/rpc-transformers@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-transformers/-/rpc-transformers-5.1.0.tgz#919846a251a1bd3a380246184c37854ec9432285" + integrity sha512-6v93xi/ewGS/xEiSktNQ0bh0Uiv1/q9nR5oiFMn3BiAJRC+FdMRMxCjp6H+/Tua7wdhpClaPKrZYBQHoIp59tw== + dependencies: + "@solana/errors" "5.1.0" + "@solana/functional" "5.1.0" + "@solana/nominal-types" "5.1.0" + "@solana/rpc-spec-types" "5.1.0" + "@solana/rpc-types" "5.1.0" + "@solana/rpc-transport-http@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-transport-http/-/rpc-transport-http-2.3.0.tgz#581601b9579b2a7fed9e0cb6fbcb95b4186e5b49" @@ -938,6 +1042,18 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" +"@solana/rpc-types@5.1.0", "@solana/rpc-types@=5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-types/-/rpc-types-5.1.0.tgz#f5aa0593e693729cd85867ddb0b1f3850fe7422b" + integrity sha512-Rnpt5BuHQvnULPNXUC/yRqB+7iPbon95CSCeyRvPj5tJ4fx2JibvX3s/UEoud5vC+kRjPi/R0BGJ8XFvd3eDWg== + dependencies: + "@solana/addresses" "5.1.0" + "@solana/codecs-core" "5.1.0" + "@solana/codecs-numbers" "5.1.0" + "@solana/codecs-strings" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/nominal-types" "5.1.0" + "@solana/rpc@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc/-/rpc-2.3.0.tgz#a65919520d14c122625fb887a2d72c95bf8691cf" @@ -1062,6 +1178,21 @@ "@solana/nominal-types" "2.3.0" "@solana/rpc-types" "2.3.0" +"@solana/transaction-messages@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/transaction-messages/-/transaction-messages-5.1.0.tgz#f40a784f0e699e31b5f1d53a061df54a34e7ef8e" + integrity sha512-9rNV2YJhd85WIMvnwa/vUY4xUw3ZTU17jP1KDo/fFZWk55a0ov0ATJJPyC5HAR1i6hT1cmJzGH/UHhnD9m/Q3w== + dependencies: + "@solana/addresses" "5.1.0" + "@solana/codecs-core" "5.1.0" + "@solana/codecs-data-structures" "5.1.0" + "@solana/codecs-numbers" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/functional" "5.1.0" + "@solana/instructions" "5.1.0" + "@solana/nominal-types" "5.1.0" + "@solana/rpc-types" "5.1.0" + "@solana/transactions@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-2.3.0.tgz#fc99f6ce6cc5706f2b8116bbf8a2f396c3ec3177" @@ -1080,6 +1211,24 @@ "@solana/rpc-types" "2.3.0" "@solana/transaction-messages" "2.3.0" +"@solana/transactions@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-5.1.0.tgz#75f6f49581daa1f7b41cec2daed7de52e311b586" + integrity sha512-06JwSPtz+38ozNgpysAXS2eTMPQCufIisXB6K88X8J4GF8ziqs4nkq0BpXAXn+MpZTkuMt+JeW2RxP3HKhXe5g== + dependencies: + "@solana/addresses" "5.1.0" + "@solana/codecs-core" "5.1.0" + "@solana/codecs-data-structures" "5.1.0" + "@solana/codecs-numbers" "5.1.0" + "@solana/codecs-strings" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/functional" "5.1.0" + "@solana/instructions" "5.1.0" + "@solana/keys" "5.1.0" + "@solana/nominal-types" "5.1.0" + "@solana/rpc-types" "5.1.0" + "@solana/transaction-messages" "5.1.0" + "@solana/web3.js@1.98.0", "@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.30.2", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.77.3", "@solana/web3.js@^1.90.0", "@solana/web3.js@^1.98.0", "@solana/web3.js@^1.98.2", "@solana/web3.js@~1.77.3": version "1.98.0" resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.0.tgz#21ecfe8198c10831df6f0cfde7f68370d0405917" @@ -1154,12 +1303,40 @@ buffer "^6.0.3" js-yaml "^4.1.0" -"@triton-one/yellowstone-grpc@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc/-/yellowstone-grpc-1.4.1.tgz#b50434f68c3d73c6ce3e1f225656064c080f4b25" - integrity sha512-ZN49vooxFbOqWttll8u7AOsIVnX+srqX9ddhZ9ttE+OcehUo8c2p2suK8Gr2puab49cgsV0VGjiTn9Gua/ntIw== - dependencies: - "@grpc/grpc-js" "^1.8.0" +"@triton-one/yellowstone-grpc-napi-darwin-arm64@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-darwin-arm64/-/yellowstone-grpc-napi-darwin-arm64-0.0.4.tgz#f69117e2d475cb80beef531339aac4c63acf3d2e" + integrity sha512-7Wfjj3Tg49IqfgAvN8hi95LAbU3Lf1BPCWQRhj40cTPxkM8Df4u4YlfqRT1BVl4j04gTN8YmkpIMY00T9pNNDg== + +"@triton-one/yellowstone-grpc-napi-darwin-x64@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-darwin-x64/-/yellowstone-grpc-napi-darwin-x64-0.0.4.tgz#d79237368ca1672ad461edca35a2bc3f7975017c" + integrity sha512-e1SZYsXu80vENgdN5nglRPFRgZzmoIdkCIoouqvkfYdoBYZNDMPZxF1jHxXWaxjvGh2DfzmbeAVOx4ZYCPlIJA== + +"@triton-one/yellowstone-grpc-napi-linux-x64-gnu@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-linux-x64-gnu/-/yellowstone-grpc-napi-linux-x64-gnu-0.0.4.tgz#3d3a1bd3b545f0c392b0862a0cbc53f1d9e45223" + integrity sha512-9MOznQrLK0IbdEdnEhKD7dhE95uyOFUu5qUi6DhFZM7XHVyxpStSxCUdd5sVsX620X4iALF7+309xabjZr4uhA== + +"@triton-one/yellowstone-grpc-napi-linux-x64-musl@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-linux-x64-musl/-/yellowstone-grpc-napi-linux-x64-musl-0.0.4.tgz#cfc1af9eb8dc30f38bd23d052a73fc85b13d3465" + integrity sha512-5xnQ1nSmInbwIhv+sdazz8s1VqlBr06OmbE63y95k1Um/Fpi70X5su1NmTJucP2GbqonBKqycaIp+kMX05bpoA== + +"@triton-one/yellowstone-grpc@5.0.1-beta-12": + version "5.0.1-beta-12" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc/-/yellowstone-grpc-5.0.1-beta-12.tgz#03015393313a9d380e62f201d029c3d55789e2bd" + integrity sha512-FHI4BQeh1o6py9Q0D5uNHpyGjm/jYqiLtC82Gz1AHaLAgUZKMdfRenH1yuaI2pVih2wbQHz4Gf2ON/vbmEE9gA== + dependencies: + "@bufbuild/protobuf" "=2.10.2" + "@solana/addresses" "=5.1.0" + "@solana/rpc-api" "=5.1.0" + "@solana/rpc-types" "=5.1.0" + optionalDependencies: + "@triton-one/yellowstone-grpc-napi-darwin-arm64" "0.0.4" + "@triton-one/yellowstone-grpc-napi-darwin-x64" "0.0.4" + "@triton-one/yellowstone-grpc-napi-linux-x64-gnu" "0.0.4" + "@triton-one/yellowstone-grpc-napi-linux-x64-musl" "0.0.4" "@ts-graphviz/adapter@^2.0.6": version "2.0.6" From 28dccbb4cb84a89e1866436ec78bc18b15423769 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 7 Jan 2026 18:51:00 +0000 Subject: [PATCH 02/51] sdk: release v2.153.0-beta.2 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index fc701a3a82..72206ba462 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.153.0-beta.1 \ No newline at end of file +2.153.0-beta.2 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 0160365875..1ee4baefde 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.153.0-beta.1", + "version": "2.153.0-beta.2", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From 0c5840d4ce5a62315eabc80efb1accc4e0e84f74 Mon Sep 17 00:00:00 2001 From: lowkeynicc <85139158+lowkeynicc@users.noreply.github.com> Date: Wed, 7 Jan 2026 16:28:37 -0500 Subject: [PATCH 03/51] Nick/external init account support (#2067) * wip: add external signer support for init account, stats account, swift account * updates * fix prettify --- sdk/src/driftClient.ts | 121 ++++++++++++++++++++++++++++++---------- sdk/src/tx/txHandler.ts | 7 ++- sdk/src/tx/utils.ts | 9 ++- 3 files changed, 103 insertions(+), 34 deletions(-) diff --git a/sdk/src/driftClient.ts b/sdk/src/driftClient.ts index 8b0ef4cade..a5dbb37544 100644 --- a/sdk/src/driftClient.ts +++ b/sdk/src/driftClient.ts @@ -776,7 +776,7 @@ export class DriftClient { if (!this.marketLookupTables) { console.log('Market lookup table address not set'); - return; + return []; } const lookupTableAccountResults = await Promise.all( @@ -785,9 +785,12 @@ export class DriftClient { ) ); - const lookupTableAccounts = lookupTableAccountResults.map( - (result) => result.value - ); + // Filter out null values - lookup tables may not exist on-chain + const lookupTableAccounts = lookupTableAccountResults + .map((result) => result.value) + .filter( + (account): account is AddressLookupTableAccount => account !== null + ); this.lookupTableAccounts = lookupTableAccounts; return lookupTableAccounts; @@ -1129,15 +1132,23 @@ export class DriftClient { return [txSig, userAccountPublicKey]; } - async getInitializeUserStatsIx(): Promise { + async getInitializeUserStatsIx(overrides?: { + /** + * Optional external wallet to use as payer. If provided, this wallet will pay + * for the account creation instead of the default wallet. + */ + externalWallet?: PublicKey; + }): Promise { + const payer = overrides?.externalWallet ?? this.wallet.publicKey; + const authority = this.authority; return await this.program.instruction.initializeUserStats({ accounts: { userStats: getUserStatsAccountPublicKey( this.program.programId, - this.wallet.publicKey // only allow payer to initialize own user stats account + authority ), - authority: this.wallet.publicKey, - payer: this.wallet.publicKey, + authority, + payer, rent: anchor.web3.SYSVAR_RENT_PUBKEY, systemProgram: anchor.web3.SystemProgram.programId, state: await this.getStatePublicKey(), @@ -1166,8 +1177,16 @@ export class DriftClient { async getInitializeSignedMsgUserOrdersAccountIx( authority: PublicKey, - numOrders: number + numOrders: number, + overrides?: { + /** + * Optional external wallet to use as payer. If provided, this wallet will pay + * for the account creation instead of the default wallet. + */ + externalWallet?: PublicKey; + } ): Promise<[PublicKey, TransactionInstruction]> { + const payer = overrides?.externalWallet ?? this.wallet.publicKey; const signedMsgUserAccountPublicKey = getSignedMsgUserAccountPublicKey( this.program.programId, authority @@ -1177,7 +1196,7 @@ export class DriftClient { accounts: { signedMsgUserOrders: signedMsgUserAccountPublicKey, authority, - payer: this.wallet.publicKey, + payer, rent: anchor.web3.SYSVAR_RENT_PUBKEY, systemProgram: anchor.web3.SystemProgram.programId, }, @@ -1592,11 +1611,19 @@ export class DriftClient { private async getInitializeUserInstructions( subAccountId = 0, name?: string, - referrerInfo?: ReferrerInfo + referrerInfo?: ReferrerInfo, + overrides?: { + externalWallet?: PublicKey; + } ): Promise<[PublicKey, TransactionInstruction]> { + // Use external wallet as payer if provided, otherwise use the wallet + const payer = overrides?.externalWallet ?? this.wallet.publicKey; + // The authority is the account owner (this.authority), not the payer + const accountAuthority = this.authority; + const userAccountPublicKey = await getUserAccountPublicKey( this.program.programId, - this.wallet.publicKey, + accountAuthority, subAccountId ); @@ -1618,7 +1645,7 @@ export class DriftClient { if (!state.whitelistMint.equals(PublicKey.default)) { const associatedTokenPublicKey = await getAssociatedTokenAddress( state.whitelistMint, - this.wallet.publicKey + payer ); remainingAccounts.push({ pubkey: associatedTokenPublicKey, @@ -1641,8 +1668,8 @@ export class DriftClient { accounts: { user: userAccountPublicKey, userStats: this.getUserStatsAccountPublicKey(), - authority: this.wallet.publicKey, - payer: this.wallet.publicKey, + authority: accountAuthority, + payer: payer, rent: anchor.web3.SYSVAR_RENT_PUBKEY, systemProgram: anchor.web3.SystemProgram.programId, state: await this.getStatePublicKey(), @@ -3315,7 +3342,14 @@ export class DriftClient { referrerInfo?: ReferrerInfo, donateAmount?: BN, customMaxMarginRatio?: number, - poolId?: number + poolId?: number, + overrides?: { + /** + * Optional external wallet to deposit from. If provided, the deposit will be made + * from this wallet instead of the user's authority wallet. + */ + externalWallet?: PublicKey; + } ): Promise<{ ixs: TransactionInstruction[]; userAccountPublicKey: PublicKey; @@ -3326,17 +3360,20 @@ export class DriftClient { await this.getInitializeUserInstructions( subAccountId, name, - referrerInfo + referrerInfo, + overrides ); + // Check signed message orders account for the actual authority (account owner) const isSignedMsgUserOrdersAccountInitialized = - await this.isSignedMsgUserOrdersAccountInitialized(this.wallet.publicKey); + await this.isSignedMsgUserOrdersAccountInitialized(this.authority); if (!isSignedMsgUserOrdersAccountInitialized) { const [, initializeSignedMsgUserOrdersAccountIx] = await this.getInitializeSignedMsgUserOrdersAccountIx( - this.wallet.publicKey, - 8 + this.authority, + 8, + overrides ); ixs.push(initializeSignedMsgUserOrdersAccountIx); } @@ -3345,7 +3382,8 @@ export class DriftClient { const isSolMarket = spotMarket.mint.equals(WRAPPED_SOL_MINT); - const authority = this.wallet.publicKey; + // Use external wallet for deposit source if provided, otherwise use the wallet + const depositSource = overrides?.externalWallet ?? this.wallet.publicKey; const isFromSubaccount = fromSubAccountId !== null && @@ -3356,7 +3394,7 @@ export class DriftClient { const createWSOLTokenAccount = (isSolMarket && - userTokenAccount.equals(authority) && + userTokenAccount.equals(depositSource) && !isFromSubaccount) || !donateAmount.eq(ZERO); @@ -3365,7 +3403,13 @@ export class DriftClient { let wsolTokenAccount: PublicKey; if (createWSOLTokenAccount) { const { ixs: startIxs, pubkey } = - await this.getWrappedSolAccountCreationIxs(wSolAmount, true); + await this.getWrappedSolAccountCreationIxs( + wSolAmount, + true, + overrides?.externalWallet + ? { authority: overrides.externalWallet } + : undefined + ); wsolTokenAccount = pubkey; @@ -3408,14 +3452,17 @@ export class DriftClient { userTokenAccount, subAccountId, false, - false + false, + overrides?.externalWallet + ? { authority: overrides.externalWallet } + : undefined ); if (subAccountId === 0) { if ( !(await this.checkIfAccountExists(this.getUserStatsAccountPublicKey())) ) { - ixs.push(await this.getInitializeUserStatsIx()); + ixs.push(await this.getInitializeUserStatsIx(overrides)); } } ixs.push(initializeUserAccountIx); @@ -3446,12 +3493,13 @@ export class DriftClient { } // Close the wrapped sol account at the end of the transaction + // Return funds to the deposit source (external wallet if provided) if (createWSOLTokenAccount) { ixs.push( createCloseAccountInstruction( wsolTokenAccount, - authority, - authority, + depositSource, + depositSource, [] ) ); @@ -3474,7 +3522,10 @@ export class DriftClient { donateAmount?: BN, txParams?: TxParams, customMaxMarginRatio?: number, - poolId?: number + poolId?: number, + overrides?: { + externalWallet?: PublicKey; + } ): Promise<[Transaction | VersionedTransaction, PublicKey]> { const { ixs, userAccountPublicKey } = await this.createInitializeUserAccountAndDepositCollateralIxs( @@ -3487,7 +3538,8 @@ export class DriftClient { referrerInfo, donateAmount, customMaxMarginRatio, - poolId + poolId, + overrides ); const tx = await this.buildTransaction(ixs, txParams); @@ -3506,6 +3558,9 @@ export class DriftClient { * @param referrerInfo * @param donateAmount * @param txParams + * @param customMaxMarginRatio + * @param poolId + * @param overrides - Optional overrides including externalWallet for depositing from a different wallet * @returns */ public async initializeUserAccountAndDepositCollateral( @@ -3519,7 +3574,10 @@ export class DriftClient { donateAmount?: BN, txParams?: TxParams, customMaxMarginRatio?: number, - poolId?: number + poolId?: number, + overrides?: { + externalWallet?: PublicKey; + } ): Promise<[TransactionSignature, PublicKey]> { const [tx, userAccountPublicKey] = await this.createInitializeUserAccountAndDepositCollateral( @@ -3533,7 +3591,8 @@ export class DriftClient { donateAmount, txParams, customMaxMarginRatio, - poolId + poolId, + overrides ); const additionalSigners: Array = []; diff --git a/sdk/src/tx/txHandler.ts b/sdk/src/tx/txHandler.ts index bd9b2b702e..99a1d37a64 100644 --- a/sdk/src/tx/txHandler.ts +++ b/sdk/src/tx/txHandler.ts @@ -495,9 +495,14 @@ export class TxHandler { const marketLookupTables = await fetchAllMarketLookupTableAccounts(); - lookupTables = lookupTables + // Combine and filter out any null/undefined lookup tables + const combinedLookupTables = lookupTables ? [...lookupTables, ...marketLookupTables] : marketLookupTables; + lookupTables = combinedLookupTables.filter( + (table): table is AddressLookupTableAccount => + table !== null && table !== undefined + ); // # Collect and process Tx Params let baseTxParams: BaseTxParams = { diff --git a/sdk/src/tx/utils.ts b/sdk/src/tx/utils.ts index 617b3f6ea6..bd40d87e22 100644 --- a/sdk/src/tx/utils.ts +++ b/sdk/src/tx/utils.ts @@ -58,8 +58,13 @@ export const getSizeOfTransaction = ( .reduce((a, b) => a + b, 0); let numberOfAddressLookups = 0; - if (addressLookupTables.length > 0) { - const lookupTableAddresses = addressLookupTables + // Filter out null/undefined lookup tables before accessing .state + const validLookupTables = addressLookupTables.filter( + (table): table is AddressLookupTableAccount => + table !== null && table !== undefined + ); + if (validLookupTables.length > 0) { + const lookupTableAddresses = validLookupTables .map((addressLookupTable) => addressLookupTable.state.addresses.map((address) => address.toBase58()) ) From fde9d608810614e9f747e78bf3e5bf8bcbbe4f17 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 7 Jan 2026 21:34:36 +0000 Subject: [PATCH 04/51] sdk: release v2.153.0-beta.3 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index 72206ba462..f5821d6a18 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.153.0-beta.2 \ No newline at end of file +2.153.0-beta.3 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 1ee4baefde..93ee2dd3e6 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.153.0-beta.2", + "version": "2.153.0-beta.3", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From 8def72d344ce16a739873a4eb23fcb60f0b9420e Mon Sep 17 00:00:00 2001 From: jack Date: Thu, 8 Jan 2026 10:08:39 +1100 Subject: [PATCH 05/51] Revert "chore: update yellowstone to rust bindings version" --- sdk/package.json | 3 +- sdk/src/accounts/grpcAccountSubscriber.ts | 3 +- .../accounts/grpcMultiAccountSubscriber.ts | 6 +- .../accounts/grpcProgramAccountSubscriber.ts | 6 +- sdk/src/isomorphic/grpc.node.ts | 4 + sdk/yarn.lock | 231 ++---------------- 6 files changed, 43 insertions(+), 210 deletions(-) diff --git a/sdk/package.json b/sdk/package.json index c9a459c4bb..93ee2dd3e6 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -45,6 +45,7 @@ "@coral-xyz/anchor": "0.29.0", "@coral-xyz/anchor-30": "npm:@coral-xyz/anchor@0.30.1", "@ellipsis-labs/phoenix-sdk": "1.4.5", + "@grpc/grpc-js": "1.14.0", "@msgpack/msgpack": "^3.1.2", "@openbook-dex/openbook-v2": "0.2.10", "@project-serum/serum": "0.13.65", @@ -55,7 +56,7 @@ "@solana/web3.js": "1.98.0", "@switchboard-xyz/common": "3.0.14", "@switchboard-xyz/on-demand": "2.4.1", - "@triton-one/yellowstone-grpc": "5.0.1-beta-12", + "@triton-one/yellowstone-grpc": "1.4.1", "anchor-bankrun": "0.3.0", "gill": "^0.10.2", "helius-laserstream": "0.1.8", diff --git a/sdk/src/accounts/grpcAccountSubscriber.ts b/sdk/src/accounts/grpcAccountSubscriber.ts index c21a4bf4ed..50adb2f318 100644 --- a/sdk/src/accounts/grpcAccountSubscriber.ts +++ b/sdk/src/accounts/grpcAccountSubscriber.ts @@ -6,6 +6,7 @@ import * as Buffer from 'buffer'; import { WebSocketAccountSubscriber } from './webSocketAccountSubscriber'; import { Client, + ClientDuplexStream, CommitmentLevel, createClient, SubscribeRequest, @@ -14,7 +15,7 @@ import { export class grpcAccountSubscriber extends WebSocketAccountSubscriber { private client: Client; - private stream; + private stream: ClientDuplexStream; private commitmentLevel: CommitmentLevel; public listenerId?: number; diff --git a/sdk/src/accounts/grpcMultiAccountSubscriber.ts b/sdk/src/accounts/grpcMultiAccountSubscriber.ts index 64c30a3107..7a442ac5cd 100644 --- a/sdk/src/accounts/grpcMultiAccountSubscriber.ts +++ b/sdk/src/accounts/grpcMultiAccountSubscriber.ts @@ -5,6 +5,7 @@ import bs58 from 'bs58'; import { Client, + ClientDuplexStream, CommitmentLevel, SubscribeRequest, SubscribeUpdate, @@ -37,7 +38,7 @@ function commitmentLevelToCommitment( export class grpcMultiAccountSubscriber { private client: Client; - private stream; + private stream: ClientDuplexStream; private commitmentLevel: CommitmentLevel; private program: Program; private accountName: string; @@ -224,7 +225,8 @@ export class grpcMultiAccountSubscriber { }); } - this.stream = await this.client.subscribe(); + this.stream = + (await this.client.subscribe()) as unknown as typeof this.stream; const request: SubscribeRequest = { slots: {}, accounts: { diff --git a/sdk/src/accounts/grpcProgramAccountSubscriber.ts b/sdk/src/accounts/grpcProgramAccountSubscriber.ts index 4fa497fae3..f575c64229 100644 --- a/sdk/src/accounts/grpcProgramAccountSubscriber.ts +++ b/sdk/src/accounts/grpcProgramAccountSubscriber.ts @@ -6,6 +6,7 @@ import * as Buffer from 'buffer'; import { WebSocketProgramAccountSubscriber } from './webSocketProgramAccountSubscriber'; import { Client, + ClientDuplexStream, CommitmentLevel, createClient, SubscribeRequest, @@ -16,7 +17,7 @@ export class grpcProgramAccountSubscriber< T, > extends WebSocketProgramAccountSubscriber { private client: Client; - private stream; + private stream: ClientDuplexStream; private commitmentLevel: CommitmentLevel; public listenerId?: number; @@ -91,7 +92,8 @@ export class grpcProgramAccountSubscriber< this.onChange = onChange; // Subscribe with grpc - this.stream = await this.client.subscribe(); + this.stream = + (await this.client.subscribe()) as unknown as typeof this.stream; const filters = this.options.filters.map((filter) => { return { memcmp: { diff --git a/sdk/src/isomorphic/grpc.node.ts b/sdk/src/isomorphic/grpc.node.ts index 6aa1129368..267a81c8a6 100644 --- a/sdk/src/isomorphic/grpc.node.ts +++ b/sdk/src/isomorphic/grpc.node.ts @@ -4,6 +4,8 @@ import type { SubscribeUpdate, } from '@triton-one/yellowstone-grpc'; import { CommitmentLevel } from '@triton-one/yellowstone-grpc'; +import type { ClientDuplexStream, ChannelOptions } from '@grpc/grpc-js'; + import { CommitmentLevel as LaserCommitmentLevel, subscribe as LaserSubscribe, @@ -23,6 +25,8 @@ export { CompressionAlgorithms, }; export type { + ClientDuplexStream, + ChannelOptions, SubscribeRequest, SubscribeUpdate, LaserstreamConfig, diff --git a/sdk/yarn.lock b/sdk/yarn.lock index 7f1ba7a05a..26a6f824c0 100644 --- a/sdk/yarn.lock +++ b/sdk/yarn.lock @@ -41,11 +41,6 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" -"@bufbuild/protobuf@=2.10.2": - version "2.10.2" - resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.10.2.tgz#d7c063301f2a33095fc202f06bf3cce0c138dfcd" - integrity sha512-uFsRXwIGyu+r6AMdz+XijIIZJYpoWeYzILt5yZ2d3mCjQrWUTVpVD9WL/jZAbvp+Ed04rOhrsk7FiTcEDseB5A== - "@coral-xyz/anchor-30@npm:@coral-xyz/anchor@0.30.1": version "0.30.1" resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.1.tgz#17f3e9134c28cd0ea83574c6bab4e410bcecec5d" @@ -299,7 +294,15 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== -"@grpc/grpc-js@^1.8.13": +"@grpc/grpc-js@1.14.0": + version "1.14.0" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.14.0.tgz#a3c47e7816ca2b4d5490cba9e06a3cf324e675ad" + integrity sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg== + dependencies: + "@grpc/proto-loader" "^0.8.0" + "@js-sdsl/ordered-map" "^4.4.2" + +"@grpc/grpc-js@^1.8.0", "@grpc/grpc-js@^1.8.13": version "1.13.4" resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.13.4.tgz#922fbc496e229c5fa66802d2369bf181c1df1c5a" integrity sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg== @@ -317,6 +320,16 @@ protobufjs "^7.2.5" yargs "^17.7.2" +"@grpc/proto-loader@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.8.0.tgz#b6c324dd909c458a0e4aa9bfd3d69cf78a4b9bd8" + integrity sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ== + dependencies: + lodash.camelcase "^4.3.0" + long "^5.0.0" + protobufjs "^7.5.3" + yargs "^17.7.2" + "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -718,17 +731,6 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" -"@solana/addresses@5.1.0", "@solana/addresses@=5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/addresses/-/addresses-5.1.0.tgz#9ee95bb4808a7147aaca40cb568dc401db96614e" - integrity sha512-X84qSZLgve9YeYsyxGI49WnfEre53tdFu4x9/4oULBgoj8d0A+P9VGLYzmRJ0YFYKRcZG7U4u3MQpI5uLZ1AsQ== - dependencies: - "@solana/assertions" "5.1.0" - "@solana/codecs-core" "5.1.0" - "@solana/codecs-strings" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/nominal-types" "5.1.0" - "@solana/assertions@2.3.0", "@solana/assertions@^2.1.1": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-2.3.0.tgz#f96f655088dea6fe9f79604da7615c745c64173b" @@ -736,13 +738,6 @@ dependencies: "@solana/errors" "2.3.0" -"@solana/assertions@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-5.1.0.tgz#7b0599a053d862e4e224214cfe4df0d111db0ab8" - integrity sha512-5But2wyxuvGXMIOnD0jBMQ9yq1QQF2LSK3IbIRSkAkXbD3DS6O2tRvKUHNhogd+BpkPyCGOQHBycezgnxmStlg== - dependencies: - "@solana/errors" "5.1.0" - "@solana/buffer-layout-utils@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" @@ -781,14 +776,7 @@ dependencies: "@solana/errors" "2.3.0" -"@solana/codecs-core@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-5.1.0.tgz#2ac0cc56b1264898dbdaffa3e395f3f0557d9578" - integrity sha512-vDwi03mxWeWCS5Il6BCdNdifYdOoHVz97YOmbWGIt45b77Ivu5NUYeSD2+ccl6fSw8eYQ6QaqqKXMjbSfsXv4g== - dependencies: - "@solana/errors" "5.1.0" - -"@solana/codecs-data-structures@2.0.0-preview.4", "@solana/codecs-data-structures@2.0.0-rc.1", "@solana/codecs-data-structures@2.3.0", "@solana/codecs-data-structures@5.1.0": +"@solana/codecs-data-structures@2.0.0-preview.4", "@solana/codecs-data-structures@2.0.0-rc.1", "@solana/codecs-data-structures@2.3.0": version "2.0.0-preview.4" resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.4.tgz#f8a2470982a9792334737ea64000ccbdff287247" integrity sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA== @@ -821,14 +809,6 @@ "@solana/codecs-core" "2.3.0" "@solana/errors" "2.3.0" -"@solana/codecs-numbers@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-5.1.0.tgz#2dfbff8c6f0964d12a097b5d24b7f6bb6041c20b" - integrity sha512-Ea5/9yjDNOrDZcI40UGzzi6Aq1JNsmzM4m5pOk6Xb3JRZ0YdKOv/MwuCqb6jRgzZ7SQjHhkfGL43kHLJA++bOw== - dependencies: - "@solana/codecs-core" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/codecs-strings@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz#e1d9167075b8c5b0b60849f8add69c0f24307018" @@ -847,15 +827,6 @@ "@solana/codecs-numbers" "2.3.0" "@solana/errors" "2.3.0" -"@solana/codecs-strings@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-5.1.0.tgz#1f2626c5d256d1153242bc6929c208e0962b8f6f" - integrity sha512-014xwl5T/3VnGW0gceizF47DUs5EURRtgGmbWIR5+Z32yxgQ6hT9Zl0atZbL268RHbUQ03/J8Ush1StQgy7sfQ== - dependencies: - "@solana/codecs-core" "5.1.0" - "@solana/codecs-numbers" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/codecs@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-rc.1.tgz#146dc5db58bd3c28e04b4c805e6096c2d2a0a875" @@ -878,7 +849,7 @@ "@solana/codecs-strings" "2.3.0" "@solana/options" "2.3.0" -"@solana/errors@2.0.0-preview.4", "@solana/errors@2.0.0-rc.1", "@solana/errors@2.3.0", "@solana/errors@5.1.0": +"@solana/errors@2.0.0-preview.4", "@solana/errors@2.0.0-rc.1", "@solana/errors@2.3.0": version "2.0.0-preview.4" resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.4.tgz#056ba76b6dd900dafa70117311bec3aef0f5250b" integrity sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA== @@ -896,11 +867,6 @@ resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-2.3.0.tgz#ac33815655e954bb78151446a571bc6c9fd9be28" integrity sha512-AgsPh3W3tE+nK3eEw/W9qiSfTGwLYEvl0rWaxHht/lRcuDVwfKRzeSa5G79eioWFFqr+pTtoCr3D3OLkwKz02Q== -"@solana/functional@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-5.1.0.tgz#efd4b338b001a603627ed01493262dfac67e7edc" - integrity sha512-R6jacWU0Gr+j49lTDp+FSECBolqw2Gq7JlC22rI0JkcxJiiAlp3G80v6zAYq0FkHzxZbjyR6//JYUXSwliem5g== - "@solana/instructions@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-2.3.0.tgz#ff25cbe545000a33fb3604d83f4e2b683de94ad3" @@ -909,14 +875,6 @@ "@solana/codecs-core" "2.3.0" "@solana/errors" "2.3.0" -"@solana/instructions@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-5.1.0.tgz#ea51bdbec9098bcd2ebfc63850eb8a68b0674d28" - integrity sha512-fkwpUwwqk5K14T/kZDnCrfeR0kww49HBx+BK8xdSeJx+bt4QTwAHa9YeOkGhGrHEFVEJEUf8FKoxxTzZzJZtKQ== - dependencies: - "@solana/codecs-core" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/keys@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-2.3.0.tgz#9d0b0ec09c2789a051b4df1945ed52631261186e" @@ -928,17 +886,6 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" -"@solana/keys@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-5.1.0.tgz#ddfb57d7273c147e4072334d34e55010233e508e" - integrity sha512-ma4zTTuSOmtTCvATHMfUGNTw0Vqah/6XPe1VmLc66ohwXMI3yqatX1FQPXgDZozr15SvLAesfs7/bgl2TRoe9w== - dependencies: - "@solana/assertions" "5.1.0" - "@solana/codecs-core" "5.1.0" - "@solana/codecs-strings" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/nominal-types" "5.1.0" - "@solana/kit@^2.1.1": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/kit/-/kit-2.3.0.tgz#92deb7c4883293617209aecac9a43d5e41ccf092" @@ -968,11 +915,6 @@ resolved "https://registry.yarnpkg.com/@solana/nominal-types/-/nominal-types-2.3.0.tgz#b67637241b4a45c756464e049c7a830880b6e944" integrity sha512-uKlMnlP4PWW5UTXlhKM8lcgIaNj8dvd8xO4Y9l+FVvh9RvW2TO0GwUO6JCo7JBzCB0PSqRJdWWaQ8pu1Ti/OkA== -"@solana/nominal-types@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/nominal-types/-/nominal-types-5.1.0.tgz#39f1efc19ce4f5429c02c01a518731f441ef98a1" - integrity sha512-+4Cm+SpK+D811i9giqv4Up93ZlmUcZfLDHkSH24F4in61+Y2TKA+XKuRtKhNytQMmqCfbvJZ9MHFaIeZw5g+Bg== - "@solana/options@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-rc.1.tgz#06924ba316dc85791fc46726a51403144a85fc4d" @@ -1025,43 +967,16 @@ "@solana/transaction-messages" "2.3.0" "@solana/transactions" "2.3.0" -"@solana/rpc-api@=5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-api/-/rpc-api-5.1.0.tgz#6da7bbea267eb8755bdf6c2f6eb6c945b3de9f95" - integrity sha512-eI1tY0i3gmih1C65gFECYbfPRpHEYqFp+9IKjpknZtYpQIe9BqBKSpfYpGiCAbKdN/TMadBNPOzdK15ewhkkvQ== - dependencies: - "@solana/addresses" "5.1.0" - "@solana/codecs-core" "5.1.0" - "@solana/codecs-strings" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/keys" "5.1.0" - "@solana/rpc-parsed-types" "5.1.0" - "@solana/rpc-spec" "5.1.0" - "@solana/rpc-transformers" "5.1.0" - "@solana/rpc-types" "5.1.0" - "@solana/transaction-messages" "5.1.0" - "@solana/transactions" "5.1.0" - "@solana/rpc-parsed-types@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-2.3.0.tgz#132b03f6b4c1b4688336ad48e76c2eea0d8c91d7" integrity sha512-B5pHzyEIbBJf9KHej+zdr5ZNAdSvu7WLU2lOUPh81KHdHQs6dEb310LGxcpCc7HVE8IEdO20AbckewDiAN6OCg== -"@solana/rpc-parsed-types@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-5.1.0.tgz#4881fecebdf006def3eeb71364275b2b0086b39b" - integrity sha512-ZJoXHNItALMNa1zmGrNnIh96RBlc9GpIqoaZkdE14mAQ7gWe7Oc0ejYavUeSCmcL0wZcvIFh50AsfVxrHr4+2Q== - "@solana/rpc-spec-types@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-2.3.0.tgz#010ea9de2f720e84bec2b93ca77ad3664b77235f" integrity sha512-xQsb65lahjr8Wc9dMtP7xa0ZmDS8dOE2ncYjlvfyw/h4mpdXTUdrSMi6RtFwX33/rGuztQ7Hwaid5xLNSLvsFQ== -"@solana/rpc-spec-types@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-5.1.0.tgz#4e2bcd7f8ca0bc5bd6d057fd5cebd39ee2309420" - integrity sha512-B8/WyjmHpC34vXtAmTpZyPwRCm7WwoSkmjBcBouaaY1uilJ9+Wp2nptbq2cJyWairOoMSoI7v5kvvnrJuquq4Q== - "@solana/rpc-spec@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-2.3.0.tgz#2b679eb750c0f9270da6d451ea1bdc2c7783eb42" @@ -1070,14 +985,6 @@ "@solana/errors" "2.3.0" "@solana/rpc-spec-types" "2.3.0" -"@solana/rpc-spec@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-5.1.0.tgz#e192f72345596c04a5144411011a9744517d0bf6" - integrity sha512-y8B6fUWA1EBKXUsNo6b9EiFcQPsaJREPLlcIDbo4b6TucQNwvl7FHfpf1VHJL64SkI/WE69i2WEkiOJYjmLO0A== - dependencies: - "@solana/errors" "5.1.0" - "@solana/rpc-spec-types" "5.1.0" - "@solana/rpc-subscriptions-api@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-2.3.0.tgz#e779b8ad10e89b2f4a4ccb0fcd1a722d8bdd7729" @@ -1139,17 +1046,6 @@ "@solana/rpc-spec-types" "2.3.0" "@solana/rpc-types" "2.3.0" -"@solana/rpc-transformers@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-transformers/-/rpc-transformers-5.1.0.tgz#919846a251a1bd3a380246184c37854ec9432285" - integrity sha512-6v93xi/ewGS/xEiSktNQ0bh0Uiv1/q9nR5oiFMn3BiAJRC+FdMRMxCjp6H+/Tua7wdhpClaPKrZYBQHoIp59tw== - dependencies: - "@solana/errors" "5.1.0" - "@solana/functional" "5.1.0" - "@solana/nominal-types" "5.1.0" - "@solana/rpc-spec-types" "5.1.0" - "@solana/rpc-types" "5.1.0" - "@solana/rpc-transport-http@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-transport-http/-/rpc-transport-http-2.3.0.tgz#581601b9579b2a7fed9e0cb6fbcb95b4186e5b49" @@ -1172,18 +1068,6 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" -"@solana/rpc-types@5.1.0", "@solana/rpc-types@=5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-types/-/rpc-types-5.1.0.tgz#f5aa0593e693729cd85867ddb0b1f3850fe7422b" - integrity sha512-Rnpt5BuHQvnULPNXUC/yRqB+7iPbon95CSCeyRvPj5tJ4fx2JibvX3s/UEoud5vC+kRjPi/R0BGJ8XFvd3eDWg== - dependencies: - "@solana/addresses" "5.1.0" - "@solana/codecs-core" "5.1.0" - "@solana/codecs-numbers" "5.1.0" - "@solana/codecs-strings" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/nominal-types" "5.1.0" - "@solana/rpc@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc/-/rpc-2.3.0.tgz#a65919520d14c122625fb887a2d72c95bf8691cf" @@ -1308,21 +1192,6 @@ "@solana/nominal-types" "2.3.0" "@solana/rpc-types" "2.3.0" -"@solana/transaction-messages@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/transaction-messages/-/transaction-messages-5.1.0.tgz#f40a784f0e699e31b5f1d53a061df54a34e7ef8e" - integrity sha512-9rNV2YJhd85WIMvnwa/vUY4xUw3ZTU17jP1KDo/fFZWk55a0ov0ATJJPyC5HAR1i6hT1cmJzGH/UHhnD9m/Q3w== - dependencies: - "@solana/addresses" "5.1.0" - "@solana/codecs-core" "5.1.0" - "@solana/codecs-data-structures" "5.1.0" - "@solana/codecs-numbers" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/functional" "5.1.0" - "@solana/instructions" "5.1.0" - "@solana/nominal-types" "5.1.0" - "@solana/rpc-types" "5.1.0" - "@solana/transactions@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-2.3.0.tgz#fc99f6ce6cc5706f2b8116bbf8a2f396c3ec3177" @@ -1341,24 +1210,6 @@ "@solana/rpc-types" "2.3.0" "@solana/transaction-messages" "2.3.0" -"@solana/transactions@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-5.1.0.tgz#75f6f49581daa1f7b41cec2daed7de52e311b586" - integrity sha512-06JwSPtz+38ozNgpysAXS2eTMPQCufIisXB6K88X8J4GF8ziqs4nkq0BpXAXn+MpZTkuMt+JeW2RxP3HKhXe5g== - dependencies: - "@solana/addresses" "5.1.0" - "@solana/codecs-core" "5.1.0" - "@solana/codecs-data-structures" "5.1.0" - "@solana/codecs-numbers" "5.1.0" - "@solana/codecs-strings" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/functional" "5.1.0" - "@solana/instructions" "5.1.0" - "@solana/keys" "5.1.0" - "@solana/nominal-types" "5.1.0" - "@solana/rpc-types" "5.1.0" - "@solana/transaction-messages" "5.1.0" - "@solana/web3.js@1.98.0", "@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.30.2", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.77.3", "@solana/web3.js@^1.90.0", "@solana/web3.js@^1.98.0", "@solana/web3.js@^1.98.2", "@solana/web3.js@~1.77.3": version "1.98.0" resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.0.tgz#21ecfe8198c10831df6f0cfde7f68370d0405917" @@ -1433,40 +1284,12 @@ buffer "^6.0.3" js-yaml "^4.1.0" -"@triton-one/yellowstone-grpc-napi-darwin-arm64@0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-darwin-arm64/-/yellowstone-grpc-napi-darwin-arm64-0.0.4.tgz#f69117e2d475cb80beef531339aac4c63acf3d2e" - integrity sha512-7Wfjj3Tg49IqfgAvN8hi95LAbU3Lf1BPCWQRhj40cTPxkM8Df4u4YlfqRT1BVl4j04gTN8YmkpIMY00T9pNNDg== - -"@triton-one/yellowstone-grpc-napi-darwin-x64@0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-darwin-x64/-/yellowstone-grpc-napi-darwin-x64-0.0.4.tgz#d79237368ca1672ad461edca35a2bc3f7975017c" - integrity sha512-e1SZYsXu80vENgdN5nglRPFRgZzmoIdkCIoouqvkfYdoBYZNDMPZxF1jHxXWaxjvGh2DfzmbeAVOx4ZYCPlIJA== - -"@triton-one/yellowstone-grpc-napi-linux-x64-gnu@0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-linux-x64-gnu/-/yellowstone-grpc-napi-linux-x64-gnu-0.0.4.tgz#3d3a1bd3b545f0c392b0862a0cbc53f1d9e45223" - integrity sha512-9MOznQrLK0IbdEdnEhKD7dhE95uyOFUu5qUi6DhFZM7XHVyxpStSxCUdd5sVsX620X4iALF7+309xabjZr4uhA== - -"@triton-one/yellowstone-grpc-napi-linux-x64-musl@0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-linux-x64-musl/-/yellowstone-grpc-napi-linux-x64-musl-0.0.4.tgz#cfc1af9eb8dc30f38bd23d052a73fc85b13d3465" - integrity sha512-5xnQ1nSmInbwIhv+sdazz8s1VqlBr06OmbE63y95k1Um/Fpi70X5su1NmTJucP2GbqonBKqycaIp+kMX05bpoA== - -"@triton-one/yellowstone-grpc@5.0.1-beta-12": - version "5.0.1-beta-12" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc/-/yellowstone-grpc-5.0.1-beta-12.tgz#03015393313a9d380e62f201d029c3d55789e2bd" - integrity sha512-FHI4BQeh1o6py9Q0D5uNHpyGjm/jYqiLtC82Gz1AHaLAgUZKMdfRenH1yuaI2pVih2wbQHz4Gf2ON/vbmEE9gA== - dependencies: - "@bufbuild/protobuf" "=2.10.2" - "@solana/addresses" "=5.1.0" - "@solana/rpc-api" "=5.1.0" - "@solana/rpc-types" "=5.1.0" - optionalDependencies: - "@triton-one/yellowstone-grpc-napi-darwin-arm64" "0.0.4" - "@triton-one/yellowstone-grpc-napi-darwin-x64" "0.0.4" - "@triton-one/yellowstone-grpc-napi-linux-x64-gnu" "0.0.4" - "@triton-one/yellowstone-grpc-napi-linux-x64-musl" "0.0.4" +"@triton-one/yellowstone-grpc@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc/-/yellowstone-grpc-1.4.1.tgz#b50434f68c3d73c6ce3e1f225656064c080f4b25" + integrity sha512-ZN49vooxFbOqWttll8u7AOsIVnX+srqX9ddhZ9ttE+OcehUo8c2p2suK8Gr2puab49cgsV0VGjiTn9Gua/ntIw== + dependencies: + "@grpc/grpc-js" "^1.8.0" "@ts-graphviz/adapter@^2.0.6": version "2.0.6" From d547905ae3b16a711839f56071b64ed40c7a0b44 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 7 Jan 2026 23:14:57 +0000 Subject: [PATCH 06/51] sdk: release v2.153.0-beta.4 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index f5821d6a18..a66ca3da5d 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.153.0-beta.3 \ No newline at end of file +2.153.0-beta.4 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 93ee2dd3e6..4d9b7ab417 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.153.0-beta.3", + "version": "2.153.0-beta.4", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From f44666e3b3eb37dd76d9a3dc1b57d80868c8513b Mon Sep 17 00:00:00 2001 From: Jack Waller Date: Thu, 8 Jan 2026 14:04:12 +1100 Subject: [PATCH 07/51] chore: update for channelOption changes --- sdk/package.json | 2 +- sdk/scripts/grpc-client-test-comparison.ts | 5 +- .../grpc-multiuser-client-test-comparison.ts | 278 +++++++++--------- sdk/scripts/single-grpc-client-test.ts | 60 ++-- .../accounts/laserProgramAccountSubscriber.ts | 15 +- sdk/src/accounts/types.ts | 20 +- sdk/yarn.lock | 56 ++-- 7 files changed, 234 insertions(+), 202 deletions(-) diff --git a/sdk/package.json b/sdk/package.json index a5270862eb..70a715bf7d 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -54,7 +54,7 @@ "@solana/web3.js": "1.98.0", "@switchboard-xyz/common": "3.0.14", "@switchboard-xyz/on-demand": "2.4.1", - "@triton-one/yellowstone-grpc": "5.0.1-beta-12", + "@triton-one/yellowstone-grpc": "5.0.1", "anchor-bankrun": "0.3.0", "gill": "^0.10.2", "helius-laserstream": "0.1.8", diff --git a/sdk/scripts/grpc-client-test-comparison.ts b/sdk/scripts/grpc-client-test-comparison.ts index c2d7c7947f..06203b5edd 100644 --- a/sdk/scripts/grpc-client-test-comparison.ts +++ b/sdk/scripts/grpc-client-test-comparison.ts @@ -96,9 +96,8 @@ async function initializeGrpcDriftClientV2VersusV1() { token: TOKEN, commitmentLevel: CommitmentLevel.PROCESSED, channelOptions: { - 'grpc.keepalive_time_ms': 10_000, - 'grpc.keepalive_timeout_ms': 1_000, - 'grpc.keepalive_permit_without_calls': 1, + grpcKeepAliveTimeout: 1_000, + grpcTcpKeepalive: 10_000, }, }, }; diff --git a/sdk/scripts/grpc-multiuser-client-test-comparison.ts b/sdk/scripts/grpc-multiuser-client-test-comparison.ts index 7c1ec78c0b..ed9e350801 100644 --- a/sdk/scripts/grpc-multiuser-client-test-comparison.ts +++ b/sdk/scripts/grpc-multiuser-client-test-comparison.ts @@ -13,144 +13,146 @@ const TOKEN = process.env.TOKEN; const RPC_ENDPOINT = process.env.RPC_ENDPOINT; const USER_ACCOUNT_PUBKEYS = [ - // Add user account public keys here, e.g.: - // new PublicKey('...') + // Add user account public keys here, e.g.: + // new PublicKey('...') ]; async function testGrpcUserAccountSubscriberV1VsV2() { - console.log('🚀 Initializing User Account Subscriber V1 vs V2 Test...'); - - if (USER_ACCOUNT_PUBKEYS.length === 0) { - console.error('❌ No user account public keys provided. Please add some to USER_ACCOUNT_PUBKEYS array.'); - process.exit(1); - } - - const connection = new Connection(RPC_ENDPOINT); - const wallet = new Wallet(new Keypair()); - - const programId = new PublicKey(DRIFT_PROGRAM_ID); - const provider = new AnchorProvider( - connection, - // @ts-ignore - wallet, - { - commitment: 'processed', - } - ); - - const program = new Program(driftIDL as Idl, programId, provider); - - const grpcConfigs = { - endpoint: GRPC_ENDPOINT, - token: TOKEN, - commitmentLevel: CommitmentLevel.PROCESSED, - channelOptions: { - 'grpc.keepalive_time_ms': 10_000, - 'grpc.keepalive_timeout_ms': 1_000, - 'grpc.keepalive_permit_without_calls': 1, - }, - }; - - console.log(`📊 Testing ${USER_ACCOUNT_PUBKEYS.length} user accounts...`); - - // V1: Create individual subscribers for each user account - const v1Subscribers = USER_ACCOUNT_PUBKEYS.map( - (pubkey) => - new grpcUserAccountSubscriber( - grpcConfigs, - program, - pubkey, - { logResubMessages: true } - ) - ); - - // V2: Create a single multi-subscriber and get per-user interfaces - const v2MultiSubscriber = new grpcMultiUserAccountSubscriber( - program, - grpcConfigs, - { logResubMessages: true } - ); - const v2Subscribers = USER_ACCOUNT_PUBKEYS.map((pubkey) => - v2MultiSubscriber.forUser(pubkey) - ); - - // Subscribe all V1 subscribers - console.log('🔗 Subscribing V1 subscribers...'); - await Promise.all(v1Subscribers.map((sub) => sub.subscribe())); - console.log('✅ V1 subscribers ready'); - - // Subscribe all V2 subscribers - console.log('🔗 Subscribing V2 subscribers...'); - await v2MultiSubscriber.subscribe(); - console.log('✅ V2 subscribers ready'); - - const compare = () => { - try { - let passedTests = 0; - let totalTests = 0; - - // Test each user account - for (let i = 0; i < USER_ACCOUNT_PUBKEYS.length; i++) { - const pubkey = USER_ACCOUNT_PUBKEYS[i]; - const v1Sub = v1Subscribers[i]; - const v2Sub = v2Subscribers[i]; - - totalTests++; - - // 1. Test isSubscribed - assert.strictEqual( - v1Sub.isSubscribed, - v2Sub.isSubscribed, - `User ${pubkey.toBase58()}: isSubscribed should match` - ); - - // 2. Test getUserAccountAndSlot - const v1Data = v1Sub.getUserAccountAndSlot(); - const v2Data = v2Sub.getUserAccountAndSlot(); - - // Compare the user account data - assert.deepStrictEqual( - v1Data.data, - v2Data.data, - `User ${pubkey.toBase58()}: account data should match` - ); - - // Slots might differ slightly due to timing, but let's check if they're close - const slotDiff = Math.abs(v1Data.slot - v2Data.slot); - if (slotDiff > 10) { - console.warn( - `⚠️ User ${pubkey.toBase58()}: slot difference is ${slotDiff} (v1: ${v1Data.slot}, v2: ${v2Data.slot})` - ); - } - - passedTests++; - } - - console.log(`✅ All comparisons passed (${passedTests}/${totalTests} user accounts)`); - } catch (error) { - console.error('❌ Comparison failed:', error); - } - }; - - // Run initial comparison - compare(); - - // Run comparison every second to verify live updates - const interval = setInterval(compare, 1000); - - const cleanup = async () => { - clearInterval(interval); - console.log('🧹 Cleaning up...'); - await Promise.all([ - ...v1Subscribers.map((sub) => sub.unsubscribe()), - ...v2Subscribers.map((sub) => sub.unsubscribe()), - ]); - console.log('✅ Cleanup complete'); - process.exit(0); - }; - - process.on('SIGINT', cleanup); - process.on('SIGTERM', cleanup); - } - - testGrpcUserAccountSubscriberV1VsV2().catch(console.error); \ No newline at end of file + console.log('🚀 Initializing User Account Subscriber V1 vs V2 Test...'); + + if (USER_ACCOUNT_PUBKEYS.length === 0) { + console.error( + '❌ No user account public keys provided. Please add some to USER_ACCOUNT_PUBKEYS array.' + ); + process.exit(1); + } + + const connection = new Connection(RPC_ENDPOINT); + const wallet = new Wallet(new Keypair()); + + const programId = new PublicKey(DRIFT_PROGRAM_ID); + const provider = new AnchorProvider( + connection, + // @ts-ignore + wallet, + { + commitment: 'processed', + } + ); + + const program = new Program(driftIDL as Idl, programId, provider); + + const grpcConfigs = { + endpoint: GRPC_ENDPOINT, + token: TOKEN, + commitmentLevel: CommitmentLevel.PROCESSED, + channelOptions: { + grpcKeepAliveTimeout: 1_000, + grpcTcpKeepalive: 10_000, + }, + }; + + console.log(`📊 Testing ${USER_ACCOUNT_PUBKEYS.length} user accounts...`); + + // V1: Create individual subscribers for each user account + const v1Subscribers = USER_ACCOUNT_PUBKEYS.map( + (pubkey) => + new grpcUserAccountSubscriber(grpcConfigs, program, pubkey, { + logResubMessages: true, + }) + ); + + // V2: Create a single multi-subscriber and get per-user interfaces + const v2MultiSubscriber = new grpcMultiUserAccountSubscriber( + program, + grpcConfigs, + { logResubMessages: true } + ); + const v2Subscribers = USER_ACCOUNT_PUBKEYS.map((pubkey) => + v2MultiSubscriber.forUser(pubkey) + ); + + // Subscribe all V1 subscribers + console.log('🔗 Subscribing V1 subscribers...'); + await Promise.all(v1Subscribers.map((sub) => sub.subscribe())); + console.log('✅ V1 subscribers ready'); + + // Subscribe all V2 subscribers + console.log('🔗 Subscribing V2 subscribers...'); + await v2MultiSubscriber.subscribe(); + console.log('✅ V2 subscribers ready'); + + const compare = () => { + try { + let passedTests = 0; + let totalTests = 0; + + // Test each user account + for (let i = 0; i < USER_ACCOUNT_PUBKEYS.length; i++) { + const pubkey = USER_ACCOUNT_PUBKEYS[i]; + const v1Sub = v1Subscribers[i]; + const v2Sub = v2Subscribers[i]; + + totalTests++; + + // 1. Test isSubscribed + assert.strictEqual( + v1Sub.isSubscribed, + v2Sub.isSubscribed, + `User ${pubkey.toBase58()}: isSubscribed should match` + ); + + // 2. Test getUserAccountAndSlot + const v1Data = v1Sub.getUserAccountAndSlot(); + const v2Data = v2Sub.getUserAccountAndSlot(); + + // Compare the user account data + assert.deepStrictEqual( + v1Data.data, + v2Data.data, + `User ${pubkey.toBase58()}: account data should match` + ); + + // Slots might differ slightly due to timing, but let's check if they're close + const slotDiff = Math.abs(v1Data.slot - v2Data.slot); + if (slotDiff > 10) { + console.warn( + `⚠️ User ${pubkey.toBase58()}: slot difference is ${slotDiff} (v1: ${ + v1Data.slot + }, v2: ${v2Data.slot})` + ); + } + + passedTests++; + } + + console.log( + `✅ All comparisons passed (${passedTests}/${totalTests} user accounts)` + ); + } catch (error) { + console.error('❌ Comparison failed:', error); + } + }; + + // Run initial comparison + compare(); + + // Run comparison every second to verify live updates + const interval = setInterval(compare, 1000); + + const cleanup = async () => { + clearInterval(interval); + console.log('🧹 Cleaning up...'); + await Promise.all([ + ...v1Subscribers.map((sub) => sub.unsubscribe()), + ...v2Subscribers.map((sub) => sub.unsubscribe()), + ]); + console.log('✅ Cleanup complete'); + process.exit(0); + }; + + process.on('SIGINT', cleanup); + process.on('SIGTERM', cleanup); +} + +testGrpcUserAccountSubscriberV1VsV2().catch(console.error); diff --git a/sdk/scripts/single-grpc-client-test.ts b/sdk/scripts/single-grpc-client-test.ts index e6724e6615..5aa38dcfa3 100644 --- a/sdk/scripts/single-grpc-client-test.ts +++ b/sdk/scripts/single-grpc-client-test.ts @@ -94,18 +94,18 @@ async function initializeSingleGrpcClient() { } } - console.log(`📊 Markets: ${perpMarketIndexes.length} perp, ${spotMarketIndexes.length} spot`); + console.log( + `📊 Markets: ${perpMarketIndexes.length} perp, ${spotMarketIndexes.length} spot` + ); console.log(`🔮 Oracles: ${oracleInfos.length}`); - const grpcConfigs = { endpoint: GRPC_ENDPOINT, token: TOKEN, commitmentLevel: CommitmentLevel.PROCESSED, channelOptions: { - 'grpc.keepalive_time_ms': 10_000, - 'grpc.keepalive_timeout_ms': 1_000, - 'grpc.keepalive_permit_without_calls': 1, + grpcKeepAliveTimeout: 1_000, + grpcTcpKeepalive: 10_000, }, }; @@ -171,7 +171,9 @@ async function initializeSingleGrpcClient() { await client.subscribe(); console.log('✅ Client subscribed successfully!'); - console.log('🚀 Starting high-load testing (50 reads/sec per perp market)...'); + console.log( + '🚀 Starting high-load testing (50 reads/sec per perp market)...' + ); // High-frequency load testing - 50 reads per second per perp market const loadTestInterval = setInterval(async () => { @@ -179,25 +181,35 @@ async function initializeSingleGrpcClient() { // Test getPerpMarketAccount for each perp market (50 times per second per market) for (const marketIndex of perpMarketIndexes) { const perpMarketAccount = client.getPerpMarketAccount(marketIndex); - console.log("perpMarketAccount name: ", decodeName(perpMarketAccount.name)); - console.log("perpMarketAccount data: ", JSON.stringify({ - marketIndex: perpMarketAccount.marketIndex, - name: decodeName(perpMarketAccount.name), - baseAssetReserve: perpMarketAccount.amm.baseAssetReserve.toString(), - quoteAssetReserve: perpMarketAccount.amm.quoteAssetReserve.toString() - })); + console.log( + 'perpMarketAccount name: ', + decodeName(perpMarketAccount.name) + ); + console.log( + 'perpMarketAccount data: ', + JSON.stringify({ + marketIndex: perpMarketAccount.marketIndex, + name: decodeName(perpMarketAccount.name), + baseAssetReserve: perpMarketAccount.amm.baseAssetReserve.toString(), + quoteAssetReserve: + perpMarketAccount.amm.quoteAssetReserve.toString(), + }) + ); } // Test getMMOracleDataForPerpMarket for each perp market (50 times per second per market) for (const marketIndex of perpMarketIndexes) { try { const oracleData = client.getMMOracleDataForPerpMarket(marketIndex); - console.log("oracleData price: ", oracleData.price.toString()); - console.log("oracleData: ", JSON.stringify({ - price: oracleData.price.toString(), - confidence: oracleData.confidence?.toString(), - slot: oracleData.slot?.toString() - })); + console.log('oracleData price: ', oracleData.price.toString()); + console.log( + 'oracleData: ', + JSON.stringify({ + price: oracleData.price.toString(), + confidence: oracleData.confidence?.toString(), + slot: oracleData.slot?.toString(), + }) + ); } catch (error) { // Ignore errors for load testing } @@ -211,8 +223,14 @@ async function initializeSingleGrpcClient() { const statsInterval = setInterval(() => { console.log('\n📈 Event Counts:', eventCounts); console.log(`⏱️ Client subscribed: ${client.isSubscribed}`); - console.log(`🔗 Account subscriber subscribed: ${client.accountSubscriber.isSubscribed}`); - console.log(`🔥 Load: ${perpMarketIndexes.length * 50 * 2} reads/sec (${perpMarketIndexes.length} markets × 50 getPerpMarketAccount + 50 getMMOracleDataForPerpMarket)`); + console.log( + `🔗 Account subscriber subscribed: ${client.accountSubscriber.isSubscribed}` + ); + console.log( + `🔥 Load: ${perpMarketIndexes.length * 50 * 2} reads/sec (${ + perpMarketIndexes.length + } markets × 50 getPerpMarketAccount + 50 getMMOracleDataForPerpMarket)` + ); }, 5000); // Handle shutdown signals - just exit without cleanup since they never unsubscribe diff --git a/sdk/src/accounts/laserProgramAccountSubscriber.ts b/sdk/src/accounts/laserProgramAccountSubscriber.ts index a2315ad92f..04c9a418f8 100644 --- a/sdk/src/accounts/laserProgramAccountSubscriber.ts +++ b/sdk/src/accounts/laserProgramAccountSubscriber.ts @@ -1,4 +1,4 @@ -import { GrpcConfigs, ResubOpts } from './types'; +import { LaserGrpcConfigs, ResubOpts } from './types'; import { Program } from '@coral-xyz/anchor'; import { Context, MemcmpFilter, PublicKey } from '@solana/web3.js'; import * as Buffer from 'buffer'; @@ -56,7 +56,7 @@ export class LaserstreamProgramAccountSubscriber< } public static async create( - grpcConfigs: GrpcConfigs, + grpcConfigs: LaserGrpcConfigs, subscriptionName: string, accountDiscriminator: string, program: Program, @@ -66,14 +66,17 @@ export class LaserstreamProgramAccountSubscriber< }, resubOpts?: ResubOpts ): Promise> { + const channelOptions = { + 'grpc.default_compression_algorithm': CompressionAlgorithms.zstd, + 'grpc.max_receive_message_length': 1_000_000_000, + ...(grpcConfigs.channelOptions ?? {}), + }; + const laserConfig: LaserstreamConfig = { apiKey: grpcConfigs.token, endpoint: grpcConfigs.endpoint, maxReconnectAttempts: grpcConfigs.enableReconnect ? 10 : 0, - channelOptions: { - 'grpc.default_compression_algorithm': CompressionAlgorithms.zstd, - 'grpc.max_receive_message_length': 1_000_000_000, - }, + channelOptions, }; const commitmentLevel = diff --git a/sdk/src/accounts/types.ts b/sdk/src/accounts/types.ts index db9cf2112b..ac221f4f14 100644 --- a/sdk/src/accounts/types.ts +++ b/sdk/src/accounts/types.ts @@ -11,11 +11,11 @@ import { } from '../types'; import StrictEventEmitter from 'strict-event-emitter-types'; import { EventEmitter } from 'events'; -import { Context, PublicKey } from '@solana/web3.js'; +import { Commitment, Context, PublicKey } from '@solana/web3.js'; import { Account } from '@solana/spl-token'; import { OracleInfo, OraclePriceData } from '../oracles/types'; import { User } from '../user'; -import { ChannelOptions, CommitmentLevel } from '../isomorphic/grpc'; +import { Client, CommitmentLevel, LaserstreamConfig } from '../isomorphic/grpc'; export interface AccountSubscriber { dataAndSlot?: DataAndSlot; @@ -225,19 +225,29 @@ export interface UserStatsAccountSubscriber { getUserStatsAccountAndSlot(): DataAndSlot; } -export type GrpcConfigs = { +type BaseGrpcConfigs = { endpoint: string; token: string; commitmentLevel?: CommitmentLevel; - channelOptions?: ChannelOptions; /** * Whether to enable automatic reconnection on connection loss . * Defaults to false, will throw on connection loss. */ enableReconnect?: boolean; - client?: 'yellowstone' | 'laser'; }; +export type YellowstoneGrpcConfigs = BaseGrpcConfigs & { + client?: 'yellowstone'; + channelOptions?: ConstructorParameters[2]; +}; + +export type LaserGrpcConfigs = BaseGrpcConfigs & { + client: 'laser'; + channelOptions?: LaserstreamConfig['channelOptions']; +}; + +export type GrpcConfigs = YellowstoneGrpcConfigs | LaserGrpcConfigs; + export interface HighLeverageModeConfigAccountSubscriber { eventEmitter: StrictEventEmitter< EventEmitter, diff --git a/sdk/yarn.lock b/sdk/yarn.lock index c3c056568a..7c36e9eb04 100644 --- a/sdk/yarn.lock +++ b/sdk/yarn.lock @@ -1303,40 +1303,40 @@ buffer "^6.0.3" js-yaml "^4.1.0" -"@triton-one/yellowstone-grpc-napi-darwin-arm64@0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-darwin-arm64/-/yellowstone-grpc-napi-darwin-arm64-0.0.4.tgz#f69117e2d475cb80beef531339aac4c63acf3d2e" - integrity sha512-7Wfjj3Tg49IqfgAvN8hi95LAbU3Lf1BPCWQRhj40cTPxkM8Df4u4YlfqRT1BVl4j04gTN8YmkpIMY00T9pNNDg== - -"@triton-one/yellowstone-grpc-napi-darwin-x64@0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-darwin-x64/-/yellowstone-grpc-napi-darwin-x64-0.0.4.tgz#d79237368ca1672ad461edca35a2bc3f7975017c" - integrity sha512-e1SZYsXu80vENgdN5nglRPFRgZzmoIdkCIoouqvkfYdoBYZNDMPZxF1jHxXWaxjvGh2DfzmbeAVOx4ZYCPlIJA== - -"@triton-one/yellowstone-grpc-napi-linux-x64-gnu@0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-linux-x64-gnu/-/yellowstone-grpc-napi-linux-x64-gnu-0.0.4.tgz#3d3a1bd3b545f0c392b0862a0cbc53f1d9e45223" - integrity sha512-9MOznQrLK0IbdEdnEhKD7dhE95uyOFUu5qUi6DhFZM7XHVyxpStSxCUdd5sVsX620X4iALF7+309xabjZr4uhA== - -"@triton-one/yellowstone-grpc-napi-linux-x64-musl@0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-linux-x64-musl/-/yellowstone-grpc-napi-linux-x64-musl-0.0.4.tgz#cfc1af9eb8dc30f38bd23d052a73fc85b13d3465" - integrity sha512-5xnQ1nSmInbwIhv+sdazz8s1VqlBr06OmbE63y95k1Um/Fpi70X5su1NmTJucP2GbqonBKqycaIp+kMX05bpoA== - -"@triton-one/yellowstone-grpc@5.0.1-beta-12": - version "5.0.1-beta-12" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc/-/yellowstone-grpc-5.0.1-beta-12.tgz#03015393313a9d380e62f201d029c3d55789e2bd" - integrity sha512-FHI4BQeh1o6py9Q0D5uNHpyGjm/jYqiLtC82Gz1AHaLAgUZKMdfRenH1yuaI2pVih2wbQHz4Gf2ON/vbmEE9gA== +"@triton-one/yellowstone-grpc-napi-darwin-arm64@0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-darwin-arm64/-/yellowstone-grpc-napi-darwin-arm64-0.0.5.tgz#405ff2f3d2910ba254fab918471c4e563b3a5c14" + integrity sha512-UyxNkkBvLMOiR77s96q8OIi51mPE0YwSQT5wxPhOTvptFcfX8qbZbsqAWOnphUBtW8CoTQsAHrMz51PdCOqgEw== + +"@triton-one/yellowstone-grpc-napi-darwin-x64@0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-darwin-x64/-/yellowstone-grpc-napi-darwin-x64-0.0.5.tgz#00b046de7c6935015713005868eedbdcc08363a5" + integrity sha512-Lj5rR0T9wB3xeq76VtaJUHyaNstu0Mc2kwieAtHOigGfaCUvGwc5XgpbYcx5aVrUq4R8gGF9kM/9+n+GcqXxig== + +"@triton-one/yellowstone-grpc-napi-linux-x64-gnu@0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-linux-x64-gnu/-/yellowstone-grpc-napi-linux-x64-gnu-0.0.5.tgz#2b997f15d63904b9239734bd2b2d2df50ab8278a" + integrity sha512-Cx6ifzYSyaGn5uF0wN5dwwWS/wj6sDWIqZa8YRTuF6pP5pkjM78neoHNMr9taOrH5LRtwC1JSaSYyQw+inGq4g== + +"@triton-one/yellowstone-grpc-napi-linux-x64-musl@0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-linux-x64-musl/-/yellowstone-grpc-napi-linux-x64-musl-0.0.5.tgz#dc7bd421716157f8ca339b4075e881b6f5a9627b" + integrity sha512-lLb5sBVAoELgjrX57qcxe0FtJTtDaBxo4KOCQfuqqYgeEd1ooOhGeuYx2KO+zMbBXa8+8OD4mt4ZHcW5b/n9tg== + +"@triton-one/yellowstone-grpc@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc/-/yellowstone-grpc-5.0.1.tgz#c68a024c18d4e40817ff42504a996777d4ee4e34" + integrity sha512-8HADdlWlHPlNday+Ii54CmHjyUxX6DN6LvYUf9zOQv2EqomQPaiqkEQ9hW9MCMqGO0ZoEtt/59Ef6mBXptag1A== dependencies: "@bufbuild/protobuf" "=2.10.2" "@solana/addresses" "=5.1.0" "@solana/rpc-api" "=5.1.0" "@solana/rpc-types" "=5.1.0" optionalDependencies: - "@triton-one/yellowstone-grpc-napi-darwin-arm64" "0.0.4" - "@triton-one/yellowstone-grpc-napi-darwin-x64" "0.0.4" - "@triton-one/yellowstone-grpc-napi-linux-x64-gnu" "0.0.4" - "@triton-one/yellowstone-grpc-napi-linux-x64-musl" "0.0.4" + "@triton-one/yellowstone-grpc-napi-darwin-arm64" "0.0.5" + "@triton-one/yellowstone-grpc-napi-darwin-x64" "0.0.5" + "@triton-one/yellowstone-grpc-napi-linux-x64-gnu" "0.0.5" + "@triton-one/yellowstone-grpc-napi-linux-x64-musl" "0.0.5" "@ts-graphviz/adapter@^2.0.6": version "2.0.6" From 8b646559b8907588f3fea1e97da0642962200ff2 Mon Sep 17 00:00:00 2001 From: wphan <6348407+wphan@users.noreply.github.com> Date: Thu, 8 Jan 2026 04:56:37 -0800 Subject: [PATCH 08/51] v2.154.0 --- CHANGELOG.md | 22 ++++++++++++++++++++++ Cargo.lock | 2 +- programs/drift/Cargo.toml | 2 +- sdk/package.json | 2 +- sdk/src/idl/drift.json | 2 +- 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70089b8f8d..af614a7e43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Features +### Fixes + +### Breaking + +## [2.154.0] - 2026-01-08 + +### Features + - program: isolated positions [#1757](https://github.com/drift-labs/protocol-v2/pull/1757) - program: delete serum/openbook configs [#2066](https://github.com/drift-labs/protocol-v2/pull/2066) @@ -16,6 +24,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Breaking +## [2.153.0] - 2025-12-30 + +### Features + +- ui: save titan tx when quoted and reuse on swap by @cha-kos in [#2055](https://github.com/drift-labs/protocol-v2/pull/2055) +- feat: minified with esbuild by @LukasDeco in [#2056](https://github.com/drift-labs/protocol-v2/pull/2056) +- ui: fix falsely failing quotes from titan by @cha-kos in [#2058](https://github.com/drift-labs/protocol-v2/pull/2058) + +### Fixes + +- security patch: check feed id after pyth pull atomic update [84b5011](https://github.com/drift-labs/protocol-v2/commit/84b50116c15050c7d19608cd01745a8f7fc39b92) + +### Breaking + ## [2.152.0] - 2025-12-12 ### Features diff --git a/Cargo.lock b/Cargo.lock index ff6fb03c43..25dd6eb63e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -956,7 +956,7 @@ dependencies = [ [[package]] name = "drift" -version = "2.152.0" +version = "2.154.0" dependencies = [ "anchor-lang", "anchor-spl", diff --git a/programs/drift/Cargo.toml b/programs/drift/Cargo.toml index a677d4b74c..24db24bc22 100644 --- a/programs/drift/Cargo.toml +++ b/programs/drift/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drift" -version = "2.152.0" +version = "2.154.0" description = "Created with Anchor" edition = "2018" diff --git a/sdk/package.json b/sdk/package.json index 4d9b7ab417..85f1478151 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.153.0-beta.4", + "version": "2.154.0", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", diff --git a/sdk/src/idl/drift.json b/sdk/src/idl/drift.json index ae07109fda..4522d4efbf 100644 --- a/sdk/src/idl/drift.json +++ b/sdk/src/idl/drift.json @@ -1,5 +1,5 @@ { - "version": "2.152.0", + "version": "2.154.0", "name": "drift", "instructions": [ { From 2f2e106216978c3d65daf1e488b09b3a5d531e4d Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 Jan 2026 13:07:08 +0000 Subject: [PATCH 09/51] sdk: release v2.155.0-beta.0 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index a66ca3da5d..4bbc8cbdcd 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.153.0-beta.4 \ No newline at end of file +2.155.0-beta.0 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 85f1478151..300dba408f 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.154.0", + "version": "2.155.0-beta.0", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From 386f81f9e61788e9da13ca69c0dd64d85c1c6345 Mon Sep 17 00:00:00 2001 From: Jack Waller Date: Fri, 9 Jan 2026 11:09:10 +1100 Subject: [PATCH 10/51] chore: add changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70089b8f8d..368cd9bf47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,10 +11,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - program: isolated positions [#1757](https://github.com/drift-labs/protocol-v2/pull/1757) - program: delete serum/openbook configs [#2066](https://github.com/drift-labs/protocol-v2/pull/2066) +- sdk: update yellowstone-grpc to rust client [#2070](https://github.com/drift-labs/protocol-v2/pull/2070) ### Fixes ### Breaking +- sdk: `channelOptions` in the GrpcConfigs type has been updated to work with new grpc lib ## [2.152.0] - 2025-12-12 From 2001ba945fbdcd113b12fee2a950f7f5aa125155 Mon Sep 17 00:00:00 2001 From: Jack Waller Date: Mon, 12 Jan 2026 10:01:27 +1100 Subject: [PATCH 11/51] fix: lint --- sdk/src/accounts/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/src/accounts/types.ts b/sdk/src/accounts/types.ts index ac221f4f14..dd49a1f0bb 100644 --- a/sdk/src/accounts/types.ts +++ b/sdk/src/accounts/types.ts @@ -11,7 +11,7 @@ import { } from '../types'; import StrictEventEmitter from 'strict-event-emitter-types'; import { EventEmitter } from 'events'; -import { Commitment, Context, PublicKey } from '@solana/web3.js'; +import { Context, PublicKey } from '@solana/web3.js'; import { Account } from '@solana/spl-token'; import { OracleInfo, OraclePriceData } from '../oracles/types'; import { User } from '../user'; From 010b1cd94ffc0096ac003de1942de6ac99f1e6a4 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 11 Jan 2026 23:06:14 +0000 Subject: [PATCH 12/51] sdk: release v2.155.0-beta.1 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- sdk/yarn.lock | 173 ++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 172 insertions(+), 5 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index 4bbc8cbdcd..e8045db6dc 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.155.0-beta.0 \ No newline at end of file +2.155.0-beta.1 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 90817f1f9b..5ed699de66 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.155.0-beta.0", + "version": "2.155.0-beta.1", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", diff --git a/sdk/yarn.lock b/sdk/yarn.lock index e5e20621e6..90a07a9a32 100644 --- a/sdk/yarn.lock +++ b/sdk/yarn.lock @@ -41,6 +41,11 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" +"@bufbuild/protobuf@=2.10.2": + version "2.10.2" + resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.10.2.tgz#d7c063301f2a33095fc202f06bf3cce0c138dfcd" + integrity sha512-uFsRXwIGyu+r6AMdz+XijIIZJYpoWeYzILt5yZ2d3mCjQrWUTVpVD9WL/jZAbvp+Ed04rOhrsk7FiTcEDseB5A== + "@coral-xyz/anchor-30@npm:@coral-xyz/anchor@0.30.1": version "0.30.1" resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.1.tgz#17f3e9134c28cd0ea83574c6bab4e410bcecec5d" @@ -302,7 +307,7 @@ "@grpc/proto-loader" "^0.8.0" "@js-sdsl/ordered-map" "^4.4.2" -"@grpc/grpc-js@^1.8.0", "@grpc/grpc-js@^1.8.13": +"@grpc/grpc-js@^1.8.13": version "1.13.4" resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.13.4.tgz#922fbc496e229c5fa66802d2369bf181c1df1c5a" integrity sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg== @@ -731,6 +736,17 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" +"@solana/addresses@5.1.0", "@solana/addresses@=5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/addresses/-/addresses-5.1.0.tgz#9ee95bb4808a7147aaca40cb568dc401db96614e" + integrity sha512-X84qSZLgve9YeYsyxGI49WnfEre53tdFu4x9/4oULBgoj8d0A+P9VGLYzmRJ0YFYKRcZG7U4u3MQpI5uLZ1AsQ== + dependencies: + "@solana/assertions" "5.1.0" + "@solana/codecs-core" "5.1.0" + "@solana/codecs-strings" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/nominal-types" "5.1.0" + "@solana/assertions@2.3.0", "@solana/assertions@^2.1.1": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-2.3.0.tgz#f96f655088dea6fe9f79604da7615c745c64173b" @@ -738,6 +754,13 @@ dependencies: "@solana/errors" "2.3.0" +"@solana/assertions@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-5.1.0.tgz#7b0599a053d862e4e224214cfe4df0d111db0ab8" + integrity sha512-5But2wyxuvGXMIOnD0jBMQ9yq1QQF2LSK3IbIRSkAkXbD3DS6O2tRvKUHNhogd+BpkPyCGOQHBycezgnxmStlg== + dependencies: + "@solana/errors" "5.1.0" + "@solana/buffer-layout-utils@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" @@ -776,7 +799,14 @@ dependencies: "@solana/errors" "2.3.0" -"@solana/codecs-data-structures@2.0.0-preview.4", "@solana/codecs-data-structures@2.0.0-rc.1", "@solana/codecs-data-structures@2.3.0": +"@solana/codecs-core@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-5.1.0.tgz#2ac0cc56b1264898dbdaffa3e395f3f0557d9578" + integrity sha512-vDwi03mxWeWCS5Il6BCdNdifYdOoHVz97YOmbWGIt45b77Ivu5NUYeSD2+ccl6fSw8eYQ6QaqqKXMjbSfsXv4g== + dependencies: + "@solana/errors" "5.1.0" + +"@solana/codecs-data-structures@2.0.0-preview.4", "@solana/codecs-data-structures@2.0.0-rc.1", "@solana/codecs-data-structures@2.3.0", "@solana/codecs-data-structures@5.1.0": version "2.0.0-preview.4" resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.4.tgz#f8a2470982a9792334737ea64000ccbdff287247" integrity sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA== @@ -809,6 +839,14 @@ "@solana/codecs-core" "2.3.0" "@solana/errors" "2.3.0" +"@solana/codecs-numbers@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-5.1.0.tgz#2dfbff8c6f0964d12a097b5d24b7f6bb6041c20b" + integrity sha512-Ea5/9yjDNOrDZcI40UGzzi6Aq1JNsmzM4m5pOk6Xb3JRZ0YdKOv/MwuCqb6jRgzZ7SQjHhkfGL43kHLJA++bOw== + dependencies: + "@solana/codecs-core" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/codecs-strings@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz#e1d9167075b8c5b0b60849f8add69c0f24307018" @@ -827,6 +865,15 @@ "@solana/codecs-numbers" "2.3.0" "@solana/errors" "2.3.0" +"@solana/codecs-strings@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-5.1.0.tgz#1f2626c5d256d1153242bc6929c208e0962b8f6f" + integrity sha512-014xwl5T/3VnGW0gceizF47DUs5EURRtgGmbWIR5+Z32yxgQ6hT9Zl0atZbL268RHbUQ03/J8Ush1StQgy7sfQ== + dependencies: + "@solana/codecs-core" "5.1.0" + "@solana/codecs-numbers" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/codecs@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-rc.1.tgz#146dc5db58bd3c28e04b4c805e6096c2d2a0a875" @@ -849,7 +896,7 @@ "@solana/codecs-strings" "2.3.0" "@solana/options" "2.3.0" -"@solana/errors@2.0.0-preview.4", "@solana/errors@2.0.0-rc.1", "@solana/errors@2.3.0": +"@solana/errors@2.0.0-preview.4", "@solana/errors@2.0.0-rc.1", "@solana/errors@2.3.0", "@solana/errors@5.1.0": version "2.0.0-preview.4" resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.4.tgz#056ba76b6dd900dafa70117311bec3aef0f5250b" integrity sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA== @@ -867,6 +914,11 @@ resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-2.3.0.tgz#ac33815655e954bb78151446a571bc6c9fd9be28" integrity sha512-AgsPh3W3tE+nK3eEw/W9qiSfTGwLYEvl0rWaxHht/lRcuDVwfKRzeSa5G79eioWFFqr+pTtoCr3D3OLkwKz02Q== +"@solana/functional@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-5.1.0.tgz#efd4b338b001a603627ed01493262dfac67e7edc" + integrity sha512-R6jacWU0Gr+j49lTDp+FSECBolqw2Gq7JlC22rI0JkcxJiiAlp3G80v6zAYq0FkHzxZbjyR6//JYUXSwliem5g== + "@solana/instructions@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-2.3.0.tgz#ff25cbe545000a33fb3604d83f4e2b683de94ad3" @@ -875,6 +927,14 @@ "@solana/codecs-core" "2.3.0" "@solana/errors" "2.3.0" +"@solana/instructions@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-5.1.0.tgz#ea51bdbec9098bcd2ebfc63850eb8a68b0674d28" + integrity sha512-fkwpUwwqk5K14T/kZDnCrfeR0kww49HBx+BK8xdSeJx+bt4QTwAHa9YeOkGhGrHEFVEJEUf8FKoxxTzZzJZtKQ== + dependencies: + "@solana/codecs-core" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/keys@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-2.3.0.tgz#9d0b0ec09c2789a051b4df1945ed52631261186e" @@ -886,6 +946,17 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" +"@solana/keys@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-5.1.0.tgz#ddfb57d7273c147e4072334d34e55010233e508e" + integrity sha512-ma4zTTuSOmtTCvATHMfUGNTw0Vqah/6XPe1VmLc66ohwXMI3yqatX1FQPXgDZozr15SvLAesfs7/bgl2TRoe9w== + dependencies: + "@solana/assertions" "5.1.0" + "@solana/codecs-core" "5.1.0" + "@solana/codecs-strings" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/nominal-types" "5.1.0" + "@solana/kit@^2.1.1": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/kit/-/kit-2.3.0.tgz#92deb7c4883293617209aecac9a43d5e41ccf092" @@ -915,6 +986,11 @@ resolved "https://registry.yarnpkg.com/@solana/nominal-types/-/nominal-types-2.3.0.tgz#b67637241b4a45c756464e049c7a830880b6e944" integrity sha512-uKlMnlP4PWW5UTXlhKM8lcgIaNj8dvd8xO4Y9l+FVvh9RvW2TO0GwUO6JCo7JBzCB0PSqRJdWWaQ8pu1Ti/OkA== +"@solana/nominal-types@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/nominal-types/-/nominal-types-5.1.0.tgz#39f1efc19ce4f5429c02c01a518731f441ef98a1" + integrity sha512-+4Cm+SpK+D811i9giqv4Up93ZlmUcZfLDHkSH24F4in61+Y2TKA+XKuRtKhNytQMmqCfbvJZ9MHFaIeZw5g+Bg== + "@solana/options@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-rc.1.tgz#06924ba316dc85791fc46726a51403144a85fc4d" @@ -967,16 +1043,43 @@ "@solana/transaction-messages" "2.3.0" "@solana/transactions" "2.3.0" +"@solana/rpc-api@=5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-api/-/rpc-api-5.1.0.tgz#6da7bbea267eb8755bdf6c2f6eb6c945b3de9f95" + integrity sha512-eI1tY0i3gmih1C65gFECYbfPRpHEYqFp+9IKjpknZtYpQIe9BqBKSpfYpGiCAbKdN/TMadBNPOzdK15ewhkkvQ== + dependencies: + "@solana/addresses" "5.1.0" + "@solana/codecs-core" "5.1.0" + "@solana/codecs-strings" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/keys" "5.1.0" + "@solana/rpc-parsed-types" "5.1.0" + "@solana/rpc-spec" "5.1.0" + "@solana/rpc-transformers" "5.1.0" + "@solana/rpc-types" "5.1.0" + "@solana/transaction-messages" "5.1.0" + "@solana/transactions" "5.1.0" + "@solana/rpc-parsed-types@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-2.3.0.tgz#132b03f6b4c1b4688336ad48e76c2eea0d8c91d7" integrity sha512-B5pHzyEIbBJf9KHej+zdr5ZNAdSvu7WLU2lOUPh81KHdHQs6dEb310LGxcpCc7HVE8IEdO20AbckewDiAN6OCg== +"@solana/rpc-parsed-types@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-5.1.0.tgz#4881fecebdf006def3eeb71364275b2b0086b39b" + integrity sha512-ZJoXHNItALMNa1zmGrNnIh96RBlc9GpIqoaZkdE14mAQ7gWe7Oc0ejYavUeSCmcL0wZcvIFh50AsfVxrHr4+2Q== + "@solana/rpc-spec-types@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-2.3.0.tgz#010ea9de2f720e84bec2b93ca77ad3664b77235f" integrity sha512-xQsb65lahjr8Wc9dMtP7xa0ZmDS8dOE2ncYjlvfyw/h4mpdXTUdrSMi6RtFwX33/rGuztQ7Hwaid5xLNSLvsFQ== +"@solana/rpc-spec-types@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-5.1.0.tgz#4e2bcd7f8ca0bc5bd6d057fd5cebd39ee2309420" + integrity sha512-B8/WyjmHpC34vXtAmTpZyPwRCm7WwoSkmjBcBouaaY1uilJ9+Wp2nptbq2cJyWairOoMSoI7v5kvvnrJuquq4Q== + "@solana/rpc-spec@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-2.3.0.tgz#2b679eb750c0f9270da6d451ea1bdc2c7783eb42" @@ -985,6 +1088,14 @@ "@solana/errors" "2.3.0" "@solana/rpc-spec-types" "2.3.0" +"@solana/rpc-spec@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-5.1.0.tgz#e192f72345596c04a5144411011a9744517d0bf6" + integrity sha512-y8B6fUWA1EBKXUsNo6b9EiFcQPsaJREPLlcIDbo4b6TucQNwvl7FHfpf1VHJL64SkI/WE69i2WEkiOJYjmLO0A== + dependencies: + "@solana/errors" "5.1.0" + "@solana/rpc-spec-types" "5.1.0" + "@solana/rpc-subscriptions-api@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-2.3.0.tgz#e779b8ad10e89b2f4a4ccb0fcd1a722d8bdd7729" @@ -1046,6 +1157,17 @@ "@solana/rpc-spec-types" "2.3.0" "@solana/rpc-types" "2.3.0" +"@solana/rpc-transformers@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-transformers/-/rpc-transformers-5.1.0.tgz#919846a251a1bd3a380246184c37854ec9432285" + integrity sha512-6v93xi/ewGS/xEiSktNQ0bh0Uiv1/q9nR5oiFMn3BiAJRC+FdMRMxCjp6H+/Tua7wdhpClaPKrZYBQHoIp59tw== + dependencies: + "@solana/errors" "5.1.0" + "@solana/functional" "5.1.0" + "@solana/nominal-types" "5.1.0" + "@solana/rpc-spec-types" "5.1.0" + "@solana/rpc-types" "5.1.0" + "@solana/rpc-transport-http@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-transport-http/-/rpc-transport-http-2.3.0.tgz#581601b9579b2a7fed9e0cb6fbcb95b4186e5b49" @@ -1068,6 +1190,18 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" +"@solana/rpc-types@5.1.0", "@solana/rpc-types@=5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-types/-/rpc-types-5.1.0.tgz#f5aa0593e693729cd85867ddb0b1f3850fe7422b" + integrity sha512-Rnpt5BuHQvnULPNXUC/yRqB+7iPbon95CSCeyRvPj5tJ4fx2JibvX3s/UEoud5vC+kRjPi/R0BGJ8XFvd3eDWg== + dependencies: + "@solana/addresses" "5.1.0" + "@solana/codecs-core" "5.1.0" + "@solana/codecs-numbers" "5.1.0" + "@solana/codecs-strings" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/nominal-types" "5.1.0" + "@solana/rpc@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc/-/rpc-2.3.0.tgz#a65919520d14c122625fb887a2d72c95bf8691cf" @@ -1192,6 +1326,21 @@ "@solana/nominal-types" "2.3.0" "@solana/rpc-types" "2.3.0" +"@solana/transaction-messages@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/transaction-messages/-/transaction-messages-5.1.0.tgz#f40a784f0e699e31b5f1d53a061df54a34e7ef8e" + integrity sha512-9rNV2YJhd85WIMvnwa/vUY4xUw3ZTU17jP1KDo/fFZWk55a0ov0ATJJPyC5HAR1i6hT1cmJzGH/UHhnD9m/Q3w== + dependencies: + "@solana/addresses" "5.1.0" + "@solana/codecs-core" "5.1.0" + "@solana/codecs-data-structures" "5.1.0" + "@solana/codecs-numbers" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/functional" "5.1.0" + "@solana/instructions" "5.1.0" + "@solana/nominal-types" "5.1.0" + "@solana/rpc-types" "5.1.0" + "@solana/transactions@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-2.3.0.tgz#fc99f6ce6cc5706f2b8116bbf8a2f396c3ec3177" @@ -1210,6 +1359,24 @@ "@solana/rpc-types" "2.3.0" "@solana/transaction-messages" "2.3.0" +"@solana/transactions@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-5.1.0.tgz#75f6f49581daa1f7b41cec2daed7de52e311b586" + integrity sha512-06JwSPtz+38ozNgpysAXS2eTMPQCufIisXB6K88X8J4GF8ziqs4nkq0BpXAXn+MpZTkuMt+JeW2RxP3HKhXe5g== + dependencies: + "@solana/addresses" "5.1.0" + "@solana/codecs-core" "5.1.0" + "@solana/codecs-data-structures" "5.1.0" + "@solana/codecs-numbers" "5.1.0" + "@solana/codecs-strings" "5.1.0" + "@solana/errors" "5.1.0" + "@solana/functional" "5.1.0" + "@solana/instructions" "5.1.0" + "@solana/keys" "5.1.0" + "@solana/nominal-types" "5.1.0" + "@solana/rpc-types" "5.1.0" + "@solana/transaction-messages" "5.1.0" + "@solana/web3.js@1.98.0", "@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.30.2", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.77.3", "@solana/web3.js@^1.90.0", "@solana/web3.js@^1.98.0", "@solana/web3.js@^1.98.2", "@solana/web3.js@~1.77.3": version "1.98.0" resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.0.tgz#21ecfe8198c10831df6f0cfde7f68370d0405917" From e1dbad47fb03bc10cc15bc2b6bb60f5df477bb04 Mon Sep 17 00:00:00 2001 From: jack Date: Tue, 13 Jan 2026 11:57:29 +1100 Subject: [PATCH 13/51] Revert "Jack/updated triton grpc" --- CHANGELOG.md | 2 - sdk/package.json | 2 +- sdk/scripts/grpc-client-test-comparison.ts | 5 +- .../grpc-multiuser-client-test-comparison.ts | 278 +++++++++--------- sdk/scripts/single-grpc-client-test.ts | 60 ++-- .../accounts/laserProgramAccountSubscriber.ts | 15 +- sdk/src/accounts/types.ts | 18 +- sdk/yarn.lock | 38 +-- 8 files changed, 178 insertions(+), 240 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59ea038b76..af614a7e43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,12 +19,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - program: isolated positions [#1757](https://github.com/drift-labs/protocol-v2/pull/1757) - program: delete serum/openbook configs [#2066](https://github.com/drift-labs/protocol-v2/pull/2066) -- sdk: update yellowstone-grpc to rust client [#2070](https://github.com/drift-labs/protocol-v2/pull/2070) ### Fixes ### Breaking -- sdk: `channelOptions` in the GrpcConfigs type has been updated to work with new grpc lib ## [2.153.0] - 2025-12-30 diff --git a/sdk/package.json b/sdk/package.json index 5ed699de66..3c1d7500f1 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -56,7 +56,7 @@ "@solana/web3.js": "1.98.0", "@switchboard-xyz/common": "3.0.14", "@switchboard-xyz/on-demand": "2.4.1", - "@triton-one/yellowstone-grpc": "5.0.1", + "@triton-one/yellowstone-grpc": "1.4.1", "anchor-bankrun": "0.3.0", "gill": "^0.10.2", "helius-laserstream": "0.1.8", diff --git a/sdk/scripts/grpc-client-test-comparison.ts b/sdk/scripts/grpc-client-test-comparison.ts index 06203b5edd..c2d7c7947f 100644 --- a/sdk/scripts/grpc-client-test-comparison.ts +++ b/sdk/scripts/grpc-client-test-comparison.ts @@ -96,8 +96,9 @@ async function initializeGrpcDriftClientV2VersusV1() { token: TOKEN, commitmentLevel: CommitmentLevel.PROCESSED, channelOptions: { - grpcKeepAliveTimeout: 1_000, - grpcTcpKeepalive: 10_000, + 'grpc.keepalive_time_ms': 10_000, + 'grpc.keepalive_timeout_ms': 1_000, + 'grpc.keepalive_permit_without_calls': 1, }, }, }; diff --git a/sdk/scripts/grpc-multiuser-client-test-comparison.ts b/sdk/scripts/grpc-multiuser-client-test-comparison.ts index ed9e350801..7c1ec78c0b 100644 --- a/sdk/scripts/grpc-multiuser-client-test-comparison.ts +++ b/sdk/scripts/grpc-multiuser-client-test-comparison.ts @@ -13,146 +13,144 @@ const TOKEN = process.env.TOKEN; const RPC_ENDPOINT = process.env.RPC_ENDPOINT; const USER_ACCOUNT_PUBKEYS = [ - // Add user account public keys here, e.g.: - // new PublicKey('...') + // Add user account public keys here, e.g.: + // new PublicKey('...') ]; async function testGrpcUserAccountSubscriberV1VsV2() { - console.log('🚀 Initializing User Account Subscriber V1 vs V2 Test...'); - - if (USER_ACCOUNT_PUBKEYS.length === 0) { - console.error( - '❌ No user account public keys provided. Please add some to USER_ACCOUNT_PUBKEYS array.' - ); - process.exit(1); - } - - const connection = new Connection(RPC_ENDPOINT); - const wallet = new Wallet(new Keypair()); - - const programId = new PublicKey(DRIFT_PROGRAM_ID); - const provider = new AnchorProvider( - connection, - // @ts-ignore - wallet, - { - commitment: 'processed', - } - ); - - const program = new Program(driftIDL as Idl, programId, provider); - - const grpcConfigs = { - endpoint: GRPC_ENDPOINT, - token: TOKEN, - commitmentLevel: CommitmentLevel.PROCESSED, - channelOptions: { - grpcKeepAliveTimeout: 1_000, - grpcTcpKeepalive: 10_000, - }, - }; - - console.log(`📊 Testing ${USER_ACCOUNT_PUBKEYS.length} user accounts...`); - - // V1: Create individual subscribers for each user account - const v1Subscribers = USER_ACCOUNT_PUBKEYS.map( - (pubkey) => - new grpcUserAccountSubscriber(grpcConfigs, program, pubkey, { - logResubMessages: true, - }) - ); - - // V2: Create a single multi-subscriber and get per-user interfaces - const v2MultiSubscriber = new grpcMultiUserAccountSubscriber( - program, - grpcConfigs, - { logResubMessages: true } - ); - const v2Subscribers = USER_ACCOUNT_PUBKEYS.map((pubkey) => - v2MultiSubscriber.forUser(pubkey) - ); - - // Subscribe all V1 subscribers - console.log('🔗 Subscribing V1 subscribers...'); - await Promise.all(v1Subscribers.map((sub) => sub.subscribe())); - console.log('✅ V1 subscribers ready'); - - // Subscribe all V2 subscribers - console.log('🔗 Subscribing V2 subscribers...'); - await v2MultiSubscriber.subscribe(); - console.log('✅ V2 subscribers ready'); - - const compare = () => { - try { - let passedTests = 0; - let totalTests = 0; - - // Test each user account - for (let i = 0; i < USER_ACCOUNT_PUBKEYS.length; i++) { - const pubkey = USER_ACCOUNT_PUBKEYS[i]; - const v1Sub = v1Subscribers[i]; - const v2Sub = v2Subscribers[i]; - - totalTests++; - - // 1. Test isSubscribed - assert.strictEqual( - v1Sub.isSubscribed, - v2Sub.isSubscribed, - `User ${pubkey.toBase58()}: isSubscribed should match` - ); - - // 2. Test getUserAccountAndSlot - const v1Data = v1Sub.getUserAccountAndSlot(); - const v2Data = v2Sub.getUserAccountAndSlot(); - - // Compare the user account data - assert.deepStrictEqual( - v1Data.data, - v2Data.data, - `User ${pubkey.toBase58()}: account data should match` - ); - - // Slots might differ slightly due to timing, but let's check if they're close - const slotDiff = Math.abs(v1Data.slot - v2Data.slot); - if (slotDiff > 10) { - console.warn( - `⚠️ User ${pubkey.toBase58()}: slot difference is ${slotDiff} (v1: ${ - v1Data.slot - }, v2: ${v2Data.slot})` - ); - } - - passedTests++; - } - - console.log( - `✅ All comparisons passed (${passedTests}/${totalTests} user accounts)` - ); - } catch (error) { - console.error('❌ Comparison failed:', error); - } - }; - - // Run initial comparison - compare(); - - // Run comparison every second to verify live updates - const interval = setInterval(compare, 1000); - - const cleanup = async () => { - clearInterval(interval); - console.log('🧹 Cleaning up...'); - await Promise.all([ - ...v1Subscribers.map((sub) => sub.unsubscribe()), - ...v2Subscribers.map((sub) => sub.unsubscribe()), - ]); - console.log('✅ Cleanup complete'); - process.exit(0); - }; - - process.on('SIGINT', cleanup); - process.on('SIGTERM', cleanup); -} - -testGrpcUserAccountSubscriberV1VsV2().catch(console.error); + console.log('🚀 Initializing User Account Subscriber V1 vs V2 Test...'); + + if (USER_ACCOUNT_PUBKEYS.length === 0) { + console.error('❌ No user account public keys provided. Please add some to USER_ACCOUNT_PUBKEYS array.'); + process.exit(1); + } + + const connection = new Connection(RPC_ENDPOINT); + const wallet = new Wallet(new Keypair()); + + const programId = new PublicKey(DRIFT_PROGRAM_ID); + const provider = new AnchorProvider( + connection, + // @ts-ignore + wallet, + { + commitment: 'processed', + } + ); + + const program = new Program(driftIDL as Idl, programId, provider); + + const grpcConfigs = { + endpoint: GRPC_ENDPOINT, + token: TOKEN, + commitmentLevel: CommitmentLevel.PROCESSED, + channelOptions: { + 'grpc.keepalive_time_ms': 10_000, + 'grpc.keepalive_timeout_ms': 1_000, + 'grpc.keepalive_permit_without_calls': 1, + }, + }; + + console.log(`📊 Testing ${USER_ACCOUNT_PUBKEYS.length} user accounts...`); + + // V1: Create individual subscribers for each user account + const v1Subscribers = USER_ACCOUNT_PUBKEYS.map( + (pubkey) => + new grpcUserAccountSubscriber( + grpcConfigs, + program, + pubkey, + { logResubMessages: true } + ) + ); + + // V2: Create a single multi-subscriber and get per-user interfaces + const v2MultiSubscriber = new grpcMultiUserAccountSubscriber( + program, + grpcConfigs, + { logResubMessages: true } + ); + const v2Subscribers = USER_ACCOUNT_PUBKEYS.map((pubkey) => + v2MultiSubscriber.forUser(pubkey) + ); + + // Subscribe all V1 subscribers + console.log('🔗 Subscribing V1 subscribers...'); + await Promise.all(v1Subscribers.map((sub) => sub.subscribe())); + console.log('✅ V1 subscribers ready'); + + // Subscribe all V2 subscribers + console.log('🔗 Subscribing V2 subscribers...'); + await v2MultiSubscriber.subscribe(); + console.log('✅ V2 subscribers ready'); + + const compare = () => { + try { + let passedTests = 0; + let totalTests = 0; + + // Test each user account + for (let i = 0; i < USER_ACCOUNT_PUBKEYS.length; i++) { + const pubkey = USER_ACCOUNT_PUBKEYS[i]; + const v1Sub = v1Subscribers[i]; + const v2Sub = v2Subscribers[i]; + + totalTests++; + + // 1. Test isSubscribed + assert.strictEqual( + v1Sub.isSubscribed, + v2Sub.isSubscribed, + `User ${pubkey.toBase58()}: isSubscribed should match` + ); + + // 2. Test getUserAccountAndSlot + const v1Data = v1Sub.getUserAccountAndSlot(); + const v2Data = v2Sub.getUserAccountAndSlot(); + + // Compare the user account data + assert.deepStrictEqual( + v1Data.data, + v2Data.data, + `User ${pubkey.toBase58()}: account data should match` + ); + + // Slots might differ slightly due to timing, but let's check if they're close + const slotDiff = Math.abs(v1Data.slot - v2Data.slot); + if (slotDiff > 10) { + console.warn( + `⚠️ User ${pubkey.toBase58()}: slot difference is ${slotDiff} (v1: ${v1Data.slot}, v2: ${v2Data.slot})` + ); + } + + passedTests++; + } + + console.log(`✅ All comparisons passed (${passedTests}/${totalTests} user accounts)`); + } catch (error) { + console.error('❌ Comparison failed:', error); + } + }; + + // Run initial comparison + compare(); + + // Run comparison every second to verify live updates + const interval = setInterval(compare, 1000); + + const cleanup = async () => { + clearInterval(interval); + console.log('🧹 Cleaning up...'); + await Promise.all([ + ...v1Subscribers.map((sub) => sub.unsubscribe()), + ...v2Subscribers.map((sub) => sub.unsubscribe()), + ]); + console.log('✅ Cleanup complete'); + process.exit(0); + }; + + process.on('SIGINT', cleanup); + process.on('SIGTERM', cleanup); + } + + testGrpcUserAccountSubscriberV1VsV2().catch(console.error); \ No newline at end of file diff --git a/sdk/scripts/single-grpc-client-test.ts b/sdk/scripts/single-grpc-client-test.ts index 5aa38dcfa3..e6724e6615 100644 --- a/sdk/scripts/single-grpc-client-test.ts +++ b/sdk/scripts/single-grpc-client-test.ts @@ -94,18 +94,18 @@ async function initializeSingleGrpcClient() { } } - console.log( - `📊 Markets: ${perpMarketIndexes.length} perp, ${spotMarketIndexes.length} spot` - ); + console.log(`📊 Markets: ${perpMarketIndexes.length} perp, ${spotMarketIndexes.length} spot`); console.log(`🔮 Oracles: ${oracleInfos.length}`); + const grpcConfigs = { endpoint: GRPC_ENDPOINT, token: TOKEN, commitmentLevel: CommitmentLevel.PROCESSED, channelOptions: { - grpcKeepAliveTimeout: 1_000, - grpcTcpKeepalive: 10_000, + 'grpc.keepalive_time_ms': 10_000, + 'grpc.keepalive_timeout_ms': 1_000, + 'grpc.keepalive_permit_without_calls': 1, }, }; @@ -171,9 +171,7 @@ async function initializeSingleGrpcClient() { await client.subscribe(); console.log('✅ Client subscribed successfully!'); - console.log( - '🚀 Starting high-load testing (50 reads/sec per perp market)...' - ); + console.log('🚀 Starting high-load testing (50 reads/sec per perp market)...'); // High-frequency load testing - 50 reads per second per perp market const loadTestInterval = setInterval(async () => { @@ -181,35 +179,25 @@ async function initializeSingleGrpcClient() { // Test getPerpMarketAccount for each perp market (50 times per second per market) for (const marketIndex of perpMarketIndexes) { const perpMarketAccount = client.getPerpMarketAccount(marketIndex); - console.log( - 'perpMarketAccount name: ', - decodeName(perpMarketAccount.name) - ); - console.log( - 'perpMarketAccount data: ', - JSON.stringify({ - marketIndex: perpMarketAccount.marketIndex, - name: decodeName(perpMarketAccount.name), - baseAssetReserve: perpMarketAccount.amm.baseAssetReserve.toString(), - quoteAssetReserve: - perpMarketAccount.amm.quoteAssetReserve.toString(), - }) - ); + console.log("perpMarketAccount name: ", decodeName(perpMarketAccount.name)); + console.log("perpMarketAccount data: ", JSON.stringify({ + marketIndex: perpMarketAccount.marketIndex, + name: decodeName(perpMarketAccount.name), + baseAssetReserve: perpMarketAccount.amm.baseAssetReserve.toString(), + quoteAssetReserve: perpMarketAccount.amm.quoteAssetReserve.toString() + })); } // Test getMMOracleDataForPerpMarket for each perp market (50 times per second per market) for (const marketIndex of perpMarketIndexes) { try { const oracleData = client.getMMOracleDataForPerpMarket(marketIndex); - console.log('oracleData price: ', oracleData.price.toString()); - console.log( - 'oracleData: ', - JSON.stringify({ - price: oracleData.price.toString(), - confidence: oracleData.confidence?.toString(), - slot: oracleData.slot?.toString(), - }) - ); + console.log("oracleData price: ", oracleData.price.toString()); + console.log("oracleData: ", JSON.stringify({ + price: oracleData.price.toString(), + confidence: oracleData.confidence?.toString(), + slot: oracleData.slot?.toString() + })); } catch (error) { // Ignore errors for load testing } @@ -223,14 +211,8 @@ async function initializeSingleGrpcClient() { const statsInterval = setInterval(() => { console.log('\n📈 Event Counts:', eventCounts); console.log(`⏱️ Client subscribed: ${client.isSubscribed}`); - console.log( - `🔗 Account subscriber subscribed: ${client.accountSubscriber.isSubscribed}` - ); - console.log( - `🔥 Load: ${perpMarketIndexes.length * 50 * 2} reads/sec (${ - perpMarketIndexes.length - } markets × 50 getPerpMarketAccount + 50 getMMOracleDataForPerpMarket)` - ); + console.log(`🔗 Account subscriber subscribed: ${client.accountSubscriber.isSubscribed}`); + console.log(`🔥 Load: ${perpMarketIndexes.length * 50 * 2} reads/sec (${perpMarketIndexes.length} markets × 50 getPerpMarketAccount + 50 getMMOracleDataForPerpMarket)`); }, 5000); // Handle shutdown signals - just exit without cleanup since they never unsubscribe diff --git a/sdk/src/accounts/laserProgramAccountSubscriber.ts b/sdk/src/accounts/laserProgramAccountSubscriber.ts index 04c9a418f8..a2315ad92f 100644 --- a/sdk/src/accounts/laserProgramAccountSubscriber.ts +++ b/sdk/src/accounts/laserProgramAccountSubscriber.ts @@ -1,4 +1,4 @@ -import { LaserGrpcConfigs, ResubOpts } from './types'; +import { GrpcConfigs, ResubOpts } from './types'; import { Program } from '@coral-xyz/anchor'; import { Context, MemcmpFilter, PublicKey } from '@solana/web3.js'; import * as Buffer from 'buffer'; @@ -56,7 +56,7 @@ export class LaserstreamProgramAccountSubscriber< } public static async create( - grpcConfigs: LaserGrpcConfigs, + grpcConfigs: GrpcConfigs, subscriptionName: string, accountDiscriminator: string, program: Program, @@ -66,17 +66,14 @@ export class LaserstreamProgramAccountSubscriber< }, resubOpts?: ResubOpts ): Promise> { - const channelOptions = { - 'grpc.default_compression_algorithm': CompressionAlgorithms.zstd, - 'grpc.max_receive_message_length': 1_000_000_000, - ...(grpcConfigs.channelOptions ?? {}), - }; - const laserConfig: LaserstreamConfig = { apiKey: grpcConfigs.token, endpoint: grpcConfigs.endpoint, maxReconnectAttempts: grpcConfigs.enableReconnect ? 10 : 0, - channelOptions, + channelOptions: { + 'grpc.default_compression_algorithm': CompressionAlgorithms.zstd, + 'grpc.max_receive_message_length': 1_000_000_000, + }, }; const commitmentLevel = diff --git a/sdk/src/accounts/types.ts b/sdk/src/accounts/types.ts index dd49a1f0bb..db9cf2112b 100644 --- a/sdk/src/accounts/types.ts +++ b/sdk/src/accounts/types.ts @@ -15,7 +15,7 @@ import { Context, PublicKey } from '@solana/web3.js'; import { Account } from '@solana/spl-token'; import { OracleInfo, OraclePriceData } from '../oracles/types'; import { User } from '../user'; -import { Client, CommitmentLevel, LaserstreamConfig } from '../isomorphic/grpc'; +import { ChannelOptions, CommitmentLevel } from '../isomorphic/grpc'; export interface AccountSubscriber { dataAndSlot?: DataAndSlot; @@ -225,29 +225,19 @@ export interface UserStatsAccountSubscriber { getUserStatsAccountAndSlot(): DataAndSlot; } -type BaseGrpcConfigs = { +export type GrpcConfigs = { endpoint: string; token: string; commitmentLevel?: CommitmentLevel; + channelOptions?: ChannelOptions; /** * Whether to enable automatic reconnection on connection loss . * Defaults to false, will throw on connection loss. */ enableReconnect?: boolean; + client?: 'yellowstone' | 'laser'; }; -export type YellowstoneGrpcConfigs = BaseGrpcConfigs & { - client?: 'yellowstone'; - channelOptions?: ConstructorParameters[2]; -}; - -export type LaserGrpcConfigs = BaseGrpcConfigs & { - client: 'laser'; - channelOptions?: LaserstreamConfig['channelOptions']; -}; - -export type GrpcConfigs = YellowstoneGrpcConfigs | LaserGrpcConfigs; - export interface HighLeverageModeConfigAccountSubscriber { eventEmitter: StrictEventEmitter< EventEmitter, diff --git a/sdk/yarn.lock b/sdk/yarn.lock index 90a07a9a32..f2cd71b780 100644 --- a/sdk/yarn.lock +++ b/sdk/yarn.lock @@ -1451,40 +1451,12 @@ buffer "^6.0.3" js-yaml "^4.1.0" -"@triton-one/yellowstone-grpc-napi-darwin-arm64@0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-darwin-arm64/-/yellowstone-grpc-napi-darwin-arm64-0.0.5.tgz#405ff2f3d2910ba254fab918471c4e563b3a5c14" - integrity sha512-UyxNkkBvLMOiR77s96q8OIi51mPE0YwSQT5wxPhOTvptFcfX8qbZbsqAWOnphUBtW8CoTQsAHrMz51PdCOqgEw== - -"@triton-one/yellowstone-grpc-napi-darwin-x64@0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-darwin-x64/-/yellowstone-grpc-napi-darwin-x64-0.0.5.tgz#00b046de7c6935015713005868eedbdcc08363a5" - integrity sha512-Lj5rR0T9wB3xeq76VtaJUHyaNstu0Mc2kwieAtHOigGfaCUvGwc5XgpbYcx5aVrUq4R8gGF9kM/9+n+GcqXxig== - -"@triton-one/yellowstone-grpc-napi-linux-x64-gnu@0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-linux-x64-gnu/-/yellowstone-grpc-napi-linux-x64-gnu-0.0.5.tgz#2b997f15d63904b9239734bd2b2d2df50ab8278a" - integrity sha512-Cx6ifzYSyaGn5uF0wN5dwwWS/wj6sDWIqZa8YRTuF6pP5pkjM78neoHNMr9taOrH5LRtwC1JSaSYyQw+inGq4g== - -"@triton-one/yellowstone-grpc-napi-linux-x64-musl@0.0.5": - version "0.0.5" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc-napi-linux-x64-musl/-/yellowstone-grpc-napi-linux-x64-musl-0.0.5.tgz#dc7bd421716157f8ca339b4075e881b6f5a9627b" - integrity sha512-lLb5sBVAoELgjrX57qcxe0FtJTtDaBxo4KOCQfuqqYgeEd1ooOhGeuYx2KO+zMbBXa8+8OD4mt4ZHcW5b/n9tg== - -"@triton-one/yellowstone-grpc@5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc/-/yellowstone-grpc-5.0.1.tgz#c68a024c18d4e40817ff42504a996777d4ee4e34" - integrity sha512-8HADdlWlHPlNday+Ii54CmHjyUxX6DN6LvYUf9zOQv2EqomQPaiqkEQ9hW9MCMqGO0ZoEtt/59Ef6mBXptag1A== +"@triton-one/yellowstone-grpc@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc/-/yellowstone-grpc-1.4.1.tgz#b50434f68c3d73c6ce3e1f225656064c080f4b25" + integrity sha512-ZN49vooxFbOqWttll8u7AOsIVnX+srqX9ddhZ9ttE+OcehUo8c2p2suK8Gr2puab49cgsV0VGjiTn9Gua/ntIw== dependencies: - "@bufbuild/protobuf" "=2.10.2" - "@solana/addresses" "=5.1.0" - "@solana/rpc-api" "=5.1.0" - "@solana/rpc-types" "=5.1.0" - optionalDependencies: - "@triton-one/yellowstone-grpc-napi-darwin-arm64" "0.0.5" - "@triton-one/yellowstone-grpc-napi-darwin-x64" "0.0.5" - "@triton-one/yellowstone-grpc-napi-linux-x64-gnu" "0.0.5" - "@triton-one/yellowstone-grpc-napi-linux-x64-musl" "0.0.5" + "@grpc/grpc-js" "^1.8.0" "@ts-graphviz/adapter@^2.0.6": version "2.0.6" From 1bce5961752c760e8fcc25c2363611431b866d72 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 13 Jan 2026 01:03:08 +0000 Subject: [PATCH 14/51] sdk: release v2.155.0-beta.2 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- sdk/yarn.lock | 179 +++-------------------------------------------- 3 files changed, 12 insertions(+), 171 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index e8045db6dc..35d196bb38 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.155.0-beta.1 \ No newline at end of file +2.155.0-beta.2 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 3c1d7500f1..e230f4a403 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.155.0-beta.1", + "version": "2.155.0-beta.2", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", diff --git a/sdk/yarn.lock b/sdk/yarn.lock index f2cd71b780..8f438b3526 100644 --- a/sdk/yarn.lock +++ b/sdk/yarn.lock @@ -41,11 +41,6 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" -"@bufbuild/protobuf@=2.10.2": - version "2.10.2" - resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.10.2.tgz#d7c063301f2a33095fc202f06bf3cce0c138dfcd" - integrity sha512-uFsRXwIGyu+r6AMdz+XijIIZJYpoWeYzILt5yZ2d3mCjQrWUTVpVD9WL/jZAbvp+Ed04rOhrsk7FiTcEDseB5A== - "@coral-xyz/anchor-30@npm:@coral-xyz/anchor@0.30.1": version "0.30.1" resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.1.tgz#17f3e9134c28cd0ea83574c6bab4e410bcecec5d" @@ -307,6 +302,14 @@ "@grpc/proto-loader" "^0.8.0" "@js-sdsl/ordered-map" "^4.4.2" +"@grpc/grpc-js@^1.8.0": + version "1.14.3" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.14.3.tgz#4c9b817a900ae4020ddc28515ae4b52c78cfb8da" + integrity sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA== + dependencies: + "@grpc/proto-loader" "^0.8.0" + "@js-sdsl/ordered-map" "^4.4.2" + "@grpc/grpc-js@^1.8.13": version "1.13.4" resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.13.4.tgz#922fbc496e229c5fa66802d2369bf181c1df1c5a" @@ -736,17 +739,6 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" -"@solana/addresses@5.1.0", "@solana/addresses@=5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/addresses/-/addresses-5.1.0.tgz#9ee95bb4808a7147aaca40cb568dc401db96614e" - integrity sha512-X84qSZLgve9YeYsyxGI49WnfEre53tdFu4x9/4oULBgoj8d0A+P9VGLYzmRJ0YFYKRcZG7U4u3MQpI5uLZ1AsQ== - dependencies: - "@solana/assertions" "5.1.0" - "@solana/codecs-core" "5.1.0" - "@solana/codecs-strings" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/nominal-types" "5.1.0" - "@solana/assertions@2.3.0", "@solana/assertions@^2.1.1": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-2.3.0.tgz#f96f655088dea6fe9f79604da7615c745c64173b" @@ -754,13 +746,6 @@ dependencies: "@solana/errors" "2.3.0" -"@solana/assertions@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-5.1.0.tgz#7b0599a053d862e4e224214cfe4df0d111db0ab8" - integrity sha512-5But2wyxuvGXMIOnD0jBMQ9yq1QQF2LSK3IbIRSkAkXbD3DS6O2tRvKUHNhogd+BpkPyCGOQHBycezgnxmStlg== - dependencies: - "@solana/errors" "5.1.0" - "@solana/buffer-layout-utils@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" @@ -799,14 +784,7 @@ dependencies: "@solana/errors" "2.3.0" -"@solana/codecs-core@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-5.1.0.tgz#2ac0cc56b1264898dbdaffa3e395f3f0557d9578" - integrity sha512-vDwi03mxWeWCS5Il6BCdNdifYdOoHVz97YOmbWGIt45b77Ivu5NUYeSD2+ccl6fSw8eYQ6QaqqKXMjbSfsXv4g== - dependencies: - "@solana/errors" "5.1.0" - -"@solana/codecs-data-structures@2.0.0-preview.4", "@solana/codecs-data-structures@2.0.0-rc.1", "@solana/codecs-data-structures@2.3.0", "@solana/codecs-data-structures@5.1.0": +"@solana/codecs-data-structures@2.0.0-preview.4", "@solana/codecs-data-structures@2.0.0-rc.1", "@solana/codecs-data-structures@2.3.0": version "2.0.0-preview.4" resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.4.tgz#f8a2470982a9792334737ea64000ccbdff287247" integrity sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA== @@ -839,14 +817,6 @@ "@solana/codecs-core" "2.3.0" "@solana/errors" "2.3.0" -"@solana/codecs-numbers@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-5.1.0.tgz#2dfbff8c6f0964d12a097b5d24b7f6bb6041c20b" - integrity sha512-Ea5/9yjDNOrDZcI40UGzzi6Aq1JNsmzM4m5pOk6Xb3JRZ0YdKOv/MwuCqb6jRgzZ7SQjHhkfGL43kHLJA++bOw== - dependencies: - "@solana/codecs-core" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/codecs-strings@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz#e1d9167075b8c5b0b60849f8add69c0f24307018" @@ -865,15 +835,6 @@ "@solana/codecs-numbers" "2.3.0" "@solana/errors" "2.3.0" -"@solana/codecs-strings@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-5.1.0.tgz#1f2626c5d256d1153242bc6929c208e0962b8f6f" - integrity sha512-014xwl5T/3VnGW0gceizF47DUs5EURRtgGmbWIR5+Z32yxgQ6hT9Zl0atZbL268RHbUQ03/J8Ush1StQgy7sfQ== - dependencies: - "@solana/codecs-core" "5.1.0" - "@solana/codecs-numbers" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/codecs@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-rc.1.tgz#146dc5db58bd3c28e04b4c805e6096c2d2a0a875" @@ -896,7 +857,7 @@ "@solana/codecs-strings" "2.3.0" "@solana/options" "2.3.0" -"@solana/errors@2.0.0-preview.4", "@solana/errors@2.0.0-rc.1", "@solana/errors@2.3.0", "@solana/errors@5.1.0": +"@solana/errors@2.0.0-preview.4", "@solana/errors@2.0.0-rc.1", "@solana/errors@2.3.0": version "2.0.0-preview.4" resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.4.tgz#056ba76b6dd900dafa70117311bec3aef0f5250b" integrity sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA== @@ -914,11 +875,6 @@ resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-2.3.0.tgz#ac33815655e954bb78151446a571bc6c9fd9be28" integrity sha512-AgsPh3W3tE+nK3eEw/W9qiSfTGwLYEvl0rWaxHht/lRcuDVwfKRzeSa5G79eioWFFqr+pTtoCr3D3OLkwKz02Q== -"@solana/functional@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-5.1.0.tgz#efd4b338b001a603627ed01493262dfac67e7edc" - integrity sha512-R6jacWU0Gr+j49lTDp+FSECBolqw2Gq7JlC22rI0JkcxJiiAlp3G80v6zAYq0FkHzxZbjyR6//JYUXSwliem5g== - "@solana/instructions@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-2.3.0.tgz#ff25cbe545000a33fb3604d83f4e2b683de94ad3" @@ -927,14 +883,6 @@ "@solana/codecs-core" "2.3.0" "@solana/errors" "2.3.0" -"@solana/instructions@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-5.1.0.tgz#ea51bdbec9098bcd2ebfc63850eb8a68b0674d28" - integrity sha512-fkwpUwwqk5K14T/kZDnCrfeR0kww49HBx+BK8xdSeJx+bt4QTwAHa9YeOkGhGrHEFVEJEUf8FKoxxTzZzJZtKQ== - dependencies: - "@solana/codecs-core" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/keys@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-2.3.0.tgz#9d0b0ec09c2789a051b4df1945ed52631261186e" @@ -946,17 +894,6 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" -"@solana/keys@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-5.1.0.tgz#ddfb57d7273c147e4072334d34e55010233e508e" - integrity sha512-ma4zTTuSOmtTCvATHMfUGNTw0Vqah/6XPe1VmLc66ohwXMI3yqatX1FQPXgDZozr15SvLAesfs7/bgl2TRoe9w== - dependencies: - "@solana/assertions" "5.1.0" - "@solana/codecs-core" "5.1.0" - "@solana/codecs-strings" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/nominal-types" "5.1.0" - "@solana/kit@^2.1.1": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/kit/-/kit-2.3.0.tgz#92deb7c4883293617209aecac9a43d5e41ccf092" @@ -986,11 +923,6 @@ resolved "https://registry.yarnpkg.com/@solana/nominal-types/-/nominal-types-2.3.0.tgz#b67637241b4a45c756464e049c7a830880b6e944" integrity sha512-uKlMnlP4PWW5UTXlhKM8lcgIaNj8dvd8xO4Y9l+FVvh9RvW2TO0GwUO6JCo7JBzCB0PSqRJdWWaQ8pu1Ti/OkA== -"@solana/nominal-types@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/nominal-types/-/nominal-types-5.1.0.tgz#39f1efc19ce4f5429c02c01a518731f441ef98a1" - integrity sha512-+4Cm+SpK+D811i9giqv4Up93ZlmUcZfLDHkSH24F4in61+Y2TKA+XKuRtKhNytQMmqCfbvJZ9MHFaIeZw5g+Bg== - "@solana/options@2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-rc.1.tgz#06924ba316dc85791fc46726a51403144a85fc4d" @@ -1043,43 +975,16 @@ "@solana/transaction-messages" "2.3.0" "@solana/transactions" "2.3.0" -"@solana/rpc-api@=5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-api/-/rpc-api-5.1.0.tgz#6da7bbea267eb8755bdf6c2f6eb6c945b3de9f95" - integrity sha512-eI1tY0i3gmih1C65gFECYbfPRpHEYqFp+9IKjpknZtYpQIe9BqBKSpfYpGiCAbKdN/TMadBNPOzdK15ewhkkvQ== - dependencies: - "@solana/addresses" "5.1.0" - "@solana/codecs-core" "5.1.0" - "@solana/codecs-strings" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/keys" "5.1.0" - "@solana/rpc-parsed-types" "5.1.0" - "@solana/rpc-spec" "5.1.0" - "@solana/rpc-transformers" "5.1.0" - "@solana/rpc-types" "5.1.0" - "@solana/transaction-messages" "5.1.0" - "@solana/transactions" "5.1.0" - "@solana/rpc-parsed-types@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-2.3.0.tgz#132b03f6b4c1b4688336ad48e76c2eea0d8c91d7" integrity sha512-B5pHzyEIbBJf9KHej+zdr5ZNAdSvu7WLU2lOUPh81KHdHQs6dEb310LGxcpCc7HVE8IEdO20AbckewDiAN6OCg== -"@solana/rpc-parsed-types@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-5.1.0.tgz#4881fecebdf006def3eeb71364275b2b0086b39b" - integrity sha512-ZJoXHNItALMNa1zmGrNnIh96RBlc9GpIqoaZkdE14mAQ7gWe7Oc0ejYavUeSCmcL0wZcvIFh50AsfVxrHr4+2Q== - "@solana/rpc-spec-types@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-2.3.0.tgz#010ea9de2f720e84bec2b93ca77ad3664b77235f" integrity sha512-xQsb65lahjr8Wc9dMtP7xa0ZmDS8dOE2ncYjlvfyw/h4mpdXTUdrSMi6RtFwX33/rGuztQ7Hwaid5xLNSLvsFQ== -"@solana/rpc-spec-types@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-5.1.0.tgz#4e2bcd7f8ca0bc5bd6d057fd5cebd39ee2309420" - integrity sha512-B8/WyjmHpC34vXtAmTpZyPwRCm7WwoSkmjBcBouaaY1uilJ9+Wp2nptbq2cJyWairOoMSoI7v5kvvnrJuquq4Q== - "@solana/rpc-spec@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-2.3.0.tgz#2b679eb750c0f9270da6d451ea1bdc2c7783eb42" @@ -1088,14 +993,6 @@ "@solana/errors" "2.3.0" "@solana/rpc-spec-types" "2.3.0" -"@solana/rpc-spec@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-5.1.0.tgz#e192f72345596c04a5144411011a9744517d0bf6" - integrity sha512-y8B6fUWA1EBKXUsNo6b9EiFcQPsaJREPLlcIDbo4b6TucQNwvl7FHfpf1VHJL64SkI/WE69i2WEkiOJYjmLO0A== - dependencies: - "@solana/errors" "5.1.0" - "@solana/rpc-spec-types" "5.1.0" - "@solana/rpc-subscriptions-api@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-2.3.0.tgz#e779b8ad10e89b2f4a4ccb0fcd1a722d8bdd7729" @@ -1157,17 +1054,6 @@ "@solana/rpc-spec-types" "2.3.0" "@solana/rpc-types" "2.3.0" -"@solana/rpc-transformers@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-transformers/-/rpc-transformers-5.1.0.tgz#919846a251a1bd3a380246184c37854ec9432285" - integrity sha512-6v93xi/ewGS/xEiSktNQ0bh0Uiv1/q9nR5oiFMn3BiAJRC+FdMRMxCjp6H+/Tua7wdhpClaPKrZYBQHoIp59tw== - dependencies: - "@solana/errors" "5.1.0" - "@solana/functional" "5.1.0" - "@solana/nominal-types" "5.1.0" - "@solana/rpc-spec-types" "5.1.0" - "@solana/rpc-types" "5.1.0" - "@solana/rpc-transport-http@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc-transport-http/-/rpc-transport-http-2.3.0.tgz#581601b9579b2a7fed9e0cb6fbcb95b4186e5b49" @@ -1190,18 +1076,6 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" -"@solana/rpc-types@5.1.0", "@solana/rpc-types@=5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-types/-/rpc-types-5.1.0.tgz#f5aa0593e693729cd85867ddb0b1f3850fe7422b" - integrity sha512-Rnpt5BuHQvnULPNXUC/yRqB+7iPbon95CSCeyRvPj5tJ4fx2JibvX3s/UEoud5vC+kRjPi/R0BGJ8XFvd3eDWg== - dependencies: - "@solana/addresses" "5.1.0" - "@solana/codecs-core" "5.1.0" - "@solana/codecs-numbers" "5.1.0" - "@solana/codecs-strings" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/nominal-types" "5.1.0" - "@solana/rpc@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/rpc/-/rpc-2.3.0.tgz#a65919520d14c122625fb887a2d72c95bf8691cf" @@ -1326,21 +1200,6 @@ "@solana/nominal-types" "2.3.0" "@solana/rpc-types" "2.3.0" -"@solana/transaction-messages@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/transaction-messages/-/transaction-messages-5.1.0.tgz#f40a784f0e699e31b5f1d53a061df54a34e7ef8e" - integrity sha512-9rNV2YJhd85WIMvnwa/vUY4xUw3ZTU17jP1KDo/fFZWk55a0ov0ATJJPyC5HAR1i6hT1cmJzGH/UHhnD9m/Q3w== - dependencies: - "@solana/addresses" "5.1.0" - "@solana/codecs-core" "5.1.0" - "@solana/codecs-data-structures" "5.1.0" - "@solana/codecs-numbers" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/functional" "5.1.0" - "@solana/instructions" "5.1.0" - "@solana/nominal-types" "5.1.0" - "@solana/rpc-types" "5.1.0" - "@solana/transactions@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-2.3.0.tgz#fc99f6ce6cc5706f2b8116bbf8a2f396c3ec3177" @@ -1359,24 +1218,6 @@ "@solana/rpc-types" "2.3.0" "@solana/transaction-messages" "2.3.0" -"@solana/transactions@5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-5.1.0.tgz#75f6f49581daa1f7b41cec2daed7de52e311b586" - integrity sha512-06JwSPtz+38ozNgpysAXS2eTMPQCufIisXB6K88X8J4GF8ziqs4nkq0BpXAXn+MpZTkuMt+JeW2RxP3HKhXe5g== - dependencies: - "@solana/addresses" "5.1.0" - "@solana/codecs-core" "5.1.0" - "@solana/codecs-data-structures" "5.1.0" - "@solana/codecs-numbers" "5.1.0" - "@solana/codecs-strings" "5.1.0" - "@solana/errors" "5.1.0" - "@solana/functional" "5.1.0" - "@solana/instructions" "5.1.0" - "@solana/keys" "5.1.0" - "@solana/nominal-types" "5.1.0" - "@solana/rpc-types" "5.1.0" - "@solana/transaction-messages" "5.1.0" - "@solana/web3.js@1.98.0", "@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.30.2", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.77.3", "@solana/web3.js@^1.90.0", "@solana/web3.js@^1.98.0", "@solana/web3.js@^1.98.2", "@solana/web3.js@~1.77.3": version "1.98.0" resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.0.tgz#21ecfe8198c10831df6f0cfde7f68370d0405917" From e44bbaa98c3be738b4746a19682641a94d63009c Mon Sep 17 00:00:00 2001 From: LukasDeco Date: Tue, 13 Jan 2026 20:31:49 -0700 Subject: [PATCH 15/51] refactor: replace pyth-solana-receiver with copied over code (#2068) * refactor: replace pyth-solana-receiver with copied over code * fix: use forked pyth IDL * fix: adjust wormhole IDL * fix: import pyth types locally pythPullClient * fix: prettier * fix: no pyth-solana-receiver in protocol --- package.json | 1 - sdk/package.json | 5 +- sdk/src/driftClient.ts | 20 +- sdk/src/oracles/pythPullClient.ts | 9 +- sdk/src/pyth/constants.ts | 9 + sdk/src/pyth/index.ts | 11 + sdk/src/pyth/types.ts | 4453 +++++++++++++++++++++++++++++ sdk/src/pyth/utils.ts | 13 + sdk/tests/decode/test.ts | 3 +- sdk/tests/dlob/helpers.ts | 1 - sdk/yarn.lock | 599 ++-- tests/pythPull.ts | 2 +- yarn.lock | 168 +- 13 files changed, 4792 insertions(+), 502 deletions(-) create mode 100644 sdk/src/pyth/constants.ts create mode 100644 sdk/src/pyth/index.ts create mode 100644 sdk/src/pyth/types.ts create mode 100644 sdk/src/pyth/utils.ts diff --git a/package.json b/package.json index 4b30b26fde..61b1b4ed67 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,6 @@ }, "dependencies": { "@ellipsis-labs/phoenix-sdk": "1.4.2", - "@pythnetwork/pyth-solana-receiver": "0.8.0", "@switchboard-xyz/common": "3.0.14", "@switchboard-xyz/on-demand": "2.4.1", "anchor-bankrun": "0.3.0", diff --git a/sdk/package.json b/sdk/package.json index e230f4a403..99348405e5 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -51,7 +51,6 @@ "@project-serum/serum": "0.13.65", "@pythnetwork/client": "2.5.3", "@pythnetwork/price-service-sdk": "1.7.1", - "@pythnetwork/pyth-solana-receiver": "0.7.0", "@solana/spl-token": "0.4.13", "@solana/web3.js": "1.98.0", "@switchboard-xyz/common": "3.0.14", @@ -150,9 +149,9 @@ "has-ansi": "<6.0.1" }, "browser": { - "helius-laserstream": false, - "@triton-one/yellowstone-grpc": false, "@grpc/grpc-js": false, + "@triton-one/yellowstone-grpc": false, + "helius-laserstream": false, "zstddec": false } } diff --git a/sdk/src/driftClient.ts b/sdk/src/driftClient.ts index a5dbb37544..69a284244f 100644 --- a/sdk/src/driftClient.ts +++ b/sdk/src/driftClient.ts @@ -185,17 +185,7 @@ import { trimVaaSignatures, } from './math/oracles'; import { TxHandler } from './tx/txHandler'; -import { - DEFAULT_RECEIVER_PROGRAM_ID, - wormholeCoreBridgeIdl, -} from '@pythnetwork/pyth-solana-receiver'; import { parseAccumulatorUpdateData } from '@pythnetwork/price-service-sdk'; -import { - DEFAULT_WORMHOLE_PROGRAM_ID, - getGuardianSetPda, -} from '@pythnetwork/pyth-solana-receiver/lib/address'; -import { WormholeCoreBridgeSolana } from '@pythnetwork/pyth-solana-receiver/lib/idl/wormhole_core_bridge_solana'; -import { PythSolanaReceiver } from '@pythnetwork/pyth-solana-receiver/lib/idl/pyth_solana_receiver'; import { getFeedIdUint8Array, trimFeedId } from './util/pythOracleUtils'; import { createMinimalEd25519VerifyIx } from './util/ed25519Utils'; import { @@ -221,6 +211,14 @@ import { } from './math/builder'; import { TitanClient, SwapMode as TitanSwapMode } from './titan/titanClient'; import { UnifiedSwapClient } from './swap/UnifiedSwapClient'; +import { + DEFAULT_RECEIVER_PROGRAM_ID, + WORMHOLE_CORE_BRIDGE_SOLANA_IDL, + DEFAULT_WORMHOLE_PROGRAM_ID, + getGuardianSetPda, + WormholeCoreBridgeSolana, + PythSolanaReceiver, +} from './pyth'; /** * Union type for swap clients (Titan and Jupiter) - Legacy type @@ -11208,7 +11206,7 @@ export class DriftClient { if (this.wormholeProgram === undefined) { this.wormholeProgram = new Program( - wormholeCoreBridgeIdl, + WORMHOLE_CORE_BRIDGE_SOLANA_IDL, DEFAULT_WORMHOLE_PROGRAM_ID, this.provider ); diff --git a/sdk/src/oracles/pythPullClient.ts b/sdk/src/oracles/pythPullClient.ts index 0359b35928..100c010a71 100644 --- a/sdk/src/oracles/pythPullClient.ts +++ b/sdk/src/oracles/pythPullClient.ts @@ -7,13 +7,12 @@ import { QUOTE_PRECISION, TEN, } from '../constants/numericConstants'; -import { - PythSolanaReceiverProgram, - pythSolanaReceiverIdl, -} from '@pythnetwork/pyth-solana-receiver'; -import { PriceUpdateAccount } from '@pythnetwork/pyth-solana-receiver/lib/PythSolanaReceiver'; + +import pythSolanaReceiverIdl from '../idl/pyth_solana_receiver.json'; +import { PythSolanaReceiver as PythSolanaReceiverProgram } from '../pyth'; import { DRIFT_ORACLE_RECEIVER_ID } from '../config'; import { Wallet } from '../wallet'; +import { PriceUpdateAccount } from '../pyth'; export class PythPullClient implements OracleClient { private connection: Connection; diff --git a/sdk/src/pyth/constants.ts b/sdk/src/pyth/constants.ts new file mode 100644 index 0000000000..89db604ea9 --- /dev/null +++ b/sdk/src/pyth/constants.ts @@ -0,0 +1,9 @@ +import { PublicKey } from '@solana/web3.js'; + +export const DEFAULT_WORMHOLE_PROGRAM_ID = new PublicKey( + 'HDwcJBJXjL9FpJ7UBsYBtaDjsBUhuLCUYoz3zr8SWWaQ' +); + +export const DEFAULT_RECEIVER_PROGRAM_ID = new PublicKey( + 'rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ' +); diff --git a/sdk/src/pyth/index.ts b/sdk/src/pyth/index.ts new file mode 100644 index 0000000000..6ebe70388c --- /dev/null +++ b/sdk/src/pyth/index.ts @@ -0,0 +1,11 @@ +export { + WormholeCoreBridgeSolana, + WORMHOLE_CORE_BRIDGE_SOLANA_IDL, + PythSolanaReceiver, + PriceUpdateAccount, +} from './types'; +export { + DEFAULT_WORMHOLE_PROGRAM_ID, + DEFAULT_RECEIVER_PROGRAM_ID, +} from './constants'; +export { getGuardianSetPda } from './utils'; diff --git a/sdk/src/pyth/types.ts b/sdk/src/pyth/types.ts new file mode 100644 index 0000000000..6e0bbc6be3 --- /dev/null +++ b/sdk/src/pyth/types.ts @@ -0,0 +1,4453 @@ +import type { IdlAccounts } from '@coral-xyz/anchor'; + +export type WormholeCoreBridgeSolana = { + version: '0.0.1-alpha.5'; + name: 'wormhole_core_bridge_solana'; + constants: [ + { + name: 'SOLANA_CHAIN'; + type: 'u16'; + value: '1'; + }, + { + name: 'FEE_COLLECTOR_SEED_PREFIX'; + type: 'bytes'; + value: '[102, 101, 101, 95, 99, 111, 108, 108, 101, 99, 116, 111, 114]'; + }, + { + name: 'UPGRADE_SEED_PREFIX'; + type: 'bytes'; + value: '[117, 112, 103, 114, 97, 100, 101]'; + }, + { + name: 'PROGRAM_EMITTER_SEED_PREFIX'; + type: 'bytes'; + value: '[101, 109, 105, 116, 116, 101, 114]'; + }, + { + name: 'MAX_MESSAGE_PAYLOAD_SIZE'; + type: { + defined: 'usize'; + }; + value: '30 * 1_024'; + }, + ]; + instructions: [ + { + name: 'initMessageV1'; + docs: [ + 'Processor for initializing a new draft [PostedMessageV1](crate::state::PostedMessageV1)', + 'account for writing. The emitter authority is established at this point and the payload size', + 'is inferred from the size of the created account. This instruction handler also allows an', + "integrator to publish Wormhole messages using his program's ID as the emitter address", + '(by passing `Some(crate::ID)` to the [cpi_program_id](InitMessageV1Args::cpi_program_id)', + 'argument). **Be aware that the emitter authority\'s seeds must only be \\[b"emitter"\\] in this', + 'case.**', + '', + 'This instruction should be followed up with `write_message_v1` and `finalize_message_v1` to', + 'write and indicate that the message is ready for publishing respectively (to prepare it for', + 'publishing via the', + '[post message instruction](crate::legacy::instruction::LegacyInstruction::PostMessage)).', + '', + 'NOTE: If you wish to publish a small message (one where the data does not overflow the', + 'Solana transaction size), it is recommended that you use an [sdk](crate::sdk::cpi) method to', + 'either prepare your message or post a message as a program ID emitter.', + ]; + accounts: [ + { + name: 'emitterAuthority'; + isMut: false; + isSigner: true; + docs: [ + 'This authority is the only one who can write to the draft message account.', + ]; + }, + { + name: 'draftMessage'; + isMut: true; + isSigner: false; + docs: ['Bridge.']; + }, + ]; + args: [ + { + name: 'args'; + type: { + defined: 'InitMessageV1Args'; + }; + }, + ]; + }, + { + name: 'writeMessageV1'; + docs: [ + 'Processor used to write to a draft [PostedMessageV1](crate::state::PostedMessageV1) account.', + 'This instruction requires an authority (the emitter authority) to interact with the message', + 'account.', + ]; + accounts: [ + { + name: 'emitterAuthority'; + isMut: false; + isSigner: true; + }, + { + name: 'draftMessage'; + isMut: true; + isSigner: false; + docs: ['only be published when the message is finalized.']; + }, + ]; + args: [ + { + name: 'args'; + type: { + defined: 'WriteMessageV1Args'; + }; + }, + ]; + }, + { + name: 'finalizeMessageV1'; + docs: [ + 'Processor used to finalize a draft [PostedMessageV1](crate::state::PostedMessageV1) account.', + 'Once finalized, this message account cannot be written to again. A finalized message is the', + 'only state the legacy post message instruction can accept before publishing. This', + 'instruction requires an authority (the emitter authority) to interact with the message', + 'account.', + ]; + accounts: [ + { + name: 'emitterAuthority'; + isMut: false; + isSigner: true; + }, + { + name: 'draftMessage'; + isMut: true; + isSigner: false; + docs: ['only be published when the message is finalized.']; + }, + ]; + args: []; + }, + { + name: 'closeMessageV1'; + docs: [ + 'Processor used to process a draft [PostedMessageV1](crate::state::PostedMessageV1) account.', + 'This instruction requires an authority (the emitter authority) to interact with the message', + 'account.', + ]; + accounts: [ + { + name: 'emitterAuthority'; + isMut: false; + isSigner: true; + }, + { + name: 'draftMessage'; + isMut: true; + isSigner: false; + docs: ['only be published when the message is finalized.']; + }, + { + name: 'closeAccountDestination'; + isMut: true; + isSigner: false; + }, + ]; + args: []; + }, + { + name: 'initEncodedVaa'; + docs: [ + 'Processor used to intialize a created account as [EncodedVaa](crate::state::EncodedVaa). An', + 'authority (the write authority) is established with this instruction.', + ]; + accounts: [ + { + name: 'writeAuthority'; + isMut: false; + isSigner: true; + docs: [ + 'The authority who can write to the VAA account when it is being processed.', + ]; + }, + { + name: 'encodedVaa'; + isMut: true; + isSigner: false; + docs: ['Bridge.']; + }, + ]; + args: []; + }, + { + name: 'closeEncodedVaa'; + docs: [ + 'Processor used to close an [EncodedVaa](crate::state::EncodedVaa). This instruction requires', + 'an authority (the write authority) to interact witht he encoded VAA account.', + ]; + accounts: [ + { + name: 'writeAuthority'; + isMut: true; + isSigner: true; + docs: [ + 'This account is only required to be mutable for the `CloseVaaAccount` directive. This', + 'authority is the same signer that originally created the VAA accounts, so he is the one that', + 'will receive the lamports back for the closed accounts.', + ]; + }, + { + name: 'encodedVaa'; + isMut: true; + isSigner: false; + docs: ['written to and then verified.']; + }, + ]; + args: []; + }, + { + name: 'writeEncodedVaa'; + docs: [ + 'Processor used to write to an [EncodedVaa](crate::state::EncodedVaa) account. This', + 'instruction requires an authority (the write authority) to interact with the encoded VAA', + 'account.', + ]; + accounts: [ + { + name: 'writeAuthority'; + isMut: false; + isSigner: true; + docs: [ + 'The only authority that can write to the encoded VAA account.', + ]; + }, + { + name: 'draftVaa'; + isMut: true; + isSigner: false; + docs: ['written to and then verified.']; + }, + ]; + args: [ + { + name: 'args'; + type: { + defined: 'WriteEncodedVaaArgs'; + }; + }, + ]; + }, + { + name: 'verifyEncodedVaaV1'; + docs: [ + 'Processor used to verify an [EncodedVaa](crate::state::EncodedVaa) account as a version 1', + 'VAA (guardian signatures attesting to this observation). This instruction requires an', + 'authority (the write authority) to interact with the encoded VAA account.', + ]; + accounts: [ + { + name: 'writeAuthority'; + isMut: false; + isSigner: true; + }, + { + name: 'draftVaa'; + isMut: true; + isSigner: false; + docs: ['written to and then verified.']; + }, + { + name: 'guardianSet'; + isMut: false; + isSigner: false; + docs: [ + 'Guardian set account, which should be the same one that was used to attest for the VAA. The', + 'signatures in the encoded VAA are verified against this guardian set.', + ]; + }, + ]; + args: []; + }, + { + name: 'postVaaV1'; + docs: [ + 'Processor used to close an [EncodedVaa](crate::state::EncodedVaa) account to create a', + '[PostedMessageV1](crate::state::PostedMessageV1) account in its place.', + '', + 'NOTE: Because the legacy verify signatures instruction was not required for the Posted VAA', + 'account to exist, the encoded [SignatureSet](crate::state::SignatureSet) is the default', + '[Pubkey].', + ]; + accounts: [ + { + name: 'payer'; + isMut: true; + isSigner: true; + docs: [ + 'Payer to create the posted VAA account. This instruction allows anyone with an encoded VAA', + 'to create a posted VAA account.', + ]; + }, + { + name: 'encodedVaa'; + isMut: false; + isSigner: false; + docs: [ + 'Encoded VAA, whose body will be serialized into the posted VAA account.', + '', + 'NOTE: This instruction handler only exists to support integrators that still rely on posted', + 'VAA accounts. While we encourage integrators to use the encoded VAA account instead, we', + 'allow a pathway to convert the encoded VAA into a posted VAA. However, the payload is', + 'restricted to 9.5KB, which is much larger than what was possible with the old implementation', + 'using the legacy post vaa instruction. The Core Bridge program will not support posting VAAs', + 'larger than this payload size.', + ]; + }, + { + name: 'postedVaa'; + isMut: true; + isSigner: false; + }, + { + name: 'systemProgram'; + isMut: false; + isSigner: false; + }, + ]; + args: []; + }, + { + name: 'closeSignatureSet'; + docs: [ + 'Processor used to close a [SignatureSet](crate::state::SignatureSet), which was used to', + 'verify the VAA using the legacy parse and verify procedure.', + ]; + accounts: [ + { + name: 'solDestination'; + isMut: true; + isSigner: true; + }, + { + name: 'postedVaa'; + isMut: false; + isSigner: false; + docs: ['Posted VAA.']; + }, + { + name: 'signatureSet'; + isMut: true; + isSigner: false; + docs: [ + 'Signature set that may have been used to create the posted VAA account. If the `post_vaa_v1`', + 'instruction were used to create the posted VAA account, then the encoded signature set', + 'pubkey would be all zeroes.', + ]; + }, + ]; + args: []; + }, + ]; + accounts: [ + { + name: 'guardianSet'; + docs: [ + 'Account used to store a guardian set. The keys encoded in this account are Ethereum pubkeys.', + 'Its expiration time is determined at the time a guardian set is updated to a new set, where the', + 'current network clock time is used with', + '[guardian_set_ttl](crate::state::Config::guardian_set_ttl).', + '', + 'NOTE: The account schema is the same as legacy guardian sets, but this account now has a', + "discriminator generated by Anchor's [account] macro. When the Core Bridge program performs a", + 'guardian set update with this implementation, guardian sets will now have this Anchor-generated', + 'discriminator.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'index'; + docs: [ + 'Index representing an incrementing version number for this guardian set.', + ]; + type: 'u32'; + }, + { + name: 'keys'; + docs: ['Ethereum-style public keys.']; + type: { + vec: { + array: ['u8', 20]; + }; + }; + }, + { + name: 'creationTime'; + docs: [ + 'Timestamp representing the time this guardian became active.', + ]; + type: { + defined: 'Timestamp'; + }; + }, + { + name: 'expirationTime'; + docs: [ + 'Expiration time when VAAs issued by this set are no longer valid.', + ]; + type: { + defined: 'Timestamp'; + }; + }, + ]; + }; + }, + { + name: 'signatureSet'; + docs: [ + 'Account used to store information about a guardian set used to sign a VAA. There is only one', + 'signature set for each verified VAA (associated with a', + '[PostedVaaV1](crate::legacy::state::PostedVaaV1) account). This account is created using the', + 'verify signatures legacy instruction.', + '', + 'NOTE: The account schema is the same as legacy signature sets, but this account now has a', + "discriminator generated by Anchor's [account] macro. When the Core Bridge program upgrades to", + 'this implementation from the old one, integrators in the middle of verifying signatures will', + 'have to use a new keypair for this account and try again.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'sigVerifySuccesses'; + docs: ['Signatures of validators']; + type: { + vec: 'bool'; + }; + }, + { + name: 'messageHash'; + docs: ['Hash of the VAA message body.']; + type: { + defined: 'MessageHash'; + }; + }, + { + name: 'guardianSetIndex'; + docs: ['Index of the guardian set']; + type: 'u32'; + }, + ]; + }; + }, + { + name: 'encodedVaa'; + docs: [ + 'Account used to warehouse VAA buffer.', + '', + "NOTE: This account should not be used by an external application unless the header's status is", + '`Verified`. It is encouraged to use the `EncodedVaa` zero-copy account struct instead.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'header'; + docs: ['Status, write authority and VAA version.']; + type: { + defined: 'Header'; + }; + }, + { + name: 'buf'; + docs: ['VAA buffer.']; + type: 'bytes'; + }, + ]; + }; + }, + ]; + types: [ + { + name: 'InitializeArgs'; + docs: ['Arguments used to initialize the Core Bridge program.']; + type: { + kind: 'struct'; + fields: [ + { + name: 'guardianSetTtlSeconds'; + type: 'u32'; + }, + { + name: 'feeLamports'; + type: 'u64'; + }, + { + name: 'initialGuardians'; + type: { + vec: { + array: ['u8', 20]; + }; + }; + }, + ]; + }; + }, + { + name: 'PostMessageArgs'; + docs: [ + 'Arguments used to post a new Wormhole (Core Bridge) message either using', + '[post_message](crate::legacy::instruction::post_message) or', + '[post_message_unreliable](crate::legacy::instruction::post_message_unreliable).', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'nonce'; + docs: ['Unique id for this message.']; + type: 'u32'; + }, + { + name: 'payload'; + docs: ['Encoded message.']; + type: 'bytes'; + }, + { + name: 'commitment'; + docs: ['Solana commitment level for Guardian observation.']; + type: { + defined: 'Commitment'; + }; + }, + ]; + }; + }, + { + name: 'PostVaaArgs'; + docs: [ + 'Arguments to post new VAA data after signature verification.', + '', + 'NOTE: It is preferred to use the new process of verifying a VAA using the new Core Bridge Anchor', + 'instructions. See [init_encoded_vaa](crate::wormhole_core_bridge_solana::init_encoded_vaa) and', + '[write_encoded_vaa](crate::wormhole_core_bridge_solana::write_encoded_vaa) for more info.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'gap0'; + docs: ['Unused data.']; + type: { + array: ['u8', 5]; + }; + }, + { + name: 'timestamp'; + docs: ['Time the message was submitted.']; + type: 'u32'; + }, + { + name: 'nonce'; + docs: ['Unique ID for this message.']; + type: 'u32'; + }, + { + name: 'emitterChain'; + docs: [ + 'The Wormhole chain ID denoting the origin of this message.', + ]; + type: 'u16'; + }, + { + name: 'emitterAddress'; + docs: ['Emitter of the message.']; + type: { + array: ['u8', 32]; + }; + }, + { + name: 'sequence'; + docs: ['Sequence number of this message.']; + type: 'u64'; + }, + { + name: 'consistencyLevel'; + docs: ['Level of consistency requested by the emitter.']; + type: 'u8'; + }, + { + name: 'payload'; + docs: ['Message payload.']; + type: 'bytes'; + }, + ]; + }; + }, + { + name: 'VerifySignaturesArgs'; + docs: [ + 'Arguments to verify specific guardian indices.', + '', + 'NOTE: It is preferred to use the new process of verifying a VAA using the new Core Bridge Anchor', + 'instructions. See [init_encoded_vaa](crate::wormhole_core_bridge_solana::init_encoded_vaa) and', + '[write_encoded_vaa](crate::wormhole_core_bridge_solana::write_encoded_vaa) for more info.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'signerIndices'; + docs: [ + 'Indices of verified guardian signatures, where -1 indicates a missing value. There is a', + 'missing value if the guardian at this index is not expected to have its signature verfied by', + 'the Sig Verify native program in the instruction invoked prior).', + '', + 'NOTE: In the legacy implementation, this argument being a fixed-sized array of 19 only', + 'allows the first 19 guardians of any size guardian set to be verified. Because of this, it', + 'is absolutely important to use the new process of verifying a VAA.', + ]; + type: { + array: ['i8', 19]; + }; + }, + ]; + }; + }, + { + name: 'EmptyArgs'; + docs: ['Unit struct used to represent an empty instruction argument.']; + type: { + kind: 'struct'; + fields: []; + }; + }, + { + name: 'Config'; + docs: [ + 'Account used to store the current configuration of the bridge, including tracking Wormhole fee', + 'payments. For governance decrees, the guardian set index is used to determine whether a decree', + 'was attested for using the latest guardian set.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'guardianSetIndex'; + docs: [ + 'The current guardian set index, used to decide which signature sets to accept.', + ]; + type: 'u32'; + }, + { + name: 'gap0'; + docs: [ + 'Gap. In the old implementation, this was an amount that kept track of message fees that', + "were paid to the program's fee collector.", + ]; + type: { + array: ['u8', 8]; + }; + }, + { + name: 'guardianSetTtl'; + docs: [ + 'Period for how long a guardian set is valid after it has been replaced by a new one. This', + 'guarantees that VAAs issued by that set can still be submitted for a certain period. In', + 'this period we still trust the old guardian set.', + ]; + type: { + defined: 'Duration'; + }; + }, + { + name: 'feeLamports'; + docs: [ + 'Amount of lamports that needs to be paid to the protocol to post a message', + ]; + type: 'u64'; + }, + ]; + }; + }, + { + name: 'LegacyEmitterSequence'; + docs: [ + 'Account used to store the current sequence number for a given emitter.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'value'; + docs: [ + 'Current sequence number, which will be used the next time this emitter publishes a message.', + ]; + type: 'u64'; + }, + ]; + }; + }, + { + name: 'EmitterSequence'; + type: { + kind: 'struct'; + fields: [ + { + name: 'legacy'; + type: { + defined: 'LegacyEmitterSequence'; + }; + }, + { + name: 'bump'; + type: 'u8'; + }, + { + name: 'emitterType'; + type: { + defined: 'EmitterType'; + }; + }, + ]; + }; + }, + { + name: 'PostedMessageV1Unreliable'; + docs: ['Account used to store a published (reusable) Wormhole message.']; + type: { + kind: 'struct'; + fields: [ + { + name: 'data'; + type: { + defined: 'PostedMessageV1Data'; + }; + }, + ]; + }; + }, + { + name: 'PostedMessageV1Info'; + docs: [ + 'Message metadata defining information about a published Wormhole message.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'consistencyLevel'; + docs: ['Level of consistency requested by the emitter.']; + type: 'u8'; + }, + { + name: 'emitterAuthority'; + docs: [ + 'Authority used to write the message. This field is set to default when the message is', + 'posted.', + ]; + type: 'publicKey'; + }, + { + name: 'status'; + docs: [ + 'If a message is being written to, this status is used to determine which state this', + 'account is in (e.g. [MessageStatus::Writing] indicates that the emitter authority is still', + 'writing its message to this account). When this message is posted, this value will be', + 'set to [MessageStatus::Published].', + ]; + type: { + defined: 'MessageStatus'; + }; + }, + { + name: 'gap0'; + docs: ['No data is stored here.']; + type: { + array: ['u8', 3]; + }; + }, + { + name: 'postedTimestamp'; + docs: ['Time the posted message was created.']; + type: { + defined: 'Timestamp'; + }; + }, + { + name: 'nonce'; + docs: ['Unique id for this message.']; + type: 'u32'; + }, + { + name: 'sequence'; + docs: ['Sequence number of this message.']; + type: 'u64'; + }, + { + name: 'solanaChainId'; + docs: [ + 'Always `1`.', + '', + 'NOTE: Saving this value is silly, but we are keeping it to be consistent with how the posted', + 'message account is written.', + ]; + type: { + defined: 'ChainIdSolanaOnly'; + }; + }, + { + name: 'emitter'; + docs: [ + 'Emitter of the message. This may either be the emitter authority or a program ID.', + ]; + type: 'publicKey'; + }, + ]; + }; + }, + { + name: 'PostedMessageV1Data'; + docs: [ + 'Underlying data for either [PostedMessageV1](crate::legacy::state::PostedMessageV1) or', + '[PostedMessageV1Unreliable](crate::legacy::state::PostedMessageV1Unreliable).', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'info'; + docs: ['Message metadata.']; + type: { + defined: 'PostedMessageV1Info'; + }; + }, + { + name: 'payload'; + docs: ['Encoded message.']; + type: 'bytes'; + }, + ]; + }; + }, + { + name: 'PostedMessageV1'; + docs: [ + 'Account used to store a published Wormhole message.', + '', + 'NOTE: If your integration requires reusable message accounts, please see', + '[PostedMessageV1Unreliable](crate::legacy::state::PostedMessageV1Unreliable).', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'data'; + docs: ['Message data.']; + type: { + defined: 'PostedMessageV1Data'; + }; + }, + ]; + }; + }, + { + name: 'PostedVaaV1Info'; + docs: [ + 'VAA metadata defining information about a Wormhole message attested for by an active guardian', + 'set.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'consistencyLevel'; + docs: ['Level of consistency requested by the emitter.']; + type: 'u8'; + }, + { + name: 'timestamp'; + docs: ['Time the message was submitted.']; + type: { + defined: 'Timestamp'; + }; + }, + { + name: 'signatureSet'; + docs: [ + "Pubkey of [SignatureSet](crate::state::SignatureSet) account that represents this VAA's", + 'signature verification.', + ]; + type: 'publicKey'; + }, + { + name: 'guardianSetIndex'; + docs: [ + 'Guardian set index used to verify signatures for [SignatureSet](crate::state::SignatureSet).', + '', + 'NOTE: In the previous implementation, this member was referred to as the "posted timestamp",', + 'which is zero for VAA data (posted messages and VAAs resemble the same account schema). By', + 'changing this to the guardian set index, we patch a bug with verifying governance VAAs for', + 'the Core Bridge (other Core Bridge implementations require that the guardian set that', + 'attested for the governance VAA is the current one).', + ]; + type: 'u32'; + }, + { + name: 'nonce'; + docs: ['Unique ID for this message.']; + type: 'u32'; + }, + { + name: 'sequence'; + docs: ['Sequence number of this message.']; + type: 'u64'; + }, + { + name: 'emitterChain'; + docs: [ + 'The Wormhole chain ID denoting the origin of this message.', + ]; + type: 'u16'; + }, + { + name: 'emitterAddress'; + docs: ['Emitter of the message.']; + type: { + array: ['u8', 32]; + }; + }, + ]; + }; + }, + { + name: 'PostedVaaV1'; + docs: ['Account used to store a verified VAA.']; + type: { + kind: 'struct'; + fields: [ + { + name: 'info'; + docs: ['VAA metadata.']; + type: { + defined: 'PostedVaaV1Info'; + }; + }, + { + name: 'payload'; + docs: ['Message payload.']; + type: 'bytes'; + }, + ]; + }; + }, + { + name: 'WriteEncodedVaaArgs'; + docs: [ + 'Arguments for the [write_encoded_vaa](crate::wormhole_core_bridge_solana::write_encoded_vaa)', + 'instruction.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'index'; + docs: ['Index of VAA buffer.']; + type: 'u32'; + }, + { + name: 'data'; + docs: [ + 'Data representing subset of VAA buffer starting at specified index.', + ]; + type: 'bytes'; + }, + ]; + }; + }, + { + name: 'InitMessageV1Args'; + docs: [ + 'Arguments for the [init_message_v1](crate::wormhole_core_bridge_solana::init_message_v1)', + 'instruction.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'nonce'; + docs: ['Unique id for this message.']; + type: 'u32'; + }, + { + name: 'commitment'; + docs: ['Solana commitment level for Guardian observation.']; + type: { + defined: 'Commitment'; + }; + }, + { + name: 'cpiProgramId'; + docs: [ + 'Optional program ID if the emitter address will be your program ID.', + '', + 'NOTE: If `Some(program_id)`, your emitter authority seeds to be \\[b"emitter\\].', + ]; + type: { + option: 'publicKey'; + }; + }, + ]; + }; + }, + { + name: 'WriteMessageV1Args'; + docs: [ + 'Arguments for the [write_message_v1](crate::wormhole_core_bridge_solana::write_message_v1)', + 'instruction.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'index'; + docs: ['Index of message buffer.']; + type: 'u32'; + }, + { + name: 'data'; + docs: [ + 'Data representing subset of message buffer starting at specified index.', + ]; + type: 'bytes'; + }, + ]; + }; + }, + { + name: 'Header'; + docs: ['`EncodedVaa` account header.']; + type: { + kind: 'struct'; + fields: [ + { + name: 'status'; + docs: [ + 'Processing status. **This encoded VAA is only considered usable when this status is set', + 'to [Verified](ProcessingStatus::Verified).**', + ]; + type: { + defined: 'ProcessingStatus'; + }; + }, + { + name: 'writeAuthority'; + docs: ['The authority that has write privilege to this account.']; + type: 'publicKey'; + }, + { + name: 'version'; + docs: [ + 'VAA version. Only when the VAA is verified is this version set to a value.', + ]; + type: 'u8'; + }, + ]; + }; + }, + { + name: 'Timestamp'; + docs: [ + 'This struct defines unix timestamp as u32 (as opposed to more modern systems that have adopted', + "i64). Methods for this struct are meant to convert Solana's clock type to this type assuming we", + 'are far from year 2038.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'value'; + type: 'u32'; + }, + ]; + }; + }, + { + name: 'Duration'; + docs: [ + 'To be used with the [Timestamp] type, this struct defines a duration in seconds.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'seconds'; + type: 'u32'; + }, + ]; + }; + }, + { + name: 'MessageHash'; + docs: ['This type is used to represent a message hash (keccak).']; + type: { + kind: 'struct'; + fields: [ + { + name: 'bytes'; + type: { + array: ['u8', 32]; + }; + }, + ]; + }; + }, + { + name: 'ChainIdSolanaOnly'; + docs: [ + 'This type is kind of silly. But because [PostedMessageV1](crate::state::PostedMessageV1) has the', + "emitter chain ID as a field, which is unnecessary since it is always Solana's chain ID, we use", + 'this type to guarantee that the encoded chain ID is always `1`.', + ]; + type: { + kind: 'struct'; + fields: [ + { + name: 'chainId'; + type: 'u16'; + }, + ]; + }; + }, + { + name: 'EmitterInfo'; + type: { + kind: 'struct'; + fields: [ + { + name: 'chain'; + type: 'u16'; + }, + { + name: 'address'; + type: { + array: ['u8', 32]; + }; + }, + { + name: 'sequence'; + type: 'u64'; + }, + ]; + }; + }, + { + name: 'LegacyInstruction'; + docs: [ + 'Legacy instruction selector.', + '', + 'NOTE: No more instructions should be added to this enum. Instead, add them as Anchor instruction', + 'handlers, which will inevitably live in', + '[wormhole_core_bridge_solana](crate::wormhole_core_bridge_solana).', + ]; + type: { + kind: 'enum'; + variants: [ + { + name: 'Initialize'; + }, + { + name: 'PostMessage'; + }, + { + name: 'PostVaa'; + }, + { + name: 'SetMessageFee'; + }, + { + name: 'TransferFees'; + }, + { + name: 'UpgradeContract'; + }, + { + name: 'GuardianSetUpdate'; + }, + { + name: 'VerifySignatures'; + }, + { + name: 'PostMessageUnreliable'; + }, + ]; + }; + }, + { + name: 'EmitterType'; + type: { + kind: 'enum'; + variants: [ + { + name: 'Unset'; + }, + { + name: 'Legacy'; + }, + { + name: 'Executable'; + }, + ]; + }; + }, + { + name: 'MessageStatus'; + docs: [ + 'Status of a message. When a message is posted, its status is', + '[Published](MessageStatus::Published).', + ]; + type: { + kind: 'enum'; + variants: [ + { + name: 'Published'; + }, + { + name: 'Writing'; + }, + { + name: 'ReadyForPublishing'; + }, + ]; + }; + }, + { + name: 'PublishMessageDirective'; + docs: ['Directive used to determine how to post a Core Bridge message.']; + type: { + kind: 'enum'; + variants: [ + { + name: 'Message'; + fields: [ + { + name: 'nonce'; + type: 'u32'; + }, + { + name: 'payload'; + type: 'bytes'; + }, + { + name: 'commitment'; + type: { + defined: 'Commitment'; + }; + }, + ]; + }, + { + name: 'ProgramMessage'; + fields: [ + { + name: 'programId'; + type: 'publicKey'; + }, + { + name: 'nonce'; + type: 'u32'; + }, + { + name: 'payload'; + type: 'bytes'; + }, + { + name: 'commitment'; + type: { + defined: 'Commitment'; + }; + }, + ]; + }, + { + name: 'PreparedMessage'; + }, + ]; + }; + }, + { + name: 'ProcessingStatus'; + docs: ["Encoded VAA's processing status."]; + type: { + kind: 'enum'; + variants: [ + { + name: 'Unset'; + }, + { + name: 'Writing'; + }, + { + name: 'Verified'; + }, + ]; + }; + }, + { + name: 'Commitment'; + docs: [ + "Representation of Solana's commitment levels. This enum is not exhaustive because Wormhole only", + 'considers these two commitment levels in its Guardian observation.', + '', + 'See for more info.', + ]; + type: { + kind: 'enum'; + variants: [ + { + name: 'Confirmed'; + }, + { + name: 'Finalized'; + }, + ]; + }; + }, + ]; + errors: [ + { + code: 6002; + name: 'InvalidInstructionArgument'; + msg: 'InvalidInstructionArgument'; + }, + { + code: 6003; + name: 'AccountNotZeroed'; + msg: 'AccountNotZeroed'; + }, + { + code: 6004; + name: 'InvalidDataConversion'; + msg: 'InvalidDataConversion'; + }, + { + code: 6006; + name: 'U64Overflow'; + msg: 'U64Overflow'; + }, + { + code: 6008; + name: 'InvalidComputeSize'; + msg: 'InvalidComputeSize'; + }, + { + code: 6016; + name: 'InvalidChain'; + msg: 'InvalidChain'; + }, + { + code: 6032; + name: 'InvalidGovernanceEmitter'; + msg: 'InvalidGovernanceEmitter'; + }, + { + code: 6034; + name: 'InvalidGovernanceAction'; + msg: 'InvalidGovernanceAction'; + }, + { + code: 6036; + name: 'LatestGuardianSetRequired'; + msg: 'LatestGuardianSetRequired'; + }, + { + code: 6038; + name: 'GovernanceForAnotherChain'; + msg: 'GovernanceForAnotherChain'; + }, + { + code: 6040; + name: 'InvalidGovernanceVaa'; + msg: 'InvalidGovernanceVaa'; + }, + { + code: 6256; + name: 'InsufficientFees'; + msg: 'InsufficientFees'; + }, + { + code: 6258; + name: 'EmitterMismatch'; + msg: 'EmitterMismatch'; + }, + { + code: 6260; + name: 'NotReadyForPublishing'; + msg: 'NotReadyForPublishing'; + }, + { + code: 6262; + name: 'InvalidPreparedMessage'; + msg: 'InvalidPreparedMessage'; + }, + { + code: 6264; + name: 'ExecutableEmitter'; + msg: 'ExecutableEmitter'; + }, + { + code: 6266; + name: 'LegacyEmitter'; + msg: 'LegacyEmitter'; + }, + { + code: 6512; + name: 'InvalidSignatureSet'; + msg: 'InvalidSignatureSet'; + }, + { + code: 6514; + name: 'InvalidMessageHash'; + msg: 'InvalidMessageHash'; + }, + { + code: 6515; + name: 'NoQuorum'; + msg: 'NoQuorum'; + }, + { + code: 6516; + name: 'MessageMismatch'; + msg: 'MessageMismatch'; + }, + { + code: 7024; + name: 'NotEnoughLamports'; + msg: 'NotEnoughLamports'; + }, + { + code: 7026; + name: 'InvalidFeeRecipient'; + msg: 'InvalidFeeRecipient'; + }, + { + code: 7280; + name: 'ImplementationMismatch'; + msg: 'ImplementationMismatch'; + }, + { + code: 7536; + name: 'InvalidGuardianSetIndex'; + msg: 'InvalidGuardianSetIndex'; + }, + { + code: 7792; + name: 'GuardianSetMismatch'; + msg: 'GuardianSetMismatch'; + }, + { + code: 7794; + name: 'InstructionAtWrongIndex'; + msg: 'InstructionAtWrongIndex'; + }, + { + code: 7795; + name: 'EmptySigVerifyInstruction'; + msg: 'EmptySigVerifyInstruction'; + }, + { + code: 7796; + name: 'InvalidSigVerifyInstruction'; + msg: 'InvalidSigVerifyInstruction'; + }, + { + code: 7798; + name: 'GuardianSetExpired'; + msg: 'GuardianSetExpired'; + }, + { + code: 7800; + name: 'InvalidGuardianKeyRecovery'; + msg: 'InvalidGuardianKeyRecovery'; + }, + { + code: 7802; + name: 'SignerIndicesMismatch'; + msg: 'SignerIndicesMismatch'; + }, + { + code: 8048; + name: 'PayloadSizeMismatch'; + msg: 'PayloadSizeMismatch'; + }, + { + code: 10112; + name: 'ZeroGuardians'; + msg: 'ZeroGuardians'; + }, + { + code: 10128; + name: 'GuardianZeroAddress'; + msg: 'GuardianZeroAddress'; + }, + { + code: 10144; + name: 'DuplicateGuardianAddress'; + msg: 'DuplicateGuardianAddress'; + }, + { + code: 10160; + name: 'MessageAlreadyPublished'; + msg: 'MessageAlreadyPublished'; + }, + { + code: 10176; + name: 'VaaWritingDisallowed'; + msg: 'VaaWritingDisallowed'; + }, + { + code: 10192; + name: 'VaaAlreadyVerified'; + msg: 'VaaAlreadyVerified'; + }, + { + code: 10208; + name: 'InvalidGuardianIndex'; + msg: 'InvalidGuardianIndex'; + }, + { + code: 10224; + name: 'InvalidSignature'; + msg: 'InvalidSignature'; + }, + { + code: 10256; + name: 'UnverifiedVaa'; + msg: 'UnverifiedVaa'; + }, + { + code: 10258; + name: 'VaaStillProcessing'; + msg: 'VaaStillProcessing'; + }, + { + code: 10260; + name: 'InWritingStatus'; + msg: 'InWritingStatus'; + }, + { + code: 10262; + name: 'NotInWritingStatus'; + msg: 'NotInWritingStatus'; + }, + { + code: 10264; + name: 'InvalidMessageStatus'; + msg: 'InvalidMessageStatus'; + }, + { + code: 10266; + name: 'HashNotComputed'; + msg: 'HashNotComputed'; + }, + { + code: 10268; + name: 'InvalidVaaVersion'; + msg: 'InvalidVaaVersion'; + }, + { + code: 10270; + name: 'InvalidCreatedAccountSize'; + msg: 'InvalidCreatedAccountSize'; + }, + { + code: 10272; + name: 'DataOverflow'; + msg: 'DataOverflow'; + }, + { + code: 10274; + name: 'ExceedsMaxPayloadSize'; + msg: 'ExceedsMaxPayloadSize (30KB)'; + }, + { + code: 10276; + name: 'CannotParseVaa'; + msg: 'CannotParseVaa'; + }, + { + code: 10278; + name: 'EmitterAuthorityMismatch'; + msg: 'EmitterAuthorityMismatch'; + }, + { + code: 10280; + name: 'InvalidProgramEmitter'; + msg: 'InvalidProgramEmitter'; + }, + { + code: 10282; + name: 'WriteAuthorityMismatch'; + msg: 'WriteAuthorityMismatch'; + }, + { + code: 10284; + name: 'PostedVaaPayloadTooLarge'; + msg: 'PostedVaaPayloadTooLarge'; + }, + { + code: 10286; + name: 'ExecutableDisallowed'; + msg: 'ExecutableDisallowed'; + }, + ]; +}; + +export const WORMHOLE_CORE_BRIDGE_SOLANA_IDL: WormholeCoreBridgeSolana = { + version: '0.0.1-alpha.5', + name: 'wormhole_core_bridge_solana', + constants: [ + { + name: 'SOLANA_CHAIN', + type: 'u16', + value: '1', + }, + { + name: 'FEE_COLLECTOR_SEED_PREFIX', + type: 'bytes', + value: '[102, 101, 101, 95, 99, 111, 108, 108, 101, 99, 116, 111, 114]', + }, + { + name: 'UPGRADE_SEED_PREFIX', + type: 'bytes', + value: '[117, 112, 103, 114, 97, 100, 101]', + }, + { + name: 'PROGRAM_EMITTER_SEED_PREFIX', + type: 'bytes', + value: '[101, 109, 105, 116, 116, 101, 114]', + }, + { + name: 'MAX_MESSAGE_PAYLOAD_SIZE', + type: { + defined: 'usize', + }, + value: '30 * 1_024', + }, + ], + instructions: [ + { + name: 'initMessageV1', + docs: [ + 'Processor for initializing a new draft [PostedMessageV1](crate::state::PostedMessageV1)', + 'account for writing. The emitter authority is established at this point and the payload size', + 'is inferred from the size of the created account. This instruction handler also allows an', + "integrator to publish Wormhole messages using his program's ID as the emitter address", + '(by passing `Some(crate::ID)` to the [cpi_program_id](InitMessageV1Args::cpi_program_id)', + 'argument). **Be aware that the emitter authority\'s seeds must only be \\[b"emitter"\\] in this', + 'case.**', + '', + 'This instruction should be followed up with `write_message_v1` and `finalize_message_v1` to', + 'write and indicate that the message is ready for publishing respectively (to prepare it for', + 'publishing via the', + '[post message instruction](crate::legacy::instruction::LegacyInstruction::PostMessage)).', + '', + 'NOTE: If you wish to publish a small message (one where the data does not overflow the', + 'Solana transaction size), it is recommended that you use an [sdk](crate::sdk::cpi) method to', + 'either prepare your message or post a message as a program ID emitter.', + ], + accounts: [ + { + name: 'emitterAuthority', + isMut: false, + isSigner: true, + docs: [ + 'This authority is the only one who can write to the draft message account.', + ], + }, + { + name: 'draftMessage', + isMut: true, + isSigner: false, + docs: ['Bridge.'], + }, + ], + args: [ + { + name: 'args', + type: { + defined: 'InitMessageV1Args', + }, + }, + ], + }, + { + name: 'writeMessageV1', + docs: [ + 'Processor used to write to a draft [PostedMessageV1](crate::state::PostedMessageV1) account.', + 'This instruction requires an authority (the emitter authority) to interact with the message', + 'account.', + ], + accounts: [ + { + name: 'emitterAuthority', + isMut: false, + isSigner: true, + }, + { + name: 'draftMessage', + isMut: true, + isSigner: false, + docs: ['only be published when the message is finalized.'], + }, + ], + args: [ + { + name: 'args', + type: { + defined: 'WriteMessageV1Args', + }, + }, + ], + }, + { + name: 'finalizeMessageV1', + docs: [ + 'Processor used to finalize a draft [PostedMessageV1](crate::state::PostedMessageV1) account.', + 'Once finalized, this message account cannot be written to again. A finalized message is the', + 'only state the legacy post message instruction can accept before publishing. This', + 'instruction requires an authority (the emitter authority) to interact with the message', + 'account.', + ], + accounts: [ + { + name: 'emitterAuthority', + isMut: false, + isSigner: true, + }, + { + name: 'draftMessage', + isMut: true, + isSigner: false, + docs: ['only be published when the message is finalized.'], + }, + ], + args: [], + }, + { + name: 'closeMessageV1', + docs: [ + 'Processor used to process a draft [PostedMessageV1](crate::state::PostedMessageV1) account.', + 'This instruction requires an authority (the emitter authority) to interact with the message', + 'account.', + ], + accounts: [ + { + name: 'emitterAuthority', + isMut: false, + isSigner: true, + }, + { + name: 'draftMessage', + isMut: true, + isSigner: false, + docs: ['only be published when the message is finalized.'], + }, + { + name: 'closeAccountDestination', + isMut: true, + isSigner: false, + }, + ], + args: [], + }, + { + name: 'initEncodedVaa', + docs: [ + 'Processor used to intialize a created account as [EncodedVaa](crate::state::EncodedVaa). An', + 'authority (the write authority) is established with this instruction.', + ], + accounts: [ + { + name: 'writeAuthority', + isMut: false, + isSigner: true, + docs: [ + 'The authority who can write to the VAA account when it is being processed.', + ], + }, + { + name: 'encodedVaa', + isMut: true, + isSigner: false, + docs: ['Bridge.'], + }, + ], + args: [], + }, + { + name: 'closeEncodedVaa', + docs: [ + 'Processor used to close an [EncodedVaa](crate::state::EncodedVaa). This instruction requires', + 'an authority (the write authority) to interact witht he encoded VAA account.', + ], + accounts: [ + { + name: 'writeAuthority', + isMut: true, + isSigner: true, + docs: [ + 'This account is only required to be mutable for the `CloseVaaAccount` directive. This', + 'authority is the same signer that originally created the VAA accounts, so he is the one that', + 'will receive the lamports back for the closed accounts.', + ], + }, + { + name: 'encodedVaa', + isMut: true, + isSigner: false, + docs: ['written to and then verified.'], + }, + ], + args: [], + }, + { + name: 'writeEncodedVaa', + docs: [ + 'Processor used to write to an [EncodedVaa](crate::state::EncodedVaa) account. This', + 'instruction requires an authority (the write authority) to interact with the encoded VAA', + 'account.', + ], + accounts: [ + { + name: 'writeAuthority', + isMut: false, + isSigner: true, + docs: [ + 'The only authority that can write to the encoded VAA account.', + ], + }, + { + name: 'draftVaa', + isMut: true, + isSigner: false, + docs: ['written to and then verified.'], + }, + ], + args: [ + { + name: 'args', + type: { + defined: 'WriteEncodedVaaArgs', + }, + }, + ], + }, + { + name: 'verifyEncodedVaaV1', + docs: [ + 'Processor used to verify an [EncodedVaa](crate::state::EncodedVaa) account as a version 1', + 'VAA (guardian signatures attesting to this observation). This instruction requires an', + 'authority (the write authority) to interact with the encoded VAA account.', + ], + accounts: [ + { + name: 'writeAuthority', + isMut: false, + isSigner: true, + }, + { + name: 'draftVaa', + isMut: true, + isSigner: false, + docs: ['written to and then verified.'], + }, + { + name: 'guardianSet', + isMut: false, + isSigner: false, + docs: [ + 'Guardian set account, which should be the same one that was used to attest for the VAA. The', + 'signatures in the encoded VAA are verified against this guardian set.', + ], + }, + ], + args: [], + }, + { + name: 'postVaaV1', + docs: [ + 'Processor used to close an [EncodedVaa](crate::state::EncodedVaa) account to create a', + '[PostedMessageV1](crate::state::PostedMessageV1) account in its place.', + '', + 'NOTE: Because the legacy verify signatures instruction was not required for the Posted VAA', + 'account to exist, the encoded [SignatureSet](crate::state::SignatureSet) is the default', + '[Pubkey].', + ], + accounts: [ + { + name: 'payer', + isMut: true, + isSigner: true, + docs: [ + 'Payer to create the posted VAA account. This instruction allows anyone with an encoded VAA', + 'to create a posted VAA account.', + ], + }, + { + name: 'encodedVaa', + isMut: false, + isSigner: false, + docs: [ + 'Encoded VAA, whose body will be serialized into the posted VAA account.', + '', + 'NOTE: This instruction handler only exists to support integrators that still rely on posted', + 'VAA accounts. While we encourage integrators to use the encoded VAA account instead, we', + 'allow a pathway to convert the encoded VAA into a posted VAA. However, the payload is', + 'restricted to 9.5KB, which is much larger than what was possible with the old implementation', + 'using the legacy post vaa instruction. The Core Bridge program will not support posting VAAs', + 'larger than this payload size.', + ], + }, + { + name: 'postedVaa', + isMut: true, + isSigner: false, + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + ], + args: [], + }, + { + name: 'closeSignatureSet', + docs: [ + 'Processor used to close a [SignatureSet](crate::state::SignatureSet), which was used to', + 'verify the VAA using the legacy parse and verify procedure.', + ], + accounts: [ + { + name: 'solDestination', + isMut: true, + isSigner: true, + }, + { + name: 'postedVaa', + isMut: false, + isSigner: false, + docs: ['Posted VAA.'], + }, + { + name: 'signatureSet', + isMut: true, + isSigner: false, + docs: [ + 'Signature set that may have been used to create the posted VAA account. If the `post_vaa_v1`', + 'instruction were used to create the posted VAA account, then the encoded signature set', + 'pubkey would be all zeroes.', + ], + }, + ], + args: [], + }, + ], + accounts: [ + { + name: 'guardianSet', + docs: [ + 'Account used to store a guardian set. The keys encoded in this account are Ethereum pubkeys.', + 'Its expiration time is determined at the time a guardian set is updated to a new set, where the', + 'current network clock time is used with', + '[guardian_set_ttl](crate::state::Config::guardian_set_ttl).', + '', + 'NOTE: The account schema is the same as legacy guardian sets, but this account now has a', + "discriminator generated by Anchor's [account] macro. When the Core Bridge program performs a", + 'guardian set update with this implementation, guardian sets will now have this Anchor-generated', + 'discriminator.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'index', + docs: [ + 'Index representing an incrementing version number for this guardian set.', + ], + type: 'u32', + }, + { + name: 'keys', + docs: ['Ethereum-style public keys.'], + type: { + vec: { + array: ['u8', 20], + }, + }, + }, + { + name: 'creationTime', + docs: [ + 'Timestamp representing the time this guardian became active.', + ], + type: { + defined: 'Timestamp', + }, + }, + { + name: 'expirationTime', + docs: [ + 'Expiration time when VAAs issued by this set are no longer valid.', + ], + type: { + defined: 'Timestamp', + }, + }, + ], + }, + }, + { + name: 'signatureSet', + docs: [ + 'Account used to store information about a guardian set used to sign a VAA. There is only one', + 'signature set for each verified VAA (associated with a', + '[PostedVaaV1](crate::legacy::state::PostedVaaV1) account). This account is created using the', + 'verify signatures legacy instruction.', + '', + 'NOTE: The account schema is the same as legacy signature sets, but this account now has a', + "discriminator generated by Anchor's [account] macro. When the Core Bridge program upgrades to", + 'this implementation from the old one, integrators in the middle of verifying signatures will', + 'have to use a new keypair for this account and try again.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'sigVerifySuccesses', + docs: ['Signatures of validators'], + type: { + vec: 'bool', + }, + }, + { + name: 'messageHash', + docs: ['Hash of the VAA message body.'], + type: { + defined: 'MessageHash', + }, + }, + { + name: 'guardianSetIndex', + docs: ['Index of the guardian set'], + type: 'u32', + }, + ], + }, + }, + { + name: 'encodedVaa', + docs: [ + 'Account used to warehouse VAA buffer.', + '', + "NOTE: This account should not be used by an external application unless the header's status is", + '`Verified`. It is encouraged to use the `EncodedVaa` zero-copy account struct instead.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'header', + docs: ['Status, write authority and VAA version.'], + type: { + defined: 'Header', + }, + }, + { + name: 'buf', + docs: ['VAA buffer.'], + type: 'bytes', + }, + ], + }, + }, + ], + types: [ + { + name: 'InitializeArgs', + docs: ['Arguments used to initialize the Core Bridge program.'], + type: { + kind: 'struct', + fields: [ + { + name: 'guardianSetTtlSeconds', + type: 'u32', + }, + { + name: 'feeLamports', + type: 'u64', + }, + { + name: 'initialGuardians', + type: { + vec: { + array: ['u8', 20], + }, + }, + }, + ], + }, + }, + { + name: 'PostMessageArgs', + docs: [ + 'Arguments used to post a new Wormhole (Core Bridge) message either using', + '[post_message](crate::legacy::instruction::post_message) or', + '[post_message_unreliable](crate::legacy::instruction::post_message_unreliable).', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'nonce', + docs: ['Unique id for this message.'], + type: 'u32', + }, + { + name: 'payload', + docs: ['Encoded message.'], + type: 'bytes', + }, + { + name: 'commitment', + docs: ['Solana commitment level for Guardian observation.'], + type: { + defined: 'Commitment', + }, + }, + ], + }, + }, + { + name: 'PostVaaArgs', + docs: [ + 'Arguments to post new VAA data after signature verification.', + '', + 'NOTE: It is preferred to use the new process of verifying a VAA using the new Core Bridge Anchor', + 'instructions. See [init_encoded_vaa](crate::wormhole_core_bridge_solana::init_encoded_vaa) and', + '[write_encoded_vaa](crate::wormhole_core_bridge_solana::write_encoded_vaa) for more info.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'gap0', + docs: ['Unused data.'], + type: { + array: ['u8', 5], + }, + }, + { + name: 'timestamp', + docs: ['Time the message was submitted.'], + type: 'u32', + }, + { + name: 'nonce', + docs: ['Unique ID for this message.'], + type: 'u32', + }, + { + name: 'emitterChain', + docs: [ + 'The Wormhole chain ID denoting the origin of this message.', + ], + type: 'u16', + }, + { + name: 'emitterAddress', + docs: ['Emitter of the message.'], + type: { + array: ['u8', 32], + }, + }, + { + name: 'sequence', + docs: ['Sequence number of this message.'], + type: 'u64', + }, + { + name: 'consistencyLevel', + docs: ['Level of consistency requested by the emitter.'], + type: 'u8', + }, + { + name: 'payload', + docs: ['Message payload.'], + type: 'bytes', + }, + ], + }, + }, + { + name: 'VerifySignaturesArgs', + docs: [ + 'Arguments to verify specific guardian indices.', + '', + 'NOTE: It is preferred to use the new process of verifying a VAA using the new Core Bridge Anchor', + 'instructions. See [init_encoded_vaa](crate::wormhole_core_bridge_solana::init_encoded_vaa) and', + '[write_encoded_vaa](crate::wormhole_core_bridge_solana::write_encoded_vaa) for more info.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'signerIndices', + docs: [ + 'Indices of verified guardian signatures, where -1 indicates a missing value. There is a', + 'missing value if the guardian at this index is not expected to have its signature verfied by', + 'the Sig Verify native program in the instruction invoked prior).', + '', + 'NOTE: In the legacy implementation, this argument being a fixed-sized array of 19 only', + 'allows the first 19 guardians of any size guardian set to be verified. Because of this, it', + 'is absolutely important to use the new process of verifying a VAA.', + ], + type: { + array: ['i8', 19], + }, + }, + ], + }, + }, + { + name: 'EmptyArgs', + docs: ['Unit struct used to represent an empty instruction argument.'], + type: { + kind: 'struct', + fields: [], + }, + }, + { + name: 'Config', + docs: [ + 'Account used to store the current configuration of the bridge, including tracking Wormhole fee', + 'payments. For governance decrees, the guardian set index is used to determine whether a decree', + 'was attested for using the latest guardian set.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'guardianSetIndex', + docs: [ + 'The current guardian set index, used to decide which signature sets to accept.', + ], + type: 'u32', + }, + { + name: 'gap0', + docs: [ + 'Gap. In the old implementation, this was an amount that kept track of message fees that', + "were paid to the program's fee collector.", + ], + type: { + array: ['u8', 8], + }, + }, + { + name: 'guardianSetTtl', + docs: [ + 'Period for how long a guardian set is valid after it has been replaced by a new one. This', + 'guarantees that VAAs issued by that set can still be submitted for a certain period. In', + 'this period we still trust the old guardian set.', + ], + type: { + defined: 'Duration', + }, + }, + { + name: 'feeLamports', + docs: [ + 'Amount of lamports that needs to be paid to the protocol to post a message', + ], + type: 'u64', + }, + ], + }, + }, + { + name: 'LegacyEmitterSequence', + docs: [ + 'Account used to store the current sequence number for a given emitter.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'value', + docs: [ + 'Current sequence number, which will be used the next time this emitter publishes a message.', + ], + type: 'u64', + }, + ], + }, + }, + { + name: 'EmitterSequence', + type: { + kind: 'struct', + fields: [ + { + name: 'legacy', + type: { + defined: 'LegacyEmitterSequence', + }, + }, + { + name: 'bump', + type: 'u8', + }, + { + name: 'emitterType', + type: { + defined: 'EmitterType', + }, + }, + ], + }, + }, + { + name: 'PostedMessageV1Unreliable', + docs: ['Account used to store a published (reusable) Wormhole message.'], + type: { + kind: 'struct', + fields: [ + { + name: 'data', + type: { + defined: 'PostedMessageV1Data', + }, + }, + ], + }, + }, + { + name: 'PostedMessageV1Info', + docs: [ + 'Message metadata defining information about a published Wormhole message.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'consistencyLevel', + docs: ['Level of consistency requested by the emitter.'], + type: 'u8', + }, + { + name: 'emitterAuthority', + docs: [ + 'Authority used to write the message. This field is set to default when the message is', + 'posted.', + ], + type: 'publicKey', + }, + { + name: 'status', + docs: [ + 'If a message is being written to, this status is used to determine which state this', + 'account is in (e.g. [MessageStatus::Writing] indicates that the emitter authority is still', + 'writing its message to this account). When this message is posted, this value will be', + 'set to [MessageStatus::Published].', + ], + type: { + defined: 'MessageStatus', + }, + }, + { + name: 'gap0', + docs: ['No data is stored here.'], + type: { + array: ['u8', 3], + }, + }, + { + name: 'postedTimestamp', + docs: ['Time the posted message was created.'], + type: { + defined: 'Timestamp', + }, + }, + { + name: 'nonce', + docs: ['Unique id for this message.'], + type: 'u32', + }, + { + name: 'sequence', + docs: ['Sequence number of this message.'], + type: 'u64', + }, + { + name: 'solanaChainId', + docs: [ + 'Always `1`.', + '', + 'NOTE: Saving this value is silly, but we are keeping it to be consistent with how the posted', + 'message account is written.', + ], + type: { + defined: 'ChainIdSolanaOnly', + }, + }, + { + name: 'emitter', + docs: [ + 'Emitter of the message. This may either be the emitter authority or a program ID.', + ], + type: 'publicKey', + }, + ], + }, + }, + { + name: 'PostedMessageV1Data', + docs: [ + 'Underlying data for either [PostedMessageV1](crate::legacy::state::PostedMessageV1) or', + '[PostedMessageV1Unreliable](crate::legacy::state::PostedMessageV1Unreliable).', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'info', + docs: ['Message metadata.'], + type: { + defined: 'PostedMessageV1Info', + }, + }, + { + name: 'payload', + docs: ['Encoded message.'], + type: 'bytes', + }, + ], + }, + }, + { + name: 'PostedMessageV1', + docs: [ + 'Account used to store a published Wormhole message.', + '', + 'NOTE: If your integration requires reusable message accounts, please see', + '[PostedMessageV1Unreliable](crate::legacy::state::PostedMessageV1Unreliable).', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'data', + docs: ['Message data.'], + type: { + defined: 'PostedMessageV1Data', + }, + }, + ], + }, + }, + { + name: 'PostedVaaV1Info', + docs: [ + 'VAA metadata defining information about a Wormhole message attested for by an active guardian', + 'set.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'consistencyLevel', + docs: ['Level of consistency requested by the emitter.'], + type: 'u8', + }, + { + name: 'timestamp', + docs: ['Time the message was submitted.'], + type: { + defined: 'Timestamp', + }, + }, + { + name: 'signatureSet', + docs: [ + "Pubkey of [SignatureSet](crate::state::SignatureSet) account that represents this VAA's", + 'signature verification.', + ], + type: 'publicKey', + }, + { + name: 'guardianSetIndex', + docs: [ + 'Guardian set index used to verify signatures for [SignatureSet](crate::state::SignatureSet).', + '', + 'NOTE: In the previous implementation, this member was referred to as the "posted timestamp",', + 'which is zero for VAA data (posted messages and VAAs resemble the same account schema). By', + 'changing this to the guardian set index, we patch a bug with verifying governance VAAs for', + 'the Core Bridge (other Core Bridge implementations require that the guardian set that', + 'attested for the governance VAA is the current one).', + ], + type: 'u32', + }, + { + name: 'nonce', + docs: ['Unique ID for this message.'], + type: 'u32', + }, + { + name: 'sequence', + docs: ['Sequence number of this message.'], + type: 'u64', + }, + { + name: 'emitterChain', + docs: [ + 'The Wormhole chain ID denoting the origin of this message.', + ], + type: 'u16', + }, + { + name: 'emitterAddress', + docs: ['Emitter of the message.'], + type: { + array: ['u8', 32], + }, + }, + ], + }, + }, + { + name: 'PostedVaaV1', + docs: ['Account used to store a verified VAA.'], + type: { + kind: 'struct', + fields: [ + { + name: 'info', + docs: ['VAA metadata.'], + type: { + defined: 'PostedVaaV1Info', + }, + }, + { + name: 'payload', + docs: ['Message payload.'], + type: 'bytes', + }, + ], + }, + }, + { + name: 'WriteEncodedVaaArgs', + docs: [ + 'Arguments for the [write_encoded_vaa](crate::wormhole_core_bridge_solana::write_encoded_vaa)', + 'instruction.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'index', + docs: ['Index of VAA buffer.'], + type: 'u32', + }, + { + name: 'data', + docs: [ + 'Data representing subset of VAA buffer starting at specified index.', + ], + type: 'bytes', + }, + ], + }, + }, + { + name: 'InitMessageV1Args', + docs: [ + 'Arguments for the [init_message_v1](crate::wormhole_core_bridge_solana::init_message_v1)', + 'instruction.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'nonce', + docs: ['Unique id for this message.'], + type: 'u32', + }, + { + name: 'commitment', + docs: ['Solana commitment level for Guardian observation.'], + type: { + defined: 'Commitment', + }, + }, + { + name: 'cpiProgramId', + docs: [ + 'Optional program ID if the emitter address will be your program ID.', + '', + 'NOTE: If `Some(program_id)`, your emitter authority seeds to be \\[b"emitter\\].', + ], + type: { + option: 'publicKey', + }, + }, + ], + }, + }, + { + name: 'WriteMessageV1Args', + docs: [ + 'Arguments for the [write_message_v1](crate::wormhole_core_bridge_solana::write_message_v1)', + 'instruction.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'index', + docs: ['Index of message buffer.'], + type: 'u32', + }, + { + name: 'data', + docs: [ + 'Data representing subset of message buffer starting at specified index.', + ], + type: 'bytes', + }, + ], + }, + }, + { + name: 'Header', + docs: ['`EncodedVaa` account header.'], + type: { + kind: 'struct', + fields: [ + { + name: 'status', + docs: [ + 'Processing status. **This encoded VAA is only considered usable when this status is set', + 'to [Verified](ProcessingStatus::Verified).**', + ], + type: { + defined: 'ProcessingStatus', + }, + }, + { + name: 'writeAuthority', + docs: ['The authority that has write privilege to this account.'], + type: 'publicKey', + }, + { + name: 'version', + docs: [ + 'VAA version. Only when the VAA is verified is this version set to a value.', + ], + type: 'u8', + }, + ], + }, + }, + { + name: 'Timestamp', + docs: [ + 'This struct defines unix timestamp as u32 (as opposed to more modern systems that have adopted', + "i64). Methods for this struct are meant to convert Solana's clock type to this type assuming we", + 'are far from year 2038.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'value', + type: 'u32', + }, + ], + }, + }, + { + name: 'Duration', + docs: [ + 'To be used with the [Timestamp] type, this struct defines a duration in seconds.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'seconds', + type: 'u32', + }, + ], + }, + }, + { + name: 'MessageHash', + docs: ['This type is used to represent a message hash (keccak).'], + type: { + kind: 'struct', + fields: [ + { + name: 'bytes', + type: { + array: ['u8', 32], + }, + }, + ], + }, + }, + { + name: 'ChainIdSolanaOnly', + docs: [ + 'This type is kind of silly. But because [PostedMessageV1](crate::state::PostedMessageV1) has the', + "emitter chain ID as a field, which is unnecessary since it is always Solana's chain ID, we use", + 'this type to guarantee that the encoded chain ID is always `1`.', + ], + type: { + kind: 'struct', + fields: [ + { + name: 'chainId', + type: 'u16', + }, + ], + }, + }, + { + name: 'EmitterInfo', + type: { + kind: 'struct', + fields: [ + { + name: 'chain', + type: 'u16', + }, + { + name: 'address', + type: { + array: ['u8', 32], + }, + }, + { + name: 'sequence', + type: 'u64', + }, + ], + }, + }, + { + name: 'LegacyInstruction', + docs: [ + 'Legacy instruction selector.', + '', + 'NOTE: No more instructions should be added to this enum. Instead, add them as Anchor instruction', + 'handlers, which will inevitably live in', + '[wormhole_core_bridge_solana](crate::wormhole_core_bridge_solana).', + ], + type: { + kind: 'enum', + variants: [ + { + name: 'Initialize', + }, + { + name: 'PostMessage', + }, + { + name: 'PostVaa', + }, + { + name: 'SetMessageFee', + }, + { + name: 'TransferFees', + }, + { + name: 'UpgradeContract', + }, + { + name: 'GuardianSetUpdate', + }, + { + name: 'VerifySignatures', + }, + { + name: 'PostMessageUnreliable', + }, + ], + }, + }, + { + name: 'EmitterType', + type: { + kind: 'enum', + variants: [ + { + name: 'Unset', + }, + { + name: 'Legacy', + }, + { + name: 'Executable', + }, + ], + }, + }, + { + name: 'MessageStatus', + docs: [ + 'Status of a message. When a message is posted, its status is', + '[Published](MessageStatus::Published).', + ], + type: { + kind: 'enum', + variants: [ + { + name: 'Published', + }, + { + name: 'Writing', + }, + { + name: 'ReadyForPublishing', + }, + ], + }, + }, + { + name: 'PublishMessageDirective', + docs: ['Directive used to determine how to post a Core Bridge message.'], + type: { + kind: 'enum', + variants: [ + { + name: 'Message', + fields: [ + { + name: 'nonce', + type: 'u32', + }, + { + name: 'payload', + type: 'bytes', + }, + { + name: 'commitment', + type: { + defined: 'Commitment', + }, + }, + ], + }, + { + name: 'ProgramMessage', + fields: [ + { + name: 'programId', + type: 'publicKey', + }, + { + name: 'nonce', + type: 'u32', + }, + { + name: 'payload', + type: 'bytes', + }, + { + name: 'commitment', + type: { + defined: 'Commitment', + }, + }, + ], + }, + { + name: 'PreparedMessage', + }, + ], + }, + }, + { + name: 'ProcessingStatus', + docs: ["Encoded VAA's processing status."], + type: { + kind: 'enum', + variants: [ + { + name: 'Unset', + }, + { + name: 'Writing', + }, + { + name: 'Verified', + }, + ], + }, + }, + { + name: 'Commitment', + docs: [ + "Representation of Solana's commitment levels. This enum is not exhaustive because Wormhole only", + 'considers these two commitment levels in its Guardian observation.', + '', + 'See for more info.', + ], + type: { + kind: 'enum', + variants: [ + { + name: 'Confirmed', + }, + { + name: 'Finalized', + }, + ], + }, + }, + ], + errors: [ + { + code: 6002, + name: 'InvalidInstructionArgument', + msg: 'InvalidInstructionArgument', + }, + { + code: 6003, + name: 'AccountNotZeroed', + msg: 'AccountNotZeroed', + }, + { + code: 6004, + name: 'InvalidDataConversion', + msg: 'InvalidDataConversion', + }, + { + code: 6006, + name: 'U64Overflow', + msg: 'U64Overflow', + }, + { + code: 6008, + name: 'InvalidComputeSize', + msg: 'InvalidComputeSize', + }, + { + code: 6016, + name: 'InvalidChain', + msg: 'InvalidChain', + }, + { + code: 6032, + name: 'InvalidGovernanceEmitter', + msg: 'InvalidGovernanceEmitter', + }, + { + code: 6034, + name: 'InvalidGovernanceAction', + msg: 'InvalidGovernanceAction', + }, + { + code: 6036, + name: 'LatestGuardianSetRequired', + msg: 'LatestGuardianSetRequired', + }, + { + code: 6038, + name: 'GovernanceForAnotherChain', + msg: 'GovernanceForAnotherChain', + }, + { + code: 6040, + name: 'InvalidGovernanceVaa', + msg: 'InvalidGovernanceVaa', + }, + { + code: 6256, + name: 'InsufficientFees', + msg: 'InsufficientFees', + }, + { + code: 6258, + name: 'EmitterMismatch', + msg: 'EmitterMismatch', + }, + { + code: 6260, + name: 'NotReadyForPublishing', + msg: 'NotReadyForPublishing', + }, + { + code: 6262, + name: 'InvalidPreparedMessage', + msg: 'InvalidPreparedMessage', + }, + { + code: 6264, + name: 'ExecutableEmitter', + msg: 'ExecutableEmitter', + }, + { + code: 6266, + name: 'LegacyEmitter', + msg: 'LegacyEmitter', + }, + { + code: 6512, + name: 'InvalidSignatureSet', + msg: 'InvalidSignatureSet', + }, + { + code: 6514, + name: 'InvalidMessageHash', + msg: 'InvalidMessageHash', + }, + { + code: 6515, + name: 'NoQuorum', + msg: 'NoQuorum', + }, + { + code: 6516, + name: 'MessageMismatch', + msg: 'MessageMismatch', + }, + { + code: 7024, + name: 'NotEnoughLamports', + msg: 'NotEnoughLamports', + }, + { + code: 7026, + name: 'InvalidFeeRecipient', + msg: 'InvalidFeeRecipient', + }, + { + code: 7280, + name: 'ImplementationMismatch', + msg: 'ImplementationMismatch', + }, + { + code: 7536, + name: 'InvalidGuardianSetIndex', + msg: 'InvalidGuardianSetIndex', + }, + { + code: 7792, + name: 'GuardianSetMismatch', + msg: 'GuardianSetMismatch', + }, + { + code: 7794, + name: 'InstructionAtWrongIndex', + msg: 'InstructionAtWrongIndex', + }, + { + code: 7795, + name: 'EmptySigVerifyInstruction', + msg: 'EmptySigVerifyInstruction', + }, + { + code: 7796, + name: 'InvalidSigVerifyInstruction', + msg: 'InvalidSigVerifyInstruction', + }, + { + code: 7798, + name: 'GuardianSetExpired', + msg: 'GuardianSetExpired', + }, + { + code: 7800, + name: 'InvalidGuardianKeyRecovery', + msg: 'InvalidGuardianKeyRecovery', + }, + { + code: 7802, + name: 'SignerIndicesMismatch', + msg: 'SignerIndicesMismatch', + }, + { + code: 8048, + name: 'PayloadSizeMismatch', + msg: 'PayloadSizeMismatch', + }, + { + code: 10112, + name: 'ZeroGuardians', + msg: 'ZeroGuardians', + }, + { + code: 10128, + name: 'GuardianZeroAddress', + msg: 'GuardianZeroAddress', + }, + { + code: 10144, + name: 'DuplicateGuardianAddress', + msg: 'DuplicateGuardianAddress', + }, + { + code: 10160, + name: 'MessageAlreadyPublished', + msg: 'MessageAlreadyPublished', + }, + { + code: 10176, + name: 'VaaWritingDisallowed', + msg: 'VaaWritingDisallowed', + }, + { + code: 10192, + name: 'VaaAlreadyVerified', + msg: 'VaaAlreadyVerified', + }, + { + code: 10208, + name: 'InvalidGuardianIndex', + msg: 'InvalidGuardianIndex', + }, + { + code: 10224, + name: 'InvalidSignature', + msg: 'InvalidSignature', + }, + { + code: 10256, + name: 'UnverifiedVaa', + msg: 'UnverifiedVaa', + }, + { + code: 10258, + name: 'VaaStillProcessing', + msg: 'VaaStillProcessing', + }, + { + code: 10260, + name: 'InWritingStatus', + msg: 'InWritingStatus', + }, + { + code: 10262, + name: 'NotInWritingStatus', + msg: 'NotInWritingStatus', + }, + { + code: 10264, + name: 'InvalidMessageStatus', + msg: 'InvalidMessageStatus', + }, + { + code: 10266, + name: 'HashNotComputed', + msg: 'HashNotComputed', + }, + { + code: 10268, + name: 'InvalidVaaVersion', + msg: 'InvalidVaaVersion', + }, + { + code: 10270, + name: 'InvalidCreatedAccountSize', + msg: 'InvalidCreatedAccountSize', + }, + { + code: 10272, + name: 'DataOverflow', + msg: 'DataOverflow', + }, + { + code: 10274, + name: 'ExceedsMaxPayloadSize', + msg: 'ExceedsMaxPayloadSize (30KB)', + }, + { + code: 10276, + name: 'CannotParseVaa', + msg: 'CannotParseVaa', + }, + { + code: 10278, + name: 'EmitterAuthorityMismatch', + msg: 'EmitterAuthorityMismatch', + }, + { + code: 10280, + name: 'InvalidProgramEmitter', + msg: 'InvalidProgramEmitter', + }, + { + code: 10282, + name: 'WriteAuthorityMismatch', + msg: 'WriteAuthorityMismatch', + }, + { + code: 10284, + name: 'PostedVaaPayloadTooLarge', + msg: 'PostedVaaPayloadTooLarge', + }, + { + code: 10286, + name: 'ExecutableDisallowed', + msg: 'ExecutableDisallowed', + }, + ], +}; + +export type PythSolanaReceiver = { + version: '0.1.0'; + name: 'pyth_solana_receiver'; + instructions: [ + { + name: 'initialize'; + accounts: [ + { + name: 'payer'; + isMut: true; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + { + name: 'systemProgram'; + isMut: false; + isSigner: false; + }, + ]; + args: [ + { + name: 'initialConfig'; + type: { + defined: 'Config'; + }; + }, + ]; + }, + { + name: 'requestGovernanceAuthorityTransfer'; + accounts: [ + { + name: 'payer'; + isMut: false; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + ]; + args: [ + { + name: 'targetGovernanceAuthority'; + type: 'publicKey'; + }, + ]; + }, + { + name: 'acceptGovernanceAuthorityTransfer'; + accounts: [ + { + name: 'payer'; + isMut: false; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + ]; + args: []; + }, + { + name: 'setDataSources'; + accounts: [ + { + name: 'payer'; + isMut: false; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + ]; + args: [ + { + name: 'validDataSources'; + type: { + vec: { + defined: 'DataSource'; + }; + }; + }, + ]; + }, + { + name: 'setFee'; + accounts: [ + { + name: 'payer'; + isMut: false; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + ]; + args: [ + { + name: 'singleUpdateFeeInLamports'; + type: 'u64'; + }, + ]; + }, + { + name: 'setWormholeAddress'; + accounts: [ + { + name: 'payer'; + isMut: false; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + ]; + args: [ + { + name: 'wormhole'; + type: 'publicKey'; + }, + ]; + }, + { + name: 'setMinimumSignatures'; + accounts: [ + { + name: 'payer'; + isMut: false; + isSigner: true; + }, + { + name: 'config'; + isMut: true; + isSigner: false; + }, + ]; + args: [ + { + name: 'minimumSignatures'; + type: 'u8'; + }, + ]; + }, + { + name: 'postUpdateAtomic'; + docs: [ + 'Post a price update using a VAA and a MerklePriceUpdate.', + 'This function allows you to post a price update in a single transaction.', + "Compared to post_update, it is less secure since you won't be able to verify all guardian signatures if you use this function because of transaction size limitations.", + 'Typically, you can fit 5 guardian signatures in a transaction that uses this.', + ]; + accounts: [ + { + name: 'payer'; + isMut: true; + isSigner: true; + }, + { + name: 'guardianSet'; + isMut: false; + isSigner: false; + docs: [ + 'Instead we do the same steps in deserialize_guardian_set_checked.', + ]; + }, + { + name: 'config'; + isMut: false; + isSigner: false; + }, + { + name: 'treasury'; + isMut: true; + isSigner: false; + }, + { + name: 'priceUpdateAccount'; + isMut: true; + isSigner: true; + docs: [ + 'The contraint is such that either the price_update_account is uninitialized or the payer is the write_authority.', + "Pubkey::default() is the SystemProgram on Solana and it can't sign so it's impossible that price_update_account.write_authority == Pubkey::default() once the account is initialized", + ]; + }, + { + name: 'systemProgram'; + isMut: false; + isSigner: false; + }, + { + name: 'writeAuthority'; + isMut: false; + isSigner: true; + }, + ]; + args: [ + { + name: 'params'; + type: { + defined: 'PostUpdateAtomicParams'; + }; + }, + ]; + }, + { + name: 'postUpdate'; + docs: [ + 'Post a price update using an encoded_vaa account and a MerklePriceUpdate calldata.', + 'This should be called after the client has already verified the Vaa via the Wormhole contract.', + 'Check out target_chains/solana/cli/src/main.rs for an example of how to do this.', + ]; + accounts: [ + { + name: 'payer'; + isMut: true; + isSigner: true; + }, + { + name: 'encodedVaa'; + isMut: false; + isSigner: false; + }, + { + name: 'config'; + isMut: false; + isSigner: false; + }, + { + name: 'treasury'; + isMut: true; + isSigner: false; + }, + { + name: 'priceUpdateAccount'; + isMut: true; + isSigner: true; + docs: [ + 'The contraint is such that either the price_update_account is uninitialized or the payer is the write_authority.', + "Pubkey::default() is the SystemProgram on Solana and it can't sign so it's impossible that price_update_account.write_authority == Pubkey::default() once the account is initialized", + ]; + }, + { + name: 'systemProgram'; + isMut: false; + isSigner: false; + }, + { + name: 'writeAuthority'; + isMut: false; + isSigner: true; + }, + ]; + args: [ + { + name: 'params'; + type: { + defined: 'PostUpdateParams'; + }; + }, + ]; + }, + { + name: 'reclaimRent'; + accounts: [ + { + name: 'payer'; + isMut: true; + isSigner: true; + }, + { + name: 'priceUpdateAccount'; + isMut: true; + isSigner: false; + }, + ]; + args: []; + }, + ]; + accounts: [ + { + name: 'Config'; + type: { + kind: 'struct'; + fields: [ + { + name: 'governanceAuthority'; + type: 'publicKey'; + }, + { + name: 'targetGovernanceAuthority'; + type: { + option: 'publicKey'; + }; + }, + { + name: 'wormhole'; + type: 'publicKey'; + }, + { + name: 'validDataSources'; + type: { + vec: { + defined: 'DataSource'; + }; + }; + }, + { + name: 'singleUpdateFeeInLamports'; + type: 'u64'; + }, + { + name: 'minimumSignatures'; + type: 'u8'; + }, + ]; + }; + }, + { + name: 'priceUpdateV2'; + type: { + kind: 'struct'; + fields: [ + { + name: 'writeAuthority'; + type: 'publicKey'; + }, + { + name: 'verificationLevel'; + type: { + defined: 'VerificationLevel'; + }; + }, + { + name: 'priceMessage'; + type: { + defined: 'PriceFeedMessage'; + }; + }, + { + name: 'postedSlot'; + type: 'u64'; + }, + ]; + }; + }, + ]; + types: [ + { + name: 'PriceFeedMessage'; + type: { + kind: 'struct'; + fields: [ + { + name: 'feedId'; + type: { + array: ['u8', 32]; + }; + }, + { + name: 'price'; + type: 'i64'; + }, + { + name: 'conf'; + type: 'u64'; + }, + { + name: 'exponent'; + type: 'i32'; + }, + { + name: 'publishTime'; + type: 'i64'; + }, + { + name: 'prevPublishTime'; + type: 'i64'; + }, + { + name: 'emaPrice'; + type: 'i64'; + }, + { + name: 'emaConf'; + type: 'u64'; + }, + ]; + }; + }, + { + name: 'MerklePriceUpdate'; + type: { + kind: 'struct'; + fields: [ + { + name: 'message'; + type: 'bytes'; + }, + { + name: 'proof'; + type: { + vec: { + array: ['u8', 20]; + }; + }; + }, + ]; + }; + }, + { + name: 'DataSource'; + type: { + kind: 'struct'; + fields: [ + { + name: 'chain'; + type: 'u16'; + }, + { + name: 'emitter'; + type: 'publicKey'; + }, + ]; + }; + }, + { + name: 'PostUpdateAtomicParams'; + type: { + kind: 'struct'; + fields: [ + { + name: 'vaa'; + type: 'bytes'; + }, + { + name: 'merklePriceUpdate'; + type: { + defined: 'MerklePriceUpdate'; + }; + }, + { + name: 'treasuryId'; + type: 'u8'; + }, + ]; + }; + }, + { + name: 'PostUpdateParams'; + type: { + kind: 'struct'; + fields: [ + { + name: 'merklePriceUpdate'; + type: { + defined: 'MerklePriceUpdate'; + }; + }, + { + name: 'treasuryId'; + type: 'u8'; + }, + ]; + }; + }, + { + name: 'VerificationLevel'; + docs: [ + '* This enum represents how many guardian signatures were checked for a Pythnet price update\n * If full, guardian quorum has been attained\n * If partial, at least config.minimum signatures have been verified, but in the case config.minimum_signatures changes in the future we also include the number of signatures that were checked', + ]; + type: { + kind: 'enum'; + variants: [ + { + name: 'Partial'; + fields: [ + { + name: 'numSignatures'; + type: 'u8'; + }, + ]; + }, + { + name: 'Full'; + }, + ]; + }; + }, + ]; + errors: [ + { + code: 6000; + name: 'InvalidWormholeMessage'; + msg: 'Received an invalid wormhole message'; + }, + { + code: 6001; + name: 'DeserializeMessageFailed'; + msg: 'An error occurred when deserializing the message'; + }, + { + code: 6002; + name: 'InvalidPriceUpdate'; + msg: 'Received an invalid price update'; + }, + { + code: 6003; + name: 'UnsupportedMessageType'; + msg: 'This type of message is not supported currently'; + }, + { + code: 6004; + name: 'InvalidDataSource'; + msg: "The tuple emitter chain, emitter doesn't match one of the valid data sources."; + }, + { + code: 6005; + name: 'InsufficientFunds'; + msg: 'Funds are insufficient to pay the receiving fee'; + }, + { + code: 6006; + name: 'WrongWriteAuthority'; + msg: "This signer can't write to price update account"; + }, + { + code: 6007; + name: 'WrongVaaOwner'; + msg: 'The posted VAA account has the wrong owner.'; + }, + { + code: 6008; + name: 'DeserializeVaaFailed'; + msg: 'An error occurred when deserializing the VAA.'; + }, + { + code: 6009; + name: 'InsufficientGuardianSignatures'; + msg: 'The number of guardian signatures is below the minimum'; + }, + { + code: 6010; + name: 'InvalidVaaVersion'; + msg: 'Invalid VAA version'; + }, + { + code: 6011; + name: 'GuardianSetMismatch'; + msg: "Guardian set version in the VAA doesn't match the guardian set passed"; + }, + { + code: 6012; + name: 'InvalidGuardianOrder'; + msg: 'Guardian signature indices must be increasing'; + }, + { + code: 6013; + name: 'InvalidGuardianIndex'; + msg: 'Guardian index exceeds the number of guardians in the set'; + }, + { + code: 6014; + name: 'InvalidSignature'; + msg: 'A VAA signature is invalid'; + }, + { + code: 6015; + name: 'InvalidGuardianKeyRecovery'; + msg: "The recovered guardian public key doesn't match the guardian set"; + }, + { + code: 6016; + name: 'WrongGuardianSetOwner'; + msg: 'The guardian set account is owned by the wrong program'; + }, + { + code: 6017; + name: 'InvalidGuardianSetPda'; + msg: "The Guardian Set account doesn't match the PDA derivation"; + }, + { + code: 6018; + name: 'GuardianSetExpired'; + msg: 'The Guardian Set is expired'; + }, + { + code: 6019; + name: 'GovernanceAuthorityMismatch'; + msg: 'The signer is not authorized to perform this governance action'; + }, + { + code: 6020; + name: 'TargetGovernanceAuthorityMismatch'; + msg: 'The signer is not authorized to accept the governance authority'; + }, + { + code: 6021; + name: 'NonexistentGovernanceAuthorityTransferRequest'; + msg: 'The governance authority needs to request a transfer first'; + }, + ]; +}; + +export const IDL: PythSolanaReceiver = { + version: '0.1.0', + name: 'pyth_solana_receiver', + instructions: [ + { + name: 'initialize', + accounts: [ + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + ], + args: [ + { + name: 'initialConfig', + type: { + defined: 'Config', + }, + }, + ], + }, + { + name: 'requestGovernanceAuthorityTransfer', + accounts: [ + { + name: 'payer', + isMut: false, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'targetGovernanceAuthority', + type: 'publicKey', + }, + ], + }, + { + name: 'acceptGovernanceAuthorityTransfer', + accounts: [ + { + name: 'payer', + isMut: false, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + ], + args: [], + }, + { + name: 'setDataSources', + accounts: [ + { + name: 'payer', + isMut: false, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'validDataSources', + type: { + vec: { + defined: 'DataSource', + }, + }, + }, + ], + }, + { + name: 'setFee', + accounts: [ + { + name: 'payer', + isMut: false, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'singleUpdateFeeInLamports', + type: 'u64', + }, + ], + }, + { + name: 'setWormholeAddress', + accounts: [ + { + name: 'payer', + isMut: false, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'wormhole', + type: 'publicKey', + }, + ], + }, + { + name: 'setMinimumSignatures', + accounts: [ + { + name: 'payer', + isMut: false, + isSigner: true, + }, + { + name: 'config', + isMut: true, + isSigner: false, + }, + ], + args: [ + { + name: 'minimumSignatures', + type: 'u8', + }, + ], + }, + { + name: 'postUpdateAtomic', + docs: [ + 'Post a price update using a VAA and a MerklePriceUpdate.', + 'This function allows you to post a price update in a single transaction.', + "Compared to post_update, it is less secure since you won't be able to verify all guardian signatures if you use this function because of transaction size limitations.", + 'Typically, you can fit 5 guardian signatures in a transaction that uses this.', + ], + accounts: [ + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'guardianSet', + isMut: false, + isSigner: false, + docs: [ + 'Instead we do the same steps in deserialize_guardian_set_checked.', + ], + }, + { + name: 'config', + isMut: false, + isSigner: false, + }, + { + name: 'treasury', + isMut: true, + isSigner: false, + }, + { + name: 'priceUpdateAccount', + isMut: true, + isSigner: true, + docs: [ + 'The contraint is such that either the price_update_account is uninitialized or the payer is the write_authority.', + "Pubkey::default() is the SystemProgram on Solana and it can't sign so it's impossible that price_update_account.write_authority == Pubkey::default() once the account is initialized", + ], + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + { + name: 'writeAuthority', + isMut: false, + isSigner: true, + }, + ], + args: [ + { + name: 'params', + type: { + defined: 'PostUpdateAtomicParams', + }, + }, + ], + }, + { + name: 'postUpdate', + docs: [ + 'Post a price update using an encoded_vaa account and a MerklePriceUpdate calldata.', + 'This should be called after the client has already verified the Vaa via the Wormhole contract.', + 'Check out target_chains/solana/cli/src/main.rs for an example of how to do this.', + ], + accounts: [ + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'encodedVaa', + isMut: false, + isSigner: false, + }, + { + name: 'config', + isMut: false, + isSigner: false, + }, + { + name: 'treasury', + isMut: true, + isSigner: false, + }, + { + name: 'priceUpdateAccount', + isMut: true, + isSigner: true, + docs: [ + 'The contraint is such that either the price_update_account is uninitialized or the payer is the write_authority.', + "Pubkey::default() is the SystemProgram on Solana and it can't sign so it's impossible that price_update_account.write_authority == Pubkey::default() once the account is initialized", + ], + }, + { + name: 'systemProgram', + isMut: false, + isSigner: false, + }, + { + name: 'writeAuthority', + isMut: false, + isSigner: true, + }, + ], + args: [ + { + name: 'params', + type: { + defined: 'PostUpdateParams', + }, + }, + ], + }, + { + name: 'reclaimRent', + accounts: [ + { + name: 'payer', + isMut: true, + isSigner: true, + }, + { + name: 'priceUpdateAccount', + isMut: true, + isSigner: false, + }, + ], + args: [], + }, + ], + accounts: [ + { + name: 'Config', + type: { + kind: 'struct', + fields: [ + { + name: 'governanceAuthority', + type: 'publicKey', + }, + { + name: 'targetGovernanceAuthority', + type: { + option: 'publicKey', + }, + }, + { + name: 'wormhole', + type: 'publicKey', + }, + { + name: 'validDataSources', + type: { + vec: { + defined: 'DataSource', + }, + }, + }, + { + name: 'singleUpdateFeeInLamports', + type: 'u64', + }, + { + name: 'minimumSignatures', + type: 'u8', + }, + ], + }, + }, + { + name: 'priceUpdateV2', + type: { + kind: 'struct', + fields: [ + { + name: 'writeAuthority', + type: 'publicKey', + }, + { + name: 'verificationLevel', + type: { + defined: 'VerificationLevel', + }, + }, + { + name: 'priceMessage', + type: { + defined: 'PriceFeedMessage', + }, + }, + { + name: 'postedSlot', + type: 'u64', + }, + ], + }, + }, + ], + types: [ + { + name: 'PriceFeedMessage', + type: { + kind: 'struct', + fields: [ + { + name: 'feedId', + type: { + array: ['u8', 32], + }, + }, + { + name: 'price', + type: 'i64', + }, + { + name: 'conf', + type: 'u64', + }, + { + name: 'exponent', + type: 'i32', + }, + { + name: 'publishTime', + type: 'i64', + }, + { + name: 'prevPublishTime', + type: 'i64', + }, + { + name: 'emaPrice', + type: 'i64', + }, + { + name: 'emaConf', + type: 'u64', + }, + ], + }, + }, + { + name: 'MerklePriceUpdate', + type: { + kind: 'struct', + fields: [ + { + name: 'message', + type: 'bytes', + }, + { + name: 'proof', + type: { + vec: { + array: ['u8', 20], + }, + }, + }, + ], + }, + }, + { + name: 'DataSource', + type: { + kind: 'struct', + fields: [ + { + name: 'chain', + type: 'u16', + }, + { + name: 'emitter', + type: 'publicKey', + }, + ], + }, + }, + { + name: 'PostUpdateAtomicParams', + type: { + kind: 'struct', + fields: [ + { + name: 'vaa', + type: 'bytes', + }, + { + name: 'merklePriceUpdate', + type: { + defined: 'MerklePriceUpdate', + }, + }, + { + name: 'treasuryId', + type: 'u8', + }, + ], + }, + }, + { + name: 'PostUpdateParams', + type: { + kind: 'struct', + fields: [ + { + name: 'merklePriceUpdate', + type: { + defined: 'MerklePriceUpdate', + }, + }, + { + name: 'treasuryId', + type: 'u8', + }, + ], + }, + }, + { + name: 'VerificationLevel', + docs: [ + '* This enum represents how many guardian signatures were checked for a Pythnet price update\n * If full, guardian quorum has been attained\n * If partial, at least config.minimum signatures have been verified, but in the case config.minimum_signatures changes in the future we also include the number of signatures that were checked', + ], + type: { + kind: 'enum', + variants: [ + { + name: 'Partial', + fields: [ + { + name: 'numSignatures', + type: 'u8', + }, + ], + }, + { + name: 'Full', + }, + ], + }, + }, + ], + errors: [ + { + code: 6000, + name: 'InvalidWormholeMessage', + msg: 'Received an invalid wormhole message', + }, + { + code: 6001, + name: 'DeserializeMessageFailed', + msg: 'An error occurred when deserializing the message', + }, + { + code: 6002, + name: 'InvalidPriceUpdate', + msg: 'Received an invalid price update', + }, + { + code: 6003, + name: 'UnsupportedMessageType', + msg: 'This type of message is not supported currently', + }, + { + code: 6004, + name: 'InvalidDataSource', + msg: "The tuple emitter chain, emitter doesn't match one of the valid data sources.", + }, + { + code: 6005, + name: 'InsufficientFunds', + msg: 'Funds are insufficient to pay the receiving fee', + }, + { + code: 6006, + name: 'WrongWriteAuthority', + msg: "This signer can't write to price update account", + }, + { + code: 6007, + name: 'WrongVaaOwner', + msg: 'The posted VAA account has the wrong owner.', + }, + { + code: 6008, + name: 'DeserializeVaaFailed', + msg: 'An error occurred when deserializing the VAA.', + }, + { + code: 6009, + name: 'InsufficientGuardianSignatures', + msg: 'The number of guardian signatures is below the minimum', + }, + { + code: 6010, + name: 'InvalidVaaVersion', + msg: 'Invalid VAA version', + }, + { + code: 6011, + name: 'GuardianSetMismatch', + msg: "Guardian set version in the VAA doesn't match the guardian set passed", + }, + { + code: 6012, + name: 'InvalidGuardianOrder', + msg: 'Guardian signature indices must be increasing', + }, + { + code: 6013, + name: 'InvalidGuardianIndex', + msg: 'Guardian index exceeds the number of guardians in the set', + }, + { + code: 6014, + name: 'InvalidSignature', + msg: 'A VAA signature is invalid', + }, + { + code: 6015, + name: 'InvalidGuardianKeyRecovery', + msg: "The recovered guardian public key doesn't match the guardian set", + }, + { + code: 6016, + name: 'WrongGuardianSetOwner', + msg: 'The guardian set account is owned by the wrong program', + }, + { + code: 6017, + name: 'InvalidGuardianSetPda', + msg: "The Guardian Set account doesn't match the PDA derivation", + }, + { + code: 6018, + name: 'GuardianSetExpired', + msg: 'The Guardian Set is expired', + }, + { + code: 6019, + name: 'GovernanceAuthorityMismatch', + msg: 'The signer is not authorized to perform this governance action', + }, + { + code: 6020, + name: 'TargetGovernanceAuthorityMismatch', + msg: 'The signer is not authorized to accept the governance authority', + }, + { + code: 6021, + name: 'NonexistentGovernanceAuthorityTransferRequest', + msg: 'The governance authority needs to request a transfer first', + }, + ], +}; + +export declare const PYTH_SOLANA_RECEIVER_IDL: PythSolanaReceiver; +//# sourceMappingURL=pyth_solana_receiver.d.ts.map + +export type PriceUpdateAccount = + IdlAccounts['priceUpdateV2']; diff --git a/sdk/src/pyth/utils.ts b/sdk/src/pyth/utils.ts new file mode 100644 index 0000000000..4c3492042d --- /dev/null +++ b/sdk/src/pyth/utils.ts @@ -0,0 +1,13 @@ +import { PublicKey } from '@solana/web3.js'; + +export const getGuardianSetPda = ( + guardianSetIndex: number, + wormholeProgramId: PublicKey +) => { + const guardianSetIndexBuf = Buffer.alloc(4); + guardianSetIndexBuf.writeUInt32BE(guardianSetIndex, 0); + return PublicKey.findProgramAddressSync( + [Buffer.from('GuardianSet'), guardianSetIndexBuf], + wormholeProgramId + )[0]; +}; diff --git a/sdk/tests/decode/test.ts b/sdk/tests/decode/test.ts index 20f18bebdd..6156a4a7fd 100644 --- a/sdk/tests/decode/test.ts +++ b/sdk/tests/decode/test.ts @@ -187,10 +187,11 @@ function testPerpPosition(anchor: PerpPosition, custom: PerpPosition) { assert(anchor.openAsks.eq(custom.openAsks)); assert(anchor.settledPnl.eq(custom.settledPnl)); assert(anchor.lpShares.eq(custom.lpShares)); - assert(anchor.lastBaseAssetAmountPerLp.eq(custom.lastBaseAssetAmountPerLp)); assert(anchor.lastQuoteAssetAmountPerLp.eq(custom.lastQuoteAssetAmountPerLp)); assert(anchor.openOrders === custom.openOrders); assert(anchor.perLpBase === custom.perLpBase); + assert(anchor.isolatedPositionScaledBalance.eq(custom.isolatedPositionScaledBalance)); + assert(anchor.positionFlag === custom.positionFlag); } function* getOrders(orders: Order[]) { diff --git a/sdk/tests/dlob/helpers.ts b/sdk/tests/dlob/helpers.ts index 69ff661bc0..397b020456 100644 --- a/sdk/tests/dlob/helpers.ts +++ b/sdk/tests/dlob/helpers.ts @@ -41,7 +41,6 @@ export const mockPerpPosition: PerpPosition = { settledPnl: new BN(0), lpShares: new BN(0), remainderBaseAssetAmount: 0, - lastBaseAssetAmountPerLp: new BN(0), lastQuoteAssetAmountPerLp: new BN(0), perLpBase: 0, maxMarginRatio: 1, diff --git a/sdk/yarn.lock b/sdk/yarn.lock index 8f438b3526..c2f0c90876 100644 --- a/sdk/yarn.lock +++ b/sdk/yarn.lock @@ -3,11 +3,11 @@ "@babel/code-frame@^7.12.13": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.28.6.tgz#72499312ec58b1e2245ba4a4f550c132be4982f7" + integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q== dependencies: - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" js-tokens "^4.0.0" picocolors "^1.1.1" @@ -16,30 +16,30 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" - integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== -"@babel/parser@^7.26.7", "@babel/parser@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e" - integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== +"@babel/parser@^7.26.7", "@babel/parser@^7.28.5": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.6.tgz#f01a8885b7fa1e56dd8a155130226cd698ef13fd" + integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ== dependencies: - "@babel/types" "^7.28.0" + "@babel/types" "^7.28.6" "@babel/runtime@^7.10.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.25.0": - version "7.27.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.6.tgz#ec4070a04d76bae8ddbb10770ba55714a417b7c6" - integrity sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q== + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b" + integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA== -"@babel/types@^7.28.0": - version "7.28.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.2.tgz#da9db0856a9a88e0a13b019881d7513588cf712b" - integrity sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ== +"@babel/types@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.6.tgz#c3e9377f1b155005bcc4c46020e7e394e13089df" + integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg== dependencies: "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" "@coral-xyz/anchor-30@npm:@coral-xyz/anchor@0.30.1": version "0.30.1" @@ -263,16 +263,16 @@ integrity sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" - integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595" + integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== dependencies: eslint-visitor-keys "^3.4.3" "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.12.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + version "4.12.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -393,10 +393,10 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz#7358043433b2e5da569aa02cbc4c121da3af27d7" - integrity sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw== +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.5.5": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" @@ -467,22 +467,17 @@ spok "^1.4.3" "@msgpack/msgpack@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.1.2.tgz#fdd25cc2202297519798bbaf4689152ad9609e19" - integrity sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ== + version "3.1.3" + resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.1.3.tgz#c4bff2b9539faf0882f3ee03537a7e9a4b3a7864" + integrity sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA== "@noble/curves@^1.4.2": - version "1.9.2" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.2.tgz#73388356ce733922396214a933ff7c95afcef911" - integrity sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g== + version "1.9.7" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== dependencies: "@noble/hashes" "1.8.0" -"@noble/ed25519@^1.7.1": - version "1.7.5" - resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.5.tgz#94df8bdb9fec9c4644a56007eecb57b0e9fbd0d7" - integrity sha512-xuS0nwRMQBvSxDa7UxMb61xTiH3MxTgUfhyPUALVIe0FlOAz4sjELwyDRyUvqeEYfRSG9qNjFIycqLZppg4RSA== - "@noble/hashes@1.8.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" @@ -627,35 +622,6 @@ dependencies: bn.js "^5.2.1" -"@pythnetwork/price-service-sdk@>=1.6.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@pythnetwork/price-service-sdk/-/price-service-sdk-1.8.0.tgz#f5f01f654963eb9a0cf12127b4f1a89b60ef008a" - integrity sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA== - dependencies: - bn.js "^5.2.1" - -"@pythnetwork/pyth-solana-receiver@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@pythnetwork/pyth-solana-receiver/-/pyth-solana-receiver-0.7.0.tgz#253a0d15a135d625ceca7ba1b47940dd03b9cab6" - integrity sha512-OoEAHh92RPRdKkfjkcKGrjC+t0F3SEL754iKFmixN9zyS8pIfZSVfFntmkHa9pWmqEMxdx/i925a8B5ny8Tuvg== - dependencies: - "@coral-xyz/anchor" "^0.29.0" - "@noble/hashes" "^1.4.0" - "@pythnetwork/price-service-sdk" ">=1.6.0" - "@pythnetwork/solana-utils" "*" - "@solana/web3.js" "^1.90.0" - -"@pythnetwork/solana-utils@*": - version "0.4.5" - resolved "https://registry.yarnpkg.com/@pythnetwork/solana-utils/-/solana-utils-0.4.5.tgz#7c5af4b6794769e57b56ad1c680faa6dbf70b919" - integrity sha512-NoLdC2rRAx9a66L0hSOAGt6Wj/YxfnKkw+mbb7Tn/Nn1du4HyShi41DiN6B+2XXqnMthNGbf9FSHvj4NXXABvA== - dependencies: - "@coral-xyz/anchor" "^0.29.0" - "@solana/web3.js" "^1.90.0" - bs58 "^5.0.0" - jito-ts "^3.0.1" - ts-log "^2.2.7" - "@sinclair/typebox@^0.24.1": version "0.24.51" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" @@ -683,12 +649,11 @@ "@sinonjs/commons" "^3.0.1" "@sinonjs/samsam@^8.0.0": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.2.tgz#e4386bf668ff36c95949e55a38dc5f5892fc2689" - integrity sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw== + version "8.0.3" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.3.tgz#eb6ffaef421e1e27783cc9b52567de20cb28072d" + integrity sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ== dependencies: "@sinonjs/commons" "^3.0.1" - lodash.get "^4.4.2" type-detect "^4.1.0" "@sinonjs/text-encoding@^0.7.3": @@ -711,7 +676,7 @@ resolved "https://registry.yarnpkg.com/@solana-program/system/-/system-0.7.0.tgz#3e21c9fb31d3795eb65ba5cb663947c19b305bad" integrity sha512-FKTBsKHpvHHNc1ATRm7SlC5nF/VdJtOSjldhcyfMN9R7xo712Mo2jHIzvBgn8zQO5Kg0DcWuKB7268Kv1ocicw== -"@solana-program/token-2022@^0.4.1": +"@solana-program/token-2022@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@solana-program/token-2022/-/token-2022-0.4.2.tgz#f90a638de82acb7933a114e884a24ac4be8ef635" integrity sha512-zIpR5t4s9qEU3hZKupzIBxJ6nUV5/UVyIT400tu9vT1HMs5JHxaTTsb5GUhYjiiTvNwU0MQavbwc4Dl29L0Xvw== @@ -1119,7 +1084,7 @@ dependencies: "@solana/codecs" "2.0.0-rc.1" -"@solana/spl-token@0.4.13", "@solana/spl-token@^0.4.0": +"@solana/spl-token@0.4.13": version "0.4.13" resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.13.tgz#8f65c3c2b315e1a00a91b8d0f60922c6eb71de62" integrity sha512-cite/pYWQZZVvLbg5lsodSovbetK/eA24gaR0eeUeMuBAMNrT8XFCwaygKy0N2WSg3gSyjjNpIeAGBAKZaY/1w== @@ -1152,6 +1117,17 @@ "@solana/spl-token-metadata" "^0.1.2" buffer "^6.0.3" +"@solana/spl-token@^0.4.0": + version "0.4.14" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.14.tgz#b86bc8a17f50e9680137b585eca5f5eb9d55c025" + integrity sha512-u09zr96UBpX4U685MnvQsNzlvw9TiY005hk1vJmJr7gMJldoPG1eYU5/wNEyOA5lkMLiR/gOi9SFD4MefOYEsA== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-group" "^0.0.7" + "@solana/spl-token-metadata" "^0.1.6" + buffer "^6.0.3" + "@solana/subscribable@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/subscribable/-/subscribable-2.3.0.tgz#4e48f1a4eeb1ccf22065b46fb8e3ed80d1a27f80" @@ -1240,9 +1216,9 @@ superstruct "^2.0.2" "@swc/helpers@^0.5.11": - version "0.5.17" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.17.tgz#5a7be95ac0f0bf186e7e6e890e7a6f6cda6ce971" - integrity sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A== + version "0.5.18" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.18.tgz#feeeabea0d10106ee25aaf900165df911ab6d3b1" + integrity sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ== dependencies: tslib "^2.8.0" @@ -1263,9 +1239,9 @@ yaml "^2.6.1" "@switchboard-xyz/common@>=3.0.0": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@switchboard-xyz/common/-/common-3.4.1.tgz#3144c0730649e60129ea8c9b3c04062ceff35c6e" - integrity sha512-TropBlBYuDeBnmGHkPSmgC3clLqAxy51ZGbwk4ejAgadnszWOgYHcH7taRG4Ha17DYSCWw/LGMBKbunGo+Aoaw== + version "5.6.1" + resolved "https://registry.yarnpkg.com/@switchboard-xyz/common/-/common-5.6.1.tgz#a379005af3a72a504f8f6ba88ea8991d328f6336" + integrity sha512-2Sz3iAusCnpEp+lJLOcwstRxGQCkbCdLDNgAYl/gTqApCA+drdQni8WoeKdahAXtcxhr72pd9PhFi/4N25im+w== dependencies: "@solana/web3.js" "^1.98.2" axios "^1.9.0" @@ -1276,8 +1252,6 @@ decimal.js "^10.4.3" js-sha256 "^0.11.0" protobufjs "^7.4.0" - yaml "^2.6.1" - zod "4.0.0-beta.20250505T195954" "@switchboard-xyz/on-demand@2.4.1": version "2.4.1" @@ -1327,9 +1301,9 @@ "@ts-graphviz/common" "^2.1.5" "@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + version "1.0.12" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.12.tgz#be57ceac1e4692b41be9de6be8c32a106636dba4" + integrity sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ== "@tsconfig/node12@^1.0.7": version "1.0.11" @@ -1416,11 +1390,11 @@ integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== "@types/node@*", "@types/node@>=13.7.0": - version "24.0.13" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.0.13.tgz#93ed8c05c7b188a59760be0ce2ee3fa7ad0f83f6" - integrity sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ== + version "25.0.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.8.tgz#e54e00f94fe1db2497b3e42d292b8376a2678c8d" + integrity sha512-powIePYMmC3ibL0UJ2i2s0WIbq6cg6UyVFQxSCpaPxxzAaziRfimGivjdF943sSGV6RADVbk0Nvlm5P/FB44Zg== dependencies: - undici-types "~7.8.0" + undici-types "~7.16.0" "@types/node@^12.12.54": version "12.20.55" @@ -1428,9 +1402,9 @@ integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^18.11.13": - version "18.19.118" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.118.tgz#e8ad99b8fb0c350773dfd9c5acda1a4bfb84a688" - integrity sha512-hIPK0hSrrcaoAu/gJMzN3QClXE4QdCdFvaenJ0JsjIbExP1JFFVH+RHcBt25c9n8bx5dkIfqKE+uw6BmBns7ug== + version "18.19.130" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.130.tgz#da4c6324793a79defb7a62cba3947ec5add00d59" + integrity sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg== dependencies: undici-types "~5.26.4" @@ -1442,9 +1416,9 @@ protobufjs "*" "@types/semver@^7.5.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" - integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== + version "7.7.1" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.1.tgz#3ce3af1a5524ef327d2da9e4fd8b6d95c8d70528" + integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA== "@types/stack-utils@^2.0.0": version "2.0.3" @@ -1476,9 +1450,9 @@ integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^17.0.8": - version "17.0.33" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" - integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + version "17.0.35" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.35.tgz#07013e46aa4d7d7d50a49e15604c1c5340d4eb24" + integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== dependencies: "@types/yargs-parser" "*" @@ -1510,14 +1484,14 @@ "@typescript-eslint/visitor-keys" "6.21.0" debug "^4.3.4" -"@typescript-eslint/project-service@8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.38.0.tgz#4900771f943163027fd7d2020a062892056b5e2f" - integrity sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg== +"@typescript-eslint/project-service@8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.53.0.tgz#327c67c61c16a1c8b12a440b0779b41eb77cc7df" + integrity sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.38.0" - "@typescript-eslint/types" "^8.38.0" - debug "^4.3.4" + "@typescript-eslint/tsconfig-utils" "^8.53.0" + "@typescript-eslint/types" "^8.53.0" + debug "^4.4.3" "@typescript-eslint/scope-manager@6.21.0": version "6.21.0" @@ -1527,10 +1501,10 @@ "@typescript-eslint/types" "6.21.0" "@typescript-eslint/visitor-keys" "6.21.0" -"@typescript-eslint/tsconfig-utils@8.38.0", "@typescript-eslint/tsconfig-utils@^8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz#6de4ce224a779601a8df667db56527255c42c4d0" - integrity sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ== +"@typescript-eslint/tsconfig-utils@8.53.0", "@typescript-eslint/tsconfig-utils@^8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.0.tgz#105279d7969a7abdc8345cc9c57cff83cf910f8f" + integrity sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA== "@typescript-eslint/type-utils@6.21.0": version "6.21.0" @@ -1547,10 +1521,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== -"@typescript-eslint/types@8.38.0", "@typescript-eslint/types@^8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.38.0.tgz#297351c994976b93c82ac0f0e206c8143aa82529" - integrity sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw== +"@typescript-eslint/types@8.53.0", "@typescript-eslint/types@^8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.53.0.tgz#1adcad3fa32bc2c4cbf3785ba07a5e3151819efb" + integrity sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ== "@typescript-eslint/typescript-estree@6.21.0": version "6.21.0" @@ -1567,20 +1541,19 @@ ts-api-utils "^1.0.1" "@typescript-eslint/typescript-estree@^8.23.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz#82262199eb6778bba28a319e25ad05b1158957df" - integrity sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ== - dependencies: - "@typescript-eslint/project-service" "8.38.0" - "@typescript-eslint/tsconfig-utils" "8.38.0" - "@typescript-eslint/types" "8.38.0" - "@typescript-eslint/visitor-keys" "8.38.0" - debug "^4.3.4" - fast-glob "^3.3.2" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^2.1.0" + version "8.53.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz#7805b46b7a8ce97e91b7bb56fc8b1ba26ca8ef52" + integrity sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw== + dependencies: + "@typescript-eslint/project-service" "8.53.0" + "@typescript-eslint/tsconfig-utils" "8.53.0" + "@typescript-eslint/types" "8.53.0" + "@typescript-eslint/visitor-keys" "8.53.0" + debug "^4.4.3" + minimatch "^9.0.5" + semver "^7.7.3" + tinyglobby "^0.2.15" + ts-api-utils "^2.4.0" "@typescript-eslint/utils@6.21.0": version "6.21.0" @@ -1603,12 +1576,12 @@ "@typescript-eslint/types" "6.21.0" eslint-visitor-keys "^3.4.1" -"@typescript-eslint/visitor-keys@8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz#a9765a527b082cb8fc60fd8a16e47c7ad5b60ea5" - integrity sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g== +"@typescript-eslint/visitor-keys@8.53.0": + version "8.53.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz#9a785664ddae7e3f7e570ad8166e48dbc9c6cf02" + integrity sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw== dependencies: - "@typescript-eslint/types" "8.38.0" + "@typescript-eslint/types" "8.53.0" eslint-visitor-keys "^4.2.1" "@ungap/structured-clone@^1.2.0": @@ -1616,57 +1589,52 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== -"@vue/compiler-core@3.5.18": - version "3.5.18" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.18.tgz#521a138cdd970d9bfd27e42168d12f77a04b2074" - integrity sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw== +"@vue/compiler-core@3.5.26": + version "3.5.26" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.26.tgz#1a91ea90980528bedff7b1c292690bfb30612485" + integrity sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w== dependencies: - "@babel/parser" "^7.28.0" - "@vue/shared" "3.5.18" - entities "^4.5.0" + "@babel/parser" "^7.28.5" + "@vue/shared" "3.5.26" + entities "^7.0.0" estree-walker "^2.0.2" source-map-js "^1.2.1" -"@vue/compiler-dom@3.5.18": - version "3.5.18" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.18.tgz#e13504492c3061ec5bbe6a2e789f15261d4f03a7" - integrity sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A== +"@vue/compiler-dom@3.5.26": + version "3.5.26" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz#66c36b6ed8bdf43236d7188ea332bc9d078eb286" + integrity sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A== dependencies: - "@vue/compiler-core" "3.5.18" - "@vue/shared" "3.5.18" + "@vue/compiler-core" "3.5.26" + "@vue/shared" "3.5.26" "@vue/compiler-sfc@^3.5.13": - version "3.5.18" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.18.tgz#ba1e849561337d809937994cdaf900539542eeca" - integrity sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA== - dependencies: - "@babel/parser" "^7.28.0" - "@vue/compiler-core" "3.5.18" - "@vue/compiler-dom" "3.5.18" - "@vue/compiler-ssr" "3.5.18" - "@vue/shared" "3.5.18" + version "3.5.26" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz#fb1c6c4bf9a9e22bb169e039e19437cb6995917a" + integrity sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA== + dependencies: + "@babel/parser" "^7.28.5" + "@vue/compiler-core" "3.5.26" + "@vue/compiler-dom" "3.5.26" + "@vue/compiler-ssr" "3.5.26" + "@vue/shared" "3.5.26" estree-walker "^2.0.2" - magic-string "^0.30.17" + magic-string "^0.30.21" postcss "^8.5.6" source-map-js "^1.2.1" -"@vue/compiler-ssr@3.5.18": - version "3.5.18" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.18.tgz#aecde0b0bff268a9c9014ba66799307c4a784328" - integrity sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g== +"@vue/compiler-ssr@3.5.26": + version "3.5.26" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz#f6e94bccbb5339180779036ddfb614f998a197ea" + integrity sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw== dependencies: - "@vue/compiler-dom" "3.5.18" - "@vue/shared" "3.5.18" + "@vue/compiler-dom" "3.5.26" + "@vue/shared" "3.5.26" -"@vue/shared@3.5.18": - version "3.5.18" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.18.tgz#529f24a88d3ed678d50fd5c07455841fbe8ac95e" - integrity sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA== - -"@zod/core@0.11.6": - version "0.11.6" - resolved "https://registry.yarnpkg.com/@zod/core/-/core-0.11.6.tgz#9216e98848dc9364eda35e3da90f5362f10e8887" - integrity sha512-03Bv82fFSfjDAvMfdHHdGSS6SOJs0iCcJlWJv1kJHRtoTT02hZpyip/2Lk6oo4l4FtjuwTrsEQTwg/LD8I7dJA== +"@vue/shared@3.5.26": + version "3.5.26" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.26.tgz#1e02ef2d64aced818cd31d81ce5175711dc90a9f" + integrity sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A== acorn-jsx@^5.3.2: version "5.3.2" @@ -1685,7 +1653,7 @@ acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== -agentkeepalive@^4.3.0, agentkeepalive@^4.5.0: +agentkeepalive@^4.5.0: version "4.6.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== @@ -1810,12 +1778,12 @@ available-typed-arrays@^1.0.7: possible-typed-array-names "^1.0.0" axios@^1.8.3, axios@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.10.0.tgz#af320aee8632eaf2a400b6a1979fa75856f38d54" - integrity sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw== + version "1.13.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" + integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== dependencies: follow-redirects "^1.15.6" - form-data "^4.0.0" + form-data "^4.0.4" proxy-from-env "^1.1.0" backslash@<0.2.1: @@ -1863,9 +1831,9 @@ bigint-buffer@^1.1.5: bindings "^1.3.0" bignumber.js@^9.0.1: - version "9.3.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.0.tgz#bdba7e2a4c1a2eba08290e8dcad4f36393c92acd" - integrity sha512-EM7aMFTXbptt/wZdMlBv2t8IViwQL+h6SLHosp8Yf0dqJMTnY6iL32opnAB6kAdL0SZPuvcAzFr31o0c/R3/RA== + version "9.3.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.1.tgz#759c5aaddf2ffdc4f154f7b493e1c8770f88c4d7" + integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== binary-extensions@^2.0.0: version "2.3.0" @@ -2042,9 +2010,9 @@ buffer@^5.5.0: ieee754 "^1.1.13" bufferutil@^4.0.1: - version "4.0.9" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.9.tgz#6e81739ad48a95cad45a279588e13e95e24a800a" - integrity sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw== + version "4.1.0" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.1.0.tgz#a4623541dd23867626bb08a051ec0d2ec0b70294" + integrity sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw== dependencies: node-gyp-build "^4.3.0" @@ -2324,7 +2292,7 @@ crypto-hash@^1.3.0: resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== -debug@<4.4.2, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5: +debug@<4.4.2, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.4.3: version "4.4.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== @@ -2538,11 +2506,6 @@ dotenv@10.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== -dotenv@^16.0.3: - version "16.6.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" - integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== - dunder-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" @@ -2578,17 +2541,17 @@ encoding@0.1.13: iconv-lite "^0.6.2" enhanced-resolve@^5.18.0: - version "5.18.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz#7903c5b32ffd4b2143eeb4b92472bd68effd5464" - integrity sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ== + version "5.18.4" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz#c22d33055f3952035ce6a144ce092447c525f828" + integrity sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" -entities@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +entities@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-7.0.0.tgz#2ae4e443f3f17d152d3f5b0f79b932c1e59deb7a" + integrity sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ== error-ex@<1.3.3: version "1.3.2" @@ -2783,9 +2746,9 @@ esprima@^4.0.0, esprima@^4.0.1: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + version "1.7.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d" + integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g== dependencies: estraverse "^5.1.0" @@ -2855,7 +2818,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.9, fast-glob@^3.3.2: +fast-glob@^3.2.9: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== @@ -2882,12 +2845,17 @@ fast-stable-stringify@^1.0.0: integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== fastq@^1.6.0: - version "1.19.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" - integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + version "1.20.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" + integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== dependencies: reusify "^1.0.4" +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -2968,9 +2936,9 @@ flatted@^3.2.9: integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== follow-redirects@^1.15.6: - version "1.15.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== for-each@^0.3.5: version "0.3.5" @@ -2979,10 +2947,10 @@ for-each@^0.3.5: dependencies: is-callable "^1.2.7" -form-data@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.3.tgz#608b1b3f3e28be0fccf5901fc85fb3641e5cf0ae" - integrity sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA== +form-data@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -3005,6 +2973,11 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== +generator-function@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2" + integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g== + get-amd-module-type@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-amd-module-type/-/get-amd-module-type-6.0.1.tgz#191f479ae8706c246b52bf402fbe1bb0965d9f1e" @@ -3044,7 +3017,7 @@ get-own-enumerable-property-symbols@^3.0.0: resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== -get-proto@^1.0.0, get-proto@^1.0.1: +get-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== @@ -3053,17 +3026,17 @@ get-proto@^1.0.0, get-proto@^1.0.1: es-object-atoms "^1.0.0" gill@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/gill/-/gill-0.10.2.tgz#593c031c9964739739a07480199d0c409da40fb5" - integrity sha512-upWoY2dfOzKHOcX3UnD+B3h9WUunPv0oxeKzsIgKSaLyURpWK9oI+K2NHWbwrUFsXEK6ozu/sgkhuqyAcVTZCg== + version "0.10.3" + resolved "https://registry.yarnpkg.com/gill/-/gill-0.10.3.tgz#0eeeaf18b9a6ec7adc17967f51f86be042ee2f24" + integrity sha512-4LIVA32lKcWoqU/dbwu+YpJbR59QQT6mvCtqkElBWF2aT9upmewjKN3/anhfTGy+o/RJykAV21i3RzCj9FR0Xg== dependencies: "@solana-program/address-lookup-table" "^0.7.0" "@solana-program/compute-budget" "^0.8.0" "@solana-program/system" "^0.7.0" - "@solana-program/token-2022" "^0.4.1" + "@solana-program/token-2022" "^0.4.2" "@solana/assertions" "^2.1.1" "@solana/codecs" "^2.1.1" - "@solana/kit" "^2.1.1" + "@solana/kit" "^2.3.0" "@solana/transaction-confirmation" "^2.1.1" glob-parent@^5.1.2, glob-parent@~5.1.2: @@ -3352,7 +3325,7 @@ 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.16.0: +is-core-module@^2.16.1: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== @@ -3370,12 +3343,13 @@ is-fullwidth-code-point@^3.0.0: integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-function@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" - integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5" + integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA== dependencies: - call-bound "^1.0.3" - get-proto "^1.0.0" + call-bound "^1.0.4" + generator-function "^2.0.0" + get-proto "^1.0.1" has-tostringtag "^1.0.2" safe-regex-test "^1.1.0" @@ -3476,10 +3450,10 @@ isomorphic-ws@^4.0.1: resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== -jayson@^4.0.0, jayson@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.2.0.tgz#b71762393fa40bc9637eaf734ca6f40d3b8c0c93" - integrity sha512-VfJ9t1YLwacIubLhONk0KFeosUBwstRWQ0IRT1KDjEjnVnSOVHC3uwugyV7L0c7R9lpVyrUGT2XWiBA1UTtpyg== +jayson@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.3.0.tgz#22eb8f3dcf37a5e893830e5451f32bde6d1bde4d" + integrity sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ== dependencies: "@types/connect" "^3.4.33" "@types/node" "^12.12.54" @@ -3546,20 +3520,6 @@ jest-util@^28.1.3: graceful-fs "^4.2.9" picomatch "^2.2.3" -jito-ts@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jito-ts/-/jito-ts-3.0.1.tgz#24126389896e042c26d303c4e802064b249ed27e" - integrity sha512-TSofF7KqcwyaWGjPaSYC8RDoNBY1TPRNBHdrw24bdIi7mQ5bFEDdYK3D//llw/ml8YDvcZlgd644WxhjLTS9yg== - dependencies: - "@grpc/grpc-js" "^1.8.13" - "@noble/ed25519" "^1.7.1" - "@solana/web3.js" "~1.77.3" - agentkeepalive "^4.3.0" - dotenv "^16.0.3" - jayson "^4.0.0" - node-fetch "^2.6.7" - superstruct "^1.0.3" - js-sha256@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.1.tgz#712262e8fc9569d6f7f6eea72c0d8e5ccc7c976c" @@ -3576,9 +3536,9 @@ js-tokens@^4.0.0: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + version "4.1.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" + integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== dependencies: argparse "^2.0.1" @@ -3639,11 +3599,6 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -3704,12 +3659,12 @@ madge@^8.0.0: ts-graphviz "^2.1.2" walkdir "^0.4.1" -magic-string@^0.30.17: - version "0.30.17" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" - integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== +magic-string@^0.30.21: + version "0.30.21" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" + integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/sourcemap-codec" "^1.5.5" make-error@^1.1.1: version "1.3.6" @@ -3799,7 +3754,7 @@ minimatch@^5.0.1, minimatch@^5.1.6: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.4: +minimatch@^9.0.5: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -3901,7 +3856,7 @@ node-cache@5.1.2: dependencies: clone "2.x" -node-fetch@^2.6.7, node-fetch@^2.7.0: +node-fetch@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -4071,9 +4026,9 @@ path-parse@^1.0.7: integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-to-regexp@^8.1.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4" - integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== + version "8.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.3.0.tgz#aa818a6981f99321003a08987d3cec9c3474cd1f" + integrity sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA== path-type@^4.0.0: version "4.0.0" @@ -4107,6 +4062,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + pluralize@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" @@ -4162,9 +4122,9 @@ prelude-ls@^1.2.1: integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + version "1.0.1" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz#6a31f88a4bad6c7adda253de12ba4edaea80ebcd" + integrity sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg== dependencies: fast-diff "^1.1.2" @@ -4205,10 +4165,10 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -protobufjs@*, protobufjs@^7.5.3: - version "7.5.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" - integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== +protobufjs@*: + version "8.0.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-8.0.0.tgz#d884102c1fe8d0b1e2493789ad37bc7ea47c0893" + integrity sha512-jx6+sE9h/UryaCZhsJWbJtTEy47yXoGNYI4z8ZaRncM0zBKeRqjO2JEcOUYwrYGb1WLhXM1FfMzW3annvFv0rw== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -4223,10 +4183,10 @@ protobufjs@*, protobufjs@^7.5.3: "@types/node" ">=13.7.0" long "^5.0.0" -protobufjs@^7.2.5, protobufjs@^7.4.0: - version "7.5.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.3.tgz#13f95a9e3c84669995ec3652db2ac2fb00b89363" - integrity sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw== +protobufjs@^7.4.0, protobufjs@^7.5.3: + version "7.5.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" + integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -4346,9 +4306,9 @@ requirejs-config-file@^4.0.0: stringify-object "^3.2.1" requirejs@^2.3.7: - version "2.3.7" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.7.tgz#0b22032e51a967900e0ae9f32762c23a87036bd0" - integrity sha512-DouTG8T1WanGok6Qjg2SXuCMzszOo0eHeH9hDZ5Y4x8Je+9JB38HdTLT4/VA8OaUhBa0JPVHJ0pyBkM1z+pDsw== + version "2.3.8" + resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.8.tgz#bca0614b618ab2122462597e44878db7558bbba3" + integrity sha512-7/cTSLOdYkNBNJcDMWf+luFvMriVm7eYxp4BcFCsAX0wF421Vyce5SXP17c+Jd5otXKGNehIonFlyQXSowL6Mw== resolve-dependency-path@^4.0.1: version "4.0.1" @@ -4361,11 +4321,11 @@ resolve-from@^4.0.0: integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve@^1.22.10: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + version "1.22.11" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== dependencies: - is-core-module "^2.16.0" + is-core-module "^2.16.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -4411,9 +4371,9 @@ rpc-websockets@7.5.1: utf-8-validate "^5.0.2" rpc-websockets@^9.0.2: - version "9.1.1" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.1.1.tgz#5764336f3623ee1c5cc8653b7335183e3c0c78bd" - integrity sha512-1IXGM/TfPT6nfYMIXkJdzn+L4JEsmb0FL1O2OBjaH03V3yuUDdKFulGLMFG6ErV+8pZ5HVC0limve01RyO+saA== + version "9.3.2" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.3.2.tgz#26b4d7ebaf8e53422528619a3c314e83590d85bf" + integrity sha512-VuW2xJDnl1k8n8kjbdRSWawPRkwaVqUQNjE1TdeTawf0y0abGhtVJFTXCLfgpgGDBkO/Fj6kny8Dc/nvOW78MA== dependencies: "@swc/helpers" "^0.5.11" "@types/uuid" "^8.3.4" @@ -4465,10 +4425,10 @@ sass-lookup@^6.1.0: commander "^12.1.0" enhanced-resolve "^5.18.0" -semver@^7.3.7, semver@^7.5.4, semver@^7.6.0: - version "7.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== +semver@^7.3.7, semver@^7.5.4, semver@^7.7.3: + version "7.7.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== serialize-javascript@^6.0.2: version "6.0.2" @@ -4718,11 +4678,6 @@ superstruct@^0.15.4: resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== -superstruct@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.4.tgz#0adb99a7578bd2f1c526220da6571b2d485d91ca" - integrity sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ== - superstruct@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" @@ -4749,9 +4704,9 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== tapable@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872" - integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg== + version "2.3.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" + integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== text-encoding-utf-8@^1.0.2: version "1.0.2" @@ -4763,6 +4718,14 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + to-buffer@^1.2.0, to-buffer@^1.2.1, to-buffer@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.2.tgz#ffe59ef7522ada0a2d1cb5dfe03bb8abc3cdc133" @@ -4799,10 +4762,10 @@ ts-api-utils@^1.0.1: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== -ts-api-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" - integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== +ts-api-utils@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8" + integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== ts-graphviz@^2.1.2: version "2.1.6" @@ -4814,11 +4777,6 @@ ts-graphviz@^2.1.2: "@ts-graphviz/common" "^2.1.5" "@ts-graphviz/core" "^2.0.7" -ts-log@^2.2.7: - version "2.2.7" - resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.7.tgz#4f4512144898b77c9984e91587076fcb8518688e" - integrity sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg== - ts-node@10.9.2: version "10.9.2" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" @@ -4899,24 +4857,24 @@ typescript@5.4.5: integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== typescript@^5.7.3, typescript@^5.8.3: - version "5.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" - integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== + version "5.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" + integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== undici-types@^7.11.0: - version "7.12.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.12.0.tgz#15c5c7475c2a3ba30659529f5cdb4674b622fafb" - integrity sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ== + version "7.18.2" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9" + integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w== undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici-types@~7.8.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294" - integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw== +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== uri-js@^4.2.2: version "4.4.1" @@ -5038,9 +4996,9 @@ ws@^7.5.10: integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.5.0: - version "8.18.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== + version "8.19.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.19.0.tgz#ddc2bdfa5b9ad860204f5a72a4863a8895fd8c8b" + integrity sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg== y18n@^5.0.5: version "5.0.8" @@ -5048,9 +5006,9 @@ y18n@^5.0.5: integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yaml@^2.6.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6" - integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== + version "2.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" + integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== yargs-parser@^20.2.2, yargs-parser@^20.2.9: version "20.2.9" @@ -5108,13 +5066,6 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zod@4.0.0-beta.20250505T195954: - version "4.0.0-beta.20250505T195954" - resolved "https://registry.yarnpkg.com/zod/-/zod-4.0.0-beta.20250505T195954.tgz#ba9da025671de2dde9d4d033089f03c37a35022f" - integrity sha512-iB8WvxkobVIXMARvQu20fKvbS7mUTiYRpcD8OQV1xjRhxO0EEpYIRJBk6yfBzHAHEdOSDh3SxDITr5Eajr2vtg== - dependencies: - "@zod/core" "0.11.6" - zod@4.0.17: version "4.0.17" resolved "https://registry.yarnpkg.com/zod/-/zod-4.0.17.tgz#95931170715f73f7426c385c237b7477750d6c8d" diff --git a/tests/pythPull.ts b/tests/pythPull.ts index 5118651af6..62a77457f0 100644 --- a/tests/pythPull.ts +++ b/tests/pythPull.ts @@ -9,9 +9,9 @@ import { TestBulkAccountLoader } from '../sdk/src/accounts/testBulkAccountLoader import { BankrunContextWrapper } from '../sdk/src/bankrun/bankrunConnection'; import { startAnchor } from 'solana-bankrun'; import { AccountInfo, LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js'; -import { DEFAULT_WORMHOLE_PROGRAM_ID } from '@pythnetwork/pyth-solana-receiver'; import { WORMHOLE_DATA } from './pythPullOracleData'; import { initializeQuoteSpotMarket, mockUSDCMint } from './testHelpers'; +import { DEFAULT_WORMHOLE_PROGRAM_ID } from '../sdk/src/pyth'; // set up account infos to load into banks client const GUARDIAN_SET_ACCOUNT_INFO: AccountInfo = { diff --git a/yarn.lock b/yarn.lock index 2678bc1b59..42cc7be1db 100644 --- a/yarn.lock +++ b/yarn.lock @@ -123,24 +123,6 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== -"@grpc/grpc-js@^1.8.13": - version "1.13.4" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.13.4.tgz#922fbc496e229c5fa66802d2369bf181c1df1c5a" - integrity sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg== - dependencies: - "@grpc/proto-loader" "^0.7.13" - "@js-sdsl/ordered-map" "^4.4.2" - -"@grpc/proto-loader@^0.7.13": - version "0.7.15" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.15.tgz#4cdfbf35a35461fc843abe8b9e2c0770b5095e60" - integrity sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.2.5" - yargs "^17.7.2" - "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -165,11 +147,6 @@ resolved "https://registry.yarnpkg.com/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz#21fb23db34e9b6220c6ba023a0118a2dd3461ea2" integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== -"@js-sdsl/ordered-map@^4.4.2": - version "4.4.2" - resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" - integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== - "@metaplex-foundation/beet-solana@^0.3.0": version "0.3.1" resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.3.1.tgz#4b37cda5c7f32ffd2bdd8b3164edc05c6463ab35" @@ -225,19 +202,19 @@ snake-case "^3.0.4" spok "^1.4.3" -"@noble/curves@^1.0.0", "@noble/curves@^1.4.2": +"@noble/curves@^1.4.2": version "1.9.2" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.2.tgz#73388356ce733922396214a933ff7c95afcef911" integrity sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g== dependencies: "@noble/hashes" "1.8.0" -"@noble/ed25519@^1.7.0", "@noble/ed25519@^1.7.1": +"@noble/ed25519@^1.7.0": version "1.7.5" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.5.tgz#94df8bdb9fec9c4644a56007eecb57b0e9fbd0d7" integrity sha512-xuS0nwRMQBvSxDa7UxMb61xTiH3MxTgUfhyPUALVIe0FlOAz4sjELwyDRyUvqeEYfRSG9qNjFIycqLZppg4RSA== -"@noble/hashes@1.8.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.3.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": +"@noble/hashes@1.8.0", "@noble/hashes@^1.1.2", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== @@ -391,35 +368,13 @@ ts-log "^2.2.4" ws "^8.6.0" -"@pythnetwork/price-service-sdk@*", "@pythnetwork/price-service-sdk@>=1.6.0": +"@pythnetwork/price-service-sdk@*": version "1.8.0" resolved "https://registry.yarnpkg.com/@pythnetwork/price-service-sdk/-/price-service-sdk-1.8.0.tgz#f5f01f654963eb9a0cf12127b4f1a89b60ef008a" integrity sha512-tFZ1thj3Zja06DzPIX2dEWSi7kIfIyqreoywvw5NQ3Z1pl5OJHQGMEhxt6Li3UCGSp2ooYZS9wl8/8XfrfrNSA== dependencies: bn.js "^5.2.1" -"@pythnetwork/pyth-solana-receiver@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@pythnetwork/pyth-solana-receiver/-/pyth-solana-receiver-0.8.0.tgz#d7bf3c5c97a0f0eab8ac19f53b11664117e1152d" - integrity sha512-5lhLtggAqsiHtffTPM8vcKJmhBdxzidBmiNNUlqPyg9XmhZ4Z+roY0dfzluEoX5xer9rEA1ThsBpX0bG1DRIGA== - dependencies: - "@coral-xyz/anchor" "^0.29.0" - "@noble/hashes" "^1.4.0" - "@pythnetwork/price-service-sdk" ">=1.6.0" - "@pythnetwork/solana-utils" "*" - "@solana/web3.js" "^1.90.0" - -"@pythnetwork/solana-utils@*": - version "0.4.5" - resolved "https://registry.yarnpkg.com/@pythnetwork/solana-utils/-/solana-utils-0.4.5.tgz#7c5af4b6794769e57b56ad1c680faa6dbf70b919" - integrity sha512-NoLdC2rRAx9a66L0hSOAGt6Wj/YxfnKkw+mbb7Tn/Nn1du4HyShi41DiN6B+2XXqnMthNGbf9FSHvj4NXXABvA== - dependencies: - "@coral-xyz/anchor" "^0.29.0" - "@solana/web3.js" "^1.90.0" - bs58 "^5.0.0" - jito-ts "^3.0.1" - ts-log "^2.2.7" - "@solana/buffer-layout-utils@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" @@ -592,7 +547,7 @@ rpc-websockets "^7.5.0" superstruct "^0.14.2" -"@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.90.0", "@solana/web3.js@^1.98.0", "@solana/web3.js@^1.98.2": +"@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.98.0", "@solana/web3.js@^1.98.2": version "1.98.2" resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.2.tgz#45167a5cfb64436944bf4dc1e8be8482bd6d4c14" integrity sha512-BqVwEG+TaG2yCkBMbD3C4hdpustR4FpuUFRPUmqRZYYlPI9Hg4XMWxHWOWRzHE9Lkc9NDjzXFX7lDXSgzC7R1A== @@ -613,27 +568,6 @@ rpc-websockets "^9.0.2" superstruct "^2.0.2" -"@solana/web3.js@~1.77.3": - version "1.77.4" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.77.4.tgz#aad8c44a02ced319493308ef765a2b36a9e9fa8c" - integrity sha512-XdN0Lh4jdY7J8FYMyucxCwzn6Ga2Sr1DHDWRbqVzk7ZPmmpSPOVWHzO67X1cVT+jNi1D6gZi2tgjHgDPuj6e9Q== - dependencies: - "@babel/runtime" "^7.12.5" - "@noble/curves" "^1.0.0" - "@noble/hashes" "^1.3.0" - "@solana/buffer-layout" "^4.0.0" - agentkeepalive "^4.2.1" - bigint-buffer "^1.1.5" - bn.js "^5.0.0" - borsh "^0.7.0" - bs58 "^4.0.1" - buffer "6.0.3" - fast-stable-stringify "^1.0.0" - jayson "^4.1.0" - node-fetch "^2.6.7" - rpc-websockets "^7.5.1" - superstruct "^0.14.2" - "@swc/helpers@^0.5.11": version "0.5.17" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.17.tgz#5a7be95ac0f0bf186e7e6e890e7a6f6cda6ce971" @@ -873,7 +807,7 @@ acorn@^8.9.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== -agentkeepalive@^4.2.1, agentkeepalive@^4.3.0, agentkeepalive@^4.5.0: +agentkeepalive@^4.2.1, agentkeepalive@^4.5.0: version "4.6.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== @@ -1199,15 +1133,6 @@ check-error@^1.0.3: dependencies: get-func-name "^2.0.2" -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - color-convert@<3.1.1, color-convert@^2.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-3.1.0.tgz#ce16ebb832f9d7522649ed9e11bc0ccb9433a524" @@ -1373,11 +1298,6 @@ dotenv@16.4.5: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== -dotenv@^16.0.3: - version "16.6.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" - integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== - dunder-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" @@ -1438,11 +1358,6 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -escalade@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" @@ -1698,11 +1613,6 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - get-func-name@^2.0.1, get-func-name@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" @@ -1997,7 +1907,7 @@ jayson@^3.4.4: uuid "^8.3.2" ws "^7.4.5" -jayson@^4.0.0, jayson@^4.1.0, jayson@^4.1.1: +jayson@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.2.0.tgz#b71762393fa40bc9637eaf734ca6f40d3b8c0c93" integrity sha512-VfJ9t1YLwacIubLhONk0KFeosUBwstRWQ0IRT1KDjEjnVnSOVHC3uwugyV7L0c7R9lpVyrUGT2XWiBA1UTtpyg== @@ -2015,20 +1925,6 @@ jayson@^4.0.0, jayson@^4.1.0, jayson@^4.1.1: uuid "^8.3.2" ws "^7.5.10" -jito-ts@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jito-ts/-/jito-ts-3.0.1.tgz#24126389896e042c26d303c4e802064b249ed27e" - integrity sha512-TSofF7KqcwyaWGjPaSYC8RDoNBY1TPRNBHdrw24bdIi7mQ5bFEDdYK3D//llw/ml8YDvcZlgd644WxhjLTS9yg== - dependencies: - "@grpc/grpc-js" "^1.8.13" - "@noble/ed25519" "^1.7.1" - "@solana/web3.js" "~1.77.3" - agentkeepalive "^4.3.0" - dotenv "^16.0.3" - jayson "^4.0.0" - node-fetch "^2.6.7" - superstruct "^1.0.3" - js-sha256@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.1.tgz#712262e8fc9569d6f7f6eea72c0d8e5ccc7c976c" @@ -2112,11 +2008,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -2240,7 +2131,7 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-fetch@2, node-fetch@^2.6.7, node-fetch@^2.7.0: +node-fetch@2, node-fetch@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -2379,7 +2270,7 @@ prettier@^2.5.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -protobufjs@^7.2.5, protobufjs@^7.4.0: +protobufjs@^7.4.0: version "7.5.3" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.3.tgz#13f95a9e3c84669995ec3652db2ac2fb00b89363" integrity sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw== @@ -2412,11 +2303,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -2447,7 +2333,7 @@ rpc-websockets@7.5.1: bufferutil "^4.0.1" utf-8-validate "^5.0.2" -rpc-websockets@^7.5.0, rpc-websockets@^7.5.1: +rpc-websockets@^7.5.0: version "7.11.2" resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.11.2.tgz#582910c425b9f2c860327481c1d1e0e431bf4a6d" integrity sha512-pL9r5N6AVHlMN/vT98+fcO+5+/UcPLf/4tq+WUaid/PPUGS/ttJ3y8e9IqmaWKtShNAysMSjkczuEA49NuV7UQ== @@ -2622,7 +2508,7 @@ stream-json@^1.9.1: dependencies: stream-chain "^2.2.5" -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +string-width@^4.1.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2668,11 +2554,6 @@ superstruct@^0.15.4: resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== -superstruct@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.4.tgz#0adb99a7578bd2f1c526220da6571b2d485d91ca" - integrity sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ== - superstruct@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" @@ -2740,7 +2621,7 @@ ts-api-utils@^1.0.1: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== -ts-log@^2.2.4, ts-log@^2.2.7: +ts-log@^2.2.4: version "2.2.7" resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.7.tgz#4f4512144898b77c9984e91587076fcb8518688e" integrity sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg== @@ -2870,7 +2751,7 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -wrap-ansi@7.0.0, wrap-ansi@^7.0.0: +wrap-ansi@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -2894,34 +2775,11 @@ ws@^8.5.0, ws@^8.6.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - yaml@^2.6.1: version "2.8.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6" integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From 8c2b96d4ba53fa2a23b022abb9a58f0f1867d2a0 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 14 Jan 2026 03:37:40 +0000 Subject: [PATCH 16/51] sdk: release v2.155.0-beta.3 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- sdk/yarn.lock | 22 ++-------------------- 3 files changed, 4 insertions(+), 22 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index 35d196bb38..a1e3a77888 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.155.0-beta.2 \ No newline at end of file +2.155.0-beta.3 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 99348405e5..dd08fa557d 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.155.0-beta.2", + "version": "2.155.0-beta.3", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", diff --git a/sdk/yarn.lock b/sdk/yarn.lock index c2f0c90876..d0001390f4 100644 --- a/sdk/yarn.lock +++ b/sdk/yarn.lock @@ -310,24 +310,6 @@ "@grpc/proto-loader" "^0.8.0" "@js-sdsl/ordered-map" "^4.4.2" -"@grpc/grpc-js@^1.8.13": - version "1.13.4" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.13.4.tgz#922fbc496e229c5fa66802d2369bf181c1df1c5a" - integrity sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg== - dependencies: - "@grpc/proto-loader" "^0.7.13" - "@js-sdsl/ordered-map" "^4.4.2" - -"@grpc/proto-loader@^0.7.13": - version "0.7.15" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.15.tgz#4cdfbf35a35461fc843abe8b9e2c0770b5095e60" - integrity sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.2.5" - yargs "^17.7.2" - "@grpc/proto-loader@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.8.0.tgz#b6c324dd909c458a0e4aa9bfd3d69cf78a4b9bd8" @@ -859,7 +841,7 @@ "@solana/errors" "2.3.0" "@solana/nominal-types" "2.3.0" -"@solana/kit@^2.1.1": +"@solana/kit@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@solana/kit/-/kit-2.3.0.tgz#92deb7c4883293617209aecac9a43d5e41ccf092" integrity sha512-sb6PgwoW2LjE5oTFu4lhlS/cGt/NB3YrShEyx7JgWFWysfgLdJnhwWThgwy/4HjNsmtMrQGWVls0yVBHcMvlMQ== @@ -1194,7 +1176,7 @@ "@solana/rpc-types" "2.3.0" "@solana/transaction-messages" "2.3.0" -"@solana/web3.js@1.98.0", "@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.30.2", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.77.3", "@solana/web3.js@^1.90.0", "@solana/web3.js@^1.98.0", "@solana/web3.js@^1.98.2", "@solana/web3.js@~1.77.3": +"@solana/web3.js@1.98.0", "@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.30.2", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.77.3", "@solana/web3.js@^1.98.0", "@solana/web3.js@^1.98.2": version "1.98.0" resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.0.tgz#21ecfe8198c10831df6f0cfde7f68370d0405917" integrity sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA== From a297deaa62bd732ac8be089f1fb25413ef840256 Mon Sep 17 00:00:00 2001 From: chakos Date: Wed, 14 Jan 2026 14:13:36 -0500 Subject: [PATCH 17/51] ui: reduce param checking for titan swaps (#2074) * ui: reduce param checking for titan swaps * cleanup titan usage and types * fix lint * prettify --- sdk/src/swap/UnifiedSwapClient.ts | 15 ++------------- sdk/src/titan/titanClient.ts | 32 ++++--------------------------- 2 files changed, 6 insertions(+), 41 deletions(-) diff --git a/sdk/src/swap/UnifiedSwapClient.ts b/sdk/src/swap/UnifiedSwapClient.ts index fdf75129fa..6ea30d6794 100644 --- a/sdk/src/swap/UnifiedSwapClient.ts +++ b/sdk/src/swap/UnifiedSwapClient.ts @@ -11,11 +11,7 @@ import { JupiterClient, QuoteResponse as JupiterQuoteResponse, } from '../jupiter/jupiterClient'; -import { - TitanClient, - QuoteResponse as TitanQuoteResponse, - SwapMode as TitanSwapMode, -} from '../titan/titanClient'; +import { TitanClient, SwapMode as TitanSwapMode } from '../titan/titanClient'; export type SwapMode = 'ExactIn' | 'ExactOut'; export type SwapClientType = 'jupiter' | 'titan'; @@ -167,18 +163,11 @@ export class UnifiedSwapClient { return { transaction }; } else { const titanClient = this.client as TitanClient; - const { quote, userPublicKey, slippageBps } = params; + const { userPublicKey } = params; // For Titan, we need to reconstruct the parameters from the quote - const titanQuote = quote as TitanQuoteResponse; const result = await titanClient.getSwap({ - inputMint: new PublicKey(titanQuote.inputMint), - outputMint: new PublicKey(titanQuote.outputMint), - amount: new BN(titanQuote.inAmount), userPublicKey, - slippageBps: slippageBps || titanQuote.slippageBps, - swapMode: titanQuote.swapMode, - sizeConstraint: 1280 - 375, // MAX_TX_BYTE_SIZE - buffer for drift instructions }); return { diff --git a/sdk/src/titan/titanClient.ts b/sdk/src/titan/titanClient.ts index 339a8e5d17..6eb8f81220 100644 --- a/sdk/src/titan/titanClient.ts +++ b/sdk/src/titan/titanClient.ts @@ -287,21 +287,11 @@ export class TitanClient { * Get a swap transaction for quote */ public async getSwap({ - inputMint, - outputMint, - amount, userPublicKey, - maxAccounts = 50, // 50 is an estimated amount with buffer - slippageBps, - swapMode, - onlyDirectRoutes, - excludeDexes, - sizeConstraint, - accountsLimitWritable, }: { - inputMint: PublicKey; - outputMint: PublicKey; - amount: BN; + inputMint?: PublicKey; + outputMint?: PublicKey; + amount?: BN; userPublicKey: PublicKey; maxAccounts?: number; slippageBps?: number; @@ -314,22 +304,8 @@ export class TitanClient { transactionMessage: TransactionMessage; lookupTables: AddressLookupTableAccount[]; }> { - const params = this.buildParams({ - inputMint, - outputMint, - amount, - userPublicKey, - maxAccounts, - slippageBps, - swapMode, - onlyDirectRoutes, - excludeDexes, - sizeConstraint, - accountsLimitWritable, - }); - // Check if we have cached quote data that matches the current parameters - if (!this.lastQuoteData || this.lastQuoteParams !== params.toString()) { + if (!this.lastQuoteData) { throw new Error( 'No matching quote data found. Please get a fresh quote before attempting to swap.' ); From 904a87e579580cba4c3e7728cc5ca9e65a4d3d28 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:18:46 +0000 Subject: [PATCH 18/51] sdk: release v2.155.0-beta.4 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index a1e3a77888..00bc0f48c6 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.155.0-beta.3 \ No newline at end of file +2.155.0-beta.4 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index dd08fa557d..3cd9222714 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.155.0-beta.3", + "version": "2.155.0-beta.4", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From 68edfec9a9ced97280d3232a7aea37cf5896a1cf Mon Sep 17 00:00:00 2001 From: LukasDeco Date: Thu, 15 Jan 2026 13:43:16 -0700 Subject: [PATCH 19/51] lukas/isolated positions sdk (#1965) * program: make lp shares reduce only * init * rm more fields * make tests build * start sdk changes * init new margin calc * deposit and transfer into * add settle pnl * program: add withdraw * add more ix * add new meets withdraw req fn * enter/exit liquidation logic * moar * start liquidation logic * other liquidation fns * make build work * more updates * always calc isolated pos * rm isolated position market index logic * moar * program: rm the isolated position market index * some tweaks * rm some old margin code * tweak meets withdraw requirements * rm liquidation mode changing context * handle liquidation id and bit flags * more liquidation changes * clean * fix force cancel orders * update validate liquidation * moar * rename is_being_liquidated * start adding test * program: add validate for liq borrow for perp pnl * program: add test for isolated margin calc * is bankrupt test * fix cancel orders * fix set liquidation status * more tweaks * clean up naming * update last active slot for isolated position liq * another liquidation review * add test * cargo fmt -- * tweak naming * add test to make sure false liquidaiton wont be triggered * test meets withdraw * change is bankrupt * more * update uses of exit isolated liquidaiton * moar * moar * reduce diff * moar * modularize some for tests * add tests for the pnl for deposit liquidation * tests for isolated position transfer * test for update spot balance * test for settle pnl * add perp position max margin * program: test for custom perp position margin ratio * add test for margin calc for disable hlm * update test name * make max margin ratio persist * add liquidation mode test * more tests to make sure liqudiations dont bleed over * change test name * fix broken cargo tests * cargo fmt -- * first ts test * isolatedPositionLiquidatePerp test * isolatedPositionLiquidatePerpwithFill test * fix expired position * cargo fmt -- * feat: initial SDK Changes for iso pos * feat: margin calc unit tests * temp * feat: finally - parity with on-chain cargo test * fix: PR feedback and cleanup + decoding position flag wrong * feat: deposit into iso position ixs * temp: pr feedback nother round * feat: per perp pos max margin ratio * feat: additional ixs for transfer into iso + update perp margin ratio * feat: revamp liquidation checker functions for cross vs iso margin * fix: adjust health getter for user * fix: liq statuses add to return signature * chore: post rebase cleaner upper * fix: missing params from per market lev * feat: zero out account withdraw from perp position * fix: available positions logic update for iso * feat: iso position txs cleanup + ix ordering * feat: onchain props for signed msg orders + idl update * feat: cancels withdraw from iso pos * fix: only settle if needed iso withdraw + i64 min * feat: improvements to single grpc test * feat: buffer on margin deposits to avoid insuff collat err * feat: helpful scripts for testing/manipulating iso positions * chore: re organizing some user sdk funcs * fix: bug with max amount withdrawal for transfer iso perp * fix: post merge dupe field on swift * feat: min and max 64 constants * fix: bug with margin removal * fix: missing swift iso deposit from idl * fix: lint and prettify * feat: increased buffer on isolated deposit opening position * fix: missing check on order increasing size for depositing margin place + take * feat: settle pnl when trying to transfer to cross * fix: incorrect iso bankruptcy flag * feat: new margin calc logic * fix: broken test helpers * feat: buffer adjustments * fix: add missing swap ix update * fix: undefined this on isoalted free collateral * fix: prettier broke * fix: handle perp buying power on new iso position * fix: try/catch wrap on user isolated get free collat * feat: try settle flag for transfer to iso perp * fix: properly handle perp buying power existing iso position increase * feat: alpha npm version * fix: decoding isolated scaled balance incorrectly maybe * fix: build error rm lp field * feat: publish isPerpPositionIsolated as public method * sdk: add ix for token 2022 init account deposits (#2050) * add ix for token 2022 init account deposits * only call checkAccountExists if token2022 * update changelog * sdk: release v2.152.0-beta.3 * program: add bit_flags in preparation for iso pos (#2053) * program: add bit_flags in preparation for iso pos * CHANGELOG * program: base-spread-validate-buffer (#2052) * program: base-spread-validate-buffer * CHANGELOG --------- Co-authored-by: Chris Heaney * v2.152.0 * ui: save titan tx when quoted and reuse on swap (#2055) * fix titan quoting for dsol * fix dsol instant unstake * feat: minified with esbuild (#2056) * feat: minified with esbuild * fix: rm webpack * fix: prettier titanClient * ui: fix falsely failing quotes from titan (#2058) * ui: fix falsely failing quotes from titan * prettify * check feed id after pyth pull atomic update * fix: many null checks fixed (#2059) * fix: many null checks fixed * fix: prettier * feat: get active markets helpers * fix: prettier * fix: README on margin calc was incorrect * fix: prettier and lint * fix: rm weird program diff * fix: rm weird program diff 2 * fix: rm weird empty file = * fix: rm useless diffs * refactor: remove unused fields a bunch on margin calc * fix: rebuild idl * fix: prevent unnecessary excpetion on liq price if free collat delta not computed * program: delete sereum/ob configs ix (#2066) * hot wallet update config stats * add delete for serum * delete ob config * CHANGELOG * sdk: release v2.153.0-beta.2 * Nick/external init account support (#2067) * wip: add external signer support for init account, stats account, swift account * updates * fix prettify * sdk: release v2.153.0-beta.3 * fix: user fastDecode check iso deposit and pos flag * fix: broken tests and PR cleanup * fix: final anchor tests fix? --------- Co-authored-by: Chris Heaney Co-authored-by: lowkeynicc <85139158+lowkeynicc@users.noreply.github.com> Co-authored-by: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: bigz_Pubkey <83473873+0xbigz@users.noreply.github.com> Co-authored-by: wphan <6348407+wphan@users.noreply.github.com> Co-authored-by: chakos --- sdk/VERSION | 2 +- sdk/scripts/deposit-isolated-positions.ts | 110 ++++++ sdk/scripts/find-flagged-users.ts | 216 +++++++++++ sdk/scripts/single-grpc-client-test.ts | 92 ++++- sdk/scripts/withdraw-isolated-positions.ts | 174 +++++++++ sdk/src/decode/user.ts | 20 +- sdk/src/driftClient.ts | 362 ++++++++++++++---- sdk/src/margin/README.md | 139 +++++++ sdk/src/marginCalculation.ts | 32 -- sdk/src/math/margin.ts | 5 +- sdk/src/math/position.ts | 14 +- sdk/src/math/spotBalance.ts | 1 - sdk/src/types.ts | 18 +- sdk/src/user.ts | 25 +- sdk/tests/dlob/helpers.ts | 2 +- sdk/tests/user/test.ts | 2 +- tests/isolatedPositionDriftClient.ts | 27 +- tests/isolatedPositionLiquidatePerp.ts | 9 +- .../isolatedPositionLiquidatePerpwithFill.ts | 9 +- 19 files changed, 1106 insertions(+), 153 deletions(-) create mode 100644 sdk/scripts/deposit-isolated-positions.ts create mode 100644 sdk/scripts/find-flagged-users.ts create mode 100644 sdk/scripts/withdraw-isolated-positions.ts create mode 100644 sdk/src/margin/README.md diff --git a/sdk/VERSION b/sdk/VERSION index 00bc0f48c6..5899882642 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.155.0-beta.4 \ No newline at end of file +2.155.0-beta.4 diff --git a/sdk/scripts/deposit-isolated-positions.ts b/sdk/scripts/deposit-isolated-positions.ts new file mode 100644 index 0000000000..6bff228d26 --- /dev/null +++ b/sdk/scripts/deposit-isolated-positions.ts @@ -0,0 +1,110 @@ +import { Connection, Keypair, PublicKey } from '@solana/web3.js'; +import dotenv from 'dotenv'; +import { AnchorProvider, Idl, Program, ProgramAccount, BN } from '@coral-xyz/anchor'; +import driftIDL from '../src/idl/drift.json'; +import { + DRIFT_PROGRAM_ID, + PerpMarketAccount, + SpotMarketAccount, + OracleInfo, + Wallet, + numberToSafeBN, +} from '../src'; +import { DriftClient } from '../src/driftClient'; +import { DriftClientConfig } from '../src/driftClientConfig'; + +async function main() { + dotenv.config({ path: '../' }); + + const RPC_ENDPOINT = process.env.RPC_ENDPOINT; + if (!RPC_ENDPOINT) throw new Error('RPC_ENDPOINT env var required'); + + let keypair: Keypair; + const pk = process.env.PRIVATE_KEY; + if (pk) { + const secret = Uint8Array.from(JSON.parse(pk)); + keypair = Keypair.fromSecretKey(secret); + } else { + keypair = new Keypair(); + console.warn('Using ephemeral keypair. Provide PRIVATE_KEY to use a real wallet.'); + } + const wallet = new Wallet(keypair); + + const connection = new Connection(RPC_ENDPOINT); + const provider = new AnchorProvider(connection, wallet as any, { + commitment: 'processed', + }); + const programId = new PublicKey(DRIFT_PROGRAM_ID); + const program = new Program(driftIDL as Idl, programId, provider); + + const allPerpMarketProgramAccounts = + (await program.account.perpMarket.all()) as ProgramAccount[]; + const perpMarketIndexes = allPerpMarketProgramAccounts.map((val) => val.account.marketIndex); + const allSpotMarketProgramAccounts = + (await program.account.spotMarket.all()) as ProgramAccount[]; + const spotMarketIndexes = allSpotMarketProgramAccounts.map((val) => val.account.marketIndex); + + const seen = new Set(); + const oracleInfos: OracleInfo[] = []; + for (const acct of allPerpMarketProgramAccounts) { + const key = `${acct.account.amm.oracle.toBase58()}-${Object.keys(acct.account.amm.oracleSource)[0]}`; + if (!seen.has(key)) { + seen.add(key); + oracleInfos.push({ publicKey: acct.account.amm.oracle, source: acct.account.amm.oracleSource }); + } + } + for (const acct of allSpotMarketProgramAccounts) { + const key = `${acct.account.oracle.toBase58()}-${Object.keys(acct.account.oracleSource)[0]}`; + if (!seen.has(key)) { + seen.add(key); + oracleInfos.push({ publicKey: acct.account.oracle, source: acct.account.oracleSource }); + } + } + + const clientConfig: DriftClientConfig = { + connection, + wallet, + programID: programId, + accountSubscription: { type: 'websocket', commitment: 'processed' }, + perpMarketIndexes, + spotMarketIndexes, + oracleInfos, + env: 'devnet', + }; + const client = new DriftClient(clientConfig); + await client.subscribe(); + + const candidates = perpMarketIndexes.filter((i) => i >= 0 && i <= 5); + const targetMarketIndex = candidates.length + ? candidates[Math.floor(Math.random() * candidates.length)] + : perpMarketIndexes[0]; + + const perpMarketAccount = client.getPerpMarketAccount(targetMarketIndex); + const quoteSpotMarketIndex = perpMarketAccount.quoteSpotMarketIndex; + const spotMarketAccount = client.getSpotMarketAccount(quoteSpotMarketIndex); + + const precision = new BN(10).pow(new BN(spotMarketAccount.decimals)); + const amount = numberToSafeBN(0.01, precision); + + const userTokenAccount = await client.getAssociatedTokenAccount(quoteSpotMarketIndex); + const ix = await client.getDepositIntoIsolatedPerpPositionIx( + amount, + targetMarketIndex, + userTokenAccount, + 0 + ); + + const tx = await client.buildTransaction([ix]); + const { txSig } = await client.sendTransaction(tx); + console.log(`Deposited into isolated perp market ${targetMarketIndex}: ${txSig}`); + + await client.getUser().unsubscribe(); + await client.unsubscribe(); +} + +main().catch((e) => { + console.error(e); + process.exit(1); +}); + + diff --git a/sdk/scripts/find-flagged-users.ts b/sdk/scripts/find-flagged-users.ts new file mode 100644 index 0000000000..9cb32981d0 --- /dev/null +++ b/sdk/scripts/find-flagged-users.ts @@ -0,0 +1,216 @@ +import { Connection, Keypair, PublicKey } from '@solana/web3.js'; +import dotenv from 'dotenv'; +import { + DriftClient, + DriftClientConfig, + Wallet, + UserMap, + DRIFT_PROGRAM_ID, + getMarketsAndOraclesForSubscription, + BulkAccountLoader, + BN, + PerpPosition, +} from '../src'; +import { TransactionSignature } from '@solana/web3.js'; +import fs from 'fs'; +import os from 'os'; +import path from 'path'; + +async function main() { + dotenv.config({ path: '../' }); + // Simple CLI parsing + interface CliOptions { + mode: 'list' | 'one' | 'all'; + targetUser?: string; + } + + function parseCliArgs(): CliOptions { + const args = process.argv.slice(2); + let mode: CliOptions['mode'] = 'list'; + let targetUser: string | undefined = undefined; + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + if (arg === '--mode' && i + 1 < args.length) { + const next = args[i + 1] as CliOptions['mode']; + if (next === 'list' || next === 'one' || next === 'all') { + mode = next; + } + i++; + } else if ((arg === '--user' || arg === '--target') && i + 1 < args.length) { + targetUser = args[i + 1]; + i++; + } + } + return { mode, targetUser }; + } + + const { mode, targetUser } = parseCliArgs(); + + const RPC_ENDPOINT = + process.env.RPC_ENDPOINT ?? 'https://api.mainnet-beta.solana.com'; + + const connection = new Connection(RPC_ENDPOINT); + const keypairPath = + process.env.SOLANA_KEYPAIR ?? + path.join(os.homedir(), '.config', 'solana', 'id.json'); + const secret = JSON.parse(fs.readFileSync(keypairPath, 'utf-8')) as number[]; + const wallet = new Wallet(Keypair.fromSecretKey(Uint8Array.from(secret))); + + const { perpMarketIndexes, spotMarketIndexes, oracleInfos } = + getMarketsAndOraclesForSubscription('mainnet-beta'); + + const accountLoader = new BulkAccountLoader(connection, 'confirmed', 60_000); + + const clientConfig: DriftClientConfig = { + connection, + wallet, + programID: new PublicKey(DRIFT_PROGRAM_ID), + accountSubscription: { + type: 'polling', + accountLoader, + }, + perpMarketIndexes, + spotMarketIndexes, + oracleInfos, + env: 'mainnet-beta', + }; + + const client = new DriftClient(clientConfig); + await client.subscribe(); + + const userMap = new UserMap({ + driftClient: client, + subscriptionConfig: { + type: 'polling', + frequency: 60_000, + commitment: 'confirmed', + }, + includeIdle: false, + syncConfig: { type: 'paginated' }, + throwOnFailedSync: false, + }); + await userMap.subscribe(); + + + const flaggedUsers: Array<{ + userPubkey: string; + authority: string; + flags: Array<{ marketIndex: number; flag: number; isolatedPositionScaledBalance: BN }>; + }> = []; + + console.log(`User map size: ${Array.from(userMap.entries()).length}`); + + for (const [userPubkey, user] of userMap.entries()) { + const userAccount = user.getUserAccount(); + const flaggedPositions = userAccount.perpPositions + .filter((p) => p.positionFlag >= 1 || p.isolatedPositionScaledBalance.toString() !== '0') + .map((p) => ({ marketIndex: p.marketIndex, flag: p.positionFlag, isolatedPositionScaledBalance: p.isolatedPositionScaledBalance, fullPosition: p })); + + if (flaggedPositions.length > 0) { + if(mode === 'one' && userPubkey === targetUser) { + console.log(`flagged positions on user ${userPubkey}`); + console.log(flaggedPositions.map((p) => `mkt=${p.marketIndex}, flag=${p.flag}, isolatedPositionScaledBalance=${p.isolatedPositionScaledBalance.toString()}, fullPosition=${fullLogPerpPosition(p.fullPosition)}`).join('\n\n; ')); + } + flaggedUsers.push({ + userPubkey, + authority: userAccount.authority.toBase58(), + flags: flaggedPositions, + }); + } + } + + // Mode 1: list flagged users (default) + if (mode === 'list') { + console.log(`Flagged users (positionFlag >= 1 || isolatedPositionScaledBalance > 0): ${flaggedUsers.length}`); + for (const u of flaggedUsers) { + const flagsStr = u.flags + .map((f) => `mkt=${f.marketIndex}, flag=${f.flag}, isolatedPositionScaledBalance=${f.isolatedPositionScaledBalance.toString()}`) + .join('; '); + console.log( + `- authority=${u.authority} userAccount=${u.userPubkey} -> [${flagsStr}]` + ); + } + } + + // Helper to invoke updateUserIdle + async function updateUserIdleFor(userAccountPubkeyStr: string): Promise { + const userObj = userMap.get(userAccountPubkeyStr); + if (!userObj) { + console.warn(`User ${userAccountPubkeyStr} not found in userMap`); + return undefined; + } + try { + const sig = await client.updateUserIdle( + new PublicKey(userAccountPubkeyStr), + userObj.getUserAccount() + ); + console.log(`updateUserIdle sent for userAccount=${userAccountPubkeyStr} -> tx=${sig}`); + return sig; + } catch (e) { + console.error(`Failed updateUserIdle for userAccount=${userAccountPubkeyStr}`, e); + return undefined; + } + } + + // Mode 2: updateUserIdle on a single flagged user + if (mode === 'one') { + if (flaggedUsers.length === 0) { + console.log('No flagged users to update.'); + } else { + const chosen = + (targetUser && flaggedUsers.find((u) => u.userPubkey === targetUser)) || + flaggedUsers[0]; + console.log( + `Updating single flagged userAccount=${chosen.userPubkey} authority=${chosen.authority}` + ); + await updateUserIdleFor(chosen.userPubkey); + } + } + + // Mode 3: updateUserIdle on all flagged users + if (mode === 'all') { + if (flaggedUsers.length === 0) { + console.log('No flagged users to update.'); + } else { + console.log(`Updating all ${flaggedUsers.length} flagged users...`); + for (const u of flaggedUsers) { + await updateUserIdleFor(u.userPubkey); + } + console.log('Finished updating all flagged users.'); + } + } + + await userMap.unsubscribe(); + await client.unsubscribe(); +} + +main().catch((e) => { + console.error(e); + process.exit(1); +}); + + +function fullLogPerpPosition(position: PerpPosition) { + + return ` + [PERP POSITION] + baseAssetAmount=${position.baseAssetAmount.toString()} + quoteAssetAmount=${position.quoteAssetAmount.toString()} + quoteBreakEvenAmount=${position.quoteBreakEvenAmount.toString()} + quoteEntryAmount=${position.quoteEntryAmount.toString()} + openBids=${position.openBids.toString()} + openAsks=${position.openAsks.toString()} + settledPnl=${position.settledPnl.toString()} + lpShares=${position.lpShares.toString()} + remainderBaseAssetAmount=${position.remainderBaseAssetAmount} + lastQuoteAssetAmountPerLp=${position.lastQuoteAssetAmountPerLp.toString()} + perLpBase=${position.perLpBase} + maxMarginRatio=${position.maxMarginRatio} + marketIndex=${position.marketIndex} + openOrders=${position.openOrders} + positionFlag=${position.positionFlag} + isolatedPositionScaledBalance=${position.isolatedPositionScaledBalance.toString()} + `; + +} + diff --git a/sdk/scripts/single-grpc-client-test.ts b/sdk/scripts/single-grpc-client-test.ts index e6724e6615..60de5bd39b 100644 --- a/sdk/scripts/single-grpc-client-test.ts +++ b/sdk/scripts/single-grpc-client-test.ts @@ -48,9 +48,7 @@ async function initializeSingleGrpcClient() { const allPerpMarketProgramAccounts = (await program.account.perpMarket.all()) as ProgramAccount[]; const perpMarketProgramAccounts = allPerpMarketProgramAccounts.filter((val) => - [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15].includes( - val.account.marketIndex - ) + [46].includes(val.account.marketIndex) ); const perpMarketIndexes = perpMarketProgramAccounts.map( (val) => val.account.marketIndex @@ -60,7 +58,7 @@ async function initializeSingleGrpcClient() { const allSpotMarketProgramAccounts = (await program.account.spotMarket.all()) as ProgramAccount[]; const spotMarketProgramAccounts = allSpotMarketProgramAccounts.filter((val) => - [0, 1, 2, 3, 4, 5].includes(val.account.marketIndex) + [0].includes(val.account.marketIndex) ); const spotMarketIndexes = spotMarketProgramAccounts.map( (val) => val.account.marketIndex @@ -94,7 +92,9 @@ async function initializeSingleGrpcClient() { } } - console.log(`📊 Markets: ${perpMarketIndexes.length} perp, ${spotMarketIndexes.length} spot`); + console.log( + `📊 Markets: ${perpMarketIndexes.length} perp, ${spotMarketIndexes.length} spot` + ); console.log(`🔮 Oracles: ${oracleInfos.length}`); @@ -171,7 +171,9 @@ async function initializeSingleGrpcClient() { await client.subscribe(); console.log('✅ Client subscribed successfully!'); - console.log('🚀 Starting high-load testing (50 reads/sec per perp market)...'); + console.log( + '🚀 Starting high-load testing (50 reads/sec per perp market)...' + ); // High-frequency load testing - 50 reads per second per perp market const loadTestInterval = setInterval(async () => { @@ -179,29 +181,71 @@ async function initializeSingleGrpcClient() { // Test getPerpMarketAccount for each perp market (50 times per second per market) for (const marketIndex of perpMarketIndexes) { const perpMarketAccount = client.getPerpMarketAccount(marketIndex); - console.log("perpMarketAccount name: ", decodeName(perpMarketAccount.name)); - console.log("perpMarketAccount data: ", JSON.stringify({ - marketIndex: perpMarketAccount.marketIndex, - name: decodeName(perpMarketAccount.name), - baseAssetReserve: perpMarketAccount.amm.baseAssetReserve.toString(), - quoteAssetReserve: perpMarketAccount.amm.quoteAssetReserve.toString() - })); + if (!perpMarketAccount) { + console.log(`Perp market ${marketIndex} not found`); + continue; + } + console.log( + 'perpMarketAccount name: ', + decodeName(perpMarketAccount.name) + ); + console.log( + 'perpMarketAccount data: ', + JSON.stringify({ + marketIndex: perpMarketAccount.marketIndex, + name: decodeName(perpMarketAccount.name), + baseAssetReserve: perpMarketAccount.amm.baseAssetReserve.toString(), + quoteAssetReserve: + perpMarketAccount.amm.quoteAssetReserve.toString(), + }) + ); } // Test getMMOracleDataForPerpMarket for each perp market (50 times per second per market) for (const marketIndex of perpMarketIndexes) { try { const oracleData = client.getMMOracleDataForPerpMarket(marketIndex); - console.log("oracleData price: ", oracleData.price.toString()); - console.log("oracleData: ", JSON.stringify({ - price: oracleData.price.toString(), - confidence: oracleData.confidence?.toString(), - slot: oracleData.slot?.toString() - })); + console.log('oracleData price: ', oracleData.price.toString()); + console.log( + 'oracleData: ', + JSON.stringify({ + price: oracleData.price.toString(), + confidence: oracleData.confidence?.toString(), + slot: oracleData.slot?.toString(), + }) + ); } catch (error) { // Ignore errors for load testing } } + + for (const marketIndex of perpMarketIndexes) { + try { + const { data, slot } = + client.accountSubscriber.getMarketAccountAndSlot(marketIndex); + if (!data) { + console.log( + `Perp market getMarketAccountAndSlot ${marketIndex} not found` + ); + continue; + } + console.log( + 'marketAccountAndSlot: ', + JSON.stringify({ + marketIndex: data.marketIndex, + name: decodeName(data.name), + slot: slot?.toString(), + baseAssetReserve: data.amm.baseAssetReserve.toString(), + quoteAssetReserve: data.amm.quoteAssetReserve.toString(), + }) + ); + } catch (error) { + console.error( + `Error getting market account and slot for market ${marketIndex}:`, + error + ); + } + } } catch (error) { console.error('Load test error:', error); } @@ -211,8 +255,14 @@ async function initializeSingleGrpcClient() { const statsInterval = setInterval(() => { console.log('\n📈 Event Counts:', eventCounts); console.log(`⏱️ Client subscribed: ${client.isSubscribed}`); - console.log(`🔗 Account subscriber subscribed: ${client.accountSubscriber.isSubscribed}`); - console.log(`🔥 Load: ${perpMarketIndexes.length * 50 * 2} reads/sec (${perpMarketIndexes.length} markets × 50 getPerpMarketAccount + 50 getMMOracleDataForPerpMarket)`); + console.log( + `🔗 Account subscriber subscribed: ${client.accountSubscriber.isSubscribed}` + ); + console.log( + `🔥 Load: ${perpMarketIndexes.length * 50 * 2} reads/sec (${ + perpMarketIndexes.length + } markets × 50 getPerpMarketAccount + 50 getMMOracleDataForPerpMarket)` + ); }, 5000); // Handle shutdown signals - just exit without cleanup since they never unsubscribe diff --git a/sdk/scripts/withdraw-isolated-positions.ts b/sdk/scripts/withdraw-isolated-positions.ts new file mode 100644 index 0000000000..51f9a74c34 --- /dev/null +++ b/sdk/scripts/withdraw-isolated-positions.ts @@ -0,0 +1,174 @@ +import { Connection, Keypair, PublicKey } from '@solana/web3.js'; +import dotenv from 'dotenv'; +import { + AnchorProvider, + Idl, + Program, + ProgramAccount, +} from '@coral-xyz/anchor'; +import driftIDL from '../src/idl/drift.json'; +import { + DRIFT_PROGRAM_ID, + PerpMarketAccount, + SpotMarketAccount, + OracleInfo, + Wallet, + ZERO, +} from '../src'; +import { DriftClient } from '../src/driftClient'; +import { DriftClientConfig } from '../src/driftClientConfig'; + +function isStatusOpen(status: any) { + return !!status && 'open' in status; +} + +function isPerpMarketType(marketType: any) { + return !!marketType && 'perp' in marketType; +} + +async function main() { + dotenv.config({ path: '../' }); + + const RPC_ENDPOINT = process.env.RPC_ENDPOINT; + if (!RPC_ENDPOINT) throw new Error('RPC_ENDPOINT env var required'); + + // Load wallet + // For safety this creates a new ephemeral wallet unless PRIVATE_KEY is provided (base58 array) + let keypair: Keypair; + const pk = process.env.PRIVATE_KEY; + if (pk) { + const secret = Uint8Array.from(JSON.parse(pk)); + keypair = Keypair.fromSecretKey(secret); + } else { + keypair = new Keypair(); + console.warn( + 'Using ephemeral keypair. Provide PRIVATE_KEY for real withdrawals.' + ); + } + const wallet = new Wallet(keypair); + + // Connection and program for market discovery + const connection = new Connection(RPC_ENDPOINT); + const provider = new AnchorProvider(connection, wallet as any, { + commitment: 'processed', + }); + const programId = new PublicKey(DRIFT_PROGRAM_ID); + const program = new Program(driftIDL as Idl, programId, provider); + + // Discover markets and oracles (like the example test script) + const allPerpMarketProgramAccounts = + (await program.account.perpMarket.all()) as ProgramAccount[]; + const perpMarketIndexes = allPerpMarketProgramAccounts.map( + (val) => val.account.marketIndex + ); + const allSpotMarketProgramAccounts = + (await program.account.spotMarket.all()) as ProgramAccount[]; + const spotMarketIndexes = allSpotMarketProgramAccounts.map( + (val) => val.account.marketIndex + ); + + const seen = new Set(); + const oracleInfos: OracleInfo[] = []; + for (const acct of allPerpMarketProgramAccounts) { + const key = `${acct.account.amm.oracle.toBase58()}-${ + Object.keys(acct.account.amm.oracleSource)[0] + }`; + if (!seen.has(key)) { + seen.add(key); + oracleInfos.push({ + publicKey: acct.account.amm.oracle, + source: acct.account.amm.oracleSource, + }); + } + } + for (const acct of allSpotMarketProgramAccounts) { + const key = `${acct.account.oracle.toBase58()}-${ + Object.keys(acct.account.oracleSource)[0] + }`; + if (!seen.has(key)) { + seen.add(key); + oracleInfos.push({ + publicKey: acct.account.oracle, + source: acct.account.oracleSource, + }); + } + } + + // Build DriftClient with websocket subscription (lightweight) + const clientConfig: DriftClientConfig = { + connection, + wallet, + programID: programId, + accountSubscription: { + type: 'websocket', + commitment: 'processed', + }, + perpMarketIndexes, + spotMarketIndexes, + oracleInfos, + env: 'devnet', + }; + const client = new DriftClient(clientConfig); + await client.subscribe(); + + // Ensure user exists and is subscribed + const user = client.getUser(); + await user.subscribe(); + + const userAccount = user.getUserAccount(); + const openOrders = user.getOpenOrders(); + + const marketsWithOpenOrders = new Set(); + for (const o of openOrders ?? []) { + if (isStatusOpen(o.status) && isPerpMarketType(o.marketType)) { + marketsWithOpenOrders.add(o.marketIndex); + } + } + + const withdrawTargets = userAccount.perpPositions.filter((pos) => { + const isZeroBase = pos.baseAssetAmount.eq(ZERO); + const hasIso = pos.isolatedPositionScaledBalance.gt(ZERO); + const hasOpenOrders = marketsWithOpenOrders.has(pos.marketIndex); + return isZeroBase && hasIso && !hasOpenOrders; + }); + + console.log( + `Found ${withdrawTargets.length} isolated perp positions to withdraw` + ); + + for (const pos of withdrawTargets) { + try { + const amount = client.getIsolatedPerpPositionTokenAmount(pos.marketIndex); + if (amount.lte(ZERO)) continue; + + const perpMarketAccount = client.getPerpMarketAccount(pos.marketIndex); + const quoteAta = await client.getAssociatedTokenAccount( + perpMarketAccount.quoteSpotMarketIndex + ); + + const ixs = await client.getWithdrawFromIsolatedPerpPositionIxsBundle( + amount, + pos.marketIndex, + 0, + quoteAta, + true + ); + + const tx = await client.buildTransaction(ixs); + const { txSig } = await client.sendTransaction(tx); + console.log( + `Withdrew isolated deposit for perp market ${pos.marketIndex}: ${txSig}` + ); + } catch (e) { + console.error(`Failed to withdraw for market ${pos.marketIndex}:`, e); + } + } + + await user.unsubscribe(); + await client.unsubscribe(); +} + +main().catch((e) => { + console.error(e); + process.exit(1); +}); diff --git a/sdk/src/decode/user.ts b/sdk/src/decode/user.ts index 31e365df2e..d068653714 100644 --- a/sdk/src/decode/user.ts +++ b/sdk/src/decode/user.ts @@ -8,6 +8,7 @@ import { OrderType, PerpPosition, PositionDirection, + PositionFlag, SpotBalanceType, SpotPosition, UserAccount, @@ -83,6 +84,10 @@ export function decodeUser(buffer: Buffer): UserAccount { const baseAssetAmount = readSignedBigInt64LE(buffer, offset + 8); const quoteAssetAmount = readSignedBigInt64LE(buffer, offset + 16); const lpShares = readUnsignedBigInt64LE(buffer, offset + 64); + const isolatedPositionScaledBalance = readSignedBigInt64LE( + buffer, + offset + 72 + ); const openOrders = buffer.readUInt8(offset + 94); const positionFlag = buffer.readUInt8(offset + 95); @@ -90,7 +95,13 @@ export function decodeUser(buffer: Buffer): UserAccount { baseAssetAmount.eq(ZERO) && openOrders === 0 && quoteAssetAmount.eq(ZERO) && - lpShares.eq(ZERO) + lpShares.eq(ZERO) && + isolatedPositionScaledBalance.eq(ZERO) && + !( + (positionFlag & + (PositionFlag.BeingLiquidated | PositionFlag.Bankruptcy)) > + 0 + ) ) { offset += 96; continue; @@ -107,9 +118,7 @@ export function decodeUser(buffer: Buffer): UserAccount { const openAsks = readSignedBigInt64LE(buffer, offset); offset += 8; const settledPnl = readSignedBigInt64LE(buffer, offset); - offset += 16; - const isolatedPositionScaledBalance = readSignedBigInt64LE(buffer, offset); - offset += 8; + offset += 24; const lastQuoteAssetAmountPerLp = readSignedBigInt64LE(buffer, offset); offset += 8; const maxMarginRatio = buffer.readUInt16LE(offset); @@ -118,7 +127,6 @@ export function decodeUser(buffer: Buffer): UserAccount { offset += 3; const perLpBase = buffer.readUInt8(offset); offset += 1; - perpPositions.push({ lastCumulativeFundingRate, baseAssetAmount, @@ -135,8 +143,8 @@ export function decodeUser(buffer: Buffer): UserAccount { openOrders, perLpBase, maxMarginRatio, - isolatedPositionScaledBalance, positionFlag, + isolatedPositionScaledBalance, }); } diff --git a/sdk/src/driftClient.ts b/sdk/src/driftClient.ts index 69a284244f..132a507270 100644 --- a/sdk/src/driftClient.ts +++ b/sdk/src/driftClient.ts @@ -57,7 +57,6 @@ import { StateAccount, SwapReduceOnly, SignedMsgOrderParamsMessage, - TakerInfo, TxParams, UserAccount, UserStatsAccount, @@ -140,6 +139,7 @@ import { BASE_PRECISION, GOV_SPOT_MARKET_INDEX, MARGIN_PRECISION, + MIN_I64, ONE, PERCENTAGE_PRECISION, PRICE_PRECISION, @@ -147,7 +147,11 @@ import { QUOTE_SPOT_MARKET_INDEX, ZERO, } from './constants/numericConstants'; -import { findDirectionToClose, positionIsAvailable } from './math/position'; +import { + calculateClaimablePnl, + findDirectionToClose, + positionIsAvailable, +} from './math/position'; import { getSignedTokenAmount, getTokenAmount } from './math/spotBalance'; import { decodeName, DEFAULT_USER_NAME, encodeName } from './userName'; import { MMOraclePriceData, OraclePriceData } from './oracles/types'; @@ -200,6 +204,8 @@ import nacl from 'tweetnacl'; import { Slothash } from './slot/SlothashSubscriber'; import { getOracleId } from './oracles/oracleId'; import { SignedMsgOrderParams } from './types'; +import { TakerInfo } from './types'; +// BN is already imported globally in this file via other imports import { sha256 } from '@noble/hashes/sha256'; import { getOracleConfidenceFromMMOracleData } from './oracles/utils'; import { ConstituentMap } from './constituentMap/constituentMap'; @@ -293,6 +299,46 @@ export class DriftClient { return this._isSubscribed && this.accountSubscriber.isSubscribed; } + private async getPrePlaceOrderIxs( + orderParams: OptionalOrderParams, + userAccount: UserAccount, + options?: { positionMaxLev?: number; isolatedPositionDepositAmount?: BN } + ): Promise { + const preIxs: TransactionInstruction[] = []; + + if (isVariant(orderParams.marketType, 'perp')) { + const { positionMaxLev, isolatedPositionDepositAmount } = options ?? {}; + + if ( + isolatedPositionDepositAmount?.gt?.(ZERO) && + this.isOrderIncreasingPosition(orderParams, userAccount.subAccountId) + ) { + preIxs.push( + await this.getTransferIsolatedPerpPositionDepositIx( + isolatedPositionDepositAmount as BN, + orderParams.marketIndex, + userAccount.subAccountId + ) + ); + } + + if (positionMaxLev) { + const marginRatio = Math.floor( + (1 / positionMaxLev) * MARGIN_PRECISION.toNumber() + ); + preIxs.push( + await this.getUpdateUserPerpPositionCustomMarginRatioIx( + orderParams.marketIndex, + marginRatio, + userAccount.subAccountId + ) + ); + } + } + + return preIxs; + } + public set isSubscribed(val: boolean) { this._isSubscribed = val; } @@ -766,7 +812,6 @@ export class DriftClient { return lookupTableAccount; } - public async fetchAllLookupTableAccounts(): Promise< AddressLookupTableAccount[] > { @@ -1771,7 +1816,6 @@ export class DriftClient { const { txSig } = await this.sendTransaction(tx, [], this.opts); return txSig; } - public async getUpdateUserCustomMarginRatioIx( marginRatio: number, subAccountId = 0 @@ -2580,7 +2624,6 @@ export class DriftClient { this.mustIncludeSpotMarketIndexes.add(spotMarketIndex); }); } - getRemainingAccounts(params: RemainingAccountParams): AccountMeta[] { const { oracleAccountMap, spotMarketAccountMap, perpMarketAccountMap } = this.getRemainingAccountMapsForUsers(params.userAccounts); @@ -3508,7 +3551,6 @@ export class DriftClient { userAccountPublicKey, }; } - public async createInitializeUserAccountAndDepositCollateral( amount: BN, userTokenAccount: PublicKey, @@ -4236,27 +4278,52 @@ export class DriftClient { amount: BN, perpMarketIndex: number, subAccountId?: number, - txParams?: TxParams + txParams?: TxParams, + trySettle?: boolean, + noBuffer?: boolean ): Promise { - const { txSig } = await this.sendTransaction( - await this.buildTransaction( - await this.getTransferIsolatedPerpPositionDepositIx( - amount, - perpMarketIndex, - subAccountId - ), - txParams - ), - [], - this.opts + const ixs = []; + const tokenAmountDeposited = + this.getIsolatedPerpPositionTokenAmount(perpMarketIndex); + const transferIx = await this.getTransferIsolatedPerpPositionDepositIx( + amount, + perpMarketIndex, + subAccountId, + noBuffer ); + + const needsToSettle = + amount.lt(tokenAmountDeposited.neg()) || amount.eq(MIN_I64) || trySettle; + if (needsToSettle) { + const settleIx = await this.settleMultiplePNLsIx( + await getUserAccountPublicKey( + this.program.programId, + this.authority, + subAccountId ?? this.activeSubAccountId + ), + this.getUserAccount(subAccountId), + [perpMarketIndex], + SettlePnlMode.TRY_SETTLE + ); + ixs.push(settleIx); + } + + ixs.push(transferIx); + + const tx = await this.buildTransaction(ixs, txParams); + const { txSig } = await this.sendTransaction(tx, [], { + ...this.opts, + skipPreflight: true, + }); return txSig; } public async getTransferIsolatedPerpPositionDepositIx( amount: BN, perpMarketIndex: number, - subAccountId?: number + subAccountId?: number, + noAmountBuffer?: boolean, + signingAuthority?: PublicKey ): Promise { const userAccountPublicKey = await getUserAccountPublicKey( this.program.programId, @@ -4274,17 +4341,22 @@ export class DriftClient { readablePerpMarketIndex: [perpMarketIndex], }); + const amountWithBuffer = + noAmountBuffer || amount.eq(MIN_I64) + ? amount + : amount.add(amount.div(new BN(200))); // .5% buffer + return await this.program.instruction.transferIsolatedPerpPositionDeposit( spotMarketIndex, perpMarketIndex, - amount, + amountWithBuffer, { accounts: { state: await this.getStatePublicKey(), spotMarketVault: spotMarketAccount.vault, user: userAccountPublicKey, userStats: this.getUserStatsAccountPublicKey(), - authority: this.wallet.publicKey, + authority: signingAuthority ?? this.wallet.publicKey, }, remainingAccounts, } @@ -4298,20 +4370,83 @@ export class DriftClient { subAccountId?: number, txParams?: TxParams ): Promise { + const instructions = + await this.getWithdrawFromIsolatedPerpPositionIxsBundle( + amount, + perpMarketIndex, + subAccountId, + userTokenAccount + ); const { txSig } = await this.sendTransaction( - await this.buildTransaction( - await this.getWithdrawFromIsolatedPerpPositionIx( - amount, - perpMarketIndex, - userTokenAccount, - subAccountId - ), - txParams - ) + await this.buildTransaction(instructions, txParams) ); return txSig; } + public async getWithdrawFromIsolatedPerpPositionIxsBundle( + amount: BN, + perpMarketIndex: number, + subAccountId?: number, + userTokenAccount?: PublicKey + ): Promise { + const userAccountPublicKey = await getUserAccountPublicKey( + this.program.programId, + this.authority, + subAccountId ?? this.activeSubAccountId + ); + const userAccount = this.getUserAccount(subAccountId); + + const tokenAmountDeposited = + this.getIsolatedPerpPositionTokenAmount(perpMarketIndex); + const isolatedPositionUnrealizedPnl = calculateClaimablePnl( + this.getPerpMarketAccount(perpMarketIndex), + this.getSpotMarketAccount( + this.getPerpMarketAccount(perpMarketIndex).quoteSpotMarketIndex + ), + userAccount.perpPositions.find((p) => p.marketIndex === perpMarketIndex), + this.getOracleDataForSpotMarket( + this.getPerpMarketAccount(perpMarketIndex).quoteSpotMarketIndex + ) + ); + + const depositAmountPlusUnrealizedPnl = tokenAmountDeposited.add( + isolatedPositionUnrealizedPnl + ); + + const amountToWithdraw = amount.gt(depositAmountPlusUnrealizedPnl) + ? MIN_I64 // min i64 + : amount; + let associatedTokenAccount = userTokenAccount; + if (!associatedTokenAccount) { + const perpMarketAccount = this.getPerpMarketAccount(perpMarketIndex); + const quoteSpotMarketIndex = perpMarketAccount.quoteSpotMarketIndex; + associatedTokenAccount = await this.getAssociatedTokenAccount( + quoteSpotMarketIndex + ); + } + + const withdrawIx = await this.getWithdrawFromIsolatedPerpPositionIx( + amountToWithdraw, + perpMarketIndex, + associatedTokenAccount, + subAccountId + ); + const ixs = [withdrawIx]; + + const needsToSettle = + amount.gt(tokenAmountDeposited) && isolatedPositionUnrealizedPnl.gt(ZERO); + if (needsToSettle) { + const settleIx = await this.settleMultiplePNLsIx( + userAccountPublicKey, + userAccount, + [perpMarketIndex], + SettlePnlMode.TRY_SETTLE + ); + ixs.push(settleIx); + } + return ixs; + } + public async getWithdrawFromIsolatedPerpPositionIx( amount: BN, perpMarketIndex: number, @@ -4495,7 +4630,6 @@ export class DriftClient { } ); } - public async getRemovePerpLpSharesIx( marketIndex: number, sharesToBurn?: BN, @@ -4652,7 +4786,8 @@ export class DriftClient { referrerInfo?: ReferrerInfo, cancelExistingOrders?: boolean, settlePnl?: boolean, - positionMaxLev?: number + positionMaxLev?: number, + isolatedPositionDepositAmount?: BN ): Promise<{ cancelExistingOrdersTx?: Transaction | VersionedTransaction; settlePnlTx?: Transaction | VersionedTransaction; @@ -4680,18 +4815,25 @@ export class DriftClient { const txKeys = Object.keys(ixPromisesForTxs); - const marketOrderTxIxs = positionMaxLev - ? this.getPlaceOrdersAndSetPositionMaxLevIx( - [orderParams, ...bracketOrdersParams], - positionMaxLev, - userAccount.subAccountId - ) - : this.getPlaceOrdersIx( - [orderParams, ...bracketOrdersParams], - userAccount.subAccountId - ); + const preIxs: TransactionInstruction[] = await this.getPrePlaceOrderIxs( + orderParams, + userAccount, + { + positionMaxLev, + isolatedPositionDepositAmount, + } + ); - ixPromisesForTxs.marketOrderTx = marketOrderTxIxs; + ixPromisesForTxs.marketOrderTx = (async () => { + const placeOrdersIx = await this.getPlaceOrdersIx( + [orderParams, ...bracketOrdersParams], + userAccount.subAccountId + ); + if (preIxs.length) { + return [...preIxs, placeOrdersIx] as unknown as TransactionInstruction; + } + return placeOrdersIx; + })(); /* Cancel open orders in market if requested */ if (cancelExistingOrders && isVariant(orderParams.marketType, 'perp')) { @@ -4809,12 +4951,32 @@ export class DriftClient { public async placePerpOrder( orderParams: OptionalOrderParams, txParams?: TxParams, - subAccountId?: number + subAccountId?: number, + isolatedPositionDepositAmount?: BN ): Promise { + const preIxs: TransactionInstruction[] = []; + if ( + isolatedPositionDepositAmount?.gt?.(ZERO) && + this.isOrderIncreasingPosition(orderParams, subAccountId) + ) { + preIxs.push( + await this.getTransferIsolatedPerpPositionDepositIx( + isolatedPositionDepositAmount as BN, + orderParams.marketIndex, + subAccountId + ) + ); + } + const { txSig, slot } = await this.sendTransaction( await this.buildTransaction( await this.getPlacePerpOrderIx(orderParams, subAccountId), - txParams + txParams, + undefined, + undefined, + undefined, + undefined, + preIxs ), [], this.opts @@ -5002,13 +5164,31 @@ export class DriftClient { public async cancelOrder( orderId?: number, txParams?: TxParams, - subAccountId?: number + subAccountId?: number, + overrides?: { withdrawIsolatedDepositAmount?: BN } ): Promise { + const cancelIx = await this.getCancelOrderIx(orderId, subAccountId); + + const instructions: TransactionInstruction[] = [cancelIx]; + + if (overrides?.withdrawIsolatedDepositAmount !== undefined) { + const order = this.getOrder(orderId, subAccountId); + const perpMarketIndex = order?.marketIndex; + const withdrawAmount = overrides.withdrawIsolatedDepositAmount; + + if (withdrawAmount.gt(ZERO)) { + const withdrawIxs = + await this.getWithdrawFromIsolatedPerpPositionIxsBundle( + withdrawAmount, + perpMarketIndex, + subAccountId + ); + instructions.push(...withdrawIxs); + } + } + const { txSig } = await this.sendTransaction( - await this.buildTransaction( - await this.getCancelOrderIx(orderId, subAccountId), - txParams - ), + await this.buildTransaction(instructions, txParams), [], this.opts ); @@ -5242,7 +5422,8 @@ export class DriftClient { params: OrderParams[], txParams?: TxParams, subAccountId?: number, - optionalIxs?: TransactionInstruction[] + optionalIxs?: TransactionInstruction[], + isolatedPositionDepositAmount?: BN ): Promise { const { txSig } = await this.sendTransaction( ( @@ -5250,7 +5431,8 @@ export class DriftClient { params, txParams, subAccountId, - optionalIxs + optionalIxs, + isolatedPositionDepositAmount ) ).placeOrdersTx, [], @@ -5264,10 +5446,29 @@ export class DriftClient { params: OrderParams[], txParams?: TxParams, subAccountId?: number, - optionalIxs?: TransactionInstruction[] + optionalIxs?: TransactionInstruction[], + isolatedPositionDepositAmount?: BN ) { const lookupTableAccounts = await this.fetchAllLookupTableAccounts(); + const preIxs: TransactionInstruction[] = []; + if (params?.length === 1) { + const p = params[0]; + if ( + isVariant(p.marketType, 'perp') && + isolatedPositionDepositAmount?.gt?.(ZERO) && + this.isOrderIncreasingPosition(p, subAccountId) + ) { + preIxs.push( + await this.getTransferIsolatedPerpPositionDepositIx( + isolatedPositionDepositAmount as BN, + p.marketIndex, + subAccountId + ) + ); + } + } + const tx = await this.buildTransaction( await this.getPlaceOrdersIx(params, subAccountId), txParams, @@ -5275,14 +5476,13 @@ export class DriftClient { lookupTableAccounts, undefined, undefined, - optionalIxs + [...preIxs, ...(optionalIxs ?? [])] ); return { placeOrdersTx: tx, }; } - public async getPlaceOrdersIx( params: OptionalOrderParams[], subAccountId?: number, @@ -5391,8 +5591,7 @@ export class DriftClient { const marginRatio = Math.floor( (1 / positionMaxLev) * MARGIN_PRECISION.toNumber() ); - - // TODO: Handle multiple markets? + // Keep existing behavior but note: prefer using getPostPlaceOrderIxs path const setPositionMaxLevIxs = await this.getUpdateUserPerpPositionCustomMarginRatioIx( readablePerpMarketIndex[0], @@ -7110,7 +7309,6 @@ export class DriftClient { this.perpMarketLastSlotCache.set(orderParams.marketIndex, slot); return txSig; } - public async preparePlaceAndTakePerpOrderWithAdditionalOrders( orderParams: OptionalOrderParams, makerInfo?: MakerInfo | MakerInfo[], @@ -7122,7 +7320,8 @@ export class DriftClient { settlePnl?: boolean, exitEarlyIfSimFails?: boolean, auctionDurationPercentage?: number, - optionalIxs?: TransactionInstruction[] + optionalIxs?: TransactionInstruction[], + isolatedPositionDepositAmount?: BN ): Promise<{ placeAndTakeTx: Transaction | VersionedTransaction; cancelExistingOrdersTx: Transaction | VersionedTransaction; @@ -7156,6 +7355,20 @@ export class DriftClient { subAccountId ); + if ( + isVariant(orderParams.marketType, 'perp') && + isolatedPositionDepositAmount?.gt?.(ZERO) && + this.isOrderIncreasingPosition(orderParams, subAccountId) + ) { + placeAndTakeIxs.push( + await this.getTransferIsolatedPerpPositionDepositIx( + isolatedPositionDepositAmount as BN, + orderParams.marketIndex, + subAccountId + ) + ); + } + placeAndTakeIxs.push(placeAndTakeIx); if (bracketOrdersParams.length > 0) { @@ -7166,6 +7379,11 @@ export class DriftClient { placeAndTakeIxs.push(bracketOrdersIx); } + // Optional extra ixs can be appended at the front + if (optionalIxs?.length) { + placeAndTakeIxs.unshift(...optionalIxs); + } + const shouldUseSimulationComputeUnits = txParams?.useSimulatedComputeUnits; const shouldExitIfSimulationFails = exitEarlyIfSimFails; @@ -7973,7 +8191,6 @@ export class DriftClient { this.spotMarketLastSlotCache.set(QUOTE_SPOT_MARKET_INDEX, slot); return txSig; } - public async getPlaceAndTakeSpotOrderIx( orderParams: OptionalOrderParams, fulfillmentConfig?: SerumV3FulfillmentConfigAccount, @@ -8436,7 +8653,6 @@ export class DriftClient { bitFlags?: number; policy?: ModifyOrderPolicy; maxTs?: BN; - txParams?: TxParams; }, subAccountId?: number ): Promise { @@ -8962,7 +9178,6 @@ export class DriftClient { this.perpMarketLastSlotCache.set(marketIndex, slot); return txSig; } - public async getLiquidatePerpIx( userAccountPublicKey: PublicKey, userAccount: UserAccount, @@ -9753,7 +9968,6 @@ export class DriftClient { } ); } - public async resolveSpotBankruptcy( userAccountPublicKey: PublicKey, userAccount: UserAccount, @@ -10590,7 +10804,6 @@ export class DriftClient { const { txSig } = await this.sendTransaction(tx, [], this.opts); return txSig; } - public async getSettleRevenueToInsuranceFundIx( spotMarketIndex: number ): Promise { @@ -11394,7 +11607,6 @@ export class DriftClient { ); return config as ProtectedMakerModeConfig; } - public async updateUserProtectedMakerOrders( subAccountId: number, protectedOrders: boolean, @@ -12788,4 +13000,24 @@ export class DriftClient { forceVersionedTransaction, }); } + + isOrderIncreasingPosition( + orderParams: OptionalOrderParams, + subAccountId: number + ): boolean { + const userAccount = this.getUserAccount(subAccountId); + const perpPosition = userAccount.perpPositions.find( + (p) => p.marketIndex === orderParams.marketIndex + ); + if (!perpPosition) return true; + + const currentBase = perpPosition.baseAssetAmount; + if (currentBase.eq(ZERO)) return true; + + const orderBaseAmount = isVariant(orderParams.direction, 'long') + ? orderParams.baseAssetAmount + : orderParams.baseAssetAmount.neg(); + + return currentBase.add(orderBaseAmount).abs().gt(currentBase.abs()); + } } diff --git a/sdk/src/margin/README.md b/sdk/src/margin/README.md new file mode 100644 index 0000000000..68174728e0 --- /dev/null +++ b/sdk/src/margin/README.md @@ -0,0 +1,139 @@ +## Margin Calculation Snapshot (SDK) + +This document describes the single-source-of-truth margin engine in the SDK that mirrors the on-chain `MarginCalculation` and related semantics. The goal is to compute an immutable snapshot in one pass and have existing `User` getters delegate to it, eliminating duplicative work across getters and UI hooks while maintaining parity with the program. + +### Alignment with on-chain + +- The SDK snapshot shape mirrors `programs/drift/src/state/margin_calculation.rs` field-for-field. +- The inputs and ordering mirror `calculate_margin_requirement_and_total_collateral_and_liability_info` in `programs/drift/src/math/margin.rs`. +- Isolated positions are represented as `isolatedMarginCalculations` keyed by perp `marketIndex`, matching program logic. + +### Core SDK types (shape parity) + +```ts +// Types reflect on-chain names and numeric signs +import { MarketType } from './types'; + +export type MarginCategory = 'Initial' | 'Maintenance' | 'Fill'; + +export type MarginCalculationMode = + | { type: 'Standard' } + | { type: 'Liquidation' }; + +export class MarketIdentifier { + marketType: MarketType; + marketIndex: number; + + static spot(marketIndex: number): MarketIdentifier; + static perp(marketIndex: number): MarketIdentifier; + equals(other: MarketIdentifier | undefined): boolean; +} + +export class MarginContext { + marginType: MarginCategory; + mode: MarginCalculationMode; + strict: boolean; + ignoreInvalidDepositOracles: boolean; + isolatedMarginBuffers: Map; + crossMarginBuffer: BN; + + // Factory methods + static standard(marginType: MarginCategory): MarginContext; + static liquidation( + crossMarginBuffer: BN, + isolatedMarginBuffers: Map + ): MarginContext; + + // Builder methods (return this for chaining) + strictMode(strict: boolean): this; + ignoreInvalidDeposits(ignore: boolean): this; + setCrossMarginBuffer(crossMarginBuffer: BN): this; + setIsolatedMarginBuffers(isolatedMarginBuffers: Map): this; + setIsolatedMarginBuffer(marketIndex: number, isolatedMarginBuffer: BN): this; +} + +export class IsolatedMarginCalculation { + marginRequirement: BN; // u128 + totalCollateral: BN; // i128 (deposit + pnl) + totalCollateralBuffer: BN; // i128 + marginRequirementPlusBuffer: BN; // u128 + + getTotalCollateralPlusBuffer(): BN; + meetsMarginRequirement(): boolean; + meetsMarginRequirementWithBuffer(): boolean; + marginShortage(): BN; +} + +export class MarginCalculation { + context: MarginContext; + + totalCollateral: BN; // i128 + totalCollateralBuffer: BN; // i128 + marginRequirement: BN; // u128 + marginRequirementPlusBuffer: BN; // u128 + + isolatedMarginCalculations: Map; + + totalPerpLiabilityValue: BN; // u128 + + // Cross margin helpers + getCrossTotalCollateralPlusBuffer(): BN; + meetsCrossMarginRequirement(): boolean; + meetsCrossMarginRequirementWithBuffer(): boolean; + getCrossFreeCollateral(): BN; + + // Combined (cross + isolated) helpers + meetsMarginRequirement(): boolean; + meetsMarginRequirementWithBuffer(): boolean; + + // Isolated margin helpers + getIsolatedFreeCollateral(marketIndex: number): BN; + getIsolatedMarginCalculation(marketIndex: number): IsolatedMarginCalculation | undefined; + hasIsolatedMarginCalculation(marketIndex: number): boolean; +} +``` + +### Computation model (on-demand) + +- The SDK computes the snapshot on-demand when `getMarginCalculation(...)` is called. +- No event-driven recomputation by default (oracle prices can change every slot; recomputing every update would be wasteful). +- Callers (UI/bots) decide polling frequency (e.g., UI can refresh every ~1s on active trade forms). + +### User integration + +`User` class provides the primary entrypoint: + +```ts +public getMarginCalculation( + marginCategory: MarginCategory = 'Initial', + opts?: { + strict?: boolean; // mirror StrictOraclePrice application + includeOpenOrders?: boolean; // include open orders in margin calc + enteringHighLeverage?: boolean; // entering high leverage mode + liquidationBufferMap?: Map; // margin buffer for liquidation mode + } +): MarginCalculation; +``` + +Existing getters delegate to the snapshot to avoid duplicate work: +- `getTotalCollateral()` → `snapshot.totalCollateral` +- `getMarginRequirement(mode)` → `snapshot.marginRequirement` +- `getFreeCollateral()` → `snapshot.getCrossFreeCollateral()` +- Per-market isolated FC → `snapshot.getIsolatedFreeCollateral(marketIndex)` + +### UI compatibility + +- All existing `User` getters remain and delegate to the snapshot, so current UI keeps working without call-site changes. +- New consumers can call `user.getMarginCalculation()` to access isolated breakdowns via `isolatedMarginCalculations`. + +### Testing and parity + +- Golden tests comparing SDK snapshot against program outputs (cross and isolated, edge cases). +- Keep math/rounding identical to program (ordering, buffers, funding, open-order IM, oracle strictness). + +### Migration plan (brief) + +1. Implement `types` and `engine` with strict parity; land behind a feature flag. +2. Add `user.getMarginCalculation()` and delegate legacy getters. +3. Optionally update UI hooks to read richer fields; not required for compatibility. +4. Expand parity tests; enable by default after validation. diff --git a/sdk/src/marginCalculation.ts b/sdk/src/marginCalculation.ts index f919233f04..bff3d2e605 100644 --- a/sdk/src/marginCalculation.ts +++ b/sdk/src/marginCalculation.ts @@ -131,15 +131,7 @@ export class MarginCalculation { marginRequirement: BN; marginRequirementPlusBuffer: BN; isolatedMarginCalculations: Map; - allDepositOraclesValid: boolean; - allLiabilityOraclesValid: boolean; - withPerpIsolatedLiability: boolean; - withSpotIsolatedLiability: boolean; totalPerpLiabilityValue: BN; - trackedMarketMarginRequirement: BN; - fuelDeposits: number; - fuelBorrows: number; - fuelPositions: number; constructor(context: MarginContext) { this.context = context; @@ -148,15 +140,7 @@ export class MarginCalculation { this.marginRequirement = ZERO; this.marginRequirementPlusBuffer = ZERO; this.isolatedMarginCalculations = new Map(); - this.allDepositOraclesValid = true; - this.allLiabilityOraclesValid = true; - this.withPerpIsolatedLiability = false; - this.withSpotIsolatedLiability = false; this.totalPerpLiabilityValue = ZERO; - this.trackedMarketMarginRequirement = ZERO; - this.fuelDeposits = 0; - this.fuelBorrows = 0; - this.fuelPositions = 0; } addCrossMarginTotalCollateral(delta: BN): void { @@ -216,22 +200,6 @@ export class MarginCalculation { this.totalPerpLiabilityValue.add(perpLiabilityValue); } - updateAllDepositOraclesValid(valid: boolean): void { - this.allDepositOraclesValid = this.allDepositOraclesValid && valid; - } - - updateAllLiabilityOraclesValid(valid: boolean): void { - this.allLiabilityOraclesValid = this.allLiabilityOraclesValid && valid; - } - - updateWithSpotIsolatedLiability(isolated: boolean): void { - this.withSpotIsolatedLiability = this.withSpotIsolatedLiability || isolated; - } - - updateWithPerpIsolatedLiability(isolated: boolean): void { - this.withPerpIsolatedLiability = this.withPerpIsolatedLiability || isolated; - } - getCrossTotalCollateralPlusBuffer(): BN { return this.totalCollateral.add(this.totalCollateralBuffer); } diff --git a/sdk/src/math/margin.ts b/sdk/src/math/margin.ts index c65912eab7..ea29346f06 100644 --- a/sdk/src/math/margin.ts +++ b/sdk/src/math/margin.ts @@ -166,10 +166,10 @@ export function calculateWorstCasePerpLiabilityValue( perpPosition: PerpPosition, perpMarket: PerpMarketAccount, oraclePrice: BN, - includeOpenOrders = true + includeOpenOrders: boolean = true ): { worstCaseBaseAssetAmount: BN; worstCaseLiabilityValue: BN } { const isPredictionMarket = isVariant(perpMarket.contractType, 'prediction'); - + // return early if no open orders required if (!includeOpenOrders) { return { worstCaseBaseAssetAmount: perpPosition.baseAssetAmount, @@ -180,7 +180,6 @@ export function calculateWorstCasePerpLiabilityValue( ), }; } - const allBids = perpPosition.baseAssetAmount.add(perpPosition.openBids); const allAsks = perpPosition.baseAssetAmount.add(perpPosition.openAsks); diff --git a/sdk/src/math/position.ts b/sdk/src/math/position.ts index 3db5007a20..d0c3a16a0d 100644 --- a/sdk/src/math/position.ts +++ b/sdk/src/math/position.ts @@ -14,6 +14,7 @@ import { PositionDirection, PerpPosition, SpotMarketAccount, + PositionFlag, } from '../types'; import { calculateUpdatedAMM, @@ -127,7 +128,6 @@ export function calculatePositionPNL( if (withFunding) { const fundingRatePnL = calculateUnsettledFundingPnl(market, perpPosition); - pnl = pnl.add(fundingRatePnL); } @@ -244,7 +244,17 @@ export function positionIsAvailable(position: PerpPosition): boolean { position.baseAssetAmount.eq(ZERO) && position.openOrders === 0 && position.quoteAssetAmount.eq(ZERO) && - position.lpShares.eq(ZERO) + position.lpShares.eq(ZERO) && + position.isolatedPositionScaledBalance.eq(ZERO) && + !positionIsBeingLiquidated(position) + ); +} + +export function positionIsBeingLiquidated(position: PerpPosition): boolean { + return ( + (position.positionFlag & + (PositionFlag.BeingLiquidated | PositionFlag.Bankruptcy)) > + 0 ); } diff --git a/sdk/src/math/spotBalance.ts b/sdk/src/math/spotBalance.ts index cd6bb053d7..f33ae5729c 100644 --- a/sdk/src/math/spotBalance.ts +++ b/sdk/src/math/spotBalance.ts @@ -68,7 +68,6 @@ export function getTokenAmount( balanceType: SpotBalanceType ): BN { const precisionDecrease = TEN.pow(new BN(19 - spotMarket.decimals)); - if (isVariant(balanceType, 'deposit')) { return balanceAmount .mul(spotMarket.cumulativeDepositInterest) diff --git a/sdk/src/types.ts b/sdk/src/types.ts index ea111ce0c5..f98221090b 100644 --- a/sdk/src/types.ts +++ b/sdk/src/types.ts @@ -591,6 +591,10 @@ export type SpotBankruptcyRecord = { ifPayment: BN; }; +export class LiquidationBitFlag { + static readonly IsolatedPosition = 1; +} + export type SettlePnlRecord = { ts: BN; user: PublicKey; @@ -1142,16 +1146,10 @@ export type PerpPosition = { maxMarginRatio: number; lastQuoteAssetAmountPerLp: BN; perLpBase: number; - isolatedPositionScaledBalance: BN; positionFlag: number; + isolatedPositionScaledBalance: BN; }; -export class PositionFlag { - static readonly IsolatedPosition = 1; - static readonly BeingLiquidated = 2; - static readonly Bankruptcy = 4; -} - export type UserStatsAccount = { numberOfSubAccounts: number; numberOfSubAccountsCreated: number; @@ -1302,6 +1300,12 @@ export class OrderParamsBitFlag { static readonly UpdateHighLeverageMode = 2; } +export class PositionFlag { + static readonly IsolatedPosition = 1; + static readonly BeingLiquidated = 2; + static readonly Bankruptcy = 4; +} + export type NecessaryOrderParams = { orderType: OrderType; marketIndex: number; diff --git a/sdk/src/user.ts b/sdk/src/user.ts index d6ebcd5257..bb4aa6862c 100644 --- a/sdk/src/user.ts +++ b/sdk/src/user.ts @@ -504,8 +504,9 @@ export class User { ) : ZERO; - let freeCollateral: BN; - if (positionType === 'isolated' && this.isPositionEmpty(perpPosition)) { + let freeCollateral: BN = ZERO; + // if position is isolated, we always add on available quote from the cross account + if (positionType === 'isolated') { const { totalAssetValue: quoteSpotMarketAssetValue, totalLiabilityValue: quoteSpotMarketLiabilityValue, @@ -520,13 +521,16 @@ export class User { freeCollateral = quoteSpotMarketAssetValue.sub( quoteSpotMarketLiabilityValue ); - } else { - freeCollateral = this.getFreeCollateral( + } + + // adding free collateral from the cross account or from within isolated margin calc for this marketIndex + freeCollateral = freeCollateral.add( + this.getFreeCollateral( 'Initial', enterHighLeverageMode, positionType === 'isolated' ? marketIndex : undefined - ).sub(collateralBuffer); - } + ).sub(collateralBuffer) + ); return this.getPerpBuyingPowerFromFreeCollateralAndBaseAssetAmount( marketIndex, @@ -574,7 +578,12 @@ export class User { }); if (perpMarketIndex !== undefined) { - return calc.getIsolatedFreeCollateral(perpMarketIndex); + // getIsolatedFreeCollateral will throw if no existing isolated position but we are fetching for potential new position, so we wrap in a try/catch + try { + return calc.getIsolatedFreeCollateral(perpMarketIndex); + } catch (error) { + return ZERO; + } } else { return calc.getCrossFreeCollateral(); } @@ -2363,7 +2372,7 @@ export class User { enteringHighLeverage ); - if (freeCollateralDelta.eq(ZERO)) { + if (!freeCollateralDelta || freeCollateralDelta.eq(ZERO)) { return new BN(-1); } diff --git a/sdk/tests/dlob/helpers.ts b/sdk/tests/dlob/helpers.ts index 397b020456..2ba67bb355 100644 --- a/sdk/tests/dlob/helpers.ts +++ b/sdk/tests/dlob/helpers.ts @@ -781,4 +781,4 @@ export class MockUserMap implements UserMapInterface { ]; } } -} +} \ No newline at end of file diff --git a/sdk/tests/user/test.ts b/sdk/tests/user/test.ts index 6c431b7226..58448262e2 100644 --- a/sdk/tests/user/test.ts +++ b/sdk/tests/user/test.ts @@ -49,7 +49,7 @@ async function makeMockUser( oraclePriceMap[myMockSpotMarkets[i].oracle.toString()] = spotOraclePriceList[i]; } - // console.log(oraclePriceMap); + // console.log('oraclePriceMap:', oraclePriceMap); function getMockUserAccount(): UserAccount { return myMockUserAccount; diff --git a/tests/isolatedPositionDriftClient.ts b/tests/isolatedPositionDriftClient.ts index 0e7ad59b7f..4ebc003aaf 100644 --- a/tests/isolatedPositionDriftClient.ts +++ b/tests/isolatedPositionDriftClient.ts @@ -164,7 +164,14 @@ describe('drift client', () => { }); it('Transfer isolated perp position deposit', async () => { - await driftClient.transferIsolatedPerpPositionDeposit(usdcAmount.neg(), 0); + await driftClient.transferIsolatedPerpPositionDeposit( + usdcAmount.neg(), + 0, + undefined, + undefined, + undefined, + true + ); const quoteAssetTokenAmount = driftClient.getIsolatedPerpPositionTokenAmount(0); @@ -173,7 +180,14 @@ describe('drift client', () => { const quoteTokenAmount = driftClient.getQuoteAssetTokenAmount(); assert(quoteTokenAmount.eq(usdcAmount)); - await driftClient.transferIsolatedPerpPositionDeposit(usdcAmount, 0); + await driftClient.transferIsolatedPerpPositionDeposit( + usdcAmount, + 0, + undefined, + undefined, + undefined, + true + ); const quoteAssetTokenAmount2 = driftClient.getIsolatedPerpPositionTokenAmount(0); @@ -514,7 +528,14 @@ describe('drift client', () => { it('Open short position', async () => { // Re-Deposit USDC, assuming we have 0 balance here - await driftClient.transferIsolatedPerpPositionDeposit(new BN(9855998), 0); + await driftClient.transferIsolatedPerpPositionDeposit( + new BN(9855998), + 0, + undefined, + undefined, + undefined, + true + ); const baseAssetAmount = new BN(48000000000); await driftClient.openPosition(PositionDirection.SHORT, baseAssetAmount, 0); diff --git a/tests/isolatedPositionLiquidatePerp.ts b/tests/isolatedPositionLiquidatePerp.ts index c97feadfe0..9c702cbba3 100644 --- a/tests/isolatedPositionLiquidatePerp.ts +++ b/tests/isolatedPositionLiquidatePerp.ts @@ -151,7 +151,14 @@ describe('liquidate perp (no open orders)', () => { userUSDCAccount.publicKey ); - await driftClient.transferIsolatedPerpPositionDeposit(usdcAmount, 0); + await driftClient.transferIsolatedPerpPositionDeposit( + usdcAmount, + 0, + undefined, + undefined, + undefined, + true + ); await driftClient.openPosition( PositionDirection.LONG, diff --git a/tests/isolatedPositionLiquidatePerpwithFill.ts b/tests/isolatedPositionLiquidatePerpwithFill.ts index 787b5d42f5..c380b68ec2 100644 --- a/tests/isolatedPositionLiquidatePerpwithFill.ts +++ b/tests/isolatedPositionLiquidatePerpwithFill.ts @@ -156,7 +156,14 @@ describe('liquidate perp (no open orders)', () => { userUSDCAccount.publicKey ); - await driftClient.transferIsolatedPerpPositionDeposit(usdcAmount, 0); + await driftClient.transferIsolatedPerpPositionDeposit( + usdcAmount, + 0, + undefined, + undefined, + undefined, + true + ); await driftClient.openPosition( PositionDirection.LONG, From 0ad0f422a1dc5a1dc94476d0bde3a796900d029f Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 20:50:07 +0000 Subject: [PATCH 20/51] sdk: release v2.155.0-beta.5 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index 5899882642..e98e278b43 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.155.0-beta.4 +2.155.0-beta.5 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 3cd9222714..de30908a86 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.155.0-beta.4", + "version": "2.155.0-beta.5", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From 5af1dbc12e35922470c84577077176abe9d8aaf1 Mon Sep 17 00:00:00 2001 From: moosecat <14929853+moosecat2@users.noreply.github.com> Date: Mon, 19 Jan 2026 08:53:36 -0800 Subject: [PATCH 21/51] migrate spot assets (#2057) * migrate spot assets * weth * weth again * prettify --- sdk/src/constants/spotMarkets.ts | 35 +++++++++++++++++++------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/sdk/src/constants/spotMarkets.ts b/sdk/src/constants/spotMarkets.ts index 243e6ae2b9..ce963d1158 100644 --- a/sdk/src/constants/spotMarkets.ts +++ b/sdk/src/constants/spotMarkets.ts @@ -223,8 +223,8 @@ export const MainnetSpotMarkets: SpotMarketConfig[] = [ symbol: 'wETH', marketIndex: 4, poolId: 0, - oracle: new PublicKey('6bEp2MiyoiiiDxcVqE8rUHQWwHirXUXtKfAEATTVqNzT'), - oracleSource: OracleSource.PYTH_PULL, + oracle: new PublicKey('93FG52TzNKCnMiasV14Ba34BYcHDb9p4zK4GjZnLwqWR'), + oracleSource: OracleSource.PYTH_LAZER, mint: new PublicKey('7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs'), precision: new BN(10).pow(EIGHT), precisionExp: EIGHT, @@ -237,6 +237,7 @@ export const MainnetSpotMarkets: SpotMarketConfig[] = [ ), pythFeedId: '0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace', + pythLazerId: 2, }, { symbol: 'USDT', @@ -290,14 +291,15 @@ export const MainnetSpotMarkets: SpotMarketConfig[] = [ symbol: 'bSOL', marketIndex: 8, poolId: 0, - oracle: new PublicKey('BmDWPMsytWmYkh9n6o7m79eVshVYf2B5GVaqQ2EWKnGH'), - oracleSource: OracleSource.PYTH_PULL, + oracle: new PublicKey('6YEQjxkbhfrWV2VdR9zxBJxWYshcMYRs6bpuX1ng2CbP'), + oracleSource: OracleSource.PYTH_LAZER, mint: new PublicKey('bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1'), precision: new BN(10).pow(NINE), precisionExp: NINE, serumMarket: new PublicKey('ARjaHVxGCQfTvvKjLd7U7srvk6orthZSE6uqWchCczZc'), pythFeedId: '0x89875379e70f8fbadc17aef315adf3a8d5d160b811435537e03c97e8aac97d9c', + pythLazerId: 389, }, { symbol: 'JTO', @@ -423,27 +425,29 @@ export const MainnetSpotMarkets: SpotMarketConfig[] = [ symbol: 'INF', marketIndex: 16, poolId: 0, - oracle: new PublicKey('B7RUYg2zF6UdUSHv2RmpnriPVJccYWojgFydNS1NY5F8'), - oracleSource: OracleSource.PYTH_PULL, + oracle: new PublicKey('7SAxf2SCJe5c72rZNo4etpGjz5TaEAqi8QkbfpRbouuT'), + oracleSource: OracleSource.PYTH_LAZER, mint: new PublicKey('5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm'), precision: new BN(10).pow(NINE), precisionExp: NINE, launchTs: 1716595200000, pythFeedId: '0xf51570985c642c49c2d6e50156390fdba80bb6d5f7fa389d2f012ced4f7d208f', + pythLazerId: 455, }, { symbol: 'dSOL', marketIndex: 17, poolId: 0, - oracle: new PublicKey('4YstsHafLyDbYFxmJbgoEr33iJJEp6rNPgLTQRgXDkG2'), - oracleSource: OracleSource.PYTH_PULL, + oracle: new PublicKey('EopUQMXT56Lbyg1DKDbc7VAQFcx4QGBKBepZxeKe1sJf'), + oracleSource: OracleSource.PYTH_LAZER, mint: new PublicKey('Dso1bDeDjCQxTrWHqUUi63oBvV7Mdm6WaobLbQ7gnPQ'), precision: new BN(10).pow(NINE), precisionExp: NINE, launchTs: 1716595200000, pythFeedId: '0x41f858bae36e7ee3f4a3a6d4f176f0893d4a261460a52763350d00f8648195ee', + pythLazerId: 415, }, { symbol: 'USDY', @@ -573,8 +577,8 @@ export const MainnetSpotMarkets: SpotMarketConfig[] = [ symbol: 'cbBTC', marketIndex: 27, poolId: 0, - oracle: new PublicKey('9jPy6EHpLkXaMdvfkoVnRnSdJoQysQDKKj3bW5Amz4Ci'), - oracleSource: OracleSource.PYTH_PULL, + oracle: new PublicKey('D1QgWnMoPzB4wJ79Egrc6MGYYM3HHVNhpff1QQHDSoCq'), + oracleSource: OracleSource.PYTH_LAZER, mint: new PublicKey('cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij'), precision: new BN(10).pow(EIGHT), precisionExp: EIGHT, @@ -583,6 +587,7 @@ export const MainnetSpotMarkets: SpotMarketConfig[] = [ ), pythFeedId: '0x2817d7bfe5c64b8ea956e9a26f573ef64e72e4d7891f2d6af9bcc93f7aff9a97', + pythLazerId: 397, }, { symbol: 'USDS', @@ -654,13 +659,14 @@ export const MainnetSpotMarkets: SpotMarketConfig[] = [ symbol: 'JLP-1', marketIndex: 33, poolId: 1, - oracle: new PublicKey('3ZLn5XDgSLWhTk2NjqAU44cPkSeC5JAhW5o6w5Nz4p8R'), - oracleSource: OracleSource.PYTH_PULL, + oracle: new PublicKey('DtmeBbyWat6p2vSpRhuZ4MGRndXr2cdpd4GV8izCFvLb'), + oracleSource: OracleSource.PYTH_LAZER, mint: new PublicKey('27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4'), precision: new BN(10).pow(SIX), precisionExp: SIX, pythFeedId: '0x6704952e00b6a088b6dcdb8170dcd591eaf64cff9e996ca75ae0ca55bfb96687', + pythLazerId: 694, launchTs: 1735255852000, }, { @@ -956,14 +962,15 @@ export const MainnetSpotMarkets: SpotMarketConfig[] = [ symbol: 'LBTC', marketIndex: 58, poolId: 0, - oracle: new PublicKey('Fa3VKWbdb9yQ89vA9JfYnR6micY9LwGneoQ1So9JgXHT'), - oracleSource: OracleSource.PYTH_PULL, + oracle: new PublicKey('BmU3Hp9SZn77dUhWuED3ySuV3HenBgCoPZZP58M2ZMCr'), + oracleSource: OracleSource.PYTH_LAZER, mint: new PublicKey('LBTCgU4b3wsFKsPwBn1rRZDx5DoFutM6RPiEt1TPDsY'), precision: new BN(10).pow(EIGHT), precisionExp: EIGHT, pythFeedId: '0x8f257aab6e7698bb92b15511915e593d6f8eae914452f781874754b03d0c612b', launchTs: 1756392947000, + pythLazerId: 468, }, { symbol: '2Z', From d93bd2dc8dd2a6e232a8a220e190dc8650cbe7e6 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 16:59:26 +0000 Subject: [PATCH 22/51] sdk: release v2.155.0-beta.6 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index e98e278b43..7c240baa8f 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.155.0-beta.5 \ No newline at end of file +2.155.0-beta.6 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index de30908a86..7499d0abbc 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.155.0-beta.5", + "version": "2.155.0-beta.6", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From bd8e72e05ae919caafcb658090802a2bca94b4e7 Mon Sep 17 00:00:00 2001 From: lil perp Date: Tue, 20 Jan 2026 20:49:21 -0500 Subject: [PATCH 23/51] program: more logging for amm trading (#2078) * more logging for amm trading * tweak logging * one more logging * CHANGELOG * crate msg * cargo fmt -- --- CHANGELOG.md | 2 ++ programs/drift/src/controller/orders.rs | 1 + programs/drift/src/math/fulfillment.rs | 14 +++++++++++++- programs/drift/src/state/perp_market.rs | 22 +++++++++++++++++++--- 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index af614a7e43..a0f07ce7bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Features +- program: additional logging for amm fills [#2078](https://github.com/drift-labs/protocol-v2/pull/2078) + ### Fixes ### Breaking diff --git a/programs/drift/src/controller/orders.rs b/programs/drift/src/controller/orders.rs index 1e461a5855..4bb569f72f 100644 --- a/programs/drift/src/controller/orders.rs +++ b/programs/drift/src/controller/orders.rs @@ -1803,6 +1803,7 @@ fn fulfill_perp_order( }; if fulfillment_methods.is_empty() { + msg!("no fulfillment methods found"); return Ok((0, 0)); } diff --git a/programs/drift/src/math/fulfillment.rs b/programs/drift/src/math/fulfillment.rs index 15103bddcd..13352d54ef 100644 --- a/programs/drift/src/math/fulfillment.rs +++ b/programs/drift/src/math/fulfillment.rs @@ -3,6 +3,7 @@ use crate::error::DriftResult; use crate::math::casting::Cast; use crate::math::matching::do_orders_cross; use crate::math::safe_unwrap::SafeUnwrap; +use crate::msg; use crate::state::fulfillment::{PerpFulfillmentMethod, SpotFulfillmentMethod}; use crate::state::perp_market::AMM; use crate::state::user::Order; @@ -73,7 +74,18 @@ pub fn determine_perp_fulfillment_methods( if amm_is_available { let taker_crosses_amm = match limit_price { - Some(taker_price) => do_orders_cross(maker_direction, amm_price, taker_price), + Some(taker_price) => { + let crosses = do_orders_cross(maker_direction, amm_price, taker_price); + if !crosses && fulfillment_methods.is_empty() { + msg!( + "taker does not cross amm: taker price {} amm price {}", + taker_price, + amm_price + ); + } + crosses + } + None => true, }; diff --git a/programs/drift/src/state/perp_market.rs b/programs/drift/src/state/perp_market.rs index bafb04fc5b..d52c092358 100644 --- a/programs/drift/src/state/perp_market.rs +++ b/programs/drift/src/state/perp_market.rs @@ -911,10 +911,12 @@ impl PerpMarket { mm_oracle_price_data: &MMOraclePriceData, ) -> DriftResult { if self.is_operation_paused(PerpOperation::AmmFill) { + msg!("AMM cannot fill order: AMM fill operation is paused"); return Ok(false); } if self.has_too_much_drawdown()? { + msg!("AMM cannot fill order: has too much drawdown"); return Ok(false); } @@ -964,15 +966,29 @@ impl PerpMarket { return Ok(false); } let amm_wants_to_jit_make = self.amm.amm_wants_to_jit_make(order.direction)?; + if !amm_wants_to_jit_make { + msg!("AMM cannot fill order: AMM does not want to JIT make"); + return Ok(false); + } + let amm_has_low_enough_inventory = self .amm .amm_has_low_enough_inventory(amm_wants_to_jit_make)?; + + if !amm_has_low_enough_inventory { + msg!("AMM cannot fill order: AMM has too much inventory"); + return Ok(false); + } + let amm_can_skip_duration = self.can_skip_auction_duration(&state, amm_has_low_enough_inventory)?; - amm_can_skip_duration - && oracle_valid_for_can_fill_immediately - && user_can_skip_auction_duration + if !amm_can_skip_duration { + msg!("AMM cannot fill order: AMM cannot skip duration"); + return Ok(false); + } + + true }; Ok(can_fill_order) From 85024a408adb1f017422796f74847590fa7c7ae5 Mon Sep 17 00:00:00 2001 From: lil perp Date: Tue, 20 Jan 2026 20:51:29 -0500 Subject: [PATCH 24/51] program: allow delegate to transfer isolated pos deposit in sub account (#2079) * program: allow delegate to transfer isolated pos deposit in sub account * CHANGELOG --- CHANGELOG.md | 1 + programs/drift/src/instructions/user.rs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0f07ce7bc..cdf9eb1ddd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Features - program: additional logging for amm fills [#2078](https://github.com/drift-labs/protocol-v2/pull/2078) +- program: allow delegate to transfer isolated pos deposit in sub account [#2079](https://github.com/drift-labs/protocol-v2/pull/2079) ### Fixes diff --git a/programs/drift/src/instructions/user.rs b/programs/drift/src/instructions/user.rs index 3c50d3a25d..893fe5fad0 100644 --- a/programs/drift/src/instructions/user.rs +++ b/programs/drift/src/instructions/user.rs @@ -4842,7 +4842,7 @@ pub struct TransferIsolatedPerpPositionDeposit<'info> { pub user: AccountLoader<'info, User>, #[account( mut, - has_one = authority + constraint = is_stats_for_user(&user, &user_stats)? )] pub user_stats: AccountLoader<'info, UserStats>, pub authority: Signer<'info>, From 469906492a09e5670d0a3870ddff89f40baa00c2 Mon Sep 17 00:00:00 2001 From: lil perp Date: Tue, 20 Jan 2026 21:09:31 -0500 Subject: [PATCH 25/51] program: use load_maps in update_amms (#2081) * program: use load_maps in update_amms * fix build * CHANGELOG --- CHANGELOG.md | 1 + programs/drift/src/instructions/keeper.rs | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cdf9eb1ddd..aace270eaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - program: additional logging for amm fills [#2078](https://github.com/drift-labs/protocol-v2/pull/2078) - program: allow delegate to transfer isolated pos deposit in sub account [#2079](https://github.com/drift-labs/protocol-v2/pull/2079) +- program: use load_maps in update_amms [#2081](https://github.com/drift-labs/protocol-v2/pull/2081) ### Fixes diff --git a/programs/drift/src/instructions/keeper.rs b/programs/drift/src/instructions/keeper.rs index 6019a45199..052d56e62c 100644 --- a/programs/drift/src/instructions/keeper.rs +++ b/programs/drift/src/instructions/keeper.rs @@ -2905,13 +2905,19 @@ pub fn handle_update_amms<'c: 'info, 'info>( let state = &ctx.accounts.state; let remaining_accounts_iter = &mut ctx.remaining_accounts.iter().peekable(); - let oracle_map = &mut OracleMap::load(remaining_accounts_iter, clock.slot, None)?; - let market_map = &mut PerpMarketMap::load( - &get_market_set_from_list(market_indexes), + let AccountMaps { + mut perp_market_map, + mut oracle_map, + .. + } = load_maps( remaining_accounts_iter, + &get_market_set_from_list(market_indexes), + &MarketSet::new(), + clock.slot, + Some(state.oracle_guard_rails), )?; - controller::repeg::update_amms(market_map, oracle_map, state, &clock)?; + controller::repeg::update_amms(&mut perp_market_map, &mut oracle_map, state, &clock)?; Ok(()) } From 590049e6bfe04ae0f944d85b536f0de24d586401 Mon Sep 17 00:00:00 2001 From: wphan <6348407+wphan@users.noreply.github.com> Date: Tue, 20 Jan 2026 21:08:17 -0800 Subject: [PATCH 26/51] v2.155.0 --- CHANGELOG.md | 8 ++++++++ Cargo.lock | 2 +- programs/drift/Cargo.toml | 2 +- sdk/package.json | 2 +- sdk/src/idl/drift.json | 2 +- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aace270eaa..ff7be87dc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Features +### Fixes + +### Breaking + +## [2.155.0] - 2026-01-20 + +### Features + - program: additional logging for amm fills [#2078](https://github.com/drift-labs/protocol-v2/pull/2078) - program: allow delegate to transfer isolated pos deposit in sub account [#2079](https://github.com/drift-labs/protocol-v2/pull/2079) - program: use load_maps in update_amms [#2081](https://github.com/drift-labs/protocol-v2/pull/2081) diff --git a/Cargo.lock b/Cargo.lock index 25dd6eb63e..91ca9c2242 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -956,7 +956,7 @@ dependencies = [ [[package]] name = "drift" -version = "2.154.0" +version = "2.155.0" dependencies = [ "anchor-lang", "anchor-spl", diff --git a/programs/drift/Cargo.toml b/programs/drift/Cargo.toml index 24db24bc22..f01a7205bb 100644 --- a/programs/drift/Cargo.toml +++ b/programs/drift/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drift" -version = "2.154.0" +version = "2.155.0" description = "Created with Anchor" edition = "2018" diff --git a/sdk/package.json b/sdk/package.json index 7499d0abbc..18a4015487 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.155.0-beta.6", + "version": "2.155.0", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", diff --git a/sdk/src/idl/drift.json b/sdk/src/idl/drift.json index 4522d4efbf..9685190701 100644 --- a/sdk/src/idl/drift.json +++ b/sdk/src/idl/drift.json @@ -1,5 +1,5 @@ { - "version": "2.154.0", + "version": "2.155.0", "name": "drift", "instructions": [ { From 39ba768456863022982792a89bb52edaab51386b Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 05:16:22 +0000 Subject: [PATCH 27/51] sdk: release v2.156.0-beta.0 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index 7c240baa8f..efa7a1f4b6 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.155.0-beta.6 \ No newline at end of file +2.156.0-beta.0 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 18a4015487..1a477713cf 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.155.0", + "version": "2.156.0-beta.0", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From d8e74df46a7416c326280c8be9efe634c18680f7 Mon Sep 17 00:00:00 2001 From: LukasDeco Date: Thu, 22 Jan 2026 16:04:16 -0700 Subject: [PATCH 28/51] fix: buggy getHealth for iso positions (#2083) --- sdk/src/user.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/src/user.ts b/sdk/src/user.ts index bb4aa6862c..15cf932245 100644 --- a/sdk/src/user.ts +++ b/sdk/src/user.ts @@ -1352,10 +1352,10 @@ export class User { const marginCalc = this.getMarginCalculation('Maintenance'); - let totalCollateral: BN; - let maintenanceMarginReq: BN; + let totalCollateral: BN = ZERO; + let maintenanceMarginReq: BN = ZERO; - if (perpMarketIndex) { + if (perpMarketIndex != null) { const isolatedMarginCalc = marginCalc.isolatedMarginCalculations.get(perpMarketIndex); if (isolatedMarginCalc) { From b90193bdd7b2866b4e91934ba70fa903fdaf2376 Mon Sep 17 00:00:00 2001 From: LukasDeco Date: Thu, 22 Jan 2026 16:04:27 -0700 Subject: [PATCH 29/51] feat: pyth lazer subscriber with better resiliency (#2073) * feat: pyth lazer subscriber with better resiliency * fix: missing exports * feat: upgrade pyth lazer sdk * feat: bump sdk to node 24 * fix: node 24 in verify sdk ci pipeline * fix: anchor tests node 24 --- .github/workflows/main.yml | 5 +- sdk/package.json | 4 +- sdk/src/index.ts | 1 + sdk/src/pyth/index.ts | 4 + sdk/src/pyth/pythLazerSubscriber.ts | 295 + sdk/yarn.lock | 12397 +++++++++++++++----------- 6 files changed, 7645 insertions(+), 5061 deletions(-) create mode 100644 sdk/src/pyth/pythLazerSubscriber.ts diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 65968818a9..3bcd780a93 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -96,6 +96,7 @@ jobs: - name: Run lint run: yarn lint anchor-tests: + name: Anchor tests runs-on: ubicloud timeout-minutes: 60 steps: @@ -128,7 +129,7 @@ jobs: - name: Setup node uses: actions/setup-node@v2 with: - node-version: "22.14.x" + node-version: "24.x.x" registry-url: "https://registry.npmjs.org" - name: Setup yarn @@ -161,7 +162,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v2 with: - node-version: "22.14.x" + node-version: "24.x.x" registry-url: 'https://registry.npmjs.org' - name: Install dependencies diff --git a/sdk/package.json b/sdk/package.json index 1a477713cf..7a4845a7a9 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -51,6 +51,7 @@ "@project-serum/serum": "0.13.65", "@pythnetwork/client": "2.5.3", "@pythnetwork/price-service-sdk": "1.7.1", + "@pythnetwork/pyth-lazer-sdk": "5.2.1", "@solana/spl-token": "0.4.13", "@solana/web3.js": "1.98.0", "@switchboard-xyz/common": "3.0.14", @@ -61,7 +62,6 @@ "helius-laserstream": "0.1.8", "nanoid": "3.3.4", "node-cache": "5.1.2", - "rpc-websockets": "7.5.1", "solana-bankrun": "0.3.1", "strict-event-emitter-types": "2.0.0", "tweetnacl": "1.0.3", @@ -103,7 +103,7 @@ }, "description": "SDK for Drift Protocol", "engines": { - "node": ">=22.14.0" + "node": "^24.0.0" }, "resolutions": { "@solana/web3.js": "1.98.0", diff --git a/sdk/src/index.ts b/sdk/src/index.ts index 6c73a0de63..7f2668dc83 100644 --- a/sdk/src/index.ts +++ b/sdk/src/index.ts @@ -34,6 +34,7 @@ export * from './accounts/types'; export * from './addresses/pda'; export * from './adminClient'; export * from './assert/assert'; +export { PythLazerSubscriber, PythLazerPriceFeedArray } from './pyth'; export * from './testClient'; export * from './user'; export * from './userConfig'; diff --git a/sdk/src/pyth/index.ts b/sdk/src/pyth/index.ts index 6ebe70388c..b8525ae371 100644 --- a/sdk/src/pyth/index.ts +++ b/sdk/src/pyth/index.ts @@ -9,3 +9,7 @@ export { DEFAULT_RECEIVER_PROGRAM_ID, } from './constants'; export { getGuardianSetPda } from './utils'; +export { + PythLazerSubscriber, + PythLazerPriceFeedArray, +} from './pythLazerSubscriber'; diff --git a/sdk/src/pyth/pythLazerSubscriber.ts b/sdk/src/pyth/pythLazerSubscriber.ts new file mode 100644 index 0000000000..7ae37730a4 --- /dev/null +++ b/sdk/src/pyth/pythLazerSubscriber.ts @@ -0,0 +1,295 @@ +import { Channel, PythLazerClient } from '@pythnetwork/pyth-lazer-sdk'; +import { DriftEnv } from '../config'; +import { PerpMarkets } from '../constants/perpMarkets'; + +export type PythLazerPriceFeedArray = { + channel?: Channel; + priceFeedIds: number[]; +}; + +type FeedSymbolInfo = { + name: string; + state: string; +}; + +export class PythLazerSubscriber { + private static readonly SYMBOLS_API_URL = + 'https://history.pyth-lazer.dourolabs.app/history/v1/symbols'; + private symbolsCache: Map | null = null; + private pythLazerClient?: PythLazerClient; + feedIdChunkToPriceMessage: Map = new Map(); + feedIdToPrice: Map = new Map(); + feedIdHashToFeedIds: Map = new Map(); + subscriptionIdsToFeedIdsHash: Map = new Map(); + allSubscribedIds: number[] = []; + + timeoutId?: NodeJS.Timeout; + receivingData = false; + isUnsubscribing = false; + + marketIndextoPriceFeedIdChunk: Map = new Map(); + marketIndextoPriceFeedId: Map = new Map(); + + constructor( + private endpoints: string[], + private token: string, + private priceFeedArrays: PythLazerPriceFeedArray[], + env: DriftEnv = 'devnet', + private resubTimeoutMs: number = 2000, + /** + * Whether to log Pyth SDK logs to the console. This is very noisy but could be useful for debugging. + */ + private sdkLogging: boolean = false + ) { + const markets = PerpMarkets[env].filter( + (market) => market.pythLazerId !== undefined + ); + + this.allSubscribedIds = this.priceFeedArrays + .map((array) => array.priceFeedIds) + .flat(); + + for (const priceFeedIds of priceFeedArrays) { + const filteredMarkets = markets.filter((market) => + priceFeedIds.priceFeedIds.includes(market.pythLazerId!) + ); + for (const market of filteredMarkets) { + this.marketIndextoPriceFeedIdChunk.set( + market.marketIndex, + priceFeedIds.priceFeedIds + ); + this.marketIndextoPriceFeedId.set( + market.marketIndex, + market.pythLazerId! + ); + } + } + } + + private async fetchSymbolsIfNeeded(): Promise { + if (this.symbolsCache !== null) return; + + try { + const response = await fetch(PythLazerSubscriber.SYMBOLS_API_URL); + if (!response.ok) throw new Error(`HTTP ${response.status}`); + const symbols = await response.json(); + + this.symbolsCache = new Map(); + for (const symbol of symbols) { + this.symbolsCache.set(symbol.pyth_lazer_id, { + name: symbol.name, + state: symbol.state, + }); + } + } catch (error) { + console.warn( + `Failed to fetch Pyth Lazer symbols, proceeding with all feeds: ${error}` + ); + this.symbolsCache = new Map(); // Empty map = no filtering + } + } + + private filterStableFeeds(feedIds: number[]): number[] { + if (this.symbolsCache === null || this.symbolsCache.size === 0) { + return feedIds; // No filtering if cache unavailable + } + + return feedIds.filter((feedId) => { + const info = this.symbolsCache!.get(feedId); + if (!info) { + console.warn( + `Feed ID ${feedId} not found in symbols API, including anyway` + ); + return true; + } + if (info.state !== 'stable') { + console.warn( + `Removing feed ID ${feedId} (${info.name}) - state is "${info.state}", not "stable"` + ); + return false; + } + return true; + }); + } + + async subscribe() { + await this.fetchSymbolsIfNeeded(); + + this.pythLazerClient = await PythLazerClient.create({ + token: this.token, + logger: this.sdkLogging ? console : undefined, + webSocketPoolConfig: { + urls: this.endpoints, + numConnections: 4, // Optionally specify number of parallel redundant connections to reduce the chance of dropped messages. The connections will round-robin across the provided URLs. Default is 4. + onError: (error) => { + console.error('⛔️ PythLazerClient error:', error.message); + }, + onWebSocketError: (error) => { + console.error('⛔️ WebSocket error:', error.message); + }, + onWebSocketPoolError: (error) => { + console.error('⛔️ WebSocket pool error:', error.message); + }, + // Optional configuration for resilient WebSocket connections + rwsConfig: { + heartbeatTimeoutDurationMs: 5000, // Optional heartbeat timeout duration in milliseconds + maxRetryDelayMs: 1000, // Optional maximum retry delay in milliseconds + logAfterRetryCount: 10, // Optional log after how many retries + }, + }, + }); + // Reset allSubscribedIds to rebuild with only stable feeds + this.allSubscribedIds = []; + + let subscriptionId = 1; + for (const priceFeedArray of this.priceFeedArrays) { + const filteredFeedIds = this.filterStableFeeds( + priceFeedArray.priceFeedIds + ); + + if (filteredFeedIds.length === 0) { + console.warn( + `All feeds filtered out for subscription ${subscriptionId}, skipping` + ); + continue; + } + + // Update allSubscribedIds with only stable feeds + this.allSubscribedIds.push(...filteredFeedIds); + + const feedIdsHash = this.hash(filteredFeedIds); + this.feedIdHashToFeedIds.set(feedIdsHash, filteredFeedIds); + this.subscriptionIdsToFeedIdsHash.set(subscriptionId, feedIdsHash); + + // Update marketIndextoPriceFeedIdChunk to use filtered feeds + for (const [ + marketIndex, + chunk, + ] of this.marketIndextoPriceFeedIdChunk.entries()) { + if (this.hash(chunk) === this.hash(priceFeedArray.priceFeedIds)) { + this.marketIndextoPriceFeedIdChunk.set(marketIndex, filteredFeedIds); + } + } + + // Remove entries from marketIndextoPriceFeedId for filtered-out feeds + for (const [ + marketIndex, + feedId, + ] of this.marketIndextoPriceFeedId.entries()) { + if ( + !filteredFeedIds.includes(feedId) && + priceFeedArray.priceFeedIds.includes(feedId) + ) { + this.marketIndextoPriceFeedId.delete(marketIndex); + this.marketIndextoPriceFeedIdChunk.delete(marketIndex); + } + } + + this.pythLazerClient.addMessageListener((message) => { + this.receivingData = true; + clearTimeout(this.timeoutId); + switch (message.type) { + case 'json': { + if (message.value.type == 'streamUpdated') { + if (message.value.solana?.data) { + this.feedIdChunkToPriceMessage.set( + this.subscriptionIdsToFeedIdsHash.get( + message.value.subscriptionId + )!, + message.value.solana.data + ); + } + if (message.value.parsed?.priceFeeds) { + for (const priceFeed of message.value.parsed.priceFeeds) { + const price = + Number(priceFeed.price!) * + Math.pow(10, Number(priceFeed.exponent!)); + this.feedIdToPrice.set(priceFeed.priceFeedId, price); + } + } + } + break; + } + default: { + break; + } + } + this.setTimeout(); + }); + + this.pythLazerClient.send({ + type: 'subscribe', + subscriptionId, + priceFeedIds: filteredFeedIds, + properties: ['price', 'bestAskPrice', 'bestBidPrice', 'exponent'], + formats: ['solana'], + deliveryFormat: 'json', + channel: priceFeedArray.channel ?? ('fixed_rate@200ms' as Channel), + jsonBinaryEncoding: 'hex', + }); + subscriptionId++; + } + + this.receivingData = true; + this.setTimeout(); + } + + protected setTimeout(): void { + this.timeoutId = setTimeout(async () => { + if (this.isUnsubscribing) { + // If we are in the process of unsubscribing, do not attempt to resubscribe + return; + } + + if (this.receivingData) { + console.log(`No ws data from pyth lazer client resubscribing`); + await this.unsubscribe(); + this.receivingData = false; + await this.subscribe(); + } + }, this.resubTimeoutMs); + } + + async unsubscribe() { + this.isUnsubscribing = true; + this.pythLazerClient?.shutdown(); + this.pythLazerClient = undefined; + clearTimeout(this.timeoutId); + this.timeoutId = undefined; + this.isUnsubscribing = false; + } + + hash(arr: number[]): string { + return 'h:' + arr.join('|'); + } + + async getLatestPriceMessage(feedIds: number[]): Promise { + return this.feedIdChunkToPriceMessage.get(this.hash(feedIds)); + } + + async getLatestPriceMessageForMarketIndex( + marketIndex: number + ): Promise { + const feedIds = this.marketIndextoPriceFeedIdChunk.get(marketIndex); + if (!feedIds) { + return undefined; + } + return await this.getLatestPriceMessage(feedIds); + } + + getPriceFeedIdsFromMarketIndex(marketIndex: number): number[] { + return this.marketIndextoPriceFeedIdChunk.get(marketIndex) || []; + } + + getPriceFeedIdsFromHash(hash: string): number[] { + return this.feedIdHashToFeedIds.get(hash) || []; + } + + getPriceFromMarketIndex(marketIndex: number): number | undefined { + const feedId = this.marketIndextoPriceFeedId.get(marketIndex); + if (feedId === undefined) { + return undefined; + } + return this.feedIdToPrice.get(feedId); + } +} diff --git a/sdk/yarn.lock b/sdk/yarn.lock index d0001390f4..89283cbd83 100644 --- a/sdk/yarn.lock +++ b/sdk/yarn.lock @@ -1,5059 +1,7342 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.12.13": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.28.6.tgz#72499312ec58b1e2245ba4a4f550c132be4982f7" - integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q== - dependencies: - "@babel/helper-validator-identifier" "^7.28.5" - js-tokens "^4.0.0" - picocolors "^1.1.1" - -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== - -"@babel/helper-validator-identifier@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" - integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== - -"@babel/parser@^7.26.7", "@babel/parser@^7.28.5": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.6.tgz#f01a8885b7fa1e56dd8a155130226cd698ef13fd" - integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ== - dependencies: - "@babel/types" "^7.28.6" - -"@babel/runtime@^7.10.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.25.0": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b" - integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA== - -"@babel/types@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.6.tgz#c3e9377f1b155005bcc4c46020e7e394e13089df" - integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@babel/code-frame@npm:^7.12.13": + version: 7.28.6 + resolution: "@babel/code-frame@npm:7.28.6" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.28.5" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/ed5d57f99455e3b1c23e75ebb8430c6b9800b4ecd0121b4348b97cecb65406a47778d6db61f0d538a4958bb01b4b277e90348a68d39bd3beff1d7c940ed6dd66 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-string-parser@npm:7.27.1" + checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-validator-identifier@npm:7.28.5" + checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.26.7, @babel/parser@npm:^7.28.5": + version: 7.28.6 + resolution: "@babel/parser@npm:7.28.6" + dependencies: + "@babel/types": "npm:^7.28.6" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/d6bfe8aa8e067ef58909e9905496157312372ca65d8d2a4f2b40afbea48d59250163755bba8ae626a615da53d192b084bcfc8c9dad8b01e315b96967600de581 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.10.5, @babel/runtime@npm:^7.25.0": + version: 7.28.6 + resolution: "@babel/runtime@npm:7.28.6" + checksum: 10c0/358cf2429992ac1c466df1a21c1601d595c46930a13c1d4662fde908d44ee78ec3c183aaff513ecb01ef8c55c3624afe0309eeeb34715672dbfadb7feedb2c0d + languageName: node + linkType: hard + +"@babel/types@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/types@npm:7.28.6" + dependencies: + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.28.5" + checksum: 10c0/54a6a9813e48ef6f35aa73c03b3c1572cad7fa32b61b35dd07e4230bc77b559194519c8a4d8106a041a27cc7a94052579e238a30a32d5509aa4da4d6fd83d990 + languageName: node + linkType: hard "@coral-xyz/anchor-30@npm:@coral-xyz/anchor@0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.1.tgz#17f3e9134c28cd0ea83574c6bab4e410bcecec5d" - integrity sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ== - dependencies: - "@coral-xyz/anchor-errors" "^0.30.1" - "@coral-xyz/borsh" "^0.30.1" - "@noble/hashes" "^1.3.1" - "@solana/web3.js" "^1.68.0" - bn.js "^5.1.2" - bs58 "^4.0.1" - buffer-layout "^1.2.2" - camelcase "^6.3.0" - cross-fetch "^3.1.5" - crypto-hash "^1.3.0" - eventemitter3 "^4.0.7" - pako "^2.0.3" - snake-case "^3.0.4" - superstruct "^0.15.4" - toml "^3.0.0" - -"@coral-xyz/anchor-errors@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@coral-xyz/anchor-errors/-/anchor-errors-0.30.1.tgz#bdfd3a353131345244546876eb4afc0e125bec30" - integrity sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ== - -"@coral-xyz/anchor@0.29.0", "@coral-xyz/anchor@^0.29.0": - version "0.29.0" - resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.29.0.tgz#bd0be95bedfb30a381c3e676e5926124c310ff12" - integrity sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA== - dependencies: - "@coral-xyz/borsh" "^0.29.0" - "@noble/hashes" "^1.3.1" - "@solana/web3.js" "^1.68.0" - bn.js "^5.1.2" - bs58 "^4.0.1" - buffer-layout "^1.2.2" - camelcase "^6.3.0" - cross-fetch "^3.1.5" - crypto-hash "^1.3.0" - eventemitter3 "^4.0.7" - pako "^2.0.3" - snake-case "^3.0.4" - superstruct "^0.15.4" - toml "^3.0.0" - -"@coral-xyz/borsh@^0.29.0": - version "0.29.0" - resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.29.0.tgz#79f7045df2ef66da8006d47f5399c7190363e71f" - integrity sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ== - dependencies: - bn.js "^5.1.2" - buffer-layout "^1.2.0" - -"@coral-xyz/borsh@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.30.1.tgz#869d8833abe65685c72e9199b8688477a4f6b0e3" - integrity sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ== - dependencies: - bn.js "^5.1.2" - buffer-layout "^1.2.0" - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@dependents/detective-less@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@dependents/detective-less/-/detective-less-5.0.1.tgz#e6c5b502f0d26a81da4170c1ccd848a6eaa68470" - integrity sha512-Y6+WUMsTFWE5jb20IFP4YGa5IrGY/+a/FbOSjDF/wz9gepU2hwCYSXRHP/vPwBvwcY3SVMASt4yXxbXNXigmZQ== - dependencies: - gonzales-pe "^4.3.0" - node-source-walk "^7.0.1" - -"@ellipsis-labs/phoenix-sdk@1.4.5": - version "1.4.5" - resolved "https://registry.yarnpkg.com/@ellipsis-labs/phoenix-sdk/-/phoenix-sdk-1.4.5.tgz#42cf8de8463b32c910ab8844eae71ca082a6773a" - integrity sha512-vEYgMXuV5/mpnpEi+VK4HO8f6SheHtVLdHHlULBiDN1eECYmL67gq+/cRV7Ar6jAQ7rJZL7xBxhbUW5kugMl6A== - dependencies: - "@metaplex-foundation/beet" "^0.7.1" - "@metaplex-foundation/rustbin" "^0.3.1" - "@metaplex-foundation/solita" "^0.12.2" - "@solana/spl-token" "^0.3.7" - "@types/node" "^18.11.13" - bn.js "^5.2.1" - borsh "^0.7.0" - bs58 "^5.0.0" - -"@esbuild/aix-ppc64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz#521cbd968dcf362094034947f76fa1b18d2d403c" - integrity sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw== - -"@esbuild/android-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz#61ea550962d8aa12a9b33194394e007657a6df57" - integrity sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA== - -"@esbuild/android-arm@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.27.2.tgz#554887821e009dd6d853f972fde6c5143f1de142" - integrity sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA== - -"@esbuild/android-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.27.2.tgz#a7ce9d0721825fc578f9292a76d9e53334480ba2" - integrity sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A== - -"@esbuild/darwin-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz#2cb7659bd5d109803c593cfc414450d5430c8256" - integrity sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg== - -"@esbuild/darwin-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz#e741fa6b1abb0cd0364126ba34ca17fd5e7bf509" - integrity sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA== - -"@esbuild/freebsd-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz#2b64e7116865ca172d4ce034114c21f3c93e397c" - integrity sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g== - -"@esbuild/freebsd-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz#e5252551e66f499e4934efb611812f3820e990bb" - integrity sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA== - -"@esbuild/linux-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz#dc4acf235531cd6984f5d6c3b13dbfb7ddb303cb" - integrity sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw== - -"@esbuild/linux-arm@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz#56a900e39240d7d5d1d273bc053daa295c92e322" - integrity sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw== - -"@esbuild/linux-ia32@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz#d4a36d473360f6870efcd19d52bbfff59a2ed1cc" - integrity sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w== - -"@esbuild/linux-loong64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz#fcf0ab8c3eaaf45891d0195d4961cb18b579716a" - integrity sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg== - -"@esbuild/linux-mips64el@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz#598b67d34048bb7ee1901cb12e2a0a434c381c10" - integrity sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw== - -"@esbuild/linux-ppc64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz#3846c5df6b2016dab9bc95dde26c40f11e43b4c0" - integrity sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ== - -"@esbuild/linux-riscv64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz#173d4475b37c8d2c3e1707e068c174bb3f53d07d" - integrity sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA== - -"@esbuild/linux-s390x@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz#f7a4790105edcab8a5a31df26fbfac1aa3dacfab" - integrity sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w== - -"@esbuild/linux-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz#2ecc1284b1904aeb41e54c9ddc7fcd349b18f650" - integrity sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA== - -"@esbuild/netbsd-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz#e2863c2cd1501845995cb11adf26f7fe4be527b0" - integrity sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw== - -"@esbuild/netbsd-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz#93f7609e2885d1c0b5a1417885fba8d1fcc41272" - integrity sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA== - -"@esbuild/openbsd-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz#a1985604a203cdc325fd47542e106fafd698f02e" - integrity sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA== - -"@esbuild/openbsd-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz#8209e46c42f1ffbe6e4ef77a32e1f47d404ad42a" - integrity sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg== - -"@esbuild/openharmony-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz#8fade4441893d9cc44cbd7dcf3776f508ab6fb2f" - integrity sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag== - -"@esbuild/sunos-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz#980d4b9703a16f0f07016632424fc6d9a789dfc2" - integrity sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg== - -"@esbuild/win32-arm64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz#1c09a3633c949ead3d808ba37276883e71f6111a" - integrity sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg== - -"@esbuild/win32-ia32@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz#1b1e3a63ad4bef82200fef4e369e0fff7009eee5" - integrity sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ== - -"@esbuild/win32-x64@0.27.2": - version "0.27.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz#9e585ab6086bef994c6e8a5b3a0481219ada862b" - integrity sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.9.1" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595" - integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== - dependencies: - eslint-visitor-keys "^3.4.3" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.12.2" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" - integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - -"@grpc/grpc-js@1.14.0": - version "1.14.0" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.14.0.tgz#a3c47e7816ca2b4d5490cba9e06a3cf324e675ad" - integrity sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg== - dependencies: - "@grpc/proto-loader" "^0.8.0" - "@js-sdsl/ordered-map" "^4.4.2" - -"@grpc/grpc-js@^1.8.0": - version "1.14.3" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.14.3.tgz#4c9b817a900ae4020ddc28515ae4b52c78cfb8da" - integrity sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA== - dependencies: - "@grpc/proto-loader" "^0.8.0" - "@js-sdsl/ordered-map" "^4.4.2" - -"@grpc/proto-loader@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.8.0.tgz#b6c324dd909c458a0e4aa9bfd3d69cf78a4b9bd8" - integrity sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.5.3" - yargs "^17.7.2" - -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@isaacs/ttlcache@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz#21fb23db34e9b6220c6ba023a0118a2dd3461ea2" - integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== - -"@jest/expect-utils@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" - integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== - dependencies: - jest-get-type "^28.0.2" - -"@jest/schemas@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" - integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== - dependencies: - "@sinclair/typebox" "^0.24.1" - -"@jest/types@^28.1.3": - version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" - integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== - dependencies: - "@jest/schemas" "^28.1.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.5.5": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" - integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@js-sdsl/ordered-map@^4.4.2": - version "4.4.2" - resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" - integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== - -"@metaplex-foundation/beet-solana@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.3.1.tgz#4b37cda5c7f32ffd2bdd8b3164edc05c6463ab35" - integrity sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g== - dependencies: - "@metaplex-foundation/beet" ">=0.1.0" - "@solana/web3.js" "^1.56.2" - bs58 "^5.0.0" - debug "^4.3.4" - -"@metaplex-foundation/beet@>=0.1.0", "@metaplex-foundation/beet@^0.7.1": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.7.2.tgz#fa4726e4cfd4fb6fed6cddc9b5213c1c2a2d0b77" - integrity sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg== - dependencies: - ansicolors "^0.3.2" - assert "^2.1.0" - bn.js "^5.2.0" - debug "^4.3.3" - -"@metaplex-foundation/beet@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.4.0.tgz#eb2a0a6eb084bb25d67dd9bed2f7387ee7e63a55" - integrity sha512-2OAKJnLatCc3mBXNL0QmWVQKAWK2C7XDfepgL0p/9+8oSx4bmRAFHFqptl1A/C0U5O3dxGwKfmKluW161OVGcA== - dependencies: - ansicolors "^0.3.2" - bn.js "^5.2.0" - debug "^4.3.3" - -"@metaplex-foundation/rustbin@^0.3.0", "@metaplex-foundation/rustbin@^0.3.1": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/rustbin/-/rustbin-0.3.5.tgz#56d028afd96c2b56ad3bbea22ff454adde900e8c" - integrity sha512-m0wkRBEQB/8krwMwKBvFugufZtYwMXiGHud2cTDAv+aGXK4M90y0Hx67/wpu+AqqoQfdV8VM9YezUOHKD+Z5kA== - dependencies: - debug "^4.3.3" - semver "^7.3.7" - text-table "^0.2.0" - toml "^3.0.0" - -"@metaplex-foundation/solita@^0.12.2": - version "0.12.2" - resolved "https://registry.yarnpkg.com/@metaplex-foundation/solita/-/solita-0.12.2.tgz#13ef213ac183c986f6d01c5d981c44e59a900834" - integrity sha512-oczMfE43NNHWweSqhXPTkQBUbap/aAiwjDQw8zLKNnd/J8sXr/0+rKcN5yJIEgcHeKRkp90eTqkmt2WepQc8yw== - dependencies: - "@metaplex-foundation/beet" "^0.4.0" - "@metaplex-foundation/beet-solana" "^0.3.0" - "@metaplex-foundation/rustbin" "^0.3.0" - "@solana/web3.js" "^1.36.0" - camelcase "^6.2.1" - debug "^4.3.3" - js-sha256 "^0.9.0" - prettier "^2.5.1" - snake-case "^3.0.4" - spok "^1.4.3" - -"@msgpack/msgpack@^3.1.2": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.1.3.tgz#c4bff2b9539faf0882f3ee03537a7e9a4b3a7864" - integrity sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA== - -"@noble/curves@^1.4.2": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" - integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== - dependencies: - "@noble/hashes" "1.8.0" - -"@noble/hashes@1.8.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" - integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@openbook-dex/openbook-v2@0.2.10": - version "0.2.10" - resolved "https://registry.yarnpkg.com/@openbook-dex/openbook-v2/-/openbook-v2-0.2.10.tgz#a5cfcd30ce827ecd446b76429a5e41baa23a318c" - integrity sha512-JOroVQHeia+RbghpluDJB5psUIhdhYRPLu0zWoG0h5vgDU4SjXwlcC+LJiIa2HVPasvZjWuCtlKWFyrOS75lOA== - dependencies: - "@coral-xyz/anchor" "^0.29.0" - "@solana/spl-token" "^0.4.0" - "@solana/web3.js" "^1.77.3" - big.js "^6.2.1" - -"@project-serum/anchor@^0.11.1": - version "0.11.1" - resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.11.1.tgz#155bff2c70652eafdcfd5559c81a83bb19cec9ff" - integrity sha512-oIdm4vTJkUy6GmE6JgqDAuQPKI7XM4TPJkjtoIzp69RZe0iAD9JP2XHx7lV1jLdYXeYHqDXfBt3zcq7W91K6PA== - dependencies: - "@project-serum/borsh" "^0.2.2" - "@solana/web3.js" "^1.17.0" - base64-js "^1.5.1" - bn.js "^5.1.2" - bs58 "^4.0.1" - buffer-layout "^1.2.0" - camelcase "^5.3.1" - crypto-hash "^1.3.0" - eventemitter3 "^4.0.7" - find "^0.3.0" - js-sha256 "^0.9.0" - pako "^2.0.3" - snake-case "^3.0.4" - toml "^3.0.0" - -"@project-serum/borsh@^0.2.2": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@project-serum/borsh/-/borsh-0.2.5.tgz#6059287aa624ecebbfc0edd35e4c28ff987d8663" - integrity sha512-UmeUkUoKdQ7rhx6Leve1SssMR/Ghv8qrEiyywyxSWg7ooV7StdpPBhciiy5eB3T0qU1BXvdRNC8TdrkxK7WC5Q== - dependencies: - bn.js "^5.1.2" - buffer-layout "^1.2.0" - -"@project-serum/serum@0.13.65": - version "0.13.65" - resolved "https://registry.yarnpkg.com/@project-serum/serum/-/serum-0.13.65.tgz#6d3cf07912f13985765237f053cca716fe84b0b0" - integrity sha512-BHRqsTqPSfFB5p+MgI2pjvMBAQtO8ibTK2fYY96boIFkCI3TTwXDt2gUmspeChKO2pqHr5aKevmexzAcXxrSRA== - dependencies: - "@project-serum/anchor" "^0.11.1" - "@solana/spl-token" "^0.1.6" - "@solana/web3.js" "^1.21.0" - bn.js "^5.1.2" - buffer-layout "^1.2.0" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@pythnetwork/client@2.5.3": - version "2.5.3" - resolved "https://registry.yarnpkg.com/@pythnetwork/client/-/client-2.5.3.tgz#86c9f92d01d8f282fdd8b5b11039da654e263988" - integrity sha512-NBLxPnA6A3tZb/DYUooD4SO63UJ70s9DzzFPGXcQNBR9itcycp7aaV+UA5oUPloD/4UHL9soo2fRuDVur0gmhA== - dependencies: - "@solana/web3.js" "^1.30.2" - assert "^2.0.0" - buffer "^6.0.1" - -"@pythnetwork/price-service-sdk@1.7.1": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@pythnetwork/price-service-sdk/-/price-service-sdk-1.7.1.tgz#dbfc8a8c2189f526346c1f79ec3995e89b690700" - integrity sha512-xr2boVXTyv1KUt/c6llUTfbv2jpud99pWlMJbFaHGUBoygQsByuy7WbjIJKZ+0Blg1itLZl0Lp/pJGGg8SdJoQ== - dependencies: - bn.js "^5.2.1" - -"@sinclair/typebox@^0.24.1": - version "0.24.51" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" - integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== - -"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@11.2.2": - version "11.2.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" - integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@sinonjs/fake-timers@^13.0.1": - version "13.0.5" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" - integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== - dependencies: - "@sinonjs/commons" "^3.0.1" - -"@sinonjs/samsam@^8.0.0": - version "8.0.3" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.3.tgz#eb6ffaef421e1e27783cc9b52567de20cb28072d" - integrity sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ== - dependencies: - "@sinonjs/commons" "^3.0.1" - type-detect "^4.1.0" - -"@sinonjs/text-encoding@^0.7.3": - version "0.7.3" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz#282046f03e886e352b2d5f5da5eb755e01457f3f" - integrity sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA== - -"@solana-program/address-lookup-table@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@solana-program/address-lookup-table/-/address-lookup-table-0.7.0.tgz#6651657308547fefb59ce2e20b1871270e93d48d" - integrity sha512-dzCeIO5LtiK3bIg0AwO+TPeGURjSG2BKt0c4FRx7105AgLy7uzTktpUzUj6NXAK9SzbirI8HyvHUvw1uvL8O9A== - -"@solana-program/compute-budget@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@solana-program/compute-budget/-/compute-budget-0.8.0.tgz#0930aca4de1170ed607d64d89375074930aa8b93" - integrity sha512-qPKxdxaEsFxebZ4K5RPuy7VQIm/tfJLa1+Nlt3KNA8EYQkz9Xm8htdoEaXVrer9kpgzzp9R3I3Bh6omwCM06tQ== - -"@solana-program/system@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@solana-program/system/-/system-0.7.0.tgz#3e21c9fb31d3795eb65ba5cb663947c19b305bad" - integrity sha512-FKTBsKHpvHHNc1ATRm7SlC5nF/VdJtOSjldhcyfMN9R7xo712Mo2jHIzvBgn8zQO5Kg0DcWuKB7268Kv1ocicw== - -"@solana-program/token-2022@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@solana-program/token-2022/-/token-2022-0.4.2.tgz#f90a638de82acb7933a114e884a24ac4be8ef635" - integrity sha512-zIpR5t4s9qEU3hZKupzIBxJ6nUV5/UVyIT400tu9vT1HMs5JHxaTTsb5GUhYjiiTvNwU0MQavbwc4Dl29L0Xvw== - -"@solana/accounts@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/accounts/-/accounts-2.3.0.tgz#957360edd572c1294772ee0eae3abd598189b16e" - integrity sha512-QgQTj404Z6PXNOyzaOpSzjgMOuGwG8vC66jSDB+3zHaRcEPRVRd2sVSrd1U6sHtnV3aiaS6YyDuPQMheg4K2jw== - dependencies: - "@solana/addresses" "2.3.0" - "@solana/codecs-core" "2.3.0" - "@solana/codecs-strings" "2.3.0" - "@solana/errors" "2.3.0" - "@solana/rpc-spec" "2.3.0" - "@solana/rpc-types" "2.3.0" - -"@solana/addresses@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/addresses/-/addresses-2.3.0.tgz#d89cba142819f01905a4bf30a1b990a1b55e490d" - integrity sha512-ypTNkY2ZaRFpHLnHAgaW8a83N0/WoqdFvCqf4CQmnMdFsZSdC7qOwcbd7YzdaQn9dy+P2hybewzB+KP7LutxGA== - dependencies: - "@solana/assertions" "2.3.0" - "@solana/codecs-core" "2.3.0" - "@solana/codecs-strings" "2.3.0" - "@solana/errors" "2.3.0" - "@solana/nominal-types" "2.3.0" - -"@solana/assertions@2.3.0", "@solana/assertions@^2.1.1": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-2.3.0.tgz#f96f655088dea6fe9f79604da7615c745c64173b" - integrity sha512-Ekoet3khNg3XFLN7MIz8W31wPQISpKUGDGTylLptI+JjCDWx3PIa88xjEMqFo02WJ8sBj2NLV64Xg1sBcsHjZQ== - dependencies: - "@solana/errors" "2.3.0" - -"@solana/buffer-layout-utils@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" - integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/web3.js" "^1.32.0" - bigint-buffer "^1.1.5" - bignumber.js "^9.0.1" - -"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" - integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== - dependencies: - buffer "~6.0.3" - -"@solana/codecs-core@2.0.0-preview.4": - version "2.0.0-preview.4" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.4.tgz#770826105f2f884110a21662573e7a2014654324" - integrity sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw== - dependencies: - "@solana/errors" "2.0.0-preview.4" - -"@solana/codecs-core@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-rc.1.tgz#1a2d76b9c7b9e7b7aeb3bd78be81c2ba21e3ce22" - integrity sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ== - dependencies: - "@solana/errors" "2.0.0-rc.1" - -"@solana/codecs-core@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.3.0.tgz#6bf2bb565cb1ae880f8018635c92f751465d8695" - integrity sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw== - dependencies: - "@solana/errors" "2.3.0" - -"@solana/codecs-data-structures@2.0.0-preview.4", "@solana/codecs-data-structures@2.0.0-rc.1", "@solana/codecs-data-structures@2.3.0": - version "2.0.0-preview.4" - resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.4.tgz#f8a2470982a9792334737ea64000ccbdff287247" - integrity sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA== - dependencies: - "@solana/codecs-core" "2.0.0-preview.4" - "@solana/codecs-numbers" "2.0.0-preview.4" - "@solana/errors" "2.0.0-preview.4" - -"@solana/codecs-numbers@2.0.0-preview.4": - version "2.0.0-preview.4" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.4.tgz#6a53b456bb7866f252d8c032c81a92651e150f66" - integrity sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ== - dependencies: - "@solana/codecs-core" "2.0.0-preview.4" - "@solana/errors" "2.0.0-preview.4" - -"@solana/codecs-numbers@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-rc.1.tgz#f34978ddf7ea4016af3aaed5f7577c1d9869a614" - integrity sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/errors" "2.0.0-rc.1" - -"@solana/codecs-numbers@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz#ac7e7f38aaf7fcd22ce2061fbdcd625e73828dc6" - integrity sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg== - dependencies: - "@solana/codecs-core" "2.3.0" - "@solana/errors" "2.3.0" - -"@solana/codecs-strings@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz#e1d9167075b8c5b0b60849f8add69c0f24307018" - integrity sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/codecs-numbers" "2.0.0-rc.1" - "@solana/errors" "2.0.0-rc.1" - -"@solana/codecs-strings@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.3.0.tgz#1b3a855dcd260283a732060aa6220f78b41251ae" - integrity sha512-y5pSBYwzVziXu521hh+VxqUtp0hYGTl1eWGoc1W+8mdvBdC1kTqm/X7aYQw33J42hw03JjryvYOvmGgk3Qz/Ug== - dependencies: - "@solana/codecs-core" "2.3.0" - "@solana/codecs-numbers" "2.3.0" - "@solana/errors" "2.3.0" - -"@solana/codecs@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-rc.1.tgz#146dc5db58bd3c28e04b4c805e6096c2d2a0a875" - integrity sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/codecs-data-structures" "2.0.0-rc.1" - "@solana/codecs-numbers" "2.0.0-rc.1" - "@solana/codecs-strings" "2.0.0-rc.1" - "@solana/options" "2.0.0-rc.1" - -"@solana/codecs@2.3.0", "@solana/codecs@^2.1.1": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.3.0.tgz#75ea5811e2792d7344409b83ffbfd1d096292e36" - integrity sha512-JVqGPkzoeyU262hJGdH64kNLH0M+Oew2CIPOa/9tR3++q2pEd4jU2Rxdfye9sd0Ce3XJrR5AIa8ZfbyQXzjh+g== - dependencies: - "@solana/codecs-core" "2.3.0" - "@solana/codecs-data-structures" "2.3.0" - "@solana/codecs-numbers" "2.3.0" - "@solana/codecs-strings" "2.3.0" - "@solana/options" "2.3.0" - -"@solana/errors@2.0.0-preview.4", "@solana/errors@2.0.0-rc.1", "@solana/errors@2.3.0": - version "2.0.0-preview.4" - resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.4.tgz#056ba76b6dd900dafa70117311bec3aef0f5250b" - integrity sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA== - dependencies: - chalk "^5.3.0" - commander "^12.1.0" - -"@solana/fast-stable-stringify@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/fast-stable-stringify/-/fast-stable-stringify-2.3.0.tgz#723b94e373952bad4549bdd2318f79f46313d85a" - integrity sha512-KfJPrMEieUg6D3hfQACoPy0ukrAV8Kio883llt/8chPEG3FVTX9z/Zuf4O01a15xZmBbmQ7toil2Dp0sxMJSxw== - -"@solana/functional@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-2.3.0.tgz#ac33815655e954bb78151446a571bc6c9fd9be28" - integrity sha512-AgsPh3W3tE+nK3eEw/W9qiSfTGwLYEvl0rWaxHht/lRcuDVwfKRzeSa5G79eioWFFqr+pTtoCr3D3OLkwKz02Q== - -"@solana/instructions@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-2.3.0.tgz#ff25cbe545000a33fb3604d83f4e2b683de94ad3" - integrity sha512-PLMsmaIKu7hEAzyElrk2T7JJx4D+9eRwebhFZpy2PXziNSmFF929eRHKUsKqBFM3cYR1Yy3m6roBZfA+bGE/oQ== - dependencies: - "@solana/codecs-core" "2.3.0" - "@solana/errors" "2.3.0" - -"@solana/keys@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-2.3.0.tgz#9d0b0ec09c2789a051b4df1945ed52631261186e" - integrity sha512-ZVVdga79pNH+2pVcm6fr2sWz9HTwfopDVhYb0Lh3dh+WBmJjwkabXEIHey2rUES7NjFa/G7sV8lrUn/v8LDCCQ== - dependencies: - "@solana/assertions" "2.3.0" - "@solana/codecs-core" "2.3.0" - "@solana/codecs-strings" "2.3.0" - "@solana/errors" "2.3.0" - "@solana/nominal-types" "2.3.0" - -"@solana/kit@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/kit/-/kit-2.3.0.tgz#92deb7c4883293617209aecac9a43d5e41ccf092" - integrity sha512-sb6PgwoW2LjE5oTFu4lhlS/cGt/NB3YrShEyx7JgWFWysfgLdJnhwWThgwy/4HjNsmtMrQGWVls0yVBHcMvlMQ== - dependencies: - "@solana/accounts" "2.3.0" - "@solana/addresses" "2.3.0" - "@solana/codecs" "2.3.0" - "@solana/errors" "2.3.0" - "@solana/functional" "2.3.0" - "@solana/instructions" "2.3.0" - "@solana/keys" "2.3.0" - "@solana/programs" "2.3.0" - "@solana/rpc" "2.3.0" - "@solana/rpc-parsed-types" "2.3.0" - "@solana/rpc-spec-types" "2.3.0" - "@solana/rpc-subscriptions" "2.3.0" - "@solana/rpc-types" "2.3.0" - "@solana/signers" "2.3.0" - "@solana/sysvars" "2.3.0" - "@solana/transaction-confirmation" "2.3.0" - "@solana/transaction-messages" "2.3.0" - "@solana/transactions" "2.3.0" - -"@solana/nominal-types@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/nominal-types/-/nominal-types-2.3.0.tgz#b67637241b4a45c756464e049c7a830880b6e944" - integrity sha512-uKlMnlP4PWW5UTXlhKM8lcgIaNj8dvd8xO4Y9l+FVvh9RvW2TO0GwUO6JCo7JBzCB0PSqRJdWWaQ8pu1Ti/OkA== - -"@solana/options@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-rc.1.tgz#06924ba316dc85791fc46726a51403144a85fc4d" - integrity sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA== - dependencies: - "@solana/codecs-core" "2.0.0-rc.1" - "@solana/codecs-data-structures" "2.0.0-rc.1" - "@solana/codecs-numbers" "2.0.0-rc.1" - "@solana/codecs-strings" "2.0.0-rc.1" - "@solana/errors" "2.0.0-rc.1" - -"@solana/options@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.3.0.tgz#f8a967b9ebae703b2c8adb8f4294df303ab866e8" - integrity sha512-PPnnZBRCWWoZQ11exPxf//DRzN2C6AoFsDI/u2AsQfYih434/7Kp4XLpfOMT/XESi+gdBMFNNfbES5zg3wAIkw== - dependencies: - "@solana/codecs-core" "2.3.0" - "@solana/codecs-data-structures" "2.3.0" - "@solana/codecs-numbers" "2.3.0" - "@solana/codecs-strings" "2.3.0" - "@solana/errors" "2.3.0" - -"@solana/programs@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/programs/-/programs-2.3.0.tgz#344193a0a4443217c177e2ec21bac7bc52afe4da" - integrity sha512-UXKujV71VCI5uPs+cFdwxybtHZAIZyQkqDiDnmK+DawtOO9mBn4Nimdb/6RjR2CXT78mzO9ZCZ3qfyX+ydcB7w== - dependencies: - "@solana/addresses" "2.3.0" - "@solana/errors" "2.3.0" - -"@solana/promises@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/promises/-/promises-2.3.0.tgz#ae3fc000f4aef65561d9e4f9724d4635ed042750" - integrity sha512-GjVgutZKXVuojd9rWy1PuLnfcRfqsaCm7InCiZc8bqmJpoghlyluweNc7ml9Y5yQn1P2IOyzh9+p/77vIyNybQ== - -"@solana/rpc-api@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-api/-/rpc-api-2.3.0.tgz#c6e5f7353910bd7c7d2f8a6d4dab44d080bd313a" - integrity sha512-UUdiRfWoyYhJL9PPvFeJr4aJ554ob2jXcpn4vKmRVn9ire0sCbpQKYx6K8eEKHZWXKrDW8IDspgTl0gT/aJWVg== - dependencies: - "@solana/addresses" "2.3.0" - "@solana/codecs-core" "2.3.0" - "@solana/codecs-strings" "2.3.0" - "@solana/errors" "2.3.0" - "@solana/keys" "2.3.0" - "@solana/rpc-parsed-types" "2.3.0" - "@solana/rpc-spec" "2.3.0" - "@solana/rpc-transformers" "2.3.0" - "@solana/rpc-types" "2.3.0" - "@solana/transaction-messages" "2.3.0" - "@solana/transactions" "2.3.0" - -"@solana/rpc-parsed-types@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-2.3.0.tgz#132b03f6b4c1b4688336ad48e76c2eea0d8c91d7" - integrity sha512-B5pHzyEIbBJf9KHej+zdr5ZNAdSvu7WLU2lOUPh81KHdHQs6dEb310LGxcpCc7HVE8IEdO20AbckewDiAN6OCg== - -"@solana/rpc-spec-types@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-2.3.0.tgz#010ea9de2f720e84bec2b93ca77ad3664b77235f" - integrity sha512-xQsb65lahjr8Wc9dMtP7xa0ZmDS8dOE2ncYjlvfyw/h4mpdXTUdrSMi6RtFwX33/rGuztQ7Hwaid5xLNSLvsFQ== - -"@solana/rpc-spec@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-2.3.0.tgz#2b679eb750c0f9270da6d451ea1bdc2c7783eb42" - integrity sha512-fA2LMX4BMixCrNB2n6T83AvjZ3oUQTu7qyPLyt8gHQaoEAXs8k6GZmu6iYcr+FboQCjUmRPgMaABbcr9j2J9Sw== - dependencies: - "@solana/errors" "2.3.0" - "@solana/rpc-spec-types" "2.3.0" - -"@solana/rpc-subscriptions-api@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-2.3.0.tgz#e779b8ad10e89b2f4a4ccb0fcd1a722d8bdd7729" - integrity sha512-9mCjVbum2Hg9KGX3LKsrI5Xs0KX390lS+Z8qB80bxhar6MJPugqIPH8uRgLhCW9GN3JprAfjRNl7our8CPvsPQ== - dependencies: - "@solana/addresses" "2.3.0" - "@solana/keys" "2.3.0" - "@solana/rpc-subscriptions-spec" "2.3.0" - "@solana/rpc-transformers" "2.3.0" - "@solana/rpc-types" "2.3.0" - "@solana/transaction-messages" "2.3.0" - "@solana/transactions" "2.3.0" - -"@solana/rpc-subscriptions-channel-websocket@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-channel-websocket/-/rpc-subscriptions-channel-websocket-2.3.0.tgz#11352ed281eccfa89a782a1b27444613ebeacca4" - integrity sha512-2oL6ceFwejIgeWzbNiUHI2tZZnaOxNTSerszcin7wYQwijxtpVgUHiuItM/Y70DQmH9sKhmikQp+dqeGalaJxw== - dependencies: - "@solana/errors" "2.3.0" - "@solana/functional" "2.3.0" - "@solana/rpc-subscriptions-spec" "2.3.0" - "@solana/subscribable" "2.3.0" - -"@solana/rpc-subscriptions-spec@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-spec/-/rpc-subscriptions-spec-2.3.0.tgz#a718a4ea97f57ed62291526b70740a42d576fada" - integrity sha512-rdmVcl4PvNKQeA2l8DorIeALCgJEMSu7U8AXJS1PICeb2lQuMeaR+6cs/iowjvIB0lMVjYN2sFf6Q3dJPu6wWg== - dependencies: - "@solana/errors" "2.3.0" - "@solana/promises" "2.3.0" - "@solana/rpc-spec-types" "2.3.0" - "@solana/subscribable" "2.3.0" - -"@solana/rpc-subscriptions@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions/-/rpc-subscriptions-2.3.0.tgz#12639c17603e1a30113825350ddbfc3b50b6a031" - integrity sha512-Uyr10nZKGVzvCOqwCZgwYrzuoDyUdwtgQRefh13pXIrdo4wYjVmoLykH49Omt6abwStB0a4UL5gX9V4mFdDJZg== - dependencies: - "@solana/errors" "2.3.0" - "@solana/fast-stable-stringify" "2.3.0" - "@solana/functional" "2.3.0" - "@solana/promises" "2.3.0" - "@solana/rpc-spec-types" "2.3.0" - "@solana/rpc-subscriptions-api" "2.3.0" - "@solana/rpc-subscriptions-channel-websocket" "2.3.0" - "@solana/rpc-subscriptions-spec" "2.3.0" - "@solana/rpc-transformers" "2.3.0" - "@solana/rpc-types" "2.3.0" - "@solana/subscribable" "2.3.0" - -"@solana/rpc-transformers@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-transformers/-/rpc-transformers-2.3.0.tgz#e008d2782047d574dbc74985c6cce26d7c3555f3" - integrity sha512-UuHYK3XEpo9nMXdjyGKkPCOr7WsZsxs7zLYDO1A5ELH3P3JoehvrDegYRAGzBS2VKsfApZ86ZpJToP0K3PhmMA== - dependencies: - "@solana/errors" "2.3.0" - "@solana/functional" "2.3.0" - "@solana/nominal-types" "2.3.0" - "@solana/rpc-spec-types" "2.3.0" - "@solana/rpc-types" "2.3.0" - -"@solana/rpc-transport-http@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-transport-http/-/rpc-transport-http-2.3.0.tgz#581601b9579b2a7fed9e0cb6fbcb95b4186e5b49" - integrity sha512-HFKydmxGw8nAF5N+S0NLnPBDCe5oMDtI2RAmW8DMqP4U3Zxt2XWhvV1SNkAldT5tF0U1vP+is6fHxyhk4xqEvg== - dependencies: - "@solana/errors" "2.3.0" - "@solana/rpc-spec" "2.3.0" - "@solana/rpc-spec-types" "2.3.0" - undici-types "^7.11.0" - -"@solana/rpc-types@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/rpc-types/-/rpc-types-2.3.0.tgz#38adf5cb1c79c08086bd672edf7a56d19581d19f" - integrity sha512-O09YX2hED2QUyGxrMOxQ9GzH1LlEwwZWu69QbL4oYmIf6P5dzEEHcqRY6L1LsDVqc/dzAdEs/E1FaPrcIaIIPw== - dependencies: - "@solana/addresses" "2.3.0" - "@solana/codecs-core" "2.3.0" - "@solana/codecs-numbers" "2.3.0" - "@solana/codecs-strings" "2.3.0" - "@solana/errors" "2.3.0" - "@solana/nominal-types" "2.3.0" - -"@solana/rpc@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/rpc/-/rpc-2.3.0.tgz#a65919520d14c122625fb887a2d72c95bf8691cf" - integrity sha512-ZWN76iNQAOCpYC7yKfb3UNLIMZf603JckLKOOLTHuy9MZnTN8XV6uwvDFhf42XvhglgUjGCEnbUqWtxQ9pa/pQ== - dependencies: - "@solana/errors" "2.3.0" - "@solana/fast-stable-stringify" "2.3.0" - "@solana/functional" "2.3.0" - "@solana/rpc-api" "2.3.0" - "@solana/rpc-spec" "2.3.0" - "@solana/rpc-spec-types" "2.3.0" - "@solana/rpc-transformers" "2.3.0" - "@solana/rpc-transport-http" "2.3.0" - "@solana/rpc-types" "2.3.0" - -"@solana/signers@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/signers/-/signers-2.3.0.tgz#94569a7fb025a3f473661078fbca15b34ceacf94" - integrity sha512-OSv6fGr/MFRx6J+ZChQMRqKNPGGmdjkqarKkRzkwmv7v8quWsIRnJT5EV8tBy3LI4DLO/A8vKiNSPzvm1TdaiQ== - dependencies: - "@solana/addresses" "2.3.0" - "@solana/codecs-core" "2.3.0" - "@solana/errors" "2.3.0" - "@solana/instructions" "2.3.0" - "@solana/keys" "2.3.0" - "@solana/nominal-types" "2.3.0" - "@solana/transaction-messages" "2.3.0" - "@solana/transactions" "2.3.0" - -"@solana/spl-token-group@^0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.7.tgz#83c00f0cd0bda33115468cd28b89d94f8ec1fee4" - integrity sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug== - dependencies: - "@solana/codecs" "2.0.0-rc.1" - -"@solana/spl-token-metadata@^0.1.2", "@solana/spl-token-metadata@^0.1.6": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.6.tgz#d240947aed6e7318d637238022a7b0981b32ae80" - integrity sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA== - dependencies: - "@solana/codecs" "2.0.0-rc.1" - -"@solana/spl-token@0.4.13": - version "0.4.13" - resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.13.tgz#8f65c3c2b315e1a00a91b8d0f60922c6eb71de62" - integrity sha512-cite/pYWQZZVvLbg5lsodSovbetK/eA24gaR0eeUeMuBAMNrT8XFCwaygKy0N2WSg3gSyjjNpIeAGBAKZaY/1w== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/buffer-layout-utils" "^0.2.0" - "@solana/spl-token-group" "^0.0.7" - "@solana/spl-token-metadata" "^0.1.6" - buffer "^6.0.3" - -"@solana/spl-token@^0.1.6": - version "0.1.8" - resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.1.8.tgz#f06e746341ef8d04165e21fc7f555492a2a0faa6" - integrity sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ== - dependencies: - "@babel/runtime" "^7.10.5" - "@solana/web3.js" "^1.21.0" - bn.js "^5.1.0" - buffer "6.0.3" - buffer-layout "^1.2.0" - dotenv "10.0.0" - -"@solana/spl-token@^0.3.7": - version "0.3.11" - resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.11.tgz#cdc10f9472b29b39c8983c92592cadd06627fb9a" - integrity sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/buffer-layout-utils" "^0.2.0" - "@solana/spl-token-metadata" "^0.1.2" - buffer "^6.0.3" - -"@solana/spl-token@^0.4.0": - version "0.4.14" - resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.14.tgz#b86bc8a17f50e9680137b585eca5f5eb9d55c025" - integrity sha512-u09zr96UBpX4U685MnvQsNzlvw9TiY005hk1vJmJr7gMJldoPG1eYU5/wNEyOA5lkMLiR/gOi9SFD4MefOYEsA== - dependencies: - "@solana/buffer-layout" "^4.0.0" - "@solana/buffer-layout-utils" "^0.2.0" - "@solana/spl-token-group" "^0.0.7" - "@solana/spl-token-metadata" "^0.1.6" - buffer "^6.0.3" - -"@solana/subscribable@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/subscribable/-/subscribable-2.3.0.tgz#4e48f1a4eeb1ccf22065b46fb8e3ed80d1a27f80" - integrity sha512-DkgohEDbMkdTWiKAoatY02Njr56WXx9e/dKKfmne8/Ad6/2llUIrax78nCdlvZW9quXMaXPTxZvdQqo9N669Og== - dependencies: - "@solana/errors" "2.3.0" - -"@solana/sysvars@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/sysvars/-/sysvars-2.3.0.tgz#eeea82f89716682014e801de5870344ddd02becd" - integrity sha512-LvjADZrpZ+CnhlHqfI5cmsRzX9Rpyb1Ox2dMHnbsRNzeKAMhu9w4ZBIaeTdO322zsTr509G1B+k2ABD3whvUBA== - dependencies: - "@solana/accounts" "2.3.0" - "@solana/codecs" "2.3.0" - "@solana/errors" "2.3.0" - "@solana/rpc-types" "2.3.0" - -"@solana/transaction-confirmation@2.3.0", "@solana/transaction-confirmation@^2.1.1": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/transaction-confirmation/-/transaction-confirmation-2.3.0.tgz#f66e70334d797b5010b4ae27dc59de2f90b8ebe6" - integrity sha512-UiEuiHCfAAZEKdfne/XljFNJbsKAe701UQHKXEInYzIgBjRbvaeYZlBmkkqtxwcasgBTOmEaEKT44J14N9VZDw== - dependencies: - "@solana/addresses" "2.3.0" - "@solana/codecs-strings" "2.3.0" - "@solana/errors" "2.3.0" - "@solana/keys" "2.3.0" - "@solana/promises" "2.3.0" - "@solana/rpc" "2.3.0" - "@solana/rpc-subscriptions" "2.3.0" - "@solana/rpc-types" "2.3.0" - "@solana/transaction-messages" "2.3.0" - "@solana/transactions" "2.3.0" - -"@solana/transaction-messages@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/transaction-messages/-/transaction-messages-2.3.0.tgz#e2a9c2f5565c7cc720aa09816aa3c17fb79c2abc" - integrity sha512-bgqvWuy3MqKS5JdNLH649q+ngiyOu5rGS3DizSnWwYUd76RxZl1kN6CoqHSrrMzFMvis6sck/yPGG3wqrMlAww== - dependencies: - "@solana/addresses" "2.3.0" - "@solana/codecs-core" "2.3.0" - "@solana/codecs-data-structures" "2.3.0" - "@solana/codecs-numbers" "2.3.0" - "@solana/errors" "2.3.0" - "@solana/functional" "2.3.0" - "@solana/instructions" "2.3.0" - "@solana/nominal-types" "2.3.0" - "@solana/rpc-types" "2.3.0" - -"@solana/transactions@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-2.3.0.tgz#fc99f6ce6cc5706f2b8116bbf8a2f396c3ec3177" - integrity sha512-LnTvdi8QnrQtuEZor5Msje61sDpPstTVwKg4y81tNxDhiyomjuvnSNLAq6QsB9gIxUqbNzPZgOG9IU4I4/Uaug== - dependencies: - "@solana/addresses" "2.3.0" - "@solana/codecs-core" "2.3.0" - "@solana/codecs-data-structures" "2.3.0" - "@solana/codecs-numbers" "2.3.0" - "@solana/codecs-strings" "2.3.0" - "@solana/errors" "2.3.0" - "@solana/functional" "2.3.0" - "@solana/instructions" "2.3.0" - "@solana/keys" "2.3.0" - "@solana/nominal-types" "2.3.0" - "@solana/rpc-types" "2.3.0" - "@solana/transaction-messages" "2.3.0" - -"@solana/web3.js@1.98.0", "@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.30.2", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.77.3", "@solana/web3.js@^1.98.0", "@solana/web3.js@^1.98.2": - version "1.98.0" - resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.0.tgz#21ecfe8198c10831df6f0cfde7f68370d0405917" - integrity sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA== - dependencies: - "@babel/runtime" "^7.25.0" - "@noble/curves" "^1.4.2" - "@noble/hashes" "^1.4.0" - "@solana/buffer-layout" "^4.0.1" - agentkeepalive "^4.5.0" - bigint-buffer "^1.1.5" - bn.js "^5.2.1" - borsh "^0.7.0" - bs58 "^4.0.1" - buffer "6.0.3" - fast-stable-stringify "^1.0.0" - jayson "^4.1.1" - node-fetch "^2.7.0" - rpc-websockets "^9.0.2" - superstruct "^2.0.2" - -"@swc/helpers@^0.5.11": - version "0.5.18" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.18.tgz#feeeabea0d10106ee25aaf900165df911ab6d3b1" - integrity sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ== - dependencies: - tslib "^2.8.0" - -"@switchboard-xyz/common@3.0.14": - version "3.0.14" - resolved "https://registry.yarnpkg.com/@switchboard-xyz/common/-/common-3.0.14.tgz#5b363995bd0fefa22198286992dbe54f3e544b08" - integrity sha512-LpxzEywO0DjPYIgPzQYkf32C7agwW4YRsPN6BcIvYrw0iJdDMtPZ3SQfIGHLSlD1fwvn2KLUYuGaKegeq4aBTw== - dependencies: - "@solana/web3.js" "^1.98.0" - axios "^1.8.3" - big.js "^6.2.2" - bn.js "^5.2.1" - bs58 "^6.0.0" - buffer "^6.0.3" - decimal.js "^10.4.3" - js-sha256 "^0.11.0" - protobufjs "^7.4.0" - yaml "^2.6.1" - -"@switchboard-xyz/common@>=3.0.0": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@switchboard-xyz/common/-/common-5.6.1.tgz#a379005af3a72a504f8f6ba88ea8991d328f6336" - integrity sha512-2Sz3iAusCnpEp+lJLOcwstRxGQCkbCdLDNgAYl/gTqApCA+drdQni8WoeKdahAXtcxhr72pd9PhFi/4N25im+w== - dependencies: - "@solana/web3.js" "^1.98.2" - axios "^1.9.0" - big.js "^6.2.2" - bn.js "^5.2.1" - bs58 "^6.0.0" - buffer "^6.0.3" - decimal.js "^10.4.3" - js-sha256 "^0.11.0" - protobufjs "^7.4.0" - -"@switchboard-xyz/on-demand@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@switchboard-xyz/on-demand/-/on-demand-2.4.1.tgz#3db64b0596d9daa0b010ee44193d5512e0ba512d" - integrity sha512-eSlBp+c8lxpcSgh0/2xK8OaLHPziTSZlcs8V96gZGdiCJz1KgWJRNE1qnIJDOwaGdFecZdwcmajfQRtLRLED3w== - dependencies: - "@coral-xyz/anchor-30" "npm:@coral-xyz/anchor@0.30.1" - "@isaacs/ttlcache" "^1.4.1" - "@switchboard-xyz/common" ">=3.0.0" - axios "^1.8.3" - bs58 "^6.0.0" - buffer "^6.0.3" - js-yaml "^4.1.0" - -"@triton-one/yellowstone-grpc@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc/-/yellowstone-grpc-1.4.1.tgz#b50434f68c3d73c6ce3e1f225656064c080f4b25" - integrity sha512-ZN49vooxFbOqWttll8u7AOsIVnX+srqX9ddhZ9ttE+OcehUo8c2p2suK8Gr2puab49cgsV0VGjiTn9Gua/ntIw== - dependencies: - "@grpc/grpc-js" "^1.8.0" - -"@ts-graphviz/adapter@^2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@ts-graphviz/adapter/-/adapter-2.0.6.tgz#18d5a42304dca7ffff760fcaf311a3148ef4a3bd" - integrity sha512-kJ10lIMSWMJkLkkCG5gt927SnGZcBuG0s0HHswGzcHTgvtUe7yk5/3zTEr0bafzsodsOq5Gi6FhQeV775nC35Q== - dependencies: - "@ts-graphviz/common" "^2.1.5" - -"@ts-graphviz/ast@^2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@ts-graphviz/ast/-/ast-2.0.7.tgz#4ec33492e4b4e998d4632030e97a9f7e149afb86" - integrity sha512-e6+2qtNV99UT6DJSoLbHfkzfyqY84aIuoV8Xlb9+hZAjgpum8iVHprGeAMQ4rF6sKUAxrmY8rfF/vgAwoPc3gw== - dependencies: - "@ts-graphviz/common" "^2.1.5" - -"@ts-graphviz/common@^2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@ts-graphviz/common/-/common-2.1.5.tgz#a256dfaea009a5b147d8f73f25e57fb44f6462a2" - integrity sha512-S6/9+T6x8j6cr/gNhp+U2olwo1n0jKj/682QVqsh7yXWV6ednHYqxFw0ZsY3LyzT0N8jaZ6jQY9YD99le3cmvg== - -"@ts-graphviz/core@^2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@ts-graphviz/core/-/core-2.0.7.tgz#2185e390990038b267a2341c3db1cef3680bbee8" - integrity sha512-w071DSzP94YfN6XiWhOxnLpYT3uqtxJBDYdh6Jdjzt+Ce6DNspJsPQgpC7rbts/B8tEkq0LHoYuIF/O5Jh5rPg== - dependencies: - "@ts-graphviz/ast" "^2.0.7" - "@ts-graphviz/common" "^2.1.5" - -"@tsconfig/node10@^1.0.7": - version "1.0.12" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.12.tgz#be57ceac1e4692b41be9de6be8c32a106636dba4" - integrity sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@types/big.js@6.2.2": - version "6.2.2" - resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-6.2.2.tgz#69422ec9ef59df1330ccfde2106d9e1159a083c3" - integrity sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA== - -"@types/bn.js@5.1.6": - version "5.1.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.6.tgz#9ba818eec0c85e4d3c679518428afdf611d03203" - integrity sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w== - dependencies: - "@types/node" "*" - -"@types/bs58@4.0.4": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/bs58/-/bs58-4.0.4.tgz#49fbcb0c7db5f7cea26f0e0f61dc4a41a2445aab" - integrity sha512-0IEpMFXXQi2zXaXl9GJ3sRwQo0uEkD+yFOv+FnAU5lkPtcu6h61xb7jc2CFPEZ5BUOaiP13ThuGc9HD4R8lR5g== - dependencies: - "@types/node" "*" - base-x "^3.0.6" - -"@types/chai@4.3.20": - version "4.3.20" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.20.tgz#cb291577ed342ca92600430841a00329ba05cecc" - integrity sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ== - -"@types/connect@^3.4.33": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@28.1.8": - version "28.1.8" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.8.tgz#6936409f3c9724ea431efd412ea0238a0f03b09b" - integrity sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw== - dependencies: - expect "^28.0.0" - pretty-format "^28.0.0" - -"@types/json-schema@^7.0.12": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/mocha@9.1.1": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" - integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== - -"@types/node@*", "@types/node@>=13.7.0": - version "25.0.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.8.tgz#e54e00f94fe1db2497b3e42d292b8376a2678c8d" - integrity sha512-powIePYMmC3ibL0UJ2i2s0WIbq6cg6UyVFQxSCpaPxxzAaziRfimGivjdF943sSGV6RADVbk0Nvlm5P/FB44Zg== - dependencies: - undici-types "~7.16.0" - -"@types/node@^12.12.54": - version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" - integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== - -"@types/node@^18.11.13": - version "18.19.130" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.130.tgz#da4c6324793a79defb7a62cba3947ec5add00d59" - integrity sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg== - dependencies: - undici-types "~5.26.4" - -"@types/protobufjs@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@types/protobufjs/-/protobufjs-6.0.0.tgz#aeabb43f9507bb19c8adfb479584c151082353e4" - integrity sha512-A27RDExpAf3rdDjIrHKiJK6x8kqqJ4CmoChwtipfhVAn1p7+wviQFFP7dppn8FslSbHtQeVPvi8wNKkDjSYjHw== - dependencies: - protobufjs "*" - -"@types/semver@^7.5.0": - version "7.7.1" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.1.tgz#3ce3af1a5524ef327d2da9e4fd8b6d95c8d70528" - integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA== - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/uuid@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== - -"@types/ws@^7.4.4": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== - dependencies: - "@types/node" "*" - -"@types/ws@^8.2.2": - version "8.18.1" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" - integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.35" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.35.tgz#07013e46aa4d7d7d50a49e15604c1c5340d4eb24" - integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/type-utils" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== - dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - -"@typescript-eslint/project-service@8.53.0": - version "8.53.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.53.0.tgz#327c67c61c16a1c8b12a440b0779b41eb77cc7df" - integrity sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg== - dependencies: - "@typescript-eslint/tsconfig-utils" "^8.53.0" - "@typescript-eslint/types" "^8.53.0" - debug "^4.4.3" - -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - -"@typescript-eslint/tsconfig-utils@8.53.0", "@typescript-eslint/tsconfig-utils@^8.53.0": - version "8.53.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.0.tgz#105279d7969a7abdc8345cc9c57cff83cf910f8f" - integrity sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA== - -"@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== - dependencies: - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== - -"@typescript-eslint/types@8.53.0", "@typescript-eslint/types@^8.53.0": - version "8.53.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.53.0.tgz#1adcad3fa32bc2c4cbf3785ba07a5e3151819efb" - integrity sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ== - -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/typescript-estree@^8.23.0": - version "8.53.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz#7805b46b7a8ce97e91b7bb56fc8b1ba26ca8ef52" - integrity sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw== - dependencies: - "@typescript-eslint/project-service" "8.53.0" - "@typescript-eslint/tsconfig-utils" "8.53.0" - "@typescript-eslint/types" "8.53.0" - "@typescript-eslint/visitor-keys" "8.53.0" - debug "^4.4.3" - minimatch "^9.0.5" - semver "^7.7.3" - tinyglobby "^0.2.15" - ts-api-utils "^2.4.0" - -"@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" - -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== - dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" - -"@typescript-eslint/visitor-keys@8.53.0": - version "8.53.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz#9a785664ddae7e3f7e570ad8166e48dbc9c6cf02" - integrity sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw== - dependencies: - "@typescript-eslint/types" "8.53.0" - eslint-visitor-keys "^4.2.1" - -"@ungap/structured-clone@^1.2.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" - integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== - -"@vue/compiler-core@3.5.26": - version "3.5.26" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.26.tgz#1a91ea90980528bedff7b1c292690bfb30612485" - integrity sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w== - dependencies: - "@babel/parser" "^7.28.5" - "@vue/shared" "3.5.26" - entities "^7.0.0" - estree-walker "^2.0.2" - source-map-js "^1.2.1" - -"@vue/compiler-dom@3.5.26": - version "3.5.26" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz#66c36b6ed8bdf43236d7188ea332bc9d078eb286" - integrity sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A== - dependencies: - "@vue/compiler-core" "3.5.26" - "@vue/shared" "3.5.26" - -"@vue/compiler-sfc@^3.5.13": - version "3.5.26" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz#fb1c6c4bf9a9e22bb169e039e19437cb6995917a" - integrity sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA== - dependencies: - "@babel/parser" "^7.28.5" - "@vue/compiler-core" "3.5.26" - "@vue/compiler-dom" "3.5.26" - "@vue/compiler-ssr" "3.5.26" - "@vue/shared" "3.5.26" - estree-walker "^2.0.2" - magic-string "^0.30.21" - postcss "^8.5.6" - source-map-js "^1.2.1" - -"@vue/compiler-ssr@3.5.26": - version "3.5.26" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz#f6e94bccbb5339180779036ddfb614f998a197ea" - integrity sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw== - dependencies: - "@vue/compiler-dom" "3.5.26" - "@vue/shared" "3.5.26" - -"@vue/shared@3.5.26": - version "3.5.26" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.26.tgz#1e02ef2d64aced818cd31d81ce5175711dc90a9f" - integrity sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.1.1: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: - version "8.15.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" - integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== - -agentkeepalive@^4.5.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" - integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== - dependencies: - humanize-ms "^1.2.1" - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -anchor-bankrun@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/anchor-bankrun/-/anchor-bankrun-0.3.0.tgz#3789fcecbc201a2334cff228b99cc0da8ef0167e" - integrity sha512-PYBW5fWX+iGicIS5MIM/omhk1tQPUc0ELAnI/IkLKQJ6d75De/CQRh8MF2bU/TgGyFi6zEel80wUe3uRol9RrQ== - -ansi-colors@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-regex@5.0.1, ansi-regex@^5.0.1, ansi-regex@^6.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@4.3.0, ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^5.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansicolors@^0.3.2, ansicolors@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" - integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== - -any-promise@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -app-module-path@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" - integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -asn1.js@^4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -assert@^2.0.0, assert@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" - integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== - dependencies: - call-bind "^1.0.2" - is-nan "^1.3.2" - object-is "^1.1.5" - object.assign "^4.1.4" - util "^0.12.5" - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - -ast-module-types@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ast-module-types/-/ast-module-types-6.0.1.tgz#4b4ca0251c57b815bab62604dcb22f8c903e2523" - integrity sha512-WHw67kLXYbZuHTmcdbIrVArCq5wxo6NEuj3hiYAWr8mwJeC+C2mMCIBIWCiDoCye/OF/xelc+teJ1ERoWmnEIA== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -axios@^1.8.3, axios@^1.9.0: - version "1.13.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" - integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.4" - proxy-from-env "^1.1.0" - -backslash@<0.2.1: - version "0.2.0" - resolved "https://registry.yarnpkg.com/backslash/-/backslash-0.2.0.tgz#6c3c1fce7e7e714ccfc10fd74f0f73410677375f" - integrity sha512-Avs+8FUZ1HF/VFP4YWwHQZSGzRPm37ukU1JQYQWijuHhtXdOuAzcZ8PcAzfIw898a8PyBzdn+RtnKA6MzW0X2A== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base-x@^3.0.2, base-x@^3.0.6: - version "3.0.11" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.11.tgz#40d80e2a1aeacba29792ccc6c5354806421287ff" - integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== - dependencies: - safe-buffer "^5.0.1" - -base-x@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.1.tgz#817fb7b57143c501f649805cb247617ad016a885" - integrity sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw== - -base-x@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-5.0.1.tgz#16bf35254be1df8aca15e36b7c1dda74b2aa6b03" - integrity sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg== - -base64-js@^1.3.1, base64-js@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -big.js@^6.2.1, big.js@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.2.tgz#be3bb9ac834558b53b099deef2a1d06ac6368e1a" - integrity sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ== - -bigint-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" - integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== - dependencies: - bindings "^1.3.0" - -bignumber.js@^9.0.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.1.tgz#759c5aaddf2ffdc4f154f7b493e1c8770f88c4d7" - integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -bindings@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.2.tgz#3d8fed6796c24e177737f7cc5172ee04ef39ec99" - integrity sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw== - -bn.js@^5.1.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1, bn.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" - integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== - -borsh@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" - integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== - dependencies: - bn.js "^5.2.0" - bs58 "^4.0.0" - text-encoding-utf-8 "^1.0.2" - -brace-expansion@^1.1.7: - version "1.1.12" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" - integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" - integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browser-stdout@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -browserify-aes@^1.0.4, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz#06e530907fe2949dc21fc3c2e2302e10b1437238" - integrity sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ== - dependencies: - bn.js "^5.2.1" - randombytes "^2.1.0" - safe-buffer "^5.2.1" - -browserify-sign@^4.2.3: - version "4.2.5" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.5.tgz#3979269fa8af55ba18aac35deef11b45515cd27d" - integrity sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw== - dependencies: - bn.js "^5.2.2" - browserify-rsa "^4.1.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.6.1" - inherits "^2.0.4" - parse-asn1 "^5.1.9" - readable-stream "^2.3.8" - safe-buffer "^5.2.1" - -bs58@^4.0.0, bs58@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - -bs58@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" - integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== - dependencies: - base-x "^4.0.0" - -bs58@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" - integrity sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw== - dependencies: - base-x "^5.0.0" - -buffer-layout@^1.2.0, buffer-layout@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" - integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3, buffer@~6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -bufferutil@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.1.0.tgz#a4623541dd23867626bb08a051ec0d2ec0b70294" - integrity sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw== - dependencies: - node-gyp-build "^4.3.0" - -call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.7, call-bind@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" - integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== - dependencies: - call-bind-apply-helpers "^1.0.0" - es-define-property "^1.0.0" - get-intrinsic "^1.2.4" - set-function-length "^1.2.2" - -call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0, camelcase@^6.2.1, camelcase@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -chai@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" - integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.3" - deep-eql "^4.1.3" - get-func-name "^2.0.2" - loupe "^2.3.6" - pathval "^1.1.1" - type-detect "^4.1.0" - -chalk-template@<0.4.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/chalk-template/-/chalk-template-0.3.1.tgz#9511cd31ec3c4911448410d49645526c1c7a3a22" - integrity sha512-sbWkBbb9Tfo81aTtQrfP9eBSVCTL8biVvZ0tA1rH9xqVrKoV2T9Y6Bp94wB+DRXtSGl/UXsgV83Np5hLhNRXww== - dependencies: - chalk "^4.1.2" - -chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2, chalk@^5.3.0, chalk@~4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -check-error@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" - integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== - dependencies: - get-func-name "^2.0.2" - -chokidar@^3.5.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.7" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.7.tgz#bd094bfef42634ccfd9e13b9fc73274997111e39" - integrity sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA== - dependencies: - inherits "^2.0.4" - safe-buffer "^5.2.1" - to-buffer "^1.2.2" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.9.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone@2.x: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -color-convert@<3.1.1, color-convert@^2.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-3.1.0.tgz#ce16ebb832f9d7522649ed9e11bc0ccb9433a524" - integrity sha512-TVoqAq8ZDIpK5lsQY874DDnu65CSsc9vzq0wLpNQ6UMBq81GSZocVazPiBbYGzngzBOIRahpkTzCLVe2at4MfA== - dependencies: - color-name "^2.0.0" - -color-name@<2.0.1, color-name@^1.1.4, color-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-2.0.0.tgz#03ff6b1b5aec9bb3cf1ed82400c2790dfcd01d2d" - integrity sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow== - -color-string@<2.1.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-2.1.0.tgz#a1cc4bb16a23032ff1048a2458a170323b15a23f" - integrity sha512-gNVoDzpaSwvftp6Y8nqk97FtZoXP9Yj7KGYB8yIXuv0JcfqbYihTrd1OU5iZW9btfXde4YAOCRySBHT7O910MA== - dependencies: - color-name "^2.0.0" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - -commander@^2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -create-ecdh@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-fetch@^3.1.5: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" - integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== - dependencies: - node-fetch "^2.7.0" - -cross-spawn@^7.0.2: - version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@^3.12.1: - version "3.12.1" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.1.tgz#bb8921bec9acc81633379aa8f52d69b0b69e0dac" - integrity sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ== - dependencies: - browserify-cipher "^1.0.1" - browserify-sign "^4.2.3" - create-ecdh "^4.0.4" - create-hash "^1.2.0" - create-hmac "^1.1.7" - diffie-hellman "^5.0.3" - hash-base "~3.0.4" - inherits "^2.0.4" - pbkdf2 "^3.1.2" - public-encrypt "^4.0.3" - randombytes "^2.1.0" - randomfill "^1.0.4" - -crypto-hash@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" - integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== - -debug@<4.4.2, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.4.3: - version "4.4.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" - integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== - dependencies: - ms "^2.1.3" - -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - -decimal.js@^10.4.3: - version "10.6.0" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a" - integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== - -deep-eql@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" - integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== - dependencies: - type-detect "^4.0.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -define-data-property@^1.0.1, define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-properties@^1.1.3, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -delay@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -dependency-tree@^11.0.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/dependency-tree/-/dependency-tree-11.2.0.tgz#ae764155b2903267181def4b20be49b1fd76da5e" - integrity sha512-+C1H3mXhcvMCeu5i2Jpg9dc0N29TWTuT6vJD7mHLAfVmAbo9zW8NlkvQ1tYd3PDMab0IRQM0ccoyX68EZtx9xw== - dependencies: - commander "^12.1.0" - filing-cabinet "^5.0.3" - precinct "^12.2.0" - typescript "^5.8.3" - -des.js@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" - integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -detective-amd@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/detective-amd/-/detective-amd-6.0.1.tgz#71eb13b5d9b17222d7b4de3fb89a8e684d8b9a23" - integrity sha512-TtyZ3OhwUoEEIhTFoc1C9IyJIud3y+xYkSRjmvCt65+ycQuc3VcBrPRTMWoO/AnuCyOB8T5gky+xf7Igxtjd3g== - dependencies: - ast-module-types "^6.0.1" - escodegen "^2.1.0" - get-amd-module-type "^6.0.1" - node-source-walk "^7.0.1" - -detective-cjs@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/detective-cjs/-/detective-cjs-6.0.1.tgz#4fb81a67337630811409abb2148b2b622cacbdcd" - integrity sha512-tLTQsWvd2WMcmn/60T2inEJNhJoi7a//PQ7DwRKEj1yEeiQs4mrONgsUtEJKnZmrGWBBmE0kJ1vqOG/NAxwaJw== - dependencies: - ast-module-types "^6.0.1" - node-source-walk "^7.0.1" - -detective-es6@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/detective-es6/-/detective-es6-5.0.1.tgz#f0c026bc9b767a243e57ef282f4343fcf3b8ec4e" - integrity sha512-XusTPuewnSUdoxRSx8OOI6xIA/uld/wMQwYsouvFN2LAg7HgP06NF1lHRV3x6BZxyL2Kkoih4ewcq8hcbGtwew== - dependencies: - node-source-walk "^7.0.1" - -detective-postcss@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/detective-postcss/-/detective-postcss-7.0.1.tgz#f5822d8988339fb56851fcdb079d51fbcff114db" - integrity sha512-bEOVpHU9picRZux5XnwGsmCN4+8oZo7vSW0O0/Enq/TO5R2pIAP2279NsszpJR7ocnQt4WXU0+nnh/0JuK4KHQ== - dependencies: - is-url "^1.2.4" - postcss-values-parser "^6.0.2" - -detective-sass@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/detective-sass/-/detective-sass-6.0.1.tgz#fcf5aa51bebf7b721807be418418470ee2409f8a" - integrity sha512-jSGPO8QDy7K7pztUmGC6aiHkexBQT4GIH+mBAL9ZyBmnUIOFbkfZnO8wPRRJFP/QP83irObgsZHCoDHZ173tRw== - dependencies: - gonzales-pe "^4.3.0" - node-source-walk "^7.0.1" - -detective-scss@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/detective-scss/-/detective-scss-5.0.1.tgz#6a7f792dc9c0e8cfc0d252a50ba26a6df12596a7" - integrity sha512-MAyPYRgS6DCiS6n6AoSBJXLGVOydsr9huwXORUlJ37K3YLyiN0vYHpzs3AdJOgHobBfispokoqrEon9rbmKacg== - dependencies: - gonzales-pe "^4.3.0" - node-source-walk "^7.0.1" - -detective-stylus@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/detective-stylus/-/detective-stylus-5.0.1.tgz#57d54a0b405305ee16655e42008b38a827a9f179" - integrity sha512-Dgn0bUqdGbE3oZJ+WCKf8Dmu7VWLcmRJGc6RCzBgG31DLIyai9WAoEhYRgIHpt/BCRMrnXLbGWGPQuBUrnF0TA== - -detective-typescript@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/detective-typescript/-/detective-typescript-14.0.0.tgz#3cf429652eb7d7d2be2c050ac47af957a559527d" - integrity sha512-pgN43/80MmWVSEi5LUuiVvO/0a9ss5V7fwVfrJ4QzAQRd3cwqU1SfWGXJFcNKUqoD5cS+uIovhw5t/0rSeC5Mw== - dependencies: - "@typescript-eslint/typescript-estree" "^8.23.0" - ast-module-types "^6.0.1" - node-source-walk "^7.0.1" - -detective-vue2@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/detective-vue2/-/detective-vue2-2.2.0.tgz#35fd1d39e261b064aca9fcaf20e136c76877482a" - integrity sha512-sVg/t6O2z1zna8a/UIV6xL5KUa2cMTQbdTIIvqNM0NIPswp52fe43Nwmbahzj3ww4D844u/vC2PYfiGLvD3zFA== - dependencies: - "@dependents/detective-less" "^5.0.1" - "@vue/compiler-sfc" "^3.5.13" - detective-es6 "^5.0.1" - detective-sass "^6.0.1" - detective-scss "^5.0.1" - detective-stylus "^5.0.1" - detective-typescript "^14.0.0" - -diff-sequences@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" - integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diff@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" - integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== - -diffie-hellman@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dotenv@10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - -dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -elliptic@^6.5.3, elliptic@^6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" - integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -encoding@0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -enhanced-resolve@^5.18.0: - version "5.18.4" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz#c22d33055f3952035ce6a144ce092447c525f828" - integrity sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -entities@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-7.0.0.tgz#2ae4e443f3f17d152d3f5b0f79b932c1e59deb7a" - integrity sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ== - -error-ex@<1.3.3: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-define-property@^1.0.0, es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" - integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== - dependencies: - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== - dependencies: - es6-promise "^4.0.3" - -esbuild@^0.27.1: - version "0.27.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.27.2.tgz#d83ed2154d5813a5367376bb2292a9296fc83717" - integrity sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw== - optionalDependencies: - "@esbuild/aix-ppc64" "0.27.2" - "@esbuild/android-arm" "0.27.2" - "@esbuild/android-arm64" "0.27.2" - "@esbuild/android-x64" "0.27.2" - "@esbuild/darwin-arm64" "0.27.2" - "@esbuild/darwin-x64" "0.27.2" - "@esbuild/freebsd-arm64" "0.27.2" - "@esbuild/freebsd-x64" "0.27.2" - "@esbuild/linux-arm" "0.27.2" - "@esbuild/linux-arm64" "0.27.2" - "@esbuild/linux-ia32" "0.27.2" - "@esbuild/linux-loong64" "0.27.2" - "@esbuild/linux-mips64el" "0.27.2" - "@esbuild/linux-ppc64" "0.27.2" - "@esbuild/linux-riscv64" "0.27.2" - "@esbuild/linux-s390x" "0.27.2" - "@esbuild/linux-x64" "0.27.2" - "@esbuild/netbsd-arm64" "0.27.2" - "@esbuild/netbsd-x64" "0.27.2" - "@esbuild/openbsd-arm64" "0.27.2" - "@esbuild/openbsd-x64" "0.27.2" - "@esbuild/openharmony-arm64" "0.27.2" - "@esbuild/sunos-x64" "0.27.2" - "@esbuild/win32-arm64" "0.27.2" - "@esbuild/win32-ia32" "0.27.2" - "@esbuild/win32-x64" "0.27.2" - -escalade@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" - integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== - -eslint-plugin-prettier@3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz#cdbad3bf1dbd2b177e9825737fe63b476a08f0c7" - integrity sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint-visitor-keys@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" - integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== - -eslint@8.57.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d" - integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -eventemitter3@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -eventemitter3@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -expect@^28.0.0: - version "28.1.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" - integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== - dependencies: - "@jest/expect-utils" "^28.1.3" - jest-get-type "^28.0.2" - jest-matcher-utils "^28.1.3" - jest-message-util "^28.1.3" - jest-util "^28.1.3" - -eyes@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9: - version "3.3.3" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.8" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-stable-stringify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" - integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== - -fastq@^1.6.0: - version "1.20.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" - integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== - dependencies: - reusify "^1.0.4" - -fdir@^6.5.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" - integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filing-cabinet@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/filing-cabinet/-/filing-cabinet-5.0.3.tgz#e5ab960958653ee7fe70d5d99b3b88c342ce7907" - integrity sha512-PlPcMwVWg60NQkhvfoxZs4wEHjhlOO/y7OAm4sKM60o1Z9nttRY4mcdQxp/iZ+kg/Vv6Hw1OAaTbYVM9DA9pYg== - dependencies: - app-module-path "^2.2.0" - commander "^12.1.0" - enhanced-resolve "^5.18.0" - module-definition "^6.0.1" - module-lookup-amd "^9.0.3" - resolve "^1.22.10" - resolve-dependency-path "^4.0.1" - sass-lookup "^6.1.0" - stylus-lookup "^6.1.0" - tsconfig-paths "^4.2.0" - typescript "^5.7.3" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -find-process@^1.4.7: - version "1.4.11" - resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.11.tgz#f7246251d396b35b9ae41fff7b87137673567fcc" - integrity sha512-mAOh9gGk9WZ4ip5UjV0o6Vb4SrfnAmtsFNzkMRH9HQiFXVQnDyQFrSHTK5UoG6E+KV+s+cIznbtwpfN41l2nFA== - dependencies: - chalk "~4.1.2" - commander "^12.1.0" - loglevel "^1.9.2" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/find/-/find-0.3.0.tgz#4082e8fc8d8320f1a382b5e4f521b9bc50775cb8" - integrity sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw== - dependencies: - traverse-chain "~0.1.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^3.2.9: - version "3.3.3" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" - integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== - -follow-redirects@^1.15.6: - version "1.15.11" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" - integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== - -for-each@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" - integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== - dependencies: - is-callable "^1.2.7" - -form-data@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" - integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.12" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -generator-function@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2" - integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g== - -get-amd-module-type@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-amd-module-type/-/get-amd-module-type-6.0.1.tgz#191f479ae8706c246b52bf402fbe1bb0965d9f1e" - integrity sha512-MtjsmYiCXcYDDrGqtNbeIYdAl85n+5mSv2r3FbzER/YV3ZILw4HNNIw34HuV5pyl0jzs6GFYU1VHVEefhgcNHQ== - dependencies: - ast-module-types "^6.0.1" - node-source-walk "^7.0.1" - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.1, get-func-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" - integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== - -get-intrinsic@^1.2.4, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - dependencies: - call-bind-apply-helpers "^1.0.2" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - function-bind "^1.1.2" - get-proto "^1.0.1" - gopd "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - math-intrinsics "^1.1.0" - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -gill@^0.10.2: - version "0.10.3" - resolved "https://registry.yarnpkg.com/gill/-/gill-0.10.3.tgz#0eeeaf18b9a6ec7adc17967f51f86be042ee2f24" - integrity sha512-4LIVA32lKcWoqU/dbwu+YpJbR59QQT6mvCtqkElBWF2aT9upmewjKN3/anhfTGy+o/RJykAV21i3RzCj9FR0Xg== - dependencies: - "@solana-program/address-lookup-table" "^0.7.0" - "@solana-program/compute-budget" "^0.8.0" - "@solana-program/system" "^0.7.0" - "@solana-program/token-2022" "^0.4.2" - "@solana/assertions" "^2.1.1" - "@solana/codecs" "^2.1.1" - "@solana/kit" "^2.3.0" - "@solana/transaction-confirmation" "^2.1.1" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^7.1.3, glob@^7.2.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -gonzales-pe@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" - integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ== - dependencies: - minimist "^1.2.5" - -gopd@^1.0.1, gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-ansi@<6.0.1: - version "6.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-6.0.0.tgz#8118b2fb548c062f9356c7d5013b192a238ce3b3" - integrity sha512-1AYj+gqAskFf9Skb7xuEYMfJqkW3TJ8lukw4Fczw+Y6jRkgxvcE4JiFWuTO4DsoleMvvHudryolA9ObJHJKHWQ== - dependencies: - ansi-regex "^6.0.1" - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-flag@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-5.0.1.tgz#5483db2ae02a472d1d0691462fc587d1843cd940" - integrity sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA== - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-symbols@^1.0.3, has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hash-base@^3.0.0, hash-base@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.2.tgz#79d72def7611c3f6e3c3b5730652638001b10a74" - integrity sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg== - dependencies: - inherits "^2.0.4" - readable-stream "^2.3.8" - safe-buffer "^5.2.1" - to-buffer "^1.2.1" - -hash-base@~3.0.4: - version "3.0.5" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.5.tgz#52480e285395cf7fba17dc4c9e47acdc7f248a8a" - integrity sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg== - dependencies: - inherits "^2.0.4" - safe-buffer "^5.2.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -helius-laserstream-darwin-arm64@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/helius-laserstream-darwin-arm64/-/helius-laserstream-darwin-arm64-0.1.8.tgz#d78ad15e6cd16dc9379a9a365f9fcb3f958e6c01" - integrity sha512-p/K2Mi3wZnMxEYSLCvu858VyMvtJFonhdF8cLaMcszFv04WWdsK+hINNZpVRfakypvDfDPbMudEhL1Q9USD5+w== - -helius-laserstream-darwin-x64@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/helius-laserstream-darwin-x64/-/helius-laserstream-darwin-x64-0.1.8.tgz#e57bc8f03135fd3b5c01a5aebd7b87c42129da50" - integrity sha512-Hd5irFyfOqQZLdoj5a+OV7vML2YfySSBuKlOwtisMHkUuIXZ4NpAexslDmK7iP5VWRI+lOv9X/tA7BhxW7RGSQ== - -helius-laserstream-linux-arm64-gnu@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/helius-laserstream-linux-arm64-gnu/-/helius-laserstream-linux-arm64-gnu-0.1.8.tgz#1b3c8440804d143f650166842620fc334f9c319b" - integrity sha512-PlPm1dvOvTGBL1nuzK98Xe40BJq1JWNREXlBHKDVA/B+KCGQnIMJ1s6e1MevSvFE7SOix5i1BxhYIxGioK2GMg== - -helius-laserstream-linux-arm64-musl@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/helius-laserstream-linux-arm64-musl/-/helius-laserstream-linux-arm64-musl-0.1.8.tgz#28e0645bebc3253d2a136cf0bd13f8cb5256f47b" - integrity sha512-LFadfMRuTd1zo6RZqLTgHQapo3gJYioS7wFMWFoBOFulG0BpAqHEDNobkxx0002QArw+zX29MQ/5OaOCf8kKTA== - -helius-laserstream-linux-x64-gnu@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/helius-laserstream-linux-x64-gnu/-/helius-laserstream-linux-x64-gnu-0.1.8.tgz#e59990ca0bcdc27e46f71a8fc2c18fddbe6f07e3" - integrity sha512-IZWK/OQIe0647QqfYikLb1DFK+nYtXLJiMcpj24qnNVWBOtMXmPc1hL6ebazdEiaKt7fxNd5IiM1RqeaqZAZMw== - -helius-laserstream-linux-x64-musl@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/helius-laserstream-linux-x64-musl/-/helius-laserstream-linux-x64-musl-0.1.8.tgz#42aa0919ef266c40f50ac74d6f9d871d4e2e7c9c" - integrity sha512-riTS6VgxDae1fHOJ2XC/o/v1OZRbEv/3rcoa3NlAOnooDKp5HDgD0zJTcImjQHpYWwGaejx1oX/Ht53lxNoijw== - -helius-laserstream@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/helius-laserstream/-/helius-laserstream-0.1.8.tgz#6ee5e0bc9fe2560c03a0d2c9079b9f875c3e6bb7" - integrity sha512-jXQkwQRWiowbVPGQrGacOkI5shKPhrEixCu93OpoMtL5fs9mnhtD7XKMPi8CX0W8gsqsJjwR4NlaR+EflyANbQ== - dependencies: - "@types/protobufjs" "^6.0.0" - protobufjs "^7.5.3" - optionalDependencies: - helius-laserstream-darwin-arm64 "0.1.8" - helius-laserstream-darwin-x64 "0.1.8" - helius-laserstream-linux-arm64-gnu "0.1.8" - helius-laserstream-linux-arm64-musl "0.1.8" - helius-laserstream-linux-x64-gnu "0.1.8" - helius-laserstream-linux-x64-musl "0.1.8" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.2.0, ignore@^5.2.4: - version "5.3.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== - -import-fresh@^3.2.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" - integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -is-arguments@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b" - integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA== - dependencies: - call-bound "^1.0.2" - has-tostringtag "^1.0.2" - -is-arrayish@<0.3.3, is-arrayish@^0.2.1, is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-callable@^1.2.7: - version "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.16.1: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== - dependencies: - hasown "^2.0.2" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-function@^1.0.7: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5" - integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA== - dependencies: - call-bound "^1.0.4" - generator-function "^2.0.0" - get-proto "^1.0.1" - has-tostringtag "^1.0.2" - safe-regex-test "^1.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-nan@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" - integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-regex@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" - integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== - dependencies: - call-bound "^1.0.2" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== - -is-typed-array@^1.1.14, is-typed-array@^1.1.3: - version "1.1.15" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" - integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== - dependencies: - which-typed-array "^1.1.16" - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-url-superb@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-url-superb/-/is-url-superb-4.0.0.tgz#b54d1d2499bb16792748ac967aa3ecb41a33a8c2" - integrity sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA== - -is-url@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - -jayson@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.3.0.tgz#22eb8f3dcf37a5e893830e5451f32bde6d1bde4d" - integrity sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ== - dependencies: - "@types/connect" "^3.4.33" - "@types/node" "^12.12.54" - "@types/ws" "^7.4.4" - commander "^2.20.3" - delay "^5.0.0" - es6-promisify "^5.0.0" - eyes "^0.1.8" - isomorphic-ws "^4.0.1" - json-stringify-safe "^5.0.1" - stream-json "^1.9.1" - uuid "^8.3.2" - ws "^7.5.10" - -jest-diff@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" - integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== - dependencies: - chalk "^4.0.0" - diff-sequences "^28.1.1" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - -jest-get-type@^28.0.2: - version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" - integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== - -jest-matcher-utils@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" - integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== - dependencies: - chalk "^4.0.0" - jest-diff "^28.1.3" - jest-get-type "^28.0.2" - pretty-format "^28.1.3" - -jest-message-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" - integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^28.1.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^28.1.3" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-util@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" - integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== - dependencies: - "@jest/types" "^28.1.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -js-sha256@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.1.tgz#712262e8fc9569d6f7f6eea72c0d8e5ccc7c976c" - integrity sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg== - -js-sha256@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" - integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" - integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== - dependencies: - argparse "^2.0.1" - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json5@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -just-extend@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" - integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -loglevel@^1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.2.tgz#c2e028d6c757720107df4e64508530db6621ba08" - integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg== - -long@^5.0.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" - integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== - -loupe@^2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" - integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== - dependencies: - get-func-name "^2.0.1" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -madge@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/madge/-/madge-8.0.0.tgz#cca4ab66fb388e7b6bf43c1f78dcaab3cad30f50" - integrity sha512-9sSsi3TBPhmkTCIpVQF0SPiChj1L7Rq9kU2KDG1o6v2XH9cCw086MopjVCD+vuoL5v8S77DTbVopTO8OUiQpIw== - dependencies: - chalk "^4.1.2" - commander "^7.2.0" - commondir "^1.0.1" - debug "^4.3.4" - dependency-tree "^11.0.0" - ora "^5.4.1" - pluralize "^8.0.0" - pretty-ms "^7.0.1" - rc "^1.2.8" - stream-to-array "^2.3.0" - ts-graphviz "^2.1.2" - walkdir "^0.4.1" - -magic-string@^0.30.21: - version "0.30.21" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" - integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.5" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4, micromatch@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1, minimatch@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -mocha@10.7.3: - version "10.7.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.3.tgz#ae32003cabbd52b59aece17846056a68eb4b0752" - integrity sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A== - dependencies: - ansi-colors "^4.1.3" - browser-stdout "^1.3.1" - chokidar "^3.5.3" - debug "^4.3.5" - diff "^5.2.0" - escape-string-regexp "^4.0.0" - find-up "^5.0.0" - glob "^8.1.0" - he "^1.2.0" - js-yaml "^4.1.0" - log-symbols "^4.1.0" - minimatch "^5.1.6" - ms "^2.1.3" - serialize-javascript "^6.0.2" - strip-json-comments "^3.1.1" - supports-color "^8.1.1" - workerpool "^6.5.1" - yargs "^16.2.0" - yargs-parser "^20.2.9" - yargs-unparser "^2.0.0" - -module-definition@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-6.0.1.tgz#47e73144cc5a9aa31f3380166fddf8e962ccb2e4" - integrity sha512-FeVc50FTfVVQnolk/WQT8MX+2WVcDnTGiq6Wo+/+lJ2ET1bRVi3HG3YlJUfqagNMc/kUlFSoR96AJkxGpKz13g== - dependencies: - ast-module-types "^6.0.1" - node-source-walk "^7.0.1" - -module-lookup-amd@^9.0.3: - version "9.0.5" - resolved "https://registry.yarnpkg.com/module-lookup-amd/-/module-lookup-amd-9.0.5.tgz#2563ba8e4f9dbcda914eac3ba4dc3ad8af80eb7d" - integrity sha512-Rs5FVpVcBYRHPLuhHOjgbRhosaQYLtEo3JIeDIbmNo7mSssi1CTzwMh8v36gAzpbzLGXI9wB/yHh+5+3fY1QVw== - dependencies: - commander "^12.1.0" - glob "^7.2.3" - requirejs "^2.3.7" - requirejs-config-file "^4.0.0" - -ms@^2.0.0, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -nanoid@3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -nanoid@^3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" - integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -nise@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/nise/-/nise-6.1.1.tgz#78ea93cc49be122e44cb7c8fdf597b0e8778b64a" - integrity sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g== - dependencies: - "@sinonjs/commons" "^3.0.1" - "@sinonjs/fake-timers" "^13.0.1" - "@sinonjs/text-encoding" "^0.7.3" - just-extend "^6.2.0" - path-to-regexp "^8.1.0" - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-cache@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" - integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== - dependencies: - clone "2.x" - -node-fetch@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-gyp-build@^4.3.0: - version "4.8.4" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" - integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== - -node-source-walk@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/node-source-walk/-/node-source-walk-7.0.1.tgz#3e4ab8d065377228fd038af7b2d4fb58f61defd3" - integrity sha512-3VW/8JpPqPvnJvseXowjZcirPisssnBuDikk6JIZ8jQzF7KJQX52iPFX4RYYxLycYH7IbMRSPUOga/esVjy5Yg== - dependencies: - "@babel/parser" "^7.26.7" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -object-is@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" - integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-sizeof@2.6.5: - version "2.6.5" - resolved "https://registry.yarnpkg.com/object-sizeof/-/object-sizeof-2.6.5.tgz#84ea0760e38876532ab811987dab58a6bbf61230" - integrity sha512-Mu3udRqIsKpneKjIEJ2U/s1KmEgpl+N6cEX1o+dDl2aZ+VW5piHqNgomqAk5YMsDoSkpcA8HnIKx1eqGTKzdfw== - dependencies: - buffer "^6.0.3" - -object.assign@^4.1.4: - version "4.1.7" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" - integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - has-symbols "^1.1.0" - object-keys "^1.1.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -pako@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" - integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.9: - version "5.1.9" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.9.tgz#8dd24c3ea8da77dffbc708d94eaf232fd6156e95" - integrity sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg== - dependencies: - asn1.js "^4.10.1" - browserify-aes "^1.2.0" - evp_bytestokey "^1.0.3" - pbkdf2 "^3.1.5" - safe-buffer "^5.2.1" - -parse-ms@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" - integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== - -path-browserify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@^8.1.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.3.0.tgz#aa818a6981f99321003a08987d3cec9c3474cd1f" - integrity sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - -pbkdf2@^3.1.2, pbkdf2@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.5.tgz#444a59d7a259a95536c56e80c89de31cc01ed366" - integrity sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ== - dependencies: - create-hash "^1.2.0" - create-hmac "^1.1.7" - ripemd160 "^2.0.3" - safe-buffer "^5.2.1" - sha.js "^2.4.12" - to-buffer "^1.2.1" - -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -picomatch@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" - integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== - -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -possible-typed-array-names@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" - integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== - -postcss-values-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-6.0.2.tgz#636edc5b86c953896f1bb0d7a7a6615df00fb76f" - integrity sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw== - dependencies: - color-name "^1.1.4" - is-url-superb "^4.0.0" - quote-unquote "^1.0.0" - -postcss@^8.5.1, postcss@^8.5.6: - version "8.5.6" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" - integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== - dependencies: - nanoid "^3.3.11" - picocolors "^1.1.1" - source-map-js "^1.2.1" - -precinct@^12.2.0: - version "12.2.0" - resolved "https://registry.yarnpkg.com/precinct/-/precinct-12.2.0.tgz#6ab18f48034cc534f2c8fedb318f19a11bcd171b" - integrity sha512-NFBMuwIfaJ4SocE9YXPU/n4AcNSoFMVFjP72nvl3cx69j/ke61/hPOWFREVxLkFhhEGnA8ZuVfTqJBa+PK3b5w== - dependencies: - "@dependents/detective-less" "^5.0.1" - commander "^12.1.0" - detective-amd "^6.0.1" - detective-cjs "^6.0.1" - detective-es6 "^5.0.1" - detective-postcss "^7.0.1" - detective-sass "^6.0.1" - detective-scss "^5.0.1" - detective-stylus "^5.0.1" - detective-typescript "^14.0.0" - detective-vue2 "^2.2.0" - module-definition "^6.0.1" - node-source-walk "^7.0.1" - postcss "^8.5.1" - typescript "^5.7.3" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz#6a31f88a4bad6c7adda253de12ba4edaea80ebcd" - integrity sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg== - dependencies: - fast-diff "^1.1.2" - -prettier@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.1.tgz#65271fc9320ce4913c57747a70ce635b30beaa40" - integrity sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ== - -prettier@^2.5.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -pretty-format@^28.0.0, pretty-format@^28.1.3: - version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" - integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== - dependencies: - "@jest/schemas" "^28.1.3" - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -pretty-ms@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" - integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== - dependencies: - parse-ms "^2.1.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -protobufjs@*: - version "8.0.0" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-8.0.0.tgz#d884102c1fe8d0b1e2493789ad37bc7ea47c0893" - integrity sha512-jx6+sE9h/UryaCZhsJWbJtTEy47yXoGNYI4z8ZaRncM0zBKeRqjO2JEcOUYwrYGb1WLhXM1FfMzW3annvFv0rw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -protobufjs@^7.4.0, protobufjs@^7.5.3: - version "7.5.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" - integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -public-encrypt@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quote-unquote@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/quote-unquote/-/quote-unquote-1.0.0.tgz#67a9a77148effeaf81a4d428404a710baaac8a0b" - integrity sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-is@^18.0.0: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -readable-stream@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.4.0, readable-stream@^3.5.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -requirejs-config-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/requirejs-config-file/-/requirejs-config-file-4.0.0.tgz#4244da5dd1f59874038cc1091d078d620abb6ebc" - integrity sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw== - dependencies: - esprima "^4.0.0" - stringify-object "^3.2.1" - -requirejs@^2.3.7: - version "2.3.8" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.8.tgz#bca0614b618ab2122462597e44878db7558bbba3" - integrity sha512-7/cTSLOdYkNBNJcDMWf+luFvMriVm7eYxp4BcFCsAX0wF421Vyce5SXP17c+Jd5otXKGNehIonFlyQXSowL6Mw== - -resolve-dependency-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/resolve-dependency-path/-/resolve-dependency-path-4.0.1.tgz#1b9d43e5b62384301e26d040b9fce61ee5db60bd" - integrity sha512-YQftIIC4vzO9UMhO/sCgXukNyiwVRCVaxiWskCBy7Zpqkplm8kTAISZ8O1MoKW1ca6xzgLUBjZTcDgypXvXxiQ== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@^1.22.10: - version "1.22.11" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" - integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== - dependencies: - is-core-module "^2.16.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" - integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.3.tgz#9be54e4ba5e3559c8eee06a25cd7648bbccdf5a8" - integrity sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA== - dependencies: - hash-base "^3.1.2" - inherits "^2.0.4" - -rpc-websockets@7.5.1: - version "7.5.1" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.1.tgz#e0a05d525a97e7efc31a0617f093a13a2e10c401" - integrity sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w== - dependencies: - "@babel/runtime" "^7.17.2" - eventemitter3 "^4.0.7" - uuid "^8.3.2" - ws "^8.5.0" - optionalDependencies: - bufferutil "^4.0.1" - utf-8-validate "^5.0.2" - -rpc-websockets@^9.0.2: - version "9.3.2" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.3.2.tgz#26b4d7ebaf8e53422528619a3c314e83590d85bf" - integrity sha512-VuW2xJDnl1k8n8kjbdRSWawPRkwaVqUQNjE1TdeTawf0y0abGhtVJFTXCLfgpgGDBkO/Fj6kny8Dc/nvOW78MA== - dependencies: - "@swc/helpers" "^0.5.11" - "@types/uuid" "^8.3.4" - "@types/ws" "^8.2.2" - buffer "^6.0.3" - eventemitter3 "^5.0.1" - uuid "^8.3.2" - ws "^8.5.0" - optionalDependencies: - bufferutil "^4.0.1" - utf-8-validate "^5.0.2" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex-test@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" - integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - is-regex "^1.2.1" - -"safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sass-lookup@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/sass-lookup/-/sass-lookup-6.1.0.tgz#a13b1f31dd44d2b4bcd55ba8f72763db4d95bd7c" - integrity sha512-Zx+lVyoWqXZxHuYWlTA17Z5sczJ6braNT2C7rmClw+c4E7r/n911Zwss3h1uHI9reR5AgHZyNHF7c2+VIp5AUA== - dependencies: - commander "^12.1.0" - enhanced-resolve "^5.18.0" - -semver@^7.3.7, semver@^7.5.4, semver@^7.7.3: - version "7.7.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" - integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== - -serialize-javascript@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" - integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== - dependencies: - randombytes "^2.1.0" - -set-function-length@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -sha.js@^2.4.0, sha.js@^2.4.12, sha.js@^2.4.8: - version "2.4.12" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.12.tgz#eb8b568bf383dfd1867a32c3f2b74eb52bdbf23f" - integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w== - dependencies: - inherits "^2.0.4" - safe-buffer "^5.2.1" - to-buffer "^1.2.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-swizzle@<0.2.3: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -sinon@18.0.1: - version "18.0.1" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-18.0.1.tgz#464334cdfea2cddc5eda9a4ea7e2e3f0c7a91c5e" - integrity sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw== - dependencies: - "@sinonjs/commons" "^3.0.1" - "@sinonjs/fake-timers" "11.2.2" - "@sinonjs/samsam" "^8.0.0" - diff "^5.2.0" - nise "^6.0.0" - supports-color "^7" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -snake-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" - integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -solana-bankrun-darwin-arm64@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-arm64/-/solana-bankrun-darwin-arm64-0.3.1.tgz#65ab6cd2e74eef260c38251f4c53721cf5b9030f" - integrity sha512-9LWtH/3/WR9fs8Ve/srdo41mpSqVHmRqDoo69Dv1Cupi+o1zMU6HiEPUHEvH2Tn/6TDbPEDf18MYNfReLUqE6A== - -solana-bankrun-darwin-universal@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-universal/-/solana-bankrun-darwin-universal-0.3.1.tgz#bf691457cf046e8739c021ca11e48de5b4fefd45" - integrity sha512-muGHpVYWT7xCd8ZxEjs/bmsbMp8XBqroYGbE4lQPMDUuLvsJEIrjGqs3MbxEFr71sa58VpyvgywWd5ifI7sGIg== - -solana-bankrun-darwin-x64@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-x64/-/solana-bankrun-darwin-x64-0.3.1.tgz#c6f30c0a6bc3e1621ed90ce7562f26e93bf5303f" - integrity sha512-oCaxfHyt7RC3ZMldrh5AbKfy4EH3YRMl8h6fSlMZpxvjQx7nK7PxlRwMeflMnVdkKKp7U8WIDak1lilIPd3/lg== - -solana-bankrun-linux-x64-gnu@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/solana-bankrun-linux-x64-gnu/-/solana-bankrun-linux-x64-gnu-0.3.1.tgz#78b522f1a581955a48f43a8fb560709c11301cfd" - integrity sha512-PfRFhr7igGFNt2Ecfdzh3li9eFPB3Xhmk0Eib17EFIB62YgNUg3ItRnQQFaf0spazFjjJLnglY1TRKTuYlgSVA== - -solana-bankrun-linux-x64-musl@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/solana-bankrun-linux-x64-musl/-/solana-bankrun-linux-x64-musl-0.3.1.tgz#1a044a132138a0084e82406ec7bf4939f06bed68" - integrity sha512-6r8i0NuXg3CGURql8ISMIUqhE7Hx/O7MlIworK4oN08jYrP0CXdLeB/hywNn7Z8d1NXrox/NpYUgvRm2yIzAsQ== - -solana-bankrun@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/solana-bankrun/-/solana-bankrun-0.3.1.tgz#13665ab7c1c15ec2b3354aae56980d0ded514998" - integrity sha512-inRwON7fBU5lPC36HdEqPeDg15FXJYcf77+o0iz9amvkUMJepcwnRwEfTNyMVpVYdgjTOBW5vg+596/3fi1kGA== - dependencies: - "@solana/web3.js" "^1.68.0" - bs58 "^4.0.1" - optionalDependencies: - solana-bankrun-darwin-arm64 "0.3.1" - solana-bankrun-darwin-universal "0.3.1" - solana-bankrun-darwin-x64 "0.3.1" - solana-bankrun-linux-x64-gnu "0.3.1" - solana-bankrun-linux-x64-musl "0.3.1" - -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== - -source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spok@^1.4.3: - version "1.5.5" - resolved "https://registry.yarnpkg.com/spok/-/spok-1.5.5.tgz#a51f7f290a53131d7b7a922dfedc461dda0aed72" - integrity sha512-IrJIXY54sCNFASyHPOY+jEirkiJ26JDqsGiI0Dvhwcnkl0PEWi1PSsrkYql0rzDw8LFVTcA7rdUCAJdE2HE+2Q== - dependencies: - ansicolors "~0.3.2" - find-process "^1.4.7" - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -stream-browserify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" - integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== - dependencies: - inherits "~2.0.4" - readable-stream "^3.5.0" - -stream-chain@^2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" - integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA== - -stream-json@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.9.1.tgz#e3fec03e984a503718946c170db7d74556c2a187" - integrity sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw== - dependencies: - stream-chain "^2.2.5" - -stream-to-array@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/stream-to-array/-/stream-to-array-2.3.0.tgz#bbf6b39f5f43ec30bc71babcb37557acecf34353" - integrity sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA== - dependencies: - any-promise "^1.1.0" - -strict-event-emitter-types@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-event-emitter-types/-/strict-event-emitter-types-2.0.0.tgz#05e15549cb4da1694478a53543e4e2f4abcf277f" - integrity sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA== - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -stylus-lookup@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/stylus-lookup/-/stylus-lookup-6.1.0.tgz#f0fe88a885b830dc7520f51dd0a7e59e5d3307b4" - integrity sha512-5QSwgxAzXPMN+yugy61C60PhoANdItfdjSEZR8siFwz7yL9jTmV0UBKDCfn3K8GkGB4g0Y9py7vTCX8rFu4/pQ== - dependencies: - commander "^12.1.0" - -superstruct@^0.15.4: - version "0.15.5" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" - integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== - -superstruct@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" - integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== - -supports-color@7.2.0, supports-color@^10.0.0, supports-color@^7, supports-color@^7.1.0, supports-color@^8.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@<4.1.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-4.1.0.tgz#f006d9e2f6b9b6672f86c86c6f76bf52a69f4d91" - integrity sha512-6lY0rDZ5bbZhAPrwpz/nMR6XmeaFmh2itk7YnIyph2jblPmDcKMCPkSdLFTlaX8snBvg7OJmaOL3WRLqMEqcJQ== - dependencies: - has-flag "^5.0.1" - supports-color "^10.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "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== - -tapable@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" - integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== - -text-encoding-utf-8@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" - integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -tinyglobby@^0.2.15: - version "0.2.15" - resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" - integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== - dependencies: - fdir "^6.5.0" - picomatch "^4.0.3" - -to-buffer@^1.2.0, to-buffer@^1.2.1, to-buffer@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.2.tgz#ffe59ef7522ada0a2d1cb5dfe03bb8abc3cdc133" - integrity sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw== - dependencies: - isarray "^2.0.5" - safe-buffer "^5.2.1" - typed-array-buffer "^1.0.3" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toml@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" - integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -traverse-chain@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1" - integrity sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg== - -ts-api-utils@^1.0.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" - integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== - -ts-api-utils@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8" - integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== - -ts-graphviz@^2.1.2: - version "2.1.6" - resolved "https://registry.yarnpkg.com/ts-graphviz/-/ts-graphviz-2.1.6.tgz#007fcb42b4e8c55d26543ece9e86395bd3c3cfd6" - integrity sha512-XyLVuhBVvdJTJr2FJJV2L1pc4MwSjMhcunRVgDE9k4wbb2ee7ORYnPewxMWUav12vxyfUM686MSGsqnVRIInuw== - dependencies: - "@ts-graphviz/adapter" "^2.0.6" - "@ts-graphviz/ast" "^2.0.7" - "@ts-graphviz/common" "^2.1.5" - "@ts-graphviz/core" "^2.0.7" - -ts-node@10.9.2: - version "10.9.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsconfig-paths@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" - integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== - dependencies: - json5 "^2.2.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^2.0.3, tslib@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -tweetnacl-util@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" - integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== - -tweetnacl@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-detect@^4.0.0, type-detect@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" - integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -typed-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" - integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== - dependencies: - call-bound "^1.0.3" - es-errors "^1.3.0" - is-typed-array "^1.1.14" - -typescript@5.4.5: - version "5.4.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" - integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== - -typescript@^5.7.3, typescript@^5.8.3: - version "5.9.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" - integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== - -undici-types@^7.11.0: - version "7.18.2" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9" - integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -undici-types@~7.16.0: - version "7.16.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" - integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -utf-8-validate@^5.0.2: - version "5.0.10" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" - integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== - dependencies: - node-gyp-build "^4.3.0" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -util@^0.12.5: - version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - which-typed-array "^1.1.2" - -uuid@8.3.2, uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -vm-browserify@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -walkdir@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39" - integrity sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ== - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-typed-array@^1.1.16, which-typed-array@^1.1.2: - version "1.1.19" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" - integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.8" - call-bound "^1.0.4" - for-each "^0.3.5" - get-proto "^1.0.1" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -workerpool@^6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" - integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== - -wrap-ansi@7.0.0, wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -ws@^7.5.10: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - -ws@^8.5.0: - version "8.19.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.19.0.tgz#ddc2bdfa5b9ad860204f5a72a4863a8895fd8c8b" - integrity sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yaml@^2.6.1: - version "2.8.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" - integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== - -yargs-parser@^20.2.2, yargs-parser@^20.2.9: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs-unparser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@17.7.2, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zod@4.0.17: - version "4.0.17" - resolved "https://registry.yarnpkg.com/zod/-/zod-4.0.17.tgz#95931170715f73f7426c385c237b7477750d6c8d" - integrity sha512-1PHjlYRevNxxdy2JZ8JcNAw7rX8V9P1AKkP+x/xZfxB0K5FYfuV+Ug6P/6NVSR2jHQ+FzDDoDHS04nYUsOIyLQ== - -zstddec@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/zstddec/-/zstddec-0.1.0.tgz#7050f3f0e0c3978562d0c566b3e5a427d2bad7ec" - integrity sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg== + version: 0.30.1 + resolution: "@coral-xyz/anchor@npm:0.30.1" + dependencies: + "@coral-xyz/anchor-errors": "npm:^0.30.1" + "@coral-xyz/borsh": "npm:^0.30.1" + "@noble/hashes": "npm:^1.3.1" + "@solana/web3.js": "npm:^1.68.0" + bn.js: "npm:^5.1.2" + bs58: "npm:^4.0.1" + buffer-layout: "npm:^1.2.2" + camelcase: "npm:^6.3.0" + cross-fetch: "npm:^3.1.5" + crypto-hash: "npm:^1.3.0" + eventemitter3: "npm:^4.0.7" + pako: "npm:^2.0.3" + snake-case: "npm:^3.0.4" + superstruct: "npm:^0.15.4" + toml: "npm:^3.0.0" + checksum: 10c0/ed0e5903e72d11884015bd8c21199604f56c20a4570972323133011172677b7dcfa8c7054055d827f914b61ad5b70378343809a83a06f3f6010e9d08707fd4c5 + languageName: node + linkType: hard + +"@coral-xyz/anchor-errors@npm:^0.30.1": + version: 0.30.1 + resolution: "@coral-xyz/anchor-errors@npm:0.30.1" + checksum: 10c0/cb6749b68c12df54041d1be47df7a7b7f1d4ad2c54759bca7964c22a5dd892de0deb004100ac81cf70278e373d228a99d648013225613b5de85854530c41f501 + languageName: node + linkType: hard + +"@coral-xyz/anchor@npm:0.29.0, @coral-xyz/anchor@npm:^0.29.0": + version: 0.29.0 + resolution: "@coral-xyz/anchor@npm:0.29.0" + dependencies: + "@coral-xyz/borsh": "npm:^0.29.0" + "@noble/hashes": "npm:^1.3.1" + "@solana/web3.js": "npm:^1.68.0" + bn.js: "npm:^5.1.2" + bs58: "npm:^4.0.1" + buffer-layout: "npm:^1.2.2" + camelcase: "npm:^6.3.0" + cross-fetch: "npm:^3.1.5" + crypto-hash: "npm:^1.3.0" + eventemitter3: "npm:^4.0.7" + pako: "npm:^2.0.3" + snake-case: "npm:^3.0.4" + superstruct: "npm:^0.15.4" + toml: "npm:^3.0.0" + checksum: 10c0/cc863ab22b23c126e83b0804a43d45fdb7836659b917db0a8895146ec8d48637db034a7ae7dbd55d5ec7a058a266dd06878e1f921950df1e899369e49fb36c93 + languageName: node + linkType: hard + +"@coral-xyz/borsh@npm:^0.29.0": + version: 0.29.0 + resolution: "@coral-xyz/borsh@npm:0.29.0" + dependencies: + bn.js: "npm:^5.1.2" + buffer-layout: "npm:^1.2.0" + peerDependencies: + "@solana/web3.js": ^1.68.0 + checksum: 10c0/25afec48714d9f0c95a02d04215803181f7da0aad85fdd1b076d9f37ef54586342e01e24fc1b2128aba0b5155e970afd6a2c6f8b0343699d8733c0703655ce39 + languageName: node + linkType: hard + +"@coral-xyz/borsh@npm:^0.30.1": + version: 0.30.1 + resolution: "@coral-xyz/borsh@npm:0.30.1" + dependencies: + bn.js: "npm:^5.1.2" + buffer-layout: "npm:^1.2.0" + peerDependencies: + "@solana/web3.js": ^1.68.0 + checksum: 10c0/eaad9c59647ba58faecc408a30416f17b0cab56bce907cc54654f7a0b151526954c71cedadce7ed38830b731244d918e87b7c3fb19c56a26c2b140c5ccef27dd + languageName: node + linkType: hard + +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 + languageName: node + linkType: hard + +"@dependents/detective-less@npm:^5.0.1": + version: 5.0.1 + resolution: "@dependents/detective-less@npm:5.0.1" + dependencies: + gonzales-pe: "npm:^4.3.0" + node-source-walk: "npm:^7.0.1" + checksum: 10c0/699a81aa94be40c84f1ce7feddb425763352360752dddb8e7bfe531641f5a2553d52b4cf81fa2e08fc7c591262ecccb5ff21f443ede037748e490c33c6fac784 + languageName: node + linkType: hard + +"@drift-labs/sdk@workspace:.": + version: 0.0.0-use.local + resolution: "@drift-labs/sdk@workspace:." + dependencies: + "@coral-xyz/anchor": "npm:0.29.0" + "@coral-xyz/anchor-30": "npm:@coral-xyz/anchor@0.30.1" + "@ellipsis-labs/phoenix-sdk": "npm:1.4.5" + "@grpc/grpc-js": "npm:1.14.0" + "@msgpack/msgpack": "npm:^3.1.2" + "@openbook-dex/openbook-v2": "npm:0.2.10" + "@project-serum/serum": "npm:0.13.65" + "@pythnetwork/client": "npm:2.5.3" + "@pythnetwork/price-service-sdk": "npm:1.7.1" + "@pythnetwork/pyth-lazer-sdk": "npm:5.2.1" + "@solana/spl-token": "npm:0.4.13" + "@solana/web3.js": "npm:1.98.0" + "@switchboard-xyz/common": "npm:3.0.14" + "@switchboard-xyz/on-demand": "npm:2.4.1" + "@triton-one/yellowstone-grpc": "npm:1.4.1" + "@types/big.js": "npm:6.2.2" + "@types/bn.js": "npm:5.1.6" + "@types/bs58": "npm:4.0.4" + "@types/chai": "npm:4.3.20" + "@types/jest": "npm:28.1.8" + "@types/mocha": "npm:9.1.1" + "@typescript-eslint/eslint-plugin": "npm:6.21.0" + "@typescript-eslint/parser": "npm:6.21.0" + anchor-bankrun: "npm:0.3.0" + chai: "npm:4.5.0" + crypto-browserify: "npm:^3.12.1" + encoding: "npm:0.1.13" + esbuild: "npm:^0.27.1" + eslint: "npm:8.57.0" + eslint-config-prettier: "npm:8.3.0" + eslint-plugin-prettier: "npm:3.4.0" + gill: "npm:^0.10.2" + helius-laserstream: "npm:0.1.8" + lodash: "npm:4.17.21" + madge: "npm:^8.0.0" + mocha: "npm:10.7.3" + nanoid: "npm:3.3.4" + node-cache: "npm:5.1.2" + object-sizeof: "npm:2.6.5" + os-browserify: "npm:^0.3.0" + path-browserify: "npm:^1.0.1" + prettier: "npm:3.0.1" + process: "npm:^0.11.10" + sinon: "npm:18.0.1" + solana-bankrun: "npm:0.3.1" + stream-browserify: "npm:^3.0.0" + strict-event-emitter-types: "npm:2.0.0" + ts-node: "npm:10.9.2" + tweetnacl: "npm:1.0.3" + tweetnacl-util: "npm:0.15.1" + typescript: "npm:5.4.5" + uuid: "npm:8.3.2" + vm-browserify: "npm:^1.1.2" + yargs: "npm:17.7.2" + zod: "npm:4.0.17" + zstddec: "npm:0.1.0" + languageName: unknown + linkType: soft + +"@ellipsis-labs/phoenix-sdk@npm:1.4.5": + version: 1.4.5 + resolution: "@ellipsis-labs/phoenix-sdk@npm:1.4.5" + dependencies: + "@metaplex-foundation/beet": "npm:^0.7.1" + "@metaplex-foundation/rustbin": "npm:^0.3.1" + "@metaplex-foundation/solita": "npm:^0.12.2" + "@solana/spl-token": "npm:^0.3.7" + "@types/node": "npm:^18.11.13" + bn.js: "npm:^5.2.1" + borsh: "npm:^0.7.0" + bs58: "npm:^5.0.0" + checksum: 10c0/aec1e035bcc2d0bd04114ce5b6a2ab9372997e5a195d9ee29e4a84b4bdb09a96a9f0b66680c392ba9a892eea4d10fbab81dffc11379a44332c5c65d0fd17daf3 + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/aix-ppc64@npm:0.27.2" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/android-arm64@npm:0.27.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/android-arm@npm:0.27.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/android-x64@npm:0.27.2" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/darwin-arm64@npm:0.27.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/darwin-x64@npm:0.27.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/freebsd-arm64@npm:0.27.2" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/freebsd-x64@npm:0.27.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-arm64@npm:0.27.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-arm@npm:0.27.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-ia32@npm:0.27.2" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-loong64@npm:0.27.2" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-mips64el@npm:0.27.2" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-ppc64@npm:0.27.2" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-riscv64@npm:0.27.2" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-s390x@npm:0.27.2" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/linux-x64@npm:0.27.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/netbsd-arm64@npm:0.27.2" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/netbsd-x64@npm:0.27.2" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/openbsd-arm64@npm:0.27.2" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/openbsd-x64@npm:0.27.2" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openharmony-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/openharmony-arm64@npm:0.27.2" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/sunos-x64@npm:0.27.2" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/win32-arm64@npm:0.27.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/win32-ia32@npm:0.27.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.27.2": + version: 0.27.2 + resolution: "@esbuild/win32-x64@npm:0.27.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": + version: 4.9.1 + resolution: "@eslint-community/eslint-utils@npm:4.9.1" + dependencies: + eslint-visitor-keys: "npm:^3.4.3" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/dc4ab5e3e364ef27e33666b11f4b86e1a6c1d7cbf16f0c6ff87b1619b3562335e9201a3d6ce806221887ff780ec9d828962a290bb910759fd40a674686503f02 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.6.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + languageName: node + linkType: hard + +"@eslint/js@npm:8.57.0": + version: 8.57.0 + resolution: "@eslint/js@npm:8.57.0" + checksum: 10c0/9a518bb8625ba3350613903a6d8c622352ab0c6557a59fe6ff6178bf882bf57123f9d92aa826ee8ac3ee74b9c6203fe630e9ee00efb03d753962dcf65ee4bd94 + languageName: node + linkType: hard + +"@grpc/grpc-js@npm:1.14.0": + version: 1.14.0 + resolution: "@grpc/grpc-js@npm:1.14.0" + dependencies: + "@grpc/proto-loader": "npm:^0.8.0" + "@js-sdsl/ordered-map": "npm:^4.4.2" + checksum: 10c0/51e0eb32f6dac68c49502b227e565c4244f53983d2efab8ef3fd2cc923999751c059f6c77fec4941a93c44eaa58cbc321ce1e9868e1ec226fba5a6c93722c3b1 + languageName: node + linkType: hard + +"@grpc/grpc-js@npm:^1.8.0": + version: 1.14.3 + resolution: "@grpc/grpc-js@npm:1.14.3" + dependencies: + "@grpc/proto-loader": "npm:^0.8.0" + "@js-sdsl/ordered-map": "npm:^4.4.2" + checksum: 10c0/f41f06a311b93cca8c472d56e21387e0f7b57bb2337a91d15ea4279bac8ec4fa0de6bd0d881201229ab800c0f0c55277911ecb850e057f20a828d0ddd623551d + languageName: node + linkType: hard + +"@grpc/proto-loader@npm:^0.8.0": + version: 0.8.0 + resolution: "@grpc/proto-loader@npm:0.8.0" + dependencies: + lodash.camelcase: "npm:^4.3.0" + long: "npm:^5.0.0" + protobufjs: "npm:^7.5.3" + yargs: "npm:^17.7.2" + bin: + proto-loader-gen-types: build/bin/proto-loader-gen-types.js + checksum: 10c0/a27da3b85d5d17bab956d536786c717287eae46ca264ea9ec774db90ff571955bae2705809f431b4622fbf3be9951d7c7bbb1360b2015ee88abe1587cf3d6fe0 + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.11.14": + version: 0.11.14 + resolution: "@humanwhocodes/config-array@npm:0.11.14" + dependencies: + "@humanwhocodes/object-schema": "npm:^2.0.2" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: 10c0/66f725b4ee5fdd8322c737cb5013e19fac72d4d69c8bf4b7feb192fcb83442b035b92186f8e9497c220e58b2d51a080f28a73f7899bc1ab288c3be172c467541 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^2.0.2": + version: 2.0.3 + resolution: "@humanwhocodes/object-schema@npm:2.0.3" + checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c + languageName: node + linkType: hard + +"@isaacs/balanced-match@npm:^4.0.1": + version: 4.0.1 + resolution: "@isaacs/balanced-match@npm:4.0.1" + checksum: 10c0/7da011805b259ec5c955f01cee903da72ad97c5e6f01ca96197267d3f33103d5b2f8a1af192140f3aa64526c593c8d098ae366c2b11f7f17645d12387c2fd420 + languageName: node + linkType: hard + +"@isaacs/brace-expansion@npm:^5.0.0": + version: 5.0.0 + resolution: "@isaacs/brace-expansion@npm:5.0.0" + dependencies: + "@isaacs/balanced-match": "npm:^4.0.1" + checksum: 10c0/b4d4812f4be53afc2c5b6c545001ff7a4659af68d4484804e9d514e183d20269bb81def8682c01a22b17c4d6aed14292c8494f7d2ac664e547101c1a905aa977 + languageName: node + linkType: hard + +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + languageName: node + linkType: hard + +"@isaacs/ttlcache@npm:^1.4.1": + version: 1.4.1 + resolution: "@isaacs/ttlcache@npm:1.4.1" + checksum: 10c0/6921de516917b02673a58e543c2b06fd04237cbf6d089ca22d6e98defa4b1e9a48258cb071d6b581284bb497bea687320788830541511297eecbe6e93a665bbf + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^28.1.3": + version: 28.1.3 + resolution: "@jest/expect-utils@npm:28.1.3" + dependencies: + jest-get-type: "npm:^28.0.2" + checksum: 10c0/6cb424bf24c9a20d7420601fb5599a563f09c1771cc8df3399a291f77f3cb512cfa06e6b0bce23b8b078d333d2713572fae298c6a017ca9bbe26d6b05f7bae46 + languageName: node + linkType: hard + +"@jest/schemas@npm:^28.1.3": + version: 28.1.3 + resolution: "@jest/schemas@npm:28.1.3" + dependencies: + "@sinclair/typebox": "npm:^0.24.1" + checksum: 10c0/8c325918f3e1b83e687987b05c2e5143d171f372b091f891fe17835f06fadd864ddae3c7e221a704bdd7e2ea28c4b337124c02023d8affcbdd51eca2879162ac + languageName: node + linkType: hard + +"@jest/types@npm:^28.1.3": + version: 28.1.3 + resolution: "@jest/types@npm:28.1.3" + dependencies: + "@jest/schemas": "npm:^28.1.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10c0/3cffae7d1133aa7952a6b5c4806f89ed78cb0dfe3ec4e8c5a6e704d7bab3cff86c714abb5f0f637540da22776900a33b3bad79c5ed5fc5b5535fb24e3006e3cb + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.0.3": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.5.5": + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b + languageName: node + linkType: hard + +"@js-sdsl/ordered-map@npm:^4.4.2": + version: 4.4.2 + resolution: "@js-sdsl/ordered-map@npm:4.4.2" + checksum: 10c0/cc7e15dc4acf6d9ef663757279600bab70533d847dcc1ab01332e9e680bd30b77cdf9ad885cc774276f51d98b05a013571c940e5b360985af5eb798dc1a2ee2b + languageName: node + linkType: hard + +"@metaplex-foundation/beet-solana@npm:^0.3.0": + version: 0.3.1 + resolution: "@metaplex-foundation/beet-solana@npm:0.3.1" + dependencies: + "@metaplex-foundation/beet": "npm:>=0.1.0" + "@solana/web3.js": "npm:^1.56.2" + bs58: "npm:^5.0.0" + debug: "npm:^4.3.4" + checksum: 10c0/fe9c8c6a99ff91caf8a9a71c3195ffcdf8f72074ea103d4c0eb611793f8417421b1968bea56dc74ba28b8de7045eab0a2e04b2c0d4e05ecde12c27af3a1b9fc1 + languageName: node + linkType: hard + +"@metaplex-foundation/beet@npm:>=0.1.0, @metaplex-foundation/beet@npm:^0.7.1": + version: 0.7.2 + resolution: "@metaplex-foundation/beet@npm:0.7.2" + dependencies: + ansicolors: "npm:^0.3.2" + assert: "npm:^2.1.0" + bn.js: "npm:^5.2.0" + debug: "npm:^4.3.3" + checksum: 10c0/38c2eb1664b0becf7d1afaa331b8406df5632a7593b8be953bc44f397dadc96c4a1b9b3e0e22aebfd5f8a0c8756cf6172cd76cf29dff5fc723408786da84ebc1 + languageName: node + linkType: hard + +"@metaplex-foundation/beet@npm:^0.4.0": + version: 0.4.0 + resolution: "@metaplex-foundation/beet@npm:0.4.0" + dependencies: + ansicolors: "npm:^0.3.2" + bn.js: "npm:^5.2.0" + debug: "npm:^4.3.3" + checksum: 10c0/bdb9435a7060876da6cea3a752f45517f8933d3a38d6201a8e34498f9ac242594f993f21e5c0eeb1af5832064ebe6883f76c65b521e9aeb585e3afb1a986c50c + languageName: node + linkType: hard + +"@metaplex-foundation/rustbin@npm:^0.3.0, @metaplex-foundation/rustbin@npm:^0.3.1": + version: 0.3.5 + resolution: "@metaplex-foundation/rustbin@npm:0.3.5" + dependencies: + debug: "npm:^4.3.3" + semver: "npm:^7.3.7" + text-table: "npm:^0.2.0" + toml: "npm:^3.0.0" + checksum: 10c0/04d2b3efa8a040a1ef07147e3559b210a1c5c3d77afbc9028389da3fbcebcb7c08c43890925930b6f74b6f461a251bd5d05b95c8c94c644227a269a4506d44cd + languageName: node + linkType: hard + +"@metaplex-foundation/solita@npm:^0.12.2": + version: 0.12.2 + resolution: "@metaplex-foundation/solita@npm:0.12.2" + dependencies: + "@metaplex-foundation/beet": "npm:^0.4.0" + "@metaplex-foundation/beet-solana": "npm:^0.3.0" + "@metaplex-foundation/rustbin": "npm:^0.3.0" + "@solana/web3.js": "npm:^1.36.0" + camelcase: "npm:^6.2.1" + debug: "npm:^4.3.3" + js-sha256: "npm:^0.9.0" + prettier: "npm:^2.5.1" + snake-case: "npm:^3.0.4" + spok: "npm:^1.4.3" + bin: + solita: dist/src/cli/solita.js + checksum: 10c0/73b6ca27a967f11c597cf08a1b63445f136ed34201e7148d3f4ca991431c22eba180c0602c9abd23e59fed22465c6fddd5cc4bdf3c9a255b4f2ef0c45124007f + languageName: node + linkType: hard + +"@msgpack/msgpack@npm:^3.1.2": + version: 3.1.3 + resolution: "@msgpack/msgpack@npm:3.1.3" + checksum: 10c0/1fa9a760a58e64e121561d17977b680198ff24d83e951df3896f8639d06824f2cba20af92a19940461e0d5d6dc696bd01222bd901164759432eadd0f482d0816 + languageName: node + linkType: hard + +"@noble/curves@npm:^1.4.2": + version: 1.9.7 + resolution: "@noble/curves@npm:1.9.7" + dependencies: + "@noble/hashes": "npm:1.8.0" + checksum: 10c0/150014751ebe8ca06a8654ca2525108452ea9ee0be23430332769f06808cddabfe84f248b6dbf836916bc869c27c2092957eec62c7506d68a1ed0a624017c2a3 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.4.0": + version: 1.8.0 + resolution: "@noble/hashes@npm:1.8.0" + checksum: 10c0/06a0b52c81a6fa7f04d67762e08b2c476a00285858150caeaaff4037356dd5e119f45b2a530f638b77a5eeca013168ec1b655db41bae3236cb2e9d511484fc77 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/agent@npm:4.0.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^11.2.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/f7b5ce0f3dd42c3f8c6546e8433573d8049f67ef11ec22aa4704bc41483122f68bf97752e06302c455ead667af5cb753e6a09bff06632bc465c1cfd4c4b75a53 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^5.0.0": + version: 5.0.0 + resolution: "@npmcli/fs@npm:5.0.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/26e376d780f60ff16e874a0ac9bc3399186846baae0b6e1352286385ac134d900cc5dafaded77f38d77f86898fc923ae1cee9d7399f0275b1aa24878915d722b + languageName: node + linkType: hard + +"@openbook-dex/openbook-v2@npm:0.2.10": + version: 0.2.10 + resolution: "@openbook-dex/openbook-v2@npm:0.2.10" + dependencies: + "@coral-xyz/anchor": "npm:^0.29.0" + "@solana/spl-token": "npm:^0.4.0" + "@solana/web3.js": "npm:^1.77.3" + big.js: "npm:^6.2.1" + checksum: 10c0/84f58bedfaf73959936bad81859f8f73791acf8466020e7a2616f6169260bab2944efb14c2072d8e158d60191d086120c5f15a5c08729daaf95db3068fff25cf + languageName: node + linkType: hard + +"@project-serum/anchor@npm:^0.11.1": + version: 0.11.1 + resolution: "@project-serum/anchor@npm:0.11.1" + dependencies: + "@project-serum/borsh": "npm:^0.2.2" + "@solana/web3.js": "npm:^1.17.0" + base64-js: "npm:^1.5.1" + bn.js: "npm:^5.1.2" + bs58: "npm:^4.0.1" + buffer-layout: "npm:^1.2.0" + camelcase: "npm:^5.3.1" + crypto-hash: "npm:^1.3.0" + eventemitter3: "npm:^4.0.7" + find: "npm:^0.3.0" + js-sha256: "npm:^0.9.0" + pako: "npm:^2.0.3" + snake-case: "npm:^3.0.4" + toml: "npm:^3.0.0" + checksum: 10c0/192f2e21c20f845433842824f32eb3400f5a763e06a36594063742282cd8b8074b9676bc4ff1383e4fee798bf82f89e9460f124b4d60053d235e17014bcfe712 + languageName: node + linkType: hard + +"@project-serum/borsh@npm:^0.2.2": + version: 0.2.5 + resolution: "@project-serum/borsh@npm:0.2.5" + dependencies: + bn.js: "npm:^5.1.2" + buffer-layout: "npm:^1.2.0" + peerDependencies: + "@solana/web3.js": ^1.2.0 + checksum: 10c0/84fb4d5384807359f7de2ce17165bc28b3e6f51193ed8699734fa90212693822c5d02ecb6a602287cbc71f540a938c13a7f6ce50d5b9d57318adb01fca5e0804 + languageName: node + linkType: hard + +"@project-serum/serum@npm:0.13.65": + version: 0.13.65 + resolution: "@project-serum/serum@npm:0.13.65" + dependencies: + "@project-serum/anchor": "npm:^0.11.1" + "@solana/spl-token": "npm:^0.1.6" + "@solana/web3.js": "npm:^1.21.0" + bn.js: "npm:^5.1.2" + buffer-layout: "npm:^1.2.0" + checksum: 10c0/6fc4d79989d70e1dfd80c5641db94cefb335f9e477f63eb51468634218b8d315c275e1fa6b26c5f09910c2f318fc0d1da2aa037da62477bf1449abbb98b6dcc0 + languageName: node + linkType: hard + +"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/aspromise@npm:1.1.2" + checksum: 10c0/a83343a468ff5b5ec6bff36fd788a64c839e48a07ff9f4f813564f58caf44d011cd6504ed2147bf34835bd7a7dd2107052af755961c6b098fd8902b4f6500d0f + languageName: node + linkType: hard + +"@protobufjs/base64@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/base64@npm:1.1.2" + checksum: 10c0/eec925e681081af190b8ee231f9bad3101e189abbc182ff279da6b531e7dbd2a56f1f306f37a80b1be9e00aa2d271690d08dcc5f326f71c9eed8546675c8caf6 + languageName: node + linkType: hard + +"@protobufjs/codegen@npm:^2.0.4": + version: 2.0.4 + resolution: "@protobufjs/codegen@npm:2.0.4" + checksum: 10c0/26ae337c5659e41f091606d16465bbcc1df1f37cc1ed462438b1f67be0c1e28dfb2ca9f294f39100c52161aef82edf758c95d6d75650a1ddf31f7ddee1440b43 + languageName: node + linkType: hard + +"@protobufjs/eventemitter@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/eventemitter@npm:1.1.0" + checksum: 10c0/1eb0a75180e5206d1033e4138212a8c7089a3d418c6dfa5a6ce42e593a4ae2e5892c4ef7421f38092badba4040ea6a45f0928869989411001d8c1018ea9a6e70 + languageName: node + linkType: hard + +"@protobufjs/fetch@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/fetch@npm:1.1.0" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.1" + "@protobufjs/inquire": "npm:^1.1.0" + checksum: 10c0/cda6a3dc2d50a182c5865b160f72077aac197046600091dbb005dd0a66db9cce3c5eaed6d470ac8ed49d7bcbeef6ee5f0bc288db5ff9a70cbd003e5909065233 + languageName: node + linkType: hard + +"@protobufjs/float@npm:^1.0.2": + version: 1.0.2 + resolution: "@protobufjs/float@npm:1.0.2" + checksum: 10c0/18f2bdede76ffcf0170708af15c9c9db6259b771e6b84c51b06df34a9c339dbbeec267d14ce0bddd20acc142b1d980d983d31434398df7f98eb0c94a0eb79069 + languageName: node + linkType: hard + +"@protobufjs/inquire@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/inquire@npm:1.1.0" + checksum: 10c0/64372482efcba1fb4d166a2664a6395fa978b557803857c9c03500e0ac1013eb4b1aacc9ed851dd5fc22f81583670b4f4431bae186f3373fedcfde863ef5921a + languageName: node + linkType: hard + +"@protobufjs/path@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/path@npm:1.1.2" + checksum: 10c0/cece0a938e7f5dfd2fa03f8c14f2f1cf8b0d6e13ac7326ff4c96ea311effd5fb7ae0bba754fbf505312af2e38500250c90e68506b97c02360a43793d88a0d8b4 + languageName: node + linkType: hard + +"@protobufjs/pool@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/pool@npm:1.1.0" + checksum: 10c0/eda2718b7f222ac6e6ad36f758a92ef90d26526026a19f4f17f668f45e0306a5bd734def3f48f51f8134ae0978b6262a5c517c08b115a551756d1a3aadfcf038 + languageName: node + linkType: hard + +"@protobufjs/utf8@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/utf8@npm:1.1.0" + checksum: 10c0/a3fe31fe3fa29aa3349e2e04ee13dc170cc6af7c23d92ad49e3eeaf79b9766264544d3da824dba93b7855bd6a2982fb40032ef40693da98a136d835752beb487 + languageName: node + linkType: hard + +"@pythnetwork/client@npm:2.5.3": + version: 2.5.3 + resolution: "@pythnetwork/client@npm:2.5.3" + dependencies: + "@solana/web3.js": "npm:^1.30.2" + assert: "npm:^2.0.0" + buffer: "npm:^6.0.1" + checksum: 10c0/4958b6d9181a154110f0df7ef960a1f49debfc9b7239d39a2a65a6ba294dc788c45e567622a3f09cbfc444e3ce19553ba11ecd8607bde8c1079da8758b6c9ff7 + languageName: node + linkType: hard + +"@pythnetwork/price-service-sdk@npm:1.7.1": + version: 1.7.1 + resolution: "@pythnetwork/price-service-sdk@npm:1.7.1" + dependencies: + bn.js: "npm:^5.2.1" + checksum: 10c0/721df439ceb4908794092750ae8b35b024c411a81c8483e4d3f1f55b75ffb462ca9a40cf8d11cb5ee29035e02cd4d41a1a4374d254c43208c1239dd1636c731b + languageName: node + linkType: hard + +"@pythnetwork/pyth-lazer-sdk@npm:5.2.1": + version: 5.2.1 + resolution: "@pythnetwork/pyth-lazer-sdk@npm:5.2.1" + dependencies: + "@isaacs/ttlcache": "npm:^1.4.1" + buffer: "npm:^6.0.3" + isomorphic-ws: "npm:^5.0.0" + ts-log: "npm:^2.2.7" + ws: "npm:^8.18.0" + checksum: 10c0/3ddbf963ff9f831b0e12a71094ed3a18625ff54666c9e83b8375da157e6cc753b946d9f1a8629c56d0c6b97961e36a194d1740defbabc65719b9cc6d77fa3565 + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.24.1": + version: 0.24.51 + resolution: "@sinclair/typebox@npm:0.24.51" + checksum: 10c0/458131e83ca59ad3721f0abeef2aa5220aff2083767e1143d75c67c85d55ef7a212f48f394471ee6bdd2e860ba30f09a489cdd2a28a2824d5b0d1014bdfb2552 + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.0, @sinonjs/commons@npm:^3.0.1": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:11.2.2": + version: 11.2.2 + resolution: "@sinonjs/fake-timers@npm:11.2.2" + dependencies: + "@sinonjs/commons": "npm:^3.0.0" + checksum: 10c0/a4218efa6fdafda622d02d4c0a6ab7df3641cb038bb0b14f0a3ee56f50c95aab4f1ab2d7798ce928b40c6fc1839465a558c9393a77e4dca879e1b2f8d60d8136 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^13.0.1": + version: 13.0.5 + resolution: "@sinonjs/fake-timers@npm:13.0.5" + dependencies: + "@sinonjs/commons": "npm:^3.0.1" + checksum: 10c0/a707476efd523d2138ef6bba916c83c4a377a8372ef04fad87499458af9f01afc58f4f245c5fd062793d6d70587309330c6f96947b5bd5697961c18004dc3e26 + languageName: node + linkType: hard + +"@sinonjs/samsam@npm:^8.0.0": + version: 8.0.3 + resolution: "@sinonjs/samsam@npm:8.0.3" + dependencies: + "@sinonjs/commons": "npm:^3.0.1" + type-detect: "npm:^4.1.0" + checksum: 10c0/9bf57a8f8a484b3455696786e1679db7f0d6017de62099ee304bd364281fcb20895b7c6b05292aa10fecf76df27691e914fc3e1cb8a56d88c027e87d869dcf0c + languageName: node + linkType: hard + +"@sinonjs/text-encoding@npm:^0.7.3": + version: 0.7.3 + resolution: "@sinonjs/text-encoding@npm:0.7.3" + checksum: 10c0/b112d1e97af7f99fbdc63c7dbcd35d6a60764dfec85cfcfff532e55cce8ecd8453f9fa2139e70aea47142c940fd90cd201d19f370b9a0141700d8a6de3116815 + languageName: node + linkType: hard + +"@solana-program/address-lookup-table@npm:^0.7.0": + version: 0.7.0 + resolution: "@solana-program/address-lookup-table@npm:0.7.0" + peerDependencies: + "@solana/kit": ^2.1.0 + checksum: 10c0/5832582b3768dfae5770176fb9ce3ec0dacc76f754664c757c565a7d7c5f10cbd5eaa2a1d2d8dbe058309e66618bb0e9fda078cbef8816ecd18020c195b67166 + languageName: node + linkType: hard + +"@solana-program/compute-budget@npm:^0.8.0": + version: 0.8.0 + resolution: "@solana-program/compute-budget@npm:0.8.0" + peerDependencies: + "@solana/kit": ^2.1.0 + checksum: 10c0/3743cdc54fe69435a179a05203fc7efa3a0249ba7caf08cdb8d621daac66067605a53fdfbe1bfa239c779b62fdf6ae3ac1f87a8e8852ef91be8ec199ba97dd90 + languageName: node + linkType: hard + +"@solana-program/system@npm:^0.7.0": + version: 0.7.0 + resolution: "@solana-program/system@npm:0.7.0" + peerDependencies: + "@solana/kit": ^2.1.0 + checksum: 10c0/0316a6f5359a79b7d070358bf5b7443ff99419f2b7120f78fe625861925b227c7129fa9c2d88c53a8731630032777491e25e8cf6c0711f92fe956d90d40b5662 + languageName: node + linkType: hard + +"@solana-program/token-2022@npm:^0.4.2": + version: 0.4.2 + resolution: "@solana-program/token-2022@npm:0.4.2" + peerDependencies: + "@solana/kit": ^2.1.0 + "@solana/sysvars": ^2.1.0 + checksum: 10c0/d70f5514325b57d95ca462a2d559b4f6c57088108cd2666c9a64cddf42e455272a13f85f4b4491466afcb92f3ce4e86f1353a82873bf2ce8e6d8f9dba25d94b5 + languageName: node + linkType: hard + +"@solana/accounts@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/accounts@npm:2.3.0" + dependencies: + "@solana/addresses": "npm:2.3.0" + "@solana/codecs-core": "npm:2.3.0" + "@solana/codecs-strings": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + "@solana/rpc-spec": "npm:2.3.0" + "@solana/rpc-types": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/4fc88109745bc17a84b88fb357ba9be649c351ce04de24ad5adfbbb633d5abcb0b38177fb1169045776a2ba2760a4910a4edd4b28f88368c90a06c260b9ffc86 + languageName: node + linkType: hard + +"@solana/addresses@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/addresses@npm:2.3.0" + dependencies: + "@solana/assertions": "npm:2.3.0" + "@solana/codecs-core": "npm:2.3.0" + "@solana/codecs-strings": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + "@solana/nominal-types": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/c54de389f30e9c2ef58ce696190343b424b88aaf76cdc84cd533897237e0c171fc530e10a59dfa8558e9fc0a28dab89709615b2a3613f3e0f508c6e7f83a63bc + languageName: node + linkType: hard + +"@solana/assertions@npm:2.3.0, @solana/assertions@npm:^2.1.1": + version: 2.3.0 + resolution: "@solana/assertions@npm:2.3.0" + dependencies: + "@solana/errors": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/76a3a2764bbc95e21f63a1e6c88e241ce3b1f7dba54da49284dfac575066c524b7b6ad6930b7c91fb99d2befc5e0c15f170c73dbe0a5de2ecf2bc714740f81f1 + languageName: node + linkType: hard + +"@solana/buffer-layout-utils@npm:^0.2.0": + version: 0.2.0 + resolution: "@solana/buffer-layout-utils@npm:0.2.0" + dependencies: + "@solana/buffer-layout": "npm:^4.0.0" + "@solana/web3.js": "npm:^1.32.0" + bigint-buffer: "npm:^1.1.5" + bignumber.js: "npm:^9.0.1" + checksum: 10c0/ed093999d7c0f93527a9b261a9a2a59e10b5ef78fc416fa896b86036fb4dadf923d17db68bffdc3e91eadecdb8b8cddd8ee37f12429980fcaba321e7b8a35d27 + languageName: node + linkType: hard + +"@solana/buffer-layout@npm:^4.0.0, @solana/buffer-layout@npm:^4.0.1": + version: 4.0.1 + resolution: "@solana/buffer-layout@npm:4.0.1" + dependencies: + buffer: "npm:~6.0.3" + checksum: 10c0/6535f3908cf6dfc405b665795f0c2eaa0482a8c6b1811403945cf7b450e7eb7b40acce3e8af046f2fcc3eea1a15e61d48c418315d813bee4b720d56b00053305 + languageName: node + linkType: hard + +"@solana/codecs-core@npm:2.0.0-preview.4": + version: 2.0.0-preview.4 + resolution: "@solana/codecs-core@npm:2.0.0-preview.4" + dependencies: + "@solana/errors": "npm:2.0.0-preview.4" + peerDependencies: + typescript: ">=5" + checksum: 10c0/fe6d52cec3b747a8ecf752675b57e7f01c5c1d6287d0ec339b49979afba0c37f6c357f4b0b75edb9a6f7876134ba8c1eb77daa3df5b3cdfc938fdebde5d98278 + languageName: node + linkType: hard + +"@solana/codecs-core@npm:2.0.0-rc.1": + version: 2.0.0-rc.1 + resolution: "@solana/codecs-core@npm:2.0.0-rc.1" + dependencies: + "@solana/errors": "npm:2.0.0-rc.1" + peerDependencies: + typescript: ">=5" + checksum: 10c0/3b1fd09727bf850d191292b14e1afb64cda4e57f898c06483f40d0402c4f07f1d4df555f028f664701e647834c74924818857443666d039f4e44c8c01f31f427 + languageName: node + linkType: hard + +"@solana/codecs-core@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/codecs-core@npm:2.3.0" + dependencies: + "@solana/errors": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/efef080b94fe572bcfeac9f1c0b222700203bd2b45c9590e77445b35335d0ed2582d1cc4e533003d2090c385c06eb93dfa05388f9766182aa60ce85eacfd8042 + languageName: node + linkType: hard + +"@solana/codecs-data-structures@npm:2.0.0-preview.4": + version: 2.0.0-preview.4 + resolution: "@solana/codecs-data-structures@npm:2.0.0-preview.4" + dependencies: + "@solana/codecs-core": "npm:2.0.0-preview.4" + "@solana/codecs-numbers": "npm:2.0.0-preview.4" + "@solana/errors": "npm:2.0.0-preview.4" + peerDependencies: + typescript: ">=5" + checksum: 10c0/9274fbfe029654e6f3cf43a8e82c575c6fab406f6db6b77ee443a2288abf730c4c3c2defd479f9fc4e3d0b9a4334018ba821b4bddcd546586f99e4f778004c33 + languageName: node + linkType: hard + +"@solana/codecs-numbers@npm:2.0.0-preview.4": + version: 2.0.0-preview.4 + resolution: "@solana/codecs-numbers@npm:2.0.0-preview.4" + dependencies: + "@solana/codecs-core": "npm:2.0.0-preview.4" + "@solana/errors": "npm:2.0.0-preview.4" + peerDependencies: + typescript: ">=5" + checksum: 10c0/02ea792e055f6c798ca140d00d429e0ae6d37b9b42ff3ad950dba98666e18324eeaabd13cdcc584c64a21b10ef3706aaeb23691ba53520dba462fbc071bd63aa + languageName: node + linkType: hard + +"@solana/codecs-numbers@npm:2.0.0-rc.1": + version: 2.0.0-rc.1 + resolution: "@solana/codecs-numbers@npm:2.0.0-rc.1" + dependencies: + "@solana/codecs-core": "npm:2.0.0-rc.1" + "@solana/errors": "npm:2.0.0-rc.1" + peerDependencies: + typescript: ">=5" + checksum: 10c0/baf888bbd9c9ed2420207329c735def60a2b3d94d4a0dd1a92703f4de165a96dfd5b66e4fe954d6a7fae12b6b95c41da500499f100b6d5cfad6420d4bfe71b50 + languageName: node + linkType: hard + +"@solana/codecs-numbers@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/codecs-numbers@npm:2.3.0" + dependencies: + "@solana/codecs-core": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/0780d60771e451cfe22ea614315fed2f37507aa62f83cddb900186f88d4d4532eea298d74796d1dbc8c34321a570b5d9ada25e8f4a5aeadd57aa4e688b4465f5 + languageName: node + linkType: hard + +"@solana/codecs-strings@npm:2.0.0-rc.1": + version: 2.0.0-rc.1 + resolution: "@solana/codecs-strings@npm:2.0.0-rc.1" + dependencies: + "@solana/codecs-core": "npm:2.0.0-rc.1" + "@solana/codecs-numbers": "npm:2.0.0-rc.1" + "@solana/errors": "npm:2.0.0-rc.1" + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: ">=5" + checksum: 10c0/7f3483407de7e324075a85f2f8c91103021d6b8f38cfd4cf78603cbd7b00ea8b828a0cb9b61fb2b0db6d3e733fdf358006de23278cf3b103af1f1de4f3f66233 + languageName: node + linkType: hard + +"@solana/codecs-strings@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/codecs-strings@npm:2.3.0" + dependencies: + "@solana/codecs-core": "npm:2.3.0" + "@solana/codecs-numbers": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: ">=5.3.3" + checksum: 10c0/547b6046751ac15988d280939aa35a178b262de6a72366f6efb78d9fea3cdfd8461c719f63f96a983b934d34d50aeb04207eb9e812b0736335c01991dde2857b + languageName: node + linkType: hard + +"@solana/codecs@npm:2.0.0-rc.1": + version: 2.0.0-rc.1 + resolution: "@solana/codecs@npm:2.0.0-rc.1" + dependencies: + "@solana/codecs-core": "npm:2.0.0-rc.1" + "@solana/codecs-data-structures": "npm:2.0.0-rc.1" + "@solana/codecs-numbers": "npm:2.0.0-rc.1" + "@solana/codecs-strings": "npm:2.0.0-rc.1" + "@solana/options": "npm:2.0.0-rc.1" + peerDependencies: + typescript: ">=5" + checksum: 10c0/5f4a30b1fed60c9442ab73cbe413fe528e5b316f602eb745b0de84a9622ceb8af9e7a7a9f8e2f5d730280858f9e4e0ab861729311c0aa55cc253427707815ef2 + languageName: node + linkType: hard + +"@solana/codecs@npm:2.3.0, @solana/codecs@npm:^2.1.1": + version: 2.3.0 + resolution: "@solana/codecs@npm:2.3.0" + dependencies: + "@solana/codecs-core": "npm:2.3.0" + "@solana/codecs-data-structures": "npm:2.3.0" + "@solana/codecs-numbers": "npm:2.3.0" + "@solana/codecs-strings": "npm:2.3.0" + "@solana/options": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/c745ec4e051c9c1ab0fe76cb0c59c08303e432e11bc6d8699e109e809287e245bf5749d37f7fc16c59c1e1163f7a05178eb76e5c91f12c412059fdaa3ebd7213 + languageName: node + linkType: hard + +"@solana/errors@npm:2.0.0-preview.4": + version: 2.0.0-preview.4 + resolution: "@solana/errors@npm:2.0.0-preview.4" + dependencies: + chalk: "npm:^5.3.0" + commander: "npm:^12.1.0" + peerDependencies: + typescript: ">=5" + bin: + errors: bin/cli.mjs + checksum: 10c0/457a4e35a8a28c1ad7fc75cf1fde6159b920cebce9c6c46af54b001ccecae9c1f366703de9cad238e784a2b76ae180f0b7c9c63d2f7c972d67cd8165960fdae9 + languageName: node + linkType: hard + +"@solana/fast-stable-stringify@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/fast-stable-stringify@npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/8ba068c2df1388edd00714a343659a167e8072fabd7f9f89a7eb176b10c9307da7905b21c047c7080245363a0fd26d0d1751d7ba3857c1487cbbec4ceef2222b + languageName: node + linkType: hard + +"@solana/functional@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/functional@npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/6a2d564f00515f401497bcbf00542fca354dfbbc89c16a7172a2fbffcb96caf006d4e2c2471d5499bafb43365d1156fd2be783bbd46b56e18e8908de33659062 + languageName: node + linkType: hard + +"@solana/instructions@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/instructions@npm:2.3.0" + dependencies: + "@solana/codecs-core": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/0eb00090576aff2c7089d84103463b059a4f50c1e244d4f50925b54f98abe148269efa45e9b3cc3a9e4ef84619a24694ad282759800009448530e6ed22e3b189 + languageName: node + linkType: hard + +"@solana/keys@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/keys@npm:2.3.0" + dependencies: + "@solana/assertions": "npm:2.3.0" + "@solana/codecs-core": "npm:2.3.0" + "@solana/codecs-strings": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + "@solana/nominal-types": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/72bce8e0315319e66f8610e0492ea28925b3149b93a4ae07a08ac43a4cd1065954147073b035a4350e6b6559e97c885ad664ac9d63d5cd04322b9dc879ab7161 + languageName: node + linkType: hard + +"@solana/kit@npm:^2.3.0": + version: 2.3.0 + resolution: "@solana/kit@npm:2.3.0" + dependencies: + "@solana/accounts": "npm:2.3.0" + "@solana/addresses": "npm:2.3.0" + "@solana/codecs": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + "@solana/functional": "npm:2.3.0" + "@solana/instructions": "npm:2.3.0" + "@solana/keys": "npm:2.3.0" + "@solana/programs": "npm:2.3.0" + "@solana/rpc": "npm:2.3.0" + "@solana/rpc-parsed-types": "npm:2.3.0" + "@solana/rpc-spec-types": "npm:2.3.0" + "@solana/rpc-subscriptions": "npm:2.3.0" + "@solana/rpc-types": "npm:2.3.0" + "@solana/signers": "npm:2.3.0" + "@solana/sysvars": "npm:2.3.0" + "@solana/transaction-confirmation": "npm:2.3.0" + "@solana/transaction-messages": "npm:2.3.0" + "@solana/transactions": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/4f9082b88dd4a08c82feb175d317a240a821bdb814d715d98b891284738a2d71c2447f7e263af5231ac1992fc5056eb23a8d7c1e47f20c56c0c530b6b6761e5b + languageName: node + linkType: hard + +"@solana/nominal-types@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/nominal-types@npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/fb24bd630c67afcb1eeb6ec756a1116167d45a77ce539f62bb4b911d44fd26e83d4388bf1ff27d76a5f2f19add65d1e3a5a3875fa1ac9b73a2b29a119553daa6 + languageName: node + linkType: hard + +"@solana/options@npm:2.0.0-rc.1": + version: 2.0.0-rc.1 + resolution: "@solana/options@npm:2.0.0-rc.1" + dependencies: + "@solana/codecs-core": "npm:2.0.0-rc.1" + "@solana/codecs-data-structures": "npm:2.0.0-rc.1" + "@solana/codecs-numbers": "npm:2.0.0-rc.1" + "@solana/codecs-strings": "npm:2.0.0-rc.1" + "@solana/errors": "npm:2.0.0-rc.1" + peerDependencies: + typescript: ">=5" + checksum: 10c0/967dc01c12b0433412a74cb498262f7d0bdf4c3b002936d8f5761bcb189929c35fe0b32c2f793796a975366e2c1245dd34c1818e4f44f483932fdfa3fde4f3e9 + languageName: node + linkType: hard + +"@solana/options@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/options@npm:2.3.0" + dependencies: + "@solana/codecs-core": "npm:2.3.0" + "@solana/codecs-data-structures": "npm:2.3.0" + "@solana/codecs-numbers": "npm:2.3.0" + "@solana/codecs-strings": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/7c2c84ffff4f9ad930d462b662443f97cf1504e33c0454b34887f8ae3f7421a7f758efa2eb8d886dfd7504858bd3092bd51d1ad9fd62b71a14b83e95a3cf20b4 + languageName: node + linkType: hard + +"@solana/programs@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/programs@npm:2.3.0" + dependencies: + "@solana/addresses": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/52c82c16c4df96611879b3d973f53badec03925774fbe1a639244dc630308fbe6702027e8a56d868101c92d3abab6a4aa40c843b96b8b185c1a02bef5e34a340 + languageName: node + linkType: hard + +"@solana/promises@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/promises@npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/77614ef727db1f6244bec53e2bbc8fa26e2fb8effe7075e4fd9a136e415c800a2439bd0833728aa8748015d84f1d8e1194f96765076190367e03ee0a9d854cb2 + languageName: node + linkType: hard + +"@solana/rpc-api@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/rpc-api@npm:2.3.0" + dependencies: + "@solana/addresses": "npm:2.3.0" + "@solana/codecs-core": "npm:2.3.0" + "@solana/codecs-strings": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + "@solana/keys": "npm:2.3.0" + "@solana/rpc-parsed-types": "npm:2.3.0" + "@solana/rpc-spec": "npm:2.3.0" + "@solana/rpc-transformers": "npm:2.3.0" + "@solana/rpc-types": "npm:2.3.0" + "@solana/transaction-messages": "npm:2.3.0" + "@solana/transactions": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/3c63e7485fc4b709dbdb06c00085d94203afab7ecc2033189549f1eeae612126e6054763c0b558191d3c3aa7ad1b9bb40c4786e2857ecd453b9b529cc041642c + languageName: node + linkType: hard + +"@solana/rpc-parsed-types@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/rpc-parsed-types@npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/8c9610dee5efa74ad37f66d85ede338103ac0ba0b14bdbd852c45561ed6a8ab6af6ab4259ce86bb67e35a50365545366e22b0b8a97689d2d3e2b2dcf5865779d + languageName: node + linkType: hard + +"@solana/rpc-spec-types@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/rpc-spec-types@npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/dc7289c5afe709f3642db7d633255662424c905c92ae0488305345a35f0772e318b82d000a4109512971045090fccbc7fb161069d87dee83848b73c48a8cc075 + languageName: node + linkType: hard + +"@solana/rpc-spec@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/rpc-spec@npm:2.3.0" + dependencies: + "@solana/errors": "npm:2.3.0" + "@solana/rpc-spec-types": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/24d23b1ae985092571cc4ae22ab9caa90619880ccb386315daeaba44ba5d1803c7f8b7f794585895adbeae1e8c6672d3e86aa4f7eeda5e2c5b290da11e2c5063 + languageName: node + linkType: hard + +"@solana/rpc-subscriptions-api@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/rpc-subscriptions-api@npm:2.3.0" + dependencies: + "@solana/addresses": "npm:2.3.0" + "@solana/keys": "npm:2.3.0" + "@solana/rpc-subscriptions-spec": "npm:2.3.0" + "@solana/rpc-transformers": "npm:2.3.0" + "@solana/rpc-types": "npm:2.3.0" + "@solana/transaction-messages": "npm:2.3.0" + "@solana/transactions": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/4dd2e2b7b1ce6b3163aaf6daa5ead6fd2d926246783fa403da291d08b0f8e0f0df58d8abe93f8a21e55486a593993a7c19a5ab0f04c85b310f983dbf4b846703 + languageName: node + linkType: hard + +"@solana/rpc-subscriptions-channel-websocket@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/rpc-subscriptions-channel-websocket@npm:2.3.0" + dependencies: + "@solana/errors": "npm:2.3.0" + "@solana/functional": "npm:2.3.0" + "@solana/rpc-subscriptions-spec": "npm:2.3.0" + "@solana/subscribable": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + ws: ^8.18.0 + checksum: 10c0/1835a15deeb2fbad7dcb26dd4ff53f109a0c92ca4920ee8356db3a1e6ea0e1f3e8cc1cc4e79d6e472597bfd63da26014693bf002e3091d2178d42a92d531e9c9 + languageName: node + linkType: hard + +"@solana/rpc-subscriptions-spec@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/rpc-subscriptions-spec@npm:2.3.0" + dependencies: + "@solana/errors": "npm:2.3.0" + "@solana/promises": "npm:2.3.0" + "@solana/rpc-spec-types": "npm:2.3.0" + "@solana/subscribable": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/110ab0e06d13d5e70a3e5f39d924556b10aeeedfba1e8050ccb8019e722709f6b7d0189e999be7c772202d2ba7aa7adc53fe2719d684bf133cf9136a551ecce3 + languageName: node + linkType: hard + +"@solana/rpc-subscriptions@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/rpc-subscriptions@npm:2.3.0" + dependencies: + "@solana/errors": "npm:2.3.0" + "@solana/fast-stable-stringify": "npm:2.3.0" + "@solana/functional": "npm:2.3.0" + "@solana/promises": "npm:2.3.0" + "@solana/rpc-spec-types": "npm:2.3.0" + "@solana/rpc-subscriptions-api": "npm:2.3.0" + "@solana/rpc-subscriptions-channel-websocket": "npm:2.3.0" + "@solana/rpc-subscriptions-spec": "npm:2.3.0" + "@solana/rpc-transformers": "npm:2.3.0" + "@solana/rpc-types": "npm:2.3.0" + "@solana/subscribable": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/9df9f5a01b2a5bd235434c68c849c01992e70a462fc15b55ff286a6ddc5972fe38e6406d1f1f0d417f4492e271518ae61da5e5d726432e8beaa886aa3f3cab75 + languageName: node + linkType: hard + +"@solana/rpc-transformers@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/rpc-transformers@npm:2.3.0" + dependencies: + "@solana/errors": "npm:2.3.0" + "@solana/functional": "npm:2.3.0" + "@solana/nominal-types": "npm:2.3.0" + "@solana/rpc-spec-types": "npm:2.3.0" + "@solana/rpc-types": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/a1c75d6e5329592e820f6f32e4e6123a53117511ff3d910b864c7c3b68b6a29dbbdbe5f3b3e8b403a4b6a90c74788abce6944d3fd755dc7e04664be27375496f + languageName: node + linkType: hard + +"@solana/rpc-transport-http@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/rpc-transport-http@npm:2.3.0" + dependencies: + "@solana/errors": "npm:2.3.0" + "@solana/rpc-spec": "npm:2.3.0" + "@solana/rpc-spec-types": "npm:2.3.0" + undici-types: "npm:^7.11.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/31b959ead288ee60cbab336fdee2b7e77642f5c0b69b3aa537567674fca9bb7f74dfb97608a1740092e90148d8512f969b2c4b11ef6b50368eb5305a55cee27b + languageName: node + linkType: hard + +"@solana/rpc-types@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/rpc-types@npm:2.3.0" + dependencies: + "@solana/addresses": "npm:2.3.0" + "@solana/codecs-core": "npm:2.3.0" + "@solana/codecs-numbers": "npm:2.3.0" + "@solana/codecs-strings": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + "@solana/nominal-types": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/1edee0762deba613e16ece79e5f0132f4bdd534d51308e26a37f31c397146a1b004e2b340011bb7d2151e04c7bb6cd69fbe17b9c64c16e36ea4894e17f87fdc4 + languageName: node + linkType: hard + +"@solana/rpc@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/rpc@npm:2.3.0" + dependencies: + "@solana/errors": "npm:2.3.0" + "@solana/fast-stable-stringify": "npm:2.3.0" + "@solana/functional": "npm:2.3.0" + "@solana/rpc-api": "npm:2.3.0" + "@solana/rpc-spec": "npm:2.3.0" + "@solana/rpc-spec-types": "npm:2.3.0" + "@solana/rpc-transformers": "npm:2.3.0" + "@solana/rpc-transport-http": "npm:2.3.0" + "@solana/rpc-types": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/2409b4f29cc21392ff474fabf4efaf3bf15f8171149bee2a3da6dffe38ad6c11736b6718b3efb9020fbe33c3d0bdda027472bbd8386891f628767794a6f39d88 + languageName: node + linkType: hard + +"@solana/signers@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/signers@npm:2.3.0" + dependencies: + "@solana/addresses": "npm:2.3.0" + "@solana/codecs-core": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + "@solana/instructions": "npm:2.3.0" + "@solana/keys": "npm:2.3.0" + "@solana/nominal-types": "npm:2.3.0" + "@solana/transaction-messages": "npm:2.3.0" + "@solana/transactions": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/073c8df2cfc85c35d593f4f6fafa6f31a3f7f5856fa491362473e24c4cd6942662cd86c86f4d3d184ecf5956904afa1b6fcb16e2d44ee1b56b515f1ed90317d7 + languageName: node + linkType: hard + +"@solana/spl-token-group@npm:^0.0.7": + version: 0.0.7 + resolution: "@solana/spl-token-group@npm:0.0.7" + dependencies: + "@solana/codecs": "npm:2.0.0-rc.1" + peerDependencies: + "@solana/web3.js": ^1.95.3 + checksum: 10c0/e1ebeb30c4dd3c179ee9d4bf02635c0ca3daea18526a25c824eb4db8882db768563f20813ac600a41fe153892ce66c0c7538e2639f530945940477edddfa731f + languageName: node + linkType: hard + +"@solana/spl-token-metadata@npm:^0.1.2, @solana/spl-token-metadata@npm:^0.1.6": + version: 0.1.6 + resolution: "@solana/spl-token-metadata@npm:0.1.6" + dependencies: + "@solana/codecs": "npm:2.0.0-rc.1" + peerDependencies: + "@solana/web3.js": ^1.95.3 + checksum: 10c0/a2ea535ac28cf9b8f499c2e2aced7ce9134b0728a0c1d4c8f2dfce8fe01ae66d94ccaca8f1f677c9613d3dbc913845c29df785efeafc25d9398e830fba4a626f + languageName: node + linkType: hard + +"@solana/spl-token@npm:0.4.13": + version: 0.4.13 + resolution: "@solana/spl-token@npm:0.4.13" + dependencies: + "@solana/buffer-layout": "npm:^4.0.0" + "@solana/buffer-layout-utils": "npm:^0.2.0" + "@solana/spl-token-group": "npm:^0.0.7" + "@solana/spl-token-metadata": "npm:^0.1.6" + buffer: "npm:^6.0.3" + peerDependencies: + "@solana/web3.js": ^1.95.5 + checksum: 10c0/001c3c347e66fe20a1a631679d81bad26d9cf174f21fe8817a571524626d755347e48696917c49f9a457c7227f82ec1bda4aa5d1d252f912e764a3dce5d89e4b + languageName: node + linkType: hard + +"@solana/spl-token@npm:^0.1.6": + version: 0.1.8 + resolution: "@solana/spl-token@npm:0.1.8" + dependencies: + "@babel/runtime": "npm:^7.10.5" + "@solana/web3.js": "npm:^1.21.0" + bn.js: "npm:^5.1.0" + buffer: "npm:6.0.3" + buffer-layout: "npm:^1.2.0" + dotenv: "npm:10.0.0" + checksum: 10c0/adae2cc9bb24054be183faa2bc95de70c00b34f048dc60b51ea20ece53712365233cff1710d9f78e017bb013121c29be26780c4a3672dff7582227cffff1301f + languageName: node + linkType: hard + +"@solana/spl-token@npm:^0.3.7": + version: 0.3.11 + resolution: "@solana/spl-token@npm:0.3.11" + dependencies: + "@solana/buffer-layout": "npm:^4.0.0" + "@solana/buffer-layout-utils": "npm:^0.2.0" + "@solana/spl-token-metadata": "npm:^0.1.2" + buffer: "npm:^6.0.3" + peerDependencies: + "@solana/web3.js": ^1.88.0 + checksum: 10c0/eae23e1ced21c8cc117a43d4c6e1b1f0f9aa412619e22f7fed96e15a833e350dddd6ec1b1498f5274a9542d8b0fdbd9ce93a5b79ed77863f7170951aeacb18fe + languageName: node + linkType: hard + +"@solana/spl-token@npm:^0.4.0": + version: 0.4.14 + resolution: "@solana/spl-token@npm:0.4.14" + dependencies: + "@solana/buffer-layout": "npm:^4.0.0" + "@solana/buffer-layout-utils": "npm:^0.2.0" + "@solana/spl-token-group": "npm:^0.0.7" + "@solana/spl-token-metadata": "npm:^0.1.6" + buffer: "npm:^6.0.3" + peerDependencies: + "@solana/web3.js": ^1.95.5 + checksum: 10c0/aaa0b03859c45a8e917e14a8d0703de13ca16cfab31b72685ef148dcd2dc9a6fd37ac8842b1ca9609aea8407d51bf98e69bc7a4f9e2dc86f440b5bd8c0c70bfe + languageName: node + linkType: hard + +"@solana/subscribable@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/subscribable@npm:2.3.0" + dependencies: + "@solana/errors": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/ecfc64a4ea91bd9b9d7266a794d7e49851684e10ebd70ed2fb63a53451ebcc463dbf83465585b65c156dc362329277fe7288795896629ae6deb0e6af0f041215 + languageName: node + linkType: hard + +"@solana/sysvars@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/sysvars@npm:2.3.0" + dependencies: + "@solana/accounts": "npm:2.3.0" + "@solana/codecs": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + "@solana/rpc-types": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/e5d3896a401873b6e6d7637ab0064b9cd53ed7822ee7ce6e51dcdb4871c91c7fa353a7f67d4ae4f8d7d0f0cb52642cf5f691571e4ee65eda6b4463072373813b + languageName: node + linkType: hard + +"@solana/transaction-confirmation@npm:2.3.0, @solana/transaction-confirmation@npm:^2.1.1": + version: 2.3.0 + resolution: "@solana/transaction-confirmation@npm:2.3.0" + dependencies: + "@solana/addresses": "npm:2.3.0" + "@solana/codecs-strings": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + "@solana/keys": "npm:2.3.0" + "@solana/promises": "npm:2.3.0" + "@solana/rpc": "npm:2.3.0" + "@solana/rpc-subscriptions": "npm:2.3.0" + "@solana/rpc-types": "npm:2.3.0" + "@solana/transaction-messages": "npm:2.3.0" + "@solana/transactions": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/063d8eadba27995c5324829f0785234356bb7ed3d31ddb10c1751235f4e67b25c72535cf8cbb581d1a14bc16564d3062e570a9ef07a51be72c26af7cab64df47 + languageName: node + linkType: hard + +"@solana/transaction-messages@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/transaction-messages@npm:2.3.0" + dependencies: + "@solana/addresses": "npm:2.3.0" + "@solana/codecs-core": "npm:2.3.0" + "@solana/codecs-data-structures": "npm:2.3.0" + "@solana/codecs-numbers": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + "@solana/functional": "npm:2.3.0" + "@solana/instructions": "npm:2.3.0" + "@solana/nominal-types": "npm:2.3.0" + "@solana/rpc-types": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/7aa6ac6808c0b34b1c60efadb0f02db1db4faed29753bf3ea42c5858988e7aedac6bca773a3bb10d0c0e58b98a1409c290e892e7c532b4838f973fa99cb49847 + languageName: node + linkType: hard + +"@solana/transactions@npm:2.3.0": + version: 2.3.0 + resolution: "@solana/transactions@npm:2.3.0" + dependencies: + "@solana/addresses": "npm:2.3.0" + "@solana/codecs-core": "npm:2.3.0" + "@solana/codecs-data-structures": "npm:2.3.0" + "@solana/codecs-numbers": "npm:2.3.0" + "@solana/codecs-strings": "npm:2.3.0" + "@solana/errors": "npm:2.3.0" + "@solana/functional": "npm:2.3.0" + "@solana/instructions": "npm:2.3.0" + "@solana/keys": "npm:2.3.0" + "@solana/nominal-types": "npm:2.3.0" + "@solana/rpc-types": "npm:2.3.0" + "@solana/transaction-messages": "npm:2.3.0" + peerDependencies: + typescript: ">=5.3.3" + checksum: 10c0/e033a1556aa3bc9a6473e0f258a36882cb008d220041a665268a42315114e2beb62265818b517d9d7e418b8476e96d9234591827585ee311983a2f88615757ab + languageName: node + linkType: hard + +"@solana/web3.js@npm:1.98.0": + version: 1.98.0 + resolution: "@solana/web3.js@npm:1.98.0" + dependencies: + "@babel/runtime": "npm:^7.25.0" + "@noble/curves": "npm:^1.4.2" + "@noble/hashes": "npm:^1.4.0" + "@solana/buffer-layout": "npm:^4.0.1" + agentkeepalive: "npm:^4.5.0" + bigint-buffer: "npm:^1.1.5" + bn.js: "npm:^5.2.1" + borsh: "npm:^0.7.0" + bs58: "npm:^4.0.1" + buffer: "npm:6.0.3" + fast-stable-stringify: "npm:^1.0.0" + jayson: "npm:^4.1.1" + node-fetch: "npm:^2.7.0" + rpc-websockets: "npm:^9.0.2" + superstruct: "npm:^2.0.2" + checksum: 10c0/b95b130c347d5499866887b405094b8c9f551b69b6e21bb4fef7f381972f36b22d0c281ce6c2595dc146ec97527ebc524c96e8867dad7e7cd89181e30baf64b7 + languageName: node + linkType: hard + +"@swc/helpers@npm:^0.5.11": + version: 0.5.18 + resolution: "@swc/helpers@npm:0.5.18" + dependencies: + tslib: "npm:^2.8.0" + checksum: 10c0/cb32d72e32f775c30287bffbcf61c89ea3a963608cb3a4a675a3f9af545b8b3ab0bc9930432a5520a7307daaa87538158e253584ae1cf39f3e7e6e83408a2d51 + languageName: node + linkType: hard + +"@switchboard-xyz/common@npm:3.0.14": + version: 3.0.14 + resolution: "@switchboard-xyz/common@npm:3.0.14" + dependencies: + "@solana/web3.js": "npm:^1.98.0" + axios: "npm:^1.8.3" + big.js: "npm:^6.2.2" + bn.js: "npm:^5.2.1" + bs58: "npm:^6.0.0" + buffer: "npm:^6.0.3" + decimal.js: "npm:^10.4.3" + js-sha256: "npm:^0.11.0" + protobufjs: "npm:^7.4.0" + yaml: "npm:^2.6.1" + checksum: 10c0/8e7af32e661ab9b6b32c26bc9918c26f9ce37375d2e1df079e441d03c71a2fa3c5ac9cf878f1c29b001a1e9f43ab334a68923e67f1a7bb78caf4dc457268e519 + languageName: node + linkType: hard + +"@switchboard-xyz/common@npm:>=3.0.0": + version: 5.6.1 + resolution: "@switchboard-xyz/common@npm:5.6.1" + dependencies: + "@solana/web3.js": "npm:^1.98.2" + axios: "npm:^1.9.0" + big.js: "npm:^6.2.2" + bn.js: "npm:^5.2.1" + bs58: "npm:^6.0.0" + buffer: "npm:^6.0.3" + decimal.js: "npm:^10.4.3" + js-sha256: "npm:^0.11.0" + protobufjs: "npm:^7.4.0" + checksum: 10c0/d038841a1b0c8d730734a7854781bf71eb273f62149e0d7a95685320d09e1ce88aefe42380799baf3079b782e6371fd927cc587e08db746ac203596d227e43c5 + languageName: node + linkType: hard + +"@switchboard-xyz/on-demand@npm:2.4.1": + version: 2.4.1 + resolution: "@switchboard-xyz/on-demand@npm:2.4.1" + dependencies: + "@coral-xyz/anchor-30": "npm:@coral-xyz/anchor@0.30.1" + "@isaacs/ttlcache": "npm:^1.4.1" + "@switchboard-xyz/common": "npm:>=3.0.0" + axios: "npm:^1.8.3" + bs58: "npm:^6.0.0" + buffer: "npm:^6.0.3" + js-yaml: "npm:^4.1.0" + peerDependencies: + "@switchboard-xyz/common": ">=3.0.0" + checksum: 10c0/4d4c4ea1297a4fca80d57c40fe466ada0641eb4982ddfb04dfbdcab7212593e56b8ea6010f521cc6728265aa4165443d07762dd721d0bfcdb4bae6b928b6be5c + languageName: node + linkType: hard + +"@triton-one/yellowstone-grpc@npm:1.4.1": + version: 1.4.1 + resolution: "@triton-one/yellowstone-grpc@npm:1.4.1" + dependencies: + "@grpc/grpc-js": "npm:^1.8.0" + checksum: 10c0/584386be088161f45f1081097f56f7e943cab60a151268e7319d7f34b3b3b6734eff0df0ab0adda24b5004a4a79692e7b72f2d0e18b9ec6562eeaa2d4a1ed69e + languageName: node + linkType: hard + +"@ts-graphviz/adapter@npm:^2.0.6": + version: 2.0.6 + resolution: "@ts-graphviz/adapter@npm:2.0.6" + dependencies: + "@ts-graphviz/common": "npm:^2.1.5" + checksum: 10c0/43c9b6ee45b9ff73ef75a66f5556205c37b2d828d66cb7520c004c4422a8fd84784ef42ebb6a294689af32e25de1a826cf0889d51e43472b7e23dee5053a0706 + languageName: node + linkType: hard + +"@ts-graphviz/ast@npm:^2.0.7": + version: 2.0.7 + resolution: "@ts-graphviz/ast@npm:2.0.7" + dependencies: + "@ts-graphviz/common": "npm:^2.1.5" + checksum: 10c0/f6762ea9255bf97c9bbd9006eb34c79931ce3ed0225622356f3facd5b9c88c8e64ddd7df379ce7bbdfe10c8e0562192b4534760c28464173c0dd7a8c6c728d42 + languageName: node + linkType: hard + +"@ts-graphviz/common@npm:^2.1.5": + version: 2.1.5 + resolution: "@ts-graphviz/common@npm:2.1.5" + checksum: 10c0/921f32145cdfecab8f06f93b50cc0300f63f4c2e31a09d909983c509acdcfec03d2b50b97d40fc658ef6f40ecfddad1e1a6fa21bd7a612a4e9bcfbb9f9018b40 + languageName: node + linkType: hard + +"@ts-graphviz/core@npm:^2.0.7": + version: 2.0.7 + resolution: "@ts-graphviz/core@npm:2.0.7" + dependencies: + "@ts-graphviz/ast": "npm:^2.0.7" + "@ts-graphviz/common": "npm:^2.1.5" + checksum: 10c0/39dd723a4760d8ac4a5865c44003b7509b02a30505c52fa02aa7475f6ec235b1f4026e0c422717ace15b4bb8b9a8d634e8b3bbc7e064dd8fcaff9fc9cf8747d1 + languageName: node + linkType: hard + +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.12 + resolution: "@tsconfig/node10@npm:1.0.12" + checksum: 10c0/7bbbd7408cfaced86387a9b1b71cebc91c6fd701a120369735734da8eab1a4773fc079abd9f40c9e0b049e12586c8ac0e13f0da596bfd455b9b4c3faa813ebc5 + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb + languageName: node + linkType: hard + +"@types/big.js@npm:6.2.2": + version: 6.2.2 + resolution: "@types/big.js@npm:6.2.2" + checksum: 10c0/8f8472dfc1ef61c492e6841e86f8b9b97e5b024136bf7964e582a6a80ba73d4dbfd6cc23ed3b9d8fea69c7f30834fffd1c88e7fb981811f5c6ca608380b5ad67 + languageName: node + linkType: hard + +"@types/bn.js@npm:5.1.6": + version: 5.1.6 + resolution: "@types/bn.js@npm:5.1.6" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/073d383d87afea513a8183ce34af7bc0a7a798d057c7ae651982b7f30dd7d93f33247323bca3ba39f1f6af146b564aff547b15467bdf9fc922796c17e8426bf6 + languageName: node + linkType: hard + +"@types/bs58@npm:4.0.4": + version: 4.0.4 + resolution: "@types/bs58@npm:4.0.4" + dependencies: + "@types/node": "npm:*" + base-x: "npm:^3.0.6" + checksum: 10c0/002deb33788f4b36dbb476e71f5b5724b1d7774d92dd83cd7532ae11706bc80ffc2f001920dfeb06eb4bc33df6f7b7bb168892953c859ca9bb969ce96b8e22dc + languageName: node + linkType: hard + +"@types/chai@npm:4.3.20": + version: 4.3.20 + resolution: "@types/chai@npm:4.3.20" + checksum: 10c0/4601189d611752e65018f1ecadac82e94eed29f348e1d5430e5681a60b01e1ecf855d9bcc74ae43b07394751f184f6970fac2b5561fc57a1f36e93a0f5ffb6e8 + languageName: node + linkType: hard + +"@types/connect@npm:^3.4.33": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + +"@types/jest@npm:28.1.8": + version: 28.1.8 + resolution: "@types/jest@npm:28.1.8" + dependencies: + expect: "npm:^28.0.0" + pretty-format: "npm:^28.0.0" + checksum: 10c0/e69912b4285bd3a0545521425e76cdee669d89c4918b2126157c084bf496da1d0cf007366d47b99a9c7076e6567e16917b28c2790a19a6e72a80570c359e4de1 + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.12": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/mocha@npm:9.1.1": + version: 9.1.1 + resolution: "@types/mocha@npm:9.1.1" + checksum: 10c0/d033742ce0c92b917815b6e515165ee396866d0db0c0bbe0c301e49402abe3a61bd51e5bb1df7577f1fac60c99ee505fa744f515b476cc934ecb57f709f327e9 + languageName: node + linkType: hard + +"@types/node@npm:*, @types/node@npm:>=13.7.0": + version: 25.0.8 + resolution: "@types/node@npm:25.0.8" + dependencies: + undici-types: "npm:~7.16.0" + checksum: 10c0/2282464cd928ab184b2310b79899c76bfaa88c8d14640dfab2f9218fdee7e2d916056492de683aa3a26050c8f3bbcade0305616a55277a7c344926c0393149e0 + languageName: node + linkType: hard + +"@types/node@npm:^12.12.54": + version: 12.20.55 + resolution: "@types/node@npm:12.20.55" + checksum: 10c0/3b190bb0410047d489c49bbaab592d2e6630de6a50f00ba3d7d513d59401d279972a8f5a598b5bb8ddc1702f8a2f4ec57a65d93852f9c329639738e7053637d1 + languageName: node + linkType: hard + +"@types/node@npm:^18.11.13": + version: 18.19.130 + resolution: "@types/node@npm:18.19.130" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/22ba2bc9f8863101a7e90a56aaeba1eb3ebdc51e847cef4a6d188967ab1acbce9b4f92251372fd0329ecb924bbf610509e122c3dfe346c04dbad04013d4ad7d0 + languageName: node + linkType: hard + +"@types/protobufjs@npm:^6.0.0": + version: 6.0.0 + resolution: "@types/protobufjs@npm:6.0.0" + dependencies: + protobufjs: "npm:*" + checksum: 10c0/886574a95b6401559fe09fdc2a0c0f37d2802b6a711b7edbe4984bbc8bef6092dc905aa2682bde2e948a766026995bacf8cad5d61a78e91bb5f4fd8fc6592b86 + languageName: node + linkType: hard + +"@types/semver@npm:^7.5.0": + version: 7.7.1 + resolution: "@types/semver@npm:7.7.1" + checksum: 10c0/c938aef3bf79a73f0f3f6037c16e2e759ff40c54122ddf0b2583703393d8d3127130823facb880e694caa324eb6845628186aac1997ee8b31dc2d18fafe26268 + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + +"@types/uuid@npm:^8.3.4": + version: 8.3.4 + resolution: "@types/uuid@npm:8.3.4" + checksum: 10c0/b9ac98f82fcf35962317ef7dc44d9ac9e0f6fdb68121d384c88fe12ea318487d5585d3480fa003cf28be86a3bbe213ca688ba786601dce4a97724765eb5b1cf2 + languageName: node + linkType: hard + +"@types/ws@npm:^7.4.4": + version: 7.4.7 + resolution: "@types/ws@npm:7.4.7" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/f1f53febd8623a85cef2652949acd19d83967e350ea15a851593e3033501750a1e04f418552e487db90a3d48611a1cff3ffcf139b94190c10f2fd1e1dc95ff10 + languageName: node + linkType: hard + +"@types/ws@npm:^8.2.2": + version: 8.18.1 + resolution: "@types/ws@npm:8.18.1" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/61aff1129143fcc4312f083bc9e9e168aa3026b7dd6e70796276dcfb2c8211c4292603f9c4864fae702f2ed86e4abd4d38aa421831c2fd7f856c931a481afbab + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.35 + resolution: "@types/yargs@npm:17.0.35" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/609557826a6b85e73ccf587923f6429850d6dc70e420b455bab4601b670bfadf684b09ae288bccedab042c48ba65f1666133cf375814204b544009f57d6eef63 + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.5.1" + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/type-utils": "npm:6.21.0" + "@typescript-eslint/utils": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.4" + natural-compare: "npm:^1.4.0" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependencies: + "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/f911a79ee64d642f814a3b6cdb0d324b5f45d9ef955c5033e78903f626b7239b4aa773e464a38c3e667519066169d983538f2bf8e5d00228af587c9d438fb344 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/parser@npm:6.21.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/typescript-estree": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/a8f99820679decd0d115c0af61903fb1de3b1b5bec412dc72b67670bf636de77ab07f2a68ee65d6da7976039bbf636907f9d5ca546db3f0b98a31ffbc225bc7d + languageName: node + linkType: hard + +"@typescript-eslint/project-service@npm:8.53.0": + version: 8.53.0 + resolution: "@typescript-eslint/project-service@npm:8.53.0" + dependencies: + "@typescript-eslint/tsconfig-utils": "npm:^8.53.0" + "@typescript-eslint/types": "npm:^8.53.0" + debug: "npm:^4.4.3" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/b01302890cf853e9bb1d2b19e402ec0ede1388fec833528847d32d65d0e3e03867a14632f816f4f3058e40707b001fab208bf2950ff1e8d7cbbc6c1d57b969d4 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/scope-manager@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + checksum: 10c0/eaf868938d811cbbea33e97e44ba7050d2b6892202cea6a9622c486b85ab1cf801979edf78036179a8ba4ac26f1dfdf7fcc83a68c1ff66be0b3a8e9a9989b526 + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:8.53.0, @typescript-eslint/tsconfig-utils@npm:^8.53.0": + version: 8.53.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.53.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/1a136519d4e0c4ae9471f55468ad0a52175b8b41da28188bd7e4efcf72c2c8528aeb3a1b1c9d27f2d94ab0c8d9a91e08ebc1fed5fc8628c9808112427f306428 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/type-utils@npm:6.21.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:6.21.0" + "@typescript-eslint/utils": "npm:6.21.0" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^1.0.1" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/7409c97d1c4a4386b488962739c4f1b5b04dc60cf51f8cd88e6b12541f84d84c6b8b67e491a147a2c95f9ec486539bf4519fb9d418411aef6537b9c156468117 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/types@npm:6.21.0" + checksum: 10c0/020631d3223bbcff8a0da3efbdf058220a8f48a3de221563996ad1dcc30d6c08dadc3f7608cc08830d21c0d565efd2db19b557b9528921c78aabb605eef2d74d + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:8.53.0, @typescript-eslint/types@npm:^8.53.0": + version: 8.53.0 + resolution: "@typescript-eslint/types@npm:8.53.0" + checksum: 10c0/a88681795becbe857f9868427c0d75c2ab2fb1acde14907b8791709b6d7835400bf9a0b41f22e97a13f1274e0082f5675692b815e30268e6eada492913100306 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + minimatch: "npm:9.0.3" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/af1438c60f080045ebb330155a8c9bb90db345d5069cdd5d01b67de502abb7449d6c75500519df829f913a6b3f490ade3e8215279b6bdc63d0fb0ae61034df5f + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:^8.23.0": + version: 8.53.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.53.0" + dependencies: + "@typescript-eslint/project-service": "npm:8.53.0" + "@typescript-eslint/tsconfig-utils": "npm:8.53.0" + "@typescript-eslint/types": "npm:8.53.0" + "@typescript-eslint/visitor-keys": "npm:8.53.0" + debug: "npm:^4.4.3" + minimatch: "npm:^9.0.5" + semver: "npm:^7.7.3" + tinyglobby: "npm:^0.2.15" + ts-api-utils: "npm:^2.4.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/31819fba9fbef3e3ab494409b18ff40042cc3e7a4ba72fe06475062b7e196aaf9752e526a1c51abf3002627833b387279f00fdfa66886b05c028e129a57b550a + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/utils@npm:6.21.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@types/json-schema": "npm:^7.0.12" + "@types/semver": "npm:^7.5.0" + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/typescript-estree": "npm:6.21.0" + semver: "npm:^7.5.4" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: 10c0/ab2df3833b2582d4e5467a484d08942b4f2f7208f8e09d67de510008eb8001a9b7460f2f9ba11c12086fd3cdcac0c626761c7995c2c6b5657d5fa6b82030a32d + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/7395f69739cfa1cb83c1fb2fad30afa2a814756367302fb4facd5893eff66abc807e8d8f63eba94ed3b0fe0c1c996ac9a1680bcbf0f83717acedc3f2bb724fbf + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:8.53.0": + version: 8.53.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.53.0" + dependencies: + "@typescript-eslint/types": "npm:8.53.0" + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/be2062073c9fd28762f73d442e8536f16e1eab0935df463ed45bd95575b4b79b4a4ca1f45c04b1964dc424b8d25c6489253e3ea2236bb74cff9b7e02e1e7f5be + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.2.0": + version: 1.3.0 + resolution: "@ungap/structured-clone@npm:1.3.0" + checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a + languageName: node + linkType: hard + +"@vue/compiler-core@npm:3.5.26": + version: 3.5.26 + resolution: "@vue/compiler-core@npm:3.5.26" + dependencies: + "@babel/parser": "npm:^7.28.5" + "@vue/shared": "npm:3.5.26" + entities: "npm:^7.0.0" + estree-walker: "npm:^2.0.2" + source-map-js: "npm:^1.2.1" + checksum: 10c0/7f777efb4157e81263672c3b62ade61831295ce9fbf29cd5ce25bf1a8f352171edaac622580297ad667acbc5aa403d48aa65f4bf6b1dbfd862844f12fb9a13cf + languageName: node + linkType: hard + +"@vue/compiler-dom@npm:3.5.26": + version: 3.5.26 + resolution: "@vue/compiler-dom@npm:3.5.26" + dependencies: + "@vue/compiler-core": "npm:3.5.26" + "@vue/shared": "npm:3.5.26" + checksum: 10c0/39fe35374276467c63e299c1bd72558a65f534fe2a69404699bf3d5c0b4c39b459af6500f4d79b3b38cb0067760940ded5b4c29f021eccfec564eee36206b709 + languageName: node + linkType: hard + +"@vue/compiler-sfc@npm:^3.5.13": + version: 3.5.26 + resolution: "@vue/compiler-sfc@npm:3.5.26" + dependencies: + "@babel/parser": "npm:^7.28.5" + "@vue/compiler-core": "npm:3.5.26" + "@vue/compiler-dom": "npm:3.5.26" + "@vue/compiler-ssr": "npm:3.5.26" + "@vue/shared": "npm:3.5.26" + estree-walker: "npm:^2.0.2" + magic-string: "npm:^0.30.21" + postcss: "npm:^8.5.6" + source-map-js: "npm:^1.2.1" + checksum: 10c0/0d9fe747bc4ddbc69ad06de316e5ec4ba8aa374ea824f71c2c7d3659f08a88e2102e152e89196f131903b41b4c5731c2d05ee5f889afdca6596128fa0eedb913 + languageName: node + linkType: hard + +"@vue/compiler-ssr@npm:3.5.26": + version: 3.5.26 + resolution: "@vue/compiler-ssr@npm:3.5.26" + dependencies: + "@vue/compiler-dom": "npm:3.5.26" + "@vue/shared": "npm:3.5.26" + checksum: 10c0/bcaece46af4c44be887cf3b944a40592bcaa928b9238151eaaba38cbe80cb667c4cc8c3a07e49d1f8b52c171345b484114b70e80bad5e75c0e3baccfc3e84870 + languageName: node + linkType: hard + +"@vue/shared@npm:3.5.26": + version: 3.5.26 + resolution: "@vue/shared@npm:3.5.26" + checksum: 10c0/176edf41858cdd3019fc063fda28a0a6f5c5299a350e09aebb19fbe352d5ca4f7fc18993bf749f07d06baa803030d31a9b8538eef852feb1ce5b3b5a99d5ef3c + languageName: node + linkType: hard + +"abbrev@npm:^4.0.0": + version: 4.0.0 + resolution: "abbrev@npm:4.0.0" + checksum: 10c0/b4cc16935235e80702fc90192e349e32f8ef0ed151ef506aa78c81a7c455ec18375c4125414b99f84b2e055199d66383e787675f0bcd87da7a4dbd59f9eac1d5 + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.1.1": + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 + languageName: node + linkType: hard + +"acorn@npm:^8.11.0, acorn@npm:^8.4.1, acorn@npm:^8.9.0": + version: 8.15.0 + resolution: "acorn@npm:8.15.0" + bin: + acorn: bin/acorn + checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec + languageName: node + linkType: hard + +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.4 + resolution: "agent-base@npm:7.1.4" + checksum: 10c0/c2c9ab7599692d594b6a161559ada307b7a624fa4c7b03e3afdb5a5e31cd0e53269115b620fcab024c5ac6a6f37fa5eb2e004f076ad30f5f7e6b8b671f7b35fe + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.5.0": + version: 4.6.0 + resolution: "agentkeepalive@npm:4.6.0" + dependencies: + humanize-ms: "npm:^1.2.1" + checksum: 10c0/235c182432f75046835b05f239708107138a40103deee23b6a08caee5136873709155753b394ec212e49e60e94a378189562cb01347765515cff61b692c69187 + languageName: node + linkType: hard + +"ajv@npm:^6.12.4": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + +"anchor-bankrun@npm:0.3.0": + version: 0.3.0 + resolution: "anchor-bankrun@npm:0.3.0" + peerDependencies: + "@coral-xyz/anchor": ^0.28.0 + "@solana/web3.js": ^1.78.4 + solana-bankrun: ^0.2.0 + checksum: 10c0/7210d0b6fa9ce0ba8355532246874ab6322ec13ab1c67b067f685ec9750230290607f990ebe5629c919dea7c2ed61a9e563a5f5ab56f066ae99a0018a130553f + languageName: node + linkType: hard + +"ansi-colors@npm:^4.1.3": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 + languageName: node + linkType: hard + +"ansi-regex@npm:5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-styles@npm:4.3.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansicolors@npm:^0.3.2, ansicolors@npm:~0.3.2": + version: 0.3.2 + resolution: "ansicolors@npm:0.3.2" + checksum: 10c0/e202182895e959c5357db6c60791b2abaade99fcc02221da11a581b26a7f83dc084392bc74e4d3875c22f37b3c9ef48842e896e3bfed394ec278194b8003e0ac + languageName: node + linkType: hard + +"any-promise@npm:^1.1.0": + version: 1.3.0 + resolution: "any-promise@npm:1.3.0" + checksum: 10c0/60f0298ed34c74fef50daab88e8dab786036ed5a7fad02e012ab57e376e0a0b4b29e83b95ea9b5e7d89df762f5f25119b83e00706ecaccb22cfbacee98d74889 + languageName: node + linkType: hard + +"anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + +"app-module-path@npm:^2.2.0": + version: 2.2.0 + resolution: "app-module-path@npm:2.2.0" + checksum: 10c0/0d6d581dcee268271af1e611934b4fed715de55c382b2610de67ba6f87d01503fc0426cff687f06210e54cd57545f7a6172e1dd192914a3709ad89c06a4c3a0b + languageName: node + linkType: hard + +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + +"asn1.js@npm:^4.10.1": + version: 4.10.1 + resolution: "asn1.js@npm:4.10.1" + dependencies: + bn.js: "npm:^4.0.0" + inherits: "npm:^2.0.1" + minimalistic-assert: "npm:^1.0.0" + checksum: 10c0/afa7f3ab9e31566c80175a75b182e5dba50589dcc738aa485be42bdd787e2a07246a4b034d481861123cbe646a7656f318f4f1cad2e9e5e808a210d5d6feaa88 + languageName: node + linkType: hard + +"assert@npm:^2.0.0, assert@npm:^2.1.0": + version: 2.1.0 + resolution: "assert@npm:2.1.0" + dependencies: + call-bind: "npm:^1.0.2" + is-nan: "npm:^1.3.2" + object-is: "npm:^1.1.5" + object.assign: "npm:^4.1.4" + util: "npm:^0.12.5" + checksum: 10c0/7271a5da883c256a1fa690677bf1dd9d6aa882139f2bed1cd15da4f9e7459683e1da8e32a203d6cc6767e5e0f730c77a9532a87b896b4b0af0dd535f668775f0 + languageName: node + linkType: hard + +"assertion-error@npm:^1.1.0": + version: 1.1.0 + resolution: "assertion-error@npm:1.1.0" + checksum: 10c0/25456b2aa333250f01143968e02e4884a34588a8538fbbf65c91a637f1dbfb8069249133cd2f4e530f10f624d206a664e7df30207830b659e9f5298b00a4099b + languageName: node + linkType: hard + +"ast-module-types@npm:^6.0.1": + version: 6.0.1 + resolution: "ast-module-types@npm:6.0.1" + checksum: 10c0/b835a3518accd480c8102fe18cc782bf8f38c7844764e8c27c6494203688c788d6fc90f27dd3b7b3941ff3f2cc1a9269cd7471df55bd467f86af56093808d5a8 + languageName: node + linkType: hard + +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 + languageName: node + linkType: hard + +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + +"axios@npm:^1.8.3, axios@npm:^1.9.0": + version: 1.13.2 + resolution: "axios@npm:1.13.2" + dependencies: + follow-redirects: "npm:^1.15.6" + form-data: "npm:^4.0.4" + proxy-from-env: "npm:^1.1.0" + checksum: 10c0/e8a42e37e5568ae9c7a28c348db0e8cf3e43d06fcbef73f0048669edfe4f71219664da7b6cc991b0c0f01c28a48f037c515263cb79be1f1ae8ff034cd813867b + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"base-x@npm:^3.0.2, base-x@npm:^3.0.6": + version: 3.0.11 + resolution: "base-x@npm:3.0.11" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/4c5b8cd9cef285973b0460934be4fc890eedfd22a8aca527fac3527f041c5d1c912f7b9a6816f19e43e69dc7c29a5deabfa326bd3d6a57ee46af0ad46e3991d5 + languageName: node + linkType: hard + +"base-x@npm:^4.0.0": + version: 4.0.1 + resolution: "base-x@npm:4.0.1" + checksum: 10c0/26a5a24105b27d94f21fa0640d5345620d758ab5d9269cf11828c502094d4f2fc5e84f3bfee63e9af29e83e0d3c97129264f1ac9653620b9bdab3f81d6aca881 + languageName: node + linkType: hard + +"base-x@npm:^5.0.0": + version: 5.0.1 + resolution: "base-x@npm:5.0.1" + checksum: 10c0/4ab6b02262b4fd499b147656f63ce7328bd5f895450401ce58a2f9e87828aea507cf0c320a6d8725389f86e8a48397562661c0bca28ef3276a22821b30f7a713 + languageName: node + linkType: hard + +"base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf + languageName: node + linkType: hard + +"big.js@npm:^6.2.1, big.js@npm:^6.2.2": + version: 6.2.2 + resolution: "big.js@npm:6.2.2" + checksum: 10c0/58d204f6a1a92508dc2eb98d964e2cc6dabb37a3d9fc8a1f0b77a34dead7c11e17b173d9a6df2d5a7a0f78d5c80853a9ce6df29852da59ab10b088e981195165 + languageName: node + linkType: hard + +"bigint-buffer@npm:^1.1.5": + version: 1.1.5 + resolution: "bigint-buffer@npm:1.1.5" + dependencies: + bindings: "npm:^1.3.0" + node-gyp: "npm:latest" + checksum: 10c0/aa41e53d38242a2f05f85b08eaf592635f92e5328822784cda518232b1644efdbf29ab3664951b174cc645848add4605488e25c9439bcc749660c885b4ff6118 + languageName: node + linkType: hard + +"bignumber.js@npm:^9.0.1": + version: 9.3.1 + resolution: "bignumber.js@npm:9.3.1" + checksum: 10c0/61342ba5fe1c10887f0ecf5be02ff6709271481aff48631f86b4d37d55a99b87ce441cfd54df3d16d10ee07ceab7e272fc0be430c657ffafbbbf7b7d631efb75 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + +"bindings@npm:^1.3.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: "npm:1.0.0" + checksum: 10c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba + languageName: node + linkType: hard + +"bl@npm:^4.1.0": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: "npm:^5.5.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f + languageName: node + linkType: hard + +"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": + version: 4.12.2 + resolution: "bn.js@npm:4.12.2" + checksum: 10c0/09a249faa416a9a1ce68b5f5ec8bbca87fe54e5dd4ef8b1cc8a4969147b80035592bddcb1e9cc814c3ba79e573503d5c5178664b722b509fb36d93620dba9b57 + languageName: node + linkType: hard + +"bn.js@npm:^5.1.0, bn.js@npm:^5.1.2, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1, bn.js@npm:^5.2.2": + version: 5.2.2 + resolution: "bn.js@npm:5.2.2" + checksum: 10c0/cb97827d476aab1a0194df33cd84624952480d92da46e6b4a19c32964aa01553a4a613502396712704da2ec8f831cf98d02e74ca03398404bd78a037ba93f2ab + languageName: node + linkType: hard + +"borsh@npm:^0.7.0": + version: 0.7.0 + resolution: "borsh@npm:0.7.0" + dependencies: + bn.js: "npm:^5.2.0" + bs58: "npm:^4.0.0" + text-encoding-utf-8: "npm:^1.0.2" + checksum: 10c0/513b3e51823d2bf5be77cec27742419d2b0427504825dd7ceb00dedb820f246a4762f04b83d5e3aa39c8e075b3cbaeb7ca3c90bd1cbeecccb4a510575be8c581 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.12 + resolution: "brace-expansion@npm:1.1.12" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.2 + resolution: "brace-expansion@npm:2.0.2" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/6d117a4c793488af86b83172deb6af143e94c17bc53b0b3cec259733923b4ca84679d506ac261f4ba3c7ed37c46018e2ff442f9ce453af8643ecd64f4a54e6cf + languageName: node + linkType: hard + +"braces@npm:^3.0.3, braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + +"brorand@npm:^1.0.1, brorand@npm:^1.1.0": + version: 1.1.0 + resolution: "brorand@npm:1.1.0" + checksum: 10c0/6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 + languageName: node + linkType: hard + +"browser-stdout@npm:^1.3.1": + version: 1.3.1 + resolution: "browser-stdout@npm:1.3.1" + checksum: 10c0/c40e482fd82be872b6ea7b9f7591beafbf6f5ba522fe3dade98ba1573a1c29a11101564993e4eb44e5488be8f44510af072df9a9637c739217eb155ceb639205 + languageName: node + linkType: hard + +"browserify-aes@npm:^1.0.4, browserify-aes@npm:^1.2.0": + version: 1.2.0 + resolution: "browserify-aes@npm:1.2.0" + dependencies: + buffer-xor: "npm:^1.0.3" + cipher-base: "npm:^1.0.0" + create-hash: "npm:^1.1.0" + evp_bytestokey: "npm:^1.0.3" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 + languageName: node + linkType: hard + +"browserify-cipher@npm:^1.0.1": + version: 1.0.1 + resolution: "browserify-cipher@npm:1.0.1" + dependencies: + browserify-aes: "npm:^1.0.4" + browserify-des: "npm:^1.0.0" + evp_bytestokey: "npm:^1.0.0" + checksum: 10c0/aa256dcb42bc53a67168bbc94ab85d243b0a3b56109dee3b51230b7d010d9b78985ffc1fb36e145c6e4db151f888076c1cfc207baf1525d3e375cbe8187fe27d + languageName: node + linkType: hard + +"browserify-des@npm:^1.0.0": + version: 1.0.2 + resolution: "browserify-des@npm:1.0.2" + dependencies: + cipher-base: "npm:^1.0.1" + des.js: "npm:^1.0.0" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/943eb5d4045eff80a6cde5be4e5fbb1f2d5002126b5a4789c3c1aae3cdddb1eb92b00fb92277f512288e5c6af330730b1dbabcf7ce0923e749e151fcee5a074d + languageName: node + linkType: hard + +"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.1": + version: 4.1.1 + resolution: "browserify-rsa@npm:4.1.1" + dependencies: + bn.js: "npm:^5.2.1" + randombytes: "npm:^2.1.0" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/b650ee1192e3d7f3d779edc06dd96ed8720362e72ac310c367b9d7fe35f7e8dbb983c1829142b2b3215458be8bf17c38adc7224920843024ed8cf39e19c513c0 + languageName: node + linkType: hard + +"browserify-sign@npm:^4.2.3": + version: 4.2.5 + resolution: "browserify-sign@npm:4.2.5" + dependencies: + bn.js: "npm:^5.2.2" + browserify-rsa: "npm:^4.1.1" + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + elliptic: "npm:^6.6.1" + inherits: "npm:^2.0.4" + parse-asn1: "npm:^5.1.9" + readable-stream: "npm:^2.3.8" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/6192f9696934bbba58932d098face34c2ab9cac09feed826618b86b8c00a897dab7324cd9aa7d6cb1597064f197264ad72fa5418d4d52bf3c8f9b9e0e124655e + languageName: node + linkType: hard + +"bs58@npm:^4.0.0, bs58@npm:^4.0.1": + version: 4.0.1 + resolution: "bs58@npm:4.0.1" + dependencies: + base-x: "npm:^3.0.2" + checksum: 10c0/613a1b1441e754279a0e3f44d1faeb8c8e838feef81e550efe174ff021dd2e08a4c9ae5805b52dfdde79f97b5c0918c78dd24a0eb726c4a94365f0984a0ffc65 + languageName: node + linkType: hard + +"bs58@npm:^5.0.0": + version: 5.0.0 + resolution: "bs58@npm:5.0.0" + dependencies: + base-x: "npm:^4.0.0" + checksum: 10c0/0d1b05630b11db48039421b5975cb2636ae0a42c62f770eec257b2e5c7d94cb5f015f440785f3ec50870a6e9b1132b35bd0a17c7223655b22229f24b2a3491d1 + languageName: node + linkType: hard + +"bs58@npm:^6.0.0": + version: 6.0.0 + resolution: "bs58@npm:6.0.0" + dependencies: + base-x: "npm:^5.0.0" + checksum: 10c0/61910839746625ee4f69369f80e2634e2123726caaa1da6b3bcefcf7efcd9bdca86603360fed9664ffdabe0038c51e542c02581c72ca8d44f60329fe1a6bc8f4 + languageName: node + linkType: hard + +"buffer-layout@npm:^1.2.0, buffer-layout@npm:^1.2.2": + version: 1.2.2 + resolution: "buffer-layout@npm:1.2.2" + checksum: 10c0/d90d1f622f592553555dd290d0e6dd0bababb2566655d0728812b2667af5a23d795929c38c25f5065252024fa29d75ea54eeb6f469d69814f4ebf614c6672acf + languageName: node + linkType: hard + +"buffer-xor@npm:^1.0.3": + version: 1.0.3 + resolution: "buffer-xor@npm:1.0.3" + checksum: 10c0/fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c + languageName: node + linkType: hard + +"buffer@npm:6.0.3, buffer@npm:^6.0.1, buffer@npm:^6.0.3, buffer@npm:~6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 + languageName: node + linkType: hard + +"buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e + languageName: node + linkType: hard + +"bufferutil@npm:^4.0.1": + version: 4.1.0 + resolution: "bufferutil@npm:4.1.0" + dependencies: + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10c0/12d63bbc80a3b6525bc62a28387fca0a5aed09e41b74375c500e60721b6a1ab2960b82e48f1773eddea2b14e490f129214b8b57bd6e1a5078b6235857d658508 + languageName: node + linkType: hard + +"cacache@npm:^20.0.1": + version: 20.0.3 + resolution: "cacache@npm:20.0.3" + dependencies: + "@npmcli/fs": "npm:^5.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^13.0.0" + lru-cache: "npm:^11.1.0" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^13.0.0" + unique-filename: "npm:^5.0.0" + checksum: 10c0/c7da1ca694d20e8f8aedabd21dc11518f809a7d2b59aa76a1fc655db5a9e62379e465c157ddd2afe34b19230808882288effa6911b2de26a088a6d5645123462 + languageName: node + linkType: hard + +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.2" + checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + get-intrinsic: "npm:^1.3.0" + checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"camelcase@npm:^6.0.0, camelcase@npm:^6.2.1, camelcase@npm:^6.3.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + languageName: node + linkType: hard + +"chai@npm:4.5.0": + version: 4.5.0 + resolution: "chai@npm:4.5.0" + dependencies: + assertion-error: "npm:^1.1.0" + check-error: "npm:^1.0.3" + deep-eql: "npm:^4.1.3" + get-func-name: "npm:^2.0.2" + loupe: "npm:^2.3.6" + pathval: "npm:^1.1.1" + type-detect: "npm:^4.1.0" + checksum: 10c0/b8cb596bd1aece1aec659e41a6e479290c7d9bee5b3ad63d2898ad230064e5b47889a3bc367b20100a0853b62e026e2dc514acf25a3c9385f936aa3614d4ab4d + languageName: node + linkType: hard + +"chalk@npm:4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"check-error@npm:^1.0.3": + version: 1.0.3 + resolution: "check-error@npm:1.0.3" + dependencies: + get-func-name: "npm:^2.0.2" + checksum: 10c0/94aa37a7315c0e8a83d0112b5bfb5a8624f7f0f81057c73e4707729cdd8077166c6aefb3d8e2b92c63ee130d4a2ff94bad46d547e12f3238cc1d78342a973841 + languageName: node + linkType: hard + +"chokidar@npm:^3.5.3": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + languageName: node + linkType: hard + +"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": + version: 1.0.7 + resolution: "cipher-base@npm:1.0.7" + dependencies: + inherits: "npm:^2.0.4" + safe-buffer: "npm:^5.2.1" + to-buffer: "npm:^1.2.2" + checksum: 10c0/53c5046a9d9b60c586479b8f13fde263c3f905e13f11e8e04c7a311ce399c91d9c3ec96642332e0de077d356e1014ee12bba96f74fbaad0de750f49122258836 + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: "npm:^3.1.0" + checksum: 10c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 + languageName: node + linkType: hard + +"cli-spinners@npm:^2.5.0": + version: 2.9.2 + resolution: "cli-spinners@npm:2.9.2" + checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3 + languageName: node + linkType: hard + +"cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"clone@npm:2.x": + version: 2.1.2 + resolution: "clone@npm:2.1.2" + checksum: 10c0/ed0601cd0b1606bc7d82ee7175b97e68d1dd9b91fd1250a3617b38d34a095f8ee0431d40a1a611122dcccb4f93295b4fdb94942aa763392b5fe44effa50c2d5e + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + languageName: node + linkType: hard + +"color-convert@npm:<3.1.1": + version: 3.1.0 + resolution: "color-convert@npm:3.1.0" + dependencies: + color-name: "npm:^2.0.0" + checksum: 10c0/3e6c92a7122dc8429036f134fdc821064fcf34c4ed67855d6ec29c207eb96e761dbb37bb2a64572a703fc3a7a8fa4e970e0a194619b2acd46b55bcd2ace06293 + languageName: node + linkType: hard + +"color-name@npm:<2.0.1": + version: 2.0.0 + resolution: "color-name@npm:2.0.0" + checksum: 10c0/fc0304606e5c5941f4649a9975c03a2ecd52a22aba3dadb3309b3e4ee61d78c3e13ff245e80b9a930955d38c5f32a9004196a7456c4542822aa1fcfea8e928ed + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + +"commander@npm:^12.1.0": + version: 12.1.0 + resolution: "commander@npm:12.1.0" + checksum: 10c0/6e1996680c083b3b897bfc1cfe1c58dfbcd9842fd43e1aaf8a795fbc237f65efcc860a3ef457b318e73f29a4f4a28f6403c3d653d021d960e4632dd45bde54a9 + languageName: node + linkType: hard + +"commander@npm:^2.20.3": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 + languageName: node + linkType: hard + +"commander@npm:^7.2.0": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 10c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a + languageName: node + linkType: hard + +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + languageName: node + linkType: hard + +"create-ecdh@npm:^4.0.4": + version: 4.0.4 + resolution: "create-ecdh@npm:4.0.4" + dependencies: + bn.js: "npm:^4.1.0" + elliptic: "npm:^6.5.3" + checksum: 10c0/77b11a51360fec9c3bce7a76288fc0deba4b9c838d5fb354b3e40c59194d23d66efe6355fd4b81df7580da0661e1334a235a2a5c040b7569ba97db428d466e7f + languageName: node + linkType: hard + +"create-hash@npm:^1.1.0, create-hash@npm:^1.2.0": + version: 1.2.0 + resolution: "create-hash@npm:1.2.0" + dependencies: + cipher-base: "npm:^1.0.1" + inherits: "npm:^2.0.1" + md5.js: "npm:^1.3.4" + ripemd160: "npm:^2.0.1" + sha.js: "npm:^2.4.0" + checksum: 10c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 + languageName: node + linkType: hard + +"create-hmac@npm:^1.1.7": + version: 1.1.7 + resolution: "create-hmac@npm:1.1.7" + dependencies: + cipher-base: "npm:^1.0.3" + create-hash: "npm:^1.1.0" + inherits: "npm:^2.0.1" + ripemd160: "npm:^2.0.0" + safe-buffer: "npm:^5.0.1" + sha.js: "npm:^2.4.8" + checksum: 10c0/24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 + languageName: node + linkType: hard + +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 + languageName: node + linkType: hard + +"cross-fetch@npm:^3.1.5": + version: 3.2.0 + resolution: "cross-fetch@npm:3.2.0" + dependencies: + node-fetch: "npm:^2.7.0" + checksum: 10c0/d8596adf0269130098a676f6739a0922f3cc7b71cc89729925411ebe851a87026171c82ea89154c4811c9867c01c44793205a52e618ce2684650218c7fbeeb9f + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.2": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + languageName: node + linkType: hard + +"crypto-browserify@npm:^3.12.1": + version: 3.12.1 + resolution: "crypto-browserify@npm:3.12.1" + dependencies: + browserify-cipher: "npm:^1.0.1" + browserify-sign: "npm:^4.2.3" + create-ecdh: "npm:^4.0.4" + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + diffie-hellman: "npm:^5.0.3" + hash-base: "npm:~3.0.4" + inherits: "npm:^2.0.4" + pbkdf2: "npm:^3.1.2" + public-encrypt: "npm:^4.0.3" + randombytes: "npm:^2.1.0" + randomfill: "npm:^1.0.4" + checksum: 10c0/184a2def7b16628e79841243232ab5497f18d8e158ac21b7ce90ab172427d0a892a561280adc08f9d4d517bce8db2a5b335dc21abb970f787f8e874bd7b9db7d + languageName: node + linkType: hard + +"crypto-hash@npm:^1.3.0": + version: 1.3.0 + resolution: "crypto-hash@npm:1.3.0" + checksum: 10c0/651003421dce76fd686eb3ed4981117f9cd3f309a4af41697a646aecbbfc49179547bdd7146f7a74e2c8c7ab703227c25ce03e85fea2da3189ab65e32971ecce + languageName: node + linkType: hard + +"debug@npm:<4.4.2": + version: 4.4.1 + resolution: "debug@npm:4.4.1" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55 + languageName: node + linkType: hard + +"decamelize@npm:^4.0.0": + version: 4.0.0 + resolution: "decamelize@npm:4.0.0" + checksum: 10c0/e06da03fc05333e8cd2778c1487da67ffbea5b84e03ca80449519b8fa61f888714bbc6f459ea963d5641b4aa98832130eb5cd193d90ae9f0a27eee14be8e278d + languageName: node + linkType: hard + +"decimal.js@npm:^10.4.3": + version: 10.6.0 + resolution: "decimal.js@npm:10.6.0" + checksum: 10c0/07d69fbcc54167a340d2d97de95f546f9ff1f69d2b45a02fd7a5292412df3cd9eb7e23065e532a318f5474a2e1bccf8392fdf0443ef467f97f3bf8cb0477e5aa + languageName: node + linkType: hard + +"deep-eql@npm:^4.1.3": + version: 4.1.4 + resolution: "deep-eql@npm:4.1.4" + dependencies: + type-detect: "npm:^4.0.0" + checksum: 10c0/264e0613493b43552fc908f4ff87b8b445c0e6e075656649600e1b8a17a57ee03e960156fce7177646e4d2ddaf8e5ee616d76bd79929ff593e5c79e4e5e6c517 + languageName: node + linkType: hard + +"deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: "npm:^1.0.2" + checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + languageName: node + linkType: hard + +"delay@npm:^5.0.0": + version: 5.0.0 + resolution: "delay@npm:5.0.0" + checksum: 10c0/01cdc4cd0cd35fb622518a3df848e67e09763a38e7cdada2232b6fda9ddda72eddcf74f0e24211200fbe718434f2335f2a2633875a6c96037fefa6de42896ad7 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + +"dependency-tree@npm:^11.0.0": + version: 11.2.0 + resolution: "dependency-tree@npm:11.2.0" + dependencies: + commander: "npm:^12.1.0" + filing-cabinet: "npm:^5.0.3" + precinct: "npm:^12.2.0" + typescript: "npm:^5.8.3" + bin: + dependency-tree: bin/cli.js + checksum: 10c0/bbec40f799192baaa10d941ebbf7830f2210e77ae70b1c84ae137b2f4738fcf5756f3a4fa54254ec07108e40383b647183af814dfa4cf9759f49a22ee26b68a0 + languageName: node + linkType: hard + +"des.js@npm:^1.0.0": + version: 1.1.0 + resolution: "des.js@npm:1.1.0" + dependencies: + inherits: "npm:^2.0.1" + minimalistic-assert: "npm:^1.0.0" + checksum: 10c0/671354943ad67493e49eb4c555480ab153edd7cee3a51c658082fcde539d2690ed2a4a0b5d1f401f9cde822edf3939a6afb2585f32c091f2d3a1b1665cd45236 + languageName: node + linkType: hard + +"detective-amd@npm:^6.0.1": + version: 6.0.1 + resolution: "detective-amd@npm:6.0.1" + dependencies: + ast-module-types: "npm:^6.0.1" + escodegen: "npm:^2.1.0" + get-amd-module-type: "npm:^6.0.1" + node-source-walk: "npm:^7.0.1" + bin: + detective-amd: bin/cli.js + checksum: 10c0/a529b3b19fdb1c7468d38bdc469dabc877f1dea6d42cd90a7e36af528fb001576dfebd240484d1caabc749d4efc9451e96eeb314729a5889bc15f1e30140e802 + languageName: node + linkType: hard + +"detective-cjs@npm:^6.0.1": + version: 6.0.1 + resolution: "detective-cjs@npm:6.0.1" + dependencies: + ast-module-types: "npm:^6.0.1" + node-source-walk: "npm:^7.0.1" + checksum: 10c0/5e99f58d069765086a44880d440633fd12596159ba0dc91695a6cf3f80d8eb9b6970464c40f526b30c3929ab90de31b43ada074d92b2402f70fc18676f47d465 + languageName: node + linkType: hard + +"detective-es6@npm:^5.0.1": + version: 5.0.1 + resolution: "detective-es6@npm:5.0.1" + dependencies: + node-source-walk: "npm:^7.0.1" + checksum: 10c0/2e8e94d61a79f8c0ff8652f0ad9dc796c618710658f89a7b17cfb64be31bbde2d59d5e56c071b31eb80edc617a1da7273e8dcf3c10ab31db71df05429f60c311 + languageName: node + linkType: hard + +"detective-postcss@npm:^7.0.1": + version: 7.0.1 + resolution: "detective-postcss@npm:7.0.1" + dependencies: + is-url: "npm:^1.2.4" + postcss-values-parser: "npm:^6.0.2" + peerDependencies: + postcss: ^8.4.47 + checksum: 10c0/915e402124a6b3db943ef165c3ab5c7a38d0980b97d70f43867eb045acb81acb9e4c5e9eb4f180b9a45483491facc37161075e12a93713d7df8d0643141e90b8 + languageName: node + linkType: hard + +"detective-sass@npm:^6.0.1": + version: 6.0.1 + resolution: "detective-sass@npm:6.0.1" + dependencies: + gonzales-pe: "npm:^4.3.0" + node-source-walk: "npm:^7.0.1" + checksum: 10c0/e45108f98fbc5cc2330e93cc6a6a8d53c25b7447800f97b2ab0e97a6f7d44f6c3f99ae9bd946a1e5b3c01cda4581f264f81435ce5438d8fafb8fe9f22f23c0c0 + languageName: node + linkType: hard + +"detective-scss@npm:^5.0.1": + version: 5.0.1 + resolution: "detective-scss@npm:5.0.1" + dependencies: + gonzales-pe: "npm:^4.3.0" + node-source-walk: "npm:^7.0.1" + checksum: 10c0/9a2d07fb4dc608b73d4292f1eaa1d1d7f823298c11ea091896eaeb2bba52dd76d9fc9dd82d63b811ce87decf6fd65f9ed00b4cba264b7273a9c47edf48f70530 + languageName: node + linkType: hard + +"detective-stylus@npm:^5.0.1": + version: 5.0.1 + resolution: "detective-stylus@npm:5.0.1" + checksum: 10c0/34698ac21dc256483fd91d1674ba5d0c617e45285cd85e4efa99ce48fe955e567df53c51b4157bac3dab6d97f70c86bbd847202ee7a1b639c3b781f35026bde9 + languageName: node + linkType: hard + +"detective-typescript@npm:^14.0.0": + version: 14.0.0 + resolution: "detective-typescript@npm:14.0.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:^8.23.0" + ast-module-types: "npm:^6.0.1" + node-source-walk: "npm:^7.0.1" + peerDependencies: + typescript: ^5.4.4 + checksum: 10c0/1d802991e2a57732cc54ceb007991493bbd28b7ba416d0220ccb1cba667febaf09226c701b7310e75179f6c9e9ce84ded03b464b83d931c975e19f2cbad96474 + languageName: node + linkType: hard + +"detective-vue2@npm:^2.2.0": + version: 2.2.0 + resolution: "detective-vue2@npm:2.2.0" + dependencies: + "@dependents/detective-less": "npm:^5.0.1" + "@vue/compiler-sfc": "npm:^3.5.13" + detective-es6: "npm:^5.0.1" + detective-sass: "npm:^6.0.1" + detective-scss: "npm:^5.0.1" + detective-stylus: "npm:^5.0.1" + detective-typescript: "npm:^14.0.0" + peerDependencies: + typescript: ^5.4.4 + checksum: 10c0/b56e2e479b75ec6828f0892c64a06e371a4d4200056b0a2035331f1e894da30eb6a6c8c5b11701bd13d9d3a07d040b740451384bb32b82f62f1d4286800e2cbf + languageName: node + linkType: hard + +"diff-sequences@npm:^28.1.1": + version: 28.1.1 + resolution: "diff-sequences@npm:28.1.1" + checksum: 10c0/26f29fa3f6b8c9040c3c6f6dab85413d90a09c8e6cb17b318bbcf64f225d7dcb1fb64392f3a9919a90888b434c4f6c8a4cc4f807aad02bbabae912c5d13c31f7 + languageName: node + linkType: hard + +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 + languageName: node + linkType: hard + +"diff@npm:^5.2.0": + version: 5.2.0 + resolution: "diff@npm:5.2.0" + checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 + languageName: node + linkType: hard + +"diffie-hellman@npm:^5.0.3": + version: 5.0.3 + resolution: "diffie-hellman@npm:5.0.3" + dependencies: + bn.js: "npm:^4.1.0" + miller-rabin: "npm:^4.0.0" + randombytes: "npm:^2.0.0" + checksum: 10c0/ce53ccafa9ca544b7fc29b08a626e23a9b6562efc2a98559a0c97b4718937cebaa9b5d7d0a05032cc9c1435e9b3c1532b9e9bf2e0ede868525922807ad6e1ecf + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + languageName: node + linkType: hard + +"dot-case@npm:^3.0.4": + version: 3.0.4 + resolution: "dot-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05 + languageName: node + linkType: hard + +"dotenv@npm:10.0.0": + version: 10.0.0 + resolution: "dotenv@npm:10.0.0" + checksum: 10c0/2d8d4ba64bfaff7931402aa5e8cbb8eba0acbc99fe9ae442300199af021079eafa7171ce90e150821a5cb3d74f0057721fbe7ec201a6044b68c8a7615f8c123f + languageName: node + linkType: hard + +"dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 + languageName: node + linkType: hard + +"elliptic@npm:^6.5.3, elliptic@npm:^6.6.1": + version: 6.6.1 + resolution: "elliptic@npm:6.6.1" + dependencies: + bn.js: "npm:^4.11.9" + brorand: "npm:^1.1.0" + hash.js: "npm:^1.0.0" + hmac-drbg: "npm:^1.0.1" + inherits: "npm:^2.0.4" + minimalistic-assert: "npm:^1.0.1" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/8b24ef782eec8b472053793ea1e91ae6bee41afffdfcb78a81c0a53b191e715cbe1292aa07165958a9bbe675bd0955142560b1a007ffce7d6c765bcaf951a867 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"encoding@npm:0.1.13, encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.18.0": + version: 5.18.4 + resolution: "enhanced-resolve@npm:5.18.4" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.2.0" + checksum: 10c0/8f6d42c8a0787a746c493e724c9de5d091cfe8e3f871f2464e2f78a6c55fa1a3aaba495334f923c8ea3ac23e1472491f79feef6fc0fb46a75169cb447ffbe2dc + languageName: node + linkType: hard + +"entities@npm:^7.0.0": + version: 7.0.0 + resolution: "entities@npm:7.0.0" + checksum: 10c0/4e7cc40cd00b64adede81780fd85c0bd0a905e863b5ef0b01718028ffbc113886c281deb57e1ce0e13a6e349a2d404ff383c876673b81d6dc56e87bf3e5a022a + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af + languageName: node + linkType: hard + +"es6-promise@npm:^4.0.3": + version: 4.2.8 + resolution: "es6-promise@npm:4.2.8" + checksum: 10c0/2373d9c5e9a93bdd9f9ed32ff5cb6dd3dd785368d1c21e9bbbfd07d16345b3774ae260f2bd24c8f836a6903f432b4151e7816a7fa8891ccb4e1a55a028ec42c3 + languageName: node + linkType: hard + +"es6-promisify@npm:^5.0.0": + version: 5.0.0 + resolution: "es6-promisify@npm:5.0.0" + dependencies: + es6-promise: "npm:^4.0.3" + checksum: 10c0/23284c6a733cbf7842ec98f41eac742c9f288a78753c4fe46652bae826446ced7615b9e8a5c5f121a08812b1cd478ea58630f3e1c3d70835bd5dcd69c7cd75c9 + languageName: node + linkType: hard + +"esbuild@npm:^0.27.1": + version: 0.27.2 + resolution: "esbuild@npm:0.27.2" + dependencies: + "@esbuild/aix-ppc64": "npm:0.27.2" + "@esbuild/android-arm": "npm:0.27.2" + "@esbuild/android-arm64": "npm:0.27.2" + "@esbuild/android-x64": "npm:0.27.2" + "@esbuild/darwin-arm64": "npm:0.27.2" + "@esbuild/darwin-x64": "npm:0.27.2" + "@esbuild/freebsd-arm64": "npm:0.27.2" + "@esbuild/freebsd-x64": "npm:0.27.2" + "@esbuild/linux-arm": "npm:0.27.2" + "@esbuild/linux-arm64": "npm:0.27.2" + "@esbuild/linux-ia32": "npm:0.27.2" + "@esbuild/linux-loong64": "npm:0.27.2" + "@esbuild/linux-mips64el": "npm:0.27.2" + "@esbuild/linux-ppc64": "npm:0.27.2" + "@esbuild/linux-riscv64": "npm:0.27.2" + "@esbuild/linux-s390x": "npm:0.27.2" + "@esbuild/linux-x64": "npm:0.27.2" + "@esbuild/netbsd-arm64": "npm:0.27.2" + "@esbuild/netbsd-x64": "npm:0.27.2" + "@esbuild/openbsd-arm64": "npm:0.27.2" + "@esbuild/openbsd-x64": "npm:0.27.2" + "@esbuild/openharmony-arm64": "npm:0.27.2" + "@esbuild/sunos-x64": "npm:0.27.2" + "@esbuild/win32-arm64": "npm:0.27.2" + "@esbuild/win32-ia32": "npm:0.27.2" + "@esbuild/win32-x64": "npm:0.27.2" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/openharmony-arm64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/cf83f626f55500f521d5fe7f4bc5871bec240d3deb2a01fbd379edc43b3664d1167428738a5aad8794b35d1cca985c44c375b1cd38a2ca613c77ced2c83aafcd + languageName: node + linkType: hard + +"escalade@npm:^3.1.1": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"escodegen@npm:^2.1.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" + dependencies: + esprima: "npm:^4.0.1" + estraverse: "npm:^5.2.0" + esutils: "npm:^2.0.2" + source-map: "npm:~0.6.1" + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 10c0/e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:8.3.0": + version: 8.3.0 + resolution: "eslint-config-prettier@npm:8.3.0" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10c0/0d6bd272a05045f2815f0aba4592633a7226713d716d1a4c21126bbdbde27c98e7a6e2a8227e03fae343b40caf8c06a87e7ce87e69851279cf10334b6f36f7bc + languageName: node + linkType: hard + +"eslint-plugin-prettier@npm:3.4.0": + version: 3.4.0 + resolution: "eslint-plugin-prettier@npm:3.4.0" + dependencies: + prettier-linter-helpers: "npm:^1.0.0" + peerDependencies: + eslint: ">=5.0.0" + prettier: ">=1.13.0" + peerDependenciesMeta: + eslint-config-prettier: + optional: true + checksum: 10c0/dbc9f319cf251b0f9251318b152cc8f1cbc1740bf67ac4d45447f48b03eb56eb7b9661c2c30a97b3d53a23e7de86de85ff47e54ae2293d41675f668df2bcc79c + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 + languageName: node + linkType: hard + +"eslint@npm:8.57.0": + version: 8.57.0 + resolution: "eslint@npm:8.57.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.6.1" + "@eslint/eslintrc": "npm:^2.1.4" + "@eslint/js": "npm:8.57.0" + "@humanwhocodes/config-array": "npm:^0.11.14" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@nodelib/fs.walk": "npm:^1.2.8" + "@ungap/structured-clone": "npm:^1.2.0" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.2" + debug: "npm:^4.3.2" + doctrine: "npm:^3.0.0" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^7.2.2" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" + esquery: "npm:^1.4.2" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^6.0.1" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + globals: "npm:^13.19.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + is-path-inside: "npm:^3.0.3" + js-yaml: "npm:^4.1.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.4.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + strip-ansi: "npm:^6.0.1" + text-table: "npm:^0.2.0" + bin: + eslint: bin/eslint.js + checksum: 10c0/00bb96fd2471039a312435a6776fe1fd557c056755eaa2b96093ef3a8508c92c8775d5f754768be6b1dddd09fdd3379ddb231eeb9b6c579ee17ea7d68000a529 + languageName: node + linkType: hard + +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:^4.0.1": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + +"esquery@npm:^1.4.2": + version: 1.7.0 + resolution: "esquery@npm:1.7.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/77d5173db450b66f3bc685d11af4c90cffeedb340f34a39af96d43509a335ce39c894fd79233df32d38f5e4e219fa0f7076f6ec90bae8320170ba082c0db4793 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"estree-walker@npm:^2.0.2": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 10c0/53a6c54e2019b8c914dc395890153ffdc2322781acf4bd7d1a32d7aedc1710807bdcd866ac133903d5629ec601fbb50abe8c2e5553c7f5a0afdd9b6af6c945af + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"eventemitter3@npm:^4.0.7": + version: 4.0.7 + resolution: "eventemitter3@npm:4.0.7" + checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b + languageName: node + linkType: hard + +"eventemitter3@npm:^5.0.1": + version: 5.0.1 + resolution: "eventemitter3@npm:5.0.1" + checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 + languageName: node + linkType: hard + +"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": + version: 1.0.3 + resolution: "evp_bytestokey@npm:1.0.3" + dependencies: + md5.js: "npm:^1.3.4" + node-gyp: "npm:latest" + safe-buffer: "npm:^5.1.1" + checksum: 10c0/77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 + languageName: node + linkType: hard + +"expect@npm:^28.0.0": + version: 28.1.3 + resolution: "expect@npm:28.1.3" + dependencies: + "@jest/expect-utils": "npm:^28.1.3" + jest-get-type: "npm:^28.0.2" + jest-matcher-utils: "npm:^28.1.3" + jest-message-util: "npm:^28.1.3" + jest-util: "npm:^28.1.3" + checksum: 10c0/fce8aa5462294fc7a32b17eef697e9999989b383e62f88b76e69badc59d4abb231dd6131aebaf27c4683be2fb0aa345e125bf2f15545e30a31dc85ec98673608 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.3 + resolution: "exponential-backoff@npm:3.1.3" + checksum: 10c0/77e3ae682b7b1f4972f563c6dbcd2b0d54ac679e62d5d32f3e5085feba20483cf28bd505543f520e287a56d4d55a28d7874299941faf637e779a1aa5994d1267 + languageName: node + linkType: hard + +"eyes@npm:^0.1.8": + version: 0.1.8 + resolution: "eyes@npm:0.1.8" + checksum: 10c0/4c79a9cbf45746d8c9f48cc957e35ad8ea336add1c7b8d5a0e002efc791a7a62b27b2188184ef1a1eea7bc3cd06b161791421e0e6c5fe78309705a162c53eea8 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-diff@npm:^1.1.2": + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.9": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fast-stable-stringify@npm:^1.0.0": + version: 1.0.0 + resolution: "fast-stable-stringify@npm:1.0.0" + checksum: 10c0/1d773440c7a9615950577665074746c2e92edafceefa789616ecb6166229e0ccc6dae206ca9b9f7da0d274ba5779162aab2d07940a0f6e52a41a4e555392eb3b + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.20.1 + resolution: "fastq@npm:1.20.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/e5dd725884decb1f11e5c822221d76136f239d0236f176fab80b7b8f9e7619ae57e6b4e5b73defc21e6b9ef99437ee7b545cff8e6c2c337819633712fa9d352e + languageName: node + linkType: hard + +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: "npm:^3.0.4" + checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + languageName: node + linkType: hard + +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: 10c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 + languageName: node + linkType: hard + +"filing-cabinet@npm:^5.0.3": + version: 5.0.3 + resolution: "filing-cabinet@npm:5.0.3" + dependencies: + app-module-path: "npm:^2.2.0" + commander: "npm:^12.1.0" + enhanced-resolve: "npm:^5.18.0" + module-definition: "npm:^6.0.1" + module-lookup-amd: "npm:^9.0.3" + resolve: "npm:^1.22.10" + resolve-dependency-path: "npm:^4.0.1" + sass-lookup: "npm:^6.1.0" + stylus-lookup: "npm:^6.1.0" + tsconfig-paths: "npm:^4.2.0" + typescript: "npm:^5.7.3" + bin: + filing-cabinet: bin/cli.js + checksum: 10c0/4640fa6ccc93b1c832125644b1a374b3a9f1934cef83eb7570e604ee4d97fae2bf6f07e802c5f038c72c8b9114974996e8b7a72500d5f9dc4886a42d0ee41654 + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + +"find-process@npm:^1.4.7": + version: 1.4.11 + resolution: "find-process@npm:1.4.11" + dependencies: + chalk: "npm:~4.1.2" + commander: "npm:^12.1.0" + loglevel: "npm:^1.9.2" + bin: + find-process: bin/find-process.js + checksum: 10c0/969d6aea6136f3f5f32bcdd1dee1762639a5f9e47822d358b55cf1290d99929ec48782295df81645e5b50250f9a2541710b9fa289df948d07e5b11c80311e94a + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"find@npm:^0.3.0": + version: 0.3.0 + resolution: "find@npm:0.3.0" + dependencies: + traverse-chain: "npm:~0.1.0" + checksum: 10c0/cb425fd4ea873bd25431fa41597852a3e18febb41eef44cba1e7660c85ebfc09b2d7da2e914602f30035339b873e8c61e3f73a0a8c02011f9e8c9053d4733417 + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" + rimraf: "npm:^3.0.2" + checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 + languageName: node + linkType: hard + +"flat@npm:^5.0.2": + version: 5.0.2 + resolution: "flat@npm:5.0.2" + bin: + flat: cli.js + checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.3 + resolution: "flatted@npm:3.3.3" + checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 + languageName: node + linkType: hard + +"follow-redirects@npm:^1.15.6": + version: 1.15.11 + resolution: "follow-redirects@npm:1.15.11" + peerDependenciesMeta: + debug: + optional: true + checksum: 10c0/d301f430542520a54058d4aeeb453233c564aaccac835d29d15e050beb33f339ad67d9bddbce01739c5dc46a6716dbe3d9d0d5134b1ca203effa11a7ef092343 + languageName: node + linkType: hard + +"for-each@npm:^0.3.5": + version: 0.3.5 + resolution: "for-each@npm:0.3.5" + dependencies: + is-callable: "npm:^1.2.7" + checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee + languageName: node + linkType: hard + +"form-data@npm:^4.0.4": + version: 4.0.5 + resolution: "form-data@npm:4.0.5" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + es-set-tostringtag: "npm:^2.1.0" + hasown: "npm:^2.0.2" + mime-types: "npm:^2.1.12" + checksum: 10c0/dd6b767ee0bbd6d84039db12a0fa5a2028160ffbfaba1800695713b46ae974a5f6e08b3356c3195137f8530dcd9dfcb5d5ae1eeff53d0db1e5aad863b619ce3b + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 + languageName: node + linkType: hard + +"get-amd-module-type@npm:^6.0.1": + version: 6.0.1 + resolution: "get-amd-module-type@npm:6.0.1" + dependencies: + ast-module-types: "npm:^6.0.1" + node-source-walk: "npm:^7.0.1" + checksum: 10c0/23afae042834ac57cbe6da6e9f285dab19067c16a283efbb5abc82ffed1213ecaf12c90bbe1d731562e9057373f843541441316b9a405cc426a123d1172e45b8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 10c0/89830fd07623fa73429a711b9daecdb304386d237c71268007f788f113505ef1d4cc2d0b9680e072c5082490aec9df5d7758bf5ac6f1c37062855e8e3dc0b9df + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0": + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" + dependencies: + async-function: "npm:^1.0.0" + async-generator-function: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + function-bind: "npm:^1.1.2" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d + languageName: node + linkType: hard + +"get-own-enumerable-property-symbols@npm:^3.0.0": + version: 3.0.2 + resolution: "get-own-enumerable-property-symbols@npm:3.0.2" + checksum: 10c0/103999855f3d1718c631472437161d76962cbddcd95cc642a34c07bfb661ed41b6c09a9c669ccdff89ee965beb7126b80eec7b2101e20e31e9cc6c4725305e10 + languageName: node + linkType: hard + +"get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c + languageName: node + linkType: hard + +"gill@npm:^0.10.2": + version: 0.10.3 + resolution: "gill@npm:0.10.3" + dependencies: + "@solana-program/address-lookup-table": "npm:^0.7.0" + "@solana-program/compute-budget": "npm:^0.8.0" + "@solana-program/system": "npm:^0.7.0" + "@solana-program/token-2022": "npm:^0.4.2" + "@solana/assertions": "npm:^2.1.1" + "@solana/codecs": "npm:^2.1.1" + "@solana/kit": "npm:^2.3.0" + "@solana/transaction-confirmation": "npm:^2.1.1" + peerDependencies: + typescript: ">=5" + checksum: 10c0/ad74a3bdf8f2365efc70cfd3bfe6995ac6eaf2e3ea9e36f2e77ff10d05252f9394db20b45d987f9df22a70a073b1efadcf6a7b8ccb5708e6db05e75580ffe14f + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob@npm:^13.0.0": + version: 13.0.0 + resolution: "glob@npm:13.0.0" + dependencies: + minimatch: "npm:^10.1.1" + minipass: "npm:^7.1.2" + path-scurry: "npm:^2.0.0" + checksum: 10c0/8e2f5821f3f7c312dd102e23a15b80c79e0837a9872784293ba2e15ec73b3f3749a49a42a31bfcb4e52c84820a474e92331c2eebf18819d20308f5c33876630a + languageName: node + linkType: hard + +"glob@npm:^7.1.3, glob@npm:^7.2.3": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"glob@npm:^8.1.0": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^5.0.1" + once: "npm:^1.3.0" + checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f + languageName: node + linkType: hard + +"globals@npm:^13.19.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" + dependencies: + type-fest: "npm:^0.20.2" + checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd + languageName: node + linkType: hard + +"globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + +"gonzales-pe@npm:^4.3.0": + version: 4.3.0 + resolution: "gonzales-pe@npm:4.3.0" + dependencies: + minimist: "npm:^1.2.5" + bin: + gonzales: bin/gonzales.js + checksum: 10c0/b99a6ef4bf28ca0b0adcc0b42fd0179676ee8bfe1d3e3c0025d7d38ba35a3f2d5b1d4beb16101a7fc7cb2dbda1ec045bbce0932697095df41d729bac1703476f + languageName: node + linkType: hard + +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"hash-base@npm:^3.0.0, hash-base@npm:^3.1.2": + version: 3.1.2 + resolution: "hash-base@npm:3.1.2" + dependencies: + inherits: "npm:^2.0.4" + readable-stream: "npm:^2.3.8" + safe-buffer: "npm:^5.2.1" + to-buffer: "npm:^1.2.1" + checksum: 10c0/f3b7fae1853b31340048dd659f40f5260ca6f3ff53b932f807f4ab701ee09039f6e9dbe1841723ff61e20f3f69d6387a352e4ccc5f997dedb0d375c7d88bc15e + languageName: node + linkType: hard + +"hash-base@npm:~3.0.4": + version: 3.0.5 + resolution: "hash-base@npm:3.0.5" + dependencies: + inherits: "npm:^2.0.4" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/6dc185b79bad9b6d525cd132a588e4215380fdc36fec6f7a8a58c5db8e3b642557d02ad9c367f5e476c7c3ad3ccffa3607f308b124e1ed80e3b80a1b254db61e + languageName: node + linkType: hard + +"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": + version: 1.1.7 + resolution: "hash.js@npm:1.1.7" + dependencies: + inherits: "npm:^2.0.3" + minimalistic-assert: "npm:^1.0.1" + checksum: 10c0/41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 + languageName: node + linkType: hard + +"hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 + languageName: node + linkType: hard + +"he@npm:^1.2.0": + version: 1.2.0 + resolution: "he@npm:1.2.0" + bin: + he: bin/he + checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 + languageName: node + linkType: hard + +"helius-laserstream-darwin-arm64@npm:0.1.8": + version: 0.1.8 + resolution: "helius-laserstream-darwin-arm64@npm:0.1.8" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"helius-laserstream-darwin-x64@npm:0.1.8": + version: 0.1.8 + resolution: "helius-laserstream-darwin-x64@npm:0.1.8" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"helius-laserstream-linux-arm64-gnu@npm:0.1.8": + version: 0.1.8 + resolution: "helius-laserstream-linux-arm64-gnu@npm:0.1.8" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"helius-laserstream-linux-arm64-musl@npm:0.1.8": + version: 0.1.8 + resolution: "helius-laserstream-linux-arm64-musl@npm:0.1.8" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"helius-laserstream-linux-x64-gnu@npm:0.1.8": + version: 0.1.8 + resolution: "helius-laserstream-linux-x64-gnu@npm:0.1.8" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"helius-laserstream-linux-x64-musl@npm:0.1.8": + version: 0.1.8 + resolution: "helius-laserstream-linux-x64-musl@npm:0.1.8" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"helius-laserstream@npm:0.1.8": + version: 0.1.8 + resolution: "helius-laserstream@npm:0.1.8" + dependencies: + "@types/protobufjs": "npm:^6.0.0" + helius-laserstream-darwin-arm64: "npm:0.1.8" + helius-laserstream-darwin-x64: "npm:0.1.8" + helius-laserstream-linux-arm64-gnu: "npm:0.1.8" + helius-laserstream-linux-arm64-musl: "npm:0.1.8" + helius-laserstream-linux-x64-gnu: "npm:0.1.8" + helius-laserstream-linux-x64-musl: "npm:0.1.8" + protobufjs: "npm:^7.5.3" + dependenciesMeta: + helius-laserstream-darwin-arm64: + optional: true + helius-laserstream-darwin-x64: + optional: true + helius-laserstream-linux-arm64-gnu: + optional: true + helius-laserstream-linux-arm64-musl: + optional: true + helius-laserstream-linux-x64-gnu: + optional: true + helius-laserstream-linux-x64-musl: + optional: true + checksum: 10c0/b5f5bf3e39bb442a44b79098cff916a72c9be7f9fdbf0bb8b030ccb61c6688cb41fbae18a4091841ae8f6cce787b23177bac3b5dd5e92d9daef24f347bc29e73 + conditions: (os=darwin | os=linux) & (cpu=x64 | cpu=arm64) + languageName: node + linkType: hard + +"hmac-drbg@npm:^1.0.1": + version: 1.0.1 + resolution: "hmac-drbg@npm:1.0.1" + dependencies: + hash.js: "npm:^1.0.3" + minimalistic-assert: "npm:^1.0.0" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:4" + checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: "npm:^2.0.0" + checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb + languageName: node + linkType: hard + +"ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1": + version: 3.3.1 + resolution: "import-fresh@npm:3.3.1" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"ini@npm:~1.3.0": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a + languageName: node + linkType: hard + +"ip-address@npm:^10.0.1": + version: 10.1.0 + resolution: "ip-address@npm:10.1.0" + checksum: 10c0/0103516cfa93f6433b3bd7333fa876eb21263912329bfa47010af5e16934eeeff86f3d2ae700a3744a137839ddfad62b900c7a445607884a49b5d1e32a3d7566 + languageName: node + linkType: hard + +"is-arguments@npm:^1.0.4": + version: 1.2.0 + resolution: "is-arguments@npm:1.2.0" + dependencies: + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/6377344b31e9fcb707c6751ee89b11f132f32338e6a782ec2eac9393b0cbd32235dad93052998cda778ee058754860738341d8114910d50ada5615912bb929fc + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + +"is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-core-module@npm:^2.16.1": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.7": + version: 1.1.2 + resolution: "is-generator-function@npm:1.1.2" + dependencies: + call-bound: "npm:^1.0.4" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/83da102e89c3e3b71d67b51d47c9f9bc862bceb58f87201727e27f7fa19d1d90b0ab223644ecaee6fc6e3d2d622bb25c966fbdaf87c59158b01ce7c0fe2fa372 + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d + languageName: node + linkType: hard + +"is-nan@npm:^1.3.2": + version: 1.3.2 + resolution: "is-nan@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.0" + define-properties: "npm:^1.1.3" + checksum: 10c0/8bfb286f85763f9c2e28ea32e9127702fe980ffd15fa5d63ade3be7786559e6e21355d3625dd364c769c033c5aedf0a2ed3d4025d336abf1b9241e3d9eddc5b0 + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-obj@npm:^1.0.1": + version: 1.0.1 + resolution: "is-obj@npm:1.0.1" + checksum: 10c0/5003acba0af7aa47dfe0760e545a89bbac89af37c12092c3efadc755372cdaec034f130e7a3653a59eb3c1843cfc72ca71eaf1a6c3bafe5a0bab3611a47f9945 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + languageName: node + linkType: hard + +"is-plain-obj@npm:^2.1.0": + version: 2.1.0 + resolution: "is-plain-obj@npm:2.1.0" + checksum: 10c0/e5c9814cdaa627a9ad0a0964ded0e0491bfd9ace405c49a5d63c88b30a162f1512c069d5b80997893c4d0181eadc3fed02b4ab4b81059aba5620bfcdfdeb9c53 + languageName: node + linkType: hard + +"is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04 + languageName: node + linkType: hard + +"is-regexp@npm:^1.0.0": + version: 1.0.0 + resolution: "is-regexp@npm:1.0.0" + checksum: 10c0/34cacda1901e00f6e44879378f1d2fa96320ea956c1bec27713130aaf1d44f6e7bd963eed28945bfe37e600cb27df1cf5207302680dad8bdd27b9baff8ecf611 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.3": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" + dependencies: + which-typed-array: "npm:^1.1.16" + checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 + languageName: node + linkType: hard + +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 + languageName: node + linkType: hard + +"is-url-superb@npm:^4.0.0": + version: 4.0.0 + resolution: "is-url-superb@npm:4.0.0" + checksum: 10c0/354ea8246d5b5a828e41bb4ed66c539a7b74dc878ee4fa84b148df312b14b08118579d64f0893b56a0094e3b4b1e6082d2fbe2e3792998d7edffde1c0f3dfdd9 + languageName: node + linkType: hard + +"is-url@npm:^1.2.4": + version: 1.2.4 + resolution: "is-url@npm:1.2.4" + checksum: 10c0/0157a79874f8f95fdd63540e3f38c8583c2ef572661cd0693cda80ae3e42dfe8e9a4a972ec1b827f861d9a9acf75b37f7d58a37f94a8a053259642912c252bc3 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + +"isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"isomorphic-ws@npm:^4.0.1": + version: 4.0.1 + resolution: "isomorphic-ws@npm:4.0.1" + peerDependencies: + ws: "*" + checksum: 10c0/7cb90dc2f0eb409825558982fb15d7c1d757a88595efbab879592f9d2b63820d6bbfb5571ab8abe36c715946e165a413a99f6aafd9f40ab1f514d73487bc9996 + languageName: node + linkType: hard + +"isomorphic-ws@npm:^5.0.0": + version: 5.0.0 + resolution: "isomorphic-ws@npm:5.0.0" + peerDependencies: + ws: "*" + checksum: 10c0/a058ac8b5e6efe9e46252cb0bc67fd325005d7216451d1a51238bc62d7da8486f828ef017df54ddf742e0fffcbe4b1bcc2a66cc115b027ed0180334cd18df252 + languageName: node + linkType: hard + +"jayson@npm:^4.1.1": + version: 4.3.0 + resolution: "jayson@npm:4.3.0" + dependencies: + "@types/connect": "npm:^3.4.33" + "@types/node": "npm:^12.12.54" + "@types/ws": "npm:^7.4.4" + commander: "npm:^2.20.3" + delay: "npm:^5.0.0" + es6-promisify: "npm:^5.0.0" + eyes: "npm:^0.1.8" + isomorphic-ws: "npm:^4.0.1" + json-stringify-safe: "npm:^5.0.1" + stream-json: "npm:^1.9.1" + uuid: "npm:^8.3.2" + ws: "npm:^7.5.10" + bin: + jayson: bin/jayson.js + checksum: 10c0/d3d1ee1bd9d8b57eb6c13da83965e6052b030b24ee9ee6b8763ea33e986d7f161428bda8a3f5e4b30e0194867fe48ef0652db521363ccc6227b89d7998f0dbda + languageName: node + linkType: hard + +"jest-diff@npm:^28.1.3": + version: 28.1.3 + resolution: "jest-diff@npm:28.1.3" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^28.1.1" + jest-get-type: "npm:^28.0.2" + pretty-format: "npm:^28.1.3" + checksum: 10c0/17a101ceb7e8f25c3ef64edda15cb1a259c2835395637099f3cc44f578fbd94ced7a13d11c0cbe8c5c1c3959a08544f0a913bec25a305b6dfc9847ce488e7198 + languageName: node + linkType: hard + +"jest-get-type@npm:^28.0.2": + version: 28.0.2 + resolution: "jest-get-type@npm:28.0.2" + checksum: 10c0/f64a40cfa10d79a56b383919033d35c8c4daee6145a1df31ec5ef2283fa7e8adbd443c6fcb4cfd0f60bbbd89f046c2323952f086b06e875cbbbc1a7d543a6e5e + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^28.1.3": + version: 28.1.3 + resolution: "jest-matcher-utils@npm:28.1.3" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^28.1.3" + jest-get-type: "npm:^28.0.2" + pretty-format: "npm:^28.1.3" + checksum: 10c0/026fbe664cfdaed5a5c9facfc86ccc9bed3718a7d1fe061e355eb6158019a77f74e9b843bc99f9a467966cbebe60bde8b43439174cbf64997d4ad404f8f809d0 + languageName: node + linkType: hard + +"jest-message-util@npm:^28.1.3": + version: 28.1.3 + resolution: "jest-message-util@npm:28.1.3" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^28.1.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^28.1.3" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/9f56a11b4171e43e2375446e624eec86f82820d9a35de3cd8b065b5ce2d7f65d2bbbdfc0ffe5fa358ff866693a68ec4f6b0cb8ad953fd6f35f9895eb370c6ed7 + languageName: node + linkType: hard + +"jest-util@npm:^28.1.3": + version: 28.1.3 + resolution: "jest-util@npm:28.1.3" + dependencies: + "@jest/types": "npm:^28.1.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10c0/7d4946424032a2ccb2ad669905debb44b0bf040dff7a1fe82d283c679ae4638a86ca48d6a276d65a76451252338ad84e76ef2cfde03f577f091fe2b3102aedc9 + languageName: node + linkType: hard + +"js-sha256@npm:^0.11.0": + version: 0.11.1 + resolution: "js-sha256@npm:0.11.1" + checksum: 10c0/ef8e294b6f38f218e4834cb653471dd1a76808cea93dc66eaffcb04124116bc36d6cebc4e8866753e184ab4e57892b6ef21918e8ab0450179a7e093ea962d974 + languageName: node + linkType: hard + +"js-sha256@npm:^0.9.0": + version: 0.9.0 + resolution: "js-sha256@npm:0.9.0" + checksum: 10c0/f20b9245f6ebe666f42ca05536f777301132fb1aa7fbc22f10578fa302717a6cca507344894efdeaf40a011256eb2f7d517b94ac7105bd5cf087fa61551ad634 + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.1 + resolution: "js-yaml@npm:4.1.1" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json-stringify-safe@npm:^5.0.1": + version: 5.0.1 + resolution: "json-stringify-safe@npm:5.0.1" + checksum: 10c0/7dbf35cd0411d1d648dceb6d59ce5857ec939e52e4afc37601aa3da611f0987d5cee5b38d58329ceddf3ed48bd7215229c8d52059ab01f2444a338bf24ed0f37 + languageName: node + linkType: hard + +"json5@npm:^2.2.2": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"just-extend@npm:^6.2.0": + version: 6.2.0 + resolution: "just-extend@npm:6.2.0" + checksum: 10c0/d41cbdb6d85b986d4deaf2144d81d4f7266cd408fc95189d046d63f610c2dc486b141aeb6ef319c2d76fe904d45a6bb31f19b098ff0427c35688e0c383fc0511 + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"lodash.camelcase@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.camelcase@npm:4.3.0" + checksum: 10c0/fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lodash@npm:4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 + languageName: node + linkType: hard + +"loglevel@npm:^1.9.2": + version: 1.9.2 + resolution: "loglevel@npm:1.9.2" + checksum: 10c0/1e317fa4648fe0b4a4cffef6de037340592cee8547b07d4ce97a487abe9153e704b98451100c799b032c72bb89c9366d71c9fb8192ada8703269263ae77acdc7 + languageName: node + linkType: hard + +"long@npm:^5.0.0": + version: 5.3.2 + resolution: "long@npm:5.3.2" + checksum: 10c0/7130fe1cbce2dca06734b35b70d380ca3f70271c7f8852c922a7c62c86c4e35f0c39290565eca7133c625908d40e126ac57c02b1b1a4636b9457d77e1e60b981 + languageName: node + linkType: hard + +"loupe@npm:^2.3.6": + version: 2.3.7 + resolution: "loupe@npm:2.3.7" + dependencies: + get-func-name: "npm:^2.0.1" + checksum: 10c0/71a781c8fc21527b99ed1062043f1f2bb30bdaf54fa4cf92463427e1718bc6567af2988300bc243c1f276e4f0876f29e3cbf7b58106fdc186915687456ce5bf4 + languageName: node + linkType: hard + +"lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b + languageName: node + linkType: hard + +"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": + version: 11.2.4 + resolution: "lru-cache@npm:11.2.4" + checksum: 10c0/4a24f9b17537619f9144d7b8e42cd5a225efdfd7076ebe7b5e7dc02b860a818455201e67fbf000765233fe7e339d3c8229fc815e9b58ee6ede511e07608c19b2 + languageName: node + linkType: hard + +"madge@npm:^8.0.0": + version: 8.0.0 + resolution: "madge@npm:8.0.0" + dependencies: + chalk: "npm:^4.1.2" + commander: "npm:^7.2.0" + commondir: "npm:^1.0.1" + debug: "npm:^4.3.4" + dependency-tree: "npm:^11.0.0" + ora: "npm:^5.4.1" + pluralize: "npm:^8.0.0" + pretty-ms: "npm:^7.0.1" + rc: "npm:^1.2.8" + stream-to-array: "npm:^2.3.0" + ts-graphviz: "npm:^2.1.2" + walkdir: "npm:^0.4.1" + peerDependencies: + typescript: ^5.4.4 + peerDependenciesMeta: + typescript: + optional: true + bin: + madge: bin/cli.js + checksum: 10c0/63d173027f10922123c291e4c13ab4aeda1d10311995b68c0257c647c36a18b8d817c14fc1b431e92be46f394f2003967fd52767d60a09d9d1b2f020b740d213 + languageName: node + linkType: hard + +"magic-string@npm:^0.30.21": + version: 0.30.21 + resolution: "magic-string@npm:0.30.21" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.5.5" + checksum: 10c0/299378e38f9a270069fc62358522ddfb44e94244baa0d6a8980ab2a9b2490a1d03b236b447eee309e17eb3bddfa482c61259d47960eb018a904f0ded52780c4a + languageName: node + linkType: hard + +"make-error@npm:^1.1.1": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f + languageName: node + linkType: hard + +"make-fetch-happen@npm:^15.0.0": + version: 15.0.3 + resolution: "make-fetch-happen@npm:15.0.3" + dependencies: + "@npmcli/agent": "npm:^4.0.0" + cacache: "npm:^20.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^5.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^6.0.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^13.0.0" + checksum: 10c0/525f74915660be60b616bcbd267c4a5b59481b073ba125e45c9c3a041bb1a47a2bd0ae79d028eb6f5f95bf9851a4158423f5068539c3093621abb64027e8e461 + languageName: node + linkType: hard + +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f + languageName: node + linkType: hard + +"md5.js@npm:^1.3.4": + version: 1.3.5 + resolution: "md5.js@npm:1.3.5" + dependencies: + hash-base: "npm:^3.0.0" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"micromatch@npm:^4.0.4, micromatch@npm:^4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + +"miller-rabin@npm:^4.0.0": + version: 4.0.1 + resolution: "miller-rabin@npm:4.0.1" + dependencies: + bn.js: "npm:^4.0.0" + brorand: "npm:^1.0.1" + bin: + miller-rabin: bin/miller-rabin + checksum: 10c0/26b2b96f6e49dbcff7faebb78708ed2f5f9ae27ac8cbbf1d7c08f83cf39bed3d418c0c11034dce997da70d135cc0ff6f3a4c15dc452f8e114c11986388a64346 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-assert@npm:1.0.1" + checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd + languageName: node + linkType: hard + +"minimalistic-crypto-utils@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-crypto-utils@npm:1.0.1" + checksum: 10c0/790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 + languageName: node + linkType: hard + +"minimatch@npm:9.0.3": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac + languageName: node + linkType: hard + +"minimatch@npm:^10.1.1": + version: 10.1.1 + resolution: "minimatch@npm:10.1.1" + dependencies: + "@isaacs/brace-expansion": "npm:^5.0.0" + checksum: 10c0/c85d44821c71973d636091fddbfbffe62370f5ee3caf0241c5b60c18cd289e916200acb2361b7e987558cd06896d153e25d505db9fc1e43e6b4b6752e2702902 + languageName: node + linkType: hard + +"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1, minimatch@npm:^5.1.6": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.5": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed + languageName: node + linkType: hard + +"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass-fetch@npm:5.0.0" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^3.0.1" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/9443aab5feab190972f84b64116e54e58dd87a58e62399cae0a4a7461b80568281039b7c3a38ba96453431ebc799d1e26999e548540156216729a4967cd5ef06 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10c0/5aad75ab0090b8266069c9aabe582c021ae53eb33c6c691054a13a45db3b4f91a7fb1bd79151e6b4e9e9a86727b522527c0a06ec7d45206b745d54cd3097bcec + languageName: node + linkType: hard + +"mocha@npm:10.7.3": + version: 10.7.3 + resolution: "mocha@npm:10.7.3" + dependencies: + ansi-colors: "npm:^4.1.3" + browser-stdout: "npm:^1.3.1" + chokidar: "npm:^3.5.3" + debug: "npm:^4.3.5" + diff: "npm:^5.2.0" + escape-string-regexp: "npm:^4.0.0" + find-up: "npm:^5.0.0" + glob: "npm:^8.1.0" + he: "npm:^1.2.0" + js-yaml: "npm:^4.1.0" + log-symbols: "npm:^4.1.0" + minimatch: "npm:^5.1.6" + ms: "npm:^2.1.3" + serialize-javascript: "npm:^6.0.2" + strip-json-comments: "npm:^3.1.1" + supports-color: "npm:^8.1.1" + workerpool: "npm:^6.5.1" + yargs: "npm:^16.2.0" + yargs-parser: "npm:^20.2.9" + yargs-unparser: "npm:^2.0.0" + bin: + _mocha: bin/_mocha + mocha: bin/mocha.js + checksum: 10c0/76a205905ec626262d903954daca31ba8e0dd4347092f627b98b8508dcdb5b30be62ec8f7a405fab3b2e691bdc099721c3291b330c3ee85b8ec40d3d179f8728 + languageName: node + linkType: hard + +"module-definition@npm:^6.0.1": + version: 6.0.1 + resolution: "module-definition@npm:6.0.1" + dependencies: + ast-module-types: "npm:^6.0.1" + node-source-walk: "npm:^7.0.1" + bin: + module-definition: bin/cli.js + checksum: 10c0/b6c898e97041512364947e6b892b351352f3bf29fdc512d625586627828cfdd385665fbbc7c52ae3686ce5b026bde9a5e26ae22408812b9b3991f9d786566316 + languageName: node + linkType: hard + +"module-lookup-amd@npm:^9.0.3": + version: 9.0.5 + resolution: "module-lookup-amd@npm:9.0.5" + dependencies: + commander: "npm:^12.1.0" + glob: "npm:^7.2.3" + requirejs: "npm:^2.3.7" + requirejs-config-file: "npm:^4.0.0" + bin: + lookup-amd: bin/cli.js + checksum: 10c0/0c7aa77a4a57359d095b7a1ab1a3349ee02d85399a935bfddf47f7a1b1f3e1fa9c0040fdecbf4ce8c842d74665dde32b69467a752a5eb891f0270db005cdb730 + languageName: node + linkType: hard + +"ms@npm:^2.0.0, ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"nanoid@npm:3.3.4": + version: 3.3.4 + resolution: "nanoid@npm:3.3.4" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/a0747d5c6021828fe8d38334e5afb05d3268d7d4b06024058ec894ccc47070e4e81d268a6b75488d2ff3485fa79a75c251d4b7c6f31051bb54bb662b6fd2a27d + languageName: node + linkType: hard + +"nanoid@npm:^3.3.11": + version: 3.3.11 + resolution: "nanoid@npm:3.3.11" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b + languageName: node + linkType: hard + +"nise@npm:^6.0.0": + version: 6.1.1 + resolution: "nise@npm:6.1.1" + dependencies: + "@sinonjs/commons": "npm:^3.0.1" + "@sinonjs/fake-timers": "npm:^13.0.1" + "@sinonjs/text-encoding": "npm:^0.7.3" + just-extend: "npm:^6.2.0" + path-to-regexp: "npm:^8.1.0" + checksum: 10c0/09471adb738dc3be2981cc7815c90879ed6a5a3e162202ca66e12f9a5a0956bea718d0ec2f0c07acc26e3f958481b8fb30c30da76c13620e922f3b9dcd249c50 + languageName: node + linkType: hard + +"no-case@npm:^3.0.4": + version: 3.0.4 + resolution: "no-case@npm:3.0.4" + dependencies: + lower-case: "npm:^2.0.2" + tslib: "npm:^2.0.3" + checksum: 10c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 + languageName: node + linkType: hard + +"node-cache@npm:5.1.2": + version: 5.1.2 + resolution: "node-cache@npm:5.1.2" + dependencies: + clone: "npm:2.x" + checksum: 10c0/2f91907510a1276415ae5898269d0765934d5a4f3682c8b1b19964694a9b841c8bd791e1a125d1f89050f412e1da5dd982179d714252b3a7223abb05b8cb24d5 + languageName: node + linkType: hard + +"node-fetch@npm:^2.7.0": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 + languageName: node + linkType: hard + +"node-gyp-build@npm:^4.3.0": + version: 4.8.4 + resolution: "node-gyp-build@npm:4.8.4" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 10c0/444e189907ece2081fe60e75368784f7782cfddb554b60123743dfb89509df89f1f29c03bbfa16b3a3e0be3f48799a4783f487da6203245fa5bed239ba7407e1 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 12.1.0 + resolution: "node-gyp@npm:12.1.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^15.0.0" + nopt: "npm:^9.0.0" + proc-log: "npm:^6.0.0" + semver: "npm:^7.3.5" + tar: "npm:^7.5.2" + tinyglobby: "npm:^0.2.12" + which: "npm:^6.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/f43efea8aaf0beb6b2f6184e533edad779b2ae38062953e21951f46221dd104006cc574154f2ad4a135467a5aae92c49e84ef289311a82e08481c5df0e8dc495 + languageName: node + linkType: hard + +"node-source-walk@npm:^7.0.1": + version: 7.0.1 + resolution: "node-source-walk@npm:7.0.1" + dependencies: + "@babel/parser": "npm:^7.26.7" + checksum: 10c0/a3e484940d322d44c1d06cb32072d96338e44c63cdac315a0cb9d28934015cef088ba4ba1c47a274c60e4431d4d773fbb9c544e36ebd0085cba29bb9c7234911 + languageName: node + linkType: hard + +"nopt@npm:^9.0.0": + version: 9.0.0 + resolution: "nopt@npm:9.0.0" + dependencies: + abbrev: "npm:^4.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/1822eb6f9b020ef6f7a7516d7b64a8036e09666ea55ac40416c36e4b2b343122c3cff0e2f085675f53de1d2db99a2a89a60ccea1d120bcd6a5347bf6ceb4a7fd + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"object-is@npm:^1.1.5": + version: 1.1.6 + resolution: "object-is@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + checksum: 10c0/506af444c4dce7f8e31f34fc549e2fb8152d6b9c4a30c6e62852badd7f520b579c679af433e7a072f9d78eb7808d230dc12e1cf58da9154dfbf8813099ea0fe0 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + languageName: node + linkType: hard + +"object-sizeof@npm:2.6.5": + version: 2.6.5 + resolution: "object-sizeof@npm:2.6.5" + dependencies: + buffer: "npm:^6.0.3" + checksum: 10c0/ae733fc7aaf8eb2446aa632a34a2a30c9535afdb1997a626bf8912e64893c1afa0e1e6a9153235c09c6e8d586100eeb6fe2d869a82dcee00144cb11efb229d8e + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc + languageName: node + linkType: hard + +"once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^5.1.0": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" + dependencies: + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + word-wrap: "npm:^1.2.5" + checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 + languageName: node + linkType: hard + +"ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: "npm:^4.1.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-spinners: "npm:^2.5.0" + is-interactive: "npm:^1.0.0" + is-unicode-supported: "npm:^0.1.0" + log-symbols: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + wcwidth: "npm:^1.0.1" + checksum: 10c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 + languageName: node + linkType: hard + +"os-browserify@npm:^0.3.0": + version: 0.3.0 + resolution: "os-browserify@npm:0.3.0" + checksum: 10c0/6ff32cb1efe2bc6930ad0fd4c50e30c38010aee909eba8d65be60af55efd6cbb48f0287e3649b4e3f3a63dce5a667b23c187c4293a75e557f0d5489d735bcf52 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-map@npm:^7.0.2": + version: 7.0.4 + resolution: "p-map@npm:7.0.4" + checksum: 10c0/a5030935d3cb2919d7e89454d1ce82141e6f9955413658b8c9403cfe379283770ed3048146b44cde168aa9e8c716505f196d5689db0ae3ce9a71521a2fef3abd + languageName: node + linkType: hard + +"pako@npm:^2.0.3": + version: 2.1.0 + resolution: "pako@npm:2.1.0" + checksum: 10c0/8e8646581410654b50eb22a5dfd71159cae98145bd5086c9a7a816ec0370b5f72b4648d08674624b3870a521e6a3daffd6c2f7bc00fdefc7063c9d8232ff5116 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.9": + version: 5.1.9 + resolution: "parse-asn1@npm:5.1.9" + dependencies: + asn1.js: "npm:^4.10.1" + browserify-aes: "npm:^1.2.0" + evp_bytestokey: "npm:^1.0.3" + pbkdf2: "npm:^3.1.5" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/6dfe27c121be3d63ebbf95f03d2ae0a07dd716d44b70b0bd3458790a822a80de05361c62147271fd7b845dcc2d37755d9c9c393064a3438fe633779df0bc07e7 + languageName: node + linkType: hard + +"parse-ms@npm:^2.1.0": + version: 2.1.0 + resolution: "parse-ms@npm:2.1.0" + checksum: 10c0/9c5c0a95c6267c84085685556a6e102ee806c3147ec11cbb9b98e35998eb4a48a757bd6ea7bfd930062de65909a33d24985055b4394e70aa0b65ee40cef16911 + languageName: node + linkType: hard + +"path-browserify@npm:^1.0.1": + version: 1.0.1 + resolution: "path-browserify@npm:1.0.1" + checksum: 10c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-scurry@npm:^2.0.0": + version: 2.0.1 + resolution: "path-scurry@npm:2.0.1" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 10c0/2a16ed0e81fbc43513e245aa5763354e25e787dab0d539581a6c3f0f967461a159ed6236b2559de23aa5b88e7dc32b469b6c47568833dd142a4b24b4f5cd2620 + languageName: node + linkType: hard + +"path-to-regexp@npm:^8.1.0": + version: 8.3.0 + resolution: "path-to-regexp@npm:8.3.0" + checksum: 10c0/ee1544a73a3f294a97a4c663b0ce71bbf1621d732d80c9c9ed201b3e911a86cb628ebad691b9d40f40a3742fe22011e5a059d8eed2cf63ec2cb94f6fb4efe67c + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"pathval@npm:^1.1.1": + version: 1.1.1 + resolution: "pathval@npm:1.1.1" + checksum: 10c0/f63e1bc1b33593cdf094ed6ff5c49c1c0dc5dc20a646ca9725cc7fe7cd9995002d51d5685b9b2ec6814342935748b711bafa840f84c0bb04e38ff40a335c94dc + languageName: node + linkType: hard + +"pbkdf2@npm:^3.1.2, pbkdf2@npm:^3.1.5": + version: 3.1.5 + resolution: "pbkdf2@npm:3.1.5" + dependencies: + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + ripemd160: "npm:^2.0.3" + safe-buffer: "npm:^5.2.1" + sha.js: "npm:^2.4.12" + to-buffer: "npm:^1.2.1" + checksum: 10c0/ea42e8695e49417eefabb19a08ab19a602cc6cc72d2df3f109c39309600230dee3083a6f678d5d42fe035d6ae780038b80ace0e68f9792ee2839bf081fe386f3 + languageName: node + linkType: hard + +"picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 + languageName: node + linkType: hard + +"pluralize@npm:^8.0.0": + version: 8.0.0 + resolution: "pluralize@npm:8.0.0" + checksum: 10c0/2044cfc34b2e8c88b73379ea4a36fc577db04f651c2909041b054c981cd863dd5373ebd030123ab058d194ae615d3a97cfdac653991e499d10caf592e8b3dc33 + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.1.0 + resolution: "possible-typed-array-names@npm:1.1.0" + checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 + languageName: node + linkType: hard + +"postcss-values-parser@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-values-parser@npm:6.0.2" + dependencies: + color-name: "npm:^1.1.4" + is-url-superb: "npm:^4.0.0" + quote-unquote: "npm:^1.0.0" + peerDependencies: + postcss: ^8.2.9 + checksum: 10c0/633b8bc7c46f7b6e2b1cb1f33aa0222a5cacb7f485eb41e6f902b5f37ab9884cd8e7e7b0706afb7e3c7766d85096b59e65f59a1eaefac55e2fc952a24f23bcb8 + languageName: node + linkType: hard + +"postcss@npm:^8.5.1, postcss@npm:^8.5.6": + version: 8.5.6 + resolution: "postcss@npm:8.5.6" + dependencies: + nanoid: "npm:^3.3.11" + picocolors: "npm:^1.1.1" + source-map-js: "npm:^1.2.1" + checksum: 10c0/5127cc7c91ed7a133a1b7318012d8bfa112da9ef092dddf369ae699a1f10ebbd89b1b9f25f3228795b84585c72aabd5ced5fc11f2ba467eedf7b081a66fad024 + languageName: node + linkType: hard + +"precinct@npm:^12.2.0": + version: 12.2.0 + resolution: "precinct@npm:12.2.0" + dependencies: + "@dependents/detective-less": "npm:^5.0.1" + commander: "npm:^12.1.0" + detective-amd: "npm:^6.0.1" + detective-cjs: "npm:^6.0.1" + detective-es6: "npm:^5.0.1" + detective-postcss: "npm:^7.0.1" + detective-sass: "npm:^6.0.1" + detective-scss: "npm:^5.0.1" + detective-stylus: "npm:^5.0.1" + detective-typescript: "npm:^14.0.0" + detective-vue2: "npm:^2.2.0" + module-definition: "npm:^6.0.1" + node-source-walk: "npm:^7.0.1" + postcss: "npm:^8.5.1" + typescript: "npm:^5.7.3" + bin: + precinct: bin/cli.js + checksum: 10c0/5ce79638391b29cbfd99ac5d756cc05f1a8dd505474ca33b44ad3a62dc130c8681fff5edfa464ccc92fe4024c49cc39a67c7c993243a067e960e8e946044185b + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prettier-linter-helpers@npm:^1.0.0": + version: 1.0.1 + resolution: "prettier-linter-helpers@npm:1.0.1" + dependencies: + fast-diff: "npm:^1.1.2" + checksum: 10c0/91cea965681bc5f62c9d26bd3ca6358b81557261d4802e96ec1cf0acbd99d4b61632d53320cd2c3ec7d7f7805a81345644108a41ef46ddc9688e783a9ac792d1 + languageName: node + linkType: hard + +"prettier@npm:3.0.1": + version: 3.0.1 + resolution: "prettier@npm:3.0.1" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/7231768b6e0f0f17cbaa83a4f7cdb100df0229ef1910b0b2cf72ce5ed8ee25ae7ec0d30cde20dcd898a002c6d1fcdb8a6ab0f8f5d8fc1275b7c29ea9e56305f2 + languageName: node + linkType: hard + +"prettier@npm:^2.5.1": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a + languageName: node + linkType: hard + +"pretty-format@npm:^28.0.0, pretty-format@npm:^28.1.3": + version: 28.1.3 + resolution: "pretty-format@npm:28.1.3" + dependencies: + "@jest/schemas": "npm:^28.1.3" + ansi-regex: "npm:^5.0.1" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/596d8b459b6fdac7dcbd70d40169191e889939c17ffbcc73eebe2a9a6f82cdbb57faffe190274e0a507d9ecdf3affadf8a9b43442a625eecfbd2813b9319660f + languageName: node + linkType: hard + +"pretty-ms@npm:^7.0.1": + version: 7.0.1 + resolution: "pretty-ms@npm:7.0.1" + dependencies: + parse-ms: "npm:^2.1.0" + checksum: 10c0/069aec9d939e7903846b3db53b020bed92e3dc5909e0fef09ec8ab104a0b7f9a846605a1633c60af900d288582fb333f6f30469e59d6487a2330301fad35a89c + languageName: node + linkType: hard + +"proc-log@npm:^6.0.0": + version: 6.1.0 + resolution: "proc-log@npm:6.1.0" + checksum: 10c0/4f178d4062733ead9d71a9b1ab24ebcecdfe2250916a5b1555f04fe2eda972a0ec76fbaa8df1ad9c02707add6749219d118a4fc46dc56bdfe4dde4b47d80bb82 + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + languageName: node + linkType: hard + +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"protobufjs@npm:*": + version: 8.0.0 + resolution: "protobufjs@npm:8.0.0" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.2" + "@protobufjs/base64": "npm:^1.1.2" + "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/eventemitter": "npm:^1.1.0" + "@protobufjs/fetch": "npm:^1.1.0" + "@protobufjs/float": "npm:^1.0.2" + "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/path": "npm:^1.1.2" + "@protobufjs/pool": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.0" + "@types/node": "npm:>=13.7.0" + long: "npm:^5.0.0" + checksum: 10c0/6fb29ca3c6abc2095a777407750f6094448b7b68bbf04147ec49ee442f85f151592338449f56d19883ea67c39ce915e3d47ec6c5c92f0bcac1eaba1841ab84ff + languageName: node + linkType: hard + +"protobufjs@npm:^7.4.0, protobufjs@npm:^7.5.3": + version: 7.5.4 + resolution: "protobufjs@npm:7.5.4" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.2" + "@protobufjs/base64": "npm:^1.1.2" + "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/eventemitter": "npm:^1.1.0" + "@protobufjs/fetch": "npm:^1.1.0" + "@protobufjs/float": "npm:^1.0.2" + "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/path": "npm:^1.1.2" + "@protobufjs/pool": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.0" + "@types/node": "npm:>=13.7.0" + long: "npm:^5.0.0" + checksum: 10c0/913b676109ffb3c05d3d31e03a684e569be91f3bba8613da4a683d69d9dba948daa2afd7d2e7944d1aa6c417890c35d9d9a8883c1160affafb0f9670d59ef722 + languageName: node + linkType: hard + +"proxy-from-env@npm:^1.1.0": + version: 1.1.0 + resolution: "proxy-from-env@npm:1.1.0" + checksum: 10c0/fe7dd8b1bdbbbea18d1459107729c3e4a2243ca870d26d34c2c1bcd3e4425b7bcc5112362df2d93cc7fb9746f6142b5e272fd1cc5c86ddf8580175186f6ad42b + languageName: node + linkType: hard + +"public-encrypt@npm:^4.0.3": + version: 4.0.3 + resolution: "public-encrypt@npm:4.0.3" + dependencies: + bn.js: "npm:^4.1.0" + browserify-rsa: "npm:^4.0.0" + create-hash: "npm:^1.1.0" + parse-asn1: "npm:^5.0.0" + randombytes: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/6c2cc19fbb554449e47f2175065d6b32f828f9b3badbee4c76585ac28ae8641aafb9bb107afc430c33c5edd6b05dbe318df4f7d6d7712b1093407b11c4280700 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"quote-unquote@npm:^1.0.0": + version: 1.0.0 + resolution: "quote-unquote@npm:1.0.0" + checksum: 10c0/eba86bb7f68ada486f5608c5c71cc155235f0408b8a0a180436cdf2457ae86f56a17de6b0bc5a1b7ae5f27735b3b789662cdf7f3b8195ac816cd0289085129ec + languageName: node + linkType: hard + +"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: "npm:^5.1.0" + checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 + languageName: node + linkType: hard + +"randomfill@npm:^1.0.4": + version: 1.0.4 + resolution: "randomfill@npm:1.0.4" + dependencies: + randombytes: "npm:^2.0.5" + safe-buffer: "npm:^5.1.0" + checksum: 10c0/11aeed35515872e8f8a2edec306734e6b74c39c46653607f03c68385ab8030e2adcc4215f76b5e4598e028c4750d820afd5c65202527d831d2a5f207fe2bc87c + languageName: node + linkType: hard + +"rc@npm:^1.2.8": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: "npm:^0.6.0" + ini: "npm:~1.3.0" + minimist: "npm:^1.2.0" + strip-json-comments: "npm:~2.0.1" + bin: + rc: ./cli.js + checksum: 10c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 + languageName: node + linkType: hard + +"react-is@npm:^18.0.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + +"readable-stream@npm:^2.3.8": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.3" + isarray: "npm:~1.0.0" + process-nextick-args: "npm:~2.0.0" + safe-buffer: "npm:~5.1.1" + string_decoder: "npm:~1.1.1" + util-deprecate: "npm:~1.0.1" + checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + languageName: node + linkType: hard + +"readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"requirejs-config-file@npm:^4.0.0": + version: 4.0.0 + resolution: "requirejs-config-file@npm:4.0.0" + dependencies: + esprima: "npm:^4.0.0" + stringify-object: "npm:^3.2.1" + checksum: 10c0/18ea5b39a63be043c94103e97a880e68a48534cab6a90a202163b9c7935097638f3d6e9b44c28f62541d35cc3e738a6558359b6b21b42c466623b18eccc65635 + languageName: node + linkType: hard + +"requirejs@npm:^2.3.7": + version: 2.3.8 + resolution: "requirejs@npm:2.3.8" + bin: + r.js: bin/r.js + r_js: bin/r.js + checksum: 10c0/84471a69a7f4c8a30974371dd6fc5194fe450e49a55298f2f91ef48c765cfe1babf25b6e92d765c0595ee22bfc40bd1e8cb5e242c2d4e9d2301dfbec459d13a0 + languageName: node + linkType: hard + +"resolve-dependency-path@npm:^4.0.1": + version: 4.0.1 + resolution: "resolve-dependency-path@npm:4.0.1" + checksum: 10c0/55cc696412387d3d2e2d98d3c1e44df661bfcc35ccd8035b61ace3575c7b2704ef55c75f4409fba99049f9fa70fc7b9c5f896a5d893f4548d376d33445addd9b + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve@npm:^1.22.10": + version: 1.22.11 + resolution: "resolve@npm:1.22.11" + dependencies: + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/f657191507530f2cbecb5815b1ee99b20741ea6ee02a59c57028e9ec4c2c8d7681afcc35febbd554ac0ded459db6f2d8153382c53a2f266cee2575e512674409 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.22.10#optional!builtin": + version: 1.22.11 + resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/ee5b182f2e37cb1165465e58c6abc797fec0a80b5ba3231607beb4677db0c9291ac010c47cf092b6daa2b7f518d69a0e21888e7e2b633f68d501a874212a8c63 + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.1.0 + resolution: "reusify@npm:1.1.0" + checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + +"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1, ripemd160@npm:^2.0.3": + version: 2.0.3 + resolution: "ripemd160@npm:2.0.3" + dependencies: + hash-base: "npm:^3.1.2" + inherits: "npm:^2.0.4" + checksum: 10c0/3f472fb453241cfe692a77349accafca38dbcdc9d96d5848c088b2932ba41eb968630ecff7b175d291c7487a4945aee5a81e30c064d1f94e36070f7e0c37ed6c + languageName: node + linkType: hard + +"rpc-websockets@npm:^9.0.2": + version: 9.3.2 + resolution: "rpc-websockets@npm:9.3.2" + dependencies: + "@swc/helpers": "npm:^0.5.11" + "@types/uuid": "npm:^8.3.4" + "@types/ws": "npm:^8.2.2" + buffer: "npm:^6.0.3" + bufferutil: "npm:^4.0.1" + eventemitter3: "npm:^5.0.1" + utf-8-validate: "npm:^5.0.2" + uuid: "npm:^8.3.2" + ws: "npm:^8.5.0" + dependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/f0fed4076ae6edf116d5b3378a83acab0c5b066dbd2731b9a91d71afcc669e35b4fa2889512df522a80fa0a8ac1f8182bd253d601aef82ec1ffb05c9ffab1b59 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.2.1" + checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"sass-lookup@npm:^6.1.0": + version: 6.1.0 + resolution: "sass-lookup@npm:6.1.0" + dependencies: + commander: "npm:^12.1.0" + enhanced-resolve: "npm:^5.18.0" + bin: + sass-lookup: bin/cli.js + checksum: 10c0/a4b774554fea5d234603d0ba96f5e79cc6c32182a0c55f9a8333c8ee13bb0e6146bd3fc1299b2fe8b2a56551ff5df1f66ef55b858042a0001efd027e4de26fdf + languageName: node + linkType: hard + +"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.4, semver@npm:^7.7.3": + version: 7.7.3 + resolution: "semver@npm:7.7.3" + bin: + semver: bin/semver.js + checksum: 10c0/4afe5c986567db82f44c8c6faef8fe9df2a9b1d98098fc1721f57c696c4c21cebd572f297fc21002f81889492345b8470473bc6f4aff5fb032a6ea59ea2bc45e + languageName: node + linkType: hard + +"serialize-javascript@npm:^6.0.2": + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" + dependencies: + randombytes: "npm:^2.1.0" + checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.2": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c + languageName: node + linkType: hard + +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.12, sha.js@npm:^2.4.8": + version: 2.4.12 + resolution: "sha.js@npm:2.4.12" + dependencies: + inherits: "npm:^2.0.4" + safe-buffer: "npm:^5.2.1" + to-buffer: "npm:^1.2.0" + bin: + sha.js: bin.js + checksum: 10c0/9d36bdd76202c8116abbe152a00055ccd8a0099cb28fc17c01fa7bb2c8cffb9ca60e2ab0fe5f274ed6c45dc2633d8c39cf7ab050306c231904512ba9da4d8ab1 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"sinon@npm:18.0.1": + version: 18.0.1 + resolution: "sinon@npm:18.0.1" + dependencies: + "@sinonjs/commons": "npm:^3.0.1" + "@sinonjs/fake-timers": "npm:11.2.2" + "@sinonjs/samsam": "npm:^8.0.0" + diff: "npm:^5.2.0" + nise: "npm:^6.0.0" + supports-color: "npm:^7" + checksum: 10c0/c4554b8d9654d42fc4baefecd3b5ac42bcce73ad926d58521233d9c355dc2c1a0d73c55e5b2c929b6814e528cd9b54bc61096b9288579f9b284edd6e3d2da3df + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"snake-case@npm:^3.0.4": + version: 3.0.4 + resolution: "snake-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.7 + resolution: "socks@npm:2.8.7" + dependencies: + ip-address: "npm:^10.0.1" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/2805a43a1c4bcf9ebf6e018268d87b32b32b06fbbc1f9282573583acc155860dc361500f89c73bfbb157caa1b4ac78059eac0ef15d1811eb0ca75e0bdadbc9d2 + languageName: node + linkType: hard + +"solana-bankrun-darwin-arm64@npm:0.3.1": + version: 0.3.1 + resolution: "solana-bankrun-darwin-arm64@npm:0.3.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"solana-bankrun-darwin-universal@npm:0.3.1": + version: 0.3.1 + resolution: "solana-bankrun-darwin-universal@npm:0.3.1" + conditions: os=darwin + languageName: node + linkType: hard + +"solana-bankrun-darwin-x64@npm:0.3.1": + version: 0.3.1 + resolution: "solana-bankrun-darwin-x64@npm:0.3.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"solana-bankrun-linux-x64-gnu@npm:0.3.1": + version: 0.3.1 + resolution: "solana-bankrun-linux-x64-gnu@npm:0.3.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"solana-bankrun-linux-x64-musl@npm:0.3.1": + version: 0.3.1 + resolution: "solana-bankrun-linux-x64-musl@npm:0.3.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"solana-bankrun@npm:0.3.1": + version: 0.3.1 + resolution: "solana-bankrun@npm:0.3.1" + dependencies: + "@solana/web3.js": "npm:^1.68.0" + bs58: "npm:^4.0.1" + solana-bankrun-darwin-arm64: "npm:0.3.1" + solana-bankrun-darwin-universal: "npm:0.3.1" + solana-bankrun-darwin-x64: "npm:0.3.1" + solana-bankrun-linux-x64-gnu: "npm:0.3.1" + solana-bankrun-linux-x64-musl: "npm:0.3.1" + dependenciesMeta: + solana-bankrun-darwin-arm64: + optional: true + solana-bankrun-darwin-universal: + optional: true + solana-bankrun-darwin-x64: + optional: true + solana-bankrun-linux-x64-gnu: + optional: true + solana-bankrun-linux-x64-musl: + optional: true + checksum: 10c0/bc63b7e01a7c2d15076fe755fb7ff4e45f644f6a0e0fc8ecb17d57933b24e7505aaf3e8c67cdab7d696f2ef8bd2e7322e29665ace87802893c082322e52ceda2 + languageName: node + linkType: hard + +"source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf + languageName: node + linkType: hard + +"source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + +"spok@npm:^1.4.3": + version: 1.5.5 + resolution: "spok@npm:1.5.5" + dependencies: + ansicolors: "npm:~0.3.2" + find-process: "npm:^1.4.7" + checksum: 10c0/3725c69833f81b126e32444d16dc4a25cdda54353121593a5342a4a6b4f152eecadafe19c74936f67a8a0443d2f330bcfd8b492a075a6e7b96429a619f813f33 + languageName: node + linkType: hard + +"ssri@npm:^13.0.0": + version: 13.0.0 + resolution: "ssri@npm:13.0.0" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/405f3a531cd98b013cecb355d63555dca42fd12c7bc6671738aaa9a82882ff41cdf0ef9a2b734ca4f9a760338f114c29d01d9238a65db3ccac27929bd6e6d4b2 + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + +"stream-browserify@npm:^3.0.0": + version: 3.0.0 + resolution: "stream-browserify@npm:3.0.0" + dependencies: + inherits: "npm:~2.0.4" + readable-stream: "npm:^3.5.0" + checksum: 10c0/ec3b975a4e0aa4b3dc5e70ffae3fc8fd29ac725353a14e72f213dff477b00330140ad014b163a8cbb9922dfe90803f81a5ea2b269e1bbfd8bd71511b88f889ad + languageName: node + linkType: hard + +"stream-chain@npm:^2.2.5": + version: 2.2.5 + resolution: "stream-chain@npm:2.2.5" + checksum: 10c0/c512f50190d7c92d688fa64e7af540c51b661f9c2b775fc72bca38ea9bca515c64c22c2197b1be463741daacbaaa2dde8a8ea24ebda46f08391224f15249121a + languageName: node + linkType: hard + +"stream-json@npm:^1.9.1": + version: 1.9.1 + resolution: "stream-json@npm:1.9.1" + dependencies: + stream-chain: "npm:^2.2.5" + checksum: 10c0/0521e5cb3fb6b0e2561d715975e891bd81fa77d0239c8d0b1756846392bc3c7cdd7f1ddb0fe7ed77e6fdef58daab9e665d3b39f7d677bd0859e65a2bff59b92c + languageName: node + linkType: hard + +"stream-to-array@npm:^2.3.0": + version: 2.3.0 + resolution: "stream-to-array@npm:2.3.0" + dependencies: + any-promise: "npm:^1.1.0" + checksum: 10c0/19d66e4e3c12e0aadd8755027edf7d90b696bd978eec5111a5cd2b67befa8851afd8c1b618121c3059850165c4ee4afc307f84869cf6db7fb24708d3523958f8 + languageName: node + linkType: hard + +"strict-event-emitter-types@npm:2.0.0": + version: 2.0.0 + resolution: "strict-event-emitter-types@npm:2.0.0" + checksum: 10c0/7a2985b81908c2a7d1de10afe3be1de3423b8ce6188dc32aeb3dbaf66d4ac3f11029d6931c67d972a3bb976bbd04d27ee090eeed1cbd089c5ba3e899a04ed1b7 + languageName: node + linkType: hard + +"string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: "npm:~5.1.0" + checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + languageName: node + linkType: hard + +"stringify-object@npm:^3.2.1": + version: 3.3.0 + resolution: "stringify-object@npm:3.3.0" + dependencies: + get-own-enumerable-property-symbols: "npm:^3.0.0" + is-obj: "npm:^1.0.1" + is-regexp: "npm:^1.0.0" + checksum: 10c0/ba8078f84128979ee24b3de9a083489cbd3c62cb8572a061b47d4d82601a8ae4b4d86fa8c54dd955593da56bb7c16a6de51c27221fdc6b7139bb4f29d815f35b + languageName: node + linkType: hard + +"strip-ansi@npm:6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 + languageName: node + linkType: hard + +"stylus-lookup@npm:^6.1.0": + version: 6.1.0 + resolution: "stylus-lookup@npm:6.1.0" + dependencies: + commander: "npm:^12.1.0" + bin: + stylus-lookup: bin/cli.js + checksum: 10c0/1b5868a6709fbd5597985d89bc265cb85ac03e456c6ecdf4342506b0082094b7bae7030ffbb04d5b13ce44bbdce66db4594bdd4c766817b4a0d32c9fcc42bdcd + languageName: node + linkType: hard + +"superstruct@npm:^0.15.4": + version: 0.15.5 + resolution: "superstruct@npm:0.15.5" + checksum: 10c0/73ae2043443dcc7868da6e8b4e4895410c79a88e021b514c665161199675ee920d5eadd85bb9dee5a9f515817e62f4b65a67ccb82d29f73259d012afcbcd3ce4 + languageName: node + linkType: hard + +"superstruct@npm:^2.0.2": + version: 2.0.2 + resolution: "superstruct@npm:2.0.2" + checksum: 10c0/c6853db5240b4920f47b3c864dd1e23ede6819ea399ad29a65387d746374f6958c5f1c5b7e5bb152d9db117a74973e5005056d9bb83c24e26f18ec6bfae4a718 + languageName: node + linkType: hard + +"supports-color@npm:7.2.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"tapable@npm:^2.2.0": + version: 2.3.0 + resolution: "tapable@npm:2.3.0" + checksum: 10c0/cb9d67cc2c6a74dedc812ef3085d9d681edd2c1fa18e4aef57a3c0605fdbe44e6b8ea00bd9ef21bc74dd45314e39d31227aa031ebf2f5e38164df514136f2681 + languageName: node + linkType: hard + +"tar@npm:^7.5.2": + version: 7.5.2 + resolution: "tar@npm:7.5.2" + dependencies: + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.1.0" + yallist: "npm:^5.0.0" + checksum: 10c0/a7d8b801139b52f93a7e34830db0de54c5aa45487c7cb551f6f3d44a112c67f1cb8ffdae856b05fd4f17b1749911f1c26f1e3a23bbe0279e17fd96077f13f467 + languageName: node + linkType: hard + +"text-encoding-utf-8@npm:^1.0.2": + version: 1.0.2 + resolution: "text-encoding-utf-8@npm:1.0.2" + checksum: 10c0/87a64b394c850e8387c2ca7fc6929a26ce97fb598f1c55cd0fdaec4b8e2c3ed6770f65b2f3309c9175ef64ac5e403c8e48b53ceeb86d2897940c5e19cc00bb99 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" + dependencies: + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.3" + checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 + languageName: node + linkType: hard + +"to-buffer@npm:^1.2.0, to-buffer@npm:^1.2.1, to-buffer@npm:^1.2.2": + version: 1.2.2 + resolution: "to-buffer@npm:1.2.2" + dependencies: + isarray: "npm:^2.0.5" + safe-buffer: "npm:^5.2.1" + typed-array-buffer: "npm:^1.0.3" + checksum: 10c0/56bc56352f14a2c4a0ab6277c5fc19b51e9534882b98eb068b39e14146591e62fa5b06bf70f7fed1626230463d7e60dca81e815096656e5e01c195c593873d12 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"toml@npm:^3.0.0": + version: 3.0.0 + resolution: "toml@npm:3.0.0" + checksum: 10c0/8d7ed3e700ca602e5419fca343e1c595eb7aa177745141f0761a5b20874b58ee5c878cd045c408da9d130cb2b611c639912210ba96ce2f78e443569aa8060c18 + languageName: node + linkType: hard + +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 + languageName: node + linkType: hard + +"traverse-chain@npm:~0.1.0": + version: 0.1.0 + resolution: "traverse-chain@npm:0.1.0" + checksum: 10c0/2b4fc19b52692c4970a18a777ba19ecbc1664f25b33815a5e5f06d0311e9e6a65ad2511b86e4ff0f0211ca0bf242a8ec3a902d8893c9d6a8f9d3ef4e658e2b24 + languageName: node + linkType: hard + +"ts-api-utils@npm:^1.0.1": + version: 1.4.3 + resolution: "ts-api-utils@npm:1.4.3" + peerDependencies: + typescript: ">=4.2.0" + checksum: 10c0/e65dc6e7e8141140c23e1dc94984bf995d4f6801919c71d6dc27cf0cd51b100a91ffcfe5217626193e5bea9d46831e8586febdc7e172df3f1091a7384299e23a + languageName: node + linkType: hard + +"ts-api-utils@npm:^2.4.0": + version: 2.4.0 + resolution: "ts-api-utils@npm:2.4.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 10c0/ed185861aef4e7124366a3f6561113557a57504267d4d452a51e0ba516a9b6e713b56b4aeaab9fa13de9db9ab755c65c8c13a777dba9133c214632cb7b65c083 + languageName: node + linkType: hard + +"ts-graphviz@npm:^2.1.2": + version: 2.1.6 + resolution: "ts-graphviz@npm:2.1.6" + dependencies: + "@ts-graphviz/adapter": "npm:^2.0.6" + "@ts-graphviz/ast": "npm:^2.0.7" + "@ts-graphviz/common": "npm:^2.1.5" + "@ts-graphviz/core": "npm:^2.0.7" + checksum: 10c0/ecc3d1f75d067b846bad332954e96652eeeccd53be82eef83065e9fad7568a656ed936f23932fe131d8ea0f88ecdf38cb19ca5cb753e081d6d79848a2fa80088 + languageName: node + linkType: hard + +"ts-log@npm:^2.2.7": + version: 2.2.7 + resolution: "ts-log@npm:2.2.7" + checksum: 10c0/2c63a7ccdea6dad774f51ba031d9b8d7242833733a1122e20be7e2817556f8e5691bd589860940068073c3859f8cdd8b99e2f65934b95a3552e97a60066ea7f3 + languageName: node + linkType: hard + +"ts-node@npm:10.9.2": + version: 10.9.2 + resolution: "ts-node@npm:10.9.2" + dependencies: + "@cspotcode/source-map-support": "npm:^0.8.0" + "@tsconfig/node10": "npm:^1.0.7" + "@tsconfig/node12": "npm:^1.0.7" + "@tsconfig/node14": "npm:^1.0.0" + "@tsconfig/node16": "npm:^1.0.2" + acorn: "npm:^8.4.1" + acorn-walk: "npm:^8.1.1" + arg: "npm:^4.1.0" + create-require: "npm:^1.1.0" + diff: "npm:^4.0.1" + make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" + yn: "npm:3.1.1" + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + bin: + ts-node: dist/bin.js + ts-node-cwd: dist/bin-cwd.js + ts-node-esm: dist/bin-esm.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: 10c0/5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2 + languageName: node + linkType: hard + +"tsconfig-paths@npm:^4.2.0": + version: 4.2.0 + resolution: "tsconfig-paths@npm:4.2.0" + dependencies: + json5: "npm:^2.2.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/09a5877402d082bb1134930c10249edeebc0211f36150c35e1c542e5b91f1047b1ccf7da1e59babca1ef1f014c525510f4f870de7c9bda470c73bb4e2721b3ea + languageName: node + linkType: hard + +"tslib@npm:^2.0.3, tslib@npm:^2.8.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + +"tweetnacl-util@npm:0.15.1": + version: 0.15.1 + resolution: "tweetnacl-util@npm:0.15.1" + checksum: 10c0/796fad76238e40e853dff79516406a27b41549bfd6fabf4ba89d87ca31acf232122f825daf955db8c8573cc98190d7a6d39ece9ed8ae0163370878c310650a80 + languageName: node + linkType: hard + +"tweetnacl@npm:1.0.3": + version: 1.0.3 + resolution: "tweetnacl@npm:1.0.3" + checksum: 10c0/069d9df51e8ad4a89fbe6f9806c68e06c65be3c7d42f0701cc43dba5f0d6064686b238bbff206c5addef8854e3ce00c643bff59432ea2f2c639feab0ee1a93f9 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd + languageName: node + linkType: hard + +"type-detect@npm:^4.0.0, type-detect@npm:^4.1.0": + version: 4.1.0 + resolution: "type-detect@npm:4.1.0" + checksum: 10c0/df8157ca3f5d311edc22885abc134e18ff8ffbc93d6a9848af5b682730ca6a5a44499259750197250479c5331a8a75b5537529df5ec410622041650a7f293e2a + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 + languageName: node + linkType: hard + +"typescript@npm:5.4.5": + version: 5.4.5 + resolution: "typescript@npm:5.4.5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/2954022ada340fd3d6a9e2b8e534f65d57c92d5f3989a263754a78aba549f7e6529acc1921913560a4b816c46dce7df4a4d29f9f11a3dc0d4213bb76d043251e + languageName: node + linkType: hard + +"typescript@npm:^5.7.3, typescript@npm:^5.8.3": + version: 5.9.3 + resolution: "typescript@npm:5.9.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A5.4.5#optional!builtin": + version: 5.4.5 + resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/db2ad2a16ca829f50427eeb1da155e7a45e598eec7b086d8b4e8ba44e5a235f758e606d681c66992230d3fc3b8995865e5fd0b22a2c95486d0b3200f83072ec9 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^5.7.3#optional!builtin, typescript@patch:typescript@npm%3A^5.8.3#optional!builtin": + version: 5.9.3 + resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=cef18b" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/6f7e53bf0d9702350deeb6f35e08b69cbc8b958c33e0ec77bdc0ad6a6c8e280f3959dcbfde6f5b0848bece57810696489deaaa53d75de3578ff255d168c1efbd + languageName: node + linkType: hard + +"undici-types@npm:^7.11.0": + version: 7.18.2 + resolution: "undici-types@npm:7.18.2" + checksum: 10c0/85a79189113a238959d7a647368e4f7c5559c3a404ebdb8fc4488145ce9426fcd82252a844a302798dfc0e37e6fb178ff481ed03bc4caf634c5757d9ef43521d + languageName: node + linkType: hard + +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 + languageName: node + linkType: hard + +"undici-types@npm:~7.16.0": + version: 7.16.0 + resolution: "undici-types@npm:7.16.0" + checksum: 10c0/3033e2f2b5c9f1504bdc5934646cb54e37ecaca0f9249c983f7b1fc2e87c6d18399ebb05dc7fd5419e02b2e915f734d872a65da2e3eeed1813951c427d33cc9a + languageName: node + linkType: hard + +"unique-filename@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-filename@npm:5.0.0" + dependencies: + unique-slug: "npm:^6.0.0" + checksum: 10c0/afb897e9cf4c2fb622ea716f7c2bb462001928fc5f437972213afdf1cc32101a230c0f1e9d96fc91ee5185eca0f2feb34127145874975f347be52eb91d6ccc2c + languageName: node + linkType: hard + +"unique-slug@npm:^6.0.0": + version: 6.0.0 + resolution: "unique-slug@npm:6.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/da7ade4cb04eb33ad0499861f82fe95ce9c7c878b7139dc54d140ecfb6a6541c18a5c8dac16188b8b379fe62c0c1f1b710814baac910cde5f4fec06212126c6a + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"utf-8-validate@npm:^5.0.2": + version: 5.0.10 + resolution: "utf-8-validate@npm:5.0.10" + dependencies: + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10c0/23cd6adc29e6901aa37ff97ce4b81be9238d0023c5e217515b34792f3c3edb01470c3bd6b264096dd73d0b01a1690b57468de3a24167dd83004ff71c51cc025f + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + languageName: node + linkType: hard + +"util@npm:^0.12.5": + version: 0.12.5 + resolution: "util@npm:0.12.5" + dependencies: + inherits: "npm:^2.0.3" + is-arguments: "npm:^1.0.4" + is-generator-function: "npm:^1.0.7" + is-typed-array: "npm:^1.1.3" + which-typed-array: "npm:^1.1.2" + checksum: 10c0/c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3 + languageName: node + linkType: hard + +"uuid@npm:8.3.2, uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + languageName: node + linkType: hard + +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 + languageName: node + linkType: hard + +"vm-browserify@npm:^1.1.2": + version: 1.1.2 + resolution: "vm-browserify@npm:1.1.2" + checksum: 10c0/0cc1af6e0d880deb58bc974921320c187f9e0a94f25570fca6b1bd64e798ce454ab87dfd797551b1b0cc1849307421aae0193cedf5f06bdb5680476780ee344b + languageName: node + linkType: hard + +"walkdir@npm:^0.4.1": + version: 0.4.1 + resolution: "walkdir@npm:0.4.1" + checksum: 10c0/88e635aa9303e9196e4dc15013d2bd4afca4c8c8b4bb27722ca042bad213bb882d3b9141b3b0cca6bfb274f7889b30cf58d6374844094abec0016f335c5414dc + languageName: node + linkType: hard + +"wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: "npm:^1.0.3" + checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db + languageName: node + linkType: hard + +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: "npm:~0.0.3" + webidl-conversions: "npm:^3.0.0" + checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.2": + version: 1.1.19 + resolution: "which-typed-array@npm:1.1.19" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + for-each: "npm:^0.3.5" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^6.0.0": + version: 6.0.0 + resolution: "which@npm:6.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/fe9d6463fe44a76232bb6e3b3181922c87510a5b250a98f1e43a69c99c079b3f42ddeca7e03d3e5f2241bf2d334f5a7657cfa868b97c109f3870625842f4cc15 + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 + languageName: node + linkType: hard + +"workerpool@npm:^6.5.1": + version: 6.5.1 + resolution: "workerpool@npm:6.5.1" + checksum: 10c0/58e8e969782292cb3a7bfba823f1179a7615250a0cefb4841d5166234db1880a3d0fe83a31dd8d648329ec92c2d0cd1890ad9ec9e53674bb36ca43e9753cdeac + languageName: node + linkType: hard + +"wrap-ansi@npm:7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"ws@npm:^7.5.10": + version: 7.5.10 + resolution: "ws@npm:7.5.10" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/bd7d5f4aaf04fae7960c23dcb6c6375d525e00f795dd20b9385902bd008c40a94d3db3ce97d878acc7573df852056ca546328b27b39f47609f80fb22a0a9b61d + languageName: node + linkType: hard + +"ws@npm:^8.18.0, ws@npm:^8.5.0": + version: 8.19.0 + resolution: "ws@npm:8.19.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/4741d9b9bc3f9c791880882414f96e36b8b254e34d4b503279d6400d9a4b87a033834856dbdd94ee4b637944df17ea8afc4bce0ff4a1560d2166be8855da5b04 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 + languageName: node + linkType: hard + +"yaml@npm:^2.6.1": + version: 2.8.2 + resolution: "yaml@npm:2.8.2" + bin: + yaml: bin.mjs + checksum: 10c0/703e4dc1e34b324aa66876d63618dcacb9ed49f7e7fe9b70f1e703645be8d640f68ab84f12b86df8ac960bac37acf5513e115de7c970940617ce0343c8c9cd96 + languageName: node + linkType: hard + +"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.9": + version: 20.2.9 + resolution: "yargs-parser@npm:20.2.9" + checksum: 10c0/0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72 + languageName: node + linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs-unparser@npm:^2.0.0": + version: 2.0.0 + resolution: "yargs-unparser@npm:2.0.0" + dependencies: + camelcase: "npm:^6.0.0" + decamelize: "npm:^4.0.0" + flat: "npm:^5.0.2" + is-plain-obj: "npm:^2.1.0" + checksum: 10c0/a5a7d6dc157efa95122e16780c019f40ed91d4af6d2bac066db8194ed0ec5c330abb115daa5a79ff07a9b80b8ea80c925baacf354c4c12edd878c0529927ff03 + languageName: node + linkType: hard + +"yargs@npm:17.7.2, yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yargs@npm:^16.2.0": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" + dependencies: + cliui: "npm:^7.0.2" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.0" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^20.2.2" + checksum: 10c0/b1dbfefa679848442454b60053a6c95d62f2d2e21dd28def92b647587f415969173c6e99a0f3bab4f1b67ee8283bf735ebe3544013f09491186ba9e8a9a2b651 + languageName: node + linkType: hard + +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard + +"zod@npm:4.0.17": + version: 4.0.17 + resolution: "zod@npm:4.0.17" + checksum: 10c0/c56ef4cc02f8f52be8724c5a8b338266202d68477c7606bee9b7299818b75c9adc27f16f4b6704a372f3e7578bd016f389de19bfec766564b7c39d0d327c540a + languageName: node + linkType: hard + +"zstddec@npm:0.1.0": + version: 0.1.0 + resolution: "zstddec@npm:0.1.0" + checksum: 10c0/13601cc53211af491cf3a28a49239405e44129c7aba6a0211401d7bf79ee96b4679016a4d3c5e9c01f753e6da806eb40550f12c469580548b695b146a6d8fe1a + languageName: node + linkType: hard From 98821f7052d8dfa34c0b97c2bfbc6dfed91f04d7 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 23:09:32 +0000 Subject: [PATCH 30/51] sdk: release v2.156.0-beta.1 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index efa7a1f4b6..6d1c01d215 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.156.0-beta.0 \ No newline at end of file +2.156.0-beta.1 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 7a4845a7a9..3f326c8ca4 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.156.0-beta.0", + "version": "2.156.0-beta.1", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From f6613206342053280ef72251fb538e341635f318 Mon Sep 17 00:00:00 2001 From: LukasDeco Date: Fri, 23 Jan 2026 15:15:01 -0700 Subject: [PATCH 31/51] fix: ci jobs missing node 24 (#2084) * fix: ci jobs missing node 24 * feat: jsdoc on pyth lazer sub to retrigger sdk release --- .github/workflows/main.yml | 6 ++-- sdk/src/pyth/pythLazerSubscriber.ts | 53 +++++++++++++++++++++++++++-- 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3bcd780a93..16a2993107 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -74,7 +74,7 @@ jobs: - name: Setup node uses: actions/setup-node@v2 with: - node-version: "22.14.x" + node-version: "24.x.x" registry-url: "https://registry.npmjs.org" - name: Install yarn run: yarn @@ -89,7 +89,7 @@ jobs: - name: Setup node uses: actions/setup-node@v2 with: - node-version: "22.14.x" + node-version: "24.x.x" registry-url: "https://registry.npmjs.org" - name: Install yarn run: yarn @@ -225,7 +225,7 @@ jobs: - name: Setup node uses: actions/setup-node@v2 with: - node-version: "22.14.x" + node-version: "24.x.x" registry-url: "https://registry.npmjs.org" - name: Build sdk run: yarn diff --git a/sdk/src/pyth/pythLazerSubscriber.ts b/sdk/src/pyth/pythLazerSubscriber.ts index 7ae37730a4..4092e56224 100644 --- a/sdk/src/pyth/pythLazerSubscriber.ts +++ b/sdk/src/pyth/pythLazerSubscriber.ts @@ -2,8 +2,13 @@ import { Channel, PythLazerClient } from '@pythnetwork/pyth-lazer-sdk'; import { DriftEnv } from '../config'; import { PerpMarkets } from '../constants/perpMarkets'; +/** + * Configuration for a group of Pyth Lazer price feeds. + */ export type PythLazerPriceFeedArray = { + /** Optional channel for update frequency (e.g., 'fixed_rate@200ms') */ channel?: Channel; + /** Array of Pyth Lazer price feed IDs to subscribe to */ priceFeedIds: number[]; }; @@ -12,6 +17,10 @@ type FeedSymbolInfo = { state: string; }; +/** + * Manages subscriptions to Pyth Lazer price feeds and provides access to real-time price data. + * Automatically filters out non-stable feeds and handles reconnection logic. + */ export class PythLazerSubscriber { private static readonly SYMBOLS_API_URL = 'https://history.pyth-lazer.dourolabs.app/history/v1/symbols'; @@ -30,15 +39,21 @@ export class PythLazerSubscriber { marketIndextoPriceFeedIdChunk: Map = new Map(); marketIndextoPriceFeedId: Map = new Map(); + /** + * Creates a new PythLazerSubscriber instance. + * @param endpoints - Array of WebSocket endpoint URLs for Pyth Lazer + * @param token - Authentication token for Pyth Lazer API + * @param priceFeedArrays - Array of price feed configurations to subscribe to + * @param env - Drift environment (mainnet-beta, devnet, etc.) + * @param resubTimeoutMs - Milliseconds to wait before resubscribing on data timeout + * @param sdkLogging - Whether to log Pyth SDK logs to the console. This is very noisy but could be useful for debugging. + */ constructor( private endpoints: string[], private token: string, private priceFeedArrays: PythLazerPriceFeedArray[], env: DriftEnv = 'devnet', private resubTimeoutMs: number = 2000, - /** - * Whether to log Pyth SDK logs to the console. This is very noisy but could be useful for debugging. - */ private sdkLogging: boolean = false ) { const markets = PerpMarkets[env].filter( @@ -112,6 +127,10 @@ export class PythLazerSubscriber { }); } + /** + * Subscribes to Pyth Lazer price feeds. Automatically filters out non-stable feeds + * and establishes WebSocket connections for real-time price updates. + */ async subscribe() { await this.fetchSymbolsIfNeeded(); @@ -250,6 +269,9 @@ export class PythLazerSubscriber { }, this.resubTimeoutMs); } + /** + * Unsubscribes from all Pyth Lazer price feeds and shuts down WebSocket connections. + */ async unsubscribe() { this.isUnsubscribing = true; this.pythLazerClient?.shutdown(); @@ -263,10 +285,20 @@ export class PythLazerSubscriber { return 'h:' + arr.join('|'); } + /** + * Retrieves the latest Solana-format price message for a group of feed IDs. + * @param feedIds - Array of price feed IDs + * @returns Hex-encoded price message data, or undefined if not available + */ async getLatestPriceMessage(feedIds: number[]): Promise { return this.feedIdChunkToPriceMessage.get(this.hash(feedIds)); } + /** + * Retrieves the latest Solana-format price message for a specific market. + * @param marketIndex - The market index to get price data for + * @returns Hex-encoded price message data, or undefined if not available + */ async getLatestPriceMessageForMarketIndex( marketIndex: number ): Promise { @@ -277,14 +309,29 @@ export class PythLazerSubscriber { return await this.getLatestPriceMessage(feedIds); } + /** + * Gets the array of price feed IDs associated with a market index. + * @param marketIndex - The market index to look up + * @returns Array of price feed IDs, or empty array if not found + */ getPriceFeedIdsFromMarketIndex(marketIndex: number): number[] { return this.marketIndextoPriceFeedIdChunk.get(marketIndex) || []; } + /** + * Gets the array of price feed IDs from a subscription hash. + * @param hash - The subscription hash + * @returns Array of price feed IDs, or empty array if not found + */ getPriceFeedIdsFromHash(hash: string): number[] { return this.feedIdHashToFeedIds.get(hash) || []; } + /** + * Gets the current parsed price for a specific market index. + * @param marketIndex - The market index to get the price for + * @returns The price as a number, or undefined if not available + */ getPriceFromMarketIndex(marketIndex: number): number | undefined { const feedId = this.marketIndextoPriceFeedId.get(marketIndex); if (feedId === undefined) { From 902a005cbd20c61f41244cf2e631ad278a01b01a Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:20:26 +0000 Subject: [PATCH 32/51] sdk: release v2.156.0-beta.2 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- sdk/yarn.lock | 12405 ++++++++++++++++++--------------------------- 3 files changed, 5067 insertions(+), 7342 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index 6d1c01d215..845e0f0988 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.156.0-beta.1 \ No newline at end of file +2.156.0-beta.2 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 3f326c8ca4..6ec9484581 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.156.0-beta.1", + "version": "2.156.0-beta.2", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", diff --git a/sdk/yarn.lock b/sdk/yarn.lock index 89283cbd83..2d1998979a 100644 --- a/sdk/yarn.lock +++ b/sdk/yarn.lock @@ -1,7342 +1,5067 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 8 - cacheKey: 10c0 - -"@babel/code-frame@npm:^7.12.13": - version: 7.28.6 - resolution: "@babel/code-frame@npm:7.28.6" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.28.5" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.1.1" - checksum: 10c0/ed5d57f99455e3b1c23e75ebb8430c6b9800b4ecd0121b4348b97cecb65406a47778d6db61f0d538a4958bb01b4b277e90348a68d39bd3beff1d7c940ed6dd66 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-string-parser@npm:7.27.1" - checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/helper-validator-identifier@npm:7.28.5" - checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.26.7, @babel/parser@npm:^7.28.5": - version: 7.28.6 - resolution: "@babel/parser@npm:7.28.6" - dependencies: - "@babel/types": "npm:^7.28.6" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/d6bfe8aa8e067ef58909e9905496157312372ca65d8d2a4f2b40afbea48d59250163755bba8ae626a615da53d192b084bcfc8c9dad8b01e315b96967600de581 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.10.5, @babel/runtime@npm:^7.25.0": - version: 7.28.6 - resolution: "@babel/runtime@npm:7.28.6" - checksum: 10c0/358cf2429992ac1c466df1a21c1601d595c46930a13c1d4662fde908d44ee78ec3c183aaff513ecb01ef8c55c3624afe0309eeeb34715672dbfadb7feedb2c0d - languageName: node - linkType: hard - -"@babel/types@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/types@npm:7.28.6" - dependencies: - "@babel/helper-string-parser": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.28.5" - checksum: 10c0/54a6a9813e48ef6f35aa73c03b3c1572cad7fa32b61b35dd07e4230bc77b559194519c8a4d8106a041a27cc7a94052579e238a30a32d5509aa4da4d6fd83d990 - languageName: node - linkType: hard +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.12.13": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.28.6.tgz#72499312ec58b1e2245ba4a4f550c132be4982f7" + integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q== + dependencies: + "@babel/helper-validator-identifier" "^7.28.5" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== + +"@babel/parser@^7.26.7", "@babel/parser@^7.28.5": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.6.tgz#f01a8885b7fa1e56dd8a155130226cd698ef13fd" + integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ== + dependencies: + "@babel/types" "^7.28.6" + +"@babel/runtime@^7.10.5", "@babel/runtime@^7.25.0": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b" + integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA== + +"@babel/types@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.6.tgz#c3e9377f1b155005bcc4c46020e7e394e13089df" + integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" "@coral-xyz/anchor-30@npm:@coral-xyz/anchor@0.30.1": - version: 0.30.1 - resolution: "@coral-xyz/anchor@npm:0.30.1" - dependencies: - "@coral-xyz/anchor-errors": "npm:^0.30.1" - "@coral-xyz/borsh": "npm:^0.30.1" - "@noble/hashes": "npm:^1.3.1" - "@solana/web3.js": "npm:^1.68.0" - bn.js: "npm:^5.1.2" - bs58: "npm:^4.0.1" - buffer-layout: "npm:^1.2.2" - camelcase: "npm:^6.3.0" - cross-fetch: "npm:^3.1.5" - crypto-hash: "npm:^1.3.0" - eventemitter3: "npm:^4.0.7" - pako: "npm:^2.0.3" - snake-case: "npm:^3.0.4" - superstruct: "npm:^0.15.4" - toml: "npm:^3.0.0" - checksum: 10c0/ed0e5903e72d11884015bd8c21199604f56c20a4570972323133011172677b7dcfa8c7054055d827f914b61ad5b70378343809a83a06f3f6010e9d08707fd4c5 - languageName: node - linkType: hard - -"@coral-xyz/anchor-errors@npm:^0.30.1": - version: 0.30.1 - resolution: "@coral-xyz/anchor-errors@npm:0.30.1" - checksum: 10c0/cb6749b68c12df54041d1be47df7a7b7f1d4ad2c54759bca7964c22a5dd892de0deb004100ac81cf70278e373d228a99d648013225613b5de85854530c41f501 - languageName: node - linkType: hard - -"@coral-xyz/anchor@npm:0.29.0, @coral-xyz/anchor@npm:^0.29.0": - version: 0.29.0 - resolution: "@coral-xyz/anchor@npm:0.29.0" - dependencies: - "@coral-xyz/borsh": "npm:^0.29.0" - "@noble/hashes": "npm:^1.3.1" - "@solana/web3.js": "npm:^1.68.0" - bn.js: "npm:^5.1.2" - bs58: "npm:^4.0.1" - buffer-layout: "npm:^1.2.2" - camelcase: "npm:^6.3.0" - cross-fetch: "npm:^3.1.5" - crypto-hash: "npm:^1.3.0" - eventemitter3: "npm:^4.0.7" - pako: "npm:^2.0.3" - snake-case: "npm:^3.0.4" - superstruct: "npm:^0.15.4" - toml: "npm:^3.0.0" - checksum: 10c0/cc863ab22b23c126e83b0804a43d45fdb7836659b917db0a8895146ec8d48637db034a7ae7dbd55d5ec7a058a266dd06878e1f921950df1e899369e49fb36c93 - languageName: node - linkType: hard - -"@coral-xyz/borsh@npm:^0.29.0": - version: 0.29.0 - resolution: "@coral-xyz/borsh@npm:0.29.0" - dependencies: - bn.js: "npm:^5.1.2" - buffer-layout: "npm:^1.2.0" - peerDependencies: - "@solana/web3.js": ^1.68.0 - checksum: 10c0/25afec48714d9f0c95a02d04215803181f7da0aad85fdd1b076d9f37ef54586342e01e24fc1b2128aba0b5155e970afd6a2c6f8b0343699d8733c0703655ce39 - languageName: node - linkType: hard - -"@coral-xyz/borsh@npm:^0.30.1": - version: 0.30.1 - resolution: "@coral-xyz/borsh@npm:0.30.1" - dependencies: - bn.js: "npm:^5.1.2" - buffer-layout: "npm:^1.2.0" - peerDependencies: - "@solana/web3.js": ^1.68.0 - checksum: 10c0/eaad9c59647ba58faecc408a30416f17b0cab56bce907cc54654f7a0b151526954c71cedadce7ed38830b731244d918e87b7c3fb19c56a26c2b140c5ccef27dd - languageName: node - linkType: hard - -"@cspotcode/source-map-support@npm:^0.8.0": - version: 0.8.1 - resolution: "@cspotcode/source-map-support@npm:0.8.1" - dependencies: - "@jridgewell/trace-mapping": "npm:0.3.9" - checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 - languageName: node - linkType: hard - -"@dependents/detective-less@npm:^5.0.1": - version: 5.0.1 - resolution: "@dependents/detective-less@npm:5.0.1" - dependencies: - gonzales-pe: "npm:^4.3.0" - node-source-walk: "npm:^7.0.1" - checksum: 10c0/699a81aa94be40c84f1ce7feddb425763352360752dddb8e7bfe531641f5a2553d52b4cf81fa2e08fc7c591262ecccb5ff21f443ede037748e490c33c6fac784 - languageName: node - linkType: hard - -"@drift-labs/sdk@workspace:.": - version: 0.0.0-use.local - resolution: "@drift-labs/sdk@workspace:." - dependencies: - "@coral-xyz/anchor": "npm:0.29.0" - "@coral-xyz/anchor-30": "npm:@coral-xyz/anchor@0.30.1" - "@ellipsis-labs/phoenix-sdk": "npm:1.4.5" - "@grpc/grpc-js": "npm:1.14.0" - "@msgpack/msgpack": "npm:^3.1.2" - "@openbook-dex/openbook-v2": "npm:0.2.10" - "@project-serum/serum": "npm:0.13.65" - "@pythnetwork/client": "npm:2.5.3" - "@pythnetwork/price-service-sdk": "npm:1.7.1" - "@pythnetwork/pyth-lazer-sdk": "npm:5.2.1" - "@solana/spl-token": "npm:0.4.13" - "@solana/web3.js": "npm:1.98.0" - "@switchboard-xyz/common": "npm:3.0.14" - "@switchboard-xyz/on-demand": "npm:2.4.1" - "@triton-one/yellowstone-grpc": "npm:1.4.1" - "@types/big.js": "npm:6.2.2" - "@types/bn.js": "npm:5.1.6" - "@types/bs58": "npm:4.0.4" - "@types/chai": "npm:4.3.20" - "@types/jest": "npm:28.1.8" - "@types/mocha": "npm:9.1.1" - "@typescript-eslint/eslint-plugin": "npm:6.21.0" - "@typescript-eslint/parser": "npm:6.21.0" - anchor-bankrun: "npm:0.3.0" - chai: "npm:4.5.0" - crypto-browserify: "npm:^3.12.1" - encoding: "npm:0.1.13" - esbuild: "npm:^0.27.1" - eslint: "npm:8.57.0" - eslint-config-prettier: "npm:8.3.0" - eslint-plugin-prettier: "npm:3.4.0" - gill: "npm:^0.10.2" - helius-laserstream: "npm:0.1.8" - lodash: "npm:4.17.21" - madge: "npm:^8.0.0" - mocha: "npm:10.7.3" - nanoid: "npm:3.3.4" - node-cache: "npm:5.1.2" - object-sizeof: "npm:2.6.5" - os-browserify: "npm:^0.3.0" - path-browserify: "npm:^1.0.1" - prettier: "npm:3.0.1" - process: "npm:^0.11.10" - sinon: "npm:18.0.1" - solana-bankrun: "npm:0.3.1" - stream-browserify: "npm:^3.0.0" - strict-event-emitter-types: "npm:2.0.0" - ts-node: "npm:10.9.2" - tweetnacl: "npm:1.0.3" - tweetnacl-util: "npm:0.15.1" - typescript: "npm:5.4.5" - uuid: "npm:8.3.2" - vm-browserify: "npm:^1.1.2" - yargs: "npm:17.7.2" - zod: "npm:4.0.17" - zstddec: "npm:0.1.0" - languageName: unknown - linkType: soft - -"@ellipsis-labs/phoenix-sdk@npm:1.4.5": - version: 1.4.5 - resolution: "@ellipsis-labs/phoenix-sdk@npm:1.4.5" - dependencies: - "@metaplex-foundation/beet": "npm:^0.7.1" - "@metaplex-foundation/rustbin": "npm:^0.3.1" - "@metaplex-foundation/solita": "npm:^0.12.2" - "@solana/spl-token": "npm:^0.3.7" - "@types/node": "npm:^18.11.13" - bn.js: "npm:^5.2.1" - borsh: "npm:^0.7.0" - bs58: "npm:^5.0.0" - checksum: 10c0/aec1e035bcc2d0bd04114ce5b6a2ab9372997e5a195d9ee29e4a84b4bdb09a96a9f0b66680c392ba9a892eea4d10fbab81dffc11379a44332c5c65d0fd17daf3 - languageName: node - linkType: hard - -"@esbuild/aix-ppc64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/aix-ppc64@npm:0.27.2" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/android-arm64@npm:0.27.2" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/android-arm@npm:0.27.2" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-x64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/android-x64@npm:0.27.2" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/darwin-arm64@npm:0.27.2" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/darwin-x64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/darwin-x64@npm:0.27.2" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/freebsd-arm64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/freebsd-arm64@npm:0.27.2" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/freebsd-x64@npm:0.27.2" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/linux-arm64@npm:0.27.2" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/linux-arm@npm:0.27.2" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/linux-ia32@npm:0.27.2" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/linux-loong64@npm:0.27.2" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/linux-mips64el@npm:0.27.2" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"@esbuild/linux-ppc64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/linux-ppc64@npm:0.27.2" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/linux-riscv64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/linux-riscv64@npm:0.27.2" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/linux-s390x@npm:0.27.2" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-x64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/linux-x64@npm:0.27.2" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-arm64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/netbsd-arm64@npm:0.27.2" - conditions: os=netbsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/netbsd-x64@npm:0.27.2" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-arm64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/openbsd-arm64@npm:0.27.2" - conditions: os=openbsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/openbsd-x64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/openbsd-x64@npm:0.27.2" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openharmony-arm64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/openharmony-arm64@npm:0.27.2" - conditions: os=openharmony & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/sunos-x64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/sunos-x64@npm:0.27.2" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/win32-arm64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/win32-arm64@npm:0.27.2" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/win32-ia32@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/win32-ia32@npm:0.27.2" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/win32-x64@npm:0.27.2": - version: 0.27.2 - resolution: "@esbuild/win32-x64@npm:0.27.2" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.9.1 - resolution: "@eslint-community/eslint-utils@npm:4.9.1" - dependencies: - eslint-visitor-keys: "npm:^3.4.3" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/dc4ab5e3e364ef27e33666b11f4b86e1a6c1d7cbf16f0c6ff87b1619b3562335e9201a3d6ce806221887ff780ec9d828962a290bb910759fd40a674686503f02 - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.12.2 - resolution: "@eslint-community/regexpp@npm:4.12.2" - checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" - dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - minimatch: "npm:^3.1.2" - strip-json-comments: "npm:^3.1.1" - checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 - languageName: node - linkType: hard - -"@eslint/js@npm:8.57.0": - version: 8.57.0 - resolution: "@eslint/js@npm:8.57.0" - checksum: 10c0/9a518bb8625ba3350613903a6d8c622352ab0c6557a59fe6ff6178bf882bf57123f9d92aa826ee8ac3ee74b9c6203fe630e9ee00efb03d753962dcf65ee4bd94 - languageName: node - linkType: hard - -"@grpc/grpc-js@npm:1.14.0": - version: 1.14.0 - resolution: "@grpc/grpc-js@npm:1.14.0" - dependencies: - "@grpc/proto-loader": "npm:^0.8.0" - "@js-sdsl/ordered-map": "npm:^4.4.2" - checksum: 10c0/51e0eb32f6dac68c49502b227e565c4244f53983d2efab8ef3fd2cc923999751c059f6c77fec4941a93c44eaa58cbc321ce1e9868e1ec226fba5a6c93722c3b1 - languageName: node - linkType: hard - -"@grpc/grpc-js@npm:^1.8.0": - version: 1.14.3 - resolution: "@grpc/grpc-js@npm:1.14.3" - dependencies: - "@grpc/proto-loader": "npm:^0.8.0" - "@js-sdsl/ordered-map": "npm:^4.4.2" - checksum: 10c0/f41f06a311b93cca8c472d56e21387e0f7b57bb2337a91d15ea4279bac8ec4fa0de6bd0d881201229ab800c0f0c55277911ecb850e057f20a828d0ddd623551d - languageName: node - linkType: hard - -"@grpc/proto-loader@npm:^0.8.0": - version: 0.8.0 - resolution: "@grpc/proto-loader@npm:0.8.0" - dependencies: - lodash.camelcase: "npm:^4.3.0" - long: "npm:^5.0.0" - protobufjs: "npm:^7.5.3" - yargs: "npm:^17.7.2" - bin: - proto-loader-gen-types: build/bin/proto-loader-gen-types.js - checksum: 10c0/a27da3b85d5d17bab956d536786c717287eae46ca264ea9ec774db90ff571955bae2705809f431b4622fbf3be9951d7c7bbb1360b2015ee88abe1587cf3d6fe0 - languageName: node - linkType: hard - -"@humanwhocodes/config-array@npm:^0.11.14": - version: 0.11.14 - resolution: "@humanwhocodes/config-array@npm:0.11.14" - dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.2" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10c0/66f725b4ee5fdd8322c737cb5013e19fac72d4d69c8bf4b7feb192fcb83442b035b92186f8e9497c220e58b2d51a080f28a73f7899bc1ab288c3be172c467541 - languageName: node - linkType: hard - -"@humanwhocodes/module-importer@npm:^1.0.1": - version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 - languageName: node - linkType: hard - -"@humanwhocodes/object-schema@npm:^2.0.2": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c - languageName: node - linkType: hard - -"@isaacs/balanced-match@npm:^4.0.1": - version: 4.0.1 - resolution: "@isaacs/balanced-match@npm:4.0.1" - checksum: 10c0/7da011805b259ec5c955f01cee903da72ad97c5e6f01ca96197267d3f33103d5b2f8a1af192140f3aa64526c593c8d098ae366c2b11f7f17645d12387c2fd420 - languageName: node - linkType: hard - -"@isaacs/brace-expansion@npm:^5.0.0": - version: 5.0.0 - resolution: "@isaacs/brace-expansion@npm:5.0.0" - dependencies: - "@isaacs/balanced-match": "npm:^4.0.1" - checksum: 10c0/b4d4812f4be53afc2c5b6c545001ff7a4659af68d4484804e9d514e183d20269bb81def8682c01a22b17c4d6aed14292c8494f7d2ac664e547101c1a905aa977 - languageName: node - linkType: hard - -"@isaacs/fs-minipass@npm:^4.0.0": - version: 4.0.1 - resolution: "@isaacs/fs-minipass@npm:4.0.1" - dependencies: - minipass: "npm:^7.0.4" - checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 - languageName: node - linkType: hard - -"@isaacs/ttlcache@npm:^1.4.1": - version: 1.4.1 - resolution: "@isaacs/ttlcache@npm:1.4.1" - checksum: 10c0/6921de516917b02673a58e543c2b06fd04237cbf6d089ca22d6e98defa4b1e9a48258cb071d6b581284bb497bea687320788830541511297eecbe6e93a665bbf - languageName: node - linkType: hard - -"@jest/expect-utils@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/expect-utils@npm:28.1.3" - dependencies: - jest-get-type: "npm:^28.0.2" - checksum: 10c0/6cb424bf24c9a20d7420601fb5599a563f09c1771cc8df3399a291f77f3cb512cfa06e6b0bce23b8b078d333d2713572fae298c6a017ca9bbe26d6b05f7bae46 - languageName: node - linkType: hard - -"@jest/schemas@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/schemas@npm:28.1.3" - dependencies: - "@sinclair/typebox": "npm:^0.24.1" - checksum: 10c0/8c325918f3e1b83e687987b05c2e5143d171f372b091f891fe17835f06fadd864ddae3c7e221a704bdd7e2ea28c4b337124c02023d8affcbdd51eca2879162ac - languageName: node - linkType: hard - -"@jest/types@npm:^28.1.3": - version: 28.1.3 - resolution: "@jest/types@npm:28.1.3" - dependencies: - "@jest/schemas": "npm:^28.1.3" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^17.0.8" - chalk: "npm:^4.0.0" - checksum: 10c0/3cffae7d1133aa7952a6b5c4806f89ed78cb0dfe3ec4e8c5a6e704d7bab3cff86c714abb5f0f637540da22776900a33b3bad79c5ed5fc5b5535fb24e3006e3cb - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.0.3": - version: 3.1.2 - resolution: "@jridgewell/resolve-uri@npm:3.1.2" - checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.5.5": - version: 1.5.5 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" - checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:0.3.9": - version: 0.3.9 - resolution: "@jridgewell/trace-mapping@npm:0.3.9" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.0.3" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b - languageName: node - linkType: hard - -"@js-sdsl/ordered-map@npm:^4.4.2": - version: 4.4.2 - resolution: "@js-sdsl/ordered-map@npm:4.4.2" - checksum: 10c0/cc7e15dc4acf6d9ef663757279600bab70533d847dcc1ab01332e9e680bd30b77cdf9ad885cc774276f51d98b05a013571c940e5b360985af5eb798dc1a2ee2b - languageName: node - linkType: hard - -"@metaplex-foundation/beet-solana@npm:^0.3.0": - version: 0.3.1 - resolution: "@metaplex-foundation/beet-solana@npm:0.3.1" - dependencies: - "@metaplex-foundation/beet": "npm:>=0.1.0" - "@solana/web3.js": "npm:^1.56.2" - bs58: "npm:^5.0.0" - debug: "npm:^4.3.4" - checksum: 10c0/fe9c8c6a99ff91caf8a9a71c3195ffcdf8f72074ea103d4c0eb611793f8417421b1968bea56dc74ba28b8de7045eab0a2e04b2c0d4e05ecde12c27af3a1b9fc1 - languageName: node - linkType: hard - -"@metaplex-foundation/beet@npm:>=0.1.0, @metaplex-foundation/beet@npm:^0.7.1": - version: 0.7.2 - resolution: "@metaplex-foundation/beet@npm:0.7.2" - dependencies: - ansicolors: "npm:^0.3.2" - assert: "npm:^2.1.0" - bn.js: "npm:^5.2.0" - debug: "npm:^4.3.3" - checksum: 10c0/38c2eb1664b0becf7d1afaa331b8406df5632a7593b8be953bc44f397dadc96c4a1b9b3e0e22aebfd5f8a0c8756cf6172cd76cf29dff5fc723408786da84ebc1 - languageName: node - linkType: hard - -"@metaplex-foundation/beet@npm:^0.4.0": - version: 0.4.0 - resolution: "@metaplex-foundation/beet@npm:0.4.0" - dependencies: - ansicolors: "npm:^0.3.2" - bn.js: "npm:^5.2.0" - debug: "npm:^4.3.3" - checksum: 10c0/bdb9435a7060876da6cea3a752f45517f8933d3a38d6201a8e34498f9ac242594f993f21e5c0eeb1af5832064ebe6883f76c65b521e9aeb585e3afb1a986c50c - languageName: node - linkType: hard - -"@metaplex-foundation/rustbin@npm:^0.3.0, @metaplex-foundation/rustbin@npm:^0.3.1": - version: 0.3.5 - resolution: "@metaplex-foundation/rustbin@npm:0.3.5" - dependencies: - debug: "npm:^4.3.3" - semver: "npm:^7.3.7" - text-table: "npm:^0.2.0" - toml: "npm:^3.0.0" - checksum: 10c0/04d2b3efa8a040a1ef07147e3559b210a1c5c3d77afbc9028389da3fbcebcb7c08c43890925930b6f74b6f461a251bd5d05b95c8c94c644227a269a4506d44cd - languageName: node - linkType: hard - -"@metaplex-foundation/solita@npm:^0.12.2": - version: 0.12.2 - resolution: "@metaplex-foundation/solita@npm:0.12.2" - dependencies: - "@metaplex-foundation/beet": "npm:^0.4.0" - "@metaplex-foundation/beet-solana": "npm:^0.3.0" - "@metaplex-foundation/rustbin": "npm:^0.3.0" - "@solana/web3.js": "npm:^1.36.0" - camelcase: "npm:^6.2.1" - debug: "npm:^4.3.3" - js-sha256: "npm:^0.9.0" - prettier: "npm:^2.5.1" - snake-case: "npm:^3.0.4" - spok: "npm:^1.4.3" - bin: - solita: dist/src/cli/solita.js - checksum: 10c0/73b6ca27a967f11c597cf08a1b63445f136ed34201e7148d3f4ca991431c22eba180c0602c9abd23e59fed22465c6fddd5cc4bdf3c9a255b4f2ef0c45124007f - languageName: node - linkType: hard - -"@msgpack/msgpack@npm:^3.1.2": - version: 3.1.3 - resolution: "@msgpack/msgpack@npm:3.1.3" - checksum: 10c0/1fa9a760a58e64e121561d17977b680198ff24d83e951df3896f8639d06824f2cba20af92a19940461e0d5d6dc696bd01222bd901164759432eadd0f482d0816 - languageName: node - linkType: hard - -"@noble/curves@npm:^1.4.2": - version: 1.9.7 - resolution: "@noble/curves@npm:1.9.7" - dependencies: - "@noble/hashes": "npm:1.8.0" - checksum: 10c0/150014751ebe8ca06a8654ca2525108452ea9ee0be23430332769f06808cddabfe84f248b6dbf836916bc869c27c2092957eec62c7506d68a1ed0a624017c2a3 - languageName: node - linkType: hard - -"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.4.0": - version: 1.8.0 - resolution: "@noble/hashes@npm:1.8.0" - checksum: 10c0/06a0b52c81a6fa7f04d67762e08b2c476a00285858150caeaaff4037356dd5e119f45b2a530f638b77a5eeca013168ec1b655db41bae3236cb2e9d511484fc77 - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": "npm:2.0.5" - run-parallel: "npm:^1.1.9" - checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": "npm:2.1.5" - fastq: "npm:^1.6.0" - checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 - languageName: node - linkType: hard - -"@npmcli/agent@npm:^4.0.0": - version: 4.0.0 - resolution: "@npmcli/agent@npm:4.0.0" - dependencies: - agent-base: "npm:^7.1.0" - http-proxy-agent: "npm:^7.0.0" - https-proxy-agent: "npm:^7.0.1" - lru-cache: "npm:^11.2.1" - socks-proxy-agent: "npm:^8.0.3" - checksum: 10c0/f7b5ce0f3dd42c3f8c6546e8433573d8049f67ef11ec22aa4704bc41483122f68bf97752e06302c455ead667af5cb753e6a09bff06632bc465c1cfd4c4b75a53 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^5.0.0": - version: 5.0.0 - resolution: "@npmcli/fs@npm:5.0.0" - dependencies: - semver: "npm:^7.3.5" - checksum: 10c0/26e376d780f60ff16e874a0ac9bc3399186846baae0b6e1352286385ac134d900cc5dafaded77f38d77f86898fc923ae1cee9d7399f0275b1aa24878915d722b - languageName: node - linkType: hard - -"@openbook-dex/openbook-v2@npm:0.2.10": - version: 0.2.10 - resolution: "@openbook-dex/openbook-v2@npm:0.2.10" - dependencies: - "@coral-xyz/anchor": "npm:^0.29.0" - "@solana/spl-token": "npm:^0.4.0" - "@solana/web3.js": "npm:^1.77.3" - big.js: "npm:^6.2.1" - checksum: 10c0/84f58bedfaf73959936bad81859f8f73791acf8466020e7a2616f6169260bab2944efb14c2072d8e158d60191d086120c5f15a5c08729daaf95db3068fff25cf - languageName: node - linkType: hard - -"@project-serum/anchor@npm:^0.11.1": - version: 0.11.1 - resolution: "@project-serum/anchor@npm:0.11.1" - dependencies: - "@project-serum/borsh": "npm:^0.2.2" - "@solana/web3.js": "npm:^1.17.0" - base64-js: "npm:^1.5.1" - bn.js: "npm:^5.1.2" - bs58: "npm:^4.0.1" - buffer-layout: "npm:^1.2.0" - camelcase: "npm:^5.3.1" - crypto-hash: "npm:^1.3.0" - eventemitter3: "npm:^4.0.7" - find: "npm:^0.3.0" - js-sha256: "npm:^0.9.0" - pako: "npm:^2.0.3" - snake-case: "npm:^3.0.4" - toml: "npm:^3.0.0" - checksum: 10c0/192f2e21c20f845433842824f32eb3400f5a763e06a36594063742282cd8b8074b9676bc4ff1383e4fee798bf82f89e9460f124b4d60053d235e17014bcfe712 - languageName: node - linkType: hard - -"@project-serum/borsh@npm:^0.2.2": - version: 0.2.5 - resolution: "@project-serum/borsh@npm:0.2.5" - dependencies: - bn.js: "npm:^5.1.2" - buffer-layout: "npm:^1.2.0" - peerDependencies: - "@solana/web3.js": ^1.2.0 - checksum: 10c0/84fb4d5384807359f7de2ce17165bc28b3e6f51193ed8699734fa90212693822c5d02ecb6a602287cbc71f540a938c13a7f6ce50d5b9d57318adb01fca5e0804 - languageName: node - linkType: hard - -"@project-serum/serum@npm:0.13.65": - version: 0.13.65 - resolution: "@project-serum/serum@npm:0.13.65" - dependencies: - "@project-serum/anchor": "npm:^0.11.1" - "@solana/spl-token": "npm:^0.1.6" - "@solana/web3.js": "npm:^1.21.0" - bn.js: "npm:^5.1.2" - buffer-layout: "npm:^1.2.0" - checksum: 10c0/6fc4d79989d70e1dfd80c5641db94cefb335f9e477f63eb51468634218b8d315c275e1fa6b26c5f09910c2f318fc0d1da2aa037da62477bf1449abbb98b6dcc0 - languageName: node - linkType: hard - -"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": - version: 1.1.2 - resolution: "@protobufjs/aspromise@npm:1.1.2" - checksum: 10c0/a83343a468ff5b5ec6bff36fd788a64c839e48a07ff9f4f813564f58caf44d011cd6504ed2147bf34835bd7a7dd2107052af755961c6b098fd8902b4f6500d0f - languageName: node - linkType: hard - -"@protobufjs/base64@npm:^1.1.2": - version: 1.1.2 - resolution: "@protobufjs/base64@npm:1.1.2" - checksum: 10c0/eec925e681081af190b8ee231f9bad3101e189abbc182ff279da6b531e7dbd2a56f1f306f37a80b1be9e00aa2d271690d08dcc5f326f71c9eed8546675c8caf6 - languageName: node - linkType: hard - -"@protobufjs/codegen@npm:^2.0.4": - version: 2.0.4 - resolution: "@protobufjs/codegen@npm:2.0.4" - checksum: 10c0/26ae337c5659e41f091606d16465bbcc1df1f37cc1ed462438b1f67be0c1e28dfb2ca9f294f39100c52161aef82edf758c95d6d75650a1ddf31f7ddee1440b43 - languageName: node - linkType: hard - -"@protobufjs/eventemitter@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/eventemitter@npm:1.1.0" - checksum: 10c0/1eb0a75180e5206d1033e4138212a8c7089a3d418c6dfa5a6ce42e593a4ae2e5892c4ef7421f38092badba4040ea6a45f0928869989411001d8c1018ea9a6e70 - languageName: node - linkType: hard - -"@protobufjs/fetch@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/fetch@npm:1.1.0" - dependencies: - "@protobufjs/aspromise": "npm:^1.1.1" - "@protobufjs/inquire": "npm:^1.1.0" - checksum: 10c0/cda6a3dc2d50a182c5865b160f72077aac197046600091dbb005dd0a66db9cce3c5eaed6d470ac8ed49d7bcbeef6ee5f0bc288db5ff9a70cbd003e5909065233 - languageName: node - linkType: hard - -"@protobufjs/float@npm:^1.0.2": - version: 1.0.2 - resolution: "@protobufjs/float@npm:1.0.2" - checksum: 10c0/18f2bdede76ffcf0170708af15c9c9db6259b771e6b84c51b06df34a9c339dbbeec267d14ce0bddd20acc142b1d980d983d31434398df7f98eb0c94a0eb79069 - languageName: node - linkType: hard - -"@protobufjs/inquire@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/inquire@npm:1.1.0" - checksum: 10c0/64372482efcba1fb4d166a2664a6395fa978b557803857c9c03500e0ac1013eb4b1aacc9ed851dd5fc22f81583670b4f4431bae186f3373fedcfde863ef5921a - languageName: node - linkType: hard - -"@protobufjs/path@npm:^1.1.2": - version: 1.1.2 - resolution: "@protobufjs/path@npm:1.1.2" - checksum: 10c0/cece0a938e7f5dfd2fa03f8c14f2f1cf8b0d6e13ac7326ff4c96ea311effd5fb7ae0bba754fbf505312af2e38500250c90e68506b97c02360a43793d88a0d8b4 - languageName: node - linkType: hard - -"@protobufjs/pool@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/pool@npm:1.1.0" - checksum: 10c0/eda2718b7f222ac6e6ad36f758a92ef90d26526026a19f4f17f668f45e0306a5bd734def3f48f51f8134ae0978b6262a5c517c08b115a551756d1a3aadfcf038 - languageName: node - linkType: hard - -"@protobufjs/utf8@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/utf8@npm:1.1.0" - checksum: 10c0/a3fe31fe3fa29aa3349e2e04ee13dc170cc6af7c23d92ad49e3eeaf79b9766264544d3da824dba93b7855bd6a2982fb40032ef40693da98a136d835752beb487 - languageName: node - linkType: hard - -"@pythnetwork/client@npm:2.5.3": - version: 2.5.3 - resolution: "@pythnetwork/client@npm:2.5.3" - dependencies: - "@solana/web3.js": "npm:^1.30.2" - assert: "npm:^2.0.0" - buffer: "npm:^6.0.1" - checksum: 10c0/4958b6d9181a154110f0df7ef960a1f49debfc9b7239d39a2a65a6ba294dc788c45e567622a3f09cbfc444e3ce19553ba11ecd8607bde8c1079da8758b6c9ff7 - languageName: node - linkType: hard - -"@pythnetwork/price-service-sdk@npm:1.7.1": - version: 1.7.1 - resolution: "@pythnetwork/price-service-sdk@npm:1.7.1" - dependencies: - bn.js: "npm:^5.2.1" - checksum: 10c0/721df439ceb4908794092750ae8b35b024c411a81c8483e4d3f1f55b75ffb462ca9a40cf8d11cb5ee29035e02cd4d41a1a4374d254c43208c1239dd1636c731b - languageName: node - linkType: hard - -"@pythnetwork/pyth-lazer-sdk@npm:5.2.1": - version: 5.2.1 - resolution: "@pythnetwork/pyth-lazer-sdk@npm:5.2.1" - dependencies: - "@isaacs/ttlcache": "npm:^1.4.1" - buffer: "npm:^6.0.3" - isomorphic-ws: "npm:^5.0.0" - ts-log: "npm:^2.2.7" - ws: "npm:^8.18.0" - checksum: 10c0/3ddbf963ff9f831b0e12a71094ed3a18625ff54666c9e83b8375da157e6cc753b946d9f1a8629c56d0c6b97961e36a194d1740defbabc65719b9cc6d77fa3565 - languageName: node - linkType: hard - -"@sinclair/typebox@npm:^0.24.1": - version: 0.24.51 - resolution: "@sinclair/typebox@npm:0.24.51" - checksum: 10c0/458131e83ca59ad3721f0abeef2aa5220aff2083767e1143d75c67c85d55ef7a212f48f394471ee6bdd2e860ba30f09a489cdd2a28a2824d5b0d1014bdfb2552 - languageName: node - linkType: hard - -"@sinonjs/commons@npm:^3.0.0, @sinonjs/commons@npm:^3.0.1": - version: 3.0.1 - resolution: "@sinonjs/commons@npm:3.0.1" - dependencies: - type-detect: "npm:4.0.8" - checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:11.2.2": - version: 11.2.2 - resolution: "@sinonjs/fake-timers@npm:11.2.2" - dependencies: - "@sinonjs/commons": "npm:^3.0.0" - checksum: 10c0/a4218efa6fdafda622d02d4c0a6ab7df3641cb038bb0b14f0a3ee56f50c95aab4f1ab2d7798ce928b40c6fc1839465a558c9393a77e4dca879e1b2f8d60d8136 - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^13.0.1": - version: 13.0.5 - resolution: "@sinonjs/fake-timers@npm:13.0.5" - dependencies: - "@sinonjs/commons": "npm:^3.0.1" - checksum: 10c0/a707476efd523d2138ef6bba916c83c4a377a8372ef04fad87499458af9f01afc58f4f245c5fd062793d6d70587309330c6f96947b5bd5697961c18004dc3e26 - languageName: node - linkType: hard - -"@sinonjs/samsam@npm:^8.0.0": - version: 8.0.3 - resolution: "@sinonjs/samsam@npm:8.0.3" - dependencies: - "@sinonjs/commons": "npm:^3.0.1" - type-detect: "npm:^4.1.0" - checksum: 10c0/9bf57a8f8a484b3455696786e1679db7f0d6017de62099ee304bd364281fcb20895b7c6b05292aa10fecf76df27691e914fc3e1cb8a56d88c027e87d869dcf0c - languageName: node - linkType: hard - -"@sinonjs/text-encoding@npm:^0.7.3": - version: 0.7.3 - resolution: "@sinonjs/text-encoding@npm:0.7.3" - checksum: 10c0/b112d1e97af7f99fbdc63c7dbcd35d6a60764dfec85cfcfff532e55cce8ecd8453f9fa2139e70aea47142c940fd90cd201d19f370b9a0141700d8a6de3116815 - languageName: node - linkType: hard - -"@solana-program/address-lookup-table@npm:^0.7.0": - version: 0.7.0 - resolution: "@solana-program/address-lookup-table@npm:0.7.0" - peerDependencies: - "@solana/kit": ^2.1.0 - checksum: 10c0/5832582b3768dfae5770176fb9ce3ec0dacc76f754664c757c565a7d7c5f10cbd5eaa2a1d2d8dbe058309e66618bb0e9fda078cbef8816ecd18020c195b67166 - languageName: node - linkType: hard - -"@solana-program/compute-budget@npm:^0.8.0": - version: 0.8.0 - resolution: "@solana-program/compute-budget@npm:0.8.0" - peerDependencies: - "@solana/kit": ^2.1.0 - checksum: 10c0/3743cdc54fe69435a179a05203fc7efa3a0249ba7caf08cdb8d621daac66067605a53fdfbe1bfa239c779b62fdf6ae3ac1f87a8e8852ef91be8ec199ba97dd90 - languageName: node - linkType: hard - -"@solana-program/system@npm:^0.7.0": - version: 0.7.0 - resolution: "@solana-program/system@npm:0.7.0" - peerDependencies: - "@solana/kit": ^2.1.0 - checksum: 10c0/0316a6f5359a79b7d070358bf5b7443ff99419f2b7120f78fe625861925b227c7129fa9c2d88c53a8731630032777491e25e8cf6c0711f92fe956d90d40b5662 - languageName: node - linkType: hard - -"@solana-program/token-2022@npm:^0.4.2": - version: 0.4.2 - resolution: "@solana-program/token-2022@npm:0.4.2" - peerDependencies: - "@solana/kit": ^2.1.0 - "@solana/sysvars": ^2.1.0 - checksum: 10c0/d70f5514325b57d95ca462a2d559b4f6c57088108cd2666c9a64cddf42e455272a13f85f4b4491466afcb92f3ce4e86f1353a82873bf2ce8e6d8f9dba25d94b5 - languageName: node - linkType: hard - -"@solana/accounts@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/accounts@npm:2.3.0" - dependencies: - "@solana/addresses": "npm:2.3.0" - "@solana/codecs-core": "npm:2.3.0" - "@solana/codecs-strings": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - "@solana/rpc-spec": "npm:2.3.0" - "@solana/rpc-types": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/4fc88109745bc17a84b88fb357ba9be649c351ce04de24ad5adfbbb633d5abcb0b38177fb1169045776a2ba2760a4910a4edd4b28f88368c90a06c260b9ffc86 - languageName: node - linkType: hard - -"@solana/addresses@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/addresses@npm:2.3.0" - dependencies: - "@solana/assertions": "npm:2.3.0" - "@solana/codecs-core": "npm:2.3.0" - "@solana/codecs-strings": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - "@solana/nominal-types": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/c54de389f30e9c2ef58ce696190343b424b88aaf76cdc84cd533897237e0c171fc530e10a59dfa8558e9fc0a28dab89709615b2a3613f3e0f508c6e7f83a63bc - languageName: node - linkType: hard - -"@solana/assertions@npm:2.3.0, @solana/assertions@npm:^2.1.1": - version: 2.3.0 - resolution: "@solana/assertions@npm:2.3.0" - dependencies: - "@solana/errors": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/76a3a2764bbc95e21f63a1e6c88e241ce3b1f7dba54da49284dfac575066c524b7b6ad6930b7c91fb99d2befc5e0c15f170c73dbe0a5de2ecf2bc714740f81f1 - languageName: node - linkType: hard - -"@solana/buffer-layout-utils@npm:^0.2.0": - version: 0.2.0 - resolution: "@solana/buffer-layout-utils@npm:0.2.0" - dependencies: - "@solana/buffer-layout": "npm:^4.0.0" - "@solana/web3.js": "npm:^1.32.0" - bigint-buffer: "npm:^1.1.5" - bignumber.js: "npm:^9.0.1" - checksum: 10c0/ed093999d7c0f93527a9b261a9a2a59e10b5ef78fc416fa896b86036fb4dadf923d17db68bffdc3e91eadecdb8b8cddd8ee37f12429980fcaba321e7b8a35d27 - languageName: node - linkType: hard - -"@solana/buffer-layout@npm:^4.0.0, @solana/buffer-layout@npm:^4.0.1": - version: 4.0.1 - resolution: "@solana/buffer-layout@npm:4.0.1" - dependencies: - buffer: "npm:~6.0.3" - checksum: 10c0/6535f3908cf6dfc405b665795f0c2eaa0482a8c6b1811403945cf7b450e7eb7b40acce3e8af046f2fcc3eea1a15e61d48c418315d813bee4b720d56b00053305 - languageName: node - linkType: hard - -"@solana/codecs-core@npm:2.0.0-preview.4": - version: 2.0.0-preview.4 - resolution: "@solana/codecs-core@npm:2.0.0-preview.4" - dependencies: - "@solana/errors": "npm:2.0.0-preview.4" - peerDependencies: - typescript: ">=5" - checksum: 10c0/fe6d52cec3b747a8ecf752675b57e7f01c5c1d6287d0ec339b49979afba0c37f6c357f4b0b75edb9a6f7876134ba8c1eb77daa3df5b3cdfc938fdebde5d98278 - languageName: node - linkType: hard - -"@solana/codecs-core@npm:2.0.0-rc.1": - version: 2.0.0-rc.1 - resolution: "@solana/codecs-core@npm:2.0.0-rc.1" - dependencies: - "@solana/errors": "npm:2.0.0-rc.1" - peerDependencies: - typescript: ">=5" - checksum: 10c0/3b1fd09727bf850d191292b14e1afb64cda4e57f898c06483f40d0402c4f07f1d4df555f028f664701e647834c74924818857443666d039f4e44c8c01f31f427 - languageName: node - linkType: hard - -"@solana/codecs-core@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/codecs-core@npm:2.3.0" - dependencies: - "@solana/errors": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/efef080b94fe572bcfeac9f1c0b222700203bd2b45c9590e77445b35335d0ed2582d1cc4e533003d2090c385c06eb93dfa05388f9766182aa60ce85eacfd8042 - languageName: node - linkType: hard - -"@solana/codecs-data-structures@npm:2.0.0-preview.4": - version: 2.0.0-preview.4 - resolution: "@solana/codecs-data-structures@npm:2.0.0-preview.4" - dependencies: - "@solana/codecs-core": "npm:2.0.0-preview.4" - "@solana/codecs-numbers": "npm:2.0.0-preview.4" - "@solana/errors": "npm:2.0.0-preview.4" - peerDependencies: - typescript: ">=5" - checksum: 10c0/9274fbfe029654e6f3cf43a8e82c575c6fab406f6db6b77ee443a2288abf730c4c3c2defd479f9fc4e3d0b9a4334018ba821b4bddcd546586f99e4f778004c33 - languageName: node - linkType: hard - -"@solana/codecs-numbers@npm:2.0.0-preview.4": - version: 2.0.0-preview.4 - resolution: "@solana/codecs-numbers@npm:2.0.0-preview.4" - dependencies: - "@solana/codecs-core": "npm:2.0.0-preview.4" - "@solana/errors": "npm:2.0.0-preview.4" - peerDependencies: - typescript: ">=5" - checksum: 10c0/02ea792e055f6c798ca140d00d429e0ae6d37b9b42ff3ad950dba98666e18324eeaabd13cdcc584c64a21b10ef3706aaeb23691ba53520dba462fbc071bd63aa - languageName: node - linkType: hard - -"@solana/codecs-numbers@npm:2.0.0-rc.1": - version: 2.0.0-rc.1 - resolution: "@solana/codecs-numbers@npm:2.0.0-rc.1" - dependencies: - "@solana/codecs-core": "npm:2.0.0-rc.1" - "@solana/errors": "npm:2.0.0-rc.1" - peerDependencies: - typescript: ">=5" - checksum: 10c0/baf888bbd9c9ed2420207329c735def60a2b3d94d4a0dd1a92703f4de165a96dfd5b66e4fe954d6a7fae12b6b95c41da500499f100b6d5cfad6420d4bfe71b50 - languageName: node - linkType: hard - -"@solana/codecs-numbers@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/codecs-numbers@npm:2.3.0" - dependencies: - "@solana/codecs-core": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/0780d60771e451cfe22ea614315fed2f37507aa62f83cddb900186f88d4d4532eea298d74796d1dbc8c34321a570b5d9ada25e8f4a5aeadd57aa4e688b4465f5 - languageName: node - linkType: hard - -"@solana/codecs-strings@npm:2.0.0-rc.1": - version: 2.0.0-rc.1 - resolution: "@solana/codecs-strings@npm:2.0.0-rc.1" - dependencies: - "@solana/codecs-core": "npm:2.0.0-rc.1" - "@solana/codecs-numbers": "npm:2.0.0-rc.1" - "@solana/errors": "npm:2.0.0-rc.1" - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: ">=5" - checksum: 10c0/7f3483407de7e324075a85f2f8c91103021d6b8f38cfd4cf78603cbd7b00ea8b828a0cb9b61fb2b0db6d3e733fdf358006de23278cf3b103af1f1de4f3f66233 - languageName: node - linkType: hard - -"@solana/codecs-strings@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/codecs-strings@npm:2.3.0" - dependencies: - "@solana/codecs-core": "npm:2.3.0" - "@solana/codecs-numbers": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - peerDependencies: - fastestsmallesttextencoderdecoder: ^1.0.22 - typescript: ">=5.3.3" - checksum: 10c0/547b6046751ac15988d280939aa35a178b262de6a72366f6efb78d9fea3cdfd8461c719f63f96a983b934d34d50aeb04207eb9e812b0736335c01991dde2857b - languageName: node - linkType: hard - -"@solana/codecs@npm:2.0.0-rc.1": - version: 2.0.0-rc.1 - resolution: "@solana/codecs@npm:2.0.0-rc.1" - dependencies: - "@solana/codecs-core": "npm:2.0.0-rc.1" - "@solana/codecs-data-structures": "npm:2.0.0-rc.1" - "@solana/codecs-numbers": "npm:2.0.0-rc.1" - "@solana/codecs-strings": "npm:2.0.0-rc.1" - "@solana/options": "npm:2.0.0-rc.1" - peerDependencies: - typescript: ">=5" - checksum: 10c0/5f4a30b1fed60c9442ab73cbe413fe528e5b316f602eb745b0de84a9622ceb8af9e7a7a9f8e2f5d730280858f9e4e0ab861729311c0aa55cc253427707815ef2 - languageName: node - linkType: hard - -"@solana/codecs@npm:2.3.0, @solana/codecs@npm:^2.1.1": - version: 2.3.0 - resolution: "@solana/codecs@npm:2.3.0" - dependencies: - "@solana/codecs-core": "npm:2.3.0" - "@solana/codecs-data-structures": "npm:2.3.0" - "@solana/codecs-numbers": "npm:2.3.0" - "@solana/codecs-strings": "npm:2.3.0" - "@solana/options": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/c745ec4e051c9c1ab0fe76cb0c59c08303e432e11bc6d8699e109e809287e245bf5749d37f7fc16c59c1e1163f7a05178eb76e5c91f12c412059fdaa3ebd7213 - languageName: node - linkType: hard - -"@solana/errors@npm:2.0.0-preview.4": - version: 2.0.0-preview.4 - resolution: "@solana/errors@npm:2.0.0-preview.4" - dependencies: - chalk: "npm:^5.3.0" - commander: "npm:^12.1.0" - peerDependencies: - typescript: ">=5" - bin: - errors: bin/cli.mjs - checksum: 10c0/457a4e35a8a28c1ad7fc75cf1fde6159b920cebce9c6c46af54b001ccecae9c1f366703de9cad238e784a2b76ae180f0b7c9c63d2f7c972d67cd8165960fdae9 - languageName: node - linkType: hard - -"@solana/fast-stable-stringify@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/fast-stable-stringify@npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/8ba068c2df1388edd00714a343659a167e8072fabd7f9f89a7eb176b10c9307da7905b21c047c7080245363a0fd26d0d1751d7ba3857c1487cbbec4ceef2222b - languageName: node - linkType: hard - -"@solana/functional@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/functional@npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/6a2d564f00515f401497bcbf00542fca354dfbbc89c16a7172a2fbffcb96caf006d4e2c2471d5499bafb43365d1156fd2be783bbd46b56e18e8908de33659062 - languageName: node - linkType: hard - -"@solana/instructions@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/instructions@npm:2.3.0" - dependencies: - "@solana/codecs-core": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/0eb00090576aff2c7089d84103463b059a4f50c1e244d4f50925b54f98abe148269efa45e9b3cc3a9e4ef84619a24694ad282759800009448530e6ed22e3b189 - languageName: node - linkType: hard - -"@solana/keys@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/keys@npm:2.3.0" - dependencies: - "@solana/assertions": "npm:2.3.0" - "@solana/codecs-core": "npm:2.3.0" - "@solana/codecs-strings": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - "@solana/nominal-types": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/72bce8e0315319e66f8610e0492ea28925b3149b93a4ae07a08ac43a4cd1065954147073b035a4350e6b6559e97c885ad664ac9d63d5cd04322b9dc879ab7161 - languageName: node - linkType: hard - -"@solana/kit@npm:^2.3.0": - version: 2.3.0 - resolution: "@solana/kit@npm:2.3.0" - dependencies: - "@solana/accounts": "npm:2.3.0" - "@solana/addresses": "npm:2.3.0" - "@solana/codecs": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - "@solana/functional": "npm:2.3.0" - "@solana/instructions": "npm:2.3.0" - "@solana/keys": "npm:2.3.0" - "@solana/programs": "npm:2.3.0" - "@solana/rpc": "npm:2.3.0" - "@solana/rpc-parsed-types": "npm:2.3.0" - "@solana/rpc-spec-types": "npm:2.3.0" - "@solana/rpc-subscriptions": "npm:2.3.0" - "@solana/rpc-types": "npm:2.3.0" - "@solana/signers": "npm:2.3.0" - "@solana/sysvars": "npm:2.3.0" - "@solana/transaction-confirmation": "npm:2.3.0" - "@solana/transaction-messages": "npm:2.3.0" - "@solana/transactions": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/4f9082b88dd4a08c82feb175d317a240a821bdb814d715d98b891284738a2d71c2447f7e263af5231ac1992fc5056eb23a8d7c1e47f20c56c0c530b6b6761e5b - languageName: node - linkType: hard - -"@solana/nominal-types@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/nominal-types@npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/fb24bd630c67afcb1eeb6ec756a1116167d45a77ce539f62bb4b911d44fd26e83d4388bf1ff27d76a5f2f19add65d1e3a5a3875fa1ac9b73a2b29a119553daa6 - languageName: node - linkType: hard - -"@solana/options@npm:2.0.0-rc.1": - version: 2.0.0-rc.1 - resolution: "@solana/options@npm:2.0.0-rc.1" - dependencies: - "@solana/codecs-core": "npm:2.0.0-rc.1" - "@solana/codecs-data-structures": "npm:2.0.0-rc.1" - "@solana/codecs-numbers": "npm:2.0.0-rc.1" - "@solana/codecs-strings": "npm:2.0.0-rc.1" - "@solana/errors": "npm:2.0.0-rc.1" - peerDependencies: - typescript: ">=5" - checksum: 10c0/967dc01c12b0433412a74cb498262f7d0bdf4c3b002936d8f5761bcb189929c35fe0b32c2f793796a975366e2c1245dd34c1818e4f44f483932fdfa3fde4f3e9 - languageName: node - linkType: hard - -"@solana/options@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/options@npm:2.3.0" - dependencies: - "@solana/codecs-core": "npm:2.3.0" - "@solana/codecs-data-structures": "npm:2.3.0" - "@solana/codecs-numbers": "npm:2.3.0" - "@solana/codecs-strings": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/7c2c84ffff4f9ad930d462b662443f97cf1504e33c0454b34887f8ae3f7421a7f758efa2eb8d886dfd7504858bd3092bd51d1ad9fd62b71a14b83e95a3cf20b4 - languageName: node - linkType: hard - -"@solana/programs@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/programs@npm:2.3.0" - dependencies: - "@solana/addresses": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/52c82c16c4df96611879b3d973f53badec03925774fbe1a639244dc630308fbe6702027e8a56d868101c92d3abab6a4aa40c843b96b8b185c1a02bef5e34a340 - languageName: node - linkType: hard - -"@solana/promises@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/promises@npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/77614ef727db1f6244bec53e2bbc8fa26e2fb8effe7075e4fd9a136e415c800a2439bd0833728aa8748015d84f1d8e1194f96765076190367e03ee0a9d854cb2 - languageName: node - linkType: hard - -"@solana/rpc-api@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/rpc-api@npm:2.3.0" - dependencies: - "@solana/addresses": "npm:2.3.0" - "@solana/codecs-core": "npm:2.3.0" - "@solana/codecs-strings": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - "@solana/keys": "npm:2.3.0" - "@solana/rpc-parsed-types": "npm:2.3.0" - "@solana/rpc-spec": "npm:2.3.0" - "@solana/rpc-transformers": "npm:2.3.0" - "@solana/rpc-types": "npm:2.3.0" - "@solana/transaction-messages": "npm:2.3.0" - "@solana/transactions": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/3c63e7485fc4b709dbdb06c00085d94203afab7ecc2033189549f1eeae612126e6054763c0b558191d3c3aa7ad1b9bb40c4786e2857ecd453b9b529cc041642c - languageName: node - linkType: hard - -"@solana/rpc-parsed-types@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/rpc-parsed-types@npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/8c9610dee5efa74ad37f66d85ede338103ac0ba0b14bdbd852c45561ed6a8ab6af6ab4259ce86bb67e35a50365545366e22b0b8a97689d2d3e2b2dcf5865779d - languageName: node - linkType: hard - -"@solana/rpc-spec-types@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/rpc-spec-types@npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/dc7289c5afe709f3642db7d633255662424c905c92ae0488305345a35f0772e318b82d000a4109512971045090fccbc7fb161069d87dee83848b73c48a8cc075 - languageName: node - linkType: hard - -"@solana/rpc-spec@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/rpc-spec@npm:2.3.0" - dependencies: - "@solana/errors": "npm:2.3.0" - "@solana/rpc-spec-types": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/24d23b1ae985092571cc4ae22ab9caa90619880ccb386315daeaba44ba5d1803c7f8b7f794585895adbeae1e8c6672d3e86aa4f7eeda5e2c5b290da11e2c5063 - languageName: node - linkType: hard - -"@solana/rpc-subscriptions-api@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/rpc-subscriptions-api@npm:2.3.0" - dependencies: - "@solana/addresses": "npm:2.3.0" - "@solana/keys": "npm:2.3.0" - "@solana/rpc-subscriptions-spec": "npm:2.3.0" - "@solana/rpc-transformers": "npm:2.3.0" - "@solana/rpc-types": "npm:2.3.0" - "@solana/transaction-messages": "npm:2.3.0" - "@solana/transactions": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/4dd2e2b7b1ce6b3163aaf6daa5ead6fd2d926246783fa403da291d08b0f8e0f0df58d8abe93f8a21e55486a593993a7c19a5ab0f04c85b310f983dbf4b846703 - languageName: node - linkType: hard - -"@solana/rpc-subscriptions-channel-websocket@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/rpc-subscriptions-channel-websocket@npm:2.3.0" - dependencies: - "@solana/errors": "npm:2.3.0" - "@solana/functional": "npm:2.3.0" - "@solana/rpc-subscriptions-spec": "npm:2.3.0" - "@solana/subscribable": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - ws: ^8.18.0 - checksum: 10c0/1835a15deeb2fbad7dcb26dd4ff53f109a0c92ca4920ee8356db3a1e6ea0e1f3e8cc1cc4e79d6e472597bfd63da26014693bf002e3091d2178d42a92d531e9c9 - languageName: node - linkType: hard - -"@solana/rpc-subscriptions-spec@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/rpc-subscriptions-spec@npm:2.3.0" - dependencies: - "@solana/errors": "npm:2.3.0" - "@solana/promises": "npm:2.3.0" - "@solana/rpc-spec-types": "npm:2.3.0" - "@solana/subscribable": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/110ab0e06d13d5e70a3e5f39d924556b10aeeedfba1e8050ccb8019e722709f6b7d0189e999be7c772202d2ba7aa7adc53fe2719d684bf133cf9136a551ecce3 - languageName: node - linkType: hard - -"@solana/rpc-subscriptions@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/rpc-subscriptions@npm:2.3.0" - dependencies: - "@solana/errors": "npm:2.3.0" - "@solana/fast-stable-stringify": "npm:2.3.0" - "@solana/functional": "npm:2.3.0" - "@solana/promises": "npm:2.3.0" - "@solana/rpc-spec-types": "npm:2.3.0" - "@solana/rpc-subscriptions-api": "npm:2.3.0" - "@solana/rpc-subscriptions-channel-websocket": "npm:2.3.0" - "@solana/rpc-subscriptions-spec": "npm:2.3.0" - "@solana/rpc-transformers": "npm:2.3.0" - "@solana/rpc-types": "npm:2.3.0" - "@solana/subscribable": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/9df9f5a01b2a5bd235434c68c849c01992e70a462fc15b55ff286a6ddc5972fe38e6406d1f1f0d417f4492e271518ae61da5e5d726432e8beaa886aa3f3cab75 - languageName: node - linkType: hard - -"@solana/rpc-transformers@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/rpc-transformers@npm:2.3.0" - dependencies: - "@solana/errors": "npm:2.3.0" - "@solana/functional": "npm:2.3.0" - "@solana/nominal-types": "npm:2.3.0" - "@solana/rpc-spec-types": "npm:2.3.0" - "@solana/rpc-types": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/a1c75d6e5329592e820f6f32e4e6123a53117511ff3d910b864c7c3b68b6a29dbbdbe5f3b3e8b403a4b6a90c74788abce6944d3fd755dc7e04664be27375496f - languageName: node - linkType: hard - -"@solana/rpc-transport-http@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/rpc-transport-http@npm:2.3.0" - dependencies: - "@solana/errors": "npm:2.3.0" - "@solana/rpc-spec": "npm:2.3.0" - "@solana/rpc-spec-types": "npm:2.3.0" - undici-types: "npm:^7.11.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/31b959ead288ee60cbab336fdee2b7e77642f5c0b69b3aa537567674fca9bb7f74dfb97608a1740092e90148d8512f969b2c4b11ef6b50368eb5305a55cee27b - languageName: node - linkType: hard - -"@solana/rpc-types@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/rpc-types@npm:2.3.0" - dependencies: - "@solana/addresses": "npm:2.3.0" - "@solana/codecs-core": "npm:2.3.0" - "@solana/codecs-numbers": "npm:2.3.0" - "@solana/codecs-strings": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - "@solana/nominal-types": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/1edee0762deba613e16ece79e5f0132f4bdd534d51308e26a37f31c397146a1b004e2b340011bb7d2151e04c7bb6cd69fbe17b9c64c16e36ea4894e17f87fdc4 - languageName: node - linkType: hard - -"@solana/rpc@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/rpc@npm:2.3.0" - dependencies: - "@solana/errors": "npm:2.3.0" - "@solana/fast-stable-stringify": "npm:2.3.0" - "@solana/functional": "npm:2.3.0" - "@solana/rpc-api": "npm:2.3.0" - "@solana/rpc-spec": "npm:2.3.0" - "@solana/rpc-spec-types": "npm:2.3.0" - "@solana/rpc-transformers": "npm:2.3.0" - "@solana/rpc-transport-http": "npm:2.3.0" - "@solana/rpc-types": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/2409b4f29cc21392ff474fabf4efaf3bf15f8171149bee2a3da6dffe38ad6c11736b6718b3efb9020fbe33c3d0bdda027472bbd8386891f628767794a6f39d88 - languageName: node - linkType: hard - -"@solana/signers@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/signers@npm:2.3.0" - dependencies: - "@solana/addresses": "npm:2.3.0" - "@solana/codecs-core": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - "@solana/instructions": "npm:2.3.0" - "@solana/keys": "npm:2.3.0" - "@solana/nominal-types": "npm:2.3.0" - "@solana/transaction-messages": "npm:2.3.0" - "@solana/transactions": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/073c8df2cfc85c35d593f4f6fafa6f31a3f7f5856fa491362473e24c4cd6942662cd86c86f4d3d184ecf5956904afa1b6fcb16e2d44ee1b56b515f1ed90317d7 - languageName: node - linkType: hard - -"@solana/spl-token-group@npm:^0.0.7": - version: 0.0.7 - resolution: "@solana/spl-token-group@npm:0.0.7" - dependencies: - "@solana/codecs": "npm:2.0.0-rc.1" - peerDependencies: - "@solana/web3.js": ^1.95.3 - checksum: 10c0/e1ebeb30c4dd3c179ee9d4bf02635c0ca3daea18526a25c824eb4db8882db768563f20813ac600a41fe153892ce66c0c7538e2639f530945940477edddfa731f - languageName: node - linkType: hard - -"@solana/spl-token-metadata@npm:^0.1.2, @solana/spl-token-metadata@npm:^0.1.6": - version: 0.1.6 - resolution: "@solana/spl-token-metadata@npm:0.1.6" - dependencies: - "@solana/codecs": "npm:2.0.0-rc.1" - peerDependencies: - "@solana/web3.js": ^1.95.3 - checksum: 10c0/a2ea535ac28cf9b8f499c2e2aced7ce9134b0728a0c1d4c8f2dfce8fe01ae66d94ccaca8f1f677c9613d3dbc913845c29df785efeafc25d9398e830fba4a626f - languageName: node - linkType: hard - -"@solana/spl-token@npm:0.4.13": - version: 0.4.13 - resolution: "@solana/spl-token@npm:0.4.13" - dependencies: - "@solana/buffer-layout": "npm:^4.0.0" - "@solana/buffer-layout-utils": "npm:^0.2.0" - "@solana/spl-token-group": "npm:^0.0.7" - "@solana/spl-token-metadata": "npm:^0.1.6" - buffer: "npm:^6.0.3" - peerDependencies: - "@solana/web3.js": ^1.95.5 - checksum: 10c0/001c3c347e66fe20a1a631679d81bad26d9cf174f21fe8817a571524626d755347e48696917c49f9a457c7227f82ec1bda4aa5d1d252f912e764a3dce5d89e4b - languageName: node - linkType: hard - -"@solana/spl-token@npm:^0.1.6": - version: 0.1.8 - resolution: "@solana/spl-token@npm:0.1.8" - dependencies: - "@babel/runtime": "npm:^7.10.5" - "@solana/web3.js": "npm:^1.21.0" - bn.js: "npm:^5.1.0" - buffer: "npm:6.0.3" - buffer-layout: "npm:^1.2.0" - dotenv: "npm:10.0.0" - checksum: 10c0/adae2cc9bb24054be183faa2bc95de70c00b34f048dc60b51ea20ece53712365233cff1710d9f78e017bb013121c29be26780c4a3672dff7582227cffff1301f - languageName: node - linkType: hard - -"@solana/spl-token@npm:^0.3.7": - version: 0.3.11 - resolution: "@solana/spl-token@npm:0.3.11" - dependencies: - "@solana/buffer-layout": "npm:^4.0.0" - "@solana/buffer-layout-utils": "npm:^0.2.0" - "@solana/spl-token-metadata": "npm:^0.1.2" - buffer: "npm:^6.0.3" - peerDependencies: - "@solana/web3.js": ^1.88.0 - checksum: 10c0/eae23e1ced21c8cc117a43d4c6e1b1f0f9aa412619e22f7fed96e15a833e350dddd6ec1b1498f5274a9542d8b0fdbd9ce93a5b79ed77863f7170951aeacb18fe - languageName: node - linkType: hard - -"@solana/spl-token@npm:^0.4.0": - version: 0.4.14 - resolution: "@solana/spl-token@npm:0.4.14" - dependencies: - "@solana/buffer-layout": "npm:^4.0.0" - "@solana/buffer-layout-utils": "npm:^0.2.0" - "@solana/spl-token-group": "npm:^0.0.7" - "@solana/spl-token-metadata": "npm:^0.1.6" - buffer: "npm:^6.0.3" - peerDependencies: - "@solana/web3.js": ^1.95.5 - checksum: 10c0/aaa0b03859c45a8e917e14a8d0703de13ca16cfab31b72685ef148dcd2dc9a6fd37ac8842b1ca9609aea8407d51bf98e69bc7a4f9e2dc86f440b5bd8c0c70bfe - languageName: node - linkType: hard - -"@solana/subscribable@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/subscribable@npm:2.3.0" - dependencies: - "@solana/errors": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/ecfc64a4ea91bd9b9d7266a794d7e49851684e10ebd70ed2fb63a53451ebcc463dbf83465585b65c156dc362329277fe7288795896629ae6deb0e6af0f041215 - languageName: node - linkType: hard - -"@solana/sysvars@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/sysvars@npm:2.3.0" - dependencies: - "@solana/accounts": "npm:2.3.0" - "@solana/codecs": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - "@solana/rpc-types": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/e5d3896a401873b6e6d7637ab0064b9cd53ed7822ee7ce6e51dcdb4871c91c7fa353a7f67d4ae4f8d7d0f0cb52642cf5f691571e4ee65eda6b4463072373813b - languageName: node - linkType: hard - -"@solana/transaction-confirmation@npm:2.3.0, @solana/transaction-confirmation@npm:^2.1.1": - version: 2.3.0 - resolution: "@solana/transaction-confirmation@npm:2.3.0" - dependencies: - "@solana/addresses": "npm:2.3.0" - "@solana/codecs-strings": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - "@solana/keys": "npm:2.3.0" - "@solana/promises": "npm:2.3.0" - "@solana/rpc": "npm:2.3.0" - "@solana/rpc-subscriptions": "npm:2.3.0" - "@solana/rpc-types": "npm:2.3.0" - "@solana/transaction-messages": "npm:2.3.0" - "@solana/transactions": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/063d8eadba27995c5324829f0785234356bb7ed3d31ddb10c1751235f4e67b25c72535cf8cbb581d1a14bc16564d3062e570a9ef07a51be72c26af7cab64df47 - languageName: node - linkType: hard - -"@solana/transaction-messages@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/transaction-messages@npm:2.3.0" - dependencies: - "@solana/addresses": "npm:2.3.0" - "@solana/codecs-core": "npm:2.3.0" - "@solana/codecs-data-structures": "npm:2.3.0" - "@solana/codecs-numbers": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - "@solana/functional": "npm:2.3.0" - "@solana/instructions": "npm:2.3.0" - "@solana/nominal-types": "npm:2.3.0" - "@solana/rpc-types": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/7aa6ac6808c0b34b1c60efadb0f02db1db4faed29753bf3ea42c5858988e7aedac6bca773a3bb10d0c0e58b98a1409c290e892e7c532b4838f973fa99cb49847 - languageName: node - linkType: hard - -"@solana/transactions@npm:2.3.0": - version: 2.3.0 - resolution: "@solana/transactions@npm:2.3.0" - dependencies: - "@solana/addresses": "npm:2.3.0" - "@solana/codecs-core": "npm:2.3.0" - "@solana/codecs-data-structures": "npm:2.3.0" - "@solana/codecs-numbers": "npm:2.3.0" - "@solana/codecs-strings": "npm:2.3.0" - "@solana/errors": "npm:2.3.0" - "@solana/functional": "npm:2.3.0" - "@solana/instructions": "npm:2.3.0" - "@solana/keys": "npm:2.3.0" - "@solana/nominal-types": "npm:2.3.0" - "@solana/rpc-types": "npm:2.3.0" - "@solana/transaction-messages": "npm:2.3.0" - peerDependencies: - typescript: ">=5.3.3" - checksum: 10c0/e033a1556aa3bc9a6473e0f258a36882cb008d220041a665268a42315114e2beb62265818b517d9d7e418b8476e96d9234591827585ee311983a2f88615757ab - languageName: node - linkType: hard - -"@solana/web3.js@npm:1.98.0": - version: 1.98.0 - resolution: "@solana/web3.js@npm:1.98.0" - dependencies: - "@babel/runtime": "npm:^7.25.0" - "@noble/curves": "npm:^1.4.2" - "@noble/hashes": "npm:^1.4.0" - "@solana/buffer-layout": "npm:^4.0.1" - agentkeepalive: "npm:^4.5.0" - bigint-buffer: "npm:^1.1.5" - bn.js: "npm:^5.2.1" - borsh: "npm:^0.7.0" - bs58: "npm:^4.0.1" - buffer: "npm:6.0.3" - fast-stable-stringify: "npm:^1.0.0" - jayson: "npm:^4.1.1" - node-fetch: "npm:^2.7.0" - rpc-websockets: "npm:^9.0.2" - superstruct: "npm:^2.0.2" - checksum: 10c0/b95b130c347d5499866887b405094b8c9f551b69b6e21bb4fef7f381972f36b22d0c281ce6c2595dc146ec97527ebc524c96e8867dad7e7cd89181e30baf64b7 - languageName: node - linkType: hard - -"@swc/helpers@npm:^0.5.11": - version: 0.5.18 - resolution: "@swc/helpers@npm:0.5.18" - dependencies: - tslib: "npm:^2.8.0" - checksum: 10c0/cb32d72e32f775c30287bffbcf61c89ea3a963608cb3a4a675a3f9af545b8b3ab0bc9930432a5520a7307daaa87538158e253584ae1cf39f3e7e6e83408a2d51 - languageName: node - linkType: hard - -"@switchboard-xyz/common@npm:3.0.14": - version: 3.0.14 - resolution: "@switchboard-xyz/common@npm:3.0.14" - dependencies: - "@solana/web3.js": "npm:^1.98.0" - axios: "npm:^1.8.3" - big.js: "npm:^6.2.2" - bn.js: "npm:^5.2.1" - bs58: "npm:^6.0.0" - buffer: "npm:^6.0.3" - decimal.js: "npm:^10.4.3" - js-sha256: "npm:^0.11.0" - protobufjs: "npm:^7.4.0" - yaml: "npm:^2.6.1" - checksum: 10c0/8e7af32e661ab9b6b32c26bc9918c26f9ce37375d2e1df079e441d03c71a2fa3c5ac9cf878f1c29b001a1e9f43ab334a68923e67f1a7bb78caf4dc457268e519 - languageName: node - linkType: hard - -"@switchboard-xyz/common@npm:>=3.0.0": - version: 5.6.1 - resolution: "@switchboard-xyz/common@npm:5.6.1" - dependencies: - "@solana/web3.js": "npm:^1.98.2" - axios: "npm:^1.9.0" - big.js: "npm:^6.2.2" - bn.js: "npm:^5.2.1" - bs58: "npm:^6.0.0" - buffer: "npm:^6.0.3" - decimal.js: "npm:^10.4.3" - js-sha256: "npm:^0.11.0" - protobufjs: "npm:^7.4.0" - checksum: 10c0/d038841a1b0c8d730734a7854781bf71eb273f62149e0d7a95685320d09e1ce88aefe42380799baf3079b782e6371fd927cc587e08db746ac203596d227e43c5 - languageName: node - linkType: hard - -"@switchboard-xyz/on-demand@npm:2.4.1": - version: 2.4.1 - resolution: "@switchboard-xyz/on-demand@npm:2.4.1" - dependencies: - "@coral-xyz/anchor-30": "npm:@coral-xyz/anchor@0.30.1" - "@isaacs/ttlcache": "npm:^1.4.1" - "@switchboard-xyz/common": "npm:>=3.0.0" - axios: "npm:^1.8.3" - bs58: "npm:^6.0.0" - buffer: "npm:^6.0.3" - js-yaml: "npm:^4.1.0" - peerDependencies: - "@switchboard-xyz/common": ">=3.0.0" - checksum: 10c0/4d4c4ea1297a4fca80d57c40fe466ada0641eb4982ddfb04dfbdcab7212593e56b8ea6010f521cc6728265aa4165443d07762dd721d0bfcdb4bae6b928b6be5c - languageName: node - linkType: hard - -"@triton-one/yellowstone-grpc@npm:1.4.1": - version: 1.4.1 - resolution: "@triton-one/yellowstone-grpc@npm:1.4.1" - dependencies: - "@grpc/grpc-js": "npm:^1.8.0" - checksum: 10c0/584386be088161f45f1081097f56f7e943cab60a151268e7319d7f34b3b3b6734eff0df0ab0adda24b5004a4a79692e7b72f2d0e18b9ec6562eeaa2d4a1ed69e - languageName: node - linkType: hard - -"@ts-graphviz/adapter@npm:^2.0.6": - version: 2.0.6 - resolution: "@ts-graphviz/adapter@npm:2.0.6" - dependencies: - "@ts-graphviz/common": "npm:^2.1.5" - checksum: 10c0/43c9b6ee45b9ff73ef75a66f5556205c37b2d828d66cb7520c004c4422a8fd84784ef42ebb6a294689af32e25de1a826cf0889d51e43472b7e23dee5053a0706 - languageName: node - linkType: hard - -"@ts-graphviz/ast@npm:^2.0.7": - version: 2.0.7 - resolution: "@ts-graphviz/ast@npm:2.0.7" - dependencies: - "@ts-graphviz/common": "npm:^2.1.5" - checksum: 10c0/f6762ea9255bf97c9bbd9006eb34c79931ce3ed0225622356f3facd5b9c88c8e64ddd7df379ce7bbdfe10c8e0562192b4534760c28464173c0dd7a8c6c728d42 - languageName: node - linkType: hard - -"@ts-graphviz/common@npm:^2.1.5": - version: 2.1.5 - resolution: "@ts-graphviz/common@npm:2.1.5" - checksum: 10c0/921f32145cdfecab8f06f93b50cc0300f63f4c2e31a09d909983c509acdcfec03d2b50b97d40fc658ef6f40ecfddad1e1a6fa21bd7a612a4e9bcfbb9f9018b40 - languageName: node - linkType: hard - -"@ts-graphviz/core@npm:^2.0.7": - version: 2.0.7 - resolution: "@ts-graphviz/core@npm:2.0.7" - dependencies: - "@ts-graphviz/ast": "npm:^2.0.7" - "@ts-graphviz/common": "npm:^2.1.5" - checksum: 10c0/39dd723a4760d8ac4a5865c44003b7509b02a30505c52fa02aa7475f6ec235b1f4026e0c422717ace15b4bb8b9a8d634e8b3bbc7e064dd8fcaff9fc9cf8747d1 - languageName: node - linkType: hard - -"@tsconfig/node10@npm:^1.0.7": - version: 1.0.12 - resolution: "@tsconfig/node10@npm:1.0.12" - checksum: 10c0/7bbbd7408cfaced86387a9b1b71cebc91c6fd701a120369735734da8eab1a4773fc079abd9f40c9e0b049e12586c8ac0e13f0da596bfd455b9b4c3faa813ebc5 - languageName: node - linkType: hard - -"@tsconfig/node12@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node12@npm:1.0.11" - checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 - languageName: node - linkType: hard - -"@tsconfig/node14@npm:^1.0.0": - version: 1.0.3 - resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 - languageName: node - linkType: hard - -"@tsconfig/node16@npm:^1.0.2": - version: 1.0.4 - resolution: "@tsconfig/node16@npm:1.0.4" - checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb - languageName: node - linkType: hard - -"@types/big.js@npm:6.2.2": - version: 6.2.2 - resolution: "@types/big.js@npm:6.2.2" - checksum: 10c0/8f8472dfc1ef61c492e6841e86f8b9b97e5b024136bf7964e582a6a80ba73d4dbfd6cc23ed3b9d8fea69c7f30834fffd1c88e7fb981811f5c6ca608380b5ad67 - languageName: node - linkType: hard - -"@types/bn.js@npm:5.1.6": - version: 5.1.6 - resolution: "@types/bn.js@npm:5.1.6" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/073d383d87afea513a8183ce34af7bc0a7a798d057c7ae651982b7f30dd7d93f33247323bca3ba39f1f6af146b564aff547b15467bdf9fc922796c17e8426bf6 - languageName: node - linkType: hard - -"@types/bs58@npm:4.0.4": - version: 4.0.4 - resolution: "@types/bs58@npm:4.0.4" - dependencies: - "@types/node": "npm:*" - base-x: "npm:^3.0.6" - checksum: 10c0/002deb33788f4b36dbb476e71f5b5724b1d7774d92dd83cd7532ae11706bc80ffc2f001920dfeb06eb4bc33df6f7b7bb168892953c859ca9bb969ce96b8e22dc - languageName: node - linkType: hard - -"@types/chai@npm:4.3.20": - version: 4.3.20 - resolution: "@types/chai@npm:4.3.20" - checksum: 10c0/4601189d611752e65018f1ecadac82e94eed29f348e1d5430e5681a60b01e1ecf855d9bcc74ae43b07394751f184f6970fac2b5561fc57a1f36e93a0f5ffb6e8 - languageName: node - linkType: hard - -"@types/connect@npm:^3.4.33": - version: 3.4.38 - resolution: "@types/connect@npm:3.4.38" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c - languageName: node - linkType: hard - -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": - version: 2.0.6 - resolution: "@types/istanbul-lib-coverage@npm:2.0.6" - checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 - languageName: node - linkType: hard - -"@types/istanbul-lib-report@npm:*": - version: 3.0.3 - resolution: "@types/istanbul-lib-report@npm:3.0.3" - dependencies: - "@types/istanbul-lib-coverage": "npm:*" - checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.4 - resolution: "@types/istanbul-reports@npm:3.0.4" - dependencies: - "@types/istanbul-lib-report": "npm:*" - checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee - languageName: node - linkType: hard - -"@types/jest@npm:28.1.8": - version: 28.1.8 - resolution: "@types/jest@npm:28.1.8" - dependencies: - expect: "npm:^28.0.0" - pretty-format: "npm:^28.0.0" - checksum: 10c0/e69912b4285bd3a0545521425e76cdee669d89c4918b2126157c084bf496da1d0cf007366d47b99a9c7076e6567e16917b28c2790a19a6e72a80570c359e4de1 - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.12": - version: 7.0.15 - resolution: "@types/json-schema@npm:7.0.15" - checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db - languageName: node - linkType: hard - -"@types/mocha@npm:9.1.1": - version: 9.1.1 - resolution: "@types/mocha@npm:9.1.1" - checksum: 10c0/d033742ce0c92b917815b6e515165ee396866d0db0c0bbe0c301e49402abe3a61bd51e5bb1df7577f1fac60c99ee505fa744f515b476cc934ecb57f709f327e9 - languageName: node - linkType: hard - -"@types/node@npm:*, @types/node@npm:>=13.7.0": - version: 25.0.8 - resolution: "@types/node@npm:25.0.8" - dependencies: - undici-types: "npm:~7.16.0" - checksum: 10c0/2282464cd928ab184b2310b79899c76bfaa88c8d14640dfab2f9218fdee7e2d916056492de683aa3a26050c8f3bbcade0305616a55277a7c344926c0393149e0 - languageName: node - linkType: hard - -"@types/node@npm:^12.12.54": - version: 12.20.55 - resolution: "@types/node@npm:12.20.55" - checksum: 10c0/3b190bb0410047d489c49bbaab592d2e6630de6a50f00ba3d7d513d59401d279972a8f5a598b5bb8ddc1702f8a2f4ec57a65d93852f9c329639738e7053637d1 - languageName: node - linkType: hard - -"@types/node@npm:^18.11.13": - version: 18.19.130 - resolution: "@types/node@npm:18.19.130" - dependencies: - undici-types: "npm:~5.26.4" - checksum: 10c0/22ba2bc9f8863101a7e90a56aaeba1eb3ebdc51e847cef4a6d188967ab1acbce9b4f92251372fd0329ecb924bbf610509e122c3dfe346c04dbad04013d4ad7d0 - languageName: node - linkType: hard - -"@types/protobufjs@npm:^6.0.0": - version: 6.0.0 - resolution: "@types/protobufjs@npm:6.0.0" - dependencies: - protobufjs: "npm:*" - checksum: 10c0/886574a95b6401559fe09fdc2a0c0f37d2802b6a711b7edbe4984bbc8bef6092dc905aa2682bde2e948a766026995bacf8cad5d61a78e91bb5f4fd8fc6592b86 - languageName: node - linkType: hard - -"@types/semver@npm:^7.5.0": - version: 7.7.1 - resolution: "@types/semver@npm:7.7.1" - checksum: 10c0/c938aef3bf79a73f0f3f6037c16e2e759ff40c54122ddf0b2583703393d8d3127130823facb880e694caa324eb6845628186aac1997ee8b31dc2d18fafe26268 - languageName: node - linkType: hard - -"@types/stack-utils@npm:^2.0.0": - version: 2.0.3 - resolution: "@types/stack-utils@npm:2.0.3" - checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c - languageName: node - linkType: hard - -"@types/uuid@npm:^8.3.4": - version: 8.3.4 - resolution: "@types/uuid@npm:8.3.4" - checksum: 10c0/b9ac98f82fcf35962317ef7dc44d9ac9e0f6fdb68121d384c88fe12ea318487d5585d3480fa003cf28be86a3bbe213ca688ba786601dce4a97724765eb5b1cf2 - languageName: node - linkType: hard - -"@types/ws@npm:^7.4.4": - version: 7.4.7 - resolution: "@types/ws@npm:7.4.7" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/f1f53febd8623a85cef2652949acd19d83967e350ea15a851593e3033501750a1e04f418552e487db90a3d48611a1cff3ffcf139b94190c10f2fd1e1dc95ff10 - languageName: node - linkType: hard - -"@types/ws@npm:^8.2.2": - version: 8.18.1 - resolution: "@types/ws@npm:8.18.1" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/61aff1129143fcc4312f083bc9e9e168aa3026b7dd6e70796276dcfb2c8211c4292603f9c4864fae702f2ed86e4abd4d38aa421831c2fd7f856c931a481afbab - languageName: node - linkType: hard - -"@types/yargs-parser@npm:*": - version: 21.0.3 - resolution: "@types/yargs-parser@npm:21.0.3" - checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 - languageName: node - linkType: hard - -"@types/yargs@npm:^17.0.8": - version: 17.0.35 - resolution: "@types/yargs@npm:17.0.35" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 10c0/609557826a6b85e73ccf587923f6429850d6dc70e420b455bab4601b670bfadf684b09ae288bccedab042c48ba65f1666133cf375814204b544009f57d6eef63 - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/type-utils": "npm:6.21.0" - "@typescript-eslint/utils": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.4" - natural-compare: "npm:^1.4.0" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/f911a79ee64d642f814a3b6cdb0d324b5f45d9ef955c5033e78903f626b7239b4aa773e464a38c3e667519066169d983538f2bf8e5d00228af587c9d438fb344 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/parser@npm:6.21.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/a8f99820679decd0d115c0af61903fb1de3b1b5bec412dc72b67670bf636de77ab07f2a68ee65d6da7976039bbf636907f9d5ca546db3f0b98a31ffbc225bc7d - languageName: node - linkType: hard - -"@typescript-eslint/project-service@npm:8.53.0": - version: 8.53.0 - resolution: "@typescript-eslint/project-service@npm:8.53.0" - dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.53.0" - "@typescript-eslint/types": "npm:^8.53.0" - debug: "npm:^4.4.3" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/b01302890cf853e9bb1d2b19e402ec0ede1388fec833528847d32d65d0e3e03867a14632f816f4f3058e40707b001fab208bf2950ff1e8d7cbbc6c1d57b969d4 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/scope-manager@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - checksum: 10c0/eaf868938d811cbbea33e97e44ba7050d2b6892202cea6a9622c486b85ab1cf801979edf78036179a8ba4ac26f1dfdf7fcc83a68c1ff66be0b3a8e9a9989b526 - languageName: node - linkType: hard - -"@typescript-eslint/tsconfig-utils@npm:8.53.0, @typescript-eslint/tsconfig-utils@npm:^8.53.0": - version: 8.53.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.53.0" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/1a136519d4e0c4ae9471f55468ad0a52175b8b41da28188bd7e4efcf72c2c8528aeb3a1b1c9d27f2d94ab0c8d9a91e08ebc1fed5fc8628c9808112427f306428 - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/type-utils@npm:6.21.0" - dependencies: - "@typescript-eslint/typescript-estree": "npm:6.21.0" - "@typescript-eslint/utils": "npm:6.21.0" - debug: "npm:^4.3.4" - ts-api-utils: "npm:^1.0.1" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/7409c97d1c4a4386b488962739c4f1b5b04dc60cf51f8cd88e6b12541f84d84c6b8b67e491a147a2c95f9ec486539bf4519fb9d418411aef6537b9c156468117 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 10c0/020631d3223bbcff8a0da3efbdf058220a8f48a3de221563996ad1dcc30d6c08dadc3f7608cc08830d21c0d565efd2db19b557b9528921c78aabb605eef2d74d - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.53.0, @typescript-eslint/types@npm:^8.53.0": - version: 8.53.0 - resolution: "@typescript-eslint/types@npm:8.53.0" - checksum: 10c0/a88681795becbe857f9868427c0d75c2ab2fb1acde14907b8791709b6d7835400bf9a0b41f22e97a13f1274e0082f5675692b815e30268e6eada492913100306 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - minimatch: "npm:9.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/af1438c60f080045ebb330155a8c9bb90db345d5069cdd5d01b67de502abb7449d6c75500519df829f913a6b3f490ade3e8215279b6bdc63d0fb0ae61034df5f - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:^8.23.0": - version: 8.53.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.53.0" - dependencies: - "@typescript-eslint/project-service": "npm:8.53.0" - "@typescript-eslint/tsconfig-utils": "npm:8.53.0" - "@typescript-eslint/types": "npm:8.53.0" - "@typescript-eslint/visitor-keys": "npm:8.53.0" - debug: "npm:^4.4.3" - minimatch: "npm:^9.0.5" - semver: "npm:^7.7.3" - tinyglobby: "npm:^0.2.15" - ts-api-utils: "npm:^2.4.0" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10c0/31819fba9fbef3e3ab494409b18ff40042cc3e7a4ba72fe06475062b7e196aaf9752e526a1c51abf3002627833b387279f00fdfa66886b05c028e129a57b550a - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/utils@npm:6.21.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@types/json-schema": "npm:^7.0.12" - "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - semver: "npm:^7.5.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10c0/ab2df3833b2582d4e5467a484d08942b4f2f7208f8e09d67de510008eb8001a9b7460f2f9ba11c12086fd3cdcac0c626761c7995c2c6b5657d5fa6b82030a32d - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10c0/7395f69739cfa1cb83c1fb2fad30afa2a814756367302fb4facd5893eff66abc807e8d8f63eba94ed3b0fe0c1c996ac9a1680bcbf0f83717acedc3f2bb724fbf - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:8.53.0": - version: 8.53.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.53.0" - dependencies: - "@typescript-eslint/types": "npm:8.53.0" - eslint-visitor-keys: "npm:^4.2.1" - checksum: 10c0/be2062073c9fd28762f73d442e8536f16e1eab0935df463ed45bd95575b4b79b4a4ca1f45c04b1964dc424b8d25c6489253e3ea2236bb74cff9b7e02e1e7f5be - languageName: node - linkType: hard - -"@ungap/structured-clone@npm:^1.2.0": - version: 1.3.0 - resolution: "@ungap/structured-clone@npm:1.3.0" - checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a - languageName: node - linkType: hard - -"@vue/compiler-core@npm:3.5.26": - version: 3.5.26 - resolution: "@vue/compiler-core@npm:3.5.26" - dependencies: - "@babel/parser": "npm:^7.28.5" - "@vue/shared": "npm:3.5.26" - entities: "npm:^7.0.0" - estree-walker: "npm:^2.0.2" - source-map-js: "npm:^1.2.1" - checksum: 10c0/7f777efb4157e81263672c3b62ade61831295ce9fbf29cd5ce25bf1a8f352171edaac622580297ad667acbc5aa403d48aa65f4bf6b1dbfd862844f12fb9a13cf - languageName: node - linkType: hard - -"@vue/compiler-dom@npm:3.5.26": - version: 3.5.26 - resolution: "@vue/compiler-dom@npm:3.5.26" - dependencies: - "@vue/compiler-core": "npm:3.5.26" - "@vue/shared": "npm:3.5.26" - checksum: 10c0/39fe35374276467c63e299c1bd72558a65f534fe2a69404699bf3d5c0b4c39b459af6500f4d79b3b38cb0067760940ded5b4c29f021eccfec564eee36206b709 - languageName: node - linkType: hard - -"@vue/compiler-sfc@npm:^3.5.13": - version: 3.5.26 - resolution: "@vue/compiler-sfc@npm:3.5.26" - dependencies: - "@babel/parser": "npm:^7.28.5" - "@vue/compiler-core": "npm:3.5.26" - "@vue/compiler-dom": "npm:3.5.26" - "@vue/compiler-ssr": "npm:3.5.26" - "@vue/shared": "npm:3.5.26" - estree-walker: "npm:^2.0.2" - magic-string: "npm:^0.30.21" - postcss: "npm:^8.5.6" - source-map-js: "npm:^1.2.1" - checksum: 10c0/0d9fe747bc4ddbc69ad06de316e5ec4ba8aa374ea824f71c2c7d3659f08a88e2102e152e89196f131903b41b4c5731c2d05ee5f889afdca6596128fa0eedb913 - languageName: node - linkType: hard - -"@vue/compiler-ssr@npm:3.5.26": - version: 3.5.26 - resolution: "@vue/compiler-ssr@npm:3.5.26" - dependencies: - "@vue/compiler-dom": "npm:3.5.26" - "@vue/shared": "npm:3.5.26" - checksum: 10c0/bcaece46af4c44be887cf3b944a40592bcaa928b9238151eaaba38cbe80cb667c4cc8c3a07e49d1f8b52c171345b484114b70e80bad5e75c0e3baccfc3e84870 - languageName: node - linkType: hard - -"@vue/shared@npm:3.5.26": - version: 3.5.26 - resolution: "@vue/shared@npm:3.5.26" - checksum: 10c0/176edf41858cdd3019fc063fda28a0a6f5c5299a350e09aebb19fbe352d5ca4f7fc18993bf749f07d06baa803030d31a9b8538eef852feb1ce5b3b5a99d5ef3c - languageName: node - linkType: hard - -"abbrev@npm:^4.0.0": - version: 4.0.0 - resolution: "abbrev@npm:4.0.0" - checksum: 10c0/b4cc16935235e80702fc90192e349e32f8ef0ed151ef506aa78c81a7c455ec18375c4125414b99f84b2e055199d66383e787675f0bcd87da7a4dbd59f9eac1d5 - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.3.2": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 - languageName: node - linkType: hard - -"acorn-walk@npm:^8.1.1": - version: 8.3.4 - resolution: "acorn-walk@npm:8.3.4" - dependencies: - acorn: "npm:^8.11.0" - checksum: 10c0/76537ac5fb2c37a64560feaf3342023dadc086c46da57da363e64c6148dc21b57d49ace26f949e225063acb6fb441eabffd89f7a3066de5ad37ab3e328927c62 - languageName: node - linkType: hard - -"acorn@npm:^8.11.0, acorn@npm:^8.4.1, acorn@npm:^8.9.0": - version: 8.15.0 - resolution: "acorn@npm:8.15.0" - bin: - acorn: bin/acorn - checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec - languageName: node - linkType: hard - -"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": - version: 7.1.4 - resolution: "agent-base@npm:7.1.4" - checksum: 10c0/c2c9ab7599692d594b6a161559ada307b7a624fa4c7b03e3afdb5a5e31cd0e53269115b620fcab024c5ac6a6f37fa5eb2e004f076ad30f5f7e6b8b671f7b35fe - languageName: node - linkType: hard - -"agentkeepalive@npm:^4.5.0": - version: 4.6.0 - resolution: "agentkeepalive@npm:4.6.0" - dependencies: - humanize-ms: "npm:^1.2.1" - checksum: 10c0/235c182432f75046835b05f239708107138a40103deee23b6a08caee5136873709155753b394ec212e49e60e94a378189562cb01347765515cff61b692c69187 - languageName: node - linkType: hard - -"ajv@npm:^6.12.4": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - dependencies: - fast-deep-equal: "npm:^3.1.1" - fast-json-stable-stringify: "npm:^2.0.0" - json-schema-traverse: "npm:^0.4.1" - uri-js: "npm:^4.2.2" - checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 - languageName: node - linkType: hard - -"anchor-bankrun@npm:0.3.0": - version: 0.3.0 - resolution: "anchor-bankrun@npm:0.3.0" - peerDependencies: - "@coral-xyz/anchor": ^0.28.0 - "@solana/web3.js": ^1.78.4 - solana-bankrun: ^0.2.0 - checksum: 10c0/7210d0b6fa9ce0ba8355532246874ab6322ec13ab1c67b067f685ec9750230290607f990ebe5629c919dea7c2ed61a9e563a5f5ab56f066ae99a0018a130553f - languageName: node - linkType: hard - -"ansi-colors@npm:^4.1.3": - version: 4.1.3 - resolution: "ansi-colors@npm:4.1.3" - checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 - languageName: node - linkType: hard - -"ansi-regex@npm:5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 - languageName: node - linkType: hard - -"ansi-styles@npm:4.3.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: "npm:^2.0.1" - checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 - languageName: node - linkType: hard - -"ansicolors@npm:^0.3.2, ansicolors@npm:~0.3.2": - version: 0.3.2 - resolution: "ansicolors@npm:0.3.2" - checksum: 10c0/e202182895e959c5357db6c60791b2abaade99fcc02221da11a581b26a7f83dc084392bc74e4d3875c22f37b3c9ef48842e896e3bfed394ec278194b8003e0ac - languageName: node - linkType: hard - -"any-promise@npm:^1.1.0": - version: 1.3.0 - resolution: "any-promise@npm:1.3.0" - checksum: 10c0/60f0298ed34c74fef50daab88e8dab786036ed5a7fad02e012ab57e376e0a0b4b29e83b95ea9b5e7d89df762f5f25119b83e00706ecaccb22cfbacee98d74889 - languageName: node - linkType: hard - -"anymatch@npm:~3.1.2": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: "npm:^3.0.0" - picomatch: "npm:^2.0.4" - checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac - languageName: node - linkType: hard - -"app-module-path@npm:^2.2.0": - version: 2.2.0 - resolution: "app-module-path@npm:2.2.0" - checksum: 10c0/0d6d581dcee268271af1e611934b4fed715de55c382b2610de67ba6f87d01503fc0426cff687f06210e54cd57545f7a6172e1dd192914a3709ad89c06a4c3a0b - languageName: node - linkType: hard - -"arg@npm:^4.1.0": - version: 4.1.3 - resolution: "arg@npm:4.1.3" - checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a - languageName: node - linkType: hard - -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e - languageName: node - linkType: hard - -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 - languageName: node - linkType: hard - -"asn1.js@npm:^4.10.1": - version: 4.10.1 - resolution: "asn1.js@npm:4.10.1" - dependencies: - bn.js: "npm:^4.0.0" - inherits: "npm:^2.0.1" - minimalistic-assert: "npm:^1.0.0" - checksum: 10c0/afa7f3ab9e31566c80175a75b182e5dba50589dcc738aa485be42bdd787e2a07246a4b034d481861123cbe646a7656f318f4f1cad2e9e5e808a210d5d6feaa88 - languageName: node - linkType: hard - -"assert@npm:^2.0.0, assert@npm:^2.1.0": - version: 2.1.0 - resolution: "assert@npm:2.1.0" - dependencies: - call-bind: "npm:^1.0.2" - is-nan: "npm:^1.3.2" - object-is: "npm:^1.1.5" - object.assign: "npm:^4.1.4" - util: "npm:^0.12.5" - checksum: 10c0/7271a5da883c256a1fa690677bf1dd9d6aa882139f2bed1cd15da4f9e7459683e1da8e32a203d6cc6767e5e0f730c77a9532a87b896b4b0af0dd535f668775f0 - languageName: node - linkType: hard - -"assertion-error@npm:^1.1.0": - version: 1.1.0 - resolution: "assertion-error@npm:1.1.0" - checksum: 10c0/25456b2aa333250f01143968e02e4884a34588a8538fbbf65c91a637f1dbfb8069249133cd2f4e530f10f624d206a664e7df30207830b659e9f5298b00a4099b - languageName: node - linkType: hard - -"ast-module-types@npm:^6.0.1": - version: 6.0.1 - resolution: "ast-module-types@npm:6.0.1" - checksum: 10c0/b835a3518accd480c8102fe18cc782bf8f38c7844764e8c27c6494203688c788d6fc90f27dd3b7b3941ff3f2cc1a9269cd7471df55bd467f86af56093808d5a8 - languageName: node - linkType: hard - -"async-function@npm:^1.0.0": - version: 1.0.0 - resolution: "async-function@npm:1.0.0" - checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 - languageName: node - linkType: hard - -"async-generator-function@npm:^1.0.0": - version: 1.0.0 - resolution: "async-generator-function@npm:1.0.0" - checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.7": - version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7" - dependencies: - possible-typed-array-names: "npm:^1.0.0" - checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 - languageName: node - linkType: hard - -"axios@npm:^1.8.3, axios@npm:^1.9.0": - version: 1.13.2 - resolution: "axios@npm:1.13.2" - dependencies: - follow-redirects: "npm:^1.15.6" - form-data: "npm:^4.0.4" - proxy-from-env: "npm:^1.1.0" - checksum: 10c0/e8a42e37e5568ae9c7a28c348db0e8cf3e43d06fcbef73f0048669edfe4f71219664da7b6cc991b0c0f01c28a48f037c515263cb79be1f1ae8ff034cd813867b - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee - languageName: node - linkType: hard - -"base-x@npm:^3.0.2, base-x@npm:^3.0.6": - version: 3.0.11 - resolution: "base-x@npm:3.0.11" - dependencies: - safe-buffer: "npm:^5.0.1" - checksum: 10c0/4c5b8cd9cef285973b0460934be4fc890eedfd22a8aca527fac3527f041c5d1c912f7b9a6816f19e43e69dc7c29a5deabfa326bd3d6a57ee46af0ad46e3991d5 - languageName: node - linkType: hard - -"base-x@npm:^4.0.0": - version: 4.0.1 - resolution: "base-x@npm:4.0.1" - checksum: 10c0/26a5a24105b27d94f21fa0640d5345620d758ab5d9269cf11828c502094d4f2fc5e84f3bfee63e9af29e83e0d3c97129264f1ac9653620b9bdab3f81d6aca881 - languageName: node - linkType: hard - -"base-x@npm:^5.0.0": - version: 5.0.1 - resolution: "base-x@npm:5.0.1" - checksum: 10c0/4ab6b02262b4fd499b147656f63ce7328bd5f895450401ce58a2f9e87828aea507cf0c320a6d8725389f86e8a48397562661c0bca28ef3276a22821b30f7a713 - languageName: node - linkType: hard - -"base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": - version: 1.5.1 - resolution: "base64-js@npm:1.5.1" - checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf - languageName: node - linkType: hard - -"big.js@npm:^6.2.1, big.js@npm:^6.2.2": - version: 6.2.2 - resolution: "big.js@npm:6.2.2" - checksum: 10c0/58d204f6a1a92508dc2eb98d964e2cc6dabb37a3d9fc8a1f0b77a34dead7c11e17b173d9a6df2d5a7a0f78d5c80853a9ce6df29852da59ab10b088e981195165 - languageName: node - linkType: hard - -"bigint-buffer@npm:^1.1.5": - version: 1.1.5 - resolution: "bigint-buffer@npm:1.1.5" - dependencies: - bindings: "npm:^1.3.0" - node-gyp: "npm:latest" - checksum: 10c0/aa41e53d38242a2f05f85b08eaf592635f92e5328822784cda518232b1644efdbf29ab3664951b174cc645848add4605488e25c9439bcc749660c885b4ff6118 - languageName: node - linkType: hard - -"bignumber.js@npm:^9.0.1": - version: 9.3.1 - resolution: "bignumber.js@npm:9.3.1" - checksum: 10c0/61342ba5fe1c10887f0ecf5be02ff6709271481aff48631f86b4d37d55a99b87ce441cfd54df3d16d10ee07ceab7e272fc0be430c657ffafbbbf7b7d631efb75 - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.3.0 - resolution: "binary-extensions@npm:2.3.0" - checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 - languageName: node - linkType: hard - -"bindings@npm:^1.3.0": - version: 1.5.0 - resolution: "bindings@npm:1.5.0" - dependencies: - file-uri-to-path: "npm:1.0.0" - checksum: 10c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba - languageName: node - linkType: hard - -"bl@npm:^4.1.0": - version: 4.1.0 - resolution: "bl@npm:4.1.0" - dependencies: - buffer: "npm:^5.5.0" - inherits: "npm:^2.0.4" - readable-stream: "npm:^3.4.0" - checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f - languageName: node - linkType: hard - -"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": - version: 4.12.2 - resolution: "bn.js@npm:4.12.2" - checksum: 10c0/09a249faa416a9a1ce68b5f5ec8bbca87fe54e5dd4ef8b1cc8a4969147b80035592bddcb1e9cc814c3ba79e573503d5c5178664b722b509fb36d93620dba9b57 - languageName: node - linkType: hard - -"bn.js@npm:^5.1.0, bn.js@npm:^5.1.2, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1, bn.js@npm:^5.2.2": - version: 5.2.2 - resolution: "bn.js@npm:5.2.2" - checksum: 10c0/cb97827d476aab1a0194df33cd84624952480d92da46e6b4a19c32964aa01553a4a613502396712704da2ec8f831cf98d02e74ca03398404bd78a037ba93f2ab - languageName: node - linkType: hard - -"borsh@npm:^0.7.0": - version: 0.7.0 - resolution: "borsh@npm:0.7.0" - dependencies: - bn.js: "npm:^5.2.0" - bs58: "npm:^4.0.0" - text-encoding-utf-8: "npm:^1.0.2" - checksum: 10c0/513b3e51823d2bf5be77cec27742419d2b0427504825dd7ceb00dedb820f246a4762f04b83d5e3aa39c8e075b3cbaeb7ca3c90bd1cbeecccb4a510575be8c581 - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.12 - resolution: "brace-expansion@npm:1.1.12" - dependencies: - balanced-match: "npm:^1.0.0" - concat-map: "npm:0.0.1" - checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.2 - resolution: "brace-expansion@npm:2.0.2" - dependencies: - balanced-match: "npm:^1.0.0" - checksum: 10c0/6d117a4c793488af86b83172deb6af143e94c17bc53b0b3cec259733923b4ca84679d506ac261f4ba3c7ed37c46018e2ff442f9ce453af8643ecd64f4a54e6cf - languageName: node - linkType: hard - -"braces@npm:^3.0.3, braces@npm:~3.0.2": - version: 3.0.3 - resolution: "braces@npm:3.0.3" - dependencies: - fill-range: "npm:^7.1.1" - checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 - languageName: node - linkType: hard - -"brorand@npm:^1.0.1, brorand@npm:^1.1.0": - version: 1.1.0 - resolution: "brorand@npm:1.1.0" - checksum: 10c0/6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 - languageName: node - linkType: hard - -"browser-stdout@npm:^1.3.1": - version: 1.3.1 - resolution: "browser-stdout@npm:1.3.1" - checksum: 10c0/c40e482fd82be872b6ea7b9f7591beafbf6f5ba522fe3dade98ba1573a1c29a11101564993e4eb44e5488be8f44510af072df9a9637c739217eb155ceb639205 - languageName: node - linkType: hard - -"browserify-aes@npm:^1.0.4, browserify-aes@npm:^1.2.0": - version: 1.2.0 - resolution: "browserify-aes@npm:1.2.0" - dependencies: - buffer-xor: "npm:^1.0.3" - cipher-base: "npm:^1.0.0" - create-hash: "npm:^1.1.0" - evp_bytestokey: "npm:^1.0.3" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - checksum: 10c0/967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 - languageName: node - linkType: hard - -"browserify-cipher@npm:^1.0.1": - version: 1.0.1 - resolution: "browserify-cipher@npm:1.0.1" - dependencies: - browserify-aes: "npm:^1.0.4" - browserify-des: "npm:^1.0.0" - evp_bytestokey: "npm:^1.0.0" - checksum: 10c0/aa256dcb42bc53a67168bbc94ab85d243b0a3b56109dee3b51230b7d010d9b78985ffc1fb36e145c6e4db151f888076c1cfc207baf1525d3e375cbe8187fe27d - languageName: node - linkType: hard - -"browserify-des@npm:^1.0.0": - version: 1.0.2 - resolution: "browserify-des@npm:1.0.2" - dependencies: - cipher-base: "npm:^1.0.1" - des.js: "npm:^1.0.0" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 10c0/943eb5d4045eff80a6cde5be4e5fbb1f2d5002126b5a4789c3c1aae3cdddb1eb92b00fb92277f512288e5c6af330730b1dbabcf7ce0923e749e151fcee5a074d - languageName: node - linkType: hard - -"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.1": - version: 4.1.1 - resolution: "browserify-rsa@npm:4.1.1" - dependencies: - bn.js: "npm:^5.2.1" - randombytes: "npm:^2.1.0" - safe-buffer: "npm:^5.2.1" - checksum: 10c0/b650ee1192e3d7f3d779edc06dd96ed8720362e72ac310c367b9d7fe35f7e8dbb983c1829142b2b3215458be8bf17c38adc7224920843024ed8cf39e19c513c0 - languageName: node - linkType: hard - -"browserify-sign@npm:^4.2.3": - version: 4.2.5 - resolution: "browserify-sign@npm:4.2.5" - dependencies: - bn.js: "npm:^5.2.2" - browserify-rsa: "npm:^4.1.1" - create-hash: "npm:^1.2.0" - create-hmac: "npm:^1.1.7" - elliptic: "npm:^6.6.1" - inherits: "npm:^2.0.4" - parse-asn1: "npm:^5.1.9" - readable-stream: "npm:^2.3.8" - safe-buffer: "npm:^5.2.1" - checksum: 10c0/6192f9696934bbba58932d098face34c2ab9cac09feed826618b86b8c00a897dab7324cd9aa7d6cb1597064f197264ad72fa5418d4d52bf3c8f9b9e0e124655e - languageName: node - linkType: hard - -"bs58@npm:^4.0.0, bs58@npm:^4.0.1": - version: 4.0.1 - resolution: "bs58@npm:4.0.1" - dependencies: - base-x: "npm:^3.0.2" - checksum: 10c0/613a1b1441e754279a0e3f44d1faeb8c8e838feef81e550efe174ff021dd2e08a4c9ae5805b52dfdde79f97b5c0918c78dd24a0eb726c4a94365f0984a0ffc65 - languageName: node - linkType: hard - -"bs58@npm:^5.0.0": - version: 5.0.0 - resolution: "bs58@npm:5.0.0" - dependencies: - base-x: "npm:^4.0.0" - checksum: 10c0/0d1b05630b11db48039421b5975cb2636ae0a42c62f770eec257b2e5c7d94cb5f015f440785f3ec50870a6e9b1132b35bd0a17c7223655b22229f24b2a3491d1 - languageName: node - linkType: hard - -"bs58@npm:^6.0.0": - version: 6.0.0 - resolution: "bs58@npm:6.0.0" - dependencies: - base-x: "npm:^5.0.0" - checksum: 10c0/61910839746625ee4f69369f80e2634e2123726caaa1da6b3bcefcf7efcd9bdca86603360fed9664ffdabe0038c51e542c02581c72ca8d44f60329fe1a6bc8f4 - languageName: node - linkType: hard - -"buffer-layout@npm:^1.2.0, buffer-layout@npm:^1.2.2": - version: 1.2.2 - resolution: "buffer-layout@npm:1.2.2" - checksum: 10c0/d90d1f622f592553555dd290d0e6dd0bababb2566655d0728812b2667af5a23d795929c38c25f5065252024fa29d75ea54eeb6f469d69814f4ebf614c6672acf - languageName: node - linkType: hard - -"buffer-xor@npm:^1.0.3": - version: 1.0.3 - resolution: "buffer-xor@npm:1.0.3" - checksum: 10c0/fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c - languageName: node - linkType: hard - -"buffer@npm:6.0.3, buffer@npm:^6.0.1, buffer@npm:^6.0.3, buffer@npm:~6.0.3": - version: 6.0.3 - resolution: "buffer@npm:6.0.3" - dependencies: - base64-js: "npm:^1.3.1" - ieee754: "npm:^1.2.1" - checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 - languageName: node - linkType: hard - -"buffer@npm:^5.5.0": - version: 5.7.1 - resolution: "buffer@npm:5.7.1" - dependencies: - base64-js: "npm:^1.3.1" - ieee754: "npm:^1.1.13" - checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e - languageName: node - linkType: hard - -"bufferutil@npm:^4.0.1": - version: 4.1.0 - resolution: "bufferutil@npm:4.1.0" - dependencies: - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.3.0" - checksum: 10c0/12d63bbc80a3b6525bc62a28387fca0a5aed09e41b74375c500e60721b6a1ab2960b82e48f1773eddea2b14e490f129214b8b57bd6e1a5078b6235857d658508 - languageName: node - linkType: hard - -"cacache@npm:^20.0.1": - version: 20.0.3 - resolution: "cacache@npm:20.0.3" - dependencies: - "@npmcli/fs": "npm:^5.0.0" - fs-minipass: "npm:^3.0.0" - glob: "npm:^13.0.0" - lru-cache: "npm:^11.1.0" - minipass: "npm:^7.0.3" - minipass-collect: "npm:^2.0.1" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^7.0.2" - ssri: "npm:^13.0.0" - unique-filename: "npm:^5.0.0" - checksum: 10c0/c7da1ca694d20e8f8aedabd21dc11518f809a7d2b59aa76a1fc655db5a9e62379e465c157ddd2afe34b19230808882288effa6911b2de26a088a6d5645123462 - languageName: node - linkType: hard - -"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind-apply-helpers@npm:1.0.2" - dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": - version: 1.0.8 - resolution: "call-bind@npm:1.0.8" - dependencies: - call-bind-apply-helpers: "npm:^1.0.0" - es-define-property: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.2" - checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 - languageName: node - linkType: hard - -"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": - version: 1.0.4 - resolution: "call-bound@npm:1.0.4" - dependencies: - call-bind-apply-helpers: "npm:^1.0.2" - get-intrinsic: "npm:^1.3.0" - checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 - languageName: node - linkType: hard - -"callsites@npm:^3.0.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 - languageName: node - linkType: hard - -"camelcase@npm:^5.3.1": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 - languageName: node - linkType: hard - -"camelcase@npm:^6.0.0, camelcase@npm:^6.2.1, camelcase@npm:^6.3.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 - languageName: node - linkType: hard - -"chai@npm:4.5.0": - version: 4.5.0 - resolution: "chai@npm:4.5.0" - dependencies: - assertion-error: "npm:^1.1.0" - check-error: "npm:^1.0.3" - deep-eql: "npm:^4.1.3" - get-func-name: "npm:^2.0.2" - loupe: "npm:^2.3.6" - pathval: "npm:^1.1.1" - type-detect: "npm:^4.1.0" - checksum: 10c0/b8cb596bd1aece1aec659e41a6e479290c7d9bee5b3ad63d2898ad230064e5b47889a3bc367b20100a0853b62e026e2dc514acf25a3c9385f936aa3614d4ab4d - languageName: node - linkType: hard - -"chalk@npm:4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 - languageName: node - linkType: hard - -"check-error@npm:^1.0.3": - version: 1.0.3 - resolution: "check-error@npm:1.0.3" - dependencies: - get-func-name: "npm:^2.0.2" - checksum: 10c0/94aa37a7315c0e8a83d0112b5bfb5a8624f7f0f81057c73e4707729cdd8077166c6aefb3d8e2b92c63ee130d4a2ff94bad46d547e12f3238cc1d78342a973841 - languageName: node - linkType: hard - -"chokidar@npm:^3.5.3": - version: 3.6.0 - resolution: "chokidar@npm:3.6.0" - dependencies: - anymatch: "npm:~3.1.2" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.2" - glob-parent: "npm:~5.1.2" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.6.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 - languageName: node - linkType: hard - -"chownr@npm:^3.0.0": - version: 3.0.0 - resolution: "chownr@npm:3.0.0" - checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 - languageName: node - linkType: hard - -"ci-info@npm:^3.2.0": - version: 3.9.0 - resolution: "ci-info@npm:3.9.0" - checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a - languageName: node - linkType: hard - -"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.7 - resolution: "cipher-base@npm:1.0.7" - dependencies: - inherits: "npm:^2.0.4" - safe-buffer: "npm:^5.2.1" - to-buffer: "npm:^1.2.2" - checksum: 10c0/53c5046a9d9b60c586479b8f13fde263c3f905e13f11e8e04c7a311ce399c91d9c3ec96642332e0de077d356e1014ee12bba96f74fbaad0de750f49122258836 - languageName: node - linkType: hard - -"cli-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "cli-cursor@npm:3.1.0" - dependencies: - restore-cursor: "npm:^3.1.0" - checksum: 10c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 - languageName: node - linkType: hard - -"cli-spinners@npm:^2.5.0": - version: 2.9.2 - resolution: "cli-spinners@npm:2.9.2" - checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3 - languageName: node - linkType: hard - -"cliui@npm:^7.0.2": - version: 7.0.4 - resolution: "cliui@npm:7.0.4" - dependencies: - string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.0" - wrap-ansi: "npm:^7.0.0" - checksum: 10c0/6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 - languageName: node - linkType: hard - -"cliui@npm:^8.0.1": - version: 8.0.1 - resolution: "cliui@npm:8.0.1" - dependencies: - string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.1" - wrap-ansi: "npm:^7.0.0" - checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 - languageName: node - linkType: hard - -"clone@npm:2.x": - version: 2.1.2 - resolution: "clone@npm:2.1.2" - checksum: 10c0/ed0601cd0b1606bc7d82ee7175b97e68d1dd9b91fd1250a3617b38d34a095f8ee0431d40a1a611122dcccb4f93295b4fdb94942aa763392b5fe44effa50c2d5e - languageName: node - linkType: hard - -"clone@npm:^1.0.2": - version: 1.0.4 - resolution: "clone@npm:1.0.4" - checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b - languageName: node - linkType: hard - -"color-convert@npm:<3.1.1": - version: 3.1.0 - resolution: "color-convert@npm:3.1.0" - dependencies: - color-name: "npm:^2.0.0" - checksum: 10c0/3e6c92a7122dc8429036f134fdc821064fcf34c4ed67855d6ec29c207eb96e761dbb37bb2a64572a703fc3a7a8fa4e970e0a194619b2acd46b55bcd2ace06293 - languageName: node - linkType: hard - -"color-name@npm:<2.0.1": - version: 2.0.0 - resolution: "color-name@npm:2.0.0" - checksum: 10c0/fc0304606e5c5941f4649a9975c03a2ecd52a22aba3dadb3309b3e4ee61d78c3e13ff245e80b9a930955d38c5f32a9004196a7456c4542822aa1fcfea8e928ed - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: "npm:~1.0.0" - checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 - languageName: node - linkType: hard - -"commander@npm:^12.1.0": - version: 12.1.0 - resolution: "commander@npm:12.1.0" - checksum: 10c0/6e1996680c083b3b897bfc1cfe1c58dfbcd9842fd43e1aaf8a795fbc237f65efcc860a3ef457b318e73f29a4f4a28f6403c3d653d021d960e4632dd45bde54a9 - languageName: node - linkType: hard - -"commander@npm:^2.20.3": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 - languageName: node - linkType: hard - -"commander@npm:^7.2.0": - version: 7.2.0 - resolution: "commander@npm:7.2.0" - checksum: 10c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a - languageName: node - linkType: hard - -"commondir@npm:^1.0.1": - version: 1.0.1 - resolution: "commondir@npm:1.0.1" - checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f - languageName: node - linkType: hard - -"core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 - languageName: node - linkType: hard - -"create-ecdh@npm:^4.0.4": - version: 4.0.4 - resolution: "create-ecdh@npm:4.0.4" - dependencies: - bn.js: "npm:^4.1.0" - elliptic: "npm:^6.5.3" - checksum: 10c0/77b11a51360fec9c3bce7a76288fc0deba4b9c838d5fb354b3e40c59194d23d66efe6355fd4b81df7580da0661e1334a235a2a5c040b7569ba97db428d466e7f - languageName: node - linkType: hard - -"create-hash@npm:^1.1.0, create-hash@npm:^1.2.0": - version: 1.2.0 - resolution: "create-hash@npm:1.2.0" - dependencies: - cipher-base: "npm:^1.0.1" - inherits: "npm:^2.0.1" - md5.js: "npm:^1.3.4" - ripemd160: "npm:^2.0.1" - sha.js: "npm:^2.4.0" - checksum: 10c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 - languageName: node - linkType: hard - -"create-hmac@npm:^1.1.7": - version: 1.1.7 - resolution: "create-hmac@npm:1.1.7" - dependencies: - cipher-base: "npm:^1.0.3" - create-hash: "npm:^1.1.0" - inherits: "npm:^2.0.1" - ripemd160: "npm:^2.0.0" - safe-buffer: "npm:^5.0.1" - sha.js: "npm:^2.4.8" - checksum: 10c0/24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 - languageName: node - linkType: hard - -"create-require@npm:^1.1.0": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 - languageName: node - linkType: hard - -"cross-fetch@npm:^3.1.5": - version: 3.2.0 - resolution: "cross-fetch@npm:3.2.0" - dependencies: - node-fetch: "npm:^2.7.0" - checksum: 10c0/d8596adf0269130098a676f6739a0922f3cc7b71cc89729925411ebe851a87026171c82ea89154c4811c9867c01c44793205a52e618ce2684650218c7fbeeb9f - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.2": - version: 7.0.6 - resolution: "cross-spawn@npm:7.0.6" - dependencies: - path-key: "npm:^3.1.0" - shebang-command: "npm:^2.0.0" - which: "npm:^2.0.1" - checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 - languageName: node - linkType: hard - -"crypto-browserify@npm:^3.12.1": - version: 3.12.1 - resolution: "crypto-browserify@npm:3.12.1" - dependencies: - browserify-cipher: "npm:^1.0.1" - browserify-sign: "npm:^4.2.3" - create-ecdh: "npm:^4.0.4" - create-hash: "npm:^1.2.0" - create-hmac: "npm:^1.1.7" - diffie-hellman: "npm:^5.0.3" - hash-base: "npm:~3.0.4" - inherits: "npm:^2.0.4" - pbkdf2: "npm:^3.1.2" - public-encrypt: "npm:^4.0.3" - randombytes: "npm:^2.1.0" - randomfill: "npm:^1.0.4" - checksum: 10c0/184a2def7b16628e79841243232ab5497f18d8e158ac21b7ce90ab172427d0a892a561280adc08f9d4d517bce8db2a5b335dc21abb970f787f8e874bd7b9db7d - languageName: node - linkType: hard - -"crypto-hash@npm:^1.3.0": - version: 1.3.0 - resolution: "crypto-hash@npm:1.3.0" - checksum: 10c0/651003421dce76fd686eb3ed4981117f9cd3f309a4af41697a646aecbbfc49179547bdd7146f7a74e2c8c7ab703227c25ce03e85fea2da3189ab65e32971ecce - languageName: node - linkType: hard - -"debug@npm:<4.4.2": - version: 4.4.1 - resolution: "debug@npm:4.4.1" - dependencies: - ms: "npm:^2.1.3" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55 - languageName: node - linkType: hard - -"decamelize@npm:^4.0.0": - version: 4.0.0 - resolution: "decamelize@npm:4.0.0" - checksum: 10c0/e06da03fc05333e8cd2778c1487da67ffbea5b84e03ca80449519b8fa61f888714bbc6f459ea963d5641b4aa98832130eb5cd193d90ae9f0a27eee14be8e278d - languageName: node - linkType: hard - -"decimal.js@npm:^10.4.3": - version: 10.6.0 - resolution: "decimal.js@npm:10.6.0" - checksum: 10c0/07d69fbcc54167a340d2d97de95f546f9ff1f69d2b45a02fd7a5292412df3cd9eb7e23065e532a318f5474a2e1bccf8392fdf0443ef467f97f3bf8cb0477e5aa - languageName: node - linkType: hard - -"deep-eql@npm:^4.1.3": - version: 4.1.4 - resolution: "deep-eql@npm:4.1.4" - dependencies: - type-detect: "npm:^4.0.0" - checksum: 10c0/264e0613493b43552fc908f4ff87b8b445c0e6e075656649600e1b8a17a57ee03e960156fce7177646e4d2ddaf8e5ee616d76bd79929ff593e5c79e4e5e6c517 - languageName: node - linkType: hard - -"deep-extend@npm:^0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 - languageName: node - linkType: hard - -"deep-is@npm:^0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c - languageName: node - linkType: hard - -"defaults@npm:^1.0.3": - version: 1.0.4 - resolution: "defaults@npm:1.0.4" - dependencies: - clone: "npm:^1.0.2" - checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a - languageName: node - linkType: hard - -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": - version: 1.1.4 - resolution: "define-data-property@npm:1.1.4" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.0.1" - checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": - version: 1.2.1 - resolution: "define-properties@npm:1.2.1" - dependencies: - define-data-property: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - object-keys: "npm:^1.1.1" - checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 - languageName: node - linkType: hard - -"delay@npm:^5.0.0": - version: 5.0.0 - resolution: "delay@npm:5.0.0" - checksum: 10c0/01cdc4cd0cd35fb622518a3df848e67e09763a38e7cdada2232b6fda9ddda72eddcf74f0e24211200fbe718434f2335f2a2633875a6c96037fefa6de42896ad7 - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 - languageName: node - linkType: hard - -"dependency-tree@npm:^11.0.0": - version: 11.2.0 - resolution: "dependency-tree@npm:11.2.0" - dependencies: - commander: "npm:^12.1.0" - filing-cabinet: "npm:^5.0.3" - precinct: "npm:^12.2.0" - typescript: "npm:^5.8.3" - bin: - dependency-tree: bin/cli.js - checksum: 10c0/bbec40f799192baaa10d941ebbf7830f2210e77ae70b1c84ae137b2f4738fcf5756f3a4fa54254ec07108e40383b647183af814dfa4cf9759f49a22ee26b68a0 - languageName: node - linkType: hard - -"des.js@npm:^1.0.0": - version: 1.1.0 - resolution: "des.js@npm:1.1.0" - dependencies: - inherits: "npm:^2.0.1" - minimalistic-assert: "npm:^1.0.0" - checksum: 10c0/671354943ad67493e49eb4c555480ab153edd7cee3a51c658082fcde539d2690ed2a4a0b5d1f401f9cde822edf3939a6afb2585f32c091f2d3a1b1665cd45236 - languageName: node - linkType: hard - -"detective-amd@npm:^6.0.1": - version: 6.0.1 - resolution: "detective-amd@npm:6.0.1" - dependencies: - ast-module-types: "npm:^6.0.1" - escodegen: "npm:^2.1.0" - get-amd-module-type: "npm:^6.0.1" - node-source-walk: "npm:^7.0.1" - bin: - detective-amd: bin/cli.js - checksum: 10c0/a529b3b19fdb1c7468d38bdc469dabc877f1dea6d42cd90a7e36af528fb001576dfebd240484d1caabc749d4efc9451e96eeb314729a5889bc15f1e30140e802 - languageName: node - linkType: hard - -"detective-cjs@npm:^6.0.1": - version: 6.0.1 - resolution: "detective-cjs@npm:6.0.1" - dependencies: - ast-module-types: "npm:^6.0.1" - node-source-walk: "npm:^7.0.1" - checksum: 10c0/5e99f58d069765086a44880d440633fd12596159ba0dc91695a6cf3f80d8eb9b6970464c40f526b30c3929ab90de31b43ada074d92b2402f70fc18676f47d465 - languageName: node - linkType: hard - -"detective-es6@npm:^5.0.1": - version: 5.0.1 - resolution: "detective-es6@npm:5.0.1" - dependencies: - node-source-walk: "npm:^7.0.1" - checksum: 10c0/2e8e94d61a79f8c0ff8652f0ad9dc796c618710658f89a7b17cfb64be31bbde2d59d5e56c071b31eb80edc617a1da7273e8dcf3c10ab31db71df05429f60c311 - languageName: node - linkType: hard - -"detective-postcss@npm:^7.0.1": - version: 7.0.1 - resolution: "detective-postcss@npm:7.0.1" - dependencies: - is-url: "npm:^1.2.4" - postcss-values-parser: "npm:^6.0.2" - peerDependencies: - postcss: ^8.4.47 - checksum: 10c0/915e402124a6b3db943ef165c3ab5c7a38d0980b97d70f43867eb045acb81acb9e4c5e9eb4f180b9a45483491facc37161075e12a93713d7df8d0643141e90b8 - languageName: node - linkType: hard - -"detective-sass@npm:^6.0.1": - version: 6.0.1 - resolution: "detective-sass@npm:6.0.1" - dependencies: - gonzales-pe: "npm:^4.3.0" - node-source-walk: "npm:^7.0.1" - checksum: 10c0/e45108f98fbc5cc2330e93cc6a6a8d53c25b7447800f97b2ab0e97a6f7d44f6c3f99ae9bd946a1e5b3c01cda4581f264f81435ce5438d8fafb8fe9f22f23c0c0 - languageName: node - linkType: hard - -"detective-scss@npm:^5.0.1": - version: 5.0.1 - resolution: "detective-scss@npm:5.0.1" - dependencies: - gonzales-pe: "npm:^4.3.0" - node-source-walk: "npm:^7.0.1" - checksum: 10c0/9a2d07fb4dc608b73d4292f1eaa1d1d7f823298c11ea091896eaeb2bba52dd76d9fc9dd82d63b811ce87decf6fd65f9ed00b4cba264b7273a9c47edf48f70530 - languageName: node - linkType: hard - -"detective-stylus@npm:^5.0.1": - version: 5.0.1 - resolution: "detective-stylus@npm:5.0.1" - checksum: 10c0/34698ac21dc256483fd91d1674ba5d0c617e45285cd85e4efa99ce48fe955e567df53c51b4157bac3dab6d97f70c86bbd847202ee7a1b639c3b781f35026bde9 - languageName: node - linkType: hard - -"detective-typescript@npm:^14.0.0": - version: 14.0.0 - resolution: "detective-typescript@npm:14.0.0" - dependencies: - "@typescript-eslint/typescript-estree": "npm:^8.23.0" - ast-module-types: "npm:^6.0.1" - node-source-walk: "npm:^7.0.1" - peerDependencies: - typescript: ^5.4.4 - checksum: 10c0/1d802991e2a57732cc54ceb007991493bbd28b7ba416d0220ccb1cba667febaf09226c701b7310e75179f6c9e9ce84ded03b464b83d931c975e19f2cbad96474 - languageName: node - linkType: hard - -"detective-vue2@npm:^2.2.0": - version: 2.2.0 - resolution: "detective-vue2@npm:2.2.0" - dependencies: - "@dependents/detective-less": "npm:^5.0.1" - "@vue/compiler-sfc": "npm:^3.5.13" - detective-es6: "npm:^5.0.1" - detective-sass: "npm:^6.0.1" - detective-scss: "npm:^5.0.1" - detective-stylus: "npm:^5.0.1" - detective-typescript: "npm:^14.0.0" - peerDependencies: - typescript: ^5.4.4 - checksum: 10c0/b56e2e479b75ec6828f0892c64a06e371a4d4200056b0a2035331f1e894da30eb6a6c8c5b11701bd13d9d3a07d040b740451384bb32b82f62f1d4286800e2cbf - languageName: node - linkType: hard - -"diff-sequences@npm:^28.1.1": - version: 28.1.1 - resolution: "diff-sequences@npm:28.1.1" - checksum: 10c0/26f29fa3f6b8c9040c3c6f6dab85413d90a09c8e6cb17b318bbcf64f225d7dcb1fb64392f3a9919a90888b434c4f6c8a4cc4f807aad02bbabae912c5d13c31f7 - languageName: node - linkType: hard - -"diff@npm:^4.0.1": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 - languageName: node - linkType: hard - -"diff@npm:^5.2.0": - version: 5.2.0 - resolution: "diff@npm:5.2.0" - checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 - languageName: node - linkType: hard - -"diffie-hellman@npm:^5.0.3": - version: 5.0.3 - resolution: "diffie-hellman@npm:5.0.3" - dependencies: - bn.js: "npm:^4.1.0" - miller-rabin: "npm:^4.0.0" - randombytes: "npm:^2.0.0" - checksum: 10c0/ce53ccafa9ca544b7fc29b08a626e23a9b6562efc2a98559a0c97b4718937cebaa9b5d7d0a05032cc9c1435e9b3c1532b9e9bf2e0ede868525922807ad6e1ecf - languageName: node - linkType: hard - -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: "npm:^4.0.0" - checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 - languageName: node - linkType: hard - -"dot-case@npm:^3.0.4": - version: 3.0.4 - resolution: "dot-case@npm:3.0.4" - dependencies: - no-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 10c0/5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05 - languageName: node - linkType: hard - -"dotenv@npm:10.0.0": - version: 10.0.0 - resolution: "dotenv@npm:10.0.0" - checksum: 10c0/2d8d4ba64bfaff7931402aa5e8cbb8eba0acbc99fe9ae442300199af021079eafa7171ce90e150821a5cb3d74f0057721fbe7ec201a6044b68c8a7615f8c123f - languageName: node - linkType: hard - -"dunder-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "dunder-proto@npm:1.0.1" - dependencies: - call-bind-apply-helpers: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.2.0" - checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 - languageName: node - linkType: hard - -"elliptic@npm:^6.5.3, elliptic@npm:^6.6.1": - version: 6.6.1 - resolution: "elliptic@npm:6.6.1" - dependencies: - bn.js: "npm:^4.11.9" - brorand: "npm:^1.1.0" - hash.js: "npm:^1.0.0" - hmac-drbg: "npm:^1.0.1" - inherits: "npm:^2.0.4" - minimalistic-assert: "npm:^1.0.1" - minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 10c0/8b24ef782eec8b472053793ea1e91ae6bee41afffdfcb78a81c0a53b191e715cbe1292aa07165958a9bbe675bd0955142560b1a007ffce7d6c765bcaf951a867 - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 - languageName: node - linkType: hard - -"encoding@npm:0.1.13, encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: "npm:^0.6.2" - checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.18.0": - version: 5.18.4 - resolution: "enhanced-resolve@npm:5.18.4" - dependencies: - graceful-fs: "npm:^4.2.4" - tapable: "npm:^2.2.0" - checksum: 10c0/8f6d42c8a0787a746c493e724c9de5d091cfe8e3f871f2464e2f78a6c55fa1a3aaba495334f923c8ea3ac23e1472491f79feef6fc0fb46a75169cb447ffbe2dc - languageName: node - linkType: hard - -"entities@npm:^7.0.0": - version: 7.0.0 - resolution: "entities@npm:7.0.0" - checksum: 10c0/4e7cc40cd00b64adede81780fd85c0bd0a905e863b5ef0b01718028ffbc113886c281deb57e1ce0e13a6e349a2d404ff383c876673b81d6dc56e87bf3e5a022a - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 - languageName: node - linkType: hard - -"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": - version: 1.0.1 - resolution: "es-define-property@npm:1.0.1" - checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c - languageName: node - linkType: hard - -"es-errors@npm:^1.3.0": - version: 1.3.0 - resolution: "es-errors@npm:1.3.0" - checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 - languageName: node - linkType: hard - -"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": - version: 1.1.1 - resolution: "es-object-atoms@npm:1.1.1" - dependencies: - es-errors: "npm:^1.3.0" - checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c - languageName: node - linkType: hard - -"es-set-tostringtag@npm:^2.1.0": - version: 2.1.0 - resolution: "es-set-tostringtag@npm:2.1.0" - dependencies: - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.6" - has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.2" - checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af - languageName: node - linkType: hard - -"es6-promise@npm:^4.0.3": - version: 4.2.8 - resolution: "es6-promise@npm:4.2.8" - checksum: 10c0/2373d9c5e9a93bdd9f9ed32ff5cb6dd3dd785368d1c21e9bbbfd07d16345b3774ae260f2bd24c8f836a6903f432b4151e7816a7fa8891ccb4e1a55a028ec42c3 - languageName: node - linkType: hard - -"es6-promisify@npm:^5.0.0": - version: 5.0.0 - resolution: "es6-promisify@npm:5.0.0" - dependencies: - es6-promise: "npm:^4.0.3" - checksum: 10c0/23284c6a733cbf7842ec98f41eac742c9f288a78753c4fe46652bae826446ced7615b9e8a5c5f121a08812b1cd478ea58630f3e1c3d70835bd5dcd69c7cd75c9 - languageName: node - linkType: hard - -"esbuild@npm:^0.27.1": - version: 0.27.2 - resolution: "esbuild@npm:0.27.2" - dependencies: - "@esbuild/aix-ppc64": "npm:0.27.2" - "@esbuild/android-arm": "npm:0.27.2" - "@esbuild/android-arm64": "npm:0.27.2" - "@esbuild/android-x64": "npm:0.27.2" - "@esbuild/darwin-arm64": "npm:0.27.2" - "@esbuild/darwin-x64": "npm:0.27.2" - "@esbuild/freebsd-arm64": "npm:0.27.2" - "@esbuild/freebsd-x64": "npm:0.27.2" - "@esbuild/linux-arm": "npm:0.27.2" - "@esbuild/linux-arm64": "npm:0.27.2" - "@esbuild/linux-ia32": "npm:0.27.2" - "@esbuild/linux-loong64": "npm:0.27.2" - "@esbuild/linux-mips64el": "npm:0.27.2" - "@esbuild/linux-ppc64": "npm:0.27.2" - "@esbuild/linux-riscv64": "npm:0.27.2" - "@esbuild/linux-s390x": "npm:0.27.2" - "@esbuild/linux-x64": "npm:0.27.2" - "@esbuild/netbsd-arm64": "npm:0.27.2" - "@esbuild/netbsd-x64": "npm:0.27.2" - "@esbuild/openbsd-arm64": "npm:0.27.2" - "@esbuild/openbsd-x64": "npm:0.27.2" - "@esbuild/openharmony-arm64": "npm:0.27.2" - "@esbuild/sunos-x64": "npm:0.27.2" - "@esbuild/win32-arm64": "npm:0.27.2" - "@esbuild/win32-ia32": "npm:0.27.2" - "@esbuild/win32-x64": "npm:0.27.2" - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-arm64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-arm64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/openharmony-arm64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10c0/cf83f626f55500f521d5fe7f4bc5871bec240d3deb2a01fbd379edc43b3664d1167428738a5aad8794b35d1cca985c44c375b1cd38a2ca613c77ced2c83aafcd - languageName: node - linkType: hard - -"escalade@npm:^3.1.1": - version: 3.2.0 - resolution: "escalade@npm:3.2.0" - checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 - languageName: node - linkType: hard - -"escodegen@npm:^2.1.0": - version: 2.1.0 - resolution: "escodegen@npm:2.1.0" - dependencies: - esprima: "npm:^4.0.1" - estraverse: "npm:^5.2.0" - esutils: "npm:^2.0.2" - source-map: "npm:~0.6.1" - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 10c0/e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 - languageName: node - linkType: hard - -"eslint-config-prettier@npm:8.3.0": - version: 8.3.0 - resolution: "eslint-config-prettier@npm:8.3.0" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: 10c0/0d6bd272a05045f2815f0aba4592633a7226713d716d1a4c21126bbdbde27c98e7a6e2a8227e03fae343b40caf8c06a87e7ce87e69851279cf10334b6f36f7bc - languageName: node - linkType: hard - -"eslint-plugin-prettier@npm:3.4.0": - version: 3.4.0 - resolution: "eslint-plugin-prettier@npm:3.4.0" - dependencies: - prettier-linter-helpers: "npm:^1.0.0" - peerDependencies: - eslint: ">=5.0.0" - prettier: ">=1.13.0" - peerDependenciesMeta: - eslint-config-prettier: - optional: true - checksum: 10c0/dbc9f319cf251b0f9251318b152cc8f1cbc1740bf67ac4d45447f48b03eb56eb7b9661c2c30a97b3d53a23e7de86de85ff47e54ae2293d41675f668df2bcc79c - languageName: node - linkType: hard - -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^5.2.0" - checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": - version: 3.4.3 - resolution: "eslint-visitor-keys@npm:3.4.3" - checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^4.2.1": - version: 4.2.1 - resolution: "eslint-visitor-keys@npm:4.2.1" - checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 - languageName: node - linkType: hard - -"eslint@npm:8.57.0": - version: 8.57.0 - resolution: "eslint@npm:8.57.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.0" - "@humanwhocodes/config-array": "npm:^0.11.14" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" - debug: "npm:^4.3.2" - doctrine: "npm:^3.0.0" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.2" - eslint-visitor-keys: "npm:^3.4.3" - espree: "npm:^9.6.1" - esquery: "npm:^1.4.2" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" - globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" - bin: - eslint: bin/eslint.js - checksum: 10c0/00bb96fd2471039a312435a6776fe1fd557c056755eaa2b96093ef3a8508c92c8775d5f754768be6b1dddd09fdd3379ddb231eeb9b6c579ee17ea7d68000a529 - languageName: node - linkType: hard - -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" - dependencies: - acorn: "npm:^8.9.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 - languageName: node - linkType: hard - -"esprima@npm:^4.0.0, esprima@npm:^4.0.1": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 - languageName: node - linkType: hard - -"esquery@npm:^1.4.2": - version: 1.7.0 - resolution: "esquery@npm:1.7.0" - dependencies: - estraverse: "npm:^5.1.0" - checksum: 10c0/77d5173db450b66f3bc685d11af4c90cffeedb340f34a39af96d43509a335ce39c894fd79233df32d38f5e4e219fa0f7076f6ec90bae8320170ba082c0db4793 - languageName: node - linkType: hard - -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: "npm:^5.2.0" - checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 - languageName: node - linkType: hard - -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 - languageName: node - linkType: hard - -"estree-walker@npm:^2.0.2": - version: 2.0.2 - resolution: "estree-walker@npm:2.0.2" - checksum: 10c0/53a6c54e2019b8c914dc395890153ffdc2322781acf4bd7d1a32d7aedc1710807bdcd866ac133903d5629ec601fbb50abe8c2e5553c7f5a0afdd9b6af6c945af - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 - languageName: node - linkType: hard - -"eventemitter3@npm:^4.0.7": - version: 4.0.7 - resolution: "eventemitter3@npm:4.0.7" - checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b - languageName: node - linkType: hard - -"eventemitter3@npm:^5.0.1": - version: 5.0.1 - resolution: "eventemitter3@npm:5.0.1" - checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 - languageName: node - linkType: hard - -"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": - version: 1.0.3 - resolution: "evp_bytestokey@npm:1.0.3" - dependencies: - md5.js: "npm:^1.3.4" - node-gyp: "npm:latest" - safe-buffer: "npm:^5.1.1" - checksum: 10c0/77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 - languageName: node - linkType: hard - -"expect@npm:^28.0.0": - version: 28.1.3 - resolution: "expect@npm:28.1.3" - dependencies: - "@jest/expect-utils": "npm:^28.1.3" - jest-get-type: "npm:^28.0.2" - jest-matcher-utils: "npm:^28.1.3" - jest-message-util: "npm:^28.1.3" - jest-util: "npm:^28.1.3" - checksum: 10c0/fce8aa5462294fc7a32b17eef697e9999989b383e62f88b76e69badc59d4abb231dd6131aebaf27c4683be2fb0aa345e125bf2f15545e30a31dc85ec98673608 - languageName: node - linkType: hard - -"exponential-backoff@npm:^3.1.1": - version: 3.1.3 - resolution: "exponential-backoff@npm:3.1.3" - checksum: 10c0/77e3ae682b7b1f4972f563c6dbcd2b0d54ac679e62d5d32f3e5085feba20483cf28bd505543f520e287a56d4d55a28d7874299941faf637e779a1aa5994d1267 - languageName: node - linkType: hard - -"eyes@npm:^0.1.8": - version: 0.1.8 - resolution: "eyes@npm:0.1.8" - checksum: 10c0/4c79a9cbf45746d8c9f48cc957e35ad8ea336add1c7b8d5a0e002efc791a7a62b27b2188184ef1a1eea7bc3cd06b161791421e0e6c5fe78309705a162c53eea8 - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 - languageName: node - linkType: hard - -"fast-diff@npm:^1.1.2": - version: 1.3.0 - resolution: "fast-diff@npm:1.3.0" - checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.9": - version: 3.3.3 - resolution: "fast-glob@npm:3.3.3" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.8" - checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:^2.0.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b - languageName: node - linkType: hard - -"fast-levenshtein@npm:^2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 - languageName: node - linkType: hard - -"fast-stable-stringify@npm:^1.0.0": - version: 1.0.0 - resolution: "fast-stable-stringify@npm:1.0.0" - checksum: 10c0/1d773440c7a9615950577665074746c2e92edafceefa789616ecb6166229e0ccc6dae206ca9b9f7da0d274ba5779162aab2d07940a0f6e52a41a4e555392eb3b - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.20.1 - resolution: "fastq@npm:1.20.1" - dependencies: - reusify: "npm:^1.0.4" - checksum: 10c0/e5dd725884decb1f11e5c822221d76136f239d0236f176fab80b7b8f9e7619ae57e6b4e5b73defc21e6b9ef99437ee7b545cff8e6c2c337819633712fa9d352e - languageName: node - linkType: hard - -"fdir@npm:^6.5.0": - version: 6.5.0 - resolution: "fdir@npm:6.5.0" - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f - languageName: node - linkType: hard - -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" - dependencies: - flat-cache: "npm:^3.0.4" - checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd - languageName: node - linkType: hard - -"file-uri-to-path@npm:1.0.0": - version: 1.0.0 - resolution: "file-uri-to-path@npm:1.0.0" - checksum: 10c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 - languageName: node - linkType: hard - -"filing-cabinet@npm:^5.0.3": - version: 5.0.3 - resolution: "filing-cabinet@npm:5.0.3" - dependencies: - app-module-path: "npm:^2.2.0" - commander: "npm:^12.1.0" - enhanced-resolve: "npm:^5.18.0" - module-definition: "npm:^6.0.1" - module-lookup-amd: "npm:^9.0.3" - resolve: "npm:^1.22.10" - resolve-dependency-path: "npm:^4.0.1" - sass-lookup: "npm:^6.1.0" - stylus-lookup: "npm:^6.1.0" - tsconfig-paths: "npm:^4.2.0" - typescript: "npm:^5.7.3" - bin: - filing-cabinet: bin/cli.js - checksum: 10c0/4640fa6ccc93b1c832125644b1a374b3a9f1934cef83eb7570e604ee4d97fae2bf6f07e802c5f038c72c8b9114974996e8b7a72500d5f9dc4886a42d0ee41654 - languageName: node - linkType: hard - -"fill-range@npm:^7.1.1": - version: 7.1.1 - resolution: "fill-range@npm:7.1.1" - dependencies: - to-regex-range: "npm:^5.0.1" - checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 - languageName: node - linkType: hard - -"find-process@npm:^1.4.7": - version: 1.4.11 - resolution: "find-process@npm:1.4.11" - dependencies: - chalk: "npm:~4.1.2" - commander: "npm:^12.1.0" - loglevel: "npm:^1.9.2" - bin: - find-process: bin/find-process.js - checksum: 10c0/969d6aea6136f3f5f32bcdd1dee1762639a5f9e47822d358b55cf1290d99929ec48782295df81645e5b50250f9a2541710b9fa289df948d07e5b11c80311e94a - languageName: node - linkType: hard - -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: "npm:^6.0.0" - path-exists: "npm:^4.0.0" - checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a - languageName: node - linkType: hard - -"find@npm:^0.3.0": - version: 0.3.0 - resolution: "find@npm:0.3.0" - dependencies: - traverse-chain: "npm:~0.1.0" - checksum: 10c0/cb425fd4ea873bd25431fa41597852a3e18febb41eef44cba1e7660c85ebfc09b2d7da2e914602f30035339b873e8c61e3f73a0a8c02011f9e8c9053d4733417 - languageName: node - linkType: hard - -"flat-cache@npm:^3.0.4": - version: 3.2.0 - resolution: "flat-cache@npm:3.2.0" - dependencies: - flatted: "npm:^3.2.9" - keyv: "npm:^4.5.3" - rimraf: "npm:^3.0.2" - checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 - languageName: node - linkType: hard - -"flat@npm:^5.0.2": - version: 5.0.2 - resolution: "flat@npm:5.0.2" - bin: - flat: cli.js - checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe - languageName: node - linkType: hard - -"flatted@npm:^3.2.9": - version: 3.3.3 - resolution: "flatted@npm:3.3.3" - checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 - languageName: node - linkType: hard - -"follow-redirects@npm:^1.15.6": - version: 1.15.11 - resolution: "follow-redirects@npm:1.15.11" - peerDependenciesMeta: - debug: - optional: true - checksum: 10c0/d301f430542520a54058d4aeeb453233c564aaccac835d29d15e050beb33f339ad67d9bddbce01739c5dc46a6716dbe3d9d0d5134b1ca203effa11a7ef092343 - languageName: node - linkType: hard - -"for-each@npm:^0.3.5": - version: 0.3.5 - resolution: "for-each@npm:0.3.5" - dependencies: - is-callable: "npm:^1.2.7" - checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee - languageName: node - linkType: hard - -"form-data@npm:^4.0.4": - version: 4.0.5 - resolution: "form-data@npm:4.0.5" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - es-set-tostringtag: "npm:^2.1.0" - hasown: "npm:^2.0.2" - mime-types: "npm:^2.1.12" - checksum: 10c0/dd6b767ee0bbd6d84039db12a0fa5a2028160ffbfaba1800695713b46ae974a5f6e08b3356c3195137f8530dcd9dfcb5d5ae1eeff53d0db1e5aad863b619ce3b - languageName: node - linkType: hard - -"fs-minipass@npm:^3.0.0": - version: 3.0.3 - resolution: "fs-minipass@npm:3.0.3" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 - languageName: node - linkType: hard - -"fsevents@npm:~2.3.2": - version: 2.3.3 - resolution: "fsevents@npm:2.3.3" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": - version: 2.3.3 - resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" - dependencies: - node-gyp: "npm:latest" - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.2": - version: 1.1.2 - resolution: "function-bind@npm:1.1.2" - checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 - languageName: node - linkType: hard - -"generator-function@npm:^2.0.0": - version: 2.0.1 - resolution: "generator-function@npm:2.0.1" - checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 - languageName: node - linkType: hard - -"get-amd-module-type@npm:^6.0.1": - version: 6.0.1 - resolution: "get-amd-module-type@npm:6.0.1" - dependencies: - ast-module-types: "npm:^6.0.1" - node-source-walk: "npm:^7.0.1" - checksum: 10c0/23afae042834ac57cbe6da6e9f285dab19067c16a283efbb5abc82ffed1213ecaf12c90bbe1d731562e9057373f843541441316b9a405cc426a123d1172e45b8 - languageName: node - linkType: hard - -"get-caller-file@npm:^2.0.5": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde - languageName: node - linkType: hard - -"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": - version: 2.0.2 - resolution: "get-func-name@npm:2.0.2" - checksum: 10c0/89830fd07623fa73429a711b9daecdb304386d237c71268007f788f113505ef1d4cc2d0b9680e072c5082490aec9df5d7758bf5ac6f1c37062855e8e3dc0b9df - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0": - version: 1.3.1 - resolution: "get-intrinsic@npm:1.3.1" - dependencies: - async-function: "npm:^1.0.0" - async-generator-function: "npm:^1.0.0" - call-bind-apply-helpers: "npm:^1.0.2" - es-define-property: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.1.1" - function-bind: "npm:^1.1.2" - generator-function: "npm:^2.0.0" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - hasown: "npm:^2.0.2" - math-intrinsics: "npm:^1.1.0" - checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d - languageName: node - linkType: hard - -"get-own-enumerable-property-symbols@npm:^3.0.0": - version: 3.0.2 - resolution: "get-own-enumerable-property-symbols@npm:3.0.2" - checksum: 10c0/103999855f3d1718c631472437161d76962cbddcd95cc642a34c07bfb661ed41b6c09a9c669ccdff89ee965beb7126b80eec7b2101e20e31e9cc6c4725305e10 - languageName: node - linkType: hard - -"get-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "get-proto@npm:1.0.1" - dependencies: - dunder-proto: "npm:^1.0.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c - languageName: node - linkType: hard - -"gill@npm:^0.10.2": - version: 0.10.3 - resolution: "gill@npm:0.10.3" - dependencies: - "@solana-program/address-lookup-table": "npm:^0.7.0" - "@solana-program/compute-budget": "npm:^0.8.0" - "@solana-program/system": "npm:^0.7.0" - "@solana-program/token-2022": "npm:^0.4.2" - "@solana/assertions": "npm:^2.1.1" - "@solana/codecs": "npm:^2.1.1" - "@solana/kit": "npm:^2.3.0" - "@solana/transaction-confirmation": "npm:^2.1.1" - peerDependencies: - typescript: ">=5" - checksum: 10c0/ad74a3bdf8f2365efc70cfd3bfe6995ac6eaf2e3ea9e36f2e77ff10d05252f9394db20b45d987f9df22a70a073b1efadcf6a7b8ccb5708e6db05e75580ffe14f - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: "npm:^4.0.1" - checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee - languageName: node - linkType: hard - -"glob-parent@npm:^6.0.2": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" - dependencies: - is-glob: "npm:^4.0.3" - checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 - languageName: node - linkType: hard - -"glob@npm:^13.0.0": - version: 13.0.0 - resolution: "glob@npm:13.0.0" - dependencies: - minimatch: "npm:^10.1.1" - minipass: "npm:^7.1.2" - path-scurry: "npm:^2.0.0" - checksum: 10c0/8e2f5821f3f7c312dd102e23a15b80c79e0837a9872784293ba2e15ec73b3f3749a49a42a31bfcb4e52c84820a474e92331c2eebf18819d20308f5c33876630a - languageName: node - linkType: hard - -"glob@npm:^7.1.3, glob@npm:^7.2.3": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.1.1" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe - languageName: node - linkType: hard - -"glob@npm:^8.1.0": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^5.0.1" - once: "npm:^1.3.0" - checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f - languageName: node - linkType: hard - -"globals@npm:^13.19.0": - version: 13.24.0 - resolution: "globals@npm:13.24.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd - languageName: node - linkType: hard - -"globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.9" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^3.0.0" - checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 - languageName: node - linkType: hard - -"gonzales-pe@npm:^4.3.0": - version: 4.3.0 - resolution: "gonzales-pe@npm:4.3.0" - dependencies: - minimist: "npm:^1.2.5" - bin: - gonzales: bin/gonzales.js - checksum: 10c0/b99a6ef4bf28ca0b0adcc0b42fd0179676ee8bfe1d3e3c0025d7d38ba35a3f2d5b1d4beb16101a7fc7cb2dbda1ec045bbce0932697095df41d729bac1703476f - languageName: node - linkType: hard - -"gopd@npm:^1.0.1, gopd@npm:^1.2.0": - version: 1.2.0 - resolution: "gopd@npm:1.2.0" - checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11" - checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 - languageName: node - linkType: hard - -"graphemer@npm:^1.4.0": - version: 1.4.0 - resolution: "graphemer@npm:1.4.0" - checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": - version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2" - dependencies: - es-define-property: "npm:^1.0.0" - checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": - version: 1.1.0 - resolution: "has-symbols@npm:1.1.0" - checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.2": - version: 1.0.2 - resolution: "has-tostringtag@npm:1.0.2" - dependencies: - has-symbols: "npm:^1.0.3" - checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c - languageName: node - linkType: hard - -"hash-base@npm:^3.0.0, hash-base@npm:^3.1.2": - version: 3.1.2 - resolution: "hash-base@npm:3.1.2" - dependencies: - inherits: "npm:^2.0.4" - readable-stream: "npm:^2.3.8" - safe-buffer: "npm:^5.2.1" - to-buffer: "npm:^1.2.1" - checksum: 10c0/f3b7fae1853b31340048dd659f40f5260ca6f3ff53b932f807f4ab701ee09039f6e9dbe1841723ff61e20f3f69d6387a352e4ccc5f997dedb0d375c7d88bc15e - languageName: node - linkType: hard - -"hash-base@npm:~3.0.4": - version: 3.0.5 - resolution: "hash-base@npm:3.0.5" - dependencies: - inherits: "npm:^2.0.4" - safe-buffer: "npm:^5.2.1" - checksum: 10c0/6dc185b79bad9b6d525cd132a588e4215380fdc36fec6f7a8a58c5db8e3b642557d02ad9c367f5e476c7c3ad3ccffa3607f308b124e1ed80e3b80a1b254db61e - languageName: node - linkType: hard - -"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": - version: 1.1.7 - resolution: "hash.js@npm:1.1.7" - dependencies: - inherits: "npm:^2.0.3" - minimalistic-assert: "npm:^1.0.1" - checksum: 10c0/41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 - languageName: node - linkType: hard - -"hasown@npm:^2.0.2": - version: 2.0.2 - resolution: "hasown@npm:2.0.2" - dependencies: - function-bind: "npm:^1.1.2" - checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 - languageName: node - linkType: hard - -"he@npm:^1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 - languageName: node - linkType: hard - -"helius-laserstream-darwin-arm64@npm:0.1.8": - version: 0.1.8 - resolution: "helius-laserstream-darwin-arm64@npm:0.1.8" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"helius-laserstream-darwin-x64@npm:0.1.8": - version: 0.1.8 - resolution: "helius-laserstream-darwin-x64@npm:0.1.8" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"helius-laserstream-linux-arm64-gnu@npm:0.1.8": - version: 0.1.8 - resolution: "helius-laserstream-linux-arm64-gnu@npm:0.1.8" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"helius-laserstream-linux-arm64-musl@npm:0.1.8": - version: 0.1.8 - resolution: "helius-laserstream-linux-arm64-musl@npm:0.1.8" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"helius-laserstream-linux-x64-gnu@npm:0.1.8": - version: 0.1.8 - resolution: "helius-laserstream-linux-x64-gnu@npm:0.1.8" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"helius-laserstream-linux-x64-musl@npm:0.1.8": - version: 0.1.8 - resolution: "helius-laserstream-linux-x64-musl@npm:0.1.8" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"helius-laserstream@npm:0.1.8": - version: 0.1.8 - resolution: "helius-laserstream@npm:0.1.8" - dependencies: - "@types/protobufjs": "npm:^6.0.0" - helius-laserstream-darwin-arm64: "npm:0.1.8" - helius-laserstream-darwin-x64: "npm:0.1.8" - helius-laserstream-linux-arm64-gnu: "npm:0.1.8" - helius-laserstream-linux-arm64-musl: "npm:0.1.8" - helius-laserstream-linux-x64-gnu: "npm:0.1.8" - helius-laserstream-linux-x64-musl: "npm:0.1.8" - protobufjs: "npm:^7.5.3" - dependenciesMeta: - helius-laserstream-darwin-arm64: - optional: true - helius-laserstream-darwin-x64: - optional: true - helius-laserstream-linux-arm64-gnu: - optional: true - helius-laserstream-linux-arm64-musl: - optional: true - helius-laserstream-linux-x64-gnu: - optional: true - helius-laserstream-linux-x64-musl: - optional: true - checksum: 10c0/b5f5bf3e39bb442a44b79098cff916a72c9be7f9fdbf0bb8b030ccb61c6688cb41fbae18a4091841ae8f6cce787b23177bac3b5dd5e92d9daef24f347bc29e73 - conditions: (os=darwin | os=linux) & (cpu=x64 | cpu=arm64) - languageName: node - linkType: hard - -"hmac-drbg@npm:^1.0.1": - version: 1.0.1 - resolution: "hmac-drbg@npm:1.0.1" - dependencies: - hash.js: "npm:^1.0.3" - minimalistic-assert: "npm:^1.0.0" - minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 10c0/f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.1": - version: 4.2.0 - resolution: "http-cache-semantics@npm:4.2.0" - checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^7.0.0": - version: 7.0.2 - resolution: "http-proxy-agent@npm:7.0.2" - dependencies: - agent-base: "npm:^7.1.0" - debug: "npm:^4.3.4" - checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.1": - version: 7.0.6 - resolution: "https-proxy-agent@npm:7.0.6" - dependencies: - agent-base: "npm:^7.1.2" - debug: "npm:4" - checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac - languageName: node - linkType: hard - -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: "npm:^2.0.0" - checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 - languageName: node - linkType: hard - -"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb - languageName: node - linkType: hard - -"ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.3.2 - resolution: "ignore@npm:5.3.2" - checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 - languageName: node - linkType: hard - -"import-fresh@npm:^3.2.1": - version: 3.3.1 - resolution: "import-fresh@npm:3.3.1" - dependencies: - parent-module: "npm:^1.0.0" - resolve-from: "npm:^4.0.0" - checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: "npm:^1.3.0" - wrappy: "npm:1" - checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3, inherits@npm:~2.0.4": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 - languageName: node - linkType: hard - -"ini@npm:~1.3.0": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a - languageName: node - linkType: hard - -"ip-address@npm:^10.0.1": - version: 10.1.0 - resolution: "ip-address@npm:10.1.0" - checksum: 10c0/0103516cfa93f6433b3bd7333fa876eb21263912329bfa47010af5e16934eeeff86f3d2ae700a3744a137839ddfad62b900c7a445607884a49b5d1e32a3d7566 - languageName: node - linkType: hard - -"is-arguments@npm:^1.0.4": - version: 1.2.0 - resolution: "is-arguments@npm:1.2.0" - dependencies: - call-bound: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/6377344b31e9fcb707c6751ee89b11f132f32338e6a782ec2eac9393b0cbd32235dad93052998cda778ee058754860738341d8114910d50ada5615912bb929fc - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: "npm:^2.0.0" - checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 - languageName: node - linkType: hard - -"is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f - languageName: node - linkType: hard - -"is-core-module@npm:^2.16.1": - version: 2.16.1 - resolution: "is-core-module@npm:2.16.1" - dependencies: - hasown: "npm:^2.0.2" - checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc - languageName: node - linkType: hard - -"is-generator-function@npm:^1.0.7": - version: 1.1.2 - resolution: "is-generator-function@npm:1.1.2" - dependencies: - call-bound: "npm:^1.0.4" - generator-function: "npm:^2.0.0" - get-proto: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.2" - safe-regex-test: "npm:^1.1.0" - checksum: 10c0/83da102e89c3e3b71d67b51d47c9f9bc862bceb58f87201727e27f7fa19d1d90b0ab223644ecaee6fc6e3d2d622bb25c966fbdaf87c59158b01ce7c0fe2fa372 - languageName: node - linkType: hard - -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: "npm:^2.1.1" - checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a - languageName: node - linkType: hard - -"is-interactive@npm:^1.0.0": - version: 1.0.0 - resolution: "is-interactive@npm:1.0.0" - checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d - languageName: node - linkType: hard - -"is-nan@npm:^1.3.2": - version: 1.3.2 - resolution: "is-nan@npm:1.3.2" - dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - checksum: 10c0/8bfb286f85763f9c2e28ea32e9127702fe980ffd15fa5d63ade3be7786559e6e21355d3625dd364c769c033c5aedf0a2ed3d4025d336abf1b9241e3d9eddc5b0 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 - languageName: node - linkType: hard - -"is-obj@npm:^1.0.1": - version: 1.0.1 - resolution: "is-obj@npm:1.0.1" - checksum: 10c0/5003acba0af7aa47dfe0760e545a89bbac89af37c12092c3efadc755372cdaec034f130e7a3653a59eb3c1843cfc72ca71eaf1a6c3bafe5a0bab3611a47f9945 - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 - languageName: node - linkType: hard - -"is-plain-obj@npm:^2.1.0": - version: 2.1.0 - resolution: "is-plain-obj@npm:2.1.0" - checksum: 10c0/e5c9814cdaa627a9ad0a0964ded0e0491bfd9ace405c49a5d63c88b30a162f1512c069d5b80997893c4d0181eadc3fed02b4ab4b81059aba5620bfcdfdeb9c53 - languageName: node - linkType: hard - -"is-regex@npm:^1.2.1": - version: 1.2.1 - resolution: "is-regex@npm:1.2.1" - dependencies: - call-bound: "npm:^1.0.2" - gopd: "npm:^1.2.0" - has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.2" - checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04 - languageName: node - linkType: hard - -"is-regexp@npm:^1.0.0": - version: 1.0.0 - resolution: "is-regexp@npm:1.0.0" - checksum: 10c0/34cacda1901e00f6e44879378f1d2fa96320ea956c1bec27713130aaf1d44f6e7bd963eed28945bfe37e600cb27df1cf5207302680dad8bdd27b9baff8ecf611 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.3": - version: 1.1.15 - resolution: "is-typed-array@npm:1.1.15" - dependencies: - which-typed-array: "npm:^1.1.16" - checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 - languageName: node - linkType: hard - -"is-unicode-supported@npm:^0.1.0": - version: 0.1.0 - resolution: "is-unicode-supported@npm:0.1.0" - checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 - languageName: node - linkType: hard - -"is-url-superb@npm:^4.0.0": - version: 4.0.0 - resolution: "is-url-superb@npm:4.0.0" - checksum: 10c0/354ea8246d5b5a828e41bb4ed66c539a7b74dc878ee4fa84b148df312b14b08118579d64f0893b56a0094e3b4b1e6082d2fbe2e3792998d7edffde1c0f3dfdd9 - languageName: node - linkType: hard - -"is-url@npm:^1.2.4": - version: 1.2.4 - resolution: "is-url@npm:1.2.4" - checksum: 10c0/0157a79874f8f95fdd63540e3f38c8583c2ef572661cd0693cda80ae3e42dfe8e9a4a972ec1b827f861d9a9acf75b37f7d58a37f94a8a053259642912c252bc3 - languageName: node - linkType: hard - -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd - languageName: node - linkType: hard - -"isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d - languageName: node - linkType: hard - -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 - languageName: node - linkType: hard - -"isomorphic-ws@npm:^4.0.1": - version: 4.0.1 - resolution: "isomorphic-ws@npm:4.0.1" - peerDependencies: - ws: "*" - checksum: 10c0/7cb90dc2f0eb409825558982fb15d7c1d757a88595efbab879592f9d2b63820d6bbfb5571ab8abe36c715946e165a413a99f6aafd9f40ab1f514d73487bc9996 - languageName: node - linkType: hard - -"isomorphic-ws@npm:^5.0.0": - version: 5.0.0 - resolution: "isomorphic-ws@npm:5.0.0" - peerDependencies: - ws: "*" - checksum: 10c0/a058ac8b5e6efe9e46252cb0bc67fd325005d7216451d1a51238bc62d7da8486f828ef017df54ddf742e0fffcbe4b1bcc2a66cc115b027ed0180334cd18df252 - languageName: node - linkType: hard - -"jayson@npm:^4.1.1": - version: 4.3.0 - resolution: "jayson@npm:4.3.0" - dependencies: - "@types/connect": "npm:^3.4.33" - "@types/node": "npm:^12.12.54" - "@types/ws": "npm:^7.4.4" - commander: "npm:^2.20.3" - delay: "npm:^5.0.0" - es6-promisify: "npm:^5.0.0" - eyes: "npm:^0.1.8" - isomorphic-ws: "npm:^4.0.1" - json-stringify-safe: "npm:^5.0.1" - stream-json: "npm:^1.9.1" - uuid: "npm:^8.3.2" - ws: "npm:^7.5.10" - bin: - jayson: bin/jayson.js - checksum: 10c0/d3d1ee1bd9d8b57eb6c13da83965e6052b030b24ee9ee6b8763ea33e986d7f161428bda8a3f5e4b30e0194867fe48ef0652db521363ccc6227b89d7998f0dbda - languageName: node - linkType: hard - -"jest-diff@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-diff@npm:28.1.3" - dependencies: - chalk: "npm:^4.0.0" - diff-sequences: "npm:^28.1.1" - jest-get-type: "npm:^28.0.2" - pretty-format: "npm:^28.1.3" - checksum: 10c0/17a101ceb7e8f25c3ef64edda15cb1a259c2835395637099f3cc44f578fbd94ced7a13d11c0cbe8c5c1c3959a08544f0a913bec25a305b6dfc9847ce488e7198 - languageName: node - linkType: hard - -"jest-get-type@npm:^28.0.2": - version: 28.0.2 - resolution: "jest-get-type@npm:28.0.2" - checksum: 10c0/f64a40cfa10d79a56b383919033d35c8c4daee6145a1df31ec5ef2283fa7e8adbd443c6fcb4cfd0f60bbbd89f046c2323952f086b06e875cbbbc1a7d543a6e5e - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-matcher-utils@npm:28.1.3" - dependencies: - chalk: "npm:^4.0.0" - jest-diff: "npm:^28.1.3" - jest-get-type: "npm:^28.0.2" - pretty-format: "npm:^28.1.3" - checksum: 10c0/026fbe664cfdaed5a5c9facfc86ccc9bed3718a7d1fe061e355eb6158019a77f74e9b843bc99f9a467966cbebe60bde8b43439174cbf64997d4ad404f8f809d0 - languageName: node - linkType: hard - -"jest-message-util@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-message-util@npm:28.1.3" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^28.1.3" - "@types/stack-utils": "npm:^2.0.0" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^28.1.3" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 10c0/9f56a11b4171e43e2375446e624eec86f82820d9a35de3cd8b065b5ce2d7f65d2bbbdfc0ffe5fa358ff866693a68ec4f6b0cb8ad953fd6f35f9895eb370c6ed7 - languageName: node - linkType: hard - -"jest-util@npm:^28.1.3": - version: 28.1.3 - resolution: "jest-util@npm:28.1.3" - dependencies: - "@jest/types": "npm:^28.1.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - graceful-fs: "npm:^4.2.9" - picomatch: "npm:^2.2.3" - checksum: 10c0/7d4946424032a2ccb2ad669905debb44b0bf040dff7a1fe82d283c679ae4638a86ca48d6a276d65a76451252338ad84e76ef2cfde03f577f091fe2b3102aedc9 - languageName: node - linkType: hard - -"js-sha256@npm:^0.11.0": - version: 0.11.1 - resolution: "js-sha256@npm:0.11.1" - checksum: 10c0/ef8e294b6f38f218e4834cb653471dd1a76808cea93dc66eaffcb04124116bc36d6cebc4e8866753e184ab4e57892b6ef21918e8ab0450179a7e093ea962d974 - languageName: node - linkType: hard - -"js-sha256@npm:^0.9.0": - version: 0.9.0 - resolution: "js-sha256@npm:0.9.0" - checksum: 10c0/f20b9245f6ebe666f42ca05536f777301132fb1aa7fbc22f10578fa302717a6cca507344894efdeaf40a011256eb2f7d517b94ac7105bd5cf087fa61551ad634 - languageName: node - linkType: hard - -"js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed - languageName: node - linkType: hard - -"js-yaml@npm:^4.1.0": - version: 4.1.1 - resolution: "js-yaml@npm:4.1.1" - dependencies: - argparse: "npm:^2.0.1" - bin: - js-yaml: bin/js-yaml.js - checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce - languageName: node - linkType: hard - -"json-stable-stringify-without-jsonify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 - languageName: node - linkType: hard - -"json-stringify-safe@npm:^5.0.1": - version: 5.0.1 - resolution: "json-stringify-safe@npm:5.0.1" - checksum: 10c0/7dbf35cd0411d1d648dceb6d59ce5857ec939e52e4afc37601aa3da611f0987d5cee5b38d58329ceddf3ed48bd7215229c8d52059ab01f2444a338bf24ed0f37 - languageName: node - linkType: hard - -"json5@npm:^2.2.2": - version: 2.2.3 - resolution: "json5@npm:2.2.3" - bin: - json5: lib/cli.js - checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c - languageName: node - linkType: hard - -"just-extend@npm:^6.2.0": - version: 6.2.0 - resolution: "just-extend@npm:6.2.0" - checksum: 10c0/d41cbdb6d85b986d4deaf2144d81d4f7266cd408fc95189d046d63f610c2dc486b141aeb6ef319c2d76fe904d45a6bb31f19b098ff0427c35688e0c383fc0511 - languageName: node - linkType: hard - -"keyv@npm:^4.5.3": - version: 4.5.4 - resolution: "keyv@npm:4.5.4" - dependencies: - json-buffer: "npm:3.0.1" - checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e - languageName: node - linkType: hard - -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: "npm:^1.2.1" - type-check: "npm:~0.4.0" - checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: "npm:^5.0.0" - checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 - languageName: node - linkType: hard - -"lodash.camelcase@npm:^4.3.0": - version: 4.3.0 - resolution: "lodash.camelcase@npm:4.3.0" - checksum: 10c0/fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432 - languageName: node - linkType: hard - -"lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 - languageName: node - linkType: hard - -"lodash@npm:4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c - languageName: node - linkType: hard - -"log-symbols@npm:^4.1.0": - version: 4.1.0 - resolution: "log-symbols@npm:4.1.0" - dependencies: - chalk: "npm:^4.1.0" - is-unicode-supported: "npm:^0.1.0" - checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 - languageName: node - linkType: hard - -"loglevel@npm:^1.9.2": - version: 1.9.2 - resolution: "loglevel@npm:1.9.2" - checksum: 10c0/1e317fa4648fe0b4a4cffef6de037340592cee8547b07d4ce97a487abe9153e704b98451100c799b032c72bb89c9366d71c9fb8192ada8703269263ae77acdc7 - languageName: node - linkType: hard - -"long@npm:^5.0.0": - version: 5.3.2 - resolution: "long@npm:5.3.2" - checksum: 10c0/7130fe1cbce2dca06734b35b70d380ca3f70271c7f8852c922a7c62c86c4e35f0c39290565eca7133c625908d40e126ac57c02b1b1a4636b9457d77e1e60b981 - languageName: node - linkType: hard - -"loupe@npm:^2.3.6": - version: 2.3.7 - resolution: "loupe@npm:2.3.7" - dependencies: - get-func-name: "npm:^2.0.1" - checksum: 10c0/71a781c8fc21527b99ed1062043f1f2bb30bdaf54fa4cf92463427e1718bc6567af2988300bc243c1f276e4f0876f29e3cbf7b58106fdc186915687456ce5bf4 - languageName: node - linkType: hard - -"lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case@npm:2.0.2" - dependencies: - tslib: "npm:^2.0.3" - checksum: 10c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b - languageName: node - linkType: hard - -"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": - version: 11.2.4 - resolution: "lru-cache@npm:11.2.4" - checksum: 10c0/4a24f9b17537619f9144d7b8e42cd5a225efdfd7076ebe7b5e7dc02b860a818455201e67fbf000765233fe7e339d3c8229fc815e9b58ee6ede511e07608c19b2 - languageName: node - linkType: hard - -"madge@npm:^8.0.0": - version: 8.0.0 - resolution: "madge@npm:8.0.0" - dependencies: - chalk: "npm:^4.1.2" - commander: "npm:^7.2.0" - commondir: "npm:^1.0.1" - debug: "npm:^4.3.4" - dependency-tree: "npm:^11.0.0" - ora: "npm:^5.4.1" - pluralize: "npm:^8.0.0" - pretty-ms: "npm:^7.0.1" - rc: "npm:^1.2.8" - stream-to-array: "npm:^2.3.0" - ts-graphviz: "npm:^2.1.2" - walkdir: "npm:^0.4.1" - peerDependencies: - typescript: ^5.4.4 - peerDependenciesMeta: - typescript: - optional: true - bin: - madge: bin/cli.js - checksum: 10c0/63d173027f10922123c291e4c13ab4aeda1d10311995b68c0257c647c36a18b8d817c14fc1b431e92be46f394f2003967fd52767d60a09d9d1b2f020b740d213 - languageName: node - linkType: hard - -"magic-string@npm:^0.30.21": - version: 0.30.21 - resolution: "magic-string@npm:0.30.21" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.5" - checksum: 10c0/299378e38f9a270069fc62358522ddfb44e94244baa0d6a8980ab2a9b2490a1d03b236b447eee309e17eb3bddfa482c61259d47960eb018a904f0ded52780c4a - languageName: node - linkType: hard - -"make-error@npm:^1.1.1": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f - languageName: node - linkType: hard - -"make-fetch-happen@npm:^15.0.0": - version: 15.0.3 - resolution: "make-fetch-happen@npm:15.0.3" - dependencies: - "@npmcli/agent": "npm:^4.0.0" - cacache: "npm:^20.0.1" - http-cache-semantics: "npm:^4.1.1" - minipass: "npm:^7.0.2" - minipass-fetch: "npm:^5.0.0" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^1.0.0" - proc-log: "npm:^6.0.0" - promise-retry: "npm:^2.0.1" - ssri: "npm:^13.0.0" - checksum: 10c0/525f74915660be60b616bcbd267c4a5b59481b073ba125e45c9c3a041bb1a47a2bd0ae79d028eb6f5f95bf9851a4158423f5068539c3093621abb64027e8e461 - languageName: node - linkType: hard - -"math-intrinsics@npm:^1.1.0": - version: 1.1.0 - resolution: "math-intrinsics@npm:1.1.0" - checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f - languageName: node - linkType: hard - -"md5.js@npm:^1.3.4": - version: 1.3.5 - resolution: "md5.js@npm:1.3.5" - dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 10c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 - languageName: node - linkType: hard - -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb - languageName: node - linkType: hard - -"micromatch@npm:^4.0.4, micromatch@npm:^4.0.8": - version: 4.0.8 - resolution: "micromatch@npm:4.0.8" - dependencies: - braces: "npm:^3.0.3" - picomatch: "npm:^2.3.1" - checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 - languageName: node - linkType: hard - -"miller-rabin@npm:^4.0.0": - version: 4.0.1 - resolution: "miller-rabin@npm:4.0.1" - dependencies: - bn.js: "npm:^4.0.0" - brorand: "npm:^1.0.1" - bin: - miller-rabin: bin/miller-rabin - checksum: 10c0/26b2b96f6e49dbcff7faebb78708ed2f5f9ae27ac8cbbf1d7c08f83cf39bed3d418c0c11034dce997da70d135cc0ff6f3a4c15dc452f8e114c11986388a64346 - languageName: node - linkType: hard - -"mime-db@npm:1.52.0": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: "npm:1.52.0" - checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 - languageName: node - linkType: hard - -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 - languageName: node - linkType: hard - -"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-assert@npm:1.0.1" - checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd - languageName: node - linkType: hard - -"minimalistic-crypto-utils@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-crypto-utils@npm:1.0.1" - checksum: 10c0/790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 - languageName: node - linkType: hard - -"minimatch@npm:9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac - languageName: node - linkType: hard - -"minimatch@npm:^10.1.1": - version: 10.1.1 - resolution: "minimatch@npm:10.1.1" - dependencies: - "@isaacs/brace-expansion": "npm:^5.0.0" - checksum: 10c0/c85d44821c71973d636091fddbfbffe62370f5ee3caf0241c5b60c18cd289e916200acb2361b7e987558cd06896d153e25d505db9fc1e43e6b4b6752e2702902 - languageName: node - linkType: hard - -"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 - languageName: node - linkType: hard - -"minimatch@npm:^5.0.1, minimatch@npm:^5.1.6": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 - languageName: node - linkType: hard - -"minimatch@npm:^9.0.5": - version: 9.0.5 - resolution: "minimatch@npm:9.0.5" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed - languageName: node - linkType: hard - -"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": - version: 1.2.8 - resolution: "minimist@npm:1.2.8" - checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 - languageName: node - linkType: hard - -"minipass-collect@npm:^2.0.1": - version: 2.0.1 - resolution: "minipass-collect@npm:2.0.1" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e - languageName: node - linkType: hard - -"minipass-fetch@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass-fetch@npm:5.0.0" - dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^7.0.3" - minipass-sized: "npm:^1.0.3" - minizlib: "npm:^3.0.1" - dependenciesMeta: - encoding: - optional: true - checksum: 10c0/9443aab5feab190972f84b64116e54e58dd87a58e62399cae0a4a7461b80568281039b7c3a38ba96453431ebc799d1e26999e548540156216729a4967cd5ef06 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb - languageName: node - linkType: hard - -"minipass@npm:^3.0.0": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c - languageName: node - linkType: hard - -"minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": - version: 7.1.2 - resolution: "minipass@npm:7.1.2" - checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 - languageName: node - linkType: hard - -"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": - version: 3.1.0 - resolution: "minizlib@npm:3.1.0" - dependencies: - minipass: "npm:^7.1.2" - checksum: 10c0/5aad75ab0090b8266069c9aabe582c021ae53eb33c6c691054a13a45db3b4f91a7fb1bd79151e6b4e9e9a86727b522527c0a06ec7d45206b745d54cd3097bcec - languageName: node - linkType: hard - -"mocha@npm:10.7.3": - version: 10.7.3 - resolution: "mocha@npm:10.7.3" - dependencies: - ansi-colors: "npm:^4.1.3" - browser-stdout: "npm:^1.3.1" - chokidar: "npm:^3.5.3" - debug: "npm:^4.3.5" - diff: "npm:^5.2.0" - escape-string-regexp: "npm:^4.0.0" - find-up: "npm:^5.0.0" - glob: "npm:^8.1.0" - he: "npm:^1.2.0" - js-yaml: "npm:^4.1.0" - log-symbols: "npm:^4.1.0" - minimatch: "npm:^5.1.6" - ms: "npm:^2.1.3" - serialize-javascript: "npm:^6.0.2" - strip-json-comments: "npm:^3.1.1" - supports-color: "npm:^8.1.1" - workerpool: "npm:^6.5.1" - yargs: "npm:^16.2.0" - yargs-parser: "npm:^20.2.9" - yargs-unparser: "npm:^2.0.0" - bin: - _mocha: bin/_mocha - mocha: bin/mocha.js - checksum: 10c0/76a205905ec626262d903954daca31ba8e0dd4347092f627b98b8508dcdb5b30be62ec8f7a405fab3b2e691bdc099721c3291b330c3ee85b8ec40d3d179f8728 - languageName: node - linkType: hard - -"module-definition@npm:^6.0.1": - version: 6.0.1 - resolution: "module-definition@npm:6.0.1" - dependencies: - ast-module-types: "npm:^6.0.1" - node-source-walk: "npm:^7.0.1" - bin: - module-definition: bin/cli.js - checksum: 10c0/b6c898e97041512364947e6b892b351352f3bf29fdc512d625586627828cfdd385665fbbc7c52ae3686ce5b026bde9a5e26ae22408812b9b3991f9d786566316 - languageName: node - linkType: hard - -"module-lookup-amd@npm:^9.0.3": - version: 9.0.5 - resolution: "module-lookup-amd@npm:9.0.5" - dependencies: - commander: "npm:^12.1.0" - glob: "npm:^7.2.3" - requirejs: "npm:^2.3.7" - requirejs-config-file: "npm:^4.0.0" - bin: - lookup-amd: bin/cli.js - checksum: 10c0/0c7aa77a4a57359d095b7a1ab1a3349ee02d85399a935bfddf47f7a1b1f3e1fa9c0040fdecbf4ce8c842d74665dde32b69467a752a5eb891f0270db005cdb730 - languageName: node - linkType: hard - -"ms@npm:^2.0.0, ms@npm:^2.1.3": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 - languageName: node - linkType: hard - -"nanoid@npm:3.3.4": - version: 3.3.4 - resolution: "nanoid@npm:3.3.4" - bin: - nanoid: bin/nanoid.cjs - checksum: 10c0/a0747d5c6021828fe8d38334e5afb05d3268d7d4b06024058ec894ccc47070e4e81d268a6b75488d2ff3485fa79a75c251d4b7c6f31051bb54bb662b6fd2a27d - languageName: node - linkType: hard - -"nanoid@npm:^3.3.11": - version: 3.3.11 - resolution: "nanoid@npm:3.3.11" - bin: - nanoid: bin/nanoid.cjs - checksum: 10c0/40e7f70b3d15f725ca072dfc4f74e81fcf1fbb02e491cf58ac0c79093adc9b0a73b152bcde57df4b79cd097e13023d7504acb38404a4da7bc1cd8e887b82fe0b - languageName: node - linkType: hard - -"natural-compare@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" - checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 - languageName: node - linkType: hard - -"negotiator@npm:^1.0.0": - version: 1.0.0 - resolution: "negotiator@npm:1.0.0" - checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b - languageName: node - linkType: hard - -"nise@npm:^6.0.0": - version: 6.1.1 - resolution: "nise@npm:6.1.1" - dependencies: - "@sinonjs/commons": "npm:^3.0.1" - "@sinonjs/fake-timers": "npm:^13.0.1" - "@sinonjs/text-encoding": "npm:^0.7.3" - just-extend: "npm:^6.2.0" - path-to-regexp: "npm:^8.1.0" - checksum: 10c0/09471adb738dc3be2981cc7815c90879ed6a5a3e162202ca66e12f9a5a0956bea718d0ec2f0c07acc26e3f958481b8fb30c30da76c13620e922f3b9dcd249c50 - languageName: node - linkType: hard - -"no-case@npm:^3.0.4": - version: 3.0.4 - resolution: "no-case@npm:3.0.4" - dependencies: - lower-case: "npm:^2.0.2" - tslib: "npm:^2.0.3" - checksum: 10c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 - languageName: node - linkType: hard - -"node-cache@npm:5.1.2": - version: 5.1.2 - resolution: "node-cache@npm:5.1.2" - dependencies: - clone: "npm:2.x" - checksum: 10c0/2f91907510a1276415ae5898269d0765934d5a4f3682c8b1b19964694a9b841c8bd791e1a125d1f89050f412e1da5dd982179d714252b3a7223abb05b8cb24d5 - languageName: node - linkType: hard - -"node-fetch@npm:^2.7.0": - version: 2.7.0 - resolution: "node-fetch@npm:2.7.0" - dependencies: - whatwg-url: "npm:^5.0.0" - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 - languageName: node - linkType: hard - -"node-gyp-build@npm:^4.3.0": - version: 4.8.4 - resolution: "node-gyp-build@npm:4.8.4" - bin: - node-gyp-build: bin.js - node-gyp-build-optional: optional.js - node-gyp-build-test: build-test.js - checksum: 10c0/444e189907ece2081fe60e75368784f7782cfddb554b60123743dfb89509df89f1f29c03bbfa16b3a3e0be3f48799a4783f487da6203245fa5bed239ba7407e1 - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 12.1.0 - resolution: "node-gyp@npm:12.1.0" - dependencies: - env-paths: "npm:^2.2.0" - exponential-backoff: "npm:^3.1.1" - graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^15.0.0" - nopt: "npm:^9.0.0" - proc-log: "npm:^6.0.0" - semver: "npm:^7.3.5" - tar: "npm:^7.5.2" - tinyglobby: "npm:^0.2.12" - which: "npm:^6.0.0" - bin: - node-gyp: bin/node-gyp.js - checksum: 10c0/f43efea8aaf0beb6b2f6184e533edad779b2ae38062953e21951f46221dd104006cc574154f2ad4a135467a5aae92c49e84ef289311a82e08481c5df0e8dc495 - languageName: node - linkType: hard - -"node-source-walk@npm:^7.0.1": - version: 7.0.1 - resolution: "node-source-walk@npm:7.0.1" - dependencies: - "@babel/parser": "npm:^7.26.7" - checksum: 10c0/a3e484940d322d44c1d06cb32072d96338e44c63cdac315a0cb9d28934015cef088ba4ba1c47a274c60e4431d4d773fbb9c544e36ebd0085cba29bb9c7234911 - languageName: node - linkType: hard - -"nopt@npm:^9.0.0": - version: 9.0.0 - resolution: "nopt@npm:9.0.0" - dependencies: - abbrev: "npm:^4.0.0" - bin: - nopt: bin/nopt.js - checksum: 10c0/1822eb6f9b020ef6f7a7516d7b64a8036e09666ea55ac40416c36e4b2b343122c3cff0e2f085675f53de1d2db99a2a89a60ccea1d120bcd6a5347bf6ceb4a7fd - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 - languageName: node - linkType: hard - -"object-is@npm:^1.1.5": - version: 1.1.6 - resolution: "object-is@npm:1.1.6" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - checksum: 10c0/506af444c4dce7f8e31f34fc549e2fb8152d6b9c4a30c6e62852badd7f520b579c679af433e7a072f9d78eb7808d230dc12e1cf58da9154dfbf8813099ea0fe0 - languageName: node - linkType: hard - -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d - languageName: node - linkType: hard - -"object-sizeof@npm:2.6.5": - version: 2.6.5 - resolution: "object-sizeof@npm:2.6.5" - dependencies: - buffer: "npm:^6.0.3" - checksum: 10c0/ae733fc7aaf8eb2446aa632a34a2a30c9535afdb1997a626bf8912e64893c1afa0e1e6a9153235c09c6e8d586100eeb6fe2d869a82dcee00144cb11efb229d8e - languageName: node - linkType: hard - -"object.assign@npm:^4.1.4": - version: 4.1.7 - resolution: "object.assign@npm:4.1.7" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - has-symbols: "npm:^1.1.0" - object-keys: "npm:^1.1.1" - checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc - languageName: node - linkType: hard - -"once@npm:^1.3.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: "npm:1" - checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 - languageName: node - linkType: hard - -"onetime@npm:^5.1.0": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: "npm:^2.1.0" - checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f - languageName: node - linkType: hard - -"optionator@npm:^0.9.3": - version: 0.9.4 - resolution: "optionator@npm:0.9.4" - dependencies: - deep-is: "npm:^0.1.3" - fast-levenshtein: "npm:^2.0.6" - levn: "npm:^0.4.1" - prelude-ls: "npm:^1.2.1" - type-check: "npm:^0.4.0" - word-wrap: "npm:^1.2.5" - checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 - languageName: node - linkType: hard - -"ora@npm:^5.4.1": - version: 5.4.1 - resolution: "ora@npm:5.4.1" - dependencies: - bl: "npm:^4.1.0" - chalk: "npm:^4.1.0" - cli-cursor: "npm:^3.1.0" - cli-spinners: "npm:^2.5.0" - is-interactive: "npm:^1.0.0" - is-unicode-supported: "npm:^0.1.0" - log-symbols: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - wcwidth: "npm:^1.0.1" - checksum: 10c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 - languageName: node - linkType: hard - -"os-browserify@npm:^0.3.0": - version: 0.3.0 - resolution: "os-browserify@npm:0.3.0" - checksum: 10c0/6ff32cb1efe2bc6930ad0fd4c50e30c38010aee909eba8d65be60af55efd6cbb48f0287e3649b4e3f3a63dce5a667b23c187c4293a75e557f0d5489d735bcf52 - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: "npm:^0.1.0" - checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: "npm:^3.0.2" - checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a - languageName: node - linkType: hard - -"p-map@npm:^7.0.2": - version: 7.0.4 - resolution: "p-map@npm:7.0.4" - checksum: 10c0/a5030935d3cb2919d7e89454d1ce82141e6f9955413658b8c9403cfe379283770ed3048146b44cde168aa9e8c716505f196d5689db0ae3ce9a71521a2fef3abd - languageName: node - linkType: hard - -"pako@npm:^2.0.3": - version: 2.1.0 - resolution: "pako@npm:2.1.0" - checksum: 10c0/8e8646581410654b50eb22a5dfd71159cae98145bd5086c9a7a816ec0370b5f72b4648d08674624b3870a521e6a3daffd6c2f7bc00fdefc7063c9d8232ff5116 - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: "npm:^3.0.0" - checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 - languageName: node - linkType: hard - -"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.9": - version: 5.1.9 - resolution: "parse-asn1@npm:5.1.9" - dependencies: - asn1.js: "npm:^4.10.1" - browserify-aes: "npm:^1.2.0" - evp_bytestokey: "npm:^1.0.3" - pbkdf2: "npm:^3.1.5" - safe-buffer: "npm:^5.2.1" - checksum: 10c0/6dfe27c121be3d63ebbf95f03d2ae0a07dd716d44b70b0bd3458790a822a80de05361c62147271fd7b845dcc2d37755d9c9c393064a3438fe633779df0bc07e7 - languageName: node - linkType: hard - -"parse-ms@npm:^2.1.0": - version: 2.1.0 - resolution: "parse-ms@npm:2.1.0" - checksum: 10c0/9c5c0a95c6267c84085685556a6e102ee806c3147ec11cbb9b98e35998eb4a48a757bd6ea7bfd930062de65909a33d24985055b4394e70aa0b65ee40cef16911 - languageName: node - linkType: hard - -"path-browserify@npm:^1.0.1": - version: 1.0.1 - resolution: "path-browserify@npm:1.0.1" - checksum: 10c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 - languageName: node - linkType: hard - -"path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c - languageName: node - linkType: hard - -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 - languageName: node - linkType: hard - -"path-scurry@npm:^2.0.0": - version: 2.0.1 - resolution: "path-scurry@npm:2.0.1" - dependencies: - lru-cache: "npm:^11.0.0" - minipass: "npm:^7.1.2" - checksum: 10c0/2a16ed0e81fbc43513e245aa5763354e25e787dab0d539581a6c3f0f967461a159ed6236b2559de23aa5b88e7dc32b469b6c47568833dd142a4b24b4f5cd2620 - languageName: node - linkType: hard - -"path-to-regexp@npm:^8.1.0": - version: 8.3.0 - resolution: "path-to-regexp@npm:8.3.0" - checksum: 10c0/ee1544a73a3f294a97a4c663b0ce71bbf1621d732d80c9c9ed201b3e911a86cb628ebad691b9d40f40a3742fe22011e5a059d8eed2cf63ec2cb94f6fb4efe67c - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c - languageName: node - linkType: hard - -"pathval@npm:^1.1.1": - version: 1.1.1 - resolution: "pathval@npm:1.1.1" - checksum: 10c0/f63e1bc1b33593cdf094ed6ff5c49c1c0dc5dc20a646ca9725cc7fe7cd9995002d51d5685b9b2ec6814342935748b711bafa840f84c0bb04e38ff40a335c94dc - languageName: node - linkType: hard - -"pbkdf2@npm:^3.1.2, pbkdf2@npm:^3.1.5": - version: 3.1.5 - resolution: "pbkdf2@npm:3.1.5" - dependencies: - create-hash: "npm:^1.2.0" - create-hmac: "npm:^1.1.7" - ripemd160: "npm:^2.0.3" - safe-buffer: "npm:^5.2.1" - sha.js: "npm:^2.4.12" - to-buffer: "npm:^1.2.1" - checksum: 10c0/ea42e8695e49417eefabb19a08ab19a602cc6cc72d2df3f109c39309600230dee3083a6f678d5d42fe035d6ae780038b80ace0e68f9792ee2839bf081fe386f3 - languageName: node - linkType: hard - -"picocolors@npm:^1.1.1": - version: 1.1.1 - resolution: "picocolors@npm:1.1.1" - checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be - languageName: node - linkType: hard - -"picomatch@npm:^4.0.3": - version: 4.0.3 - resolution: "picomatch@npm:4.0.3" - checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 - languageName: node - linkType: hard - -"pluralize@npm:^8.0.0": - version: 8.0.0 - resolution: "pluralize@npm:8.0.0" - checksum: 10c0/2044cfc34b2e8c88b73379ea4a36fc577db04f651c2909041b054c981cd863dd5373ebd030123ab058d194ae615d3a97cfdac653991e499d10caf592e8b3dc33 - languageName: node - linkType: hard - -"possible-typed-array-names@npm:^1.0.0": - version: 1.1.0 - resolution: "possible-typed-array-names@npm:1.1.0" - checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 - languageName: node - linkType: hard - -"postcss-values-parser@npm:^6.0.2": - version: 6.0.2 - resolution: "postcss-values-parser@npm:6.0.2" - dependencies: - color-name: "npm:^1.1.4" - is-url-superb: "npm:^4.0.0" - quote-unquote: "npm:^1.0.0" - peerDependencies: - postcss: ^8.2.9 - checksum: 10c0/633b8bc7c46f7b6e2b1cb1f33aa0222a5cacb7f485eb41e6f902b5f37ab9884cd8e7e7b0706afb7e3c7766d85096b59e65f59a1eaefac55e2fc952a24f23bcb8 - languageName: node - linkType: hard - -"postcss@npm:^8.5.1, postcss@npm:^8.5.6": - version: 8.5.6 - resolution: "postcss@npm:8.5.6" - dependencies: - nanoid: "npm:^3.3.11" - picocolors: "npm:^1.1.1" - source-map-js: "npm:^1.2.1" - checksum: 10c0/5127cc7c91ed7a133a1b7318012d8bfa112da9ef092dddf369ae699a1f10ebbd89b1b9f25f3228795b84585c72aabd5ced5fc11f2ba467eedf7b081a66fad024 - languageName: node - linkType: hard - -"precinct@npm:^12.2.0": - version: 12.2.0 - resolution: "precinct@npm:12.2.0" - dependencies: - "@dependents/detective-less": "npm:^5.0.1" - commander: "npm:^12.1.0" - detective-amd: "npm:^6.0.1" - detective-cjs: "npm:^6.0.1" - detective-es6: "npm:^5.0.1" - detective-postcss: "npm:^7.0.1" - detective-sass: "npm:^6.0.1" - detective-scss: "npm:^5.0.1" - detective-stylus: "npm:^5.0.1" - detective-typescript: "npm:^14.0.0" - detective-vue2: "npm:^2.2.0" - module-definition: "npm:^6.0.1" - node-source-walk: "npm:^7.0.1" - postcss: "npm:^8.5.1" - typescript: "npm:^5.7.3" - bin: - precinct: bin/cli.js - checksum: 10c0/5ce79638391b29cbfd99ac5d756cc05f1a8dd505474ca33b44ad3a62dc130c8681fff5edfa464ccc92fe4024c49cc39a67c7c993243a067e960e8e946044185b - languageName: node - linkType: hard - -"prelude-ls@npm:^1.2.1": - version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" - checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd - languageName: node - linkType: hard - -"prettier-linter-helpers@npm:^1.0.0": - version: 1.0.1 - resolution: "prettier-linter-helpers@npm:1.0.1" - dependencies: - fast-diff: "npm:^1.1.2" - checksum: 10c0/91cea965681bc5f62c9d26bd3ca6358b81557261d4802e96ec1cf0acbd99d4b61632d53320cd2c3ec7d7f7805a81345644108a41ef46ddc9688e783a9ac792d1 - languageName: node - linkType: hard - -"prettier@npm:3.0.1": - version: 3.0.1 - resolution: "prettier@npm:3.0.1" - bin: - prettier: bin/prettier.cjs - checksum: 10c0/7231768b6e0f0f17cbaa83a4f7cdb100df0229ef1910b0b2cf72ce5ed8ee25ae7ec0d30cde20dcd898a002c6d1fcdb8a6ab0f8f5d8fc1275b7c29ea9e56305f2 - languageName: node - linkType: hard - -"prettier@npm:^2.5.1": - version: 2.8.8 - resolution: "prettier@npm:2.8.8" - bin: - prettier: bin-prettier.js - checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a - languageName: node - linkType: hard - -"pretty-format@npm:^28.0.0, pretty-format@npm:^28.1.3": - version: 28.1.3 - resolution: "pretty-format@npm:28.1.3" - dependencies: - "@jest/schemas": "npm:^28.1.3" - ansi-regex: "npm:^5.0.1" - ansi-styles: "npm:^5.0.0" - react-is: "npm:^18.0.0" - checksum: 10c0/596d8b459b6fdac7dcbd70d40169191e889939c17ffbcc73eebe2a9a6f82cdbb57faffe190274e0a507d9ecdf3affadf8a9b43442a625eecfbd2813b9319660f - languageName: node - linkType: hard - -"pretty-ms@npm:^7.0.1": - version: 7.0.1 - resolution: "pretty-ms@npm:7.0.1" - dependencies: - parse-ms: "npm:^2.1.0" - checksum: 10c0/069aec9d939e7903846b3db53b020bed92e3dc5909e0fef09ec8ab104a0b7f9a846605a1633c60af900d288582fb333f6f30469e59d6487a2330301fad35a89c - languageName: node - linkType: hard - -"proc-log@npm:^6.0.0": - version: 6.1.0 - resolution: "proc-log@npm:6.1.0" - checksum: 10c0/4f178d4062733ead9d71a9b1ab24ebcecdfe2250916a5b1555f04fe2eda972a0ec76fbaa8df1ad9c02707add6749219d118a4fc46dc56bdfe4dde4b47d80bb82 - languageName: node - linkType: hard - -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 - languageName: node - linkType: hard - -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: "npm:^2.0.2" - retry: "npm:^0.12.0" - checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 - languageName: node - linkType: hard - -"protobufjs@npm:*": - version: 8.0.0 - resolution: "protobufjs@npm:8.0.0" - dependencies: - "@protobufjs/aspromise": "npm:^1.1.2" - "@protobufjs/base64": "npm:^1.1.2" - "@protobufjs/codegen": "npm:^2.0.4" - "@protobufjs/eventemitter": "npm:^1.1.0" - "@protobufjs/fetch": "npm:^1.1.0" - "@protobufjs/float": "npm:^1.0.2" - "@protobufjs/inquire": "npm:^1.1.0" - "@protobufjs/path": "npm:^1.1.2" - "@protobufjs/pool": "npm:^1.1.0" - "@protobufjs/utf8": "npm:^1.1.0" - "@types/node": "npm:>=13.7.0" - long: "npm:^5.0.0" - checksum: 10c0/6fb29ca3c6abc2095a777407750f6094448b7b68bbf04147ec49ee442f85f151592338449f56d19883ea67c39ce915e3d47ec6c5c92f0bcac1eaba1841ab84ff - languageName: node - linkType: hard - -"protobufjs@npm:^7.4.0, protobufjs@npm:^7.5.3": - version: 7.5.4 - resolution: "protobufjs@npm:7.5.4" - dependencies: - "@protobufjs/aspromise": "npm:^1.1.2" - "@protobufjs/base64": "npm:^1.1.2" - "@protobufjs/codegen": "npm:^2.0.4" - "@protobufjs/eventemitter": "npm:^1.1.0" - "@protobufjs/fetch": "npm:^1.1.0" - "@protobufjs/float": "npm:^1.0.2" - "@protobufjs/inquire": "npm:^1.1.0" - "@protobufjs/path": "npm:^1.1.2" - "@protobufjs/pool": "npm:^1.1.0" - "@protobufjs/utf8": "npm:^1.1.0" - "@types/node": "npm:>=13.7.0" - long: "npm:^5.0.0" - checksum: 10c0/913b676109ffb3c05d3d31e03a684e569be91f3bba8613da4a683d69d9dba948daa2afd7d2e7944d1aa6c417890c35d9d9a8883c1160affafb0f9670d59ef722 - languageName: node - linkType: hard - -"proxy-from-env@npm:^1.1.0": - version: 1.1.0 - resolution: "proxy-from-env@npm:1.1.0" - checksum: 10c0/fe7dd8b1bdbbbea18d1459107729c3e4a2243ca870d26d34c2c1bcd3e4425b7bcc5112362df2d93cc7fb9746f6142b5e272fd1cc5c86ddf8580175186f6ad42b - languageName: node - linkType: hard - -"public-encrypt@npm:^4.0.3": - version: 4.0.3 - resolution: "public-encrypt@npm:4.0.3" - dependencies: - bn.js: "npm:^4.1.0" - browserify-rsa: "npm:^4.0.0" - create-hash: "npm:^1.1.0" - parse-asn1: "npm:^5.0.0" - randombytes: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 10c0/6c2cc19fbb554449e47f2175065d6b32f828f9b3badbee4c76585ac28ae8641aafb9bb107afc430c33c5edd6b05dbe318df4f7d6d7712b1093407b11c4280700 - languageName: node - linkType: hard - -"punycode@npm:^2.1.0": - version: 2.3.1 - resolution: "punycode@npm:2.3.1" - checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 - languageName: node - linkType: hard - -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 - languageName: node - linkType: hard - -"quote-unquote@npm:^1.0.0": - version: 1.0.0 - resolution: "quote-unquote@npm:1.0.0" - checksum: 10c0/eba86bb7f68ada486f5608c5c71cc155235f0408b8a0a180436cdf2457ae86f56a17de6b0bc5a1b7ae5f27735b3b789662cdf7f3b8195ac816cd0289085129ec - languageName: node - linkType: hard - -"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: "npm:^5.1.0" - checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 - languageName: node - linkType: hard - -"randomfill@npm:^1.0.4": - version: 1.0.4 - resolution: "randomfill@npm:1.0.4" - dependencies: - randombytes: "npm:^2.0.5" - safe-buffer: "npm:^5.1.0" - checksum: 10c0/11aeed35515872e8f8a2edec306734e6b74c39c46653607f03c68385ab8030e2adcc4215f76b5e4598e028c4750d820afd5c65202527d831d2a5f207fe2bc87c - languageName: node - linkType: hard - -"rc@npm:^1.2.8": - version: 1.2.8 - resolution: "rc@npm:1.2.8" - dependencies: - deep-extend: "npm:^0.6.0" - ini: "npm:~1.3.0" - minimist: "npm:^1.2.0" - strip-json-comments: "npm:~2.0.1" - bin: - rc: ./cli.js - checksum: 10c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 - languageName: node - linkType: hard - -"react-is@npm:^18.0.0": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 - languageName: node - linkType: hard - -"readable-stream@npm:^2.3.8": - version: 2.3.8 - resolution: "readable-stream@npm:2.3.8" - dependencies: - core-util-is: "npm:~1.0.0" - inherits: "npm:~2.0.3" - isarray: "npm:~1.0.0" - process-nextick-args: "npm:~2.0.0" - safe-buffer: "npm:~5.1.1" - string_decoder: "npm:~1.1.1" - util-deprecate: "npm:~1.0.1" - checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa - languageName: node - linkType: hard - -"readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0": - version: 3.6.2 - resolution: "readable-stream@npm:3.6.2" - dependencies: - inherits: "npm:^2.0.3" - string_decoder: "npm:^1.1.1" - util-deprecate: "npm:^1.0.1" - checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: "npm:^2.2.1" - checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b - languageName: node - linkType: hard - -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 - languageName: node - linkType: hard - -"requirejs-config-file@npm:^4.0.0": - version: 4.0.0 - resolution: "requirejs-config-file@npm:4.0.0" - dependencies: - esprima: "npm:^4.0.0" - stringify-object: "npm:^3.2.1" - checksum: 10c0/18ea5b39a63be043c94103e97a880e68a48534cab6a90a202163b9c7935097638f3d6e9b44c28f62541d35cc3e738a6558359b6b21b42c466623b18eccc65635 - languageName: node - linkType: hard - -"requirejs@npm:^2.3.7": - version: 2.3.8 - resolution: "requirejs@npm:2.3.8" - bin: - r.js: bin/r.js - r_js: bin/r.js - checksum: 10c0/84471a69a7f4c8a30974371dd6fc5194fe450e49a55298f2f91ef48c765cfe1babf25b6e92d765c0595ee22bfc40bd1e8cb5e242c2d4e9d2301dfbec459d13a0 - languageName: node - linkType: hard - -"resolve-dependency-path@npm:^4.0.1": - version: 4.0.1 - resolution: "resolve-dependency-path@npm:4.0.1" - checksum: 10c0/55cc696412387d3d2e2d98d3c1e44df661bfcc35ccd8035b61ace3575c7b2704ef55c75f4409fba99049f9fa70fc7b9c5f896a5d893f4548d376d33445addd9b - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 - languageName: node - linkType: hard - -"resolve@npm:^1.22.10": - version: 1.22.11 - resolution: "resolve@npm:1.22.11" - dependencies: - is-core-module: "npm:^2.16.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/f657191507530f2cbecb5815b1ee99b20741ea6ee02a59c57028e9ec4c2c8d7681afcc35febbd554ac0ded459db6f2d8153382c53a2f266cee2575e512674409 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.22.10#optional!builtin": - version: 1.22.11 - resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.16.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/ee5b182f2e37cb1165465e58c6abc797fec0a80b5ba3231607beb4677db0c9291ac010c47cf092b6daa2b7f518d69a0e21888e7e2b633f68d501a874212a8c63 - languageName: node - linkType: hard - -"restore-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "restore-cursor@npm:3.1.0" - dependencies: - onetime: "npm:^5.1.0" - signal-exit: "npm:^3.0.2" - checksum: 10c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe - languageName: node - linkType: hard - -"reusify@npm:^1.0.4": - version: 1.1.0 - resolution: "reusify@npm:1.1.0" - checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa - languageName: node - linkType: hard - -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: "npm:^7.1.3" - bin: - rimraf: bin.js - checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 - languageName: node - linkType: hard - -"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1, ripemd160@npm:^2.0.3": - version: 2.0.3 - resolution: "ripemd160@npm:2.0.3" - dependencies: - hash-base: "npm:^3.1.2" - inherits: "npm:^2.0.4" - checksum: 10c0/3f472fb453241cfe692a77349accafca38dbcdc9d96d5848c088b2932ba41eb968630ecff7b175d291c7487a4945aee5a81e30c064d1f94e36070f7e0c37ed6c - languageName: node - linkType: hard - -"rpc-websockets@npm:^9.0.2": - version: 9.3.2 - resolution: "rpc-websockets@npm:9.3.2" - dependencies: - "@swc/helpers": "npm:^0.5.11" - "@types/uuid": "npm:^8.3.4" - "@types/ws": "npm:^8.2.2" - buffer: "npm:^6.0.3" - bufferutil: "npm:^4.0.1" - eventemitter3: "npm:^5.0.1" - utf-8-validate: "npm:^5.0.2" - uuid: "npm:^8.3.2" - ws: "npm:^8.5.0" - dependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10c0/f0fed4076ae6edf116d5b3378a83acab0c5b066dbd2731b9a91d71afcc669e35b4fa2889512df522a80fa0a8ac1f8182bd253d601aef82ec1ffb05c9ffab1b59 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: "npm:^1.2.2" - checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 - languageName: node - linkType: hard - -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 - languageName: node - linkType: hard - -"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 - languageName: node - linkType: hard - -"safe-regex-test@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex-test@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - is-regex: "npm:^1.2.1" - checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 - languageName: node - linkType: hard - -"sass-lookup@npm:^6.1.0": - version: 6.1.0 - resolution: "sass-lookup@npm:6.1.0" - dependencies: - commander: "npm:^12.1.0" - enhanced-resolve: "npm:^5.18.0" - bin: - sass-lookup: bin/cli.js - checksum: 10c0/a4b774554fea5d234603d0ba96f5e79cc6c32182a0c55f9a8333c8ee13bb0e6146bd3fc1299b2fe8b2a56551ff5df1f66ef55b858042a0001efd027e4de26fdf - languageName: node - linkType: hard - -"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.4, semver@npm:^7.7.3": - version: 7.7.3 - resolution: "semver@npm:7.7.3" - bin: - semver: bin/semver.js - checksum: 10c0/4afe5c986567db82f44c8c6faef8fe9df2a9b1d98098fc1721f57c696c4c21cebd572f297fc21002f81889492345b8470473bc6f4aff5fb032a6ea59ea2bc45e - languageName: node - linkType: hard - -"serialize-javascript@npm:^6.0.2": - version: 6.0.2 - resolution: "serialize-javascript@npm:6.0.2" - dependencies: - randombytes: "npm:^2.1.0" - checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 - languageName: node - linkType: hard - -"set-function-length@npm:^1.2.2": - version: 1.2.2 - resolution: "set-function-length@npm:1.2.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c - languageName: node - linkType: hard - -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.12, sha.js@npm:^2.4.8": - version: 2.4.12 - resolution: "sha.js@npm:2.4.12" - dependencies: - inherits: "npm:^2.0.4" - safe-buffer: "npm:^5.2.1" - to-buffer: "npm:^1.2.0" - bin: - sha.js: bin.js - checksum: 10c0/9d36bdd76202c8116abbe152a00055ccd8a0099cb28fc17c01fa7bb2c8cffb9ca60e2ab0fe5f274ed6c45dc2633d8c39cf7ab050306c231904512ba9da4d8ab1 - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: "npm:^3.0.0" - checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.2": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 - languageName: node - linkType: hard - -"sinon@npm:18.0.1": - version: 18.0.1 - resolution: "sinon@npm:18.0.1" - dependencies: - "@sinonjs/commons": "npm:^3.0.1" - "@sinonjs/fake-timers": "npm:11.2.2" - "@sinonjs/samsam": "npm:^8.0.0" - diff: "npm:^5.2.0" - nise: "npm:^6.0.0" - supports-color: "npm:^7" - checksum: 10c0/c4554b8d9654d42fc4baefecd3b5ac42bcce73ad926d58521233d9c355dc2c1a0d73c55e5b2c929b6814e528cd9b54bc61096b9288579f9b284edd6e3d2da3df - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 - languageName: node - linkType: hard - -"snake-case@npm:^3.0.4": - version: 3.0.4 - resolution: "snake-case@npm:3.0.4" - dependencies: - dot-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 10c0/ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^8.0.3": - version: 8.0.5 - resolution: "socks-proxy-agent@npm:8.0.5" - dependencies: - agent-base: "npm:^7.1.2" - debug: "npm:^4.3.4" - socks: "npm:^2.8.3" - checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 - languageName: node - linkType: hard - -"socks@npm:^2.8.3": - version: 2.8.7 - resolution: "socks@npm:2.8.7" - dependencies: - ip-address: "npm:^10.0.1" - smart-buffer: "npm:^4.2.0" - checksum: 10c0/2805a43a1c4bcf9ebf6e018268d87b32b32b06fbbc1f9282573583acc155860dc361500f89c73bfbb157caa1b4ac78059eac0ef15d1811eb0ca75e0bdadbc9d2 - languageName: node - linkType: hard - -"solana-bankrun-darwin-arm64@npm:0.3.1": - version: 0.3.1 - resolution: "solana-bankrun-darwin-arm64@npm:0.3.1" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"solana-bankrun-darwin-universal@npm:0.3.1": - version: 0.3.1 - resolution: "solana-bankrun-darwin-universal@npm:0.3.1" - conditions: os=darwin - languageName: node - linkType: hard - -"solana-bankrun-darwin-x64@npm:0.3.1": - version: 0.3.1 - resolution: "solana-bankrun-darwin-x64@npm:0.3.1" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"solana-bankrun-linux-x64-gnu@npm:0.3.1": - version: 0.3.1 - resolution: "solana-bankrun-linux-x64-gnu@npm:0.3.1" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"solana-bankrun-linux-x64-musl@npm:0.3.1": - version: 0.3.1 - resolution: "solana-bankrun-linux-x64-musl@npm:0.3.1" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"solana-bankrun@npm:0.3.1": - version: 0.3.1 - resolution: "solana-bankrun@npm:0.3.1" - dependencies: - "@solana/web3.js": "npm:^1.68.0" - bs58: "npm:^4.0.1" - solana-bankrun-darwin-arm64: "npm:0.3.1" - solana-bankrun-darwin-universal: "npm:0.3.1" - solana-bankrun-darwin-x64: "npm:0.3.1" - solana-bankrun-linux-x64-gnu: "npm:0.3.1" - solana-bankrun-linux-x64-musl: "npm:0.3.1" - dependenciesMeta: - solana-bankrun-darwin-arm64: - optional: true - solana-bankrun-darwin-universal: - optional: true - solana-bankrun-darwin-x64: - optional: true - solana-bankrun-linux-x64-gnu: - optional: true - solana-bankrun-linux-x64-musl: - optional: true - checksum: 10c0/bc63b7e01a7c2d15076fe755fb7ff4e45f644f6a0e0fc8ecb17d57933b24e7505aaf3e8c67cdab7d696f2ef8bd2e7322e29665ace87802893c082322e52ceda2 - languageName: node - linkType: hard - -"source-map-js@npm:^1.2.1": - version: 1.2.1 - resolution: "source-map-js@npm:1.2.1" - checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf - languageName: node - linkType: hard - -"source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 - languageName: node - linkType: hard - -"spok@npm:^1.4.3": - version: 1.5.5 - resolution: "spok@npm:1.5.5" - dependencies: - ansicolors: "npm:~0.3.2" - find-process: "npm:^1.4.7" - checksum: 10c0/3725c69833f81b126e32444d16dc4a25cdda54353121593a5342a4a6b4f152eecadafe19c74936f67a8a0443d2f330bcfd8b492a075a6e7b96429a619f813f33 - languageName: node - linkType: hard - -"ssri@npm:^13.0.0": - version: 13.0.0 - resolution: "ssri@npm:13.0.0" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/405f3a531cd98b013cecb355d63555dca42fd12c7bc6671738aaa9a82882ff41cdf0ef9a2b734ca4f9a760338f114c29d01d9238a65db3ccac27929bd6e6d4b2 - languageName: node - linkType: hard - -"stack-utils@npm:^2.0.3": - version: 2.0.6 - resolution: "stack-utils@npm:2.0.6" - dependencies: - escape-string-regexp: "npm:^2.0.0" - checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a - languageName: node - linkType: hard - -"stream-browserify@npm:^3.0.0": - version: 3.0.0 - resolution: "stream-browserify@npm:3.0.0" - dependencies: - inherits: "npm:~2.0.4" - readable-stream: "npm:^3.5.0" - checksum: 10c0/ec3b975a4e0aa4b3dc5e70ffae3fc8fd29ac725353a14e72f213dff477b00330140ad014b163a8cbb9922dfe90803f81a5ea2b269e1bbfd8bd71511b88f889ad - languageName: node - linkType: hard - -"stream-chain@npm:^2.2.5": - version: 2.2.5 - resolution: "stream-chain@npm:2.2.5" - checksum: 10c0/c512f50190d7c92d688fa64e7af540c51b661f9c2b775fc72bca38ea9bca515c64c22c2197b1be463741daacbaaa2dde8a8ea24ebda46f08391224f15249121a - languageName: node - linkType: hard - -"stream-json@npm:^1.9.1": - version: 1.9.1 - resolution: "stream-json@npm:1.9.1" - dependencies: - stream-chain: "npm:^2.2.5" - checksum: 10c0/0521e5cb3fb6b0e2561d715975e891bd81fa77d0239c8d0b1756846392bc3c7cdd7f1ddb0fe7ed77e6fdef58daab9e665d3b39f7d677bd0859e65a2bff59b92c - languageName: node - linkType: hard - -"stream-to-array@npm:^2.3.0": - version: 2.3.0 - resolution: "stream-to-array@npm:2.3.0" - dependencies: - any-promise: "npm:^1.1.0" - checksum: 10c0/19d66e4e3c12e0aadd8755027edf7d90b696bd978eec5111a5cd2b67befa8851afd8c1b618121c3059850165c4ee4afc307f84869cf6db7fb24708d3523958f8 - languageName: node - linkType: hard - -"strict-event-emitter-types@npm:2.0.0": - version: 2.0.0 - resolution: "strict-event-emitter-types@npm:2.0.0" - checksum: 10c0/7a2985b81908c2a7d1de10afe3be1de3423b8ce6188dc32aeb3dbaf66d4ac3f11029d6931c67d972a3bb976bbd04d27ee090eeed1cbd089c5ba3e899a04ed1b7 - languageName: node - linkType: hard - -"string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: "npm:^8.0.0" - is-fullwidth-code-point: "npm:^3.0.0" - strip-ansi: "npm:^6.0.1" - checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b - languageName: node - linkType: hard - -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: "npm:~5.2.0" - checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: "npm:~5.1.0" - checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e - languageName: node - linkType: hard - -"stringify-object@npm:^3.2.1": - version: 3.3.0 - resolution: "stringify-object@npm:3.3.0" - dependencies: - get-own-enumerable-property-symbols: "npm:^3.0.0" - is-obj: "npm:^1.0.1" - is-regexp: "npm:^1.0.0" - checksum: 10c0/ba8078f84128979ee24b3de9a083489cbd3c62cb8572a061b47d4d82601a8ae4b4d86fa8c54dd955593da56bb7c16a6de51c27221fdc6b7139bb4f29d815f35b - languageName: node - linkType: hard - -"strip-ansi@npm:6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: "npm:^5.0.1" - checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 - languageName: node - linkType: hard - -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd - languageName: node - linkType: hard - -"strip-json-comments@npm:~2.0.1": - version: 2.0.1 - resolution: "strip-json-comments@npm:2.0.1" - checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 - languageName: node - linkType: hard - -"stylus-lookup@npm:^6.1.0": - version: 6.1.0 - resolution: "stylus-lookup@npm:6.1.0" - dependencies: - commander: "npm:^12.1.0" - bin: - stylus-lookup: bin/cli.js - checksum: 10c0/1b5868a6709fbd5597985d89bc265cb85ac03e456c6ecdf4342506b0082094b7bae7030ffbb04d5b13ce44bbdce66db4594bdd4c766817b4a0d32c9fcc42bdcd - languageName: node - linkType: hard - -"superstruct@npm:^0.15.4": - version: 0.15.5 - resolution: "superstruct@npm:0.15.5" - checksum: 10c0/73ae2043443dcc7868da6e8b4e4895410c79a88e021b514c665161199675ee920d5eadd85bb9dee5a9f515817e62f4b65a67ccb82d29f73259d012afcbcd3ce4 - languageName: node - linkType: hard - -"superstruct@npm:^2.0.2": - version: 2.0.2 - resolution: "superstruct@npm:2.0.2" - checksum: 10c0/c6853db5240b4920f47b3c864dd1e23ede6819ea399ad29a65387d746374f6958c5f1c5b7e5bb152d9db117a74973e5005056d9bb83c24e26f18ec6bfae4a718 - languageName: node - linkType: hard - -"supports-color@npm:7.2.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 - languageName: node - linkType: hard - -"tapable@npm:^2.2.0": - version: 2.3.0 - resolution: "tapable@npm:2.3.0" - checksum: 10c0/cb9d67cc2c6a74dedc812ef3085d9d681edd2c1fa18e4aef57a3c0605fdbe44e6b8ea00bd9ef21bc74dd45314e39d31227aa031ebf2f5e38164df514136f2681 - languageName: node - linkType: hard - -"tar@npm:^7.5.2": - version: 7.5.2 - resolution: "tar@npm:7.5.2" - dependencies: - "@isaacs/fs-minipass": "npm:^4.0.0" - chownr: "npm:^3.0.0" - minipass: "npm:^7.1.2" - minizlib: "npm:^3.1.0" - yallist: "npm:^5.0.0" - checksum: 10c0/a7d8b801139b52f93a7e34830db0de54c5aa45487c7cb551f6f3d44a112c67f1cb8ffdae856b05fd4f17b1749911f1c26f1e3a23bbe0279e17fd96077f13f467 - languageName: node - linkType: hard - -"text-encoding-utf-8@npm:^1.0.2": - version: 1.0.2 - resolution: "text-encoding-utf-8@npm:1.0.2" - checksum: 10c0/87a64b394c850e8387c2ca7fc6929a26ce97fb598f1c55cd0fdaec4b8e2c3ed6770f65b2f3309c9175ef64ac5e403c8e48b53ceeb86d2897940c5e19cc00bb99 - languageName: node - linkType: hard - -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c - languageName: node - linkType: hard - -"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15": - version: 0.2.15 - resolution: "tinyglobby@npm:0.2.15" - dependencies: - fdir: "npm:^6.5.0" - picomatch: "npm:^4.0.3" - checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 - languageName: node - linkType: hard - -"to-buffer@npm:^1.2.0, to-buffer@npm:^1.2.1, to-buffer@npm:^1.2.2": - version: 1.2.2 - resolution: "to-buffer@npm:1.2.2" - dependencies: - isarray: "npm:^2.0.5" - safe-buffer: "npm:^5.2.1" - typed-array-buffer: "npm:^1.0.3" - checksum: 10c0/56bc56352f14a2c4a0ab6277c5fc19b51e9534882b98eb068b39e14146591e62fa5b06bf70f7fed1626230463d7e60dca81e815096656e5e01c195c593873d12 - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: "npm:^7.0.0" - checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 - languageName: node - linkType: hard - -"toml@npm:^3.0.0": - version: 3.0.0 - resolution: "toml@npm:3.0.0" - checksum: 10c0/8d7ed3e700ca602e5419fca343e1c595eb7aa177745141f0761a5b20874b58ee5c878cd045c408da9d130cb2b611c639912210ba96ce2f78e443569aa8060c18 - languageName: node - linkType: hard - -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 - languageName: node - linkType: hard - -"traverse-chain@npm:~0.1.0": - version: 0.1.0 - resolution: "traverse-chain@npm:0.1.0" - checksum: 10c0/2b4fc19b52692c4970a18a777ba19ecbc1664f25b33815a5e5f06d0311e9e6a65ad2511b86e4ff0f0211ca0bf242a8ec3a902d8893c9d6a8f9d3ef4e658e2b24 - languageName: node - linkType: hard - -"ts-api-utils@npm:^1.0.1": - version: 1.4.3 - resolution: "ts-api-utils@npm:1.4.3" - peerDependencies: - typescript: ">=4.2.0" - checksum: 10c0/e65dc6e7e8141140c23e1dc94984bf995d4f6801919c71d6dc27cf0cd51b100a91ffcfe5217626193e5bea9d46831e8586febdc7e172df3f1091a7384299e23a - languageName: node - linkType: hard - -"ts-api-utils@npm:^2.4.0": - version: 2.4.0 - resolution: "ts-api-utils@npm:2.4.0" - peerDependencies: - typescript: ">=4.8.4" - checksum: 10c0/ed185861aef4e7124366a3f6561113557a57504267d4d452a51e0ba516a9b6e713b56b4aeaab9fa13de9db9ab755c65c8c13a777dba9133c214632cb7b65c083 - languageName: node - linkType: hard - -"ts-graphviz@npm:^2.1.2": - version: 2.1.6 - resolution: "ts-graphviz@npm:2.1.6" - dependencies: - "@ts-graphviz/adapter": "npm:^2.0.6" - "@ts-graphviz/ast": "npm:^2.0.7" - "@ts-graphviz/common": "npm:^2.1.5" - "@ts-graphviz/core": "npm:^2.0.7" - checksum: 10c0/ecc3d1f75d067b846bad332954e96652eeeccd53be82eef83065e9fad7568a656ed936f23932fe131d8ea0f88ecdf38cb19ca5cb753e081d6d79848a2fa80088 - languageName: node - linkType: hard - -"ts-log@npm:^2.2.7": - version: 2.2.7 - resolution: "ts-log@npm:2.2.7" - checksum: 10c0/2c63a7ccdea6dad774f51ba031d9b8d7242833733a1122e20be7e2817556f8e5691bd589860940068073c3859f8cdd8b99e2f65934b95a3552e97a60066ea7f3 - languageName: node - linkType: hard - -"ts-node@npm:10.9.2": - version: 10.9.2 - resolution: "ts-node@npm:10.9.2" - dependencies: - "@cspotcode/source-map-support": "npm:^0.8.0" - "@tsconfig/node10": "npm:^1.0.7" - "@tsconfig/node12": "npm:^1.0.7" - "@tsconfig/node14": "npm:^1.0.0" - "@tsconfig/node16": "npm:^1.0.2" - acorn: "npm:^8.4.1" - acorn-walk: "npm:^8.1.1" - arg: "npm:^4.1.0" - create-require: "npm:^1.1.0" - diff: "npm:^4.0.1" - make-error: "npm:^1.1.1" - v8-compile-cache-lib: "npm:^3.0.1" - yn: "npm:3.1.1" - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - bin: - ts-node: dist/bin.js - ts-node-cwd: dist/bin-cwd.js - ts-node-esm: dist/bin-esm.js - ts-node-script: dist/bin-script.js - ts-node-transpile-only: dist/bin-transpile.js - ts-script: dist/bin-script-deprecated.js - checksum: 10c0/5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2 - languageName: node - linkType: hard - -"tsconfig-paths@npm:^4.2.0": - version: 4.2.0 - resolution: "tsconfig-paths@npm:4.2.0" - dependencies: - json5: "npm:^2.2.2" - minimist: "npm:^1.2.6" - strip-bom: "npm:^3.0.0" - checksum: 10c0/09a5877402d082bb1134930c10249edeebc0211f36150c35e1c542e5b91f1047b1ccf7da1e59babca1ef1f014c525510f4f870de7c9bda470c73bb4e2721b3ea - languageName: node - linkType: hard - -"tslib@npm:^2.0.3, tslib@npm:^2.8.0": - version: 2.8.1 - resolution: "tslib@npm:2.8.1" - checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 - languageName: node - linkType: hard - -"tweetnacl-util@npm:0.15.1": - version: 0.15.1 - resolution: "tweetnacl-util@npm:0.15.1" - checksum: 10c0/796fad76238e40e853dff79516406a27b41549bfd6fabf4ba89d87ca31acf232122f825daf955db8c8573cc98190d7a6d39ece9ed8ae0163370878c310650a80 - languageName: node - linkType: hard - -"tweetnacl@npm:1.0.3": - version: 1.0.3 - resolution: "tweetnacl@npm:1.0.3" - checksum: 10c0/069d9df51e8ad4a89fbe6f9806c68e06c65be3c7d42f0701cc43dba5f0d6064686b238bbff206c5addef8854e3ce00c643bff59432ea2f2c639feab0ee1a93f9 - languageName: node - linkType: hard - -"type-check@npm:^0.4.0, type-check@npm:~0.4.0": - version: 0.4.0 - resolution: "type-check@npm:0.4.0" - dependencies: - prelude-ls: "npm:^1.2.1" - checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 - languageName: node - linkType: hard - -"type-detect@npm:4.0.8": - version: 4.0.8 - resolution: "type-detect@npm:4.0.8" - checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd - languageName: node - linkType: hard - -"type-detect@npm:^4.0.0, type-detect@npm:^4.1.0": - version: 4.1.0 - resolution: "type-detect@npm:4.1.0" - checksum: 10c0/df8157ca3f5d311edc22885abc134e18ff8ffbc93d6a9848af5b682730ca6a5a44499259750197250479c5331a8a75b5537529df5ec410622041650a7f293e2a - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 - languageName: node - linkType: hard - -"typed-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-buffer@npm:1.0.3" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 - languageName: node - linkType: hard - -"typescript@npm:5.4.5": - version: 5.4.5 - resolution: "typescript@npm:5.4.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/2954022ada340fd3d6a9e2b8e534f65d57c92d5f3989a263754a78aba549f7e6529acc1921913560a4b816c46dce7df4a4d29f9f11a3dc0d4213bb76d043251e - languageName: node - linkType: hard - -"typescript@npm:^5.7.3, typescript@npm:^5.8.3": - version: 5.9.3 - resolution: "typescript@npm:5.9.3" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5 - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A5.4.5#optional!builtin": - version: 5.4.5 - resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/db2ad2a16ca829f50427eeb1da155e7a45e598eec7b086d8b4e8ba44e5a235f758e606d681c66992230d3fc3b8995865e5fd0b22a2c95486d0b3200f83072ec9 - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A^5.7.3#optional!builtin, typescript@patch:typescript@npm%3A^5.8.3#optional!builtin": - version: 5.9.3 - resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=cef18b" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/6f7e53bf0d9702350deeb6f35e08b69cbc8b958c33e0ec77bdc0ad6a6c8e280f3959dcbfde6f5b0848bece57810696489deaaa53d75de3578ff255d168c1efbd - languageName: node - linkType: hard - -"undici-types@npm:^7.11.0": - version: 7.18.2 - resolution: "undici-types@npm:7.18.2" - checksum: 10c0/85a79189113a238959d7a647368e4f7c5559c3a404ebdb8fc4488145ce9426fcd82252a844a302798dfc0e37e6fb178ff481ed03bc4caf634c5757d9ef43521d - languageName: node - linkType: hard - -"undici-types@npm:~5.26.4": - version: 5.26.5 - resolution: "undici-types@npm:5.26.5" - checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 - languageName: node - linkType: hard - -"undici-types@npm:~7.16.0": - version: 7.16.0 - resolution: "undici-types@npm:7.16.0" - checksum: 10c0/3033e2f2b5c9f1504bdc5934646cb54e37ecaca0f9249c983f7b1fc2e87c6d18399ebb05dc7fd5419e02b2e915f734d872a65da2e3eeed1813951c427d33cc9a - languageName: node - linkType: hard - -"unique-filename@npm:^5.0.0": - version: 5.0.0 - resolution: "unique-filename@npm:5.0.0" - dependencies: - unique-slug: "npm:^6.0.0" - checksum: 10c0/afb897e9cf4c2fb622ea716f7c2bb462001928fc5f437972213afdf1cc32101a230c0f1e9d96fc91ee5185eca0f2feb34127145874975f347be52eb91d6ccc2c - languageName: node - linkType: hard - -"unique-slug@npm:^6.0.0": - version: 6.0.0 - resolution: "unique-slug@npm:6.0.0" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 10c0/da7ade4cb04eb33ad0499861f82fe95ce9c7c878b7139dc54d140ecfb6a6541c18a5c8dac16188b8b379fe62c0c1f1b710814baac910cde5f4fec06212126c6a - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: "npm:^2.1.0" - checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c - languageName: node - linkType: hard - -"utf-8-validate@npm:^5.0.2": - version: 5.0.10 - resolution: "utf-8-validate@npm:5.0.10" - dependencies: - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.3.0" - checksum: 10c0/23cd6adc29e6901aa37ff97ce4b81be9238d0023c5e217515b34792f3c3edb01470c3bd6b264096dd73d0b01a1690b57468de3a24167dd83004ff71c51cc025f - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 - languageName: node - linkType: hard - -"util@npm:^0.12.5": - version: 0.12.5 - resolution: "util@npm:0.12.5" - dependencies: - inherits: "npm:^2.0.3" - is-arguments: "npm:^1.0.4" - is-generator-function: "npm:^1.0.7" - is-typed-array: "npm:^1.1.3" - which-typed-array: "npm:^1.1.2" - checksum: 10c0/c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3 - languageName: node - linkType: hard - -"uuid@npm:8.3.2, uuid@npm:^8.3.2": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 - languageName: node - linkType: hard - -"v8-compile-cache-lib@npm:^3.0.1": - version: 3.0.1 - resolution: "v8-compile-cache-lib@npm:3.0.1" - checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 - languageName: node - linkType: hard - -"vm-browserify@npm:^1.1.2": - version: 1.1.2 - resolution: "vm-browserify@npm:1.1.2" - checksum: 10c0/0cc1af6e0d880deb58bc974921320c187f9e0a94f25570fca6b1bd64e798ce454ab87dfd797551b1b0cc1849307421aae0193cedf5f06bdb5680476780ee344b - languageName: node - linkType: hard - -"walkdir@npm:^0.4.1": - version: 0.4.1 - resolution: "walkdir@npm:0.4.1" - checksum: 10c0/88e635aa9303e9196e4dc15013d2bd4afca4c8c8b4bb27722ca042bad213bb882d3b9141b3b0cca6bfb274f7889b30cf58d6374844094abec0016f335c5414dc - languageName: node - linkType: hard - -"wcwidth@npm:^1.0.1": - version: 1.0.1 - resolution: "wcwidth@npm:1.0.1" - dependencies: - defaults: "npm:^1.0.3" - checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 - languageName: node - linkType: hard - -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db - languageName: node - linkType: hard - -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: "npm:~0.0.3" - webidl-conversions: "npm:^3.0.0" - checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.2": - version: 1.1.19 - resolution: "which-typed-array@npm:1.1.19" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - for-each: "npm:^0.3.5" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f - languageName: node - linkType: hard - -"which@npm:^2.0.1": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: "npm:^2.0.0" - bin: - node-which: ./bin/node-which - checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f - languageName: node - linkType: hard - -"which@npm:^6.0.0": - version: 6.0.0 - resolution: "which@npm:6.0.0" - dependencies: - isexe: "npm:^3.1.1" - bin: - node-which: bin/which.js - checksum: 10c0/fe9d6463fe44a76232bb6e3b3181922c87510a5b250a98f1e43a69c99c079b3f42ddeca7e03d3e5f2241bf2d334f5a7657cfa868b97c109f3870625842f4cc15 - languageName: node - linkType: hard - -"word-wrap@npm:^1.2.5": - version: 1.2.5 - resolution: "word-wrap@npm:1.2.5" - checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 - languageName: node - linkType: hard - -"workerpool@npm:^6.5.1": - version: 6.5.1 - resolution: "workerpool@npm:6.5.1" - checksum: 10c0/58e8e969782292cb3a7bfba823f1179a7615250a0cefb4841d5166234db1880a3d0fe83a31dd8d648329ec92c2d0cd1890ad9ec9e53674bb36ca43e9753cdeac - languageName: node - linkType: hard - -"wrap-ansi@npm:7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: "npm:^4.0.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 - languageName: node - linkType: hard - -"ws@npm:^7.5.10": - version: 7.5.10 - resolution: "ws@npm:7.5.10" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10c0/bd7d5f4aaf04fae7960c23dcb6c6375d525e00f795dd20b9385902bd008c40a94d3db3ce97d878acc7573df852056ca546328b27b39f47609f80fb22a0a9b61d - languageName: node - linkType: hard - -"ws@npm:^8.18.0, ws@npm:^8.5.0": - version: 8.19.0 - resolution: "ws@npm:8.19.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10c0/4741d9b9bc3f9c791880882414f96e36b8b254e34d4b503279d6400d9a4b87a033834856dbdd94ee4b637944df17ea8afc4bce0ff4a1560d2166be8855da5b04 - languageName: node - linkType: hard - -"y18n@npm:^5.0.5": - version: 5.0.8 - resolution: "y18n@npm:5.0.8" - checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a - languageName: node - linkType: hard - -"yallist@npm:^5.0.0": - version: 5.0.0 - resolution: "yallist@npm:5.0.0" - checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 - languageName: node - linkType: hard - -"yaml@npm:^2.6.1": - version: 2.8.2 - resolution: "yaml@npm:2.8.2" - bin: - yaml: bin.mjs - checksum: 10c0/703e4dc1e34b324aa66876d63618dcacb9ed49f7e7fe9b70f1e703645be8d640f68ab84f12b86df8ac960bac37acf5513e115de7c970940617ce0343c8c9cd96 - languageName: node - linkType: hard - -"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.9": - version: 20.2.9 - resolution: "yargs-parser@npm:20.2.9" - checksum: 10c0/0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72 - languageName: node - linkType: hard - -"yargs-parser@npm:^21.1.1": - version: 21.1.1 - resolution: "yargs-parser@npm:21.1.1" - checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 - languageName: node - linkType: hard - -"yargs-unparser@npm:^2.0.0": - version: 2.0.0 - resolution: "yargs-unparser@npm:2.0.0" - dependencies: - camelcase: "npm:^6.0.0" - decamelize: "npm:^4.0.0" - flat: "npm:^5.0.2" - is-plain-obj: "npm:^2.1.0" - checksum: 10c0/a5a7d6dc157efa95122e16780c019f40ed91d4af6d2bac066db8194ed0ec5c330abb115daa5a79ff07a9b80b8ea80c925baacf354c4c12edd878c0529927ff03 - languageName: node - linkType: hard - -"yargs@npm:17.7.2, yargs@npm:^17.7.2": - version: 17.7.2 - resolution: "yargs@npm:17.7.2" - dependencies: - cliui: "npm:^8.0.1" - escalade: "npm:^3.1.1" - get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.3" - y18n: "npm:^5.0.5" - yargs-parser: "npm:^21.1.1" - checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 - languageName: node - linkType: hard - -"yargs@npm:^16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" - dependencies: - cliui: "npm:^7.0.2" - escalade: "npm:^3.1.1" - get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.0" - y18n: "npm:^5.0.5" - yargs-parser: "npm:^20.2.2" - checksum: 10c0/b1dbfefa679848442454b60053a6c95d62f2d2e21dd28def92b647587f415969173c6e99a0f3bab4f1b67ee8283bf735ebe3544013f09491186ba9e8a9a2b651 - languageName: node - linkType: hard - -"yn@npm:3.1.1": - version: 3.1.1 - resolution: "yn@npm:3.1.1" - checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f - languageName: node - linkType: hard - -"zod@npm:4.0.17": - version: 4.0.17 - resolution: "zod@npm:4.0.17" - checksum: 10c0/c56ef4cc02f8f52be8724c5a8b338266202d68477c7606bee9b7299818b75c9adc27f16f4b6704a372f3e7578bd016f389de19bfec766564b7c39d0d327c540a - languageName: node - linkType: hard - -"zstddec@npm:0.1.0": - version: 0.1.0 - resolution: "zstddec@npm:0.1.0" - checksum: 10c0/13601cc53211af491cf3a28a49239405e44129c7aba6a0211401d7bf79ee96b4679016a4d3c5e9c01f753e6da806eb40550f12c469580548b695b146a6d8fe1a - languageName: node - linkType: hard + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.30.1.tgz#17f3e9134c28cd0ea83574c6bab4e410bcecec5d" + integrity sha512-gDXFoF5oHgpriXAaLpxyWBHdCs8Awgf/gLHIo6crv7Aqm937CNdY+x+6hoj7QR5vaJV7MxWSQ0NGFzL3kPbWEQ== + dependencies: + "@coral-xyz/anchor-errors" "^0.30.1" + "@coral-xyz/borsh" "^0.30.1" + "@noble/hashes" "^1.3.1" + "@solana/web3.js" "^1.68.0" + bn.js "^5.1.2" + bs58 "^4.0.1" + buffer-layout "^1.2.2" + camelcase "^6.3.0" + cross-fetch "^3.1.5" + crypto-hash "^1.3.0" + eventemitter3 "^4.0.7" + pako "^2.0.3" + snake-case "^3.0.4" + superstruct "^0.15.4" + toml "^3.0.0" + +"@coral-xyz/anchor-errors@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor-errors/-/anchor-errors-0.30.1.tgz#bdfd3a353131345244546876eb4afc0e125bec30" + integrity sha512-9Mkradf5yS5xiLWrl9WrpjqOrAV+/W2RQHDlbnAZBivoGpOs1ECjoDCkVk4aRG8ZdiFiB8zQEVlxf+8fKkmSfQ== + +"@coral-xyz/anchor@0.29.0", "@coral-xyz/anchor@^0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.29.0.tgz#bd0be95bedfb30a381c3e676e5926124c310ff12" + integrity sha512-eny6QNG0WOwqV0zQ7cs/b1tIuzZGmP7U7EcH+ogt4Gdbl8HDmIYVMh/9aTmYZPaFWjtUaI8qSn73uYEXWfATdA== + dependencies: + "@coral-xyz/borsh" "^0.29.0" + "@noble/hashes" "^1.3.1" + "@solana/web3.js" "^1.68.0" + bn.js "^5.1.2" + bs58 "^4.0.1" + buffer-layout "^1.2.2" + camelcase "^6.3.0" + cross-fetch "^3.1.5" + crypto-hash "^1.3.0" + eventemitter3 "^4.0.7" + pako "^2.0.3" + snake-case "^3.0.4" + superstruct "^0.15.4" + toml "^3.0.0" + +"@coral-xyz/borsh@^0.29.0": + version "0.29.0" + resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.29.0.tgz#79f7045df2ef66da8006d47f5399c7190363e71f" + integrity sha512-s7VFVa3a0oqpkuRloWVPdCK7hMbAMY270geZOGfCnaqexrP5dTIpbEHL33req6IYPPJ0hYa71cdvJ1h6V55/oQ== + dependencies: + bn.js "^5.1.2" + buffer-layout "^1.2.0" + +"@coral-xyz/borsh@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@coral-xyz/borsh/-/borsh-0.30.1.tgz#869d8833abe65685c72e9199b8688477a4f6b0e3" + integrity sha512-aaxswpPrCFKl8vZTbxLssA2RvwX2zmKLlRCIktJOwW+VpVwYtXRtlWiIP+c2pPRKneiTiWCN2GEMSH9j1zTlWQ== + dependencies: + bn.js "^5.1.2" + buffer-layout "^1.2.0" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@dependents/detective-less@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@dependents/detective-less/-/detective-less-5.0.1.tgz#e6c5b502f0d26a81da4170c1ccd848a6eaa68470" + integrity sha512-Y6+WUMsTFWE5jb20IFP4YGa5IrGY/+a/FbOSjDF/wz9gepU2hwCYSXRHP/vPwBvwcY3SVMASt4yXxbXNXigmZQ== + dependencies: + gonzales-pe "^4.3.0" + node-source-walk "^7.0.1" + +"@ellipsis-labs/phoenix-sdk@1.4.5": + version "1.4.5" + resolved "https://registry.yarnpkg.com/@ellipsis-labs/phoenix-sdk/-/phoenix-sdk-1.4.5.tgz#42cf8de8463b32c910ab8844eae71ca082a6773a" + integrity sha512-vEYgMXuV5/mpnpEi+VK4HO8f6SheHtVLdHHlULBiDN1eECYmL67gq+/cRV7Ar6jAQ7rJZL7xBxhbUW5kugMl6A== + dependencies: + "@metaplex-foundation/beet" "^0.7.1" + "@metaplex-foundation/rustbin" "^0.3.1" + "@metaplex-foundation/solita" "^0.12.2" + "@solana/spl-token" "^0.3.7" + "@types/node" "^18.11.13" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^5.0.0" + +"@esbuild/aix-ppc64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz#521cbd968dcf362094034947f76fa1b18d2d403c" + integrity sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw== + +"@esbuild/android-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz#61ea550962d8aa12a9b33194394e007657a6df57" + integrity sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA== + +"@esbuild/android-arm@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.27.2.tgz#554887821e009dd6d853f972fde6c5143f1de142" + integrity sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA== + +"@esbuild/android-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.27.2.tgz#a7ce9d0721825fc578f9292a76d9e53334480ba2" + integrity sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A== + +"@esbuild/darwin-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz#2cb7659bd5d109803c593cfc414450d5430c8256" + integrity sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg== + +"@esbuild/darwin-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz#e741fa6b1abb0cd0364126ba34ca17fd5e7bf509" + integrity sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA== + +"@esbuild/freebsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz#2b64e7116865ca172d4ce034114c21f3c93e397c" + integrity sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g== + +"@esbuild/freebsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz#e5252551e66f499e4934efb611812f3820e990bb" + integrity sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA== + +"@esbuild/linux-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz#dc4acf235531cd6984f5d6c3b13dbfb7ddb303cb" + integrity sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw== + +"@esbuild/linux-arm@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz#56a900e39240d7d5d1d273bc053daa295c92e322" + integrity sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw== + +"@esbuild/linux-ia32@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz#d4a36d473360f6870efcd19d52bbfff59a2ed1cc" + integrity sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w== + +"@esbuild/linux-loong64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz#fcf0ab8c3eaaf45891d0195d4961cb18b579716a" + integrity sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg== + +"@esbuild/linux-mips64el@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz#598b67d34048bb7ee1901cb12e2a0a434c381c10" + integrity sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw== + +"@esbuild/linux-ppc64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz#3846c5df6b2016dab9bc95dde26c40f11e43b4c0" + integrity sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ== + +"@esbuild/linux-riscv64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz#173d4475b37c8d2c3e1707e068c174bb3f53d07d" + integrity sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA== + +"@esbuild/linux-s390x@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz#f7a4790105edcab8a5a31df26fbfac1aa3dacfab" + integrity sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w== + +"@esbuild/linux-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz#2ecc1284b1904aeb41e54c9ddc7fcd349b18f650" + integrity sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA== + +"@esbuild/netbsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz#e2863c2cd1501845995cb11adf26f7fe4be527b0" + integrity sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw== + +"@esbuild/netbsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz#93f7609e2885d1c0b5a1417885fba8d1fcc41272" + integrity sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA== + +"@esbuild/openbsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz#a1985604a203cdc325fd47542e106fafd698f02e" + integrity sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA== + +"@esbuild/openbsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz#8209e46c42f1ffbe6e4ef77a32e1f47d404ad42a" + integrity sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg== + +"@esbuild/openharmony-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz#8fade4441893d9cc44cbd7dcf3776f508ab6fb2f" + integrity sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag== + +"@esbuild/sunos-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz#980d4b9703a16f0f07016632424fc6d9a789dfc2" + integrity sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg== + +"@esbuild/win32-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz#1c09a3633c949ead3d808ba37276883e71f6111a" + integrity sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg== + +"@esbuild/win32-ia32@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz#1b1e3a63ad4bef82200fef4e369e0fff7009eee5" + integrity sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ== + +"@esbuild/win32-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz#9e585ab6086bef994c6e8a5b3a0481219ada862b" + integrity sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595" + integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.12.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + +"@grpc/grpc-js@1.14.0": + version "1.14.0" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.14.0.tgz#a3c47e7816ca2b4d5490cba9e06a3cf324e675ad" + integrity sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg== + dependencies: + "@grpc/proto-loader" "^0.8.0" + "@js-sdsl/ordered-map" "^4.4.2" + +"@grpc/grpc-js@^1.8.0": + version "1.14.3" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.14.3.tgz#4c9b817a900ae4020ddc28515ae4b52c78cfb8da" + integrity sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA== + dependencies: + "@grpc/proto-loader" "^0.8.0" + "@js-sdsl/ordered-map" "^4.4.2" + +"@grpc/proto-loader@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.8.0.tgz#b6c324dd909c458a0e4aa9bfd3d69cf78a4b9bd8" + integrity sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ== + dependencies: + lodash.camelcase "^4.3.0" + long "^5.0.0" + protobufjs "^7.5.3" + yargs "^17.7.2" + +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@isaacs/ttlcache@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz#21fb23db34e9b6220c6ba023a0118a2dd3461ea2" + integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== + +"@jest/expect-utils@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" + integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== + dependencies: + jest-get-type "^28.0.2" + +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== + dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + dependencies: + "@jest/schemas" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.5.5": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@js-sdsl/ordered-map@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" + integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== + +"@metaplex-foundation/beet-solana@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet-solana/-/beet-solana-0.3.1.tgz#4b37cda5c7f32ffd2bdd8b3164edc05c6463ab35" + integrity sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g== + dependencies: + "@metaplex-foundation/beet" ">=0.1.0" + "@solana/web3.js" "^1.56.2" + bs58 "^5.0.0" + debug "^4.3.4" + +"@metaplex-foundation/beet@>=0.1.0", "@metaplex-foundation/beet@^0.7.1": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.7.2.tgz#fa4726e4cfd4fb6fed6cddc9b5213c1c2a2d0b77" + integrity sha512-K+g3WhyFxKPc0xIvcIjNyV1eaTVJTiuaHZpig7Xx0MuYRMoJLLvhLTnUXhFdR5Tu2l2QSyKwfyXDgZlzhULqFg== + dependencies: + ansicolors "^0.3.2" + assert "^2.1.0" + bn.js "^5.2.0" + debug "^4.3.3" + +"@metaplex-foundation/beet@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/beet/-/beet-0.4.0.tgz#eb2a0a6eb084bb25d67dd9bed2f7387ee7e63a55" + integrity sha512-2OAKJnLatCc3mBXNL0QmWVQKAWK2C7XDfepgL0p/9+8oSx4bmRAFHFqptl1A/C0U5O3dxGwKfmKluW161OVGcA== + dependencies: + ansicolors "^0.3.2" + bn.js "^5.2.0" + debug "^4.3.3" + +"@metaplex-foundation/rustbin@^0.3.0", "@metaplex-foundation/rustbin@^0.3.1": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/rustbin/-/rustbin-0.3.5.tgz#56d028afd96c2b56ad3bbea22ff454adde900e8c" + integrity sha512-m0wkRBEQB/8krwMwKBvFugufZtYwMXiGHud2cTDAv+aGXK4M90y0Hx67/wpu+AqqoQfdV8VM9YezUOHKD+Z5kA== + dependencies: + debug "^4.3.3" + semver "^7.3.7" + text-table "^0.2.0" + toml "^3.0.0" + +"@metaplex-foundation/solita@^0.12.2": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@metaplex-foundation/solita/-/solita-0.12.2.tgz#13ef213ac183c986f6d01c5d981c44e59a900834" + integrity sha512-oczMfE43NNHWweSqhXPTkQBUbap/aAiwjDQw8zLKNnd/J8sXr/0+rKcN5yJIEgcHeKRkp90eTqkmt2WepQc8yw== + dependencies: + "@metaplex-foundation/beet" "^0.4.0" + "@metaplex-foundation/beet-solana" "^0.3.0" + "@metaplex-foundation/rustbin" "^0.3.0" + "@solana/web3.js" "^1.36.0" + camelcase "^6.2.1" + debug "^4.3.3" + js-sha256 "^0.9.0" + prettier "^2.5.1" + snake-case "^3.0.4" + spok "^1.4.3" + +"@msgpack/msgpack@^3.1.2": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.1.3.tgz#c4bff2b9539faf0882f3ee03537a7e9a4b3a7864" + integrity sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA== + +"@noble/curves@^1.4.2": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/hashes@1.8.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.4.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@openbook-dex/openbook-v2@0.2.10": + version "0.2.10" + resolved "https://registry.yarnpkg.com/@openbook-dex/openbook-v2/-/openbook-v2-0.2.10.tgz#a5cfcd30ce827ecd446b76429a5e41baa23a318c" + integrity sha512-JOroVQHeia+RbghpluDJB5psUIhdhYRPLu0zWoG0h5vgDU4SjXwlcC+LJiIa2HVPasvZjWuCtlKWFyrOS75lOA== + dependencies: + "@coral-xyz/anchor" "^0.29.0" + "@solana/spl-token" "^0.4.0" + "@solana/web3.js" "^1.77.3" + big.js "^6.2.1" + +"@project-serum/anchor@^0.11.1": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.11.1.tgz#155bff2c70652eafdcfd5559c81a83bb19cec9ff" + integrity sha512-oIdm4vTJkUy6GmE6JgqDAuQPKI7XM4TPJkjtoIzp69RZe0iAD9JP2XHx7lV1jLdYXeYHqDXfBt3zcq7W91K6PA== + dependencies: + "@project-serum/borsh" "^0.2.2" + "@solana/web3.js" "^1.17.0" + base64-js "^1.5.1" + bn.js "^5.1.2" + bs58 "^4.0.1" + buffer-layout "^1.2.0" + camelcase "^5.3.1" + crypto-hash "^1.3.0" + eventemitter3 "^4.0.7" + find "^0.3.0" + js-sha256 "^0.9.0" + pako "^2.0.3" + snake-case "^3.0.4" + toml "^3.0.0" + +"@project-serum/borsh@^0.2.2": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@project-serum/borsh/-/borsh-0.2.5.tgz#6059287aa624ecebbfc0edd35e4c28ff987d8663" + integrity sha512-UmeUkUoKdQ7rhx6Leve1SssMR/Ghv8qrEiyywyxSWg7ooV7StdpPBhciiy5eB3T0qU1BXvdRNC8TdrkxK7WC5Q== + dependencies: + bn.js "^5.1.2" + buffer-layout "^1.2.0" + +"@project-serum/serum@0.13.65": + version "0.13.65" + resolved "https://registry.yarnpkg.com/@project-serum/serum/-/serum-0.13.65.tgz#6d3cf07912f13985765237f053cca716fe84b0b0" + integrity sha512-BHRqsTqPSfFB5p+MgI2pjvMBAQtO8ibTK2fYY96boIFkCI3TTwXDt2gUmspeChKO2pqHr5aKevmexzAcXxrSRA== + dependencies: + "@project-serum/anchor" "^0.11.1" + "@solana/spl-token" "^0.1.6" + "@solana/web3.js" "^1.21.0" + bn.js "^5.1.2" + buffer-layout "^1.2.0" + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@pythnetwork/client@2.5.3": + version "2.5.3" + resolved "https://registry.yarnpkg.com/@pythnetwork/client/-/client-2.5.3.tgz#86c9f92d01d8f282fdd8b5b11039da654e263988" + integrity sha512-NBLxPnA6A3tZb/DYUooD4SO63UJ70s9DzzFPGXcQNBR9itcycp7aaV+UA5oUPloD/4UHL9soo2fRuDVur0gmhA== + dependencies: + "@solana/web3.js" "^1.30.2" + assert "^2.0.0" + buffer "^6.0.1" + +"@pythnetwork/price-service-sdk@1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@pythnetwork/price-service-sdk/-/price-service-sdk-1.7.1.tgz#dbfc8a8c2189f526346c1f79ec3995e89b690700" + integrity sha512-xr2boVXTyv1KUt/c6llUTfbv2jpud99pWlMJbFaHGUBoygQsByuy7WbjIJKZ+0Blg1itLZl0Lp/pJGGg8SdJoQ== + dependencies: + bn.js "^5.2.1" + +"@pythnetwork/pyth-lazer-sdk@5.2.1": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@pythnetwork/pyth-lazer-sdk/-/pyth-lazer-sdk-5.2.1.tgz#7a35573f30c214c6e3014dcffbdec0053b3f7116" + integrity sha512-/0rrPi6sZdVH+cWtW+X/hmQzw+nP2fIF6BlrJRTrqwK2IXWZWW+40sHoj839HrbyUXOJyG9zKyco37eFuTE/nA== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + buffer "^6.0.3" + isomorphic-ws "^5.0.0" + ts-log "^2.2.7" + ws "^8.18.0" + +"@sinclair/typebox@^0.24.1": + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== + +"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@11.2.2": + version "11.2.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" + integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sinonjs/fake-timers@^13.0.1": + version "13.0.5" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" + integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== + dependencies: + "@sinonjs/commons" "^3.0.1" + +"@sinonjs/samsam@^8.0.0": + version "8.0.3" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.3.tgz#eb6ffaef421e1e27783cc9b52567de20cb28072d" + integrity sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ== + dependencies: + "@sinonjs/commons" "^3.0.1" + type-detect "^4.1.0" + +"@sinonjs/text-encoding@^0.7.3": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz#282046f03e886e352b2d5f5da5eb755e01457f3f" + integrity sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA== + +"@solana-program/address-lookup-table@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@solana-program/address-lookup-table/-/address-lookup-table-0.7.0.tgz#6651657308547fefb59ce2e20b1871270e93d48d" + integrity sha512-dzCeIO5LtiK3bIg0AwO+TPeGURjSG2BKt0c4FRx7105AgLy7uzTktpUzUj6NXAK9SzbirI8HyvHUvw1uvL8O9A== + +"@solana-program/compute-budget@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@solana-program/compute-budget/-/compute-budget-0.8.0.tgz#0930aca4de1170ed607d64d89375074930aa8b93" + integrity sha512-qPKxdxaEsFxebZ4K5RPuy7VQIm/tfJLa1+Nlt3KNA8EYQkz9Xm8htdoEaXVrer9kpgzzp9R3I3Bh6omwCM06tQ== + +"@solana-program/system@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@solana-program/system/-/system-0.7.0.tgz#3e21c9fb31d3795eb65ba5cb663947c19b305bad" + integrity sha512-FKTBsKHpvHHNc1ATRm7SlC5nF/VdJtOSjldhcyfMN9R7xo712Mo2jHIzvBgn8zQO5Kg0DcWuKB7268Kv1ocicw== + +"@solana-program/token-2022@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@solana-program/token-2022/-/token-2022-0.4.2.tgz#f90a638de82acb7933a114e884a24ac4be8ef635" + integrity sha512-zIpR5t4s9qEU3hZKupzIBxJ6nUV5/UVyIT400tu9vT1HMs5JHxaTTsb5GUhYjiiTvNwU0MQavbwc4Dl29L0Xvw== + +"@solana/accounts@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/accounts/-/accounts-2.3.0.tgz#957360edd572c1294772ee0eae3abd598189b16e" + integrity sha512-QgQTj404Z6PXNOyzaOpSzjgMOuGwG8vC66jSDB+3zHaRcEPRVRd2sVSrd1U6sHtnV3aiaS6YyDuPQMheg4K2jw== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/rpc-spec" "2.3.0" + "@solana/rpc-types" "2.3.0" + +"@solana/addresses@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/addresses/-/addresses-2.3.0.tgz#d89cba142819f01905a4bf30a1b990a1b55e490d" + integrity sha512-ypTNkY2ZaRFpHLnHAgaW8a83N0/WoqdFvCqf4CQmnMdFsZSdC7qOwcbd7YzdaQn9dy+P2hybewzB+KP7LutxGA== + dependencies: + "@solana/assertions" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/nominal-types" "2.3.0" + +"@solana/assertions@2.3.0", "@solana/assertions@^2.1.1": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-2.3.0.tgz#f96f655088dea6fe9f79604da7615c745c64173b" + integrity sha512-Ekoet3khNg3XFLN7MIz8W31wPQISpKUGDGTylLptI+JjCDWx3PIa88xjEMqFo02WJ8sBj2NLV64Xg1sBcsHjZQ== + dependencies: + "@solana/errors" "2.3.0" + +"@solana/buffer-layout-utils@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" + integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/web3.js" "^1.32.0" + bigint-buffer "^1.1.5" + bignumber.js "^9.0.1" + +"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/codecs-core@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.4.tgz#770826105f2f884110a21662573e7a2014654324" + integrity sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw== + dependencies: + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-core@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-rc.1.tgz#1a2d76b9c7b9e7b7aeb3bd78be81c2ba21e3ce22" + integrity sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ== + dependencies: + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-core@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.3.0.tgz#6bf2bb565cb1ae880f8018635c92f751465d8695" + integrity sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw== + dependencies: + "@solana/errors" "2.3.0" + +"@solana/codecs-data-structures@2.0.0-preview.4", "@solana/codecs-data-structures@2.0.0-rc.1", "@solana/codecs-data-structures@2.3.0": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.4.tgz#f8a2470982a9792334737ea64000ccbdff287247" + integrity sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-numbers@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.4.tgz#6a53b456bb7866f252d8c032c81a92651e150f66" + integrity sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-numbers@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-rc.1.tgz#f34978ddf7ea4016af3aaed5f7577c1d9869a614" + integrity sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-numbers@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz#ac7e7f38aaf7fcd22ce2061fbdcd625e73828dc6" + integrity sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg== + dependencies: + "@solana/codecs-core" "2.3.0" + "@solana/errors" "2.3.0" + +"@solana/codecs-strings@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz#e1d9167075b8c5b0b60849f8add69c0f24307018" + integrity sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-strings@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.3.0.tgz#1b3a855dcd260283a732060aa6220f78b41251ae" + integrity sha512-y5pSBYwzVziXu521hh+VxqUtp0hYGTl1eWGoc1W+8mdvBdC1kTqm/X7aYQw33J42hw03JjryvYOvmGgk3Qz/Ug== + dependencies: + "@solana/codecs-core" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/errors" "2.3.0" + +"@solana/codecs@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-rc.1.tgz#146dc5db58bd3c28e04b4c805e6096c2d2a0a875" + integrity sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-data-structures" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/codecs-strings" "2.0.0-rc.1" + "@solana/options" "2.0.0-rc.1" + +"@solana/codecs@2.3.0", "@solana/codecs@^2.1.1": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.3.0.tgz#75ea5811e2792d7344409b83ffbfd1d096292e36" + integrity sha512-JVqGPkzoeyU262hJGdH64kNLH0M+Oew2CIPOa/9tR3++q2pEd4jU2Rxdfye9sd0Ce3XJrR5AIa8ZfbyQXzjh+g== + dependencies: + "@solana/codecs-core" "2.3.0" + "@solana/codecs-data-structures" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/options" "2.3.0" + +"@solana/errors@2.0.0-preview.4", "@solana/errors@2.0.0-rc.1", "@solana/errors@2.3.0": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.4.tgz#056ba76b6dd900dafa70117311bec3aef0f5250b" + integrity sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA== + dependencies: + chalk "^5.3.0" + commander "^12.1.0" + +"@solana/fast-stable-stringify@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/fast-stable-stringify/-/fast-stable-stringify-2.3.0.tgz#723b94e373952bad4549bdd2318f79f46313d85a" + integrity sha512-KfJPrMEieUg6D3hfQACoPy0ukrAV8Kio883llt/8chPEG3FVTX9z/Zuf4O01a15xZmBbmQ7toil2Dp0sxMJSxw== + +"@solana/functional@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-2.3.0.tgz#ac33815655e954bb78151446a571bc6c9fd9be28" + integrity sha512-AgsPh3W3tE+nK3eEw/W9qiSfTGwLYEvl0rWaxHht/lRcuDVwfKRzeSa5G79eioWFFqr+pTtoCr3D3OLkwKz02Q== + +"@solana/instructions@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-2.3.0.tgz#ff25cbe545000a33fb3604d83f4e2b683de94ad3" + integrity sha512-PLMsmaIKu7hEAzyElrk2T7JJx4D+9eRwebhFZpy2PXziNSmFF929eRHKUsKqBFM3cYR1Yy3m6roBZfA+bGE/oQ== + dependencies: + "@solana/codecs-core" "2.3.0" + "@solana/errors" "2.3.0" + +"@solana/keys@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-2.3.0.tgz#9d0b0ec09c2789a051b4df1945ed52631261186e" + integrity sha512-ZVVdga79pNH+2pVcm6fr2sWz9HTwfopDVhYb0Lh3dh+WBmJjwkabXEIHey2rUES7NjFa/G7sV8lrUn/v8LDCCQ== + dependencies: + "@solana/assertions" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/nominal-types" "2.3.0" + +"@solana/kit@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/kit/-/kit-2.3.0.tgz#92deb7c4883293617209aecac9a43d5e41ccf092" + integrity sha512-sb6PgwoW2LjE5oTFu4lhlS/cGt/NB3YrShEyx7JgWFWysfgLdJnhwWThgwy/4HjNsmtMrQGWVls0yVBHcMvlMQ== + dependencies: + "@solana/accounts" "2.3.0" + "@solana/addresses" "2.3.0" + "@solana/codecs" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/instructions" "2.3.0" + "@solana/keys" "2.3.0" + "@solana/programs" "2.3.0" + "@solana/rpc" "2.3.0" + "@solana/rpc-parsed-types" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + "@solana/rpc-subscriptions" "2.3.0" + "@solana/rpc-types" "2.3.0" + "@solana/signers" "2.3.0" + "@solana/sysvars" "2.3.0" + "@solana/transaction-confirmation" "2.3.0" + "@solana/transaction-messages" "2.3.0" + "@solana/transactions" "2.3.0" + +"@solana/nominal-types@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/nominal-types/-/nominal-types-2.3.0.tgz#b67637241b4a45c756464e049c7a830880b6e944" + integrity sha512-uKlMnlP4PWW5UTXlhKM8lcgIaNj8dvd8xO4Y9l+FVvh9RvW2TO0GwUO6JCo7JBzCB0PSqRJdWWaQ8pu1Ti/OkA== + +"@solana/options@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-rc.1.tgz#06924ba316dc85791fc46726a51403144a85fc4d" + integrity sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-data-structures" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/codecs-strings" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/options@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.3.0.tgz#f8a967b9ebae703b2c8adb8f4294df303ab866e8" + integrity sha512-PPnnZBRCWWoZQ11exPxf//DRzN2C6AoFsDI/u2AsQfYih434/7Kp4XLpfOMT/XESi+gdBMFNNfbES5zg3wAIkw== + dependencies: + "@solana/codecs-core" "2.3.0" + "@solana/codecs-data-structures" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + +"@solana/programs@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/programs/-/programs-2.3.0.tgz#344193a0a4443217c177e2ec21bac7bc52afe4da" + integrity sha512-UXKujV71VCI5uPs+cFdwxybtHZAIZyQkqDiDnmK+DawtOO9mBn4Nimdb/6RjR2CXT78mzO9ZCZ3qfyX+ydcB7w== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/errors" "2.3.0" + +"@solana/promises@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/promises/-/promises-2.3.0.tgz#ae3fc000f4aef65561d9e4f9724d4635ed042750" + integrity sha512-GjVgutZKXVuojd9rWy1PuLnfcRfqsaCm7InCiZc8bqmJpoghlyluweNc7ml9Y5yQn1P2IOyzh9+p/77vIyNybQ== + +"@solana/rpc-api@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-api/-/rpc-api-2.3.0.tgz#c6e5f7353910bd7c7d2f8a6d4dab44d080bd313a" + integrity sha512-UUdiRfWoyYhJL9PPvFeJr4aJ554ob2jXcpn4vKmRVn9ire0sCbpQKYx6K8eEKHZWXKrDW8IDspgTl0gT/aJWVg== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/keys" "2.3.0" + "@solana/rpc-parsed-types" "2.3.0" + "@solana/rpc-spec" "2.3.0" + "@solana/rpc-transformers" "2.3.0" + "@solana/rpc-types" "2.3.0" + "@solana/transaction-messages" "2.3.0" + "@solana/transactions" "2.3.0" + +"@solana/rpc-parsed-types@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-2.3.0.tgz#132b03f6b4c1b4688336ad48e76c2eea0d8c91d7" + integrity sha512-B5pHzyEIbBJf9KHej+zdr5ZNAdSvu7WLU2lOUPh81KHdHQs6dEb310LGxcpCc7HVE8IEdO20AbckewDiAN6OCg== + +"@solana/rpc-spec-types@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-2.3.0.tgz#010ea9de2f720e84bec2b93ca77ad3664b77235f" + integrity sha512-xQsb65lahjr8Wc9dMtP7xa0ZmDS8dOE2ncYjlvfyw/h4mpdXTUdrSMi6RtFwX33/rGuztQ7Hwaid5xLNSLvsFQ== + +"@solana/rpc-spec@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-2.3.0.tgz#2b679eb750c0f9270da6d451ea1bdc2c7783eb42" + integrity sha512-fA2LMX4BMixCrNB2n6T83AvjZ3oUQTu7qyPLyt8gHQaoEAXs8k6GZmu6iYcr+FboQCjUmRPgMaABbcr9j2J9Sw== + dependencies: + "@solana/errors" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + +"@solana/rpc-subscriptions-api@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-2.3.0.tgz#e779b8ad10e89b2f4a4ccb0fcd1a722d8bdd7729" + integrity sha512-9mCjVbum2Hg9KGX3LKsrI5Xs0KX390lS+Z8qB80bxhar6MJPugqIPH8uRgLhCW9GN3JprAfjRNl7our8CPvsPQ== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/keys" "2.3.0" + "@solana/rpc-subscriptions-spec" "2.3.0" + "@solana/rpc-transformers" "2.3.0" + "@solana/rpc-types" "2.3.0" + "@solana/transaction-messages" "2.3.0" + "@solana/transactions" "2.3.0" + +"@solana/rpc-subscriptions-channel-websocket@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-channel-websocket/-/rpc-subscriptions-channel-websocket-2.3.0.tgz#11352ed281eccfa89a782a1b27444613ebeacca4" + integrity sha512-2oL6ceFwejIgeWzbNiUHI2tZZnaOxNTSerszcin7wYQwijxtpVgUHiuItM/Y70DQmH9sKhmikQp+dqeGalaJxw== + dependencies: + "@solana/errors" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/rpc-subscriptions-spec" "2.3.0" + "@solana/subscribable" "2.3.0" + +"@solana/rpc-subscriptions-spec@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-spec/-/rpc-subscriptions-spec-2.3.0.tgz#a718a4ea97f57ed62291526b70740a42d576fada" + integrity sha512-rdmVcl4PvNKQeA2l8DorIeALCgJEMSu7U8AXJS1PICeb2lQuMeaR+6cs/iowjvIB0lMVjYN2sFf6Q3dJPu6wWg== + dependencies: + "@solana/errors" "2.3.0" + "@solana/promises" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + "@solana/subscribable" "2.3.0" + +"@solana/rpc-subscriptions@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions/-/rpc-subscriptions-2.3.0.tgz#12639c17603e1a30113825350ddbfc3b50b6a031" + integrity sha512-Uyr10nZKGVzvCOqwCZgwYrzuoDyUdwtgQRefh13pXIrdo4wYjVmoLykH49Omt6abwStB0a4UL5gX9V4mFdDJZg== + dependencies: + "@solana/errors" "2.3.0" + "@solana/fast-stable-stringify" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/promises" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + "@solana/rpc-subscriptions-api" "2.3.0" + "@solana/rpc-subscriptions-channel-websocket" "2.3.0" + "@solana/rpc-subscriptions-spec" "2.3.0" + "@solana/rpc-transformers" "2.3.0" + "@solana/rpc-types" "2.3.0" + "@solana/subscribable" "2.3.0" + +"@solana/rpc-transformers@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-transformers/-/rpc-transformers-2.3.0.tgz#e008d2782047d574dbc74985c6cce26d7c3555f3" + integrity sha512-UuHYK3XEpo9nMXdjyGKkPCOr7WsZsxs7zLYDO1A5ELH3P3JoehvrDegYRAGzBS2VKsfApZ86ZpJToP0K3PhmMA== + dependencies: + "@solana/errors" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/nominal-types" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + "@solana/rpc-types" "2.3.0" + +"@solana/rpc-transport-http@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-transport-http/-/rpc-transport-http-2.3.0.tgz#581601b9579b2a7fed9e0cb6fbcb95b4186e5b49" + integrity sha512-HFKydmxGw8nAF5N+S0NLnPBDCe5oMDtI2RAmW8DMqP4U3Zxt2XWhvV1SNkAldT5tF0U1vP+is6fHxyhk4xqEvg== + dependencies: + "@solana/errors" "2.3.0" + "@solana/rpc-spec" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + undici-types "^7.11.0" + +"@solana/rpc-types@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-types/-/rpc-types-2.3.0.tgz#38adf5cb1c79c08086bd672edf7a56d19581d19f" + integrity sha512-O09YX2hED2QUyGxrMOxQ9GzH1LlEwwZWu69QbL4oYmIf6P5dzEEHcqRY6L1LsDVqc/dzAdEs/E1FaPrcIaIIPw== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/nominal-types" "2.3.0" + +"@solana/rpc@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc/-/rpc-2.3.0.tgz#a65919520d14c122625fb887a2d72c95bf8691cf" + integrity sha512-ZWN76iNQAOCpYC7yKfb3UNLIMZf603JckLKOOLTHuy9MZnTN8XV6uwvDFhf42XvhglgUjGCEnbUqWtxQ9pa/pQ== + dependencies: + "@solana/errors" "2.3.0" + "@solana/fast-stable-stringify" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/rpc-api" "2.3.0" + "@solana/rpc-spec" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + "@solana/rpc-transformers" "2.3.0" + "@solana/rpc-transport-http" "2.3.0" + "@solana/rpc-types" "2.3.0" + +"@solana/signers@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/signers/-/signers-2.3.0.tgz#94569a7fb025a3f473661078fbca15b34ceacf94" + integrity sha512-OSv6fGr/MFRx6J+ZChQMRqKNPGGmdjkqarKkRzkwmv7v8quWsIRnJT5EV8tBy3LI4DLO/A8vKiNSPzvm1TdaiQ== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/instructions" "2.3.0" + "@solana/keys" "2.3.0" + "@solana/nominal-types" "2.3.0" + "@solana/transaction-messages" "2.3.0" + "@solana/transactions" "2.3.0" + +"@solana/spl-token-group@^0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.7.tgz#83c00f0cd0bda33115468cd28b89d94f8ec1fee4" + integrity sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug== + dependencies: + "@solana/codecs" "2.0.0-rc.1" + +"@solana/spl-token-metadata@^0.1.2", "@solana/spl-token-metadata@^0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.6.tgz#d240947aed6e7318d637238022a7b0981b32ae80" + integrity sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA== + dependencies: + "@solana/codecs" "2.0.0-rc.1" + +"@solana/spl-token@0.4.13": + version "0.4.13" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.13.tgz#8f65c3c2b315e1a00a91b8d0f60922c6eb71de62" + integrity sha512-cite/pYWQZZVvLbg5lsodSovbetK/eA24gaR0eeUeMuBAMNrT8XFCwaygKy0N2WSg3gSyjjNpIeAGBAKZaY/1w== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-group" "^0.0.7" + "@solana/spl-token-metadata" "^0.1.6" + buffer "^6.0.3" + +"@solana/spl-token@^0.1.6": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.1.8.tgz#f06e746341ef8d04165e21fc7f555492a2a0faa6" + integrity sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ== + dependencies: + "@babel/runtime" "^7.10.5" + "@solana/web3.js" "^1.21.0" + bn.js "^5.1.0" + buffer "6.0.3" + buffer-layout "^1.2.0" + dotenv "10.0.0" + +"@solana/spl-token@^0.3.7": + version "0.3.11" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.11.tgz#cdc10f9472b29b39c8983c92592cadd06627fb9a" + integrity sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-metadata" "^0.1.2" + buffer "^6.0.3" + +"@solana/spl-token@^0.4.0": + version "0.4.14" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.14.tgz#b86bc8a17f50e9680137b585eca5f5eb9d55c025" + integrity sha512-u09zr96UBpX4U685MnvQsNzlvw9TiY005hk1vJmJr7gMJldoPG1eYU5/wNEyOA5lkMLiR/gOi9SFD4MefOYEsA== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-group" "^0.0.7" + "@solana/spl-token-metadata" "^0.1.6" + buffer "^6.0.3" + +"@solana/subscribable@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/subscribable/-/subscribable-2.3.0.tgz#4e48f1a4eeb1ccf22065b46fb8e3ed80d1a27f80" + integrity sha512-DkgohEDbMkdTWiKAoatY02Njr56WXx9e/dKKfmne8/Ad6/2llUIrax78nCdlvZW9quXMaXPTxZvdQqo9N669Og== + dependencies: + "@solana/errors" "2.3.0" + +"@solana/sysvars@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/sysvars/-/sysvars-2.3.0.tgz#eeea82f89716682014e801de5870344ddd02becd" + integrity sha512-LvjADZrpZ+CnhlHqfI5cmsRzX9Rpyb1Ox2dMHnbsRNzeKAMhu9w4ZBIaeTdO322zsTr509G1B+k2ABD3whvUBA== + dependencies: + "@solana/accounts" "2.3.0" + "@solana/codecs" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/rpc-types" "2.3.0" + +"@solana/transaction-confirmation@2.3.0", "@solana/transaction-confirmation@^2.1.1": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/transaction-confirmation/-/transaction-confirmation-2.3.0.tgz#f66e70334d797b5010b4ae27dc59de2f90b8ebe6" + integrity sha512-UiEuiHCfAAZEKdfne/XljFNJbsKAe701UQHKXEInYzIgBjRbvaeYZlBmkkqtxwcasgBTOmEaEKT44J14N9VZDw== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/keys" "2.3.0" + "@solana/promises" "2.3.0" + "@solana/rpc" "2.3.0" + "@solana/rpc-subscriptions" "2.3.0" + "@solana/rpc-types" "2.3.0" + "@solana/transaction-messages" "2.3.0" + "@solana/transactions" "2.3.0" + +"@solana/transaction-messages@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/transaction-messages/-/transaction-messages-2.3.0.tgz#e2a9c2f5565c7cc720aa09816aa3c17fb79c2abc" + integrity sha512-bgqvWuy3MqKS5JdNLH649q+ngiyOu5rGS3DizSnWwYUd76RxZl1kN6CoqHSrrMzFMvis6sck/yPGG3wqrMlAww== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-data-structures" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/instructions" "2.3.0" + "@solana/nominal-types" "2.3.0" + "@solana/rpc-types" "2.3.0" + +"@solana/transactions@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-2.3.0.tgz#fc99f6ce6cc5706f2b8116bbf8a2f396c3ec3177" + integrity sha512-LnTvdi8QnrQtuEZor5Msje61sDpPstTVwKg4y81tNxDhiyomjuvnSNLAq6QsB9gIxUqbNzPZgOG9IU4I4/Uaug== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-data-structures" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/instructions" "2.3.0" + "@solana/keys" "2.3.0" + "@solana/nominal-types" "2.3.0" + "@solana/rpc-types" "2.3.0" + "@solana/transaction-messages" "2.3.0" + +"@solana/web3.js@1.98.0", "@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.30.2", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.56.2", "@solana/web3.js@^1.68.0", "@solana/web3.js@^1.77.3", "@solana/web3.js@^1.98.0", "@solana/web3.js@^1.98.2": + version "1.98.0" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.0.tgz#21ecfe8198c10831df6f0cfde7f68370d0405917" + integrity sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA== + dependencies: + "@babel/runtime" "^7.25.0" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + +"@swc/helpers@^0.5.11": + version "0.5.18" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.18.tgz#feeeabea0d10106ee25aaf900165df911ab6d3b1" + integrity sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ== + dependencies: + tslib "^2.8.0" + +"@switchboard-xyz/common@3.0.14": + version "3.0.14" + resolved "https://registry.yarnpkg.com/@switchboard-xyz/common/-/common-3.0.14.tgz#5b363995bd0fefa22198286992dbe54f3e544b08" + integrity sha512-LpxzEywO0DjPYIgPzQYkf32C7agwW4YRsPN6BcIvYrw0iJdDMtPZ3SQfIGHLSlD1fwvn2KLUYuGaKegeq4aBTw== + dependencies: + "@solana/web3.js" "^1.98.0" + axios "^1.8.3" + big.js "^6.2.2" + bn.js "^5.2.1" + bs58 "^6.0.0" + buffer "^6.0.3" + decimal.js "^10.4.3" + js-sha256 "^0.11.0" + protobufjs "^7.4.0" + yaml "^2.6.1" + +"@switchboard-xyz/common@>=3.0.0": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@switchboard-xyz/common/-/common-5.6.1.tgz#a379005af3a72a504f8f6ba88ea8991d328f6336" + integrity sha512-2Sz3iAusCnpEp+lJLOcwstRxGQCkbCdLDNgAYl/gTqApCA+drdQni8WoeKdahAXtcxhr72pd9PhFi/4N25im+w== + dependencies: + "@solana/web3.js" "^1.98.2" + axios "^1.9.0" + big.js "^6.2.2" + bn.js "^5.2.1" + bs58 "^6.0.0" + buffer "^6.0.3" + decimal.js "^10.4.3" + js-sha256 "^0.11.0" + protobufjs "^7.4.0" + +"@switchboard-xyz/on-demand@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@switchboard-xyz/on-demand/-/on-demand-2.4.1.tgz#3db64b0596d9daa0b010ee44193d5512e0ba512d" + integrity sha512-eSlBp+c8lxpcSgh0/2xK8OaLHPziTSZlcs8V96gZGdiCJz1KgWJRNE1qnIJDOwaGdFecZdwcmajfQRtLRLED3w== + dependencies: + "@coral-xyz/anchor-30" "npm:@coral-xyz/anchor@0.30.1" + "@isaacs/ttlcache" "^1.4.1" + "@switchboard-xyz/common" ">=3.0.0" + axios "^1.8.3" + bs58 "^6.0.0" + buffer "^6.0.3" + js-yaml "^4.1.0" + +"@triton-one/yellowstone-grpc@1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@triton-one/yellowstone-grpc/-/yellowstone-grpc-1.4.1.tgz#b50434f68c3d73c6ce3e1f225656064c080f4b25" + integrity sha512-ZN49vooxFbOqWttll8u7AOsIVnX+srqX9ddhZ9ttE+OcehUo8c2p2suK8Gr2puab49cgsV0VGjiTn9Gua/ntIw== + dependencies: + "@grpc/grpc-js" "^1.8.0" + +"@ts-graphviz/adapter@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@ts-graphviz/adapter/-/adapter-2.0.6.tgz#18d5a42304dca7ffff760fcaf311a3148ef4a3bd" + integrity sha512-kJ10lIMSWMJkLkkCG5gt927SnGZcBuG0s0HHswGzcHTgvtUe7yk5/3zTEr0bafzsodsOq5Gi6FhQeV775nC35Q== + dependencies: + "@ts-graphviz/common" "^2.1.5" + +"@ts-graphviz/ast@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@ts-graphviz/ast/-/ast-2.0.7.tgz#4ec33492e4b4e998d4632030e97a9f7e149afb86" + integrity sha512-e6+2qtNV99UT6DJSoLbHfkzfyqY84aIuoV8Xlb9+hZAjgpum8iVHprGeAMQ4rF6sKUAxrmY8rfF/vgAwoPc3gw== + dependencies: + "@ts-graphviz/common" "^2.1.5" + +"@ts-graphviz/common@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@ts-graphviz/common/-/common-2.1.5.tgz#a256dfaea009a5b147d8f73f25e57fb44f6462a2" + integrity sha512-S6/9+T6x8j6cr/gNhp+U2olwo1n0jKj/682QVqsh7yXWV6ednHYqxFw0ZsY3LyzT0N8jaZ6jQY9YD99le3cmvg== + +"@ts-graphviz/core@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@ts-graphviz/core/-/core-2.0.7.tgz#2185e390990038b267a2341c3db1cef3680bbee8" + integrity sha512-w071DSzP94YfN6XiWhOxnLpYT3uqtxJBDYdh6Jdjzt+Ce6DNspJsPQgpC7rbts/B8tEkq0LHoYuIF/O5Jh5rPg== + dependencies: + "@ts-graphviz/ast" "^2.0.7" + "@ts-graphviz/common" "^2.1.5" + +"@tsconfig/node10@^1.0.7": + version "1.0.12" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.12.tgz#be57ceac1e4692b41be9de6be8c32a106636dba4" + integrity sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/big.js@6.2.2": + version "6.2.2" + resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-6.2.2.tgz#69422ec9ef59df1330ccfde2106d9e1159a083c3" + integrity sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA== + +"@types/bn.js@5.1.6": + version "5.1.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.6.tgz#9ba818eec0c85e4d3c679518428afdf611d03203" + integrity sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w== + dependencies: + "@types/node" "*" + +"@types/bs58@4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/bs58/-/bs58-4.0.4.tgz#49fbcb0c7db5f7cea26f0e0f61dc4a41a2445aab" + integrity sha512-0IEpMFXXQi2zXaXl9GJ3sRwQo0uEkD+yFOv+FnAU5lkPtcu6h61xb7jc2CFPEZ5BUOaiP13ThuGc9HD4R8lR5g== + dependencies: + "@types/node" "*" + base-x "^3.0.6" + +"@types/chai@4.3.20": + version "4.3.20" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.20.tgz#cb291577ed342ca92600430841a00329ba05cecc" + integrity sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ== + +"@types/connect@^3.4.33": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@28.1.8": + version "28.1.8" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.8.tgz#6936409f3c9724ea431efd412ea0238a0f03b09b" + integrity sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw== + dependencies: + expect "^28.0.0" + pretty-format "^28.0.0" + +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/mocha@9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== + +"@types/node@*", "@types/node@>=13.7.0": + version "25.0.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.10.tgz#4864459c3c9459376b8b75fd051315071c8213e7" + integrity sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg== + dependencies: + undici-types "~7.16.0" + +"@types/node@^12.12.54": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/node@^18.11.13": + version "18.19.130" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.130.tgz#da4c6324793a79defb7a62cba3947ec5add00d59" + integrity sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg== + dependencies: + undici-types "~5.26.4" + +"@types/protobufjs@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@types/protobufjs/-/protobufjs-6.0.0.tgz#aeabb43f9507bb19c8adfb479584c151082353e4" + integrity sha512-A27RDExpAf3rdDjIrHKiJK6x8kqqJ4CmoChwtipfhVAn1p7+wviQFFP7dppn8FslSbHtQeVPvi8wNKkDjSYjHw== + dependencies: + protobufjs "*" + +"@types/semver@^7.5.0": + version "7.7.1" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.1.tgz#3ce3af1a5524ef327d2da9e4fd8b6d95c8d70528" + integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA== + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@types/ws@^8.2.2": + version "8.18.1" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" + integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.35" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.35.tgz#07013e46aa4d7d7d50a49e15604c1c5340d4eb24" + integrity sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" + integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/type-utils" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" + integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== + dependencies: + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + +"@typescript-eslint/project-service@8.53.1": + version "8.53.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.53.1.tgz#4e47856a0b14a1ceb28b0294b4badef3be1e9734" + integrity sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.53.1" + "@typescript-eslint/types" "^8.53.1" + debug "^4.4.3" + +"@typescript-eslint/scope-manager@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" + integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + +"@typescript-eslint/tsconfig-utils@8.53.1", "@typescript-eslint/tsconfig-utils@^8.53.1": + version "8.53.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.1.tgz#efe80b8d019cd49e5a1cf46c2eb0cd2733076424" + integrity sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA== + +"@typescript-eslint/type-utils@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" + integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== + dependencies: + "@typescript-eslint/typescript-estree" "6.21.0" + "@typescript-eslint/utils" "6.21.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" + integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== + +"@typescript-eslint/types@8.53.1", "@typescript-eslint/types@^8.53.1": + version "8.53.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.53.1.tgz#101f203f0807a63216cceceedb815fabe21d5793" + integrity sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A== + +"@typescript-eslint/typescript-estree@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" + integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== + dependencies: + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/visitor-keys" "6.21.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/typescript-estree@^8.23.0": + version "8.53.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.1.tgz#b6dce2303c9e27e95b8dcd8c325868fff53e488f" + integrity sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg== + dependencies: + "@typescript-eslint/project-service" "8.53.1" + "@typescript-eslint/tsconfig-utils" "8.53.1" + "@typescript-eslint/types" "8.53.1" + "@typescript-eslint/visitor-keys" "8.53.1" + debug "^4.4.3" + minimatch "^9.0.5" + semver "^7.7.3" + tinyglobby "^0.2.15" + ts-api-utils "^2.4.0" + +"@typescript-eslint/utils@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" + integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.21.0" + "@typescript-eslint/types" "6.21.0" + "@typescript-eslint/typescript-estree" "6.21.0" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@6.21.0": + version "6.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" + integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== + dependencies: + "@typescript-eslint/types" "6.21.0" + eslint-visitor-keys "^3.4.1" + +"@typescript-eslint/visitor-keys@8.53.1": + version "8.53.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.1.tgz#405f04959be22b9be364939af8ac19c3649b6eb7" + integrity sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg== + dependencies: + "@typescript-eslint/types" "8.53.1" + eslint-visitor-keys "^4.2.1" + +"@ungap/structured-clone@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@vue/compiler-core@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.27.tgz#ce4402428e26095586eb889c41f6e172eb3960bd" + integrity sha512-gnSBQjZA+//qDZen+6a2EdHqJ68Z7uybrMf3SPjEGgG4dicklwDVmMC1AeIHxtLVPT7sn6sH1KOO+tS6gwOUeQ== + dependencies: + "@babel/parser" "^7.28.5" + "@vue/shared" "3.5.27" + entities "^7.0.0" + estree-walker "^2.0.2" + source-map-js "^1.2.1" + +"@vue/compiler-dom@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.27.tgz#32b2bc87f0a652c253986796ace0ed6213093af8" + integrity sha512-oAFea8dZgCtVVVTEC7fv3T5CbZW9BxpFzGGxC79xakTr6ooeEqmRuvQydIiDAkglZEAd09LgVf1RoDnL54fu5w== + dependencies: + "@vue/compiler-core" "3.5.27" + "@vue/shared" "3.5.27" + +"@vue/compiler-sfc@^3.5.13": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.27.tgz#84651b8816bf8e7d6e62fddd14db86efd6d6f1b6" + integrity sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ== + dependencies: + "@babel/parser" "^7.28.5" + "@vue/compiler-core" "3.5.27" + "@vue/compiler-dom" "3.5.27" + "@vue/compiler-ssr" "3.5.27" + "@vue/shared" "3.5.27" + estree-walker "^2.0.2" + magic-string "^0.30.21" + postcss "^8.5.6" + source-map-js "^1.2.1" + +"@vue/compiler-ssr@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.27.tgz#b480cad09dacf8f3d9c82b9843402f1a803baee7" + integrity sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw== + dependencies: + "@vue/compiler-dom" "3.5.27" + "@vue/shared" "3.5.27" + +"@vue/shared@3.5.27": + version "3.5.27" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.27.tgz#33a63143d8fb9ca1b3efbc7ecf9bd0ab05f7e06e" + integrity sha512-dXr/3CgqXsJkZ0n9F3I4elY8wM9jMJpP3pvRG52r6m0tu/MsAFIe6JpXVGeNMd/D9F4hQynWT8Rfuj0bdm9kFQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + +agentkeepalive@^4.5.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" + integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== + dependencies: + humanize-ms "^1.2.1" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +anchor-bankrun@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/anchor-bankrun/-/anchor-bankrun-0.3.0.tgz#3789fcecbc201a2334cff228b99cc0da8ef0167e" + integrity sha512-PYBW5fWX+iGicIS5MIM/omhk1tQPUc0ELAnI/IkLKQJ6d75De/CQRh8MF2bU/TgGyFi6zEel80wUe3uRol9RrQ== + +ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-regex@5.0.1, ansi-regex@^5.0.1, ansi-regex@^6.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@4.3.0, ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^5.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansicolors@^0.3.2, ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== + +any-promise@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +app-module-path@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" + integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +asn1.js@^4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +assert@^2.0.0, assert@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== + dependencies: + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" + object.assign "^4.1.4" + util "^0.12.5" + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +ast-module-types@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ast-module-types/-/ast-module-types-6.0.1.tgz#4b4ca0251c57b815bab62604dcb22f8c903e2523" + integrity sha512-WHw67kLXYbZuHTmcdbIrVArCq5wxo6NEuj3hiYAWr8mwJeC+C2mMCIBIWCiDoCye/OF/xelc+teJ1ERoWmnEIA== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +axios@^1.8.3, axios@^1.9.0: + version "1.13.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" + integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.4" + proxy-from-env "^1.1.0" + +backslash@<0.2.1: + version "0.2.0" + resolved "https://registry.yarnpkg.com/backslash/-/backslash-0.2.0.tgz#6c3c1fce7e7e714ccfc10fd74f0f73410677375f" + integrity sha512-Avs+8FUZ1HF/VFP4YWwHQZSGzRPm37ukU1JQYQWijuHhtXdOuAzcZ8PcAzfIw898a8PyBzdn+RtnKA6MzW0X2A== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2, base-x@^3.0.6: + version "3.0.11" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.11.tgz#40d80e2a1aeacba29792ccc6c5354806421287ff" + integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== + dependencies: + safe-buffer "^5.0.1" + +base-x@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.1.tgz#817fb7b57143c501f649805cb247617ad016a885" + integrity sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw== + +base-x@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-5.0.1.tgz#16bf35254be1df8aca15e36b7c1dda74b2aa6b03" + integrity sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg== + +base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +big.js@^6.2.1, big.js@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.2.tgz#be3bb9ac834558b53b099deef2a1d06ac6368e1a" + integrity sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ== + +bigint-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" + integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== + dependencies: + bindings "^1.3.0" + +bignumber.js@^9.0.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.1.tgz#759c5aaddf2ffdc4f154f7b493e1c8770f88c4d7" + integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bindings@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.2.tgz#3d8fed6796c24e177737f7cc5172ee04ef39ec99" + integrity sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw== + +bn.js@^5.1.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1, bn.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" + integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== + +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +brace-expansion@^1.1.7: + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-stdout@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz#06e530907fe2949dc21fc3c2e2302e10b1437238" + integrity sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ== + dependencies: + bn.js "^5.2.1" + randombytes "^2.1.0" + safe-buffer "^5.2.1" + +browserify-sign@^4.2.3: + version "4.2.5" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.5.tgz#3979269fa8af55ba18aac35deef11b45515cd27d" + integrity sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw== + dependencies: + bn.js "^5.2.2" + browserify-rsa "^4.1.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.6.1" + inherits "^2.0.4" + parse-asn1 "^5.1.9" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + +bs58@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" + integrity sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw== + dependencies: + base-x "^5.0.0" + +buffer-layout@^1.2.0, buffer-layout@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/buffer-layout/-/buffer-layout-1.2.2.tgz#b9814e7c7235783085f9ca4966a0cfff112259d5" + integrity sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.1.0.tgz#a4623541dd23867626bb08a051ec0d2ec0b70294" + integrity sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw== + dependencies: + node-gyp-build "^4.3.0" + +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.7, call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0, camelcase@^6.2.1, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +chai@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" + integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.1.0" + +chalk-template@<0.4.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/chalk-template/-/chalk-template-0.3.1.tgz#9511cd31ec3c4911448410d49645526c1c7a3a22" + integrity sha512-sbWkBbb9Tfo81aTtQrfP9eBSVCTL8biVvZ0tA1rH9xqVrKoV2T9Y6Bp94wB+DRXtSGl/UXsgV83Np5hLhNRXww== + dependencies: + chalk "^4.1.2" + +chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2, chalk@^5.3.0, chalk@~4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.7" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.7.tgz#bd094bfef42634ccfd9e13b9fc73274997111e39" + integrity sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + to-buffer "^1.2.2" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone@2.x: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@<3.1.1, color-convert@^2.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-3.1.0.tgz#ce16ebb832f9d7522649ed9e11bc0ccb9433a524" + integrity sha512-TVoqAq8ZDIpK5lsQY874DDnu65CSsc9vzq0wLpNQ6UMBq81GSZocVazPiBbYGzngzBOIRahpkTzCLVe2at4MfA== + dependencies: + color-name "^2.0.0" + +color-name@<2.0.1, color-name@^1.1.4, color-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-2.0.0.tgz#03ff6b1b5aec9bb3cf1ed82400c2790dfcd01d2d" + integrity sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow== + +color-string@<2.1.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-2.1.0.tgz#a1cc4bb16a23032ff1048a2458a170323b15a23f" + integrity sha512-gNVoDzpaSwvftp6Y8nqk97FtZoXP9Yj7KGYB8yIXuv0JcfqbYihTrd1OU5iZW9btfXde4YAOCRySBHT7O910MA== + dependencies: + color-name "^2.0.0" + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +create-ecdh@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@^3.1.5: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" + integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== + dependencies: + node-fetch "^2.7.0" + +cross-spawn@^7.0.2: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@^3.12.1: + version "3.12.1" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.1.tgz#bb8921bec9acc81633379aa8f52d69b0b69e0dac" + integrity sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ== + dependencies: + browserify-cipher "^1.0.1" + browserify-sign "^4.2.3" + create-ecdh "^4.0.4" + create-hash "^1.2.0" + create-hmac "^1.1.7" + diffie-hellman "^5.0.3" + hash-base "~3.0.4" + inherits "^2.0.4" + pbkdf2 "^3.1.2" + public-encrypt "^4.0.3" + randombytes "^2.1.0" + randomfill "^1.0.4" + +crypto-hash@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/crypto-hash/-/crypto-hash-1.3.0.tgz#b402cb08f4529e9f4f09346c3e275942f845e247" + integrity sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg== + +debug@<4.4.2, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.4.3: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +decimal.js@^10.4.3: + version "10.6.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a" + integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== + +deep-eql@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== + dependencies: + type-detect "^4.0.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.1.3, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dependency-tree@^11.0.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/dependency-tree/-/dependency-tree-11.2.0.tgz#ae764155b2903267181def4b20be49b1fd76da5e" + integrity sha512-+C1H3mXhcvMCeu5i2Jpg9dc0N29TWTuT6vJD7mHLAfVmAbo9zW8NlkvQ1tYd3PDMab0IRQM0ccoyX68EZtx9xw== + dependencies: + commander "^12.1.0" + filing-cabinet "^5.0.3" + precinct "^12.2.0" + typescript "^5.8.3" + +des.js@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +detective-amd@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/detective-amd/-/detective-amd-6.0.1.tgz#71eb13b5d9b17222d7b4de3fb89a8e684d8b9a23" + integrity sha512-TtyZ3OhwUoEEIhTFoc1C9IyJIud3y+xYkSRjmvCt65+ycQuc3VcBrPRTMWoO/AnuCyOB8T5gky+xf7Igxtjd3g== + dependencies: + ast-module-types "^6.0.1" + escodegen "^2.1.0" + get-amd-module-type "^6.0.1" + node-source-walk "^7.0.1" + +detective-cjs@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/detective-cjs/-/detective-cjs-6.0.1.tgz#4fb81a67337630811409abb2148b2b622cacbdcd" + integrity sha512-tLTQsWvd2WMcmn/60T2inEJNhJoi7a//PQ7DwRKEj1yEeiQs4mrONgsUtEJKnZmrGWBBmE0kJ1vqOG/NAxwaJw== + dependencies: + ast-module-types "^6.0.1" + node-source-walk "^7.0.1" + +detective-es6@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/detective-es6/-/detective-es6-5.0.1.tgz#f0c026bc9b767a243e57ef282f4343fcf3b8ec4e" + integrity sha512-XusTPuewnSUdoxRSx8OOI6xIA/uld/wMQwYsouvFN2LAg7HgP06NF1lHRV3x6BZxyL2Kkoih4ewcq8hcbGtwew== + dependencies: + node-source-walk "^7.0.1" + +detective-postcss@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/detective-postcss/-/detective-postcss-7.0.1.tgz#f5822d8988339fb56851fcdb079d51fbcff114db" + integrity sha512-bEOVpHU9picRZux5XnwGsmCN4+8oZo7vSW0O0/Enq/TO5R2pIAP2279NsszpJR7ocnQt4WXU0+nnh/0JuK4KHQ== + dependencies: + is-url "^1.2.4" + postcss-values-parser "^6.0.2" + +detective-sass@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/detective-sass/-/detective-sass-6.0.1.tgz#fcf5aa51bebf7b721807be418418470ee2409f8a" + integrity sha512-jSGPO8QDy7K7pztUmGC6aiHkexBQT4GIH+mBAL9ZyBmnUIOFbkfZnO8wPRRJFP/QP83irObgsZHCoDHZ173tRw== + dependencies: + gonzales-pe "^4.3.0" + node-source-walk "^7.0.1" + +detective-scss@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/detective-scss/-/detective-scss-5.0.1.tgz#6a7f792dc9c0e8cfc0d252a50ba26a6df12596a7" + integrity sha512-MAyPYRgS6DCiS6n6AoSBJXLGVOydsr9huwXORUlJ37K3YLyiN0vYHpzs3AdJOgHobBfispokoqrEon9rbmKacg== + dependencies: + gonzales-pe "^4.3.0" + node-source-walk "^7.0.1" + +detective-stylus@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/detective-stylus/-/detective-stylus-5.0.1.tgz#57d54a0b405305ee16655e42008b38a827a9f179" + integrity sha512-Dgn0bUqdGbE3oZJ+WCKf8Dmu7VWLcmRJGc6RCzBgG31DLIyai9WAoEhYRgIHpt/BCRMrnXLbGWGPQuBUrnF0TA== + +detective-typescript@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/detective-typescript/-/detective-typescript-14.0.0.tgz#3cf429652eb7d7d2be2c050ac47af957a559527d" + integrity sha512-pgN43/80MmWVSEi5LUuiVvO/0a9ss5V7fwVfrJ4QzAQRd3cwqU1SfWGXJFcNKUqoD5cS+uIovhw5t/0rSeC5Mw== + dependencies: + "@typescript-eslint/typescript-estree" "^8.23.0" + ast-module-types "^6.0.1" + node-source-walk "^7.0.1" + +detective-vue2@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/detective-vue2/-/detective-vue2-2.2.0.tgz#35fd1d39e261b064aca9fcaf20e136c76877482a" + integrity sha512-sVg/t6O2z1zna8a/UIV6xL5KUa2cMTQbdTIIvqNM0NIPswp52fe43Nwmbahzj3ww4D844u/vC2PYfiGLvD3zFA== + dependencies: + "@dependents/detective-less" "^5.0.1" + "@vue/compiler-sfc" "^3.5.13" + detective-es6 "^5.0.1" + detective-sass "^6.0.1" + detective-scss "^5.0.1" + detective-stylus "^5.0.1" + detective-typescript "^14.0.0" + +diff-sequences@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" + integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== + +diff@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.4.tgz#7a6dbfda325f25f07517e9b518f897c08332e07d" + integrity sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ== + +diff@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.2.tgz#0a4742797281d09cfa699b79ea32d27723623bad" + integrity sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A== + +diffie-hellman@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +elliptic@^6.5.3, elliptic@^6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" + integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encoding@0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +enhanced-resolve@^5.18.0: + version "5.18.4" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz#c22d33055f3952035ce6a144ce092447c525f828" + integrity sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-7.0.1.tgz#26e8a88889db63417dcb9a1e79a3f1bc92b5976b" + integrity sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA== + +error-ex@<1.3.3: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +esbuild@^0.27.1: + version "0.27.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.27.2.tgz#d83ed2154d5813a5367376bb2292a9296fc83717" + integrity sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.27.2" + "@esbuild/android-arm" "0.27.2" + "@esbuild/android-arm64" "0.27.2" + "@esbuild/android-x64" "0.27.2" + "@esbuild/darwin-arm64" "0.27.2" + "@esbuild/darwin-x64" "0.27.2" + "@esbuild/freebsd-arm64" "0.27.2" + "@esbuild/freebsd-x64" "0.27.2" + "@esbuild/linux-arm" "0.27.2" + "@esbuild/linux-arm64" "0.27.2" + "@esbuild/linux-ia32" "0.27.2" + "@esbuild/linux-loong64" "0.27.2" + "@esbuild/linux-mips64el" "0.27.2" + "@esbuild/linux-ppc64" "0.27.2" + "@esbuild/linux-riscv64" "0.27.2" + "@esbuild/linux-s390x" "0.27.2" + "@esbuild/linux-x64" "0.27.2" + "@esbuild/netbsd-arm64" "0.27.2" + "@esbuild/netbsd-x64" "0.27.2" + "@esbuild/openbsd-arm64" "0.27.2" + "@esbuild/openbsd-x64" "0.27.2" + "@esbuild/openharmony-arm64" "0.27.2" + "@esbuild/sunos-x64" "0.27.2" + "@esbuild/win32-arm64" "0.27.2" + "@esbuild/win32-ia32" "0.27.2" + "@esbuild/win32-x64" "0.27.2" + +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-prettier@8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" + integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== + +eslint-plugin-prettier@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz#cdbad3bf1dbd2b177e9825737fe63b476a08f0c7" + integrity sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== + +eslint@8.57.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d" + integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +eventemitter3@^5.0.1: + version "5.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.4.tgz#a86d66170433712dde814707ac52b5271ceb1feb" + integrity sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +expect@^28.0.0: + version "28.1.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" + integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== + dependencies: + "@jest/expect-utils" "^28.1.3" + jest-get-type "^28.0.2" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-glob@^3.2.9: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + +fastq@^1.6.0: + version "1.20.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" + integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== + dependencies: + reusify "^1.0.4" + +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filing-cabinet@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/filing-cabinet/-/filing-cabinet-5.0.3.tgz#e5ab960958653ee7fe70d5d99b3b88c342ce7907" + integrity sha512-PlPcMwVWg60NQkhvfoxZs4wEHjhlOO/y7OAm4sKM60o1Z9nttRY4mcdQxp/iZ+kg/Vv6Hw1OAaTbYVM9DA9pYg== + dependencies: + app-module-path "^2.2.0" + commander "^12.1.0" + enhanced-resolve "^5.18.0" + module-definition "^6.0.1" + module-lookup-amd "^9.0.3" + resolve "^1.22.10" + resolve-dependency-path "^4.0.1" + sass-lookup "^6.1.0" + stylus-lookup "^6.1.0" + tsconfig-paths "^4.2.0" + typescript "^5.7.3" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-process@^1.4.7: + version "1.4.11" + resolved "https://registry.yarnpkg.com/find-process/-/find-process-1.4.11.tgz#f7246251d396b35b9ae41fff7b87137673567fcc" + integrity sha512-mAOh9gGk9WZ4ip5UjV0o6Vb4SrfnAmtsFNzkMRH9HQiFXVQnDyQFrSHTK5UoG6E+KV+s+cIznbtwpfN41l2nFA== + dependencies: + chalk "~4.1.2" + commander "^12.1.0" + loglevel "^1.9.2" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/find/-/find-0.3.0.tgz#4082e8fc8d8320f1a382b5e4f521b9bc50775cb8" + integrity sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw== + dependencies: + traverse-chain "~0.1.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.9: + version "3.3.3" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + +follow-redirects@^1.15.6: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + +for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + +form-data@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +generator-function@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2" + integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g== + +get-amd-module-type@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-amd-module-type/-/get-amd-module-type-6.0.1.tgz#191f479ae8706c246b52bf402fbe1bb0965d9f1e" + integrity sha512-MtjsmYiCXcYDDrGqtNbeIYdAl85n+5mSv2r3FbzER/YV3ZILw4HNNIw34HuV5pyl0jzs6GFYU1VHVEefhgcNHQ== + dependencies: + ast-module-types "^6.0.1" + node-source-walk "^7.0.1" + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +get-intrinsic@^1.2.4, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +gill@^0.10.2: + version "0.10.3" + resolved "https://registry.yarnpkg.com/gill/-/gill-0.10.3.tgz#0eeeaf18b9a6ec7adc17967f51f86be042ee2f24" + integrity sha512-4LIVA32lKcWoqU/dbwu+YpJbR59QQT6mvCtqkElBWF2aT9upmewjKN3/anhfTGy+o/RJykAV21i3RzCj9FR0Xg== + dependencies: + "@solana-program/address-lookup-table" "^0.7.0" + "@solana-program/compute-budget" "^0.8.0" + "@solana-program/system" "^0.7.0" + "@solana-program/token-2022" "^0.4.2" + "@solana/assertions" "^2.1.1" + "@solana/codecs" "^2.1.1" + "@solana/kit" "^2.3.0" + "@solana/transaction-confirmation" "^2.1.1" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3, glob@^7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gonzales-pe@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" + integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ== + dependencies: + minimist "^1.2.5" + +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-ansi@<6.0.1: + version "6.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-6.0.0.tgz#8118b2fb548c062f9356c7d5013b192a238ce3b3" + integrity sha512-1AYj+gqAskFf9Skb7xuEYMfJqkW3TJ8lukw4Fczw+Y6jRkgxvcE4JiFWuTO4DsoleMvvHudryolA9ObJHJKHWQ== + dependencies: + ansi-regex "^6.0.1" + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-flag@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-5.0.1.tgz#5483db2ae02a472d1d0691462fc587d1843cd940" + integrity sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hash-base@^3.0.0, hash-base@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.2.tgz#79d72def7611c3f6e3c3b5730652638001b10a74" + integrity sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg== + dependencies: + inherits "^2.0.4" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + to-buffer "^1.2.1" + +hash-base@~3.0.4: + version "3.0.5" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.5.tgz#52480e285395cf7fba17dc4c9e47acdc7f248a8a" + integrity sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +helius-laserstream-darwin-arm64@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/helius-laserstream-darwin-arm64/-/helius-laserstream-darwin-arm64-0.1.8.tgz#d78ad15e6cd16dc9379a9a365f9fcb3f958e6c01" + integrity sha512-p/K2Mi3wZnMxEYSLCvu858VyMvtJFonhdF8cLaMcszFv04WWdsK+hINNZpVRfakypvDfDPbMudEhL1Q9USD5+w== + +helius-laserstream-darwin-x64@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/helius-laserstream-darwin-x64/-/helius-laserstream-darwin-x64-0.1.8.tgz#e57bc8f03135fd3b5c01a5aebd7b87c42129da50" + integrity sha512-Hd5irFyfOqQZLdoj5a+OV7vML2YfySSBuKlOwtisMHkUuIXZ4NpAexslDmK7iP5VWRI+lOv9X/tA7BhxW7RGSQ== + +helius-laserstream-linux-arm64-gnu@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/helius-laserstream-linux-arm64-gnu/-/helius-laserstream-linux-arm64-gnu-0.1.8.tgz#1b3c8440804d143f650166842620fc334f9c319b" + integrity sha512-PlPm1dvOvTGBL1nuzK98Xe40BJq1JWNREXlBHKDVA/B+KCGQnIMJ1s6e1MevSvFE7SOix5i1BxhYIxGioK2GMg== + +helius-laserstream-linux-arm64-musl@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/helius-laserstream-linux-arm64-musl/-/helius-laserstream-linux-arm64-musl-0.1.8.tgz#28e0645bebc3253d2a136cf0bd13f8cb5256f47b" + integrity sha512-LFadfMRuTd1zo6RZqLTgHQapo3gJYioS7wFMWFoBOFulG0BpAqHEDNobkxx0002QArw+zX29MQ/5OaOCf8kKTA== + +helius-laserstream-linux-x64-gnu@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/helius-laserstream-linux-x64-gnu/-/helius-laserstream-linux-x64-gnu-0.1.8.tgz#e59990ca0bcdc27e46f71a8fc2c18fddbe6f07e3" + integrity sha512-IZWK/OQIe0647QqfYikLb1DFK+nYtXLJiMcpj24qnNVWBOtMXmPc1hL6ebazdEiaKt7fxNd5IiM1RqeaqZAZMw== + +helius-laserstream-linux-x64-musl@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/helius-laserstream-linux-x64-musl/-/helius-laserstream-linux-x64-musl-0.1.8.tgz#42aa0919ef266c40f50ac74d6f9d871d4e2e7c9c" + integrity sha512-riTS6VgxDae1fHOJ2XC/o/v1OZRbEv/3rcoa3NlAOnooDKp5HDgD0zJTcImjQHpYWwGaejx1oX/Ht53lxNoijw== + +helius-laserstream@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/helius-laserstream/-/helius-laserstream-0.1.8.tgz#6ee5e0bc9fe2560c03a0d2c9079b9f875c3e6bb7" + integrity sha512-jXQkwQRWiowbVPGQrGacOkI5shKPhrEixCu93OpoMtL5fs9mnhtD7XKMPi8CX0W8gsqsJjwR4NlaR+EflyANbQ== + dependencies: + "@types/protobufjs" "^6.0.0" + protobufjs "^7.5.3" + optionalDependencies: + helius-laserstream-darwin-arm64 "0.1.8" + helius-laserstream-darwin-x64 "0.1.8" + helius-laserstream-linux-arm64-gnu "0.1.8" + helius-laserstream-linux-arm64-musl "0.1.8" + helius-laserstream-linux-x64-gnu "0.1.8" + helius-laserstream-linux-x64-musl "0.1.8" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +import-fresh@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +is-arguments@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b" + integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + +is-arrayish@<0.3.3, is-arrayish@^0.2.1, is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-callable@^1.2.7: + version "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.16.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.7: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5" + integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA== + dependencies: + call-bound "^1.0.4" + generator-function "^2.0.0" + get-proto "^1.0.1" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-nan@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + +is-typed-array@^1.1.14, is-typed-array@^1.1.3: + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-url-superb@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-url-superb/-/is-url-superb-4.0.0.tgz#b54d1d2499bb16792748ac967aa3ecb41a33a8c2" + integrity sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA== + +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +isomorphic-ws@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" + integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== + +jayson@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.3.0.tgz#22eb8f3dcf37a5e893830e5451f32bde6d1bde4d" + integrity sha512-AauzHcUcqs8OBnCHOkJY280VaTiCm57AbuO7lqzcw7JapGj50BisE3xhksye4zlTSR1+1tAz67wLTl8tEH1obQ== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + stream-json "^1.9.1" + uuid "^8.3.2" + ws "^7.5.10" + +jest-diff@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" + integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== + dependencies: + chalk "^4.0.0" + diff-sequences "^28.1.1" + jest-get-type "^28.0.2" + pretty-format "^28.1.3" + +jest-get-type@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" + integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== + +jest-matcher-utils@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" + integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== + dependencies: + chalk "^4.0.0" + jest-diff "^28.1.3" + jest-get-type "^28.0.2" + pretty-format "^28.1.3" + +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +js-sha256@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.1.tgz#712262e8fc9569d6f7f6eea72c0d8e5ccc7c976c" + integrity sha512-o6WSo/LUvY2uC4j7mO50a2ms7E/EAdbP0swigLV+nzHKTTaYnaLIWJ02VdXrsJX0vGedDESQnLsOekr94ryfjg== + +js-sha256@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" + integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" + integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +just-extend@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" + integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loglevel@^1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.2.tgz#c2e028d6c757720107df4e64508530db6621ba08" + integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg== + +long@^5.0.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" + integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== + +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +madge@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/madge/-/madge-8.0.0.tgz#cca4ab66fb388e7b6bf43c1f78dcaab3cad30f50" + integrity sha512-9sSsi3TBPhmkTCIpVQF0SPiChj1L7Rq9kU2KDG1o6v2XH9cCw086MopjVCD+vuoL5v8S77DTbVopTO8OUiQpIw== + dependencies: + chalk "^4.1.2" + commander "^7.2.0" + commondir "^1.0.1" + debug "^4.3.4" + dependency-tree "^11.0.0" + ora "^5.4.1" + pluralize "^8.0.0" + pretty-ms "^7.0.1" + rc "^1.2.8" + stream-to-array "^2.3.0" + ts-graphviz "^2.1.2" + walkdir "^0.4.1" + +magic-string@^0.30.21: + version "0.30.21" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" + integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.5" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1, minimatch@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mocha@10.7.3: + version "10.7.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.3.tgz#ae32003cabbd52b59aece17846056a68eb4b0752" + integrity sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A== + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" + +module-definition@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-6.0.1.tgz#47e73144cc5a9aa31f3380166fddf8e962ccb2e4" + integrity sha512-FeVc50FTfVVQnolk/WQT8MX+2WVcDnTGiq6Wo+/+lJ2ET1bRVi3HG3YlJUfqagNMc/kUlFSoR96AJkxGpKz13g== + dependencies: + ast-module-types "^6.0.1" + node-source-walk "^7.0.1" + +module-lookup-amd@^9.0.3: + version "9.0.5" + resolved "https://registry.yarnpkg.com/module-lookup-amd/-/module-lookup-amd-9.0.5.tgz#2563ba8e4f9dbcda914eac3ba4dc3ad8af80eb7d" + integrity sha512-Rs5FVpVcBYRHPLuhHOjgbRhosaQYLtEo3JIeDIbmNo7mSssi1CTzwMh8v36gAzpbzLGXI9wB/yHh+5+3fY1QVw== + dependencies: + commander "^12.1.0" + glob "^7.2.3" + requirejs "^2.3.7" + requirejs-config-file "^4.0.0" + +ms@^2.0.0, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +nise@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/nise/-/nise-6.1.1.tgz#78ea93cc49be122e44cb7c8fdf597b0e8778b64a" + integrity sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g== + dependencies: + "@sinonjs/commons" "^3.0.1" + "@sinonjs/fake-timers" "^13.0.1" + "@sinonjs/text-encoding" "^0.7.3" + just-extend "^6.2.0" + path-to-regexp "^8.1.0" + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-cache@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" + integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== + dependencies: + clone "2.x" + +node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.3.0: + version "4.8.4" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== + +node-source-walk@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/node-source-walk/-/node-source-walk-7.0.1.tgz#3e4ab8d065377228fd038af7b2d4fb58f61defd3" + integrity sha512-3VW/8JpPqPvnJvseXowjZcirPisssnBuDikk6JIZ8jQzF7KJQX52iPFX4RYYxLycYH7IbMRSPUOga/esVjy5Yg== + dependencies: + "@babel/parser" "^7.26.7" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +object-is@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-sizeof@2.6.5: + version "2.6.5" + resolved "https://registry.yarnpkg.com/object-sizeof/-/object-sizeof-2.6.5.tgz#84ea0760e38876532ab811987dab58a6bbf61230" + integrity sha512-Mu3udRqIsKpneKjIEJ2U/s1KmEgpl+N6cEX1o+dDl2aZ+VW5piHqNgomqAk5YMsDoSkpcA8HnIKx1eqGTKzdfw== + dependencies: + buffer "^6.0.3" + +object.assign@^4.1.4: + version "4.1.7" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + has-symbols "^1.1.0" + object-keys "^1.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +pako@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.9: + version "5.1.9" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.9.tgz#8dd24c3ea8da77dffbc708d94eaf232fd6156e95" + integrity sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg== + dependencies: + asn1.js "^4.10.1" + browserify-aes "^1.2.0" + evp_bytestokey "^1.0.3" + pbkdf2 "^3.1.5" + safe-buffer "^5.2.1" + +parse-ms@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" + integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== + +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@^8.1.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.3.0.tgz#aa818a6981f99321003a08987d3cec9c3474cd1f" + integrity sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pbkdf2@^3.1.2, pbkdf2@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.5.tgz#444a59d7a259a95536c56e80c89de31cc01ed366" + integrity sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ== + dependencies: + create-hash "^1.2.0" + create-hmac "^1.1.7" + ripemd160 "^2.0.3" + safe-buffer "^5.2.1" + sha.js "^2.4.12" + to-buffer "^1.2.1" + +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +possible-typed-array-names@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== + +postcss-values-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-6.0.2.tgz#636edc5b86c953896f1bb0d7a7a6615df00fb76f" + integrity sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw== + dependencies: + color-name "^1.1.4" + is-url-superb "^4.0.0" + quote-unquote "^1.0.0" + +postcss@^8.5.1, postcss@^8.5.6: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +precinct@^12.2.0: + version "12.2.0" + resolved "https://registry.yarnpkg.com/precinct/-/precinct-12.2.0.tgz#6ab18f48034cc534f2c8fedb318f19a11bcd171b" + integrity sha512-NFBMuwIfaJ4SocE9YXPU/n4AcNSoFMVFjP72nvl3cx69j/ke61/hPOWFREVxLkFhhEGnA8ZuVfTqJBa+PK3b5w== + dependencies: + "@dependents/detective-less" "^5.0.1" + commander "^12.1.0" + detective-amd "^6.0.1" + detective-cjs "^6.0.1" + detective-es6 "^5.0.1" + detective-postcss "^7.0.1" + detective-sass "^6.0.1" + detective-scss "^5.0.1" + detective-stylus "^5.0.1" + detective-typescript "^14.0.0" + detective-vue2 "^2.2.0" + module-definition "^6.0.1" + node-source-walk "^7.0.1" + postcss "^8.5.1" + typescript "^5.7.3" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz#6a31f88a4bad6c7adda253de12ba4edaea80ebcd" + integrity sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg== + dependencies: + fast-diff "^1.1.2" + +prettier@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.1.tgz#65271fc9320ce4913c57747a70ce635b30beaa40" + integrity sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ== + +prettier@^2.5.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +pretty-format@^28.0.0, pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== + dependencies: + "@jest/schemas" "^28.1.3" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-ms@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" + integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== + dependencies: + parse-ms "^2.1.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +protobufjs@*: + version "8.0.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-8.0.0.tgz#d884102c1fe8d0b1e2493789ad37bc7ea47c0893" + integrity sha512-jx6+sE9h/UryaCZhsJWbJtTEy47yXoGNYI4z8ZaRncM0zBKeRqjO2JEcOUYwrYGb1WLhXM1FfMzW3annvFv0rw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +protobufjs@^7.4.0, protobufjs@^7.5.3: + version "7.5.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" + integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +public-encrypt@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quote-unquote@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/quote-unquote/-/quote-unquote-1.0.0.tgz#67a9a77148effeaf81a4d428404a710baaac8a0b" + integrity sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +readable-stream@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.4.0, readable-stream@^3.5.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +requirejs-config-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/requirejs-config-file/-/requirejs-config-file-4.0.0.tgz#4244da5dd1f59874038cc1091d078d620abb6ebc" + integrity sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw== + dependencies: + esprima "^4.0.0" + stringify-object "^3.2.1" + +requirejs@^2.3.7: + version "2.3.8" + resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.8.tgz#bca0614b618ab2122462597e44878db7558bbba3" + integrity sha512-7/cTSLOdYkNBNJcDMWf+luFvMriVm7eYxp4BcFCsAX0wF421Vyce5SXP17c+Jd5otXKGNehIonFlyQXSowL6Mw== + +resolve-dependency-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/resolve-dependency-path/-/resolve-dependency-path-4.0.1.tgz#1b9d43e5b62384301e26d040b9fce61ee5db60bd" + integrity sha512-YQftIIC4vzO9UMhO/sCgXukNyiwVRCVaxiWskCBy7Zpqkplm8kTAISZ8O1MoKW1ca6xzgLUBjZTcDgypXvXxiQ== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.22.10: + version "1.22.11" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== + dependencies: + is-core-module "^2.16.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.3.tgz#9be54e4ba5e3559c8eee06a25cd7648bbccdf5a8" + integrity sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA== + dependencies: + hash-base "^3.1.2" + inherits "^2.0.4" + +rpc-websockets@^9.0.2: + version "9.3.3" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.3.3.tgz#b6be8b217f2a19bbc5fc184ef492e992b524556b" + integrity sha512-OkCsBBzrwxX4DoSv4Zlf9DgXKRB0MzVfCFg5MC+fNnf9ktr4SMWjsri0VNZQlDbCnGcImT6KNEv4ZoxktQhdpA== + dependencies: + "@swc/helpers" "^0.5.11" + "@types/uuid" "^8.3.4" + "@types/ws" "^8.2.2" + buffer "^6.0.3" + eventemitter3 "^5.0.1" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-lookup@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/sass-lookup/-/sass-lookup-6.1.0.tgz#a13b1f31dd44d2b4bcd55ba8f72763db4d95bd7c" + integrity sha512-Zx+lVyoWqXZxHuYWlTA17Z5sczJ6braNT2C7rmClw+c4E7r/n911Zwss3h1uHI9reR5AgHZyNHF7c2+VIp5AUA== + dependencies: + commander "^12.1.0" + enhanced-resolve "^5.18.0" + +semver@^7.3.7, semver@^7.5.4, semver@^7.7.3: + version "7.7.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +set-function-length@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +sha.js@^2.4.0, sha.js@^2.4.12, sha.js@^2.4.8: + version "2.4.12" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.12.tgz#eb8b568bf383dfd1867a32c3f2b74eb52bdbf23f" + integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + to-buffer "^1.2.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-swizzle@<0.2.3: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +sinon@18.0.1: + version "18.0.1" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-18.0.1.tgz#464334cdfea2cddc5eda9a4ea7e2e3f0c7a91c5e" + integrity sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw== + dependencies: + "@sinonjs/commons" "^3.0.1" + "@sinonjs/fake-timers" "11.2.2" + "@sinonjs/samsam" "^8.0.0" + diff "^5.2.0" + nise "^6.0.0" + supports-color "^7" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +solana-bankrun-darwin-arm64@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-arm64/-/solana-bankrun-darwin-arm64-0.3.1.tgz#65ab6cd2e74eef260c38251f4c53721cf5b9030f" + integrity sha512-9LWtH/3/WR9fs8Ve/srdo41mpSqVHmRqDoo69Dv1Cupi+o1zMU6HiEPUHEvH2Tn/6TDbPEDf18MYNfReLUqE6A== + +solana-bankrun-darwin-universal@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-universal/-/solana-bankrun-darwin-universal-0.3.1.tgz#bf691457cf046e8739c021ca11e48de5b4fefd45" + integrity sha512-muGHpVYWT7xCd8ZxEjs/bmsbMp8XBqroYGbE4lQPMDUuLvsJEIrjGqs3MbxEFr71sa58VpyvgywWd5ifI7sGIg== + +solana-bankrun-darwin-x64@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/solana-bankrun-darwin-x64/-/solana-bankrun-darwin-x64-0.3.1.tgz#c6f30c0a6bc3e1621ed90ce7562f26e93bf5303f" + integrity sha512-oCaxfHyt7RC3ZMldrh5AbKfy4EH3YRMl8h6fSlMZpxvjQx7nK7PxlRwMeflMnVdkKKp7U8WIDak1lilIPd3/lg== + +solana-bankrun-linux-x64-gnu@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/solana-bankrun-linux-x64-gnu/-/solana-bankrun-linux-x64-gnu-0.3.1.tgz#78b522f1a581955a48f43a8fb560709c11301cfd" + integrity sha512-PfRFhr7igGFNt2Ecfdzh3li9eFPB3Xhmk0Eib17EFIB62YgNUg3ItRnQQFaf0spazFjjJLnglY1TRKTuYlgSVA== + +solana-bankrun-linux-x64-musl@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/solana-bankrun-linux-x64-musl/-/solana-bankrun-linux-x64-musl-0.3.1.tgz#1a044a132138a0084e82406ec7bf4939f06bed68" + integrity sha512-6r8i0NuXg3CGURql8ISMIUqhE7Hx/O7MlIworK4oN08jYrP0CXdLeB/hywNn7Z8d1NXrox/NpYUgvRm2yIzAsQ== + +solana-bankrun@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/solana-bankrun/-/solana-bankrun-0.3.1.tgz#13665ab7c1c15ec2b3354aae56980d0ded514998" + integrity sha512-inRwON7fBU5lPC36HdEqPeDg15FXJYcf77+o0iz9amvkUMJepcwnRwEfTNyMVpVYdgjTOBW5vg+596/3fi1kGA== + dependencies: + "@solana/web3.js" "^1.68.0" + bs58 "^4.0.1" + optionalDependencies: + solana-bankrun-darwin-arm64 "0.3.1" + solana-bankrun-darwin-universal "0.3.1" + solana-bankrun-darwin-x64 "0.3.1" + solana-bankrun-linux-x64-gnu "0.3.1" + solana-bankrun-linux-x64-musl "0.3.1" + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spok@^1.4.3: + version "1.5.5" + resolved "https://registry.yarnpkg.com/spok/-/spok-1.5.5.tgz#a51f7f290a53131d7b7a922dfedc461dda0aed72" + integrity sha512-IrJIXY54sCNFASyHPOY+jEirkiJ26JDqsGiI0Dvhwcnkl0PEWi1PSsrkYql0rzDw8LFVTcA7rdUCAJdE2HE+2Q== + dependencies: + ansicolors "~0.3.2" + find-process "^1.4.7" + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stream-browserify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +stream-chain@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" + integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA== + +stream-json@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.9.1.tgz#e3fec03e984a503718946c170db7d74556c2a187" + integrity sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw== + dependencies: + stream-chain "^2.2.5" + +stream-to-array@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/stream-to-array/-/stream-to-array-2.3.0.tgz#bbf6b39f5f43ec30bc71babcb37557acecf34353" + integrity sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA== + dependencies: + any-promise "^1.1.0" + +strict-event-emitter-types@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-event-emitter-types/-/strict-event-emitter-types-2.0.0.tgz#05e15549cb4da1694478a53543e4e2f4abcf277f" + integrity sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA== + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +stylus-lookup@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/stylus-lookup/-/stylus-lookup-6.1.0.tgz#f0fe88a885b830dc7520f51dd0a7e59e5d3307b4" + integrity sha512-5QSwgxAzXPMN+yugy61C60PhoANdItfdjSEZR8siFwz7yL9jTmV0UBKDCfn3K8GkGB4g0Y9py7vTCX8rFu4/pQ== + dependencies: + commander "^12.1.0" + +superstruct@^0.15.4: + version "0.15.5" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.5.tgz#0f0a8d3ce31313f0d84c6096cd4fa1bfdedc9dab" + integrity sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ== + +superstruct@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== + +supports-color@7.2.0, supports-color@^10.0.0, supports-color@^7, supports-color@^7.1.0, supports-color@^8.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@<4.1.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-4.1.0.tgz#f006d9e2f6b9b6672f86c86c6f76bf52a69f4d91" + integrity sha512-6lY0rDZ5bbZhAPrwpz/nMR6XmeaFmh2itk7YnIyph2jblPmDcKMCPkSdLFTlaX8snBvg7OJmaOL3WRLqMEqcJQ== + dependencies: + has-flag "^5.0.1" + supports-color "^10.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "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== + +tapable@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" + integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + +to-buffer@^1.2.0, to-buffer@^1.2.1, to-buffer@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.2.tgz#ffe59ef7522ada0a2d1cb5dfe03bb8abc3cdc133" + integrity sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw== + dependencies: + isarray "^2.0.5" + safe-buffer "^5.2.1" + typed-array-buffer "^1.0.3" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +traverse-chain@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1" + integrity sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg== + +ts-api-utils@^1.0.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" + integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== + +ts-api-utils@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8" + integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== + +ts-graphviz@^2.1.2: + version "2.1.6" + resolved "https://registry.yarnpkg.com/ts-graphviz/-/ts-graphviz-2.1.6.tgz#007fcb42b4e8c55d26543ece9e86395bd3c3cfd6" + integrity sha512-XyLVuhBVvdJTJr2FJJV2L1pc4MwSjMhcunRVgDE9k4wbb2ee7ORYnPewxMWUav12vxyfUM686MSGsqnVRIInuw== + dependencies: + "@ts-graphviz/adapter" "^2.0.6" + "@ts-graphviz/ast" "^2.0.7" + "@ts-graphviz/common" "^2.1.5" + "@ts-graphviz/core" "^2.0.7" + +ts-log@^2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.7.tgz#4f4512144898b77c9984e91587076fcb8518688e" + integrity sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg== + +ts-node@10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^2.0.3, tslib@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tweetnacl-util@0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-detect@^4.0.0, type-detect@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + +typescript@5.4.5: + version "5.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + +typescript@^5.7.3, typescript@^5.8.3: + version "5.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" + integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== + +undici-types@^7.11.0: + version "7.19.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.19.0.tgz#57b4f8ce26b99fb6a15a1581a4c012b6eec253b9" + integrity sha512-Rjk2OWDZf2eiXVQjY2HyE3XPjqW/wXnSZq0QkOsPKZEnaetNNBObTp91LYfGdB8hRbRZk4HFcM/cONw452B0AQ== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +uuid@8.3.2, uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +vm-browserify@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +walkdir@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39" + integrity sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ== + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-typed-array@^1.1.16, which-typed-array@^1.1.2: + version "1.1.20" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.20.tgz#3fdb7adfafe0ea69157b1509f3a1cd892bd1d122" + integrity sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== + +wrap-ansi@7.0.0, wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^8.18.0, ws@^8.5.0: + version "8.19.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.19.0.tgz#ddc2bdfa5b9ad860204f5a72a4863a8895fd8c8b" + integrity sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaml@^2.6.1: + version "2.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" + integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== + +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs-unparser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@17.7.2, yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zod@4.0.17: + version "4.0.17" + resolved "https://registry.yarnpkg.com/zod/-/zod-4.0.17.tgz#95931170715f73f7426c385c237b7477750d6c8d" + integrity sha512-1PHjlYRevNxxdy2JZ8JcNAw7rX8V9P1AKkP+x/xZfxB0K5FYfuV+Ug6P/6NVSR2jHQ+FzDDoDHS04nYUsOIyLQ== + +zstddec@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/zstddec/-/zstddec-0.1.0.tgz#7050f3f0e0c3978562d0c566b3e5a427d2bad7ec" + integrity sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg== From 6e9e6ef148944b0bec2658d8cb8d878381ddf1fe Mon Sep 17 00:00:00 2001 From: LukasDeco Date: Fri, 23 Jan 2026 15:41:53 -0700 Subject: [PATCH 33/51] fix: sdk version tag release error (#2085) --- .github/workflows/main.yml | 18 ++++++++++++++++-- sdk/src/pyth/pythLazerSubscriber.ts | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 16a2993107..864ddcb888 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -250,7 +250,14 @@ jobs: } echo "version=$PACKAGE_VERSION" >> $GITHUB_OUTPUT - name: Publish to npm - run: npm publish --access=public + run: | + if [[ "$PACKAGE_VERSION" == *beta* ]]; then + npm publish --access=public --tag beta + elif [[ "$PACKAGE_VERSION" == *alpha* ]]; then + npm publish --access=public --tag alpha + else + npm publish --access=public + fi env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Build sdk for browser @@ -260,7 +267,14 @@ jobs: # Update package name for browser version while keeping the same version node -e "const pkg = require('./package.json'); pkg.name = pkg.name + '-browser'; require('fs').writeFileSync('package.json', JSON.stringify(pkg, null, 2));" - name: Publish browser version to npm - run: npm publish --access=public + run: | + if [[ "$PACKAGE_VERSION" == *beta* ]]; then + npm publish --access=public --tag beta + elif [[ "$PACKAGE_VERSION" == *alpha* ]]; then + npm publish --access=public --tag alpha + else + npm publish --access=public + fi env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Notify Slack on failure diff --git a/sdk/src/pyth/pythLazerSubscriber.ts b/sdk/src/pyth/pythLazerSubscriber.ts index 4092e56224..1e40bc1abd 100644 --- a/sdk/src/pyth/pythLazerSubscriber.ts +++ b/sdk/src/pyth/pythLazerSubscriber.ts @@ -297,7 +297,7 @@ export class PythLazerSubscriber { /** * Retrieves the latest Solana-format price message for a specific market. * @param marketIndex - The market index to get price data for - * @returns Hex-encoded price message data, or undefined if not available + * @returns Hex-encoded price message data, or undefined if not found */ async getLatestPriceMessageForMarketIndex( marketIndex: number From ebe6fb34f2432b4acc12a86e27566cfa79d341e0 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:47:23 +0000 Subject: [PATCH 34/51] sdk: release v2.156.0-beta.3 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index 845e0f0988..63318783c6 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.156.0-beta.2 \ No newline at end of file +2.156.0-beta.3 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 6ec9484581..d5bfafaddd 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.156.0-beta.2", + "version": "2.156.0-beta.3", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From ae5bd97853c4299a0ad60e65f13c4cd39850e846 Mon Sep 17 00:00:00 2001 From: wphan <6348407+wphan@users.noreply.github.com> Date: Fri, 23 Jan 2026 16:08:14 -0800 Subject: [PATCH 35/51] sdk: support jupiter api key (#2086) --- sdk/src/jupiter/jupiterClient.ts | 52 ++++++++++++++++++++++++++----- sdk/src/swap/UnifiedSwapClient.ts | 11 ++++++- 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/sdk/src/jupiter/jupiterClient.ts b/sdk/src/jupiter/jupiterClient.ts index a2a2ba483b..b6be1b957e 100644 --- a/sdk/src/jupiter/jupiterClient.ts +++ b/sdk/src/jupiter/jupiterClient.ts @@ -224,16 +224,48 @@ export interface QuoteResponse { } export const RECOMMENDED_JUPITER_API_VERSION = '/v1'; -export const RECOMMENDED_JUPITER_API = 'https://lite-api.jup.ag/swap'; +/** @deprecated Use RECOMMENDED_JUPITER_API instead. lite-api.jup.ag requires migration to api.jup.ag with API key. */ +export const LEGACY_JUPITER_API = 'https://lite-api.jup.ag/swap'; +export const RECOMMENDED_JUPITER_API = 'https://api.jup.ag/swap'; export class JupiterClient { url: string; connection: Connection; lookupTableCahce = new Map(); + private apiKey?: string; - constructor({ connection, url }: { connection: Connection; url?: string }) { + /** + * Create a Jupiter client + * @param connection - Solana connection + * @param url - Optional custom API URL. Defaults to https://api.jup.ag/swap + * @param apiKey - API key for Jupiter API. Required for api.jup.ag (free tier available at https://portal.jup.ag) + */ + constructor({ + connection, + url, + apiKey, + }: { + connection: Connection; + url?: string; + apiKey?: string; + }) { this.connection = connection; this.url = url ?? RECOMMENDED_JUPITER_API; + this.apiKey = apiKey; + } + + /** + * Get the headers for API requests, including API key if configured + */ + private getHeaders(contentType?: string): Record { + const headers: Record = {}; + if (contentType) { + headers['Content-Type'] = contentType; + } + if (this.apiKey) { + headers['x-api-key'] = this.apiKey; + } + return headers; } /** @@ -289,11 +321,17 @@ export class JupiterClient { params.delete('maxAccounts'); } const apiVersionParam = - this.url === RECOMMENDED_JUPITER_API + this.url === RECOMMENDED_JUPITER_API || this.url === LEGACY_JUPITER_API ? RECOMMENDED_JUPITER_API_VERSION : ''; + const headers = this.getHeaders(); + const fetchOptions: RequestInit = + Object.keys(headers).length > 0 ? { headers } : {}; const quote = await ( - await fetch(`${this.url}${apiVersionParam}/quote?${params.toString()}`) + await fetch( + `${this.url}${apiVersionParam}/quote?${params.toString()}`, + fetchOptions + ) ).json(); return quote as QuoteResponse; } @@ -318,15 +356,13 @@ export class JupiterClient { } const apiVersionParam = - this.url === RECOMMENDED_JUPITER_API + this.url === RECOMMENDED_JUPITER_API || this.url === LEGACY_JUPITER_API ? RECOMMENDED_JUPITER_API_VERSION : ''; const resp = await ( await fetch(`${this.url}${apiVersionParam}/swap`, { method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, + headers: this.getHeaders('application/json'), body: JSON.stringify({ quoteResponse: quote, userPublicKey, diff --git a/sdk/src/swap/UnifiedSwapClient.ts b/sdk/src/swap/UnifiedSwapClient.ts index 6ea30d6794..35219af746 100644 --- a/sdk/src/swap/UnifiedSwapClient.ts +++ b/sdk/src/swap/UnifiedSwapClient.ts @@ -73,6 +73,14 @@ export class UnifiedSwapClient { private client: JupiterClient | TitanClient; private clientType: SwapClientType; + /** + * Create a unified swap client + * @param clientType - 'jupiter' or 'titan' + * @param connection - Solana connection + * @param authToken - For Titan: auth token (required when not using proxy). For Jupiter: API key (required for api.jup.ag, get free key at https://portal.jup.ag) + * @param url - Optional custom URL + * @param proxyUrl - Optional proxy URL for Titan + */ constructor({ clientType, connection, @@ -82,7 +90,7 @@ export class UnifiedSwapClient { }: { clientType: SwapClientType; connection: Connection; - authToken?: string; // Required for Titan when not using proxy, optional for Jupiter + authToken?: string; // For Titan: auth token. For Jupiter: API key (required for api.jup.ag) url?: string; // Optional custom URL proxyUrl?: string; // Optional proxy URL for Titan }) { @@ -92,6 +100,7 @@ export class UnifiedSwapClient { this.client = new JupiterClient({ connection, url, + apiKey: authToken, }); } else if (clientType === 'titan') { this.client = new TitanClient({ From 7d7a9bc711bf726ed81f289d8f52178ea08d93a3 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 24 Jan 2026 00:13:33 +0000 Subject: [PATCH 36/51] sdk: release v2.156.0-beta.4 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index 63318783c6..97dbc8736a 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.156.0-beta.3 \ No newline at end of file +2.156.0-beta.4 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index d5bfafaddd..432d2f6d03 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.156.0-beta.3", + "version": "2.156.0-beta.4", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From dd856fce6c1f8bc6485ebbef9cd381aecc64a841 Mon Sep 17 00:00:00 2001 From: lowkeynicc <85139158+lowkeynicc@users.noreply.github.com> Date: Mon, 26 Jan 2026 11:06:25 -0500 Subject: [PATCH 37/51] add other funxyz address (#2089) --- programs/drift/src/ids.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/programs/drift/src/ids.rs b/programs/drift/src/ids.rs index 80505bc83f..d2c9adcf5a 100644 --- a/programs/drift/src/ids.rs +++ b/programs/drift/src/ids.rs @@ -140,5 +140,7 @@ pub const WHITELISTED_SWAP_PROGRAMS: &[solana_program::pubkey::Pubkey] = &[ titan_mainnet_argos_v1::id(), ]; -pub const WHITELISTED_EXTERNAL_DEPOSITORS: [Pubkey; 1] = - [pubkey!("zApVWDs3nSychNnUXSS2czhY78Ycopa15zELrK2gAdM")]; +pub const WHITELISTED_EXTERNAL_DEPOSITORS: [Pubkey; 2] = [ + pubkey!("zApVWDs3nSychNnUXSS2czhY78Ycopa15zELrK2gAdM"), + pubkey!("4B62MS5gxpRZ2hwkGCNAAayA5f7LYZRW4z1ASSfU3SXo"), +]; From a0aa7d11b6e52a73b0c90f7559459ddb5795d956 Mon Sep 17 00:00:00 2001 From: LukasDeco Date: Mon, 26 Jan 2026 09:32:54 -0700 Subject: [PATCH 38/51] fix: use latest tag for our beta versions for now (#2090) --- .github/workflows/main.yml | 2 +- sdk/src/pyth/pythLazerSubscriber.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 864ddcb888..64a0cbb748 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -252,7 +252,7 @@ jobs: - name: Publish to npm run: | if [[ "$PACKAGE_VERSION" == *beta* ]]; then - npm publish --access=public --tag beta + npm publish --access=public --tag latest elif [[ "$PACKAGE_VERSION" == *alpha* ]]; then npm publish --access=public --tag alpha else diff --git a/sdk/src/pyth/pythLazerSubscriber.ts b/sdk/src/pyth/pythLazerSubscriber.ts index 1e40bc1abd..2059805020 100644 --- a/sdk/src/pyth/pythLazerSubscriber.ts +++ b/sdk/src/pyth/pythLazerSubscriber.ts @@ -270,7 +270,7 @@ export class PythLazerSubscriber { } /** - * Unsubscribes from all Pyth Lazer price feeds and shuts down WebSocket connections. + * Unsubscribes from all Pyth Lazer price feeds and closes WebSocket connections. */ async unsubscribe() { this.isUnsubscribing = true; From b6290514bbd538fcb17b94c3d49d8f7ae27f7023 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 16:39:47 +0000 Subject: [PATCH 39/51] sdk: release v2.156.0-beta.5 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index 97dbc8736a..b025d4c9e5 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.156.0-beta.4 \ No newline at end of file +2.156.0-beta.5 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 432d2f6d03..80727f4fa6 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.156.0-beta.4", + "version": "2.156.0-beta.5", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From 667feb94b2b6348ac9201a112a851e0667fe634e Mon Sep 17 00:00:00 2001 From: LukasDeco Date: Mon, 26 Jan 2026 13:41:47 -0700 Subject: [PATCH 40/51] feat: more pyth type exports (#2091) --- sdk/src/index.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sdk/src/index.ts b/sdk/src/index.ts index 7f2668dc83..392178a202 100644 --- a/sdk/src/index.ts +++ b/sdk/src/index.ts @@ -34,7 +34,13 @@ export * from './accounts/types'; export * from './addresses/pda'; export * from './adminClient'; export * from './assert/assert'; -export { PythLazerSubscriber, PythLazerPriceFeedArray } from './pyth'; +export { + PythLazerSubscriber, + PythLazerPriceFeedArray, + PriceUpdateAccount, + PythSolanaReceiver, + WormholeCoreBridgeSolana, +} from './pyth'; export * from './testClient'; export * from './user'; export * from './userConfig'; From 4394ff75659cf4bebb535b6569ffe72165f2c5c0 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 20:46:57 +0000 Subject: [PATCH 41/51] sdk: release v2.156.0-beta.6 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index b025d4c9e5..7ebba111aa 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.156.0-beta.5 \ No newline at end of file +2.156.0-beta.6 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 80727f4fa6..7888b90815 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.156.0-beta.5", + "version": "2.156.0-beta.6", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From bcaf43e605b5cb501906d3e1147d4ddb4010105b Mon Sep 17 00:00:00 2001 From: wphan <6348407+wphan@users.noreply.github.com> Date: Mon, 26 Jan 2026 23:05:07 -0800 Subject: [PATCH 42/51] v2.156.0 --- CHANGELOG.md | 8 ++++++++ Cargo.lock | 2 +- programs/drift/Cargo.toml | 2 +- sdk/package.json | 2 +- sdk/src/idl/drift.json | 2 +- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff7be87dc7..2dcc9843b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Breaking +## [2.156.0] - 2026-01-26 + +### Features + +### Fixes + +### Breaking + ## [2.155.0] - 2026-01-20 ### Features diff --git a/Cargo.lock b/Cargo.lock index 91ca9c2242..c3c1af5abc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -956,7 +956,7 @@ dependencies = [ [[package]] name = "drift" -version = "2.155.0" +version = "2.156.0" dependencies = [ "anchor-lang", "anchor-spl", diff --git a/programs/drift/Cargo.toml b/programs/drift/Cargo.toml index f01a7205bb..d9308c75f2 100644 --- a/programs/drift/Cargo.toml +++ b/programs/drift/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "drift" -version = "2.155.0" +version = "2.156.0" description = "Created with Anchor" edition = "2018" diff --git a/sdk/package.json b/sdk/package.json index 7888b90815..6fd83f0c94 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.156.0-beta.6", + "version": "2.156.0", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", diff --git a/sdk/src/idl/drift.json b/sdk/src/idl/drift.json index 9685190701..92afad4e69 100644 --- a/sdk/src/idl/drift.json +++ b/sdk/src/idl/drift.json @@ -1,5 +1,5 @@ { - "version": "2.155.0", + "version": "2.156.0", "name": "drift", "instructions": [ { From 516151a85f886d757c4f57174222467b7f9a0293 Mon Sep 17 00:00:00 2001 From: GitHub Actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 07:13:47 +0000 Subject: [PATCH 43/51] sdk: release v2.157.0-beta.0 --- sdk/VERSION | 2 +- sdk/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/VERSION b/sdk/VERSION index 7ebba111aa..b164179dec 100644 --- a/sdk/VERSION +++ b/sdk/VERSION @@ -1 +1 @@ -2.156.0-beta.6 \ No newline at end of file +2.157.0-beta.0 \ No newline at end of file diff --git a/sdk/package.json b/sdk/package.json index 6fd83f0c94..1c4dc0516f 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@drift-labs/sdk", - "version": "2.156.0", + "version": "2.157.0-beta.0", "main": "lib/node/index.js", "types": "lib/node/index.d.ts", "module": "./lib/browser/index.js", From 2d43d829883427da8aefda11b14daa22c7cf07ef Mon Sep 17 00:00:00 2001 From: Nick Caradonna Date: Tue, 27 Jan 2026 22:48:33 -0500 Subject: [PATCH 44/51] add scale orders ix --- package.json | 3 +- programs/drift/src/controller/mod.rs | 1 + programs/drift/src/controller/scale_orders.rs | 558 ++++++++++++++++++ programs/drift/src/error.rs | 4 + programs/drift/src/instructions/user.rs | 81 ++- programs/drift/src/lib.rs | 9 +- programs/drift/src/state/order_params.rs | 37 ++ sdk/src/driftClient.ts | 88 +++ sdk/src/idl/drift.json | 153 ++++- sdk/src/types.ts | 49 ++ test-scripts/run-anchor-tests.sh | 1 + test-scripts/single-anchor-test.sh | 6 +- tests/scaleOrders.ts | 489 +++++++++++++++ 13 files changed, 1453 insertions(+), 26 deletions(-) create mode 100644 programs/drift/src/controller/scale_orders.rs create mode 100644 tests/scaleOrders.ts diff --git a/package.json b/package.json index 61b1b4ed67..213f3e1869 100644 --- a/package.json +++ b/package.json @@ -93,5 +93,6 @@ "chalk-template": "<1.1.1", "supports-hyperlinks": "<4.1.1", "has-ansi": "<6.0.1" - } + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/programs/drift/src/controller/mod.rs b/programs/drift/src/controller/mod.rs index db15dfddf5..0c37d5185c 100644 --- a/programs/drift/src/controller/mod.rs +++ b/programs/drift/src/controller/mod.rs @@ -9,6 +9,7 @@ pub mod pnl; pub mod position; pub mod repeg; pub mod revenue_share; +pub mod scale_orders; pub mod spot_balance; pub mod spot_position; pub mod token; diff --git a/programs/drift/src/controller/scale_orders.rs b/programs/drift/src/controller/scale_orders.rs new file mode 100644 index 0000000000..b416015164 --- /dev/null +++ b/programs/drift/src/controller/scale_orders.rs @@ -0,0 +1,558 @@ +use crate::controller::position::PositionDirection; +use crate::error::{DriftResult, ErrorCode}; +use crate::math::safe_math::SafeMath; +use crate::state::order_params::{OrderParams, ScaleOrderParams, SizeDistribution}; +use crate::state::user::{MarketType, OrderTriggerCondition, OrderType}; +use crate::validate; +use solana_program::msg; + +/// Maximum number of orders allowed in a scale order +pub const MAX_SCALE_ORDER_COUNT: u8 = 10; +/// Minimum number of orders required for a scale order +pub const MIN_SCALE_ORDER_COUNT: u8 = 2; + +/// Validates the scale order parameters +pub fn validate_scale_order_params( + params: &ScaleOrderParams, + order_step_size: u64, +) -> DriftResult<()> { + validate!( + params.order_count >= MIN_SCALE_ORDER_COUNT, + ErrorCode::InvalidOrderScaleOrderCount, + "order_count must be at least {}", + MIN_SCALE_ORDER_COUNT + )?; + + validate!( + params.order_count <= MAX_SCALE_ORDER_COUNT, + ErrorCode::InvalidOrderScaleOrderCount, + "order_count must be at most {}", + MAX_SCALE_ORDER_COUNT + )?; + + validate!( + params.start_price != params.end_price, + ErrorCode::InvalidOrderScalePriceRange, + "start_price and end_price cannot be equal" + )?; + + // For long orders, start price should be lower than end price + // For short orders, start price should be higher than end price + match params.direction { + PositionDirection::Long => { + validate!( + params.start_price < params.end_price, + ErrorCode::InvalidOrderScalePriceRange, + "for long scale orders, start_price must be less than end_price" + )?; + } + PositionDirection::Short => { + validate!( + params.start_price > params.end_price, + ErrorCode::InvalidOrderScalePriceRange, + "for short scale orders, start_price must be greater than end_price" + )?; + } + } + + // Validate that total size can be distributed among all orders meeting minimum step size + let min_total_size = order_step_size.safe_mul(params.order_count as u64)?; + validate!( + params.total_base_asset_amount >= min_total_size, + ErrorCode::OrderAmountTooSmall, + "total_base_asset_amount must be at least {} (order_step_size * order_count)", + min_total_size + )?; + + Ok(()) +} + +/// Calculate evenly distributed prices between start and end price +pub fn calculate_price_distribution(params: &ScaleOrderParams) -> DriftResult> { + let order_count = params.order_count as u64; + + if order_count == 1 { + return Ok(vec![params.start_price]); + } + + if order_count == 2 { + return Ok(vec![params.start_price, params.end_price]); + } + + let (min_price, max_price) = if params.start_price < params.end_price { + (params.start_price, params.end_price) + } else { + (params.end_price, params.start_price) + }; + + let price_range = max_price.safe_sub(min_price)?; + let price_step = price_range.safe_div(order_count.safe_sub(1)?)?; + + let mut prices = Vec::with_capacity(params.order_count as usize); + for i in 0..params.order_count { + let price = if params.start_price < params.end_price { + params.start_price.safe_add(price_step.safe_mul(i as u64)?)? + } else { + params.start_price.safe_sub(price_step.safe_mul(i as u64)?)? + }; + prices.push(price); + } + + Ok(prices) +} + +/// Calculate order sizes based on size distribution strategy +pub fn calculate_size_distribution( + params: &ScaleOrderParams, + order_step_size: u64, +) -> DriftResult> { + match params.size_distribution { + SizeDistribution::Flat => calculate_flat_sizes(params, order_step_size), + SizeDistribution::Ascending => calculate_scaled_sizes(params, order_step_size, false), + SizeDistribution::Descending => calculate_scaled_sizes(params, order_step_size, true), + } +} + +/// Calculate flat (equal) distribution of sizes +fn calculate_flat_sizes(params: &ScaleOrderParams, order_step_size: u64) -> DriftResult> { + let order_count = params.order_count as u64; + let base_size = params.total_base_asset_amount.safe_div(order_count)?; + // Round down to step size + let rounded_size = base_size + .safe_div(order_step_size)? + .safe_mul(order_step_size)?; + + let mut sizes = vec![rounded_size; params.order_count as usize]; + + // Add remainder to the last order + let total_distributed: u64 = sizes.iter().sum(); + let remainder = params.total_base_asset_amount.safe_sub(total_distributed)?; + if remainder > 0 { + if let Some(last) = sizes.last_mut() { + *last = last.safe_add(remainder)?; + } + } + + Ok(sizes) +} + +/// Calculate scaled (ascending/descending) distribution of sizes +/// Uses multipliers: 1x, 1.5x, 2x, 2.5x, ... for ascending +fn calculate_scaled_sizes( + params: &ScaleOrderParams, + order_step_size: u64, + descending: bool, +) -> DriftResult> { + let order_count = params.order_count as usize; + + // Calculate multipliers: 1.0, 1.5, 2.0, 2.5, ... (using 0.5 step) + // Sum of multipliers = n/2 * (first + last) = n/2 * (1 + (1 + 0.5*(n-1))) + // For precision, multiply everything by 2: multipliers become 2, 3, 4, 5, ... + // Sum = n/2 * (2 + (2 + (n-1))) = n/2 * (3 + n) = n*(n+3)/2 + let multiplier_sum = (order_count * (order_count + 3)) / 2; + + // Base unit size (multiplied by 2 for precision) + let base_unit = params + .total_base_asset_amount + .safe_mul(2)? + .safe_div(multiplier_sum as u64)?; + + let mut sizes = Vec::with_capacity(order_count); + let mut total = 0u64; + + for i in 0..order_count { + // Multiplier for position i is (2 + i) when using 0.5 step scaled by 2 + let multiplier = (2 + i) as u64; + let raw_size = base_unit.safe_mul(multiplier)?.safe_div(2)?; + // Round to step size + let rounded_size = raw_size + .safe_div(order_step_size)? + .safe_mul(order_step_size)? + .max(order_step_size); // Ensure at least step size + sizes.push(rounded_size); + total = total.safe_add(rounded_size)?; + } + + // Adjust last order to account for rounding + if total != params.total_base_asset_amount { + if let Some(last) = sizes.last_mut() { + if total > params.total_base_asset_amount { + let diff = total.safe_sub(params.total_base_asset_amount)?; + *last = last.saturating_sub(diff).max(order_step_size); + } else { + let diff = params.total_base_asset_amount.safe_sub(total)?; + *last = last.safe_add(diff)?; + } + } + } + + if descending { + sizes.reverse(); + } + + Ok(sizes) +} + +/// Expand scale order params into individual OrderParams +pub fn expand_scale_order_params( + params: &ScaleOrderParams, + order_step_size: u64, +) -> DriftResult> { + validate_scale_order_params(params, order_step_size)?; + + let prices = calculate_price_distribution(params)?; + let sizes = calculate_size_distribution(params, order_step_size)?; + + let mut order_params = Vec::with_capacity(params.order_count as usize); + + for (i, (price, size)) in prices.iter().zip(sizes.iter()).enumerate() { + order_params.push(OrderParams { + order_type: OrderType::Limit, + market_type: MarketType::Perp, + direction: params.direction, + user_order_id: 0, + base_asset_amount: *size, + price: *price, + market_index: params.market_index, + reduce_only: params.reduce_only, + post_only: params.post_only, + bit_flags: if i == 0 { params.bit_flags } else { 0 }, + max_ts: params.max_ts, + trigger_price: None, + trigger_condition: OrderTriggerCondition::Above, + oracle_price_offset: None, + auction_duration: None, + auction_start_price: None, + auction_end_price: None, + }); + } + + Ok(order_params) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::state::order_params::{PostOnlyParam, ScaleOrderParams, SizeDistribution}; + use crate::{PositionDirection, BASE_PRECISION_U64, PRICE_PRECISION_U64}; + + #[test] + fn test_validate_order_count_bounds() { + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + // Test minimum order count + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, + order_count: 1, // Below minimum + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + assert!(validate_scale_order_params(¶ms, step_size).is_err()); + + // Test maximum order count + let params = ScaleOrderParams { + order_count: 11, // Above maximum + ..params + }; + assert!(validate_scale_order_params(¶ms, step_size).is_err()); + + // Test valid order count + let params = ScaleOrderParams { + order_count: 5, + ..params + }; + assert!(validate_scale_order_params(¶ms, step_size).is_ok()); + } + + #[test] + fn test_validate_price_range() { + let step_size = BASE_PRECISION_U64 / 1000; + + // Long orders: start_price must be < end_price + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, // Wrong: higher than end + end_price: 100 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + assert!(validate_scale_order_params(¶ms, step_size).is_err()); + + // Short orders: start_price must be > end_price + let params = ScaleOrderParams { + direction: PositionDirection::Short, + start_price: 100 * PRICE_PRECISION_U64, // Wrong: lower than end + end_price: 110 * PRICE_PRECISION_U64, + ..params + }; + assert!(validate_scale_order_params(¶ms, step_size).is_err()); + + // Valid long order + let params = ScaleOrderParams { + direction: PositionDirection::Long, + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, + ..params + }; + assert!(validate_scale_order_params(¶ms, step_size).is_ok()); + + // Valid short order + let params = ScaleOrderParams { + direction: PositionDirection::Short, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + ..params + }; + assert!(validate_scale_order_params(¶ms, step_size).is_ok()); + } + + #[test] + fn test_price_distribution_long() { + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let prices = calculate_price_distribution(¶ms).unwrap(); + assert_eq!(prices.len(), 5); + assert_eq!(prices[0], 100 * PRICE_PRECISION_U64); + assert_eq!(prices[1], 102500000); // 102.5 + assert_eq!(prices[2], 105 * PRICE_PRECISION_U64); + assert_eq!(prices[3], 107500000); // 107.5 + assert_eq!(prices[4], 110 * PRICE_PRECISION_U64); + } + + #[test] + fn test_price_distribution_short() { + let params = ScaleOrderParams { + direction: PositionDirection::Short, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let prices = calculate_price_distribution(¶ms).unwrap(); + assert_eq!(prices.len(), 5); + assert_eq!(prices[0], 110 * PRICE_PRECISION_U64); + assert_eq!(prices[1], 107500000); // 107.5 + assert_eq!(prices[2], 105 * PRICE_PRECISION_U64); + assert_eq!(prices[3], 102500000); // 102.5 + assert_eq!(prices[4], 100 * PRICE_PRECISION_U64); + } + + #[test] + fn test_flat_size_distribution() { + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, // 1.0 + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let sizes = calculate_size_distribution(¶ms, step_size).unwrap(); + assert_eq!(sizes.len(), 5); + + // All sizes should be roughly equal + let total: u64 = sizes.iter().sum(); + assert_eq!(total, BASE_PRECISION_U64); + + // Check that all sizes are roughly 0.2 (200_000_000) + for (i, size) in sizes.iter().enumerate() { + if i < 4 { + assert_eq!(*size, 200000000); // 0.2 + } + } + } + + #[test] + fn test_ascending_size_distribution() { + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, // 1.0 + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Ascending, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let sizes = calculate_size_distribution(¶ms, step_size).unwrap(); + assert_eq!(sizes.len(), 5); + + // Ascending: first should be smallest, last should be largest + assert!(sizes[0] < sizes[4]); + assert!(sizes[0] <= sizes[1]); + assert!(sizes[1] <= sizes[2]); + assert!(sizes[2] <= sizes[3]); + assert!(sizes[3] <= sizes[4]); + + let total: u64 = sizes.iter().sum(); + assert_eq!(total, BASE_PRECISION_U64); + } + + #[test] + fn test_descending_size_distribution() { + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, // 1.0 + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Descending, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let sizes = calculate_size_distribution(¶ms, step_size).unwrap(); + assert_eq!(sizes.len(), 5); + + // Descending: first should be largest, last should be smallest + assert!(sizes[0] > sizes[4]); + assert!(sizes[0] >= sizes[1]); + assert!(sizes[1] >= sizes[2]); + assert!(sizes[2] >= sizes[3]); + assert!(sizes[3] >= sizes[4]); + + let total: u64 = sizes.iter().sum(); + assert_eq!(total, BASE_PRECISION_U64); + } + + #[test] + fn test_expand_to_order_params() { + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 1, + total_base_asset_amount: BASE_PRECISION_U64, // 1.0 + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, + order_count: 3, + size_distribution: SizeDistribution::Flat, + reduce_only: true, + post_only: PostOnlyParam::MustPostOnly, + bit_flags: 2, // High leverage mode + max_ts: Some(12345), + }; + + let order_params = expand_scale_order_params(¶ms, step_size).unwrap(); + assert_eq!(order_params.len(), 3); + + // Check first order has bit flags + assert_eq!(order_params[0].bit_flags, 2); + // Other orders should have 0 bit flags + assert_eq!(order_params[1].bit_flags, 0); + assert_eq!(order_params[2].bit_flags, 0); + + // Check common properties + for op in &order_params { + assert_eq!(op.market_index, 1); + assert_eq!(op.reduce_only, true); + assert_eq!(op.post_only, PostOnlyParam::MustPostOnly); + assert_eq!(op.max_ts, Some(12345)); + assert!(matches!(op.direction, PositionDirection::Long)); + } + + // Check prices are distributed + assert_eq!(order_params[0].price, 100 * PRICE_PRECISION_U64); + assert_eq!(order_params[1].price, 105 * PRICE_PRECISION_U64); + assert_eq!(order_params[2].price, 110 * PRICE_PRECISION_U64); + + // Check total size + let total: u64 = order_params.iter().map(|op| op.base_asset_amount).sum(); + assert_eq!(total, BASE_PRECISION_U64); + } + + #[test] + fn test_two_orders_price_distribution() { + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, + order_count: 2, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let prices = calculate_price_distribution(¶ms).unwrap(); + assert_eq!(prices.len(), 2); + assert_eq!(prices[0], 100 * PRICE_PRECISION_U64); + assert_eq!(prices[1], 110 * PRICE_PRECISION_U64); + } + + #[test] + fn test_validate_min_total_size() { + let step_size = BASE_PRECISION_U64 / 10; // 0.1 + + // Total size is too small for 5 orders with this step size + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64 / 20, // 0.05 - not enough + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + assert!(validate_scale_order_params(¶ms, step_size).is_err()); + } +} diff --git a/programs/drift/src/error.rs b/programs/drift/src/error.rs index ea7cc04d87..f62258f271 100644 --- a/programs/drift/src/error.rs +++ b/programs/drift/src/error.rs @@ -696,6 +696,10 @@ pub enum ErrorCode { MarketIndexNotFoundAmmCache, #[msg("Invalid Isolated Perp Market")] InvalidIsolatedPerpMarket, + #[msg("Invalid scale order count - must be between 2 and 10")] + InvalidOrderScaleOrderCount, + #[msg("Invalid scale order price range")] + InvalidOrderScalePriceRange, } #[macro_export] diff --git a/programs/drift/src/instructions/user.rs b/programs/drift/src/instructions/user.rs index 893fe5fad0..5a0ea114af 100644 --- a/programs/drift/src/instructions/user.rs +++ b/programs/drift/src/instructions/user.rs @@ -78,7 +78,7 @@ use crate::state::margin_calculation::MarginContext; use crate::state::oracle::StrictOraclePrice; use crate::state::order_params::{ parse_optional_params, ModifyOrderParams, OrderParams, PlaceAndTakeOrderSuccessCondition, - PlaceOrderOptions, PostOnlyParam, + PlaceOrderOptions, PostOnlyParam, ScaleOrderParams, }; use crate::state::paused_operations::{PerpOperation, SpotOperation}; use crate::state::perp_market::MarketStatus; @@ -2600,12 +2600,17 @@ pub fn handle_modify_order_by_user_order_id<'c: 'info, 'info>( Ok(()) } -#[access_control( - exchange_not_paused(&ctx.accounts.state) -)] -pub fn handle_place_orders<'c: 'info, 'info>( - ctx: Context<'_, '_, 'c, 'info, PlaceOrder>, - params: Vec, +/// Input for place_orders_impl - either direct OrderParams or ScaleOrderParams to expand +enum PlaceOrdersInput { + Orders(Vec), + ScaleOrders(ScaleOrderParams), +} + +/// Internal implementation for placing multiple orders. +/// Used by both handle_place_orders and handle_place_scale_perp_orders. +fn place_orders_impl<'c: 'info, 'info>( + ctx: &Context<'_, '_, 'c, 'info, PlaceOrder>, + input: PlaceOrdersInput, ) -> Result<()> { let clock = &Clock::get()?; let state = &ctx.accounts.state; @@ -2625,8 +2630,25 @@ pub fn handle_place_orders<'c: 'info, 'info>( let high_leverage_mode_config = get_high_leverage_mode_config(&mut remaining_accounts)?; + // Convert input to order params, expanding scale orders if needed + let (order_params, validate_ioc) = match input { + PlaceOrdersInput::Orders(params) => (params, true), + PlaceOrdersInput::ScaleOrders(scale_params) => { + let market = perp_market_map.get_ref(&scale_params.market_index)?; + let order_step_size = market.amm.order_step_size; + drop(market); + + let expanded = controller::scale_orders::expand_scale_order_params(&scale_params, order_step_size) + .map_err(|e| { + msg!("Failed to expand scale order params: {:?}", e); + ErrorCode::InvalidOrder + })?; + (expanded, false) + } + }; + validate!( - params.len() <= 32, + order_params.len() <= 32, ErrorCode::DefaultError, "max 32 order params" )?; @@ -2634,13 +2656,15 @@ pub fn handle_place_orders<'c: 'info, 'info>( let user_key = ctx.accounts.user.key(); let mut user = load_mut!(ctx.accounts.user)?; - let num_orders = params.len(); - for (i, params) in params.iter().enumerate() { - validate!( - !params.is_immediate_or_cancel(), - ErrorCode::InvalidOrderIOC, - "immediate_or_cancel order must be in place_and_make or place_and_take" - )?; + let num_orders = order_params.len(); + for (i, params) in order_params.iter().enumerate() { + if validate_ioc { + validate!( + !params.is_immediate_or_cancel(), + ErrorCode::InvalidOrderIOC, + "immediate_or_cancel order must be in place_and_make or place_and_take" + )?; + } // only enforce margin on last order and only try to expire on first order let options = PlaceOrderOptions { @@ -2654,7 +2678,7 @@ pub fn handle_place_orders<'c: 'info, 'info>( if params.market_type == MarketType::Perp { controller::orders::place_perp_order( - &ctx.accounts.state, + state, &mut user, user_key, &perp_market_map, @@ -2666,9 +2690,10 @@ pub fn handle_place_orders<'c: 'info, 'info>( options, &mut None, )?; - } else { + } else if validate_ioc { + // Only place spot orders for regular place_orders, not scale orders controller::orders::place_spot_order( - &ctx.accounts.state, + state, &mut user, user_key, &perp_market_map, @@ -2684,6 +2709,26 @@ pub fn handle_place_orders<'c: 'info, 'info>( Ok(()) } +#[access_control( + exchange_not_paused(&ctx.accounts.state) +)] +pub fn handle_place_orders<'c: 'info, 'info>( + ctx: Context<'_, '_, 'c, 'info, PlaceOrder>, + params: Vec, +) -> Result<()> { + place_orders_impl(&ctx, PlaceOrdersInput::Orders(params)) +} + +#[access_control( + exchange_not_paused(&ctx.accounts.state) +)] +pub fn handle_place_scale_perp_orders<'c: 'info, 'info>( + ctx: Context<'_, '_, 'c, 'info, PlaceOrder>, + params: ScaleOrderParams, +) -> Result<()> { + place_orders_impl(&ctx, PlaceOrdersInput::ScaleOrders(params)) +} + #[access_control( fill_not_paused(&ctx.accounts.state) )] diff --git a/programs/drift/src/lib.rs b/programs/drift/src/lib.rs index fe0b403e4b..fad1ca1340 100644 --- a/programs/drift/src/lib.rs +++ b/programs/drift/src/lib.rs @@ -12,7 +12,7 @@ use state::oracle::OracleSource; use crate::controller::position::PositionDirection; use crate::state::if_rebalance_config::IfRebalanceConfigParams; use crate::state::oracle::PrelaunchOracleParams; -use crate::state::order_params::{ModifyOrderParams, OrderParams}; +use crate::state::order_params::{ModifyOrderParams, OrderParams, ScaleOrderParams}; use crate::state::perp_market::{ContractTier, MarketStatus}; use crate::state::settle_pnl_mode::SettlePnlMode; use crate::state::spot_market::AssetTier; @@ -367,6 +367,13 @@ pub mod drift { handle_place_orders(ctx, params) } + pub fn place_scale_perp_orders<'c: 'info, 'info>( + ctx: Context<'_, '_, 'c, 'info, PlaceOrder>, + params: ScaleOrderParams, + ) -> Result<()> { + handle_place_scale_perp_orders(ctx, params) + } + pub fn begin_swap<'c: 'info, 'info>( ctx: Context<'_, '_, 'c, 'info, Swap<'info>>, in_market_index: u16, diff --git a/programs/drift/src/state/order_params.rs b/programs/drift/src/state/order_params.rs index a5b81b8bb6..432eee1dd7 100644 --- a/programs/drift/src/state/order_params.rs +++ b/programs/drift/src/state/order_params.rs @@ -1027,3 +1027,40 @@ pub fn parse_optional_params(optional_params: Option) -> (u8, u8) { None => (0, 100), } } + +/// How to distribute order sizes across scale orders +#[derive(AnchorSerialize, AnchorDeserialize, Clone, Copy, Default, Eq, PartialEq, Debug)] +pub enum SizeDistribution { + /// Equal size for all orders + #[default] + Flat, + /// Smallest orders at start price, largest at end price + Ascending, + /// Largest orders at start price, smallest at end price + Descending, +} + +/// Parameters for placing scale orders - multiple limit orders distributed across a price range +#[derive(AnchorSerialize, AnchorDeserialize, Clone, Default, Eq, PartialEq, Debug)] +pub struct ScaleOrderParams { + pub direction: PositionDirection, + pub market_index: u16, + /// Total base asset amount to distribute across all orders + pub total_base_asset_amount: u64, + /// Starting price for the scale (in PRICE_PRECISION) + pub start_price: u64, + /// Ending price for the scale (in PRICE_PRECISION) + pub end_price: u64, + /// Number of orders to place (min 2, max 10) + pub order_count: u8, + /// How to distribute sizes across orders + pub size_distribution: SizeDistribution, + /// Whether orders should be reduce-only + pub reduce_only: bool, + /// Post-only setting for all orders + pub post_only: PostOnlyParam, + /// Bit flags (e.g., for high leverage mode) + pub bit_flags: u8, + /// Maximum timestamp for orders to be valid + pub max_ts: Option, +} diff --git a/sdk/src/driftClient.ts b/sdk/src/driftClient.ts index 132a507270..1877dcbb69 100644 --- a/sdk/src/driftClient.ts +++ b/sdk/src/driftClient.ts @@ -48,9 +48,11 @@ import { PositionDirection, ReferrerInfo, ReferrerNameAccount, + ScaleOrderParams, SerumV3FulfillmentConfigAccount, SettlePnlMode, SignedTxData, + SizeDistribution, SpotBalanceType, SpotMarketAccount, SpotPosition, @@ -5602,6 +5604,92 @@ export class DriftClient { return [placeOrdersIxs, setPositionMaxLevIxs]; } + /** + * Place scale orders - multiple limit orders distributed across a price range + * @param params Scale order parameters + * @param txParams Optional transaction parameters + * @param subAccountId Optional sub account ID + * @returns Transaction signature + */ + public async placeScalePerpOrders( + params: ScaleOrderParams, + txParams?: TxParams, + subAccountId?: number + ): Promise { + const { txSig } = await this.sendTransaction( + (await this.preparePlaceScalePerpOrdersTx(params, txParams, subAccountId)) + .placeScalePerpOrdersTx, + [], + this.opts, + false + ); + return txSig; + } + + public async preparePlaceScalePerpOrdersTx( + params: ScaleOrderParams, + txParams?: TxParams, + subAccountId?: number + ) { + const lookupTableAccounts = await this.fetchAllLookupTableAccounts(); + + const tx = await this.buildTransaction( + await this.getPlaceScalePerpOrdersIx(params, subAccountId), + txParams, + undefined, + lookupTableAccounts + ); + + return { + placeScalePerpOrdersTx: tx, + }; + } + + public async getPlaceScalePerpOrdersIx( + params: ScaleOrderParams, + subAccountId?: number + ): Promise { + const user = await this.getUserAccountPublicKey(subAccountId); + + const remainingAccounts = this.getRemainingAccounts({ + userAccounts: [this.getUserAccount(subAccountId)], + readablePerpMarketIndex: [params.marketIndex], + useMarketLastSlotCache: true, + }); + + if (isUpdateHighLeverageMode(params.bitFlags)) { + remainingAccounts.push({ + pubkey: getHighLeverageModeConfigPublicKey(this.program.programId), + isWritable: true, + isSigner: false, + }); + } + + const formattedParams = { + direction: params.direction, + marketIndex: params.marketIndex, + totalBaseAssetAmount: params.totalBaseAssetAmount, + startPrice: params.startPrice, + endPrice: params.endPrice, + orderCount: params.orderCount, + sizeDistribution: params.sizeDistribution, + reduceOnly: params.reduceOnly, + postOnly: params.postOnly, + bitFlags: params.bitFlags, + maxTs: params.maxTs, + }; + + return await this.program.instruction.placeScalePerpOrders(formattedParams, { + accounts: { + state: await this.getStatePublicKey(), + user, + userStats: this.getUserStatsAccountPublicKey(), + authority: this.wallet.publicKey, + }, + remainingAccounts, + }); + } + public async fillPerpOrder( userAccountPublicKey: PublicKey, user: UserAccount, diff --git a/sdk/src/idl/drift.json b/sdk/src/idl/drift.json index 92afad4e69..ba16391a66 100644 --- a/sdk/src/idl/drift.json +++ b/sdk/src/idl/drift.json @@ -1382,6 +1382,34 @@ } ] }, + { + "name": "placeScalePerpOrders", + "accounts": [ + { + "name": "state", + "isMut": false, + "isSigner": false + }, + { + "name": "user", + "isMut": true, + "isSigner": false + }, + { + "name": "authority", + "isMut": false, + "isSigner": true + } + ], + "args": [ + { + "name": "params", + "type": { + "defined": "ScaleOrderParams" + } + } + ] + }, { "name": "beginSwap", "accounts": [ @@ -13260,6 +13288,96 @@ ] } }, + { + "name": "ScaleOrderParams", + "docs": [ + "Parameters for placing scale orders - multiple limit orders distributed across a price range" + ], + "type": { + "kind": "struct", + "fields": [ + { + "name": "direction", + "type": { + "defined": "PositionDirection" + } + }, + { + "name": "marketIndex", + "type": "u16" + }, + { + "name": "totalBaseAssetAmount", + "docs": [ + "Total base asset amount to distribute across all orders" + ], + "type": "u64" + }, + { + "name": "startPrice", + "docs": [ + "Starting price for the scale (in PRICE_PRECISION)" + ], + "type": "u64" + }, + { + "name": "endPrice", + "docs": [ + "Ending price for the scale (in PRICE_PRECISION)" + ], + "type": "u64" + }, + { + "name": "orderCount", + "docs": [ + "Number of orders to place (min 2, max 10)" + ], + "type": "u8" + }, + { + "name": "sizeDistribution", + "docs": [ + "How to distribute sizes across orders" + ], + "type": { + "defined": "SizeDistribution" + } + }, + { + "name": "reduceOnly", + "docs": [ + "Whether orders should be reduce-only" + ], + "type": "bool" + }, + { + "name": "postOnly", + "docs": [ + "Post-only setting for all orders" + ], + "type": { + "defined": "PostOnlyParam" + } + }, + { + "name": "bitFlags", + "docs": [ + "Bit flags (e.g., for high leverage mode)" + ], + "type": "u8" + }, + { + "name": "maxTs", + "docs": [ + "Maximum timestamp for orders to be valid" + ], + "type": { + "option": "i64" + } + } + ] + } + }, { "name": "InsuranceClaim", "type": { @@ -15607,6 +15725,26 @@ ] } }, + { + "name": "SizeDistribution", + "docs": [ + "How to distribute order sizes across scale orders" + ], + "type": { + "kind": "enum", + "variants": [ + { + "name": "Flat" + }, + { + "name": "Ascending" + }, + { + "name": "Descending" + } + ] + } + }, { "name": "PerpOperation", "type": { @@ -19824,9 +19962,16 @@ "code": 6345, "name": "InvalidIsolatedPerpMarket", "msg": "Invalid Isolated Perp Market" + }, + { + "code": 6346, + "name": "InvalidOrderScaleOrderCount", + "msg": "Invalid scale order count - must be between 2 and 10" + }, + { + "code": 6347, + "name": "InvalidOrderScalePriceRange", + "msg": "Invalid scale order price range" } - ], - "metadata": { - "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" - } + ] } \ No newline at end of file diff --git a/sdk/src/types.ts b/sdk/src/types.ts index f98221090b..dc2468c63d 100644 --- a/sdk/src/types.ts +++ b/sdk/src/types.ts @@ -1295,6 +1295,55 @@ export class PostOnlyParams { static readonly SLIDE = { slide: {} }; // Modify price to be post only if can't be post only } +/** + * How to distribute order sizes across scale orders + */ +export class SizeDistribution { + static readonly FLAT = { flat: {} }; // Equal size for all orders + static readonly ASCENDING = { ascending: {} }; // Smallest at start price, largest at end price + static readonly DESCENDING = { descending: {} }; // Largest at start price, smallest at end price +} + +/** + * Parameters for placing scale orders - multiple limit orders distributed across a price range + */ +export type ScaleOrderParams = { + direction: PositionDirection; + marketIndex: number; + /** Total base asset amount to distribute across all orders */ + totalBaseAssetAmount: BN; + /** Starting price for the scale (in PRICE_PRECISION) */ + startPrice: BN; + /** Ending price for the scale (in PRICE_PRECISION) */ + endPrice: BN; + /** Number of orders to place (min 2, max 10) */ + orderCount: number; + /** How to distribute sizes across orders */ + sizeDistribution: SizeDistribution; + /** Whether orders should be reduce-only */ + reduceOnly: boolean; + /** Post-only setting for all orders */ + postOnly: PostOnlyParams; + /** Bit flags (e.g., for high leverage mode) */ + bitFlags: number; + /** Maximum timestamp for orders to be valid */ + maxTs: BN | null; +}; + +export const DefaultScaleOrderParams: ScaleOrderParams = { + direction: PositionDirection.LONG, + marketIndex: 0, + totalBaseAssetAmount: ZERO, + startPrice: ZERO, + endPrice: ZERO, + orderCount: 2, + sizeDistribution: SizeDistribution.FLAT, + reduceOnly: false, + postOnly: PostOnlyParams.NONE, + bitFlags: 0, + maxTs: null, +}; + export class OrderParamsBitFlag { static readonly ImmediateOrCancel = 1; static readonly UpdateHighLeverageMode = 2; diff --git a/test-scripts/run-anchor-tests.sh b/test-scripts/run-anchor-tests.sh index 7b2fceedf2..8068b1d9c0 100644 --- a/test-scripts/run-anchor-tests.sh +++ b/test-scripts/run-anchor-tests.sh @@ -24,6 +24,7 @@ test_files=( # TODO BROKEN ^^ builderCodes.ts decodeUser.ts + scaleOrders.ts # fuel.ts # fuelSweep.ts admin.ts diff --git a/test-scripts/single-anchor-test.sh b/test-scripts/single-anchor-test.sh index f3fb157085..ccc088712f 100755 --- a/test-scripts/single-anchor-test.sh +++ b/test-scripts/single-anchor-test.sh @@ -1,3 +1,5 @@ +#!/bin/bash + if [ "$1" != "--skip-build" ] then anchor build -- --features anchor-test && anchor test --skip-build && @@ -7,8 +9,8 @@ fi export ANCHOR_WALLET=~/.config/solana/id.json test_files=( - lpPool.ts - lpPoolSwap.ts + scaleOrders.ts + order.ts ) for test_file in ${test_files[@]}; do diff --git a/tests/scaleOrders.ts b/tests/scaleOrders.ts new file mode 100644 index 0000000000..580851dfd0 --- /dev/null +++ b/tests/scaleOrders.ts @@ -0,0 +1,489 @@ +import * as anchor from '@coral-xyz/anchor'; +import { assert } from 'chai'; + +import { Program } from '@coral-xyz/anchor'; + +import { Keypair, PublicKey } from '@solana/web3.js'; + +import { + TestClient, + BN, + PRICE_PRECISION, + PositionDirection, + User, + Wallet, + EventSubscriber, + PostOnlyParams, + SizeDistribution, + BASE_PRECISION, + isVariant, +} from '../sdk/src'; + +import { + mockOracleNoProgram, + mockUserUSDCAccount, + mockUSDCMint, + initializeQuoteSpotMarket, + sleep, +} from './testHelpers'; +import { OracleSource, ZERO } from '../sdk'; +import { startAnchor } from 'solana-bankrun'; +import { TestBulkAccountLoader } from '../sdk/src/accounts/testBulkAccountLoader'; +import { BankrunContextWrapper } from '../sdk/src/bankrun/bankrunConnection'; + +describe('scale orders', () => { + const chProgram = anchor.workspace.Drift as Program; + + let driftClient: TestClient; + let driftClientUser: User; + let eventSubscriber: EventSubscriber; + + let bulkAccountLoader: TestBulkAccountLoader; + + let bankrunContextWrapper: BankrunContextWrapper; + + let userAccountPublicKey: PublicKey; + + let usdcMint; + let userUSDCAccount; + + // ammInvariant == k == x * y + const mantissaSqrtScale = new BN(Math.sqrt(PRICE_PRECISION.toNumber())); + const ammInitialQuoteAssetReserve = new anchor.BN(5 * 10 ** 11).mul( + mantissaSqrtScale + ); + const ammInitialBaseAssetReserve = new anchor.BN(5 * 10 ** 11).mul( + mantissaSqrtScale + ); + + const usdcAmount = new BN(100000 * 10 ** 6); // $100k + + const marketIndex = 0; + + let solUsd; + + before(async () => { + const context = await startAnchor('', [], []); + + bankrunContextWrapper = new BankrunContextWrapper(context); + + bulkAccountLoader = new TestBulkAccountLoader( + bankrunContextWrapper.connection, + 'processed', + 1 + ); + + eventSubscriber = new EventSubscriber( + bankrunContextWrapper.connection.toConnection(), + chProgram + ); + + await eventSubscriber.subscribe(); + + usdcMint = await mockUSDCMint(bankrunContextWrapper); + userUSDCAccount = await mockUserUSDCAccount( + usdcMint, + usdcAmount, + bankrunContextWrapper + ); + + solUsd = await mockOracleNoProgram(bankrunContextWrapper, 100); + + const marketIndexes = [marketIndex]; + const bankIndexes = [0]; + const oracleInfos = [ + { publicKey: PublicKey.default, source: OracleSource.QUOTE_ASSET }, + { publicKey: solUsd, source: OracleSource.PYTH }, + ]; + + driftClient = new TestClient({ + connection: bankrunContextWrapper.connection.toConnection(), + wallet: bankrunContextWrapper.provider.wallet, + programID: chProgram.programId, + opts: { + commitment: 'confirmed', + }, + activeSubAccountId: 0, + perpMarketIndexes: marketIndexes, + spotMarketIndexes: bankIndexes, + subAccountIds: [], + oracleInfos, + accountSubscription: { + type: 'polling', + accountLoader: bulkAccountLoader, + }, + }); + await driftClient.initialize(usdcMint.publicKey, true); + await driftClient.subscribe(); + await initializeQuoteSpotMarket(driftClient, usdcMint.publicKey); + await driftClient.updatePerpAuctionDuration(new BN(0)); + + let oraclesLoaded = false; + while (!oraclesLoaded) { + await driftClient.accountSubscriber.setSpotOracleMap(); + const found = + !!driftClient.accountSubscriber.getOraclePriceDataAndSlotForSpotMarket( + 0 + ); + if (found) { + oraclesLoaded = true; + } + await sleep(1000); + } + + const periodicity = new BN(60 * 60); // 1 HOUR + + await driftClient.initializePerpMarket( + 0, + solUsd, + ammInitialBaseAssetReserve, + ammInitialQuoteAssetReserve, + periodicity + ); + + // Set step size to 0.001 (1e6 in base precision) + await driftClient.updatePerpMarketStepSizeAndTickSize( + 0, + new BN(1000000), // 0.001 in BASE_PRECISION + new BN(1) + ); + + [, userAccountPublicKey] = + await driftClient.initializeUserAccountAndDepositCollateral( + usdcAmount, + userUSDCAccount.publicKey + ); + + driftClientUser = new User({ + driftClient, + userAccountPublicKey: await driftClient.getUserAccountPublicKey(), + accountSubscription: { + type: 'polling', + accountLoader: bulkAccountLoader, + }, + }); + await driftClientUser.subscribe(); + }); + + after(async () => { + await driftClient.unsubscribe(); + await driftClientUser.unsubscribe(); + await eventSubscriber.unsubscribe(); + }); + + it('place scale orders - flat distribution', async () => { + const totalBaseAmount = BASE_PRECISION; // 1 SOL + const orderCount = 5; + + const txSig = await driftClient.placeScalePerpOrders({ + direction: PositionDirection.LONG, + marketIndex: 0, + totalBaseAssetAmount: totalBaseAmount, + startPrice: new BN(95).mul(PRICE_PRECISION), // $95 + endPrice: new BN(100).mul(PRICE_PRECISION), // $100 + orderCount: orderCount, + sizeDistribution: SizeDistribution.FLAT, + reduceOnly: false, + postOnly: PostOnlyParams.NONE, + bitFlags: 0, + maxTs: null, + }); + + bankrunContextWrapper.printTxLogs(txSig); + + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + + const userAccount = driftClientUser.getUserAccount(); + const orders = userAccount.orders.filter( + (order) => isVariant(order.status, 'open') + ); + + assert.equal(orders.length, orderCount, 'Should have 5 open orders'); + + // Check orders are distributed across prices + const prices = orders.map((o) => o.price.toNumber()).sort((a, b) => a - b); + assert.equal(prices[0], 95 * PRICE_PRECISION.toNumber(), 'First price should be $95'); + assert.equal(prices[4], 100 * PRICE_PRECISION.toNumber(), 'Last price should be $100'); + + // Check total base amount sums correctly + const totalBase = orders.reduce( + (sum, o) => sum.add(o.baseAssetAmount), + ZERO + ); + assert.ok( + totalBase.eq(totalBaseAmount), + 'Total base amount should equal input' + ); + + // Cancel all orders for next test + await driftClient.cancelOrders(); + }); + + it('place scale orders - ascending distribution (long)', async () => { + const totalBaseAmount = BASE_PRECISION; // 1 SOL + const orderCount = 3; + + const txSig = await driftClient.placeScalePerpOrders({ + direction: PositionDirection.LONG, + marketIndex: 0, + totalBaseAssetAmount: totalBaseAmount, + startPrice: new BN(90).mul(PRICE_PRECISION), // $90 + endPrice: new BN(100).mul(PRICE_PRECISION), // $100 + orderCount: orderCount, + sizeDistribution: SizeDistribution.ASCENDING, + reduceOnly: false, + postOnly: PostOnlyParams.NONE, + bitFlags: 0, + maxTs: null, + }); + + bankrunContextWrapper.printTxLogs(txSig); + + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + + const userAccount = driftClientUser.getUserAccount(); + const orders = userAccount.orders + .filter((order) => isVariant(order.status, 'open')) + .sort((a, b) => a.price.toNumber() - b.price.toNumber()); + + assert.equal(orders.length, orderCount, 'Should have 3 open orders'); + + // For ascending, smallest order at lowest price, largest at highest price + // Since it's ascending and long, orders at lower prices are smaller + console.log( + 'Order sizes (ascending):', + orders.map((o) => ({ + price: o.price.toString(), + size: o.baseAssetAmount.toString(), + })) + ); + + // Verify sizes are ascending with price + assert.ok( + orders[0].baseAssetAmount.lt(orders[2].baseAssetAmount), + 'First order (lowest price) should be smaller than last order (highest price)' + ); + + // Check total base amount sums correctly + const totalBase = orders.reduce( + (sum, o) => sum.add(o.baseAssetAmount), + ZERO + ); + assert.ok( + totalBase.eq(totalBaseAmount), + 'Total base amount should equal input' + ); + + // Cancel all orders for next test + await driftClient.cancelOrders(); + }); + + it('place scale orders - short direction', async () => { + const totalBaseAmount = BASE_PRECISION.div(new BN(2)); // 0.5 SOL + const orderCount = 4; + + const txSig = await driftClient.placeScalePerpOrders({ + direction: PositionDirection.SHORT, + marketIndex: 0, + totalBaseAssetAmount: totalBaseAmount, + startPrice: new BN(110).mul(PRICE_PRECISION), // $110 (start high for shorts) + endPrice: new BN(105).mul(PRICE_PRECISION), // $105 (end low) + orderCount: orderCount, + sizeDistribution: SizeDistribution.FLAT, + reduceOnly: false, + postOnly: PostOnlyParams.MUST_POST_ONLY, + bitFlags: 0, + maxTs: null, + }); + + bankrunContextWrapper.printTxLogs(txSig); + + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + + const userAccount = driftClientUser.getUserAccount(); + const orders = userAccount.orders.filter( + (order) => isVariant(order.status, 'open') + ); + + assert.equal(orders.length, orderCount, 'Should have 4 open orders'); + + // All orders should be short direction + for (const order of orders) { + assert.deepEqual( + order.direction, + PositionDirection.SHORT, + 'All orders should be SHORT' + ); + } + + // Check prices are distributed from 110 to 105 + const prices = orders.map((o) => o.price.toNumber()).sort((a, b) => b - a); + assert.equal(prices[0], 110 * PRICE_PRECISION.toNumber(), 'First price should be $110'); + assert.equal(prices[3], 105 * PRICE_PRECISION.toNumber(), 'Last price should be $105'); + + // Check total base amount sums correctly + const totalBase = orders.reduce( + (sum, o) => sum.add(o.baseAssetAmount), + ZERO + ); + assert.ok( + totalBase.eq(totalBaseAmount), + 'Total base amount should equal input' + ); + + // Cancel all orders for next test + await driftClient.cancelOrders(); + }); + + it('place scale orders - descending distribution', async () => { + const totalBaseAmount = BASE_PRECISION; // 1 SOL + const orderCount = 3; + + const txSig = await driftClient.placeScalePerpOrders({ + direction: PositionDirection.LONG, + marketIndex: 0, + totalBaseAssetAmount: totalBaseAmount, + startPrice: new BN(90).mul(PRICE_PRECISION), + endPrice: new BN(100).mul(PRICE_PRECISION), + orderCount: orderCount, + sizeDistribution: SizeDistribution.DESCENDING, + reduceOnly: false, + postOnly: PostOnlyParams.NONE, + bitFlags: 0, + maxTs: null, + }); + + bankrunContextWrapper.printTxLogs(txSig); + + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + + const userAccount = driftClientUser.getUserAccount(); + const orders = userAccount.orders + .filter((order) => isVariant(order.status, 'open')) + .sort((a, b) => a.price.toNumber() - b.price.toNumber()); + + assert.equal(orders.length, orderCount, 'Should have 3 open orders'); + + // For descending, largest order at lowest price, smallest at highest price + console.log( + 'Order sizes (descending):', + orders.map((o) => ({ + price: o.price.toString(), + size: o.baseAssetAmount.toString(), + })) + ); + + // Verify sizes are descending with price + assert.ok( + orders[0].baseAssetAmount.gt(orders[2].baseAssetAmount), + 'First order (lowest price) should be larger than last order (highest price)' + ); + + // Check total base amount sums correctly + const totalBase = orders.reduce( + (sum, o) => sum.add(o.baseAssetAmount), + ZERO + ); + assert.ok( + totalBase.eq(totalBaseAmount), + 'Total base amount should equal input' + ); + + // Cancel all orders + await driftClient.cancelOrders(); + }); + + it('place scale orders - with reduce only', async () => { + // First, create a position to reduce + // Place a market order that will fill against AMM + await driftClient.openPosition( + PositionDirection.LONG, + BASE_PRECISION, // 1 SOL + 0 + ); + + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + + const positionBefore = driftClientUser.getPerpPosition(0); + assert.ok(positionBefore.baseAssetAmount.gt(ZERO), 'Should have a position'); + + // Now place scale orders to reduce position + const txSig = await driftClient.placeScalePerpOrders({ + direction: PositionDirection.SHORT, // Opposite direction to reduce + marketIndex: 0, + totalBaseAssetAmount: BASE_PRECISION.div(new BN(2)), // 0.5 SOL + startPrice: new BN(105).mul(PRICE_PRECISION), + endPrice: new BN(100).mul(PRICE_PRECISION), + orderCount: 2, + sizeDistribution: SizeDistribution.FLAT, + reduceOnly: true, + postOnly: PostOnlyParams.NONE, + bitFlags: 0, + maxTs: null, + }); + + bankrunContextWrapper.printTxLogs(txSig); + + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + + const userAccount = driftClientUser.getUserAccount(); + const orders = userAccount.orders.filter( + (order) => isVariant(order.status, 'open') + ); + + assert.equal(orders.length, 2, 'Should have 2 open orders'); + + // All orders should be reduce only + for (const order of orders) { + assert.equal(order.reduceOnly, true, 'Order should be reduce only'); + } + + // Cancel all orders and close position + await driftClient.cancelOrders(); + await driftClient.closePosition(0); + }); + + it('place scale orders - minimum 2 orders', async () => { + const totalBaseAmount = BASE_PRECISION; + const orderCount = 2; // Minimum allowed + + const txSig = await driftClient.placeScalePerpOrders({ + direction: PositionDirection.LONG, + marketIndex: 0, + totalBaseAssetAmount: totalBaseAmount, + startPrice: new BN(95).mul(PRICE_PRECISION), + endPrice: new BN(100).mul(PRICE_PRECISION), + orderCount: orderCount, + sizeDistribution: SizeDistribution.FLAT, + reduceOnly: false, + postOnly: PostOnlyParams.NONE, + bitFlags: 0, + maxTs: null, + }); + + bankrunContextWrapper.printTxLogs(txSig); + + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + + const userAccount = driftClientUser.getUserAccount(); + const orders = userAccount.orders.filter( + (order) => isVariant(order.status, 'open') + ); + + assert.equal(orders.length, 2, 'Should have exactly 2 orders'); + + const prices = orders.map((o) => o.price.toNumber()).sort((a, b) => a - b); + assert.equal(prices[0], 95 * PRICE_PRECISION.toNumber(), 'First price should be $95'); + assert.equal(prices[1], 100 * PRICE_PRECISION.toNumber(), 'Second price should be $100'); + + // Cancel all orders + await driftClient.cancelOrders(); + }); +}); From d402be7740771ae213ad32ece366d5792c6e4c00 Mon Sep 17 00:00:00 2001 From: Nick Caradonna Date: Tue, 27 Jan 2026 23:11:16 -0500 Subject: [PATCH 45/51] fix tests --- sdk/src/driftClient.ts | 21 +++++---- tests/scaleOrders.ts | 100 ++++++++++++++++++++++++++--------------- 2 files changed, 76 insertions(+), 45 deletions(-) diff --git a/sdk/src/driftClient.ts b/sdk/src/driftClient.ts index 1877dcbb69..9a5d44c835 100644 --- a/sdk/src/driftClient.ts +++ b/sdk/src/driftClient.ts @@ -5679,15 +5679,18 @@ export class DriftClient { maxTs: params.maxTs, }; - return await this.program.instruction.placeScalePerpOrders(formattedParams, { - accounts: { - state: await this.getStatePublicKey(), - user, - userStats: this.getUserStatsAccountPublicKey(), - authority: this.wallet.publicKey, - }, - remainingAccounts, - }); + return await this.program.instruction.placeScalePerpOrders( + formattedParams, + { + accounts: { + state: await this.getStatePublicKey(), + user, + userStats: this.getUserStatsAccountPublicKey(), + authority: this.wallet.publicKey, + }, + remainingAccounts, + } + ); } public async fillPerpOrder( diff --git a/tests/scaleOrders.ts b/tests/scaleOrders.ts index 580851dfd0..3c4687a384 100644 --- a/tests/scaleOrders.ts +++ b/tests/scaleOrders.ts @@ -171,6 +171,21 @@ describe('scale orders', () => { await eventSubscriber.unsubscribe(); }); + beforeEach(async () => { + // Clean up any orders from previous tests + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + const userAccount = driftClientUser.getUserAccount(); + const hasOpenOrders = userAccount.orders.some((order) => + isVariant(order.status, 'open') + ); + if (hasOpenOrders) { + await driftClient.cancelOrders(); + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + } + }); + it('place scale orders - flat distribution', async () => { const totalBaseAmount = BASE_PRECISION; // 1 SOL const orderCount = 5; @@ -195,16 +210,24 @@ describe('scale orders', () => { await driftClientUser.fetchAccounts(); const userAccount = driftClientUser.getUserAccount(); - const orders = userAccount.orders.filter( - (order) => isVariant(order.status, 'open') + const orders = userAccount.orders.filter((order) => + isVariant(order.status, 'open') ); assert.equal(orders.length, orderCount, 'Should have 5 open orders'); // Check orders are distributed across prices const prices = orders.map((o) => o.price.toNumber()).sort((a, b) => a - b); - assert.equal(prices[0], 95 * PRICE_PRECISION.toNumber(), 'First price should be $95'); - assert.equal(prices[4], 100 * PRICE_PRECISION.toNumber(), 'Last price should be $100'); + assert.equal( + prices[0], + 95 * PRICE_PRECISION.toNumber(), + 'First price should be $95' + ); + assert.equal( + prices[4], + 100 * PRICE_PRECISION.toNumber(), + 'Last price should be $100' + ); // Check total base amount sums correctly const totalBase = orders.reduce( @@ -304,8 +327,8 @@ describe('scale orders', () => { await driftClientUser.fetchAccounts(); const userAccount = driftClientUser.getUserAccount(); - const orders = userAccount.orders.filter( - (order) => isVariant(order.status, 'open') + const orders = userAccount.orders.filter((order) => + isVariant(order.status, 'open') ); assert.equal(orders.length, orderCount, 'Should have 4 open orders'); @@ -321,8 +344,17 @@ describe('scale orders', () => { // Check prices are distributed from 110 to 105 const prices = orders.map((o) => o.price.toNumber()).sort((a, b) => b - a); - assert.equal(prices[0], 110 * PRICE_PRECISION.toNumber(), 'First price should be $110'); - assert.equal(prices[3], 105 * PRICE_PRECISION.toNumber(), 'Last price should be $105'); + assert.equal( + prices[0], + 110 * PRICE_PRECISION.toNumber(), + 'First price should be $110' + ); + // Allow small rounding tolerance for end price + const expectedEndPrice = 105 * PRICE_PRECISION.toNumber(); + assert.ok( + Math.abs(prices[3] - expectedEndPrice) <= 10, + `Last price should be ~$105 (got ${prices[3]}, expected ${expectedEndPrice})` + ); // Check total base amount sums correctly const totalBase = orders.reduce( @@ -397,31 +429,20 @@ describe('scale orders', () => { await driftClient.cancelOrders(); }); - it('place scale orders - with reduce only', async () => { - // First, create a position to reduce - // Place a market order that will fill against AMM - await driftClient.openPosition( - PositionDirection.LONG, - BASE_PRECISION, // 1 SOL - 0 - ); - - await driftClient.fetchAccounts(); - await driftClientUser.fetchAccounts(); - - const positionBefore = driftClientUser.getPerpPosition(0); - assert.ok(positionBefore.baseAssetAmount.gt(ZERO), 'Should have a position'); + it('place scale orders - with reduce only flag', async () => { + // Test that reduce-only flag is properly set on scale orders + // Note: We don't need an actual position to test the flag is set correctly + const totalBaseAmount = BASE_PRECISION.div(new BN(2)); // 0.5 SOL - // Now place scale orders to reduce position const txSig = await driftClient.placeScalePerpOrders({ - direction: PositionDirection.SHORT, // Opposite direction to reduce + direction: PositionDirection.LONG, marketIndex: 0, - totalBaseAssetAmount: BASE_PRECISION.div(new BN(2)), // 0.5 SOL - startPrice: new BN(105).mul(PRICE_PRECISION), + totalBaseAssetAmount: totalBaseAmount, + startPrice: new BN(95).mul(PRICE_PRECISION), endPrice: new BN(100).mul(PRICE_PRECISION), orderCount: 2, sizeDistribution: SizeDistribution.FLAT, - reduceOnly: true, + reduceOnly: true, // Test reduce only flag postOnly: PostOnlyParams.NONE, bitFlags: 0, maxTs: null, @@ -433,20 +454,19 @@ describe('scale orders', () => { await driftClientUser.fetchAccounts(); const userAccount = driftClientUser.getUserAccount(); - const orders = userAccount.orders.filter( - (order) => isVariant(order.status, 'open') + const orders = userAccount.orders.filter((order) => + isVariant(order.status, 'open') ); assert.equal(orders.length, 2, 'Should have 2 open orders'); - // All orders should be reduce only + // All orders should have reduce only flag set for (const order of orders) { assert.equal(order.reduceOnly, true, 'Order should be reduce only'); } - // Cancel all orders and close position + // Cancel all orders await driftClient.cancelOrders(); - await driftClient.closePosition(0); }); it('place scale orders - minimum 2 orders', async () => { @@ -473,15 +493,23 @@ describe('scale orders', () => { await driftClientUser.fetchAccounts(); const userAccount = driftClientUser.getUserAccount(); - const orders = userAccount.orders.filter( - (order) => isVariant(order.status, 'open') + const orders = userAccount.orders.filter((order) => + isVariant(order.status, 'open') ); assert.equal(orders.length, 2, 'Should have exactly 2 orders'); const prices = orders.map((o) => o.price.toNumber()).sort((a, b) => a - b); - assert.equal(prices[0], 95 * PRICE_PRECISION.toNumber(), 'First price should be $95'); - assert.equal(prices[1], 100 * PRICE_PRECISION.toNumber(), 'Second price should be $100'); + assert.equal( + prices[0], + 95 * PRICE_PRECISION.toNumber(), + 'First price should be $95' + ); + assert.equal( + prices[1], + 100 * PRICE_PRECISION.toNumber(), + 'Second price should be $100' + ); // Cancel all orders await driftClient.cancelOrders(); From a706c4fb19a67853f9d79bb0818d314fcafba309 Mon Sep 17 00:00:00 2001 From: Nick Caradonna Date: Wed, 28 Jan 2026 12:40:35 -0500 Subject: [PATCH 46/51] allow up to 32 orders --- package.json | 3 +- programs/drift/src/controller/scale_orders.rs | 36 ++++++++++++++++--- programs/drift/src/instructions/user.rs | 3 ++ sdk/src/driftClient.ts | 1 - sdk/src/types.ts | 2 +- tests/scaleOrders.ts | 7 ++-- 6 files changed, 40 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 213f3e1869..61b1b4ed67 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,5 @@ "chalk-template": "<1.1.1", "supports-hyperlinks": "<4.1.1", "has-ansi": "<6.0.1" - }, - "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" + } } diff --git a/programs/drift/src/controller/scale_orders.rs b/programs/drift/src/controller/scale_orders.rs index b416015164..489adb26a5 100644 --- a/programs/drift/src/controller/scale_orders.rs +++ b/programs/drift/src/controller/scale_orders.rs @@ -1,16 +1,44 @@ use crate::controller::position::PositionDirection; use crate::error::{DriftResult, ErrorCode}; +use crate::math::constants::MAX_OPEN_ORDERS; use crate::math::safe_math::SafeMath; use crate::state::order_params::{OrderParams, ScaleOrderParams, SizeDistribution}; -use crate::state::user::{MarketType, OrderTriggerCondition, OrderType}; +use crate::state::user::{MarketType, OrderTriggerCondition, OrderType, User}; use crate::validate; use solana_program::msg; -/// Maximum number of orders allowed in a scale order -pub const MAX_SCALE_ORDER_COUNT: u8 = 10; +/// Maximum number of orders allowed in a single scale order instruction +pub const MAX_SCALE_ORDER_COUNT: u8 = MAX_OPEN_ORDERS; /// Minimum number of orders required for a scale order pub const MIN_SCALE_ORDER_COUNT: u8 = 2; +/// Validates that placing scale orders won't exceed user's max open orders +pub fn validate_user_can_place_scale_orders( + user: &User, + order_count: u8, +) -> DriftResult<()> { + let current_open_orders = user + .orders + .iter() + .filter(|o| o.status == crate::state::user::OrderStatus::Open) + .count() as u8; + + let total_after = current_open_orders.saturating_add(order_count); + + validate!( + total_after <= MAX_OPEN_ORDERS, + ErrorCode::MaxNumberOfOrders, + "placing {} scale orders would exceed max open orders ({} current + {} new = {} > {} max)", + order_count, + current_open_orders, + order_count, + total_after, + MAX_OPEN_ORDERS + )?; + + Ok(()) +} + /// Validates the scale order parameters pub fn validate_scale_order_params( params: &ScaleOrderParams, @@ -258,7 +286,7 @@ mod tests { // Test maximum order count let params = ScaleOrderParams { - order_count: 11, // Above maximum + order_count: 33, // Above maximum (MAX_OPEN_ORDERS = 32) ..params }; assert!(validate_scale_order_params(¶ms, step_size).is_err()); diff --git a/programs/drift/src/instructions/user.rs b/programs/drift/src/instructions/user.rs index 5a0ea114af..0725e899f9 100644 --- a/programs/drift/src/instructions/user.rs +++ b/programs/drift/src/instructions/user.rs @@ -2656,6 +2656,9 @@ fn place_orders_impl<'c: 'info, 'info>( let user_key = ctx.accounts.user.key(); let mut user = load_mut!(ctx.accounts.user)?; + // Validate that user won't exceed max open orders + controller::scale_orders::validate_user_can_place_scale_orders(&user, order_params.len() as u8)?; + let num_orders = order_params.len(); for (i, params) in order_params.iter().enumerate() { if validate_ioc { diff --git a/sdk/src/driftClient.ts b/sdk/src/driftClient.ts index 9a5d44c835..2da6e932c0 100644 --- a/sdk/src/driftClient.ts +++ b/sdk/src/driftClient.ts @@ -52,7 +52,6 @@ import { SerumV3FulfillmentConfigAccount, SettlePnlMode, SignedTxData, - SizeDistribution, SpotBalanceType, SpotMarketAccount, SpotPosition, diff --git a/sdk/src/types.ts b/sdk/src/types.ts index dc2468c63d..8270fa6509 100644 --- a/sdk/src/types.ts +++ b/sdk/src/types.ts @@ -1316,7 +1316,7 @@ export type ScaleOrderParams = { startPrice: BN; /** Ending price for the scale (in PRICE_PRECISION) */ endPrice: BN; - /** Number of orders to place (min 2, max 10) */ + /** Number of orders to place (min 2, max 32). User cannot exceed 32 total open orders. */ orderCount: number; /** How to distribute sizes across orders */ sizeDistribution: SizeDistribution; diff --git a/tests/scaleOrders.ts b/tests/scaleOrders.ts index 3c4687a384..1c1dd85f7f 100644 --- a/tests/scaleOrders.ts +++ b/tests/scaleOrders.ts @@ -3,7 +3,7 @@ import { assert } from 'chai'; import { Program } from '@coral-xyz/anchor'; -import { Keypair, PublicKey } from '@solana/web3.js'; +import { PublicKey } from '@solana/web3.js'; import { TestClient, @@ -11,7 +11,6 @@ import { PRICE_PRECISION, PositionDirection, User, - Wallet, EventSubscriber, PostOnlyParams, SizeDistribution, @@ -42,7 +41,7 @@ describe('scale orders', () => { let bankrunContextWrapper: BankrunContextWrapper; - let userAccountPublicKey: PublicKey; + let _userAccountPublicKey: PublicKey; let usdcMint; let userUSDCAccount; @@ -148,7 +147,7 @@ describe('scale orders', () => { new BN(1) ); - [, userAccountPublicKey] = + [, _userAccountPublicKey] = await driftClient.initializeUserAccountAndDepositCollateral( usdcAmount, userUSDCAccount.publicKey From 65e269219d8d7f325ef02bcbbf53312bbf9d5e26 Mon Sep 17 00:00:00 2001 From: Nick Caradonna Date: Wed, 28 Jan 2026 13:20:22 -0500 Subject: [PATCH 47/51] flip start/end price logic --- programs/drift/src/controller/scale_orders.rs | 107 ++++++++++-------- tests/scaleOrders.ts | 80 +++++++------ 2 files changed, 102 insertions(+), 85 deletions(-) diff --git a/programs/drift/src/controller/scale_orders.rs b/programs/drift/src/controller/scale_orders.rs index 489adb26a5..516f0557bc 100644 --- a/programs/drift/src/controller/scale_orders.rs +++ b/programs/drift/src/controller/scale_orders.rs @@ -64,21 +64,21 @@ pub fn validate_scale_order_params( "start_price and end_price cannot be equal" )?; - // For long orders, start price should be lower than end price - // For short orders, start price should be higher than end price + // For long orders, start price is higher (first buy) and end price is lower (DCA down) + // For short orders, start price is lower (first sell) and end price is higher (scale out up) match params.direction { PositionDirection::Long => { validate!( - params.start_price < params.end_price, + params.start_price > params.end_price, ErrorCode::InvalidOrderScalePriceRange, - "for long scale orders, start_price must be less than end_price" + "for long scale orders, start_price must be greater than end_price (scaling down)" )?; } PositionDirection::Short => { validate!( - params.start_price > params.end_price, + params.start_price < params.end_price, ErrorCode::InvalidOrderScalePriceRange, - "for short scale orders, start_price must be greater than end_price" + "for short scale orders, start_price must be less than end_price (scaling up)" )?; } } @@ -269,12 +269,13 @@ mod tests { let step_size = BASE_PRECISION_U64 / 1000; // 0.001 // Test minimum order count + // Long: start high, end low (DCA down) let params = ScaleOrderParams { direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, - start_price: 100 * PRICE_PRECISION_U64, - end_price: 110 * PRICE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, order_count: 1, // Below minimum size_distribution: SizeDistribution::Flat, reduce_only: false, @@ -303,13 +304,13 @@ mod tests { fn test_validate_price_range() { let step_size = BASE_PRECISION_U64 / 1000; - // Long orders: start_price must be < end_price + // Long orders: start_price must be > end_price (scaling down) let params = ScaleOrderParams { direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, - start_price: 110 * PRICE_PRECISION_U64, // Wrong: higher than end - end_price: 100 * PRICE_PRECISION_U64, + start_price: 100 * PRICE_PRECISION_U64, // Wrong: lower than end + end_price: 110 * PRICE_PRECISION_U64, order_count: 5, size_distribution: SizeDistribution::Flat, reduce_only: false, @@ -319,29 +320,29 @@ mod tests { }; assert!(validate_scale_order_params(¶ms, step_size).is_err()); - // Short orders: start_price must be > end_price + // Short orders: start_price must be < end_price (scaling up) let params = ScaleOrderParams { direction: PositionDirection::Short, - start_price: 100 * PRICE_PRECISION_U64, // Wrong: lower than end - end_price: 110 * PRICE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, // Wrong: higher than end + end_price: 100 * PRICE_PRECISION_U64, ..params }; assert!(validate_scale_order_params(¶ms, step_size).is_err()); - // Valid long order + // Valid long order (start high, end low - DCA down) let params = ScaleOrderParams { direction: PositionDirection::Long, - start_price: 100 * PRICE_PRECISION_U64, - end_price: 110 * PRICE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, ..params }; assert!(validate_scale_order_params(¶ms, step_size).is_ok()); - // Valid short order + // Valid short order (start low, end high - scale out up) let params = ScaleOrderParams { direction: PositionDirection::Short, - start_price: 110 * PRICE_PRECISION_U64, - end_price: 100 * PRICE_PRECISION_U64, + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, ..params }; assert!(validate_scale_order_params(¶ms, step_size).is_ok()); @@ -349,12 +350,13 @@ mod tests { #[test] fn test_price_distribution_long() { + // Long: start high, end low (DCA down) let params = ScaleOrderParams { direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, - start_price: 100 * PRICE_PRECISION_U64, - end_price: 110 * PRICE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, order_count: 5, size_distribution: SizeDistribution::Flat, reduce_only: false, @@ -365,21 +367,22 @@ mod tests { let prices = calculate_price_distribution(¶ms).unwrap(); assert_eq!(prices.len(), 5); - assert_eq!(prices[0], 100 * PRICE_PRECISION_U64); - assert_eq!(prices[1], 102500000); // 102.5 + assert_eq!(prices[0], 110 * PRICE_PRECISION_U64); + assert_eq!(prices[1], 107500000); // 107.5 assert_eq!(prices[2], 105 * PRICE_PRECISION_U64); - assert_eq!(prices[3], 107500000); // 107.5 - assert_eq!(prices[4], 110 * PRICE_PRECISION_U64); + assert_eq!(prices[3], 102500000); // 102.5 + assert_eq!(prices[4], 100 * PRICE_PRECISION_U64); } #[test] fn test_price_distribution_short() { + // Short: start low, end high (scale out up) let params = ScaleOrderParams { direction: PositionDirection::Short, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, - start_price: 110 * PRICE_PRECISION_U64, - end_price: 100 * PRICE_PRECISION_U64, + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, order_count: 5, size_distribution: SizeDistribution::Flat, reduce_only: false, @@ -390,23 +393,24 @@ mod tests { let prices = calculate_price_distribution(¶ms).unwrap(); assert_eq!(prices.len(), 5); - assert_eq!(prices[0], 110 * PRICE_PRECISION_U64); - assert_eq!(prices[1], 107500000); // 107.5 + assert_eq!(prices[0], 100 * PRICE_PRECISION_U64); + assert_eq!(prices[1], 102500000); // 102.5 assert_eq!(prices[2], 105 * PRICE_PRECISION_U64); - assert_eq!(prices[3], 102500000); // 102.5 - assert_eq!(prices[4], 100 * PRICE_PRECISION_U64); + assert_eq!(prices[3], 107500000); // 107.5 + assert_eq!(prices[4], 110 * PRICE_PRECISION_U64); } #[test] fn test_flat_size_distribution() { let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + // Long: start high, end low (DCA down) let params = ScaleOrderParams { direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, // 1.0 - start_price: 100 * PRICE_PRECISION_U64, - end_price: 110 * PRICE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, order_count: 5, size_distribution: SizeDistribution::Flat, reduce_only: false, @@ -434,12 +438,13 @@ mod tests { fn test_ascending_size_distribution() { let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + // Long: start high, end low (DCA down) let params = ScaleOrderParams { direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, // 1.0 - start_price: 100 * PRICE_PRECISION_U64, - end_price: 110 * PRICE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, order_count: 5, size_distribution: SizeDistribution::Ascending, reduce_only: false, @@ -466,12 +471,13 @@ mod tests { fn test_descending_size_distribution() { let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + // Long: start high, end low (DCA down) let params = ScaleOrderParams { direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, // 1.0 - start_price: 100 * PRICE_PRECISION_U64, - end_price: 110 * PRICE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, order_count: 5, size_distribution: SizeDistribution::Descending, reduce_only: false, @@ -498,12 +504,13 @@ mod tests { fn test_expand_to_order_params() { let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + // Long: start high, end low (DCA down) let params = ScaleOrderParams { direction: PositionDirection::Long, market_index: 1, total_base_asset_amount: BASE_PRECISION_U64, // 1.0 - start_price: 100 * PRICE_PRECISION_U64, - end_price: 110 * PRICE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, order_count: 3, size_distribution: SizeDistribution::Flat, reduce_only: true, @@ -530,10 +537,10 @@ mod tests { assert!(matches!(op.direction, PositionDirection::Long)); } - // Check prices are distributed - assert_eq!(order_params[0].price, 100 * PRICE_PRECISION_U64); + // Check prices are distributed (high to low for long) + assert_eq!(order_params[0].price, 110 * PRICE_PRECISION_U64); assert_eq!(order_params[1].price, 105 * PRICE_PRECISION_U64); - assert_eq!(order_params[2].price, 110 * PRICE_PRECISION_U64); + assert_eq!(order_params[2].price, 100 * PRICE_PRECISION_U64); // Check total size let total: u64 = order_params.iter().map(|op| op.base_asset_amount).sum(); @@ -542,12 +549,13 @@ mod tests { #[test] fn test_two_orders_price_distribution() { + // Long: start high, end low (DCA down) let params = ScaleOrderParams { direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, - start_price: 100 * PRICE_PRECISION_U64, - end_price: 110 * PRICE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, order_count: 2, size_distribution: SizeDistribution::Flat, reduce_only: false, @@ -558,8 +566,8 @@ mod tests { let prices = calculate_price_distribution(¶ms).unwrap(); assert_eq!(prices.len(), 2); - assert_eq!(prices[0], 100 * PRICE_PRECISION_U64); - assert_eq!(prices[1], 110 * PRICE_PRECISION_U64); + assert_eq!(prices[0], 110 * PRICE_PRECISION_U64); + assert_eq!(prices[1], 100 * PRICE_PRECISION_U64); } #[test] @@ -567,12 +575,13 @@ mod tests { let step_size = BASE_PRECISION_U64 / 10; // 0.1 // Total size is too small for 5 orders with this step size + // Long: start high, end low (DCA down) let params = ScaleOrderParams { direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64 / 20, // 0.05 - not enough - start_price: 100 * PRICE_PRECISION_U64, - end_price: 110 * PRICE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, order_count: 5, size_distribution: SizeDistribution::Flat, reduce_only: false, diff --git a/tests/scaleOrders.ts b/tests/scaleOrders.ts index 1c1dd85f7f..efd5f1c859 100644 --- a/tests/scaleOrders.ts +++ b/tests/scaleOrders.ts @@ -189,12 +189,13 @@ describe('scale orders', () => { const totalBaseAmount = BASE_PRECISION; // 1 SOL const orderCount = 5; + // Long: start high, end low (DCA down) const txSig = await driftClient.placeScalePerpOrders({ direction: PositionDirection.LONG, marketIndex: 0, totalBaseAssetAmount: totalBaseAmount, - startPrice: new BN(95).mul(PRICE_PRECISION), // $95 - endPrice: new BN(100).mul(PRICE_PRECISION), // $100 + startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) + endPrice: new BN(95).mul(PRICE_PRECISION), // $95 (end low) orderCount: orderCount, sizeDistribution: SizeDistribution.FLAT, reduceOnly: false, @@ -215,17 +216,17 @@ describe('scale orders', () => { assert.equal(orders.length, orderCount, 'Should have 5 open orders'); - // Check orders are distributed across prices + // Check orders are distributed across prices (sorted low to high) const prices = orders.map((o) => o.price.toNumber()).sort((a, b) => a - b); assert.equal( prices[0], 95 * PRICE_PRECISION.toNumber(), - 'First price should be $95' + 'Lowest price should be $95' ); assert.equal( prices[4], 100 * PRICE_PRECISION.toNumber(), - 'Last price should be $100' + 'Highest price should be $100' ); // Check total base amount sums correctly @@ -246,12 +247,13 @@ describe('scale orders', () => { const totalBaseAmount = BASE_PRECISION; // 1 SOL const orderCount = 3; + // Long: start high, end low (DCA down) const txSig = await driftClient.placeScalePerpOrders({ direction: PositionDirection.LONG, marketIndex: 0, totalBaseAssetAmount: totalBaseAmount, - startPrice: new BN(90).mul(PRICE_PRECISION), // $90 - endPrice: new BN(100).mul(PRICE_PRECISION), // $100 + startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) + endPrice: new BN(90).mul(PRICE_PRECISION), // $90 (end low) orderCount: orderCount, sizeDistribution: SizeDistribution.ASCENDING, reduceOnly: false, @@ -272,8 +274,8 @@ describe('scale orders', () => { assert.equal(orders.length, orderCount, 'Should have 3 open orders'); - // For ascending, smallest order at lowest price, largest at highest price - // Since it's ascending and long, orders at lower prices are smaller + // For ascending distribution, sizes increase from first to last order + // First order (at start price $100) is smallest, last order (at end price $90) is largest console.log( 'Order sizes (ascending):', orders.map((o) => ({ @@ -282,10 +284,10 @@ describe('scale orders', () => { })) ); - // Verify sizes are ascending with price + // Verify sizes - lowest price should have largest size (ascending from start to end) assert.ok( - orders[0].baseAssetAmount.lt(orders[2].baseAssetAmount), - 'First order (lowest price) should be smaller than last order (highest price)' + orders[0].baseAssetAmount.gt(orders[2].baseAssetAmount), + 'Order at lowest price ($90) should have largest size (ascending distribution ends there)' ); // Check total base amount sums correctly @@ -306,12 +308,13 @@ describe('scale orders', () => { const totalBaseAmount = BASE_PRECISION.div(new BN(2)); // 0.5 SOL const orderCount = 4; + // Short: start low, end high (scale out up) const txSig = await driftClient.placeScalePerpOrders({ direction: PositionDirection.SHORT, marketIndex: 0, totalBaseAssetAmount: totalBaseAmount, - startPrice: new BN(110).mul(PRICE_PRECISION), // $110 (start high for shorts) - endPrice: new BN(105).mul(PRICE_PRECISION), // $105 (end low) + startPrice: new BN(105).mul(PRICE_PRECISION), // $105 (start low) + endPrice: new BN(110).mul(PRICE_PRECISION), // $110 (end high) orderCount: orderCount, sizeDistribution: SizeDistribution.FLAT, reduceOnly: false, @@ -341,18 +344,18 @@ describe('scale orders', () => { ); } - // Check prices are distributed from 110 to 105 - const prices = orders.map((o) => o.price.toNumber()).sort((a, b) => b - a); + // Check prices are distributed from 105 to 110 + const prices = orders.map((o) => o.price.toNumber()).sort((a, b) => a - b); + // Allow small rounding tolerance + const expectedStartPrice = 105 * PRICE_PRECISION.toNumber(); + assert.ok( + Math.abs(prices[0] - expectedStartPrice) <= 10, + `Lowest price should be ~$105 (got ${prices[0]}, expected ${expectedStartPrice})` + ); assert.equal( - prices[0], + prices[3], 110 * PRICE_PRECISION.toNumber(), - 'First price should be $110' - ); - // Allow small rounding tolerance for end price - const expectedEndPrice = 105 * PRICE_PRECISION.toNumber(); - assert.ok( - Math.abs(prices[3] - expectedEndPrice) <= 10, - `Last price should be ~$105 (got ${prices[3]}, expected ${expectedEndPrice})` + 'Highest price should be $110' ); // Check total base amount sums correctly @@ -373,12 +376,13 @@ describe('scale orders', () => { const totalBaseAmount = BASE_PRECISION; // 1 SOL const orderCount = 3; + // Long: start high, end low (DCA down) const txSig = await driftClient.placeScalePerpOrders({ direction: PositionDirection.LONG, marketIndex: 0, totalBaseAssetAmount: totalBaseAmount, - startPrice: new BN(90).mul(PRICE_PRECISION), - endPrice: new BN(100).mul(PRICE_PRECISION), + startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) + endPrice: new BN(90).mul(PRICE_PRECISION), // $90 (end low) orderCount: orderCount, sizeDistribution: SizeDistribution.DESCENDING, reduceOnly: false, @@ -399,7 +403,9 @@ describe('scale orders', () => { assert.equal(orders.length, orderCount, 'Should have 3 open orders'); - // For descending, largest order at lowest price, smallest at highest price + // For descending distribution, sizes decrease from first order to last + // First order (at start price $100) gets largest size + // Last order (at end price $90) gets smallest size console.log( 'Order sizes (descending):', orders.map((o) => ({ @@ -408,10 +414,10 @@ describe('scale orders', () => { })) ); - // Verify sizes are descending with price + // Verify sizes - highest price (start) has largest size, lowest price (end) has smallest assert.ok( - orders[0].baseAssetAmount.gt(orders[2].baseAssetAmount), - 'First order (lowest price) should be larger than last order (highest price)' + orders[2].baseAssetAmount.gt(orders[0].baseAssetAmount), + 'Order at highest price ($100) should have largest size, lowest price ($90) smallest' ); // Check total base amount sums correctly @@ -433,12 +439,13 @@ describe('scale orders', () => { // Note: We don't need an actual position to test the flag is set correctly const totalBaseAmount = BASE_PRECISION.div(new BN(2)); // 0.5 SOL + // Long: start high, end low (DCA down) const txSig = await driftClient.placeScalePerpOrders({ direction: PositionDirection.LONG, marketIndex: 0, totalBaseAssetAmount: totalBaseAmount, - startPrice: new BN(95).mul(PRICE_PRECISION), - endPrice: new BN(100).mul(PRICE_PRECISION), + startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) + endPrice: new BN(95).mul(PRICE_PRECISION), // $95 (end low) orderCount: 2, sizeDistribution: SizeDistribution.FLAT, reduceOnly: true, // Test reduce only flag @@ -472,12 +479,13 @@ describe('scale orders', () => { const totalBaseAmount = BASE_PRECISION; const orderCount = 2; // Minimum allowed + // Long: start high, end low (DCA down) const txSig = await driftClient.placeScalePerpOrders({ direction: PositionDirection.LONG, marketIndex: 0, totalBaseAssetAmount: totalBaseAmount, - startPrice: new BN(95).mul(PRICE_PRECISION), - endPrice: new BN(100).mul(PRICE_PRECISION), + startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) + endPrice: new BN(95).mul(PRICE_PRECISION), // $95 (end low) orderCount: orderCount, sizeDistribution: SizeDistribution.FLAT, reduceOnly: false, @@ -502,12 +510,12 @@ describe('scale orders', () => { assert.equal( prices[0], 95 * PRICE_PRECISION.toNumber(), - 'First price should be $95' + 'Lowest price should be $95' ); assert.equal( prices[1], 100 * PRICE_PRECISION.toNumber(), - 'Second price should be $100' + 'Highest price should be $100' ); // Cancel all orders From 3e735fe5afa18d27102129a4c760dc5383346732 Mon Sep 17 00:00:00 2001 From: Nick Caradonna Date: Wed, 28 Jan 2026 13:44:46 -0500 Subject: [PATCH 48/51] cleanup --- programs/drift/src/controller/scale_orders.rs | 339 +----------------- .../src/controller/scale_orders/tests.rs | 332 +++++++++++++++++ sdk/src/idl/drift.json | 5 +- sdk/src/types.ts | 14 - tests/scaleOrders.ts | 8 +- 5 files changed, 343 insertions(+), 355 deletions(-) create mode 100644 programs/drift/src/controller/scale_orders/tests.rs diff --git a/programs/drift/src/controller/scale_orders.rs b/programs/drift/src/controller/scale_orders.rs index 516f0557bc..2f2b009f52 100644 --- a/programs/drift/src/controller/scale_orders.rs +++ b/programs/drift/src/controller/scale_orders.rs @@ -7,6 +7,9 @@ use crate::state::user::{MarketType, OrderTriggerCondition, OrderType, User}; use crate::validate; use solana_program::msg; +#[cfg(test)] +mod tests; + /// Maximum number of orders allowed in a single scale order instruction pub const MAX_SCALE_ORDER_COUNT: u8 = MAX_OPEN_ORDERS; /// Minimum number of orders required for a scale order @@ -257,339 +260,3 @@ pub fn expand_scale_order_params( Ok(order_params) } - -#[cfg(test)] -mod tests { - use super::*; - use crate::state::order_params::{PostOnlyParam, ScaleOrderParams, SizeDistribution}; - use crate::{PositionDirection, BASE_PRECISION_U64, PRICE_PRECISION_U64}; - - #[test] - fn test_validate_order_count_bounds() { - let step_size = BASE_PRECISION_U64 / 1000; // 0.001 - - // Test minimum order count - // Long: start high, end low (DCA down) - let params = ScaleOrderParams { - direction: PositionDirection::Long, - market_index: 0, - total_base_asset_amount: BASE_PRECISION_U64, - start_price: 110 * PRICE_PRECISION_U64, - end_price: 100 * PRICE_PRECISION_U64, - order_count: 1, // Below minimum - size_distribution: SizeDistribution::Flat, - reduce_only: false, - post_only: PostOnlyParam::None, - bit_flags: 0, - max_ts: None, - }; - assert!(validate_scale_order_params(¶ms, step_size).is_err()); - - // Test maximum order count - let params = ScaleOrderParams { - order_count: 33, // Above maximum (MAX_OPEN_ORDERS = 32) - ..params - }; - assert!(validate_scale_order_params(¶ms, step_size).is_err()); - - // Test valid order count - let params = ScaleOrderParams { - order_count: 5, - ..params - }; - assert!(validate_scale_order_params(¶ms, step_size).is_ok()); - } - - #[test] - fn test_validate_price_range() { - let step_size = BASE_PRECISION_U64 / 1000; - - // Long orders: start_price must be > end_price (scaling down) - let params = ScaleOrderParams { - direction: PositionDirection::Long, - market_index: 0, - total_base_asset_amount: BASE_PRECISION_U64, - start_price: 100 * PRICE_PRECISION_U64, // Wrong: lower than end - end_price: 110 * PRICE_PRECISION_U64, - order_count: 5, - size_distribution: SizeDistribution::Flat, - reduce_only: false, - post_only: PostOnlyParam::None, - bit_flags: 0, - max_ts: None, - }; - assert!(validate_scale_order_params(¶ms, step_size).is_err()); - - // Short orders: start_price must be < end_price (scaling up) - let params = ScaleOrderParams { - direction: PositionDirection::Short, - start_price: 110 * PRICE_PRECISION_U64, // Wrong: higher than end - end_price: 100 * PRICE_PRECISION_U64, - ..params - }; - assert!(validate_scale_order_params(¶ms, step_size).is_err()); - - // Valid long order (start high, end low - DCA down) - let params = ScaleOrderParams { - direction: PositionDirection::Long, - start_price: 110 * PRICE_PRECISION_U64, - end_price: 100 * PRICE_PRECISION_U64, - ..params - }; - assert!(validate_scale_order_params(¶ms, step_size).is_ok()); - - // Valid short order (start low, end high - scale out up) - let params = ScaleOrderParams { - direction: PositionDirection::Short, - start_price: 100 * PRICE_PRECISION_U64, - end_price: 110 * PRICE_PRECISION_U64, - ..params - }; - assert!(validate_scale_order_params(¶ms, step_size).is_ok()); - } - - #[test] - fn test_price_distribution_long() { - // Long: start high, end low (DCA down) - let params = ScaleOrderParams { - direction: PositionDirection::Long, - market_index: 0, - total_base_asset_amount: BASE_PRECISION_U64, - start_price: 110 * PRICE_PRECISION_U64, - end_price: 100 * PRICE_PRECISION_U64, - order_count: 5, - size_distribution: SizeDistribution::Flat, - reduce_only: false, - post_only: PostOnlyParam::None, - bit_flags: 0, - max_ts: None, - }; - - let prices = calculate_price_distribution(¶ms).unwrap(); - assert_eq!(prices.len(), 5); - assert_eq!(prices[0], 110 * PRICE_PRECISION_U64); - assert_eq!(prices[1], 107500000); // 107.5 - assert_eq!(prices[2], 105 * PRICE_PRECISION_U64); - assert_eq!(prices[3], 102500000); // 102.5 - assert_eq!(prices[4], 100 * PRICE_PRECISION_U64); - } - - #[test] - fn test_price_distribution_short() { - // Short: start low, end high (scale out up) - let params = ScaleOrderParams { - direction: PositionDirection::Short, - market_index: 0, - total_base_asset_amount: BASE_PRECISION_U64, - start_price: 100 * PRICE_PRECISION_U64, - end_price: 110 * PRICE_PRECISION_U64, - order_count: 5, - size_distribution: SizeDistribution::Flat, - reduce_only: false, - post_only: PostOnlyParam::None, - bit_flags: 0, - max_ts: None, - }; - - let prices = calculate_price_distribution(¶ms).unwrap(); - assert_eq!(prices.len(), 5); - assert_eq!(prices[0], 100 * PRICE_PRECISION_U64); - assert_eq!(prices[1], 102500000); // 102.5 - assert_eq!(prices[2], 105 * PRICE_PRECISION_U64); - assert_eq!(prices[3], 107500000); // 107.5 - assert_eq!(prices[4], 110 * PRICE_PRECISION_U64); - } - - #[test] - fn test_flat_size_distribution() { - let step_size = BASE_PRECISION_U64 / 1000; // 0.001 - - // Long: start high, end low (DCA down) - let params = ScaleOrderParams { - direction: PositionDirection::Long, - market_index: 0, - total_base_asset_amount: BASE_PRECISION_U64, // 1.0 - start_price: 110 * PRICE_PRECISION_U64, - end_price: 100 * PRICE_PRECISION_U64, - order_count: 5, - size_distribution: SizeDistribution::Flat, - reduce_only: false, - post_only: PostOnlyParam::None, - bit_flags: 0, - max_ts: None, - }; - - let sizes = calculate_size_distribution(¶ms, step_size).unwrap(); - assert_eq!(sizes.len(), 5); - - // All sizes should be roughly equal - let total: u64 = sizes.iter().sum(); - assert_eq!(total, BASE_PRECISION_U64); - - // Check that all sizes are roughly 0.2 (200_000_000) - for (i, size) in sizes.iter().enumerate() { - if i < 4 { - assert_eq!(*size, 200000000); // 0.2 - } - } - } - - #[test] - fn test_ascending_size_distribution() { - let step_size = BASE_PRECISION_U64 / 1000; // 0.001 - - // Long: start high, end low (DCA down) - let params = ScaleOrderParams { - direction: PositionDirection::Long, - market_index: 0, - total_base_asset_amount: BASE_PRECISION_U64, // 1.0 - start_price: 110 * PRICE_PRECISION_U64, - end_price: 100 * PRICE_PRECISION_U64, - order_count: 5, - size_distribution: SizeDistribution::Ascending, - reduce_only: false, - post_only: PostOnlyParam::None, - bit_flags: 0, - max_ts: None, - }; - - let sizes = calculate_size_distribution(¶ms, step_size).unwrap(); - assert_eq!(sizes.len(), 5); - - // Ascending: first should be smallest, last should be largest - assert!(sizes[0] < sizes[4]); - assert!(sizes[0] <= sizes[1]); - assert!(sizes[1] <= sizes[2]); - assert!(sizes[2] <= sizes[3]); - assert!(sizes[3] <= sizes[4]); - - let total: u64 = sizes.iter().sum(); - assert_eq!(total, BASE_PRECISION_U64); - } - - #[test] - fn test_descending_size_distribution() { - let step_size = BASE_PRECISION_U64 / 1000; // 0.001 - - // Long: start high, end low (DCA down) - let params = ScaleOrderParams { - direction: PositionDirection::Long, - market_index: 0, - total_base_asset_amount: BASE_PRECISION_U64, // 1.0 - start_price: 110 * PRICE_PRECISION_U64, - end_price: 100 * PRICE_PRECISION_U64, - order_count: 5, - size_distribution: SizeDistribution::Descending, - reduce_only: false, - post_only: PostOnlyParam::None, - bit_flags: 0, - max_ts: None, - }; - - let sizes = calculate_size_distribution(¶ms, step_size).unwrap(); - assert_eq!(sizes.len(), 5); - - // Descending: first should be largest, last should be smallest - assert!(sizes[0] > sizes[4]); - assert!(sizes[0] >= sizes[1]); - assert!(sizes[1] >= sizes[2]); - assert!(sizes[2] >= sizes[3]); - assert!(sizes[3] >= sizes[4]); - - let total: u64 = sizes.iter().sum(); - assert_eq!(total, BASE_PRECISION_U64); - } - - #[test] - fn test_expand_to_order_params() { - let step_size = BASE_PRECISION_U64 / 1000; // 0.001 - - // Long: start high, end low (DCA down) - let params = ScaleOrderParams { - direction: PositionDirection::Long, - market_index: 1, - total_base_asset_amount: BASE_PRECISION_U64, // 1.0 - start_price: 110 * PRICE_PRECISION_U64, - end_price: 100 * PRICE_PRECISION_U64, - order_count: 3, - size_distribution: SizeDistribution::Flat, - reduce_only: true, - post_only: PostOnlyParam::MustPostOnly, - bit_flags: 2, // High leverage mode - max_ts: Some(12345), - }; - - let order_params = expand_scale_order_params(¶ms, step_size).unwrap(); - assert_eq!(order_params.len(), 3); - - // Check first order has bit flags - assert_eq!(order_params[0].bit_flags, 2); - // Other orders should have 0 bit flags - assert_eq!(order_params[1].bit_flags, 0); - assert_eq!(order_params[2].bit_flags, 0); - - // Check common properties - for op in &order_params { - assert_eq!(op.market_index, 1); - assert_eq!(op.reduce_only, true); - assert_eq!(op.post_only, PostOnlyParam::MustPostOnly); - assert_eq!(op.max_ts, Some(12345)); - assert!(matches!(op.direction, PositionDirection::Long)); - } - - // Check prices are distributed (high to low for long) - assert_eq!(order_params[0].price, 110 * PRICE_PRECISION_U64); - assert_eq!(order_params[1].price, 105 * PRICE_PRECISION_U64); - assert_eq!(order_params[2].price, 100 * PRICE_PRECISION_U64); - - // Check total size - let total: u64 = order_params.iter().map(|op| op.base_asset_amount).sum(); - assert_eq!(total, BASE_PRECISION_U64); - } - - #[test] - fn test_two_orders_price_distribution() { - // Long: start high, end low (DCA down) - let params = ScaleOrderParams { - direction: PositionDirection::Long, - market_index: 0, - total_base_asset_amount: BASE_PRECISION_U64, - start_price: 110 * PRICE_PRECISION_U64, - end_price: 100 * PRICE_PRECISION_U64, - order_count: 2, - size_distribution: SizeDistribution::Flat, - reduce_only: false, - post_only: PostOnlyParam::None, - bit_flags: 0, - max_ts: None, - }; - - let prices = calculate_price_distribution(¶ms).unwrap(); - assert_eq!(prices.len(), 2); - assert_eq!(prices[0], 110 * PRICE_PRECISION_U64); - assert_eq!(prices[1], 100 * PRICE_PRECISION_U64); - } - - #[test] - fn test_validate_min_total_size() { - let step_size = BASE_PRECISION_U64 / 10; // 0.1 - - // Total size is too small for 5 orders with this step size - // Long: start high, end low (DCA down) - let params = ScaleOrderParams { - direction: PositionDirection::Long, - market_index: 0, - total_base_asset_amount: BASE_PRECISION_U64 / 20, // 0.05 - not enough - start_price: 110 * PRICE_PRECISION_U64, - end_price: 100 * PRICE_PRECISION_U64, - order_count: 5, - size_distribution: SizeDistribution::Flat, - reduce_only: false, - post_only: PostOnlyParam::None, - bit_flags: 0, - max_ts: None, - }; - - assert!(validate_scale_order_params(¶ms, step_size).is_err()); - } -} diff --git a/programs/drift/src/controller/scale_orders/tests.rs b/programs/drift/src/controller/scale_orders/tests.rs new file mode 100644 index 0000000000..3403cc7845 --- /dev/null +++ b/programs/drift/src/controller/scale_orders/tests.rs @@ -0,0 +1,332 @@ +use crate::controller::scale_orders::*; +use crate::state::order_params::{PostOnlyParam, ScaleOrderParams, SizeDistribution}; +use crate::{PositionDirection, BASE_PRECISION_U64, PRICE_PRECISION_U64}; + +#[test] +fn test_validate_order_count_bounds() { + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + // Test minimum order count + // Long: start high, end low (DCA down) + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + order_count: 1, // Below minimum + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + assert!(validate_scale_order_params(¶ms, step_size).is_err()); + + // Test maximum order count + let params = ScaleOrderParams { + order_count: 33, // Above maximum (MAX_OPEN_ORDERS = 32) + ..params + }; + assert!(validate_scale_order_params(¶ms, step_size).is_err()); + + // Test valid order count + let params = ScaleOrderParams { + order_count: 5, + ..params + }; + assert!(validate_scale_order_params(¶ms, step_size).is_ok()); +} + +#[test] +fn test_validate_price_range() { + let step_size = BASE_PRECISION_U64 / 1000; + + // Long orders: start_price must be > end_price (scaling down) + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, + start_price: 100 * PRICE_PRECISION_U64, // Wrong: lower than end + end_price: 110 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + assert!(validate_scale_order_params(¶ms, step_size).is_err()); + + // Short orders: start_price must be < end_price (scaling up) + let params = ScaleOrderParams { + direction: PositionDirection::Short, + start_price: 110 * PRICE_PRECISION_U64, // Wrong: higher than end + end_price: 100 * PRICE_PRECISION_U64, + ..params + }; + assert!(validate_scale_order_params(¶ms, step_size).is_err()); + + // Valid long order (start high, end low - DCA down) + let params = ScaleOrderParams { + direction: PositionDirection::Long, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + ..params + }; + assert!(validate_scale_order_params(¶ms, step_size).is_ok()); + + // Valid short order (start low, end high - scale out up) + let params = ScaleOrderParams { + direction: PositionDirection::Short, + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, + ..params + }; + assert!(validate_scale_order_params(¶ms, step_size).is_ok()); +} + +#[test] +fn test_price_distribution_long() { + // Long: start high, end low (DCA down) + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let prices = calculate_price_distribution(¶ms).unwrap(); + assert_eq!(prices.len(), 5); + assert_eq!(prices[0], 110 * PRICE_PRECISION_U64); + assert_eq!(prices[1], 107500000); // 107.5 + assert_eq!(prices[2], 105 * PRICE_PRECISION_U64); + assert_eq!(prices[3], 102500000); // 102.5 + assert_eq!(prices[4], 100 * PRICE_PRECISION_U64); +} + +#[test] +fn test_price_distribution_short() { + // Short: start low, end high (scale out up) + let params = ScaleOrderParams { + direction: PositionDirection::Short, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let prices = calculate_price_distribution(¶ms).unwrap(); + assert_eq!(prices.len(), 5); + assert_eq!(prices[0], 100 * PRICE_PRECISION_U64); + assert_eq!(prices[1], 102500000); // 102.5 + assert_eq!(prices[2], 105 * PRICE_PRECISION_U64); + assert_eq!(prices[3], 107500000); // 107.5 + assert_eq!(prices[4], 110 * PRICE_PRECISION_U64); +} + +#[test] +fn test_flat_size_distribution() { + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + // Long: start high, end low (DCA down) + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, // 1.0 + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let sizes = calculate_size_distribution(¶ms, step_size).unwrap(); + assert_eq!(sizes.len(), 5); + + // All sizes should be roughly equal + let total: u64 = sizes.iter().sum(); + assert_eq!(total, BASE_PRECISION_U64); + + // Check that all sizes are roughly 0.2 (200_000_000) + for (i, size) in sizes.iter().enumerate() { + if i < 4 { + assert_eq!(*size, 200000000); // 0.2 + } + } +} + +#[test] +fn test_ascending_size_distribution() { + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + // Long: start high, end low (DCA down) + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, // 1.0 + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Ascending, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let sizes = calculate_size_distribution(¶ms, step_size).unwrap(); + assert_eq!(sizes.len(), 5); + + // Ascending: first should be smallest, last should be largest + assert!(sizes[0] < sizes[4]); + assert!(sizes[0] <= sizes[1]); + assert!(sizes[1] <= sizes[2]); + assert!(sizes[2] <= sizes[3]); + assert!(sizes[3] <= sizes[4]); + + let total: u64 = sizes.iter().sum(); + assert_eq!(total, BASE_PRECISION_U64); +} + +#[test] +fn test_descending_size_distribution() { + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + // Long: start high, end low (DCA down) + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, // 1.0 + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Descending, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let sizes = calculate_size_distribution(¶ms, step_size).unwrap(); + assert_eq!(sizes.len(), 5); + + // Descending: first should be largest, last should be smallest + assert!(sizes[0] > sizes[4]); + assert!(sizes[0] >= sizes[1]); + assert!(sizes[1] >= sizes[2]); + assert!(sizes[2] >= sizes[3]); + assert!(sizes[3] >= sizes[4]); + + let total: u64 = sizes.iter().sum(); + assert_eq!(total, BASE_PRECISION_U64); +} + +#[test] +fn test_expand_to_order_params() { + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + // Long: start high, end low (DCA down) + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 1, + total_base_asset_amount: BASE_PRECISION_U64, // 1.0 + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + order_count: 3, + size_distribution: SizeDistribution::Flat, + reduce_only: true, + post_only: PostOnlyParam::MustPostOnly, + bit_flags: 2, // High leverage mode + max_ts: Some(12345), + }; + + let order_params = expand_scale_order_params(¶ms, step_size).unwrap(); + assert_eq!(order_params.len(), 3); + + // Check first order has bit flags + assert_eq!(order_params[0].bit_flags, 2); + // Other orders should have 0 bit flags + assert_eq!(order_params[1].bit_flags, 0); + assert_eq!(order_params[2].bit_flags, 0); + + // Check common properties + for op in &order_params { + assert_eq!(op.market_index, 1); + assert_eq!(op.reduce_only, true); + assert_eq!(op.post_only, PostOnlyParam::MustPostOnly); + assert_eq!(op.max_ts, Some(12345)); + assert!(matches!(op.direction, PositionDirection::Long)); + } + + // Check prices are distributed (high to low for long) + assert_eq!(order_params[0].price, 110 * PRICE_PRECISION_U64); + assert_eq!(order_params[1].price, 105 * PRICE_PRECISION_U64); + assert_eq!(order_params[2].price, 100 * PRICE_PRECISION_U64); + + // Check total size + let total: u64 = order_params.iter().map(|op| op.base_asset_amount).sum(); + assert_eq!(total, BASE_PRECISION_U64); +} + +#[test] +fn test_two_orders_price_distribution() { + // Long: start high, end low (DCA down) + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + order_count: 2, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let prices = calculate_price_distribution(¶ms).unwrap(); + assert_eq!(prices.len(), 2); + assert_eq!(prices[0], 110 * PRICE_PRECISION_U64); + assert_eq!(prices[1], 100 * PRICE_PRECISION_U64); +} + +#[test] +fn test_validate_min_total_size() { + let step_size = BASE_PRECISION_U64 / 10; // 0.1 + + // Total size is too small for 5 orders with this step size + // Long: start high, end low (DCA down) + let params = ScaleOrderParams { + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64 / 20, // 0.05 - not enough + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + order_count: 5, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + assert!(validate_scale_order_params(¶ms, step_size).is_err()); +} diff --git a/sdk/src/idl/drift.json b/sdk/src/idl/drift.json index ba16391a66..d466a6e4ec 100644 --- a/sdk/src/idl/drift.json +++ b/sdk/src/idl/drift.json @@ -19973,5 +19973,8 @@ "name": "InvalidOrderScalePriceRange", "msg": "Invalid scale order price range" } - ] + ], + "metadata": { + "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" + } } \ No newline at end of file diff --git a/sdk/src/types.ts b/sdk/src/types.ts index 8270fa6509..eeecd26db7 100644 --- a/sdk/src/types.ts +++ b/sdk/src/types.ts @@ -1330,20 +1330,6 @@ export type ScaleOrderParams = { maxTs: BN | null; }; -export const DefaultScaleOrderParams: ScaleOrderParams = { - direction: PositionDirection.LONG, - marketIndex: 0, - totalBaseAssetAmount: ZERO, - startPrice: ZERO, - endPrice: ZERO, - orderCount: 2, - sizeDistribution: SizeDistribution.FLAT, - reduceOnly: false, - postOnly: PostOnlyParams.NONE, - bitFlags: 0, - maxTs: null, -}; - export class OrderParamsBitFlag { static readonly ImmediateOrCancel = 1; static readonly UpdateHighLeverageMode = 2; diff --git a/tests/scaleOrders.ts b/tests/scaleOrders.ts index efd5f1c859..676e7f9094 100644 --- a/tests/scaleOrders.ts +++ b/tests/scaleOrders.ts @@ -352,10 +352,10 @@ describe('scale orders', () => { Math.abs(prices[0] - expectedStartPrice) <= 10, `Lowest price should be ~$105 (got ${prices[0]}, expected ${expectedStartPrice})` ); - assert.equal( - prices[3], - 110 * PRICE_PRECISION.toNumber(), - 'Highest price should be $110' + const expectedEndPrice = 110 * PRICE_PRECISION.toNumber(); + assert.ok( + Math.abs(prices[3] - expectedEndPrice) <= 10, + `Highest price should be ~$110 (got ${prices[3]}, expected ${expectedEndPrice})` ); // Check total base amount sums correctly From e6da37608cfd736c6b38177e3a660d8f9eb9dac1 Mon Sep 17 00:00:00 2001 From: Nick Caradonna Date: Wed, 28 Jan 2026 14:42:19 -0500 Subject: [PATCH 49/51] add spot --- programs/drift/src/controller/scale_orders.rs | 16 +- .../src/controller/scale_orders/tests.rs | 99 ++++- programs/drift/src/instructions/user.rs | 24 +- programs/drift/src/lib.rs | 4 +- programs/drift/src/state/order_params.rs | 3 +- sdk/src/driftClient.ts | 41 +- sdk/src/idl/drift.json | 15 +- sdk/src/types.ts | 1 + tests/scaleOrders.ts | 380 ++++++++++++++++-- 9 files changed, 516 insertions(+), 67 deletions(-) diff --git a/programs/drift/src/controller/scale_orders.rs b/programs/drift/src/controller/scale_orders.rs index 2f2b009f52..6d65ff6a1e 100644 --- a/programs/drift/src/controller/scale_orders.rs +++ b/programs/drift/src/controller/scale_orders.rs @@ -100,7 +100,7 @@ pub fn validate_scale_order_params( /// Calculate evenly distributed prices between start and end price pub fn calculate_price_distribution(params: &ScaleOrderParams) -> DriftResult> { - let order_count = params.order_count as u64; + let order_count = params.order_count as usize; if order_count == 1 { return Ok(vec![params.start_price]); @@ -117,11 +117,15 @@ pub fn calculate_price_distribution(params: &ScaleOrderParams) -> DriftResult end_price (scaling down) let params = ScaleOrderParams { + market_type: MarketType::Perp, direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, @@ -90,6 +93,7 @@ fn test_validate_price_range() { fn test_price_distribution_long() { // Long: start high, end low (DCA down) let params = ScaleOrderParams { + market_type: MarketType::Perp, direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, @@ -116,6 +120,7 @@ fn test_price_distribution_long() { fn test_price_distribution_short() { // Short: start low, end high (scale out up) let params = ScaleOrderParams { + market_type: MarketType::Perp, direction: PositionDirection::Short, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, @@ -144,6 +149,7 @@ fn test_flat_size_distribution() { // Long: start high, end low (DCA down) let params = ScaleOrderParams { + market_type: MarketType::Perp, direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, // 1.0 @@ -178,6 +184,7 @@ fn test_ascending_size_distribution() { // Long: start high, end low (DCA down) let params = ScaleOrderParams { + market_type: MarketType::Perp, direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, // 1.0 @@ -211,6 +218,7 @@ fn test_descending_size_distribution() { // Long: start high, end low (DCA down) let params = ScaleOrderParams { + market_type: MarketType::Perp, direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, // 1.0 @@ -239,11 +247,12 @@ fn test_descending_size_distribution() { } #[test] -fn test_expand_to_order_params() { +fn test_expand_to_order_params_perp() { let step_size = BASE_PRECISION_U64 / 1000; // 0.001 // Long: start high, end low (DCA down) let params = ScaleOrderParams { + market_type: MarketType::Perp, direction: PositionDirection::Long, market_index: 1, total_base_asset_amount: BASE_PRECISION_U64, // 1.0 @@ -268,6 +277,7 @@ fn test_expand_to_order_params() { // Check common properties for op in &order_params { + assert_eq!(op.market_type, MarketType::Perp); assert_eq!(op.market_index, 1); assert_eq!(op.reduce_only, true); assert_eq!(op.post_only, PostOnlyParam::MustPostOnly); @@ -285,10 +295,96 @@ fn test_expand_to_order_params() { assert_eq!(total, BASE_PRECISION_U64); } +#[test] +fn test_expand_to_order_params_spot() { + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + // Spot Long: start high, end low (DCA down) + let params = ScaleOrderParams { + market_type: MarketType::Spot, + direction: PositionDirection::Long, + market_index: 1, // SOL spot market + total_base_asset_amount: BASE_PRECISION_U64, // 1.0 + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + order_count: 3, + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let order_params = expand_scale_order_params(¶ms, step_size).unwrap(); + assert_eq!(order_params.len(), 3); + + // Check all orders are Spot market type + for op in &order_params { + assert_eq!(op.market_type, MarketType::Spot); + assert_eq!(op.market_index, 1); + assert!(matches!(op.direction, PositionDirection::Long)); + } + + // Check prices are distributed (high to low for long) + assert_eq!(order_params[0].price, 110 * PRICE_PRECISION_U64); + assert_eq!(order_params[1].price, 105 * PRICE_PRECISION_U64); + assert_eq!(order_params[2].price, 100 * PRICE_PRECISION_U64); + + // Check total size + let total: u64 = order_params.iter().map(|op| op.base_asset_amount).sum(); + assert_eq!(total, BASE_PRECISION_U64); +} + +#[test] +fn test_spot_short_scale_orders() { + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + // Spot Short: start low, end high (scale out up) + let params = ScaleOrderParams { + market_type: MarketType::Spot, + direction: PositionDirection::Short, + market_index: 1, // SOL spot market + total_base_asset_amount: BASE_PRECISION_U64, // 1.0 + start_price: 100 * PRICE_PRECISION_U64, + end_price: 110 * PRICE_PRECISION_U64, + order_count: 4, + size_distribution: SizeDistribution::Ascending, + reduce_only: false, + post_only: PostOnlyParam::MustPostOnly, + bit_flags: 0, + max_ts: Some(99999), + }; + + let order_params = expand_scale_order_params(¶ms, step_size).unwrap(); + assert_eq!(order_params.len(), 4); + + // Check all orders are Spot market type and Short direction + for op in &order_params { + assert_eq!(op.market_type, MarketType::Spot); + assert_eq!(op.market_index, 1); + assert!(matches!(op.direction, PositionDirection::Short)); + assert_eq!(op.post_only, PostOnlyParam::MustPostOnly); + assert_eq!(op.max_ts, Some(99999)); + } + + // Check prices are distributed (low to high for short) + assert_eq!(order_params[0].price, 100 * PRICE_PRECISION_U64); + // Middle prices + assert_eq!(order_params[3].price, 110 * PRICE_PRECISION_U64); + + // Ascending: sizes should increase + assert!(order_params[0].base_asset_amount < order_params[3].base_asset_amount); + + // Check total size + let total: u64 = order_params.iter().map(|op| op.base_asset_amount).sum(); + assert_eq!(total, BASE_PRECISION_U64); +} + #[test] fn test_two_orders_price_distribution() { // Long: start high, end low (DCA down) let params = ScaleOrderParams { + market_type: MarketType::Perp, direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64, @@ -315,6 +411,7 @@ fn test_validate_min_total_size() { // Total size is too small for 5 orders with this step size // Long: start high, end low (DCA down) let params = ScaleOrderParams { + market_type: MarketType::Perp, direction: PositionDirection::Long, market_index: 0, total_base_asset_amount: BASE_PRECISION_U64 / 20, // 0.05 - not enough diff --git a/programs/drift/src/instructions/user.rs b/programs/drift/src/instructions/user.rs index 0725e899f9..e17b1ba4dd 100644 --- a/programs/drift/src/instructions/user.rs +++ b/programs/drift/src/instructions/user.rs @@ -2607,7 +2607,7 @@ enum PlaceOrdersInput { } /// Internal implementation for placing multiple orders. -/// Used by both handle_place_orders and handle_place_scale_perp_orders. +/// Used by both handle_place_orders and handle_place_scale_orders. fn place_orders_impl<'c: 'info, 'info>( ctx: &Context<'_, '_, 'c, 'info, PlaceOrder>, input: PlaceOrdersInput, @@ -2634,9 +2634,20 @@ fn place_orders_impl<'c: 'info, 'info>( let (order_params, validate_ioc) = match input { PlaceOrdersInput::Orders(params) => (params, true), PlaceOrdersInput::ScaleOrders(scale_params) => { - let market = perp_market_map.get_ref(&scale_params.market_index)?; - let order_step_size = market.amm.order_step_size; - drop(market); + let order_step_size = match scale_params.market_type { + MarketType::Perp => { + let market = perp_market_map.get_ref(&scale_params.market_index)?; + let step_size = market.amm.order_step_size; + drop(market); + step_size + } + MarketType::Spot => { + let market = spot_market_map.get_ref(&scale_params.market_index)?; + let step_size = market.order_step_size; + drop(market); + step_size + } + }; let expanded = controller::scale_orders::expand_scale_order_params(&scale_params, order_step_size) .map_err(|e| { @@ -2693,8 +2704,7 @@ fn place_orders_impl<'c: 'info, 'info>( options, &mut None, )?; - } else if validate_ioc { - // Only place spot orders for regular place_orders, not scale orders + } else { controller::orders::place_spot_order( state, &mut user, @@ -2725,7 +2735,7 @@ pub fn handle_place_orders<'c: 'info, 'info>( #[access_control( exchange_not_paused(&ctx.accounts.state) )] -pub fn handle_place_scale_perp_orders<'c: 'info, 'info>( +pub fn handle_place_scale_orders<'c: 'info, 'info>( ctx: Context<'_, '_, 'c, 'info, PlaceOrder>, params: ScaleOrderParams, ) -> Result<()> { diff --git a/programs/drift/src/lib.rs b/programs/drift/src/lib.rs index fad1ca1340..f9f2915ae1 100644 --- a/programs/drift/src/lib.rs +++ b/programs/drift/src/lib.rs @@ -367,11 +367,11 @@ pub mod drift { handle_place_orders(ctx, params) } - pub fn place_scale_perp_orders<'c: 'info, 'info>( + pub fn place_scale_orders<'c: 'info, 'info>( ctx: Context<'_, '_, 'c, 'info, PlaceOrder>, params: ScaleOrderParams, ) -> Result<()> { - handle_place_scale_perp_orders(ctx, params) + handle_place_scale_orders(ctx, params) } pub fn begin_swap<'c: 'info, 'info>( diff --git a/programs/drift/src/state/order_params.rs b/programs/drift/src/state/order_params.rs index 432eee1dd7..80a11c9ff9 100644 --- a/programs/drift/src/state/order_params.rs +++ b/programs/drift/src/state/order_params.rs @@ -1043,6 +1043,7 @@ pub enum SizeDistribution { /// Parameters for placing scale orders - multiple limit orders distributed across a price range #[derive(AnchorSerialize, AnchorDeserialize, Clone, Default, Eq, PartialEq, Debug)] pub struct ScaleOrderParams { + pub market_type: MarketType, pub direction: PositionDirection, pub market_index: u16, /// Total base asset amount to distribute across all orders @@ -1051,7 +1052,7 @@ pub struct ScaleOrderParams { pub start_price: u64, /// Ending price for the scale (in PRICE_PRECISION) pub end_price: u64, - /// Number of orders to place (min 2, max 10) + /// Number of orders to place (min 2, max 32) pub order_count: u8, /// How to distribute sizes across orders pub size_distribution: SizeDistribution, diff --git a/sdk/src/driftClient.ts b/sdk/src/driftClient.ts index 2da6e932c0..08c372664d 100644 --- a/sdk/src/driftClient.ts +++ b/sdk/src/driftClient.ts @@ -5610,14 +5610,14 @@ export class DriftClient { * @param subAccountId Optional sub account ID * @returns Transaction signature */ - public async placeScalePerpOrders( + public async placeScaleOrders( params: ScaleOrderParams, txParams?: TxParams, subAccountId?: number ): Promise { const { txSig } = await this.sendTransaction( - (await this.preparePlaceScalePerpOrdersTx(params, txParams, subAccountId)) - .placeScalePerpOrdersTx, + (await this.preparePlaceScaleOrdersTx(params, txParams, subAccountId)) + .placeScaleOrdersTx, [], this.opts, false @@ -5625,7 +5625,7 @@ export class DriftClient { return txSig; } - public async preparePlaceScalePerpOrdersTx( + public async preparePlaceScaleOrdersTx( params: ScaleOrderParams, txParams?: TxParams, subAccountId?: number @@ -5633,26 +5633,29 @@ export class DriftClient { const lookupTableAccounts = await this.fetchAllLookupTableAccounts(); const tx = await this.buildTransaction( - await this.getPlaceScalePerpOrdersIx(params, subAccountId), + await this.getPlaceScaleOrdersIx(params, subAccountId), txParams, undefined, lookupTableAccounts ); return { - placeScalePerpOrdersTx: tx, + placeScaleOrdersTx: tx, }; } - public async getPlaceScalePerpOrdersIx( + public async getPlaceScaleOrdersIx( params: ScaleOrderParams, subAccountId?: number ): Promise { const user = await this.getUserAccountPublicKey(subAccountId); + const isPerp = isVariant(params.marketType, 'perp'); + const remainingAccounts = this.getRemainingAccounts({ userAccounts: [this.getUserAccount(subAccountId)], - readablePerpMarketIndex: [params.marketIndex], + readablePerpMarketIndex: isPerp ? [params.marketIndex] : [], + readableSpotMarketIndexes: isPerp ? [] : [params.marketIndex], useMarketLastSlotCache: true, }); @@ -5665,6 +5668,7 @@ export class DriftClient { } const formattedParams = { + marketType: params.marketType, direction: params.direction, marketIndex: params.marketIndex, totalBaseAssetAmount: params.totalBaseAssetAmount, @@ -5678,18 +5682,15 @@ export class DriftClient { maxTs: params.maxTs, }; - return await this.program.instruction.placeScalePerpOrders( - formattedParams, - { - accounts: { - state: await this.getStatePublicKey(), - user, - userStats: this.getUserStatsAccountPublicKey(), - authority: this.wallet.publicKey, - }, - remainingAccounts, - } - ); + return await this.program.instruction.placeScaleOrders(formattedParams, { + accounts: { + state: await this.getStatePublicKey(), + user, + userStats: this.getUserStatsAccountPublicKey(), + authority: this.wallet.publicKey, + }, + remainingAccounts, + }); } public async fillPerpOrder( diff --git a/sdk/src/idl/drift.json b/sdk/src/idl/drift.json index d466a6e4ec..43a3d9169b 100644 --- a/sdk/src/idl/drift.json +++ b/sdk/src/idl/drift.json @@ -1383,7 +1383,7 @@ ] }, { - "name": "placeScalePerpOrders", + "name": "placeScaleOrders", "accounts": [ { "name": "state", @@ -13296,6 +13296,12 @@ "type": { "kind": "struct", "fields": [ + { + "name": "marketType", + "type": { + "defined": "MarketType" + } + }, { "name": "direction", "type": { @@ -13330,7 +13336,7 @@ { "name": "orderCount", "docs": [ - "Number of orders to place (min 2, max 10)" + "Number of orders to place (min 2, max 32)" ], "type": "u8" }, @@ -19973,8 +19979,5 @@ "name": "InvalidOrderScalePriceRange", "msg": "Invalid scale order price range" } - ], - "metadata": { - "address": "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH" - } + ] } \ No newline at end of file diff --git a/sdk/src/types.ts b/sdk/src/types.ts index eeecd26db7..feda6c7905 100644 --- a/sdk/src/types.ts +++ b/sdk/src/types.ts @@ -1308,6 +1308,7 @@ export class SizeDistribution { * Parameters for placing scale orders - multiple limit orders distributed across a price range */ export type ScaleOrderParams = { + marketType: MarketType; direction: PositionDirection; marketIndex: number; /** Total base asset amount to distribute across all orders */ diff --git a/tests/scaleOrders.ts b/tests/scaleOrders.ts index 676e7f9094..1f3f4bd08c 100644 --- a/tests/scaleOrders.ts +++ b/tests/scaleOrders.ts @@ -3,7 +3,7 @@ import { assert } from 'chai'; import { Program } from '@coral-xyz/anchor'; -import { PublicKey } from '@solana/web3.js'; +import { PublicKey, Transaction } from '@solana/web3.js'; import { TestClient, @@ -16,6 +16,9 @@ import { SizeDistribution, BASE_PRECISION, isVariant, + MarketType, + MARGIN_PRECISION, + getUserAccountPublicKeySync, } from '../sdk/src'; import { @@ -23,6 +26,7 @@ import { mockUserUSDCAccount, mockUSDCMint, initializeQuoteSpotMarket, + initializeSolSpotMarket, sleep, } from './testHelpers'; import { OracleSource, ZERO } from '../sdk'; @@ -57,7 +61,8 @@ describe('scale orders', () => { const usdcAmount = new BN(100000 * 10 ** 6); // $100k - const marketIndex = 0; + const perpMarketIndex = 0; + const spotMarketIndex = 1; // SOL spot market (USDC is 0) let solUsd; @@ -88,8 +93,8 @@ describe('scale orders', () => { solUsd = await mockOracleNoProgram(bankrunContextWrapper, 100); - const marketIndexes = [marketIndex]; - const bankIndexes = [0]; + const marketIndexes = [perpMarketIndex]; + const bankIndexes = [0, 1]; // USDC and SOL spot markets const oracleInfos = [ { publicKey: PublicKey.default, source: OracleSource.QUOTE_ASSET }, { publicKey: solUsd, source: OracleSource.PYTH }, @@ -147,11 +152,58 @@ describe('scale orders', () => { new BN(1) ); - [, _userAccountPublicKey] = - await driftClient.initializeUserAccountAndDepositCollateral( + // Initialize SOL spot market + await initializeSolSpotMarket(driftClient, solUsd); + + // Set step size for spot market + await driftClient.updateSpotMarketStepSizeAndTickSize( + spotMarketIndex, + new BN(1000000), // 0.001 in token precision + new BN(1) + ); + + // Enable margin trading on spot market (required for short orders) + await driftClient.updateSpotMarketMarginWeights( + spotMarketIndex, + MARGIN_PRECISION.toNumber() * 0.75, // initial asset weight + MARGIN_PRECISION.toNumber() * 0.8, // maintenance asset weight + MARGIN_PRECISION.toNumber() * 1.25, // initial liability weight + MARGIN_PRECISION.toNumber() * 1.2 // maintenance liability weight + ); + + // Get initialization instructions + const { ixs: initIxs, userAccountPublicKey } = + await driftClient.createInitializeUserAccountAndDepositCollateralIxs( usdcAmount, userUSDCAccount.publicKey ); + _userAccountPublicKey = userAccountPublicKey; + + // Get margin trading enabled instruction (manually construct since user doesn't exist yet) + const marginTradingIx = + await driftClient.program.instruction.updateUserMarginTradingEnabled( + 0, // subAccountId + true, // marginTradingEnabled + { + accounts: { + user: getUserAccountPublicKeySync( + driftClient.program.programId, + bankrunContextWrapper.provider.wallet.publicKey, + 0 + ), + authority: bankrunContextWrapper.provider.wallet.publicKey, + }, + remainingAccounts: [], + } + ); + + // Bundle and send all instructions together + const allIxs = [...initIxs, marginTradingIx]; + const tx = await driftClient.buildTransaction(allIxs); + await driftClient.sendTransaction(tx as Transaction, [], driftClient.opts); + + // Add user to client + await driftClient.addUser(0); driftClientUser = new User({ driftClient, @@ -185,14 +237,17 @@ describe('scale orders', () => { } }); - it('place scale orders - flat distribution', async () => { + // ==================== PERP MARKET TESTS ==================== + + it('place perp scale orders - flat distribution', async () => { const totalBaseAmount = BASE_PRECISION; // 1 SOL const orderCount = 5; // Long: start high, end low (DCA down) - const txSig = await driftClient.placeScalePerpOrders({ + const txSig = await driftClient.placeScaleOrders({ + marketType: MarketType.PERP, direction: PositionDirection.LONG, - marketIndex: 0, + marketIndex: perpMarketIndex, totalBaseAssetAmount: totalBaseAmount, startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) endPrice: new BN(95).mul(PRICE_PRECISION), // $95 (end low) @@ -216,6 +271,11 @@ describe('scale orders', () => { assert.equal(orders.length, orderCount, 'Should have 5 open orders'); + // All orders should be perp market type + for (const order of orders) { + assert.ok(isVariant(order.marketType, 'perp'), 'Order should be perp'); + } + // Check orders are distributed across prices (sorted low to high) const prices = orders.map((o) => o.price.toNumber()).sort((a, b) => a - b); assert.equal( @@ -243,14 +303,15 @@ describe('scale orders', () => { await driftClient.cancelOrders(); }); - it('place scale orders - ascending distribution (long)', async () => { + it('place perp scale orders - ascending distribution (long)', async () => { const totalBaseAmount = BASE_PRECISION; // 1 SOL const orderCount = 3; // Long: start high, end low (DCA down) - const txSig = await driftClient.placeScalePerpOrders({ + const txSig = await driftClient.placeScaleOrders({ + marketType: MarketType.PERP, direction: PositionDirection.LONG, - marketIndex: 0, + marketIndex: perpMarketIndex, totalBaseAssetAmount: totalBaseAmount, startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) endPrice: new BN(90).mul(PRICE_PRECISION), // $90 (end low) @@ -304,14 +365,15 @@ describe('scale orders', () => { await driftClient.cancelOrders(); }); - it('place scale orders - short direction', async () => { + it('place perp scale orders - short direction', async () => { const totalBaseAmount = BASE_PRECISION.div(new BN(2)); // 0.5 SOL const orderCount = 4; // Short: start low, end high (scale out up) - const txSig = await driftClient.placeScalePerpOrders({ + const txSig = await driftClient.placeScaleOrders({ + marketType: MarketType.PERP, direction: PositionDirection.SHORT, - marketIndex: 0, + marketIndex: perpMarketIndex, totalBaseAssetAmount: totalBaseAmount, startPrice: new BN(105).mul(PRICE_PRECISION), // $105 (start low) endPrice: new BN(110).mul(PRICE_PRECISION), // $110 (end high) @@ -372,14 +434,15 @@ describe('scale orders', () => { await driftClient.cancelOrders(); }); - it('place scale orders - descending distribution', async () => { + it('place perp scale orders - descending distribution', async () => { const totalBaseAmount = BASE_PRECISION; // 1 SOL const orderCount = 3; // Long: start high, end low (DCA down) - const txSig = await driftClient.placeScalePerpOrders({ + const txSig = await driftClient.placeScaleOrders({ + marketType: MarketType.PERP, direction: PositionDirection.LONG, - marketIndex: 0, + marketIndex: perpMarketIndex, totalBaseAssetAmount: totalBaseAmount, startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) endPrice: new BN(90).mul(PRICE_PRECISION), // $90 (end low) @@ -434,15 +497,16 @@ describe('scale orders', () => { await driftClient.cancelOrders(); }); - it('place scale orders - with reduce only flag', async () => { + it('place perp scale orders - with reduce only flag', async () => { // Test that reduce-only flag is properly set on scale orders // Note: We don't need an actual position to test the flag is set correctly const totalBaseAmount = BASE_PRECISION.div(new BN(2)); // 0.5 SOL // Long: start high, end low (DCA down) - const txSig = await driftClient.placeScalePerpOrders({ + const txSig = await driftClient.placeScaleOrders({ + marketType: MarketType.PERP, direction: PositionDirection.LONG, - marketIndex: 0, + marketIndex: perpMarketIndex, totalBaseAssetAmount: totalBaseAmount, startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) endPrice: new BN(95).mul(PRICE_PRECISION), // $95 (end low) @@ -475,14 +539,15 @@ describe('scale orders', () => { await driftClient.cancelOrders(); }); - it('place scale orders - minimum 2 orders', async () => { + it('place perp scale orders - minimum 2 orders', async () => { const totalBaseAmount = BASE_PRECISION; const orderCount = 2; // Minimum allowed // Long: start high, end low (DCA down) - const txSig = await driftClient.placeScalePerpOrders({ + const txSig = await driftClient.placeScaleOrders({ + marketType: MarketType.PERP, direction: PositionDirection.LONG, - marketIndex: 0, + marketIndex: perpMarketIndex, totalBaseAssetAmount: totalBaseAmount, startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) endPrice: new BN(95).mul(PRICE_PRECISION), // $95 (end low) @@ -521,4 +586,271 @@ describe('scale orders', () => { // Cancel all orders await driftClient.cancelOrders(); }); + + // ==================== SPOT MARKET TESTS ==================== + + it('place spot scale orders - flat distribution (long)', async () => { + const totalBaseAmount = BASE_PRECISION; // 1 SOL + const orderCount = 3; + + // Long: start high, end low (DCA down) + const txSig = await driftClient.placeScaleOrders({ + marketType: MarketType.SPOT, + direction: PositionDirection.LONG, + marketIndex: spotMarketIndex, + totalBaseAssetAmount: totalBaseAmount, + startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) + endPrice: new BN(95).mul(PRICE_PRECISION), // $95 (end low) + orderCount: orderCount, + sizeDistribution: SizeDistribution.FLAT, + reduceOnly: false, + postOnly: PostOnlyParams.NONE, + bitFlags: 0, + maxTs: null, + }); + + bankrunContextWrapper.printTxLogs(txSig); + + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + + const userAccount = driftClientUser.getUserAccount(); + const orders = userAccount.orders.filter((order) => + isVariant(order.status, 'open') + ); + + assert.equal(orders.length, orderCount, 'Should have 3 open orders'); + + // All orders should be spot market type + for (const order of orders) { + assert.ok(isVariant(order.marketType, 'spot'), 'Order should be spot'); + assert.equal( + order.marketIndex, + spotMarketIndex, + 'Market index should match' + ); + } + + // Check orders are distributed across prices + const prices = orders.map((o) => o.price.toNumber()).sort((a, b) => a - b); + assert.equal( + prices[0], + 95 * PRICE_PRECISION.toNumber(), + 'Lowest price should be $95' + ); + assert.equal( + prices[2], + 100 * PRICE_PRECISION.toNumber(), + 'Highest price should be $100' + ); + + // Check total base amount sums correctly + const totalBase = orders.reduce( + (sum, o) => sum.add(o.baseAssetAmount), + ZERO + ); + assert.ok( + totalBase.eq(totalBaseAmount), + 'Total base amount should equal input' + ); + + // Cancel all orders + await driftClient.cancelOrders(); + }); + + it('place spot scale orders - short direction', async () => { + const totalBaseAmount = BASE_PRECISION.div(new BN(2)); // 0.5 SOL + const orderCount = 4; + + // Short: start low, end high (scale out up) + const txSig = await driftClient.placeScaleOrders({ + marketType: MarketType.SPOT, + direction: PositionDirection.SHORT, + marketIndex: spotMarketIndex, + totalBaseAssetAmount: totalBaseAmount, + startPrice: new BN(105).mul(PRICE_PRECISION), // $105 (start low) + endPrice: new BN(110).mul(PRICE_PRECISION), // $110 (end high) + orderCount: orderCount, + sizeDistribution: SizeDistribution.FLAT, + reduceOnly: false, + postOnly: PostOnlyParams.MUST_POST_ONLY, + bitFlags: 0, + maxTs: null, + }); + + bankrunContextWrapper.printTxLogs(txSig); + + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + + const userAccount = driftClientUser.getUserAccount(); + const orders = userAccount.orders.filter((order) => + isVariant(order.status, 'open') + ); + + assert.equal(orders.length, orderCount, 'Should have 4 open orders'); + + // All orders should be spot market type and short direction + for (const order of orders) { + assert.ok(isVariant(order.marketType, 'spot'), 'Order should be spot'); + assert.deepEqual( + order.direction, + PositionDirection.SHORT, + 'All orders should be SHORT' + ); + } + + // Check prices are distributed from 105 to 110 + const prices = orders.map((o) => o.price.toNumber()).sort((a, b) => a - b); + const expectedStartPrice = 105 * PRICE_PRECISION.toNumber(); + assert.ok( + Math.abs(prices[0] - expectedStartPrice) <= 10, + `Lowest price should be ~$105 (got ${prices[0]})` + ); + const expectedEndPrice = 110 * PRICE_PRECISION.toNumber(); + assert.ok( + Math.abs(prices[3] - expectedEndPrice) <= 10, + `Highest price should be ~$110 (got ${prices[3]})` + ); + + // Check total base amount sums correctly + const totalBase = orders.reduce( + (sum, o) => sum.add(o.baseAssetAmount), + ZERO + ); + assert.ok( + totalBase.eq(totalBaseAmount), + 'Total base amount should equal input' + ); + + // Cancel all orders + await driftClient.cancelOrders(); + }); + + it('place spot scale orders - ascending distribution', async () => { + const totalBaseAmount = BASE_PRECISION; // 1 SOL + const orderCount = 3; + + // Long: start high, end low (DCA down) + const txSig = await driftClient.placeScaleOrders({ + marketType: MarketType.SPOT, + direction: PositionDirection.LONG, + marketIndex: spotMarketIndex, + totalBaseAssetAmount: totalBaseAmount, + startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) + endPrice: new BN(90).mul(PRICE_PRECISION), // $90 (end low) + orderCount: orderCount, + sizeDistribution: SizeDistribution.ASCENDING, + reduceOnly: false, + postOnly: PostOnlyParams.NONE, + bitFlags: 0, + maxTs: null, + }); + + bankrunContextWrapper.printTxLogs(txSig); + + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + + const userAccount = driftClientUser.getUserAccount(); + const orders = userAccount.orders + .filter((order) => isVariant(order.status, 'open')) + .sort((a, b) => a.price.toNumber() - b.price.toNumber()); + + assert.equal(orders.length, orderCount, 'Should have 3 open orders'); + + // All orders should be spot market type + for (const order of orders) { + assert.ok(isVariant(order.marketType, 'spot'), 'Order should be spot'); + } + + // For ascending distribution, sizes increase from start to end + // Order at lowest price ($90 - end) should have largest size + console.log( + 'Spot order sizes (ascending):', + orders.map((o) => ({ + price: o.price.toString(), + size: o.baseAssetAmount.toString(), + })) + ); + + assert.ok( + orders[0].baseAssetAmount.gt(orders[2].baseAssetAmount), + 'Order at lowest price ($90) should have largest size' + ); + + // Check total base amount sums correctly + const totalBase = orders.reduce( + (sum, o) => sum.add(o.baseAssetAmount), + ZERO + ); + assert.ok( + totalBase.eq(totalBaseAmount), + 'Total base amount should equal input' + ); + + // Cancel all orders + await driftClient.cancelOrders(); + }); + + it('place spot scale orders - descending distribution', async () => { + const totalBaseAmount = BASE_PRECISION; // 1 SOL + const orderCount = 3; + + // Long: start high, end low (DCA down) + const txSig = await driftClient.placeScaleOrders({ + marketType: MarketType.SPOT, + direction: PositionDirection.LONG, + marketIndex: spotMarketIndex, + totalBaseAssetAmount: totalBaseAmount, + startPrice: new BN(100).mul(PRICE_PRECISION), // $100 (start high) + endPrice: new BN(90).mul(PRICE_PRECISION), // $90 (end low) + orderCount: orderCount, + sizeDistribution: SizeDistribution.DESCENDING, + reduceOnly: false, + postOnly: PostOnlyParams.NONE, + bitFlags: 0, + maxTs: null, + }); + + bankrunContextWrapper.printTxLogs(txSig); + + await driftClient.fetchAccounts(); + await driftClientUser.fetchAccounts(); + + const userAccount = driftClientUser.getUserAccount(); + const orders = userAccount.orders + .filter((order) => isVariant(order.status, 'open')) + .sort((a, b) => a.price.toNumber() - b.price.toNumber()); + + assert.equal(orders.length, orderCount, 'Should have 3 open orders'); + + // For descending distribution, sizes decrease from start to end + // Order at highest price ($100 - start) should have largest size + console.log( + 'Spot order sizes (descending):', + orders.map((o) => ({ + price: o.price.toString(), + size: o.baseAssetAmount.toString(), + })) + ); + + assert.ok( + orders[2].baseAssetAmount.gt(orders[0].baseAssetAmount), + 'Order at highest price ($100) should have largest size' + ); + + // Check total base amount sums correctly + const totalBase = orders.reduce( + (sum, o) => sum.add(o.baseAssetAmount), + ZERO + ); + assert.ok( + totalBase.eq(totalBaseAmount), + 'Total base amount should equal input' + ); + + // Cancel all orders + await driftClient.cancelOrders(); + }); }); From 7b4e9bdcda4415bb7ccb0b4ad6896ce109f65e9b Mon Sep 17 00:00:00 2001 From: Nick Caradonna Date: Tue, 3 Feb 2026 17:45:54 -0500 Subject: [PATCH 50/51] refactor --- programs/drift/src/controller/mod.rs | 1 - programs/drift/src/controller/scale_orders.rs | 266 ---------------- programs/drift/src/instructions/user.rs | 7 +- programs/drift/src/lib.rs | 3 +- programs/drift/src/state/mod.rs | 1 + programs/drift/src/state/order_params.rs | 37 --- .../drift/src/state/scale_order_params.rs | 295 ++++++++++++++++++ .../scale_order_params}/tests.rs | 215 ++++++++++--- 8 files changed, 479 insertions(+), 346 deletions(-) delete mode 100644 programs/drift/src/controller/scale_orders.rs create mode 100644 programs/drift/src/state/scale_order_params.rs rename programs/drift/src/{controller/scale_orders => state/scale_order_params}/tests.rs (63%) diff --git a/programs/drift/src/controller/mod.rs b/programs/drift/src/controller/mod.rs index 0c37d5185c..db15dfddf5 100644 --- a/programs/drift/src/controller/mod.rs +++ b/programs/drift/src/controller/mod.rs @@ -9,7 +9,6 @@ pub mod pnl; pub mod position; pub mod repeg; pub mod revenue_share; -pub mod scale_orders; pub mod spot_balance; pub mod spot_position; pub mod token; diff --git a/programs/drift/src/controller/scale_orders.rs b/programs/drift/src/controller/scale_orders.rs deleted file mode 100644 index 6d65ff6a1e..0000000000 --- a/programs/drift/src/controller/scale_orders.rs +++ /dev/null @@ -1,266 +0,0 @@ -use crate::controller::position::PositionDirection; -use crate::error::{DriftResult, ErrorCode}; -use crate::math::constants::MAX_OPEN_ORDERS; -use crate::math::safe_math::SafeMath; -use crate::state::order_params::{OrderParams, ScaleOrderParams, SizeDistribution}; -use crate::state::user::{MarketType, OrderTriggerCondition, OrderType, User}; -use crate::validate; -use solana_program::msg; - -#[cfg(test)] -mod tests; - -/// Maximum number of orders allowed in a single scale order instruction -pub const MAX_SCALE_ORDER_COUNT: u8 = MAX_OPEN_ORDERS; -/// Minimum number of orders required for a scale order -pub const MIN_SCALE_ORDER_COUNT: u8 = 2; - -/// Validates that placing scale orders won't exceed user's max open orders -pub fn validate_user_can_place_scale_orders( - user: &User, - order_count: u8, -) -> DriftResult<()> { - let current_open_orders = user - .orders - .iter() - .filter(|o| o.status == crate::state::user::OrderStatus::Open) - .count() as u8; - - let total_after = current_open_orders.saturating_add(order_count); - - validate!( - total_after <= MAX_OPEN_ORDERS, - ErrorCode::MaxNumberOfOrders, - "placing {} scale orders would exceed max open orders ({} current + {} new = {} > {} max)", - order_count, - current_open_orders, - order_count, - total_after, - MAX_OPEN_ORDERS - )?; - - Ok(()) -} - -/// Validates the scale order parameters -pub fn validate_scale_order_params( - params: &ScaleOrderParams, - order_step_size: u64, -) -> DriftResult<()> { - validate!( - params.order_count >= MIN_SCALE_ORDER_COUNT, - ErrorCode::InvalidOrderScaleOrderCount, - "order_count must be at least {}", - MIN_SCALE_ORDER_COUNT - )?; - - validate!( - params.order_count <= MAX_SCALE_ORDER_COUNT, - ErrorCode::InvalidOrderScaleOrderCount, - "order_count must be at most {}", - MAX_SCALE_ORDER_COUNT - )?; - - validate!( - params.start_price != params.end_price, - ErrorCode::InvalidOrderScalePriceRange, - "start_price and end_price cannot be equal" - )?; - - // For long orders, start price is higher (first buy) and end price is lower (DCA down) - // For short orders, start price is lower (first sell) and end price is higher (scale out up) - match params.direction { - PositionDirection::Long => { - validate!( - params.start_price > params.end_price, - ErrorCode::InvalidOrderScalePriceRange, - "for long scale orders, start_price must be greater than end_price (scaling down)" - )?; - } - PositionDirection::Short => { - validate!( - params.start_price < params.end_price, - ErrorCode::InvalidOrderScalePriceRange, - "for short scale orders, start_price must be less than end_price (scaling up)" - )?; - } - } - - // Validate that total size can be distributed among all orders meeting minimum step size - let min_total_size = order_step_size.safe_mul(params.order_count as u64)?; - validate!( - params.total_base_asset_amount >= min_total_size, - ErrorCode::OrderAmountTooSmall, - "total_base_asset_amount must be at least {} (order_step_size * order_count)", - min_total_size - )?; - - Ok(()) -} - -/// Calculate evenly distributed prices between start and end price -pub fn calculate_price_distribution(params: &ScaleOrderParams) -> DriftResult> { - let order_count = params.order_count as usize; - - if order_count == 1 { - return Ok(vec![params.start_price]); - } - - if order_count == 2 { - return Ok(vec![params.start_price, params.end_price]); - } - - let (min_price, max_price) = if params.start_price < params.end_price { - (params.start_price, params.end_price) - } else { - (params.end_price, params.start_price) - }; - - let price_range = max_price.safe_sub(min_price)?; - let num_steps = (order_count - 1) as u64; - let price_step = price_range.safe_div(num_steps)?; - - let mut prices = Vec::with_capacity(order_count); - for i in 0..order_count { - // Use exact end_price for the last order to avoid rounding errors - let price = if i == order_count - 1 { - params.end_price - } else if params.start_price < params.end_price { - params.start_price.safe_add(price_step.safe_mul(i as u64)?)? - } else { - params.start_price.safe_sub(price_step.safe_mul(i as u64)?)? - }; - prices.push(price); - } - - Ok(prices) -} - -/// Calculate order sizes based on size distribution strategy -pub fn calculate_size_distribution( - params: &ScaleOrderParams, - order_step_size: u64, -) -> DriftResult> { - match params.size_distribution { - SizeDistribution::Flat => calculate_flat_sizes(params, order_step_size), - SizeDistribution::Ascending => calculate_scaled_sizes(params, order_step_size, false), - SizeDistribution::Descending => calculate_scaled_sizes(params, order_step_size, true), - } -} - -/// Calculate flat (equal) distribution of sizes -fn calculate_flat_sizes(params: &ScaleOrderParams, order_step_size: u64) -> DriftResult> { - let order_count = params.order_count as u64; - let base_size = params.total_base_asset_amount.safe_div(order_count)?; - // Round down to step size - let rounded_size = base_size - .safe_div(order_step_size)? - .safe_mul(order_step_size)?; - - let mut sizes = vec![rounded_size; params.order_count as usize]; - - // Add remainder to the last order - let total_distributed: u64 = sizes.iter().sum(); - let remainder = params.total_base_asset_amount.safe_sub(total_distributed)?; - if remainder > 0 { - if let Some(last) = sizes.last_mut() { - *last = last.safe_add(remainder)?; - } - } - - Ok(sizes) -} - -/// Calculate scaled (ascending/descending) distribution of sizes -/// Uses multipliers: 1x, 1.5x, 2x, 2.5x, ... for ascending -fn calculate_scaled_sizes( - params: &ScaleOrderParams, - order_step_size: u64, - descending: bool, -) -> DriftResult> { - let order_count = params.order_count as usize; - - // Calculate multipliers: 1.0, 1.5, 2.0, 2.5, ... (using 0.5 step) - // Sum of multipliers = n/2 * (first + last) = n/2 * (1 + (1 + 0.5*(n-1))) - // For precision, multiply everything by 2: multipliers become 2, 3, 4, 5, ... - // Sum = n/2 * (2 + (2 + (n-1))) = n/2 * (3 + n) = n*(n+3)/2 - let multiplier_sum = (order_count * (order_count + 3)) / 2; - - // Base unit size (multiplied by 2 for precision) - let base_unit = params - .total_base_asset_amount - .safe_mul(2)? - .safe_div(multiplier_sum as u64)?; - - let mut sizes = Vec::with_capacity(order_count); - let mut total = 0u64; - - for i in 0..order_count { - // Multiplier for position i is (2 + i) when using 0.5 step scaled by 2 - let multiplier = (2 + i) as u64; - let raw_size = base_unit.safe_mul(multiplier)?.safe_div(2)?; - // Round to step size - let rounded_size = raw_size - .safe_div(order_step_size)? - .safe_mul(order_step_size)? - .max(order_step_size); // Ensure at least step size - sizes.push(rounded_size); - total = total.safe_add(rounded_size)?; - } - - // Adjust last order to account for rounding - if total != params.total_base_asset_amount { - if let Some(last) = sizes.last_mut() { - if total > params.total_base_asset_amount { - let diff = total.safe_sub(params.total_base_asset_amount)?; - *last = last.saturating_sub(diff).max(order_step_size); - } else { - let diff = params.total_base_asset_amount.safe_sub(total)?; - *last = last.safe_add(diff)?; - } - } - } - - if descending { - sizes.reverse(); - } - - Ok(sizes) -} - -/// Expand scale order params into individual OrderParams -pub fn expand_scale_order_params( - params: &ScaleOrderParams, - order_step_size: u64, -) -> DriftResult> { - validate_scale_order_params(params, order_step_size)?; - - let prices = calculate_price_distribution(params)?; - let sizes = calculate_size_distribution(params, order_step_size)?; - - let mut order_params = Vec::with_capacity(params.order_count as usize); - - for (i, (price, size)) in prices.iter().zip(sizes.iter()).enumerate() { - order_params.push(OrderParams { - order_type: OrderType::Limit, - market_type: params.market_type, - direction: params.direction, - user_order_id: 0, - base_asset_amount: *size, - price: *price, - market_index: params.market_index, - reduce_only: params.reduce_only, - post_only: params.post_only, - bit_flags: if i == 0 { params.bit_flags } else { 0 }, - max_ts: params.max_ts, - trigger_price: None, - trigger_condition: OrderTriggerCondition::Above, - oracle_price_offset: None, - auction_duration: None, - auction_start_price: None, - auction_end_price: None, - }); - } - - Ok(order_params) -} diff --git a/programs/drift/src/instructions/user.rs b/programs/drift/src/instructions/user.rs index e17b1ba4dd..90cdd0389b 100644 --- a/programs/drift/src/instructions/user.rs +++ b/programs/drift/src/instructions/user.rs @@ -78,9 +78,10 @@ use crate::state::margin_calculation::MarginContext; use crate::state::oracle::StrictOraclePrice; use crate::state::order_params::{ parse_optional_params, ModifyOrderParams, OrderParams, PlaceAndTakeOrderSuccessCondition, - PlaceOrderOptions, PostOnlyParam, ScaleOrderParams, + PlaceOrderOptions, PostOnlyParam, }; use crate::state::paused_operations::{PerpOperation, SpotOperation}; +use crate::state::scale_order_params::ScaleOrderParams; use crate::state::perp_market::MarketStatus; use crate::state::perp_market_map::{get_writable_perp_market_set, MarketSet}; use crate::state::protected_maker_mode_config::ProtectedMakerModeConfig; @@ -2649,7 +2650,7 @@ fn place_orders_impl<'c: 'info, 'info>( } }; - let expanded = controller::scale_orders::expand_scale_order_params(&scale_params, order_step_size) + let expanded = scale_params.expand_to_order_params(order_step_size) .map_err(|e| { msg!("Failed to expand scale order params: {:?}", e); ErrorCode::InvalidOrder @@ -2668,7 +2669,7 @@ fn place_orders_impl<'c: 'info, 'info>( let mut user = load_mut!(ctx.accounts.user)?; // Validate that user won't exceed max open orders - controller::scale_orders::validate_user_can_place_scale_orders(&user, order_params.len() as u8)?; + ScaleOrderParams::validate_user_order_count(&user, order_params.len() as u8)?; let num_orders = order_params.len(); for (i, params) in order_params.iter().enumerate() { diff --git a/programs/drift/src/lib.rs b/programs/drift/src/lib.rs index f9f2915ae1..3ecd0ef296 100644 --- a/programs/drift/src/lib.rs +++ b/programs/drift/src/lib.rs @@ -12,7 +12,8 @@ use state::oracle::OracleSource; use crate::controller::position::PositionDirection; use crate::state::if_rebalance_config::IfRebalanceConfigParams; use crate::state::oracle::PrelaunchOracleParams; -use crate::state::order_params::{ModifyOrderParams, OrderParams, ScaleOrderParams}; +use crate::state::order_params::{ModifyOrderParams, OrderParams}; +use crate::state::scale_order_params::ScaleOrderParams; use crate::state::perp_market::{ContractTier, MarketStatus}; use crate::state::settle_pnl_mode::SettlePnlMode; use crate::state::spot_market::AssetTier; diff --git a/programs/drift/src/state/mod.rs b/programs/drift/src/state/mod.rs index 73b57392f4..aecc0d1686 100644 --- a/programs/drift/src/state/mod.rs +++ b/programs/drift/src/state/mod.rs @@ -15,6 +15,7 @@ pub mod oracle; pub mod oracle_map; pub mod order_params; pub mod paused_operations; +pub mod scale_order_params; pub mod perp_market; pub mod perp_market_map; pub mod protected_maker_mode_config; diff --git a/programs/drift/src/state/order_params.rs b/programs/drift/src/state/order_params.rs index 80a11c9ff9..97e2619232 100644 --- a/programs/drift/src/state/order_params.rs +++ b/programs/drift/src/state/order_params.rs @@ -1028,40 +1028,3 @@ pub fn parse_optional_params(optional_params: Option) -> (u8, u8) { } } -/// How to distribute order sizes across scale orders -#[derive(AnchorSerialize, AnchorDeserialize, Clone, Copy, Default, Eq, PartialEq, Debug)] -pub enum SizeDistribution { - /// Equal size for all orders - #[default] - Flat, - /// Smallest orders at start price, largest at end price - Ascending, - /// Largest orders at start price, smallest at end price - Descending, -} - -/// Parameters for placing scale orders - multiple limit orders distributed across a price range -#[derive(AnchorSerialize, AnchorDeserialize, Clone, Default, Eq, PartialEq, Debug)] -pub struct ScaleOrderParams { - pub market_type: MarketType, - pub direction: PositionDirection, - pub market_index: u16, - /// Total base asset amount to distribute across all orders - pub total_base_asset_amount: u64, - /// Starting price for the scale (in PRICE_PRECISION) - pub start_price: u64, - /// Ending price for the scale (in PRICE_PRECISION) - pub end_price: u64, - /// Number of orders to place (min 2, max 32) - pub order_count: u8, - /// How to distribute sizes across orders - pub size_distribution: SizeDistribution, - /// Whether orders should be reduce-only - pub reduce_only: bool, - /// Post-only setting for all orders - pub post_only: PostOnlyParam, - /// Bit flags (e.g., for high leverage mode) - pub bit_flags: u8, - /// Maximum timestamp for orders to be valid - pub max_ts: Option, -} diff --git a/programs/drift/src/state/scale_order_params.rs b/programs/drift/src/state/scale_order_params.rs new file mode 100644 index 0000000000..bedce1c477 --- /dev/null +++ b/programs/drift/src/state/scale_order_params.rs @@ -0,0 +1,295 @@ +use crate::controller::position::PositionDirection; +use crate::error::{DriftResult, ErrorCode}; +use crate::math::constants::MAX_OPEN_ORDERS; +use crate::math::safe_math::SafeMath; +use crate::state::order_params::{OrderParams, PostOnlyParam}; +use crate::state::user::{MarketType, OrderStatus, OrderTriggerCondition, OrderType, User}; +use crate::validate; +use anchor_lang::prelude::*; +use solana_program::msg; + +#[cfg(test)] +mod tests; + +/// Minimum number of orders required for a scale order +pub const MIN_SCALE_ORDER_COUNT: u8 = 2; +/// Maximum number of orders allowed in a single scale order instruction +pub const MAX_SCALE_ORDER_COUNT: u8 = MAX_OPEN_ORDERS; + +/// How to distribute order sizes across scale orders +#[derive(AnchorSerialize, AnchorDeserialize, Clone, Copy, Default, Eq, PartialEq, Debug)] +pub enum SizeDistribution { + /// Equal size for all orders + #[default] + Flat, + /// Smallest orders at start price, largest at end price + Ascending, + /// Largest orders at start price, smallest at end price + Descending, +} + +/// Parameters for placing scale orders - multiple limit orders distributed across a price range +#[derive(AnchorSerialize, AnchorDeserialize, Clone, Default, Eq, PartialEq, Debug)] +pub struct ScaleOrderParams { + pub market_type: MarketType, + pub direction: PositionDirection, + pub market_index: u16, + /// Total base asset amount to distribute across all orders + pub total_base_asset_amount: u64, + /// Starting price for the scale (in PRICE_PRECISION) + pub start_price: u64, + /// Ending price for the scale (in PRICE_PRECISION) + pub end_price: u64, + /// Number of orders to place (min 2, max 32) + pub order_count: u8, + /// How to distribute sizes across orders + pub size_distribution: SizeDistribution, + /// Whether orders should be reduce-only + pub reduce_only: bool, + /// Post-only setting for all orders + pub post_only: PostOnlyParam, + /// Bit flags (e.g., for high leverage mode) + pub bit_flags: u8, + /// Maximum timestamp for orders to be valid + pub max_ts: Option, +} + +impl ScaleOrderParams { + /// Validates that placing scale orders won't exceed user's max open orders + pub fn validate_user_order_count(user: &User, order_count: u8) -> DriftResult<()> { + let current_open_orders = user + .orders + .iter() + .filter(|o| o.status == OrderStatus::Open) + .count() as u8; + + let total_after = current_open_orders.saturating_add(order_count); + + validate!( + total_after <= MAX_OPEN_ORDERS, + ErrorCode::MaxNumberOfOrders, + "placing {} scale orders would exceed max open orders ({} current + {} new = {} > {} max)", + order_count, + current_open_orders, + order_count, + total_after, + MAX_OPEN_ORDERS + )?; + + Ok(()) + } + + /// Validates the scale order parameters + pub fn validate(&self, order_step_size: u64) -> DriftResult<()> { + validate!( + self.order_count >= MIN_SCALE_ORDER_COUNT, + ErrorCode::InvalidOrderScaleOrderCount, + "order_count must be at least {}", + MIN_SCALE_ORDER_COUNT + )?; + + validate!( + self.order_count <= MAX_SCALE_ORDER_COUNT, + ErrorCode::InvalidOrderScaleOrderCount, + "order_count must be at most {}", + MAX_SCALE_ORDER_COUNT + )?; + + validate!( + self.start_price != self.end_price, + ErrorCode::InvalidOrderScalePriceRange, + "start_price and end_price cannot be equal" + )?; + + // For long orders, start price is higher (first buy) and end price is lower (DCA down) + // For short orders, start price is lower (first sell) and end price is higher (scale out up) + match self.direction { + PositionDirection::Long => { + validate!( + self.start_price > self.end_price, + ErrorCode::InvalidOrderScalePriceRange, + "for long scale orders, start_price must be greater than end_price (scaling down)" + )?; + } + PositionDirection::Short => { + validate!( + self.start_price < self.end_price, + ErrorCode::InvalidOrderScalePriceRange, + "for short scale orders, start_price must be less than end_price (scaling up)" + )?; + } + } + + // Validate that total size can be distributed among all orders meeting minimum step size + let min_total_size = order_step_size.safe_mul(self.order_count as u64)?; + validate!( + self.total_base_asset_amount >= min_total_size, + ErrorCode::OrderAmountTooSmall, + "total_base_asset_amount must be at least {} (order_step_size * order_count)", + min_total_size + )?; + + Ok(()) + } + + /// Calculate evenly distributed prices between start and end price + pub fn calculate_price_distribution(&self) -> DriftResult> { + let order_count = self.order_count as usize; + + if order_count == 1 { + return Ok(vec![self.start_price]); + } + + if order_count == 2 { + return Ok(vec![self.start_price, self.end_price]); + } + + let (min_price, max_price) = if self.start_price < self.end_price { + (self.start_price, self.end_price) + } else { + (self.end_price, self.start_price) + }; + + let price_range = max_price.safe_sub(min_price)?; + let num_steps = (order_count - 1) as u64; + let price_step = price_range.safe_div(num_steps)?; + + let mut prices = Vec::with_capacity(order_count); + for i in 0..order_count { + // Use exact end_price for the last order to avoid rounding errors + let price = if i == order_count - 1 { + self.end_price + } else if self.start_price < self.end_price { + self.start_price.safe_add(price_step.safe_mul(i as u64)?)? + } else { + self.start_price.safe_sub(price_step.safe_mul(i as u64)?)? + }; + prices.push(price); + } + + Ok(prices) + } + + /// Calculate order sizes based on size distribution strategy + pub fn calculate_size_distribution(&self, order_step_size: u64) -> DriftResult> { + match self.size_distribution { + SizeDistribution::Flat => self.calculate_flat_sizes(order_step_size), + SizeDistribution::Ascending => self.calculate_scaled_sizes(order_step_size, false), + SizeDistribution::Descending => self.calculate_scaled_sizes(order_step_size, true), + } + } + + /// Calculate flat (equal) distribution of sizes + fn calculate_flat_sizes(&self, order_step_size: u64) -> DriftResult> { + let order_count = self.order_count as u64; + let base_size = self.total_base_asset_amount.safe_div(order_count)?; + // Round down to step size + let rounded_size = base_size + .safe_div(order_step_size)? + .safe_mul(order_step_size)?; + + let mut sizes = vec![rounded_size; self.order_count as usize]; + + // Add remainder to the last order + let total_distributed: u64 = sizes.iter().sum(); + let remainder = self.total_base_asset_amount.safe_sub(total_distributed)?; + if remainder > 0 { + if let Some(last) = sizes.last_mut() { + *last = last.safe_add(remainder)?; + } + } + + Ok(sizes) + } + + /// Calculate scaled (ascending/descending) distribution of sizes + /// Uses multipliers: 1x, 1.5x, 2x, 2.5x, ... for ascending + fn calculate_scaled_sizes( + &self, + order_step_size: u64, + descending: bool, + ) -> DriftResult> { + let order_count = self.order_count as usize; + + // Calculate multipliers: 1.0, 1.5, 2.0, 2.5, ... (using 0.5 step) + // Sum of multipliers = n/2 * (first + last) = n/2 * (1 + (1 + 0.5*(n-1))) + // For precision, multiply everything by 2: multipliers become 2, 3, 4, 5, ... + // Sum = n/2 * (2 + (2 + (n-1))) = n/2 * (3 + n) = n*(n+3)/2 + let multiplier_sum = (order_count * (order_count + 3)) / 2; + + // Base unit size (multiplied by 2 for precision) + let base_unit = self + .total_base_asset_amount + .safe_mul(2)? + .safe_div(multiplier_sum as u64)?; + + let mut sizes = Vec::with_capacity(order_count); + let mut total = 0u64; + + for i in 0..order_count { + // Multiplier for position i is (2 + i) when using 0.5 step scaled by 2 + let multiplier = (2 + i) as u64; + let raw_size = base_unit.safe_mul(multiplier)?.safe_div(2)?; + // Round to step size + let rounded_size = raw_size + .safe_div(order_step_size)? + .safe_mul(order_step_size)? + .max(order_step_size); // Ensure at least step size + sizes.push(rounded_size); + total = total.safe_add(rounded_size)?; + } + + // Adjust last order to account for rounding + if total != self.total_base_asset_amount { + if let Some(last) = sizes.last_mut() { + if total > self.total_base_asset_amount { + let diff = total.safe_sub(self.total_base_asset_amount)?; + *last = last.saturating_sub(diff).max(order_step_size); + } else { + let diff = self.total_base_asset_amount.safe_sub(total)?; + *last = last.safe_add(diff)?; + } + } + } + + if descending { + sizes.reverse(); + } + + Ok(sizes) + } + + /// Expand scale order params into individual OrderParams + pub fn expand_to_order_params(&self, order_step_size: u64) -> DriftResult> { + self.validate(order_step_size)?; + + let prices = self.calculate_price_distribution()?; + let sizes = self.calculate_size_distribution(order_step_size)?; + + let mut order_params = Vec::with_capacity(self.order_count as usize); + + for (i, (price, size)) in prices.iter().zip(sizes.iter()).enumerate() { + order_params.push(OrderParams { + order_type: OrderType::Limit, + market_type: self.market_type, + direction: self.direction, + user_order_id: 0, + base_asset_amount: *size, + price: *price, + market_index: self.market_index, + reduce_only: self.reduce_only, + post_only: self.post_only, + bit_flags: if i == 0 { self.bit_flags } else { 0 }, + max_ts: self.max_ts, + trigger_price: None, + trigger_condition: OrderTriggerCondition::Above, + oracle_price_offset: None, + auction_duration: None, + auction_start_price: None, + auction_end_price: None, + }); + } + + Ok(order_params) + } +} diff --git a/programs/drift/src/controller/scale_orders/tests.rs b/programs/drift/src/state/scale_order_params/tests.rs similarity index 63% rename from programs/drift/src/controller/scale_orders/tests.rs rename to programs/drift/src/state/scale_order_params/tests.rs index 53d73c7f84..4877d3d119 100644 --- a/programs/drift/src/controller/scale_orders/tests.rs +++ b/programs/drift/src/state/scale_order_params/tests.rs @@ -1,5 +1,5 @@ -use crate::controller::scale_orders::*; -use crate::state::order_params::{PostOnlyParam, ScaleOrderParams, SizeDistribution}; +use crate::state::order_params::PostOnlyParam; +use crate::state::scale_order_params::{ScaleOrderParams, SizeDistribution}; use crate::state::user::MarketType; use crate::{PositionDirection, BASE_PRECISION_U64, PRICE_PRECISION_U64}; @@ -23,21 +23,21 @@ fn test_validate_order_count_bounds() { bit_flags: 0, max_ts: None, }; - assert!(validate_scale_order_params(¶ms, step_size).is_err()); + assert!(params.validate(step_size).is_err()); // Test maximum order count let params = ScaleOrderParams { order_count: 33, // Above maximum (MAX_OPEN_ORDERS = 32) ..params }; - assert!(validate_scale_order_params(¶ms, step_size).is_err()); + assert!(params.validate(step_size).is_err()); // Test valid order count let params = ScaleOrderParams { order_count: 5, ..params }; - assert!(validate_scale_order_params(¶ms, step_size).is_ok()); + assert!(params.validate(step_size).is_ok()); } #[test] @@ -59,7 +59,7 @@ fn test_validate_price_range() { bit_flags: 0, max_ts: None, }; - assert!(validate_scale_order_params(¶ms, step_size).is_err()); + assert!(params.validate(step_size).is_err()); // Short orders: start_price must be < end_price (scaling up) let params = ScaleOrderParams { @@ -68,7 +68,7 @@ fn test_validate_price_range() { end_price: 100 * PRICE_PRECISION_U64, ..params }; - assert!(validate_scale_order_params(¶ms, step_size).is_err()); + assert!(params.validate(step_size).is_err()); // Valid long order (start high, end low - DCA down) let params = ScaleOrderParams { @@ -77,7 +77,7 @@ fn test_validate_price_range() { end_price: 100 * PRICE_PRECISION_U64, ..params }; - assert!(validate_scale_order_params(¶ms, step_size).is_ok()); + assert!(params.validate(step_size).is_ok()); // Valid short order (start low, end high - scale out up) let params = ScaleOrderParams { @@ -86,7 +86,7 @@ fn test_validate_price_range() { end_price: 110 * PRICE_PRECISION_U64, ..params }; - assert!(validate_scale_order_params(¶ms, step_size).is_ok()); + assert!(params.validate(step_size).is_ok()); } #[test] @@ -107,7 +107,7 @@ fn test_price_distribution_long() { max_ts: None, }; - let prices = calculate_price_distribution(¶ms).unwrap(); + let prices = params.calculate_price_distribution().unwrap(); assert_eq!(prices.len(), 5); assert_eq!(prices[0], 110 * PRICE_PRECISION_U64); assert_eq!(prices[1], 107500000); // 107.5 @@ -134,7 +134,7 @@ fn test_price_distribution_short() { max_ts: None, }; - let prices = calculate_price_distribution(¶ms).unwrap(); + let prices = params.calculate_price_distribution().unwrap(); assert_eq!(prices.len(), 5); assert_eq!(prices[0], 100 * PRICE_PRECISION_U64); assert_eq!(prices[1], 102500000); // 102.5 @@ -163,18 +163,26 @@ fn test_flat_size_distribution() { max_ts: None, }; - let sizes = calculate_size_distribution(¶ms, step_size).unwrap(); + let sizes = params.calculate_size_distribution(step_size).unwrap(); assert_eq!(sizes.len(), 5); - // All sizes should be roughly equal + // Total must equal the requested amount let total: u64 = sizes.iter().sum(); assert_eq!(total, BASE_PRECISION_U64); - // Check that all sizes are roughly 0.2 (200_000_000) - for (i, size) in sizes.iter().enumerate() { - if i < 4 { - assert_eq!(*size, 200000000); // 0.2 - } + // Flat distribution: each order should be 1/5 = 20% of total + // Expected: 200_000_000 each (0.2 BASE) + // First 4 orders are exactly 0.2, last order gets any remainder + assert_eq!(sizes[0], 200_000_000); // 20% + assert_eq!(sizes[1], 200_000_000); // 20% + assert_eq!(sizes[2], 200_000_000); // 20% + assert_eq!(sizes[3], 200_000_000); // 20% + assert_eq!(sizes[4], 200_000_000); // 20% (remainder goes here if any) + + // Verify each order is exactly 20% of total + for size in &sizes { + let pct = (*size as f64) / (BASE_PRECISION_U64 as f64) * 100.0; + assert!((pct - 20.0).abs() < 0.1, "Expected ~20%, got {}%", pct); } } @@ -198,18 +206,41 @@ fn test_ascending_size_distribution() { max_ts: None, }; - let sizes = calculate_size_distribution(¶ms, step_size).unwrap(); + let sizes = params.calculate_size_distribution(step_size).unwrap(); assert_eq!(sizes.len(), 5); - // Ascending: first should be smallest, last should be largest - assert!(sizes[0] < sizes[4]); - assert!(sizes[0] <= sizes[1]); - assert!(sizes[1] <= sizes[2]); - assert!(sizes[2] <= sizes[3]); - assert!(sizes[3] <= sizes[4]); - + // Total must equal the requested amount let total: u64 = sizes.iter().sum(); assert_eq!(total, BASE_PRECISION_U64); + + // Ascending distribution uses multipliers: 1x, 1.5x, 2x, 2.5x, 3x + // Scaled by 2 for precision: 2, 3, 4, 5, 6 (sum = 20) + // Expected proportions: 10%, 15%, 20%, 25%, 30% + // For 1_000_000_000 total: 100M, 150M, 200M, 250M, 300M + assert_eq!(sizes[0], 100_000_000); // 10% - smallest + assert_eq!(sizes[1], 150_000_000); // 15% + assert_eq!(sizes[2], 200_000_000); // 20% + assert_eq!(sizes[3], 250_000_000); // 25% + assert_eq!(sizes[4], 300_000_000); // 30% - largest + + // Verify ascending order: each subsequent order is larger + assert!(sizes[0] < sizes[1]); + assert!(sizes[1] < sizes[2]); + assert!(sizes[2] < sizes[3]); + assert!(sizes[3] < sizes[4]); + + // Verify the proportions are correct (within 1% tolerance for rounding) + let expected_pcts = [10.0, 15.0, 20.0, 25.0, 30.0]; + for (i, (size, expected_pct)) in sizes.iter().zip(expected_pcts.iter()).enumerate() { + let actual_pct = (*size as f64) / (BASE_PRECISION_U64 as f64) * 100.0; + assert!( + (actual_pct - expected_pct).abs() < 1.0, + "Order {}: expected ~{}%, got {}%", + i, + expected_pct, + actual_pct + ); + } } #[test] @@ -232,18 +263,126 @@ fn test_descending_size_distribution() { max_ts: None, }; - let sizes = calculate_size_distribution(¶ms, step_size).unwrap(); + let sizes = params.calculate_size_distribution(step_size).unwrap(); assert_eq!(sizes.len(), 5); - // Descending: first should be largest, last should be smallest - assert!(sizes[0] > sizes[4]); - assert!(sizes[0] >= sizes[1]); - assert!(sizes[1] >= sizes[2]); - assert!(sizes[2] >= sizes[3]); - assert!(sizes[3] >= sizes[4]); + // Total must equal the requested amount + let total: u64 = sizes.iter().sum(); + assert_eq!(total, BASE_PRECISION_U64); + + // Descending distribution is reverse of ascending + // Multipliers (reversed): 3x, 2.5x, 2x, 1.5x, 1x + // Expected proportions: 30%, 25%, 20%, 15%, 10% + // For 1_000_000_000 total: 300M, 250M, 200M, 150M, 100M + assert_eq!(sizes[0], 300_000_000); // 30% - largest + assert_eq!(sizes[1], 250_000_000); // 25% + assert_eq!(sizes[2], 200_000_000); // 20% + assert_eq!(sizes[3], 150_000_000); // 15% + assert_eq!(sizes[4], 100_000_000); // 10% - smallest + + // Verify descending order: each subsequent order is smaller + assert!(sizes[0] > sizes[1]); + assert!(sizes[1] > sizes[2]); + assert!(sizes[2] > sizes[3]); + assert!(sizes[3] > sizes[4]); + + // Verify the proportions are correct (within 1% tolerance for rounding) + let expected_pcts = [30.0, 25.0, 20.0, 15.0, 10.0]; + for (i, (size, expected_pct)) in sizes.iter().zip(expected_pcts.iter()).enumerate() { + let actual_pct = (*size as f64) / (BASE_PRECISION_U64 as f64) * 100.0; + assert!( + (actual_pct - expected_pct).abs() < 1.0, + "Order {}: expected ~{}%, got {}%", + i, + expected_pct, + actual_pct + ); + } +} + +#[test] +fn test_ascending_size_distribution_3_orders() { + // Test with different order count to verify formula works correctly + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + let params = ScaleOrderParams { + market_type: MarketType::Perp, + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, // 1.0 + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + order_count: 3, + size_distribution: SizeDistribution::Ascending, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let sizes = params.calculate_size_distribution(step_size).unwrap(); + assert_eq!(sizes.len(), 3); + // Total must equal the requested amount let total: u64 = sizes.iter().sum(); assert_eq!(total, BASE_PRECISION_U64); + + // For 3 orders: multiplier_sum = n*(n+3)/2 = 3*6/2 = 9 + // Multipliers (scaled by 2): 2, 3, 4 + // Expected proportions: 2/9 ≈ 22.2%, 3/9 ≈ 33.3%, 4/9 ≈ 44.4% + let expected_pcts = [22.22, 33.33, 44.44]; + for (i, (size, expected_pct)) in sizes.iter().zip(expected_pcts.iter()).enumerate() { + let actual_pct = (*size as f64) / (BASE_PRECISION_U64 as f64) * 100.0; + assert!( + (actual_pct - expected_pct).abs() < 1.0, + "Order {}: expected ~{}%, got {}%", + i, + expected_pct, + actual_pct + ); + } + + // Verify ascending order + assert!(sizes[0] < sizes[1]); + assert!(sizes[1] < sizes[2]); +} + +#[test] +fn test_flat_distribution_with_remainder() { + // Test flat distribution where total doesn't divide evenly + let step_size = BASE_PRECISION_U64 / 1000; // 0.001 + + let params = ScaleOrderParams { + market_type: MarketType::Perp, + direction: PositionDirection::Long, + market_index: 0, + total_base_asset_amount: BASE_PRECISION_U64, // 1.0 + start_price: 110 * PRICE_PRECISION_U64, + end_price: 100 * PRICE_PRECISION_U64, + order_count: 3, // 1.0 / 3 doesn't divide evenly + size_distribution: SizeDistribution::Flat, + reduce_only: false, + post_only: PostOnlyParam::None, + bit_flags: 0, + max_ts: None, + }; + + let sizes = params.calculate_size_distribution(step_size).unwrap(); + assert_eq!(sizes.len(), 3); + + // Total must still equal exactly the requested amount + let total: u64 = sizes.iter().sum(); + assert_eq!(total, BASE_PRECISION_U64); + + // Each order should be ~33.3%, with remainder going to last order + // step_size = 1_000_000 (0.001) + // base_size = 1_000_000_000 / 3 = 333_333_333 + // rounded_size = (333_333_333 / 1_000_000) * 1_000_000 = 333_000_000 + // First two orders: 333_000_000 each + // Last order: 1_000_000_000 - 2*333_000_000 = 334_000_000 + assert_eq!(sizes[0], 333_000_000); + assert_eq!(sizes[1], 333_000_000); + assert_eq!(sizes[2], 334_000_000); // Gets the remainder } #[test] @@ -266,7 +405,7 @@ fn test_expand_to_order_params_perp() { max_ts: Some(12345), }; - let order_params = expand_scale_order_params(¶ms, step_size).unwrap(); + let order_params = params.expand_to_order_params(step_size).unwrap(); assert_eq!(order_params.len(), 3); // Check first order has bit flags @@ -315,7 +454,7 @@ fn test_expand_to_order_params_spot() { max_ts: None, }; - let order_params = expand_scale_order_params(¶ms, step_size).unwrap(); + let order_params = params.expand_to_order_params(step_size).unwrap(); assert_eq!(order_params.len(), 3); // Check all orders are Spot market type @@ -355,7 +494,7 @@ fn test_spot_short_scale_orders() { max_ts: Some(99999), }; - let order_params = expand_scale_order_params(¶ms, step_size).unwrap(); + let order_params = params.expand_to_order_params(step_size).unwrap(); assert_eq!(order_params.len(), 4); // Check all orders are Spot market type and Short direction @@ -398,7 +537,7 @@ fn test_two_orders_price_distribution() { max_ts: None, }; - let prices = calculate_price_distribution(¶ms).unwrap(); + let prices = params.calculate_price_distribution().unwrap(); assert_eq!(prices.len(), 2); assert_eq!(prices[0], 110 * PRICE_PRECISION_U64); assert_eq!(prices[1], 100 * PRICE_PRECISION_U64); @@ -425,5 +564,5 @@ fn test_validate_min_total_size() { max_ts: None, }; - assert!(validate_scale_order_params(¶ms, step_size).is_err()); + assert!(params.validate(step_size).is_err()); } From b4d88a7513526f3fb2a6353992610fa6142fbf9a Mon Sep 17 00:00:00 2001 From: Nick Caradonna Date: Wed, 4 Feb 2026 16:29:54 -0500 Subject: [PATCH 51/51] address feedback --- programs/drift/src/instructions/user.rs | 76 ++++++++----------- .../drift/src/state/scale_order_params.rs | 27 +------ 2 files changed, 34 insertions(+), 69 deletions(-) diff --git a/programs/drift/src/instructions/user.rs b/programs/drift/src/instructions/user.rs index 90cdd0389b..d0ae756f61 100644 --- a/programs/drift/src/instructions/user.rs +++ b/programs/drift/src/instructions/user.rs @@ -2601,7 +2601,27 @@ pub fn handle_modify_order_by_user_order_id<'c: 'info, 'info>( Ok(()) } -/// Input for place_orders_impl - either direct OrderParams or ScaleOrderParams to expand +#[access_control( + exchange_not_paused(&ctx.accounts.state) +)] +pub fn handle_place_orders<'c: 'info, 'info>( + ctx: Context<'_, '_, 'c, 'info, PlaceOrder>, + params: Vec, +) -> Result<()> { + place_orders(&ctx, PlaceOrdersInput::Orders(params)) +} + +#[access_control( + exchange_not_paused(&ctx.accounts.state) +)] +pub fn handle_place_scale_orders<'c: 'info, 'info>( + ctx: Context<'_, '_, 'c, 'info, PlaceOrder>, + params: ScaleOrderParams, +) -> Result<()> { + place_orders(&ctx, PlaceOrdersInput::ScaleOrders(params)) +} + +/// Input for place_orders - either direct OrderParams or ScaleOrderParams to expand enum PlaceOrdersInput { Orders(Vec), ScaleOrders(ScaleOrderParams), @@ -2609,7 +2629,7 @@ enum PlaceOrdersInput { /// Internal implementation for placing multiple orders. /// Used by both handle_place_orders and handle_place_scale_orders. -fn place_orders_impl<'c: 'info, 'info>( +fn place_orders<'c: 'info, 'info>( ctx: &Context<'_, '_, 'c, 'info, PlaceOrder>, input: PlaceOrdersInput, ) -> Result<()> { @@ -2632,30 +2652,25 @@ fn place_orders_impl<'c: 'info, 'info>( let high_leverage_mode_config = get_high_leverage_mode_config(&mut remaining_accounts)?; // Convert input to order params, expanding scale orders if needed - let (order_params, validate_ioc) = match input { - PlaceOrdersInput::Orders(params) => (params, true), + let order_params = match input { + PlaceOrdersInput::Orders(params) => params, PlaceOrdersInput::ScaleOrders(scale_params) => { let order_step_size = match scale_params.market_type { MarketType::Perp => { let market = perp_market_map.get_ref(&scale_params.market_index)?; - let step_size = market.amm.order_step_size; - drop(market); - step_size + market.amm.order_step_size } MarketType::Spot => { let market = spot_market_map.get_ref(&scale_params.market_index)?; - let step_size = market.order_step_size; - drop(market); - step_size + market.order_step_size } }; - let expanded = scale_params.expand_to_order_params(order_step_size) + scale_params.expand_to_order_params(order_step_size) .map_err(|e| { msg!("Failed to expand scale order params: {:?}", e); ErrorCode::InvalidOrder - })?; - (expanded, false) + })? } }; @@ -2668,18 +2683,13 @@ fn place_orders_impl<'c: 'info, 'info>( let user_key = ctx.accounts.user.key(); let mut user = load_mut!(ctx.accounts.user)?; - // Validate that user won't exceed max open orders - ScaleOrderParams::validate_user_order_count(&user, order_params.len() as u8)?; - let num_orders = order_params.len(); for (i, params) in order_params.iter().enumerate() { - if validate_ioc { - validate!( - !params.is_immediate_or_cancel(), - ErrorCode::InvalidOrderIOC, - "immediate_or_cancel order must be in place_and_make or place_and_take" - )?; - } + validate!( + !params.is_immediate_or_cancel(), + ErrorCode::InvalidOrderIOC, + "immediate_or_cancel order must be in place_and_make or place_and_take" + )?; // only enforce margin on last order and only try to expire on first order let options = PlaceOrderOptions { @@ -2723,26 +2733,6 @@ fn place_orders_impl<'c: 'info, 'info>( Ok(()) } -#[access_control( - exchange_not_paused(&ctx.accounts.state) -)] -pub fn handle_place_orders<'c: 'info, 'info>( - ctx: Context<'_, '_, 'c, 'info, PlaceOrder>, - params: Vec, -) -> Result<()> { - place_orders_impl(&ctx, PlaceOrdersInput::Orders(params)) -} - -#[access_control( - exchange_not_paused(&ctx.accounts.state) -)] -pub fn handle_place_scale_orders<'c: 'info, 'info>( - ctx: Context<'_, '_, 'c, 'info, PlaceOrder>, - params: ScaleOrderParams, -) -> Result<()> { - place_orders_impl(&ctx, PlaceOrdersInput::ScaleOrders(params)) -} - #[access_control( fill_not_paused(&ctx.accounts.state) )] diff --git a/programs/drift/src/state/scale_order_params.rs b/programs/drift/src/state/scale_order_params.rs index bedce1c477..5b06df86c6 100644 --- a/programs/drift/src/state/scale_order_params.rs +++ b/programs/drift/src/state/scale_order_params.rs @@ -3,10 +3,9 @@ use crate::error::{DriftResult, ErrorCode}; use crate::math::constants::MAX_OPEN_ORDERS; use crate::math::safe_math::SafeMath; use crate::state::order_params::{OrderParams, PostOnlyParam}; -use crate::state::user::{MarketType, OrderStatus, OrderTriggerCondition, OrderType, User}; +use crate::state::user::{MarketType, OrderTriggerCondition, OrderType}; use crate::validate; use anchor_lang::prelude::*; -use solana_program::msg; #[cfg(test)] mod tests; @@ -55,30 +54,6 @@ pub struct ScaleOrderParams { } impl ScaleOrderParams { - /// Validates that placing scale orders won't exceed user's max open orders - pub fn validate_user_order_count(user: &User, order_count: u8) -> DriftResult<()> { - let current_open_orders = user - .orders - .iter() - .filter(|o| o.status == OrderStatus::Open) - .count() as u8; - - let total_after = current_open_orders.saturating_add(order_count); - - validate!( - total_after <= MAX_OPEN_ORDERS, - ErrorCode::MaxNumberOfOrders, - "placing {} scale orders would exceed max open orders ({} current + {} new = {} > {} max)", - order_count, - current_open_orders, - order_count, - total_after, - MAX_OPEN_ORDERS - )?; - - Ok(()) - } - /// Validates the scale order parameters pub fn validate(&self, order_step_size: u64) -> DriftResult<()> { validate!(