diff --git a/.eslintrc.json b/.eslintrc.json index c2c1697..222975c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -2,5 +2,12 @@ "extends": "./node_modules/gts/", "rules": { "semi": ["error", "never"] + }, + "settings": { + "node": { + // Modules are used by jest dev + "allowModules": ["@jest/globals"] + } } + } diff --git a/.vscode/settings.json b/.vscode/settings.json index bdcb3f6..3390f9e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,6 +7,7 @@ "borsh", "commitlint", "devnet", + "divn", "GontTwDeBduvbW85oHyC8A7GekuT8X1NkZHDDdUWWvsV", "HOMEPATH", "Keypair", @@ -14,6 +15,7 @@ "ledgerhq", "localnet", "MR2LqxoSbw831bNy68utpu5n4YqBH3AzDmddkgk9LQv", + "Msol", "MsolAmount", "MsolFees", "muln", @@ -25,6 +27,7 @@ "staker", "SYSVAR", "typescript-estree", + "unstake", "unstaked", "unstaking" ], diff --git a/README.md b/README.md index c2a47ad..086f914 100644 --- a/README.md +++ b/README.md @@ -50,3 +50,10 @@ pnpm cli --help # to test Solana CLI tools and Anchor in version 0.28.0 is required pnpm test ``` + +To get the latest version from npm and run it + +```bash +npm i @marinade.finance/marinade-ts-cli +npx @marinade.finance/marinade-ts-cli +``` \ No newline at end of file diff --git a/jest.config.js b/jest.config.js index ab198e6..7586aff 100644 --- a/jest.config.js +++ b/jest.config.js @@ -5,7 +5,12 @@ module.exports = { preset: 'ts-jest', + testEnvironment: 'node', testTimeout: 90000, - globalSetup: '/test/setup/globalSetup.ts', - setupFilesAfterEnv: ['/test/setup/equalityTesters.ts'], + detectOpenHandles: true, + modulePathIgnorePatterns: ['/dist/'], + testPathIgnorePatterns: ['__tests__/.*.skip.ts', '__tests__/setup/*'], + globalSetup: + '/packages/marinade-ts-cli/__tests__/setup/globalSetup.ts', + setupFilesAfterEnv: ['/packages/jest-utils/src/equalityTesters.ts'], } diff --git a/package.json b/package.json index 79e720a..0506ed8 100644 --- a/package.json +++ b/package.json @@ -1,66 +1,26 @@ { - "name": "@marinade.finance/marinade-ts-cli", - "version": "5.0.0", - "description": "Marinade typescript-based CLI", + "description": "Marinade typescript-based SDK for CLI", "license": "ISC", "author": "Marinade.Finance", - "bin": { - "marinade": "./dist/index.js" - }, - "main": "src/index", - "repository": { - "type": "git", - "url": "git+https://github.com/marinade-finance/marinade-ts-cli.git" - }, - "publishConfig": { - "access": "public" - }, - "files": [ - "dist" - ], - "type": "commonjs", "scripts": { "build": "npx tsc -b -verbose", - "marinade": "node ./dist/index.js", - "cli": "ts-node ./src/index.ts", + "marinade": "node ./dist/packages/marinade-ts-cli/src//index.js", + "cli": "ts-node ./packages/marinade-ts-cli/src/index.ts", "lint:fix": "gts fix", "lint": "gts lint", "test": "anchor test", "_test": "jest $FILE", - "test:no-anchor": "jest --globalSetup='' $FILE" - }, - "keywords": [ - "solana", - "marinade.finance", - "blockchain", - "staking" - ], - "dependencies": { - "@coral-xyz/anchor": "0.28", - "@ledgerhq/errors": "^6.12.6", - "@ledgerhq/hw-app-solana": "^7.0.9", - "@ledgerhq/hw-transport-node-hid-noevents": "^6.27.15", - "@marinade.finance/marinade-ts-sdk": "^5.0.1", - "@solana/spl-governance": "^0.3.27", - "@solana/spl-token": "^0.3.8", - "bn.js": "^5.2.1", - "borsh": "^0.7.0", - "bs58": "^4.0.1", - "commander": "^11.0.0", - "expand-tilde": "^2.0.2", - "pino": "^8.14.1", - "pino-pretty": "^10.0.0" + "test:no-anchor": "jest --globalSetup='' $FILE", + "publish-all": "pnpm build && pnpm publish dist/packages/cli-common && pnpm publish dist/packages/ledger-utils && pnpm publish dist/packages/marinade-ts-cli" }, "devDependencies": { "@jest/globals": "^29.5.0", - "@marinade.finance/solana-test-utils": "^0.0.89", - "@types/bn.js": "^5.1.1", - "@types/bs58": "^4.0.1", - "@types/expand-tilde": "^2.0.0", "@types/jest": "^29.5.2", "@types/node": "^16.0.0", - "@typescript-eslint/typescript-estree": "^5.59.11", - "gts": "^3.1.1", + "@typescript-eslint/typescript-estree": "^5.59.1", + "@typescript-eslint/eslint-plugin": "^5.59.1", + "@typescript-eslint/parser": "^5.59.1", + "gts": "^5.0.0", "husky": "^8.0.3", "jest": "^29.0.5", "lint-staged": "^13.2.2", @@ -69,7 +29,7 @@ "typescript": "5.0.4" }, "resolutions": { - "@typescript-eslint/typescript-estree": "^5.59.11" + "@typescript-eslint/typescript-estree": "^5.59.1" }, "engines": { "node": ">=16.0.0" diff --git a/packages/cli-common/package.json b/packages/cli-common/package.json new file mode 100644 index 0000000..a95fcf7 --- /dev/null +++ b/packages/cli-common/package.json @@ -0,0 +1,40 @@ +{ + "name": "@marinade.finance/cli-common", + "version": "1.0.0", + "description": "CLI tooling", + "repository": { + "type": "git", + "url": "git@github.com:marinade-finance/marinade-ts-cli.git" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "test": "echo \"Error: no test specified, go to project root\" && exit 1" + }, + "keywords": [ + "solana", + "marinade.finance", + "blockchain", + "cli" + ], + "author": "Marinade Finance", + "license": "ISC", + "main": "src/index", + "files": [ + "src" + ], + "devDependencies": { + "pino": "^8.15.0", + "@solana/web3.js": "^1.78.3", + "borsh": "^0.7.0", + "@types/expand-tilde": "^2.0.0", + "expand-tilde": "^2.0.2" + }, + "peerDependencies": { + "pino": "^8.15.0", + "@solana/web3.js": "^1.78.3", + "borsh": "^0.7.0", + "expand-tilde": "^2.0.2" + } + } \ No newline at end of file diff --git a/packages/cli-common/src/context.ts b/packages/cli-common/src/context.ts new file mode 100644 index 0000000..3c6851c --- /dev/null +++ b/packages/cli-common/src/context.ts @@ -0,0 +1,52 @@ +import { Logger } from 'pino' +import { Wallet } from './wallet' + +let context: Context | undefined + +export function getContext(): Context { + if (!context) { + throw new Error('Context not initialized') + } + return context +} + +export function setContext(newContext: Context) { + if (context) { + throw new Error( + 'Context already initialized, context can be initialized only once' + ) + } + context = newContext +} + +export abstract class Context { + readonly wallet: Wallet + readonly logger: Logger + readonly skipPreflight: boolean + readonly simulate: boolean + readonly printOnly: boolean + readonly commandName: string + + constructor({ + wallet, + logger, + skipPreflight, + simulate, + printOnly, + commandName, + }: { + wallet: Wallet + logger: Logger + skipPreflight: boolean + simulate: boolean + printOnly: boolean + commandName: string + }) { + this.commandName = commandName + this.wallet = wallet + this.logger = logger + this.skipPreflight = skipPreflight + this.simulate = simulate + this.printOnly = printOnly + } +} diff --git a/src/utils/error.ts b/packages/cli-common/src/error.ts similarity index 79% rename from src/utils/error.ts rename to packages/cli-common/src/error.ts index 51ef943..8299a25 100644 --- a/src/utils/error.ts +++ b/packages/cli-common/src/error.ts @@ -1,7 +1,12 @@ import { format } from 'util' -import { getContext } from '../context' +import { getContext } from './context' import { Transaction, VersionedTransaction } from '@solana/web3.js' +export interface WithCommandName { + readonly name: string + readonly age: number +} + export class CliCommandError extends Error { readonly cause?: Error readonly logs?: string[] @@ -22,12 +27,12 @@ export class CliCommandError extends Error { logs?: string[] transaction?: Transaction | VersionedTransaction }) { - const { command } = getContext() - let errorMessage + const { commandName } = getContext() + let errorMessage: string if (valueName) { - errorMessage = format('%s[%s=%s]: %s', command, valueName, value, msg) + errorMessage = format('%s[%s=%s]: %s', commandName, valueName, value, msg) } else { - errorMessage = format('%s:%s', command, msg) + errorMessage = format('%s:%s', commandName, msg) } super(errorMessage) this.cause = cause diff --git a/packages/cli-common/src/index.ts b/packages/cli-common/src/index.ts new file mode 100644 index 0000000..55b78aa --- /dev/null +++ b/packages/cli-common/src/index.ts @@ -0,0 +1,7 @@ +export * from './parsers' +export * from './error' +export * from './time' +export * from './context' +export * from './tx' +export * from './txToBase64' +export * from './wallet' diff --git a/packages/cli-common/src/parsers.ts b/packages/cli-common/src/parsers.ts new file mode 100644 index 0000000..670515f --- /dev/null +++ b/packages/cli-common/src/parsers.ts @@ -0,0 +1,80 @@ +import { + Keypair, + PublicKey, + Commitment, + clusterApiUrl, + Cluster, +} from '@solana/web3.js' +import expandTilde from 'expand-tilde' // eslint-disable-line node/no-extraneous-import +import { readFile } from 'fs/promises' + +export async function parsePubkey(pubkeyOrPath: string): Promise { + try { + return new PublicKey(pubkeyOrPath) + } catch (err) { + const keypair = await parseKeypair(pubkeyOrPath) + return keypair.publicKey + } +} + +export async function parsePubkeyOrKeypair( + pubkeyOrPath: string +): Promise { + try { + return new PublicKey(pubkeyOrPath) + } catch (err) { + return await parseKeypair(pubkeyOrPath) + } +} + +export async function parseKeypair(path: string): Promise { + return Keypair.fromSecretKey( + new Uint8Array(JSON.parse(await readFile(expandTilde(path), 'utf-8'))) + ) +} + +export function getClusterUrl(url: string): string { + let clusterUrl = + url === 'd' + ? 'devnet' + : url === 't' + ? 'testnet' + : url === 'm' || url === 'mainnet' + ? 'mainnet-beta' + : url === 'l' || url === 'localnet' || url === 'localhost' + ? 'http://localhost:8899' + : url + + try { + clusterUrl = clusterApiUrl(clusterUrl as Cluster) + } catch (e) { + // ignore + } + return clusterUrl +} + +export function parseCommitment(commitment: string): Commitment { + if (commitment === 'processed') { + return 'processed' + } else if (commitment === 'confirmed') { + return 'confirmed' + } else if (commitment === 'finalized') { + return 'finalized' + } else if (commitment === 'recent') { + return 'recent' + } else if (commitment === 'single') { + return 'single' + } else if (commitment === 'singleGossip') { + return 'singleGossip' + } else if (commitment === 'root') { + return 'root' + } else if (commitment === 'max') { + return 'max' + } else { + throw new Error( + 'Invalid value of --commitment: ' + + commitment + + '. Permitted values: processed, confirmed, finalized, recent, single, singleGossip, root, max' + ) + } +} diff --git a/src/utils/time.ts b/packages/cli-common/src/time.ts similarity index 95% rename from src/utils/time.ts rename to packages/cli-common/src/time.ts index 839ab16..0cd5008 100644 --- a/src/utils/time.ts +++ b/packages/cli-common/src/time.ts @@ -5,7 +5,7 @@ export const formatDuration = (seconds: number) => { { unit: 'h', mod: 24, pad: 2 }, { unit: 'd' }, ] - const parts = [] + const parts: string[] = [] let rem = seconds for (const { unit, mod, pad } of units) { const amount = mod ? rem % mod : rem diff --git a/src/utils/transactions.ts b/packages/cli-common/src/tx.ts similarity index 87% rename from src/utils/transactions.ts rename to packages/cli-common/src/tx.ts index 7c9ffe7..7c64651 100644 --- a/src/utils/transactions.ts +++ b/packages/cli-common/src/tx.ts @@ -1,5 +1,3 @@ -import { serializeInstructionToBase64 } from '@solana/spl-governance' -import { Wallet } from '@coral-xyz/anchor/dist/cjs/provider' import { Connection, Transaction, @@ -8,9 +6,10 @@ import { SendTransactionError, Keypair, } from '@solana/web3.js' -import { instanceOfWallet } from './ledger' import { Logger } from 'pino' import { CliCommandError } from './error' +import { Wallet, instanceOfWallet } from './wallet' +import { serializeInstructionToBase64 } from './txToBase64' export async function executeTx({ connection, @@ -31,7 +30,10 @@ export async function executeTx({ }): Promise< VersionedTransactionResponse | SimulatedTransactionResponse | undefined > { - let result = undefined + let result: + | VersionedTransactionResponse + | SimulatedTransactionResponse + | undefined = undefined if (printOnly) { console.log('Instructions:') @@ -82,10 +84,13 @@ export async function executeTx({ `Failure confirming transaction ${txSig}, confirm result: ${res}` ) } - const txRes = await connection.getTransaction(txSig, { - commitment: 'confirmed', - maxSupportedTransactionVersion: undefined, - }) + let txSearchConnection = connection + if (connection.commitment === 'processed') { + txSearchConnection = new Connection(connection.rpcEndpoint, { + commitment: 'confirmed', + }) + } + const txRes = await txSearchConnection.getTransaction(txSig) if (txRes === null) { throw new Error(`Transaction ${txSig} not found`) } diff --git a/packages/cli-common/src/txToBase64.ts b/packages/cli-common/src/txToBase64.ts new file mode 100644 index 0000000..c9fc2db --- /dev/null +++ b/packages/cli-common/src/txToBase64.ts @@ -0,0 +1,92 @@ +import { TransactionInstruction, PublicKey } from '@solana/web3.js' +import { serialize } from 'borsh' + +// the serialization processing is adapted from SPL Governance SDK Oyster 0.3.28 +// see https://github.com/solana-labs/oyster/blob/6a23631ad30fb7761107b8316479c14519217560/packages/governance-sdk/src/governance/serialisation.ts#L247 +// the Oyster SDK brings in a lot of dependencies, so we just copy the relevant parts here + +export class AccountMetaData { + pubkey: PublicKey + isSigner: boolean + isWritable: boolean + + constructor(args: { + pubkey: PublicKey + isSigner: boolean + isWritable: boolean + }) { + this.pubkey = args.pubkey + this.isSigner = !!args.isSigner + this.isWritable = !!args.isWritable + } +} + +export class InstructionData { + programId: PublicKey + accounts: AccountMetaData[] + data: Uint8Array + + constructor(args: { + programId: PublicKey + accounts: AccountMetaData[] + data: Uint8Array + }) { + this.programId = args.programId + this.accounts = args.accounts + this.data = args.data + } +} + +// Serializes sdk instruction into InstructionData and encodes it as base64 which then can be entered into the UI form +export const serializeInstructionToBase64 = ( + instruction: TransactionInstruction +) => { + const data = createInstructionData(instruction) + + return Buffer.from(serialize(createSchema(), data)).toString('base64') +} + +// Converts TransactionInstruction to InstructionData format +export const createInstructionData = (instruction: TransactionInstruction) => { + return new InstructionData({ + programId: instruction.programId, + data: instruction.data, + accounts: instruction.keys.map( + k => + new AccountMetaData({ + pubkey: k.pubkey, + isSigner: k.isSigner, + isWritable: k.isWritable, + }) + ), + }) +} + +/// Creates serialization schema for structs used for instructions and accounts +function createSchema() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return new Map([ + [ + InstructionData, + { + kind: 'struct', + fields: [ + ['programId', 'pubkey'], + ['accounts', [AccountMetaData]], + ['data', ['u8']], + ], + }, + ], + [ + AccountMetaData, + { + kind: 'struct', + fields: [ + ['pubkey', 'pubkey'], + ['isSigner', 'u8'], + ['isWritable', 'u8'], + ], + }, + ], + ]) +} diff --git a/packages/cli-common/src/wallet.ts b/packages/cli-common/src/wallet.ts new file mode 100644 index 0000000..37f0ecc --- /dev/null +++ b/packages/cli-common/src/wallet.ts @@ -0,0 +1,25 @@ +import { Transaction, VersionedTransaction, PublicKey } from '@solana/web3.js' + +/** + * Wallet interface for objects that can be used to sign provider transactions. + * The interface is compatible with @coral-xyz/anchor/dist/cjs/provider in version 0.28.0 + * See https://github.com/coral-xyz/anchor/blob/v0.28.0/ts/packages/anchor/src/provider.ts#L344 + */ +export interface Wallet { + signTransaction( + tx: T + ): Promise + signAllTransactions( + txs: T[] + ): Promise + publicKey: PublicKey +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function instanceOfWallet(object: any): object is Wallet { + return ( + 'signTransaction' in object && + 'signAllTransactions' in object && + 'publicKey' in object + ) +} diff --git a/packages/jest-utils/package.json b/packages/jest-utils/package.json new file mode 100644 index 0000000..b646450 --- /dev/null +++ b/packages/jest-utils/package.json @@ -0,0 +1,37 @@ +{ + "name": "@marinade.finance/jest-utils", + "version": "1.0.0", + "description": "Utility functions for setting up Jest", + "repository": { + "type": "git", + "url": "git@github.com:marinade-finance/marinade-ts-cli.git" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "test": "echo \"Error: no test specified, go to project root\" && exit 1" + }, + "keywords": [ + "jest", + "testing", + "solana" + ], + "author": "Marinade Finance", + "license": "ISC", + "main": "src/index", + "files": [ + "src" + ], + "devDependencies": { + "bn.js": "^5.2.1", + "@types/bn.js": "^5.1.1", + "@solana/web3.js": "^1.78.3", + "@jest/globals": "^29.5.0" + }, + "peerDependencies": { + "bn.js": "^5.2.1", + "@solana/web3.js": "^1.78.3", + "@jest/globals": "^29.5.0" + } + } \ No newline at end of file diff --git a/test/setup/equalityTesters.ts b/packages/jest-utils/src/equalityTesters.ts similarity index 68% rename from test/setup/equalityTesters.ts rename to packages/jest-utils/src/equalityTesters.ts index a8cc5e9..d4547e6 100644 --- a/test/setup/equalityTesters.ts +++ b/packages/jest-utils/src/equalityTesters.ts @@ -2,6 +2,14 @@ import { expect } from '@jest/globals' import { PublicKey } from '@solana/web3.js' import BN from 'bn.js' +// Use to global configuration of Jest +/* +* / * * @type {import('ts-jest').JestConfigWithTsJest} * / +* module.exports = { +* setupFilesAfterEnv: ['/setup/equalityTesters.ts'], +* } +*/ + /** * Equality testers for jest to compare BN and PublicKey. */ diff --git a/packages/jest-utils/src/index.ts b/packages/jest-utils/src/index.ts new file mode 100644 index 0000000..cda5641 --- /dev/null +++ b/packages/jest-utils/src/index.ts @@ -0,0 +1 @@ +export * from './equalityTesters' diff --git a/test/ledger.spec.ts b/packages/ledger-utils/__tests__/ledger.spec.ts similarity index 96% rename from test/ledger.spec.ts rename to packages/ledger-utils/__tests__/ledger.spec.ts index 00da98d..d1e244a 100644 --- a/test/ledger.spec.ts +++ b/packages/ledger-utils/__tests__/ledger.spec.ts @@ -1,4 +1,4 @@ -import { parseLedgerUrl } from '../src/utils/ledger' +import { parseLedgerUrl } from '../src/ledger' import { PublicKey } from '@solana/web3.js' describe('Ledger', () => { diff --git a/packages/ledger-utils/package.json b/packages/ledger-utils/package.json new file mode 100644 index 0000000..cbb63cd --- /dev/null +++ b/packages/ledger-utils/package.json @@ -0,0 +1,44 @@ +{ + "name": "@marinade.finance/ledger-utils", + "version": "1.0.0", + "description": "Utility functions for interacting with the Ledger from CLI", + "repository": { + "type": "git", + "url": "git@github.com:marinade-finance/marinade-ts-cli.git" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "test": "echo \"Error: no test specified, go to project root\" && exit 1" + }, + "keywords": [ + "solana", + "marinade.finance", + "blockchain", + "ledger", + "cli" + ], + "author": "Marinade Finance", + "license": "ISC", + "main": "src/index", + "files": [ + "src" + ], + "devDependencies": { + "pino": "^8.15.0", + "@ledgerhq/errors": "^6.13.1", + "@ledgerhq/hw-app-solana": "^7.0.12", + "@ledgerhq/hw-transport-node-hid-noevents": "^6.27.18", + "@solana/web3.js": "^1.78.3", + "@marinade.finance/cli-common": "workspace: *" + }, + "peerDependencies": { + "pino": "^8.15.0", + "@ledgerhq/errors": "^6.13.1", + "@ledgerhq/hw-app-solana": "^7.0.12", + "@ledgerhq/hw-transport-node-hid-noevents": "^6.27.18", + "@solana/web3.js": "^1.78.3", + "@marinade.finance/cli-common": "workspace: *" + } + } \ No newline at end of file diff --git a/src/utils/cliParser.ts b/packages/ledger-utils/src/cli.ts similarity index 52% rename from src/utils/cliParser.ts rename to packages/ledger-utils/src/cli.ts index d407fcb..e247a15 100644 --- a/src/utils/cliParser.ts +++ b/packages/ledger-utils/src/cli.ts @@ -1,43 +1,20 @@ -import { Wallet } from '@coral-xyz/anchor/dist/cjs/provider' -import NodeWallet from '@coral-xyz/anchor/dist/cjs/nodewallet' -import { Keypair, PublicKey } from '@solana/web3.js' -import expandTilde from 'expand-tilde' -import { readFile } from 'fs/promises' -import { CLI_LEDGER_URL_PREFIX, LedgerWallet } from './ledger' import { LockedDeviceError, TransportError, TransportStatusError, } from '@ledgerhq/errors' +import { CLI_LEDGER_URL_PREFIX, LedgerWallet, Wallet } from './ledger' import { Logger } from 'pino' -export async function parsePubkey(pubkeyOrPath: string): Promise { - try { - return new PublicKey(pubkeyOrPath) - } catch (err) { - const keypair = await parseKeypair(pubkeyOrPath) - return keypair.publicKey - } -} - -export async function parsePubkeyOrSigner( - pubkeyOrPath: string, - logger: Logger -): Promise { - try { - return new PublicKey(pubkeyOrPath) - } catch (err) { - return await parseSigner(pubkeyOrPath, logger) - } -} - /** - * Parsing provided argument as either a path to keypair or a ledger url or derived path. + * Parsing provided argument a ledger url. + * It consider it ledger url only when the argument starts with 'usb://ledger', + * otherwise null is returned. */ -export async function parseSigner( +export async function parseLedgerWallet( pathOrUrl: string, logger: Logger -): Promise { +): Promise { pathOrUrl = pathOrUrl.trim() // trying ledger (https://docs.solana.com/wallet-guide/hardware-wallets/ledger) @@ -67,7 +44,7 @@ export async function parseSigner( e.message.includes('Invalid channel') ) { logger.error( - 'Ledger device seems not being aknowledged to open the ledger manager. ' + + 'Ledger device seems not being acknowledged to open the ledger manager. ' + 'Please, open ledger manager first on your device.' ) } else if (e instanceof LockedDeviceError) { @@ -79,15 +56,5 @@ export async function parseSigner( } } - // parsing path - const keypair = await parseKeypair(pathOrUrl) - const wallet = new NodeWallet(keypair) - return wallet -} - -// adapted from https://github.com/marinade-finance/solana-js-utils/tree/main/packages/solana-cli-utils -async function parseKeypair(path: string): Promise { - return Keypair.fromSecretKey( - new Uint8Array(JSON.parse(await readFile(expandTilde(path), 'utf-8'))) - ) + return null } diff --git a/packages/ledger-utils/src/index.ts b/packages/ledger-utils/src/index.ts new file mode 100644 index 0000000..e3a0868 --- /dev/null +++ b/packages/ledger-utils/src/index.ts @@ -0,0 +1,2 @@ +export * from './ledger' +export * from './cli' diff --git a/src/utils/ledger.ts b/packages/ledger-utils/src/ledger.ts similarity index 92% rename from src/utils/ledger.ts rename to packages/ledger-utils/src/ledger.ts index 884a5ce..6eb2112 100644 --- a/src/utils/ledger.ts +++ b/packages/ledger-utils/src/ledger.ts @@ -1,4 +1,3 @@ -import { Wallet } from '@coral-xyz/anchor/dist/cjs/provider' import Solana from '@ledgerhq/hw-app-solana' import TransportNodeHid, { getDevices, @@ -16,6 +15,21 @@ export const SOLANA_LEDGER_BIP44_BASE_PATH = "44'/501'/" export const SOLANA_LEDGER_BIP44_BASE_REGEXP = /^44[']{0,1}\/501[']{0,1}\// export const DEFAULT_DERIVATION_PATH = SOLANA_LEDGER_BIP44_BASE_PATH + "0'/0'" +/** + * Wallet interface for objects that can be used to sign provider transactions. + * The interface is compatible with @coral-xyz/anchor/dist/cjs/provider in version 0.28.0 + * See https://github.com/coral-xyz/anchor/blob/v0.28.0/ts/packages/anchor/src/provider.ts#L344 + */ +export interface Wallet { + signTransaction( + tx: T + ): Promise + signAllTransactions( + txs: T[] + ): Promise + publicKey: PublicKey +} + export class LedgerWallet implements Wallet { /** * "Constructor" of SolanaLedger class. @@ -52,7 +66,7 @@ export class LedgerWallet implements Wallet { } public async signAllTransactions< - T extends Transaction | VersionedTransaction + T extends Transaction | VersionedTransaction, >(txs: T[]): Promise { const signedTxs = await Promise.all(txs.map(tx => this.signTransaction(tx))) return signedTxs @@ -194,12 +208,3 @@ export function parseLedgerUrl(ledgerUrl: string): { return { pubkey, derivedPath } } - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function instanceOfWallet(object: any): object is Wallet { - return ( - 'signTransaction' in object && - 'signAllTransactions' in object && - 'publicKey' in object - ) -} diff --git a/test/addLiquidity.spec.ts b/packages/marinade-ts-cli/__tests__/addLiquidity.spec.ts similarity index 100% rename from test/addLiquidity.spec.ts rename to packages/marinade-ts-cli/__tests__/addLiquidity.spec.ts diff --git a/test/deposit.spec.ts b/packages/marinade-ts-cli/__tests__/deposit.spec.ts similarity index 100% rename from test/deposit.spec.ts rename to packages/marinade-ts-cli/__tests__/deposit.spec.ts diff --git a/test/depositStakeAccount.spec.ts b/packages/marinade-ts-cli/__tests__/depositStakeAccount.spec.ts similarity index 100% rename from test/depositStakeAccount.spec.ts rename to packages/marinade-ts-cli/__tests__/depositStakeAccount.spec.ts diff --git a/test/liquidUnstake.spec.ts b/packages/marinade-ts-cli/__tests__/liquidUnstake.spec.ts similarity index 98% rename from test/liquidUnstake.spec.ts rename to packages/marinade-ts-cli/__tests__/liquidUnstake.spec.ts index c36b8f9..8072093 100644 --- a/test/liquidUnstake.spec.ts +++ b/packages/marinade-ts-cli/__tests__/liquidUnstake.spec.ts @@ -1,4 +1,4 @@ -import { BN } from 'bn.js' +import BN from 'bn.js' import { createTempFileKeypair, shellMatchers, diff --git a/test/orderUnstakeAndClaim.spec.ts b/packages/marinade-ts-cli/__tests__/orderUnstakeAndClaim.spec.ts similarity index 100% rename from test/orderUnstakeAndClaim.spec.ts rename to packages/marinade-ts-cli/__tests__/orderUnstakeAndClaim.spec.ts diff --git a/test/removeLiquidity.spec.ts b/packages/marinade-ts-cli/__tests__/removeLiquidity.spec.ts similarity index 100% rename from test/removeLiquidity.spec.ts rename to packages/marinade-ts-cli/__tests__/removeLiquidity.spec.ts diff --git a/test/setup/globalSetup.ts b/packages/marinade-ts-cli/__tests__/setup/globalSetup.ts similarity index 99% rename from test/setup/globalSetup.ts rename to packages/marinade-ts-cli/__tests__/setup/globalSetup.ts index 8db0a0a..38e3720 100644 --- a/test/setup/globalSetup.ts +++ b/packages/marinade-ts-cli/__tests__/setup/globalSetup.ts @@ -19,6 +19,7 @@ import { writeFileSync } from 'fs' import path from 'path' import { tmpdir } from 'os' +// eslint-disable-next-line node/no-extraneous-require require('ts-node/register') // 6LHBDKtwo69UKxWgY15vE3QykP4uf5DzZUgBiMzhEWpf diff --git a/packages/marinade-ts-cli/package.json b/packages/marinade-ts-cli/package.json new file mode 100644 index 0000000..73e8006 --- /dev/null +++ b/packages/marinade-ts-cli/package.json @@ -0,0 +1,53 @@ +{ + "name": "@marinade.finance/marinade-ts-cli", + "version": "5.1.0", + "description": "Marinade typescript-based CLI", + "license": "ISC", + "author": "Marinade.Finance", + "bin": { + "marinade": "./src/index.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/marinade-finance/marinade-ts-cli.git" + }, + "publishConfig": { + "access": "public" + }, + "main": "src/index", + "files": [ + "src" + ], + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "solana", + "marinade.finance", + "blockchain", + "staking" + ], + "dependencies": { + "@coral-xyz/anchor": "0.28", + "@ledgerhq/errors": "^6.13.1", + "@ledgerhq/hw-app-solana": "^7.0.12", + "@ledgerhq/hw-transport-node-hid-noevents": "^6.27.18", + "@marinade.finance/marinade-ts-sdk": "^5.0.3", + "@solana/web3.js": "^1.78.3", + "@solana/spl-governance": "^0.3.28", + "@solana/spl-token": "^0.3.8", + "bn.js": "^5.2.1", + "borsh": "^0.7.0", + "bs58": "^4.0.1", + "commander": "^11.0.0", + "expand-tilde": "^2.0.2", + "pino": "^8.15.0", + "pino-pretty": "^10.2.0", + "@marinade.finance/cli-common": "workspace:*", + "@marinade.finance/ledger-utils": "workspace:*" + }, + "devDependencies": { + "@marinade.finance/solana-test-utils":"^0.0.89", + "@types/bn.js": "^5.1.1" + } +} diff --git a/src/commands/balance.ts b/packages/marinade-ts-cli/src/commands/balance.ts similarity index 89% rename from src/commands/balance.ts rename to packages/marinade-ts-cli/src/commands/balance.ts index 45d4440..0250576 100644 --- a/src/commands/balance.ts +++ b/packages/marinade-ts-cli/src/commands/balance.ts @@ -5,9 +5,9 @@ import { } from '@marinade.finance/marinade-ts-sdk/dist/src/util' import { Command } from 'commander' import { BN } from 'bn.js' -import { parsePubkey } from '../utils/cliParser' +import { parsePubkey } from '@marinade.finance/cli-common' import { PublicKey } from '@solana/web3.js' -import { getContext } from '../context' +import { getMarinadeCliContext } from '../context' export function installShowBalance(program: Command) { program @@ -27,12 +27,12 @@ export function installShowBalance(program: Command) { } export async function showBalance({ - accountPubkey = getContext().walletSigner.publicKey, + accountPubkey = getMarinadeCliContext().wallet.publicKey, }: { accountPubkey?: PublicKey marinadeStateAddress?: PublicKey }) { - const { connection, logger } = getContext() + const { connection, logger } = getMarinadeCliContext() logger.info( 'Main account: %s (%s)', diff --git a/src/commands/index.ts b/packages/marinade-ts-cli/src/commands/index.ts similarity index 100% rename from src/commands/index.ts rename to packages/marinade-ts-cli/src/commands/index.ts diff --git a/src/commands/manage/addLiquidity.ts b/packages/marinade-ts-cli/src/commands/manage/addLiquidity.ts similarity index 77% rename from src/commands/manage/addLiquidity.ts rename to packages/marinade-ts-cli/src/commands/manage/addLiquidity.ts index f6df365..2b09575 100644 --- a/src/commands/manage/addLiquidity.ts +++ b/packages/marinade-ts-cli/src/commands/manage/addLiquidity.ts @@ -4,8 +4,8 @@ import { MarinadeUtils, } from '@marinade.finance/marinade-ts-sdk' import { Command } from 'commander' -import { getContext } from '../../context' -import { executeTx } from '../../utils/transactions' +import { executeTx } from '@marinade.finance/cli-common' +import { getMarinadeCliContext } from '../../context' export function installAddLiquidity(program: Command) { program @@ -24,7 +24,8 @@ export async function addLiquidity({ }: { amountSol: number }): Promise { - const { logger, connection, walletSigner, simulate, printOnly } = getContext() + const { logger, connection, wallet, simulate, printOnly } = + getMarinadeCliContext() const amountLamports = MarinadeUtils.solToLamports(amountSol) logger.info( @@ -35,7 +36,7 @@ export async function addLiquidity({ const marinadeConfig = new MarinadeConfig({ connection: connection, - publicKey: walletSigner.publicKey, + publicKey: wallet.publicKey, }) const marinade = new Marinade(marinadeConfig) @@ -49,8 +50,8 @@ export async function addLiquidity({ await executeTx({ connection, - errMessage: `Failed to add ${amountSol} SOLs from ${walletSigner.publicKey.toBase58()}`, - signers: [walletSigner], + errMessage: `Failed to add ${amountSol} SOLs from ${wallet.publicKey.toBase58()}`, + signers: [wallet], transaction, logger, simulate, @@ -59,6 +60,6 @@ export async function addLiquidity({ logger.info( 'Successfully added liquidity of %d SOLs from %s', amountSol, - walletSigner.publicKey.toBase58() + wallet.publicKey.toBase58() ) } diff --git a/src/commands/manage/claim.ts b/packages/marinade-ts-cli/src/commands/manage/claim.ts similarity index 76% rename from src/commands/manage/claim.ts rename to packages/marinade-ts-cli/src/commands/manage/claim.ts index 10fe99e..7639ad3 100644 --- a/src/commands/manage/claim.ts +++ b/packages/marinade-ts-cli/src/commands/manage/claim.ts @@ -1,9 +1,9 @@ import { Marinade, MarinadeConfig } from '@marinade.finance/marinade-ts-sdk' -import { parsePubkey } from '../../utils/cliParser' +import { parsePubkey } from '@marinade.finance/cli-common' import { Command } from 'commander' import { PublicKey } from '@solana/web3.js' -import { getContext } from '../../context' -import { executeTx } from '../../utils/transactions' +import { executeTx } from '@marinade.finance/cli-common' +import { getMarinadeCliContext } from '../../context' export function installClaim(program: Command) { program @@ -18,13 +18,14 @@ export function installClaim(program: Command) { } export async function claim({ ticket }: { ticket: PublicKey }): Promise { - const { connection, logger, walletSigner, simulate, printOnly } = getContext() + const { connection, logger, wallet, simulate, printOnly } = + getMarinadeCliContext() logger.info('Claiming unstake ticket %s', ticket.toString()) const marinadeConfig = new MarinadeConfig({ connection: connection, - publicKey: walletSigner.publicKey, + publicKey: wallet.publicKey, }) const marinade = new Marinade(marinadeConfig) @@ -33,7 +34,7 @@ export async function claim({ ticket }: { ticket: PublicKey }): Promise { await executeTx({ connection, errMessage: `Failed to claim ticket ${ticket.toBase58()}`, - signers: [walletSigner], + signers: [wallet], transaction, logger, simulate, diff --git a/src/commands/manage/deposit.ts b/packages/marinade-ts-cli/src/commands/manage/deposit.ts similarity index 86% rename from src/commands/manage/deposit.ts rename to packages/marinade-ts-cli/src/commands/manage/deposit.ts index 19df8ad..9108556 100644 --- a/src/commands/manage/deposit.ts +++ b/packages/marinade-ts-cli/src/commands/manage/deposit.ts @@ -3,11 +3,11 @@ import { MarinadeConfig, MarinadeUtils, } from '@marinade.finance/marinade-ts-sdk' -import { parsePubkey } from '../../utils/cliParser' +import { parsePubkey } from '@marinade.finance/cli-common' import { Command } from 'commander' import { PublicKey } from '@solana/web3.js' -import { getContext } from '../../context' -import { executeTx } from '../../utils/transactions' +import { executeTx } from '@marinade.finance/cli-common' +import { getMarinadeCliContext } from '../../context' export function installDeposit(program: Command) { program @@ -55,7 +55,7 @@ export function installDeposit(program: Command) { export async function deposit({ amountSol, referralCode, - owner = getContext().walletSigner.publicKey, + owner = getMarinadeCliContext().wallet.publicKey, validatorVoteAddress, }: { amountSol: number @@ -63,7 +63,8 @@ export async function deposit({ owner?: PublicKey validatorVoteAddress?: PublicKey }): Promise { - const { connection, logger, walletSigner, simulate, printOnly } = getContext() + const { connection, logger, wallet, simulate, printOnly } = + getMarinadeCliContext() const amountLamports = MarinadeUtils.solToLamports(amountSol) logger.info( @@ -74,7 +75,7 @@ export async function deposit({ const marinadeConfig = new MarinadeConfig({ connection: connection, - publicKey: walletSigner.publicKey, + publicKey: wallet.publicKey, referralCode: referralCode ?? null, }) const marinade = new Marinade(marinadeConfig) @@ -91,8 +92,8 @@ export async function deposit({ await executeTx({ connection, - errMessage: `Failed to deposit ${amountSol} SOLs from ${walletSigner.publicKey.toBase58()}`, - signers: [walletSigner], + errMessage: `Failed to deposit ${amountSol} SOLs from ${wallet.publicKey.toBase58()}`, + signers: [wallet], transaction, logger, simulate, @@ -101,7 +102,7 @@ export async function deposit({ logger.info( 'Successfully deposited %d SOLs from %s for mSOL mint owner %s (validator vote address: %s, referral code: %s)', amountSol, - walletSigner.publicKey.toBase58(), + wallet.publicKey.toBase58(), owner.toBase58(), validatorVoteAddress?.toBase58() || 'none', referralCode?.toBase58() || 'none' diff --git a/src/commands/manage/depositStakeAccount.ts b/packages/marinade-ts-cli/src/commands/manage/depositStakeAccount.ts similarity index 85% rename from src/commands/manage/depositStakeAccount.ts rename to packages/marinade-ts-cli/src/commands/manage/depositStakeAccount.ts index 052a9da..3025d5f 100644 --- a/src/commands/manage/depositStakeAccount.ts +++ b/packages/marinade-ts-cli/src/commands/manage/depositStakeAccount.ts @@ -1,9 +1,9 @@ import { Marinade, MarinadeConfig } from '@marinade.finance/marinade-ts-sdk' import { Command } from 'commander' -import { parsePubkey } from '../../utils/cliParser' -import { getContext } from '../../context' +import { parsePubkey } from '@marinade.finance/cli-common' import { PublicKey } from '@solana/web3.js' -import { executeTx } from '../../utils/transactions' +import { executeTx } from '@marinade.finance/cli-common' +import { getMarinadeCliContext } from '../../context' export function installDepositStakeAccount(program: Command) { program @@ -49,17 +49,18 @@ export async function depositStakeAccount({ referralCode?: PublicKey validatorVoteAddress?: PublicKey }): Promise { - const { connection, walletSigner, logger, simulate, printOnly } = getContext() + const { connection, wallet, logger, simulate, printOnly } = + getMarinadeCliContext() logger.info( 'Depositing stake account: %s from wallet key %s', stakeAccount.toBase58(), - walletSigner.publicKey.toBase58() + wallet.publicKey.toBase58() ) const marinadeConfig = new MarinadeConfig({ connection: connection, - publicKey: walletSigner.publicKey, + publicKey: wallet.publicKey, referralCode: referralCode || null, }) const marinade = new Marinade(marinadeConfig) @@ -71,7 +72,7 @@ export async function depositStakeAccount({ await executeTx({ connection, errMessage: `Failed to deposit stake account ${stakeAccount.toBase58()}`, - signers: [walletSigner], + signers: [wallet], transaction, logger, simulate, @@ -80,7 +81,7 @@ export async function depositStakeAccount({ logger.info( 'Successfully deposited stake account %s from wallet key %s (validator vote address: %s, referral code: %s)', stakeAccount.toBase58(), - walletSigner.publicKey.toBase58(), + wallet.publicKey.toBase58(), validatorVoteAddress?.toBase58() || 'none', referralCode?.toBase58() || 'none' ) diff --git a/src/commands/manage/index.ts b/packages/marinade-ts-cli/src/commands/manage/index.ts similarity index 100% rename from src/commands/manage/index.ts rename to packages/marinade-ts-cli/src/commands/manage/index.ts diff --git a/src/commands/manage/liquidUnstake.ts b/packages/marinade-ts-cli/src/commands/manage/liquidUnstake.ts similarity index 82% rename from src/commands/manage/liquidUnstake.ts rename to packages/marinade-ts-cli/src/commands/manage/liquidUnstake.ts index b93e246..eea5689 100644 --- a/src/commands/manage/liquidUnstake.ts +++ b/packages/marinade-ts-cli/src/commands/manage/liquidUnstake.ts @@ -3,11 +3,11 @@ import { MarinadeConfig, MarinadeUtils, } from '@marinade.finance/marinade-ts-sdk' -import { parsePubkey } from '../../utils/cliParser' +import { parsePubkey } from '@marinade.finance/cli-common' import { Command } from 'commander' import { PublicKey } from '@solana/web3.js' -import { getContext } from '../../context' -import { executeTx } from '../../utils/transactions' +import { executeTx } from '@marinade.finance/cli-common' +import { getMarinadeCliContext } from '../../context' export function installLiquidUnstake(program: Command) { program @@ -39,7 +39,8 @@ export async function liquidUnstake({ amountMsol: number referralCode?: PublicKey }): Promise { - const { connection, logger, walletSigner, simulate, printOnly } = getContext() + const { connection, logger, wallet, simulate, printOnly } = + getMarinadeCliContext() const amountLamports = MarinadeUtils.solToLamports(amountMsol) logger.info( @@ -50,7 +51,7 @@ export async function liquidUnstake({ const marinadeConfig = new MarinadeConfig({ connection: connection, - publicKey: walletSigner.publicKey, + publicKey: wallet.publicKey, referralCode: referralCode ?? null, }) const marinade = new Marinade(marinadeConfig) @@ -64,8 +65,8 @@ export async function liquidUnstake({ await executeTx({ connection, - errMessage: `Failed to unstake ${amountMsol} mSOLs for ${walletSigner.publicKey.toBase58()}`, - signers: [walletSigner], + errMessage: `Failed to unstake ${amountMsol} mSOLs for ${wallet.publicKey.toBase58()}`, + signers: [wallet], transaction, logger, simulate, @@ -74,7 +75,7 @@ export async function liquidUnstake({ logger.info( 'Successfully liquid unstaked %d mSOLs, signed by %s (referral code: %s)', amountMsol, - walletSigner.publicKey.toBase58(), + wallet.publicKey.toBase58(), referralCode?.toBase58() ?? 'none' ) } diff --git a/src/commands/manage/orderUnstake.ts b/packages/marinade-ts-cli/src/commands/manage/orderUnstake.ts similarity index 80% rename from src/commands/manage/orderUnstake.ts rename to packages/marinade-ts-cli/src/commands/manage/orderUnstake.ts index 847148c..c07f492 100644 --- a/src/commands/manage/orderUnstake.ts +++ b/packages/marinade-ts-cli/src/commands/manage/orderUnstake.ts @@ -4,8 +4,8 @@ import { MarinadeUtils, } from '@marinade.finance/marinade-ts-sdk' import { Command } from 'commander' -import { getContext } from '../../context' -import { executeTx } from '../../utils/transactions' +import { executeTx } from '@marinade.finance/cli-common' +import { getMarinadeCliContext } from '../../context' export function installOrderUnstake(program: Command) { program @@ -24,7 +24,8 @@ export async function orderUnstake({ }: { amountMsol: number }): Promise { - const { connection, logger, walletSigner, simulate, printOnly } = getContext() + const { connection, logger, wallet, simulate, printOnly } = + getMarinadeCliContext() const amountLamports = MarinadeUtils.solToLamports(amountMsol) logger.info( @@ -35,7 +36,7 @@ export async function orderUnstake({ const marinadeConfig = new MarinadeConfig({ connection: connection, - publicKey: walletSigner.publicKey, + publicKey: wallet.publicKey, }) const marinade = new Marinade(marinadeConfig) @@ -51,8 +52,8 @@ export async function orderUnstake({ await executeTx({ connection, - errMessage: `Failed to order unstake ${amountMsol} mSOLs for ${walletSigner.publicKey.toBase58()}`, - signers: [walletSigner, ticketAccountKeypair], + errMessage: `Failed to order unstake ${amountMsol} mSOLs for ${wallet.publicKey.toBase58()}`, + signers: [wallet, ticketAccountKeypair], transaction, logger, simulate, @@ -61,7 +62,7 @@ export async function orderUnstake({ logger.info( 'Successfully ordered unstake %d mSOLs (signed by %s). Ticket: %s', amountMsol, - walletSigner.publicKey.toBase58(), + wallet.publicKey.toBase58(), ticketAccountKeypair.publicKey.toBase58() ) } diff --git a/src/commands/manage/removeLiquidity.ts b/packages/marinade-ts-cli/src/commands/manage/removeLiquidity.ts similarity index 81% rename from src/commands/manage/removeLiquidity.ts rename to packages/marinade-ts-cli/src/commands/manage/removeLiquidity.ts index 995667e..2907c2d 100644 --- a/src/commands/manage/removeLiquidity.ts +++ b/packages/marinade-ts-cli/src/commands/manage/removeLiquidity.ts @@ -4,8 +4,8 @@ import { MarinadeUtils, } from '@marinade.finance/marinade-ts-sdk' import { Command } from 'commander' -import { getContext } from '../../context' -import { executeTx } from '../../utils/transactions' +import { executeTx } from '@marinade.finance/cli-common' +import { getMarinadeCliContext } from '../../context' export function installRemoveLiquidity(program: Command) { program @@ -24,7 +24,8 @@ export async function removeLiquidity({ }: { amountSol: number }): Promise { - const { connection, logger, walletSigner, simulate, printOnly } = getContext() + const { connection, logger, wallet, simulate, printOnly } = + getMarinadeCliContext() const amountLamports = MarinadeUtils.solToLamports(amountSol) logger.info( @@ -35,7 +36,7 @@ export async function removeLiquidity({ const marinadeConfig = new MarinadeConfig({ connection: connection, - publicKey: walletSigner.publicKey, + publicKey: wallet.publicKey, }) const marinade = new Marinade(marinadeConfig) @@ -55,8 +56,8 @@ export async function removeLiquidity({ connection, errMessage: `Failed to remove ${amountSol} LPs, ` + - `signed by ${walletSigner.publicKey.toBase58()}`, - signers: [walletSigner], + `signed by ${wallet.publicKey.toBase58()}`, + signers: [wallet], transaction, logger, simulate, @@ -65,6 +66,6 @@ export async function removeLiquidity({ logger.info( 'Successfully removed liquidity of %d LPs, signed by %s', amountSol, - walletSigner.publicKey.toBase58() + wallet.publicKey.toBase58() ) } diff --git a/src/commands/show.ts b/packages/marinade-ts-cli/src/commands/show.ts similarity index 98% rename from src/commands/show.ts rename to packages/marinade-ts-cli/src/commands/show.ts index dfb6f13..ea9bb2f 100644 --- a/src/commands/show.ts +++ b/packages/marinade-ts-cli/src/commands/show.ts @@ -6,8 +6,8 @@ import { MarinadeState, } from '@marinade.finance/marinade-ts-sdk' import { Command } from 'commander' -import { getContext } from '../context' import { BN } from 'bn.js' +import { getMarinadeCliContext } from '../context' export function installShow(program: Command) { program @@ -22,7 +22,7 @@ export function installShow(program: Command) { } async function show({ withList }: { withList: boolean }) { - const { connection, logger } = getContext() + const { connection, logger } = getMarinadeCliContext() const marinadeConfig = new MarinadeConfig({ connection, @@ -241,7 +241,7 @@ async function listValidatorsWithStake(marinadeState: MarinadeState) { console.log( ` Total staked: ${MarinadeUtils.lamportsToSol( state.validatorSystem.totalActiveBalance - )} SOL (Note:4~5% from total TVL is usually rebalancing)` + )} SOL (Note:4~5% from total TVL is usually re-balancing)` ) console.log( ` List account: ${state.validatorSystem.validatorList.account} with ${state.validatorSystem.validatorList.count}/${validatorCapacity} validators` diff --git a/src/commands/showReferralState.ts b/packages/marinade-ts-cli/src/commands/showReferralState.ts similarity index 94% rename from src/commands/showReferralState.ts rename to packages/marinade-ts-cli/src/commands/showReferralState.ts index c09416f..ee142cd 100644 --- a/src/commands/showReferralState.ts +++ b/packages/marinade-ts-cli/src/commands/showReferralState.ts @@ -5,8 +5,8 @@ import { } from '@marinade.finance/marinade-ts-sdk' import { Command } from 'commander' import { PublicKey } from '@solana/web3.js' -import { parsePubkey } from '../utils/cliParser' -import { getContext } from '../context' +import { parsePubkey } from '@marinade.finance/cli-common' +import { getMarinadeCliContext } from '../context' export function installShowReferralState(program: Command) { program @@ -27,7 +27,7 @@ export async function showReferralState({ }: { referralCode: PublicKey }) { - const { connection, logger } = getContext() + const { connection, logger } = getMarinadeCliContext() logger.debug('Referral account:', referralCode.toBase58()) const marinadeConfig = new MarinadeConfig({ diff --git a/src/commands/showTickets.ts b/packages/marinade-ts-cli/src/commands/showTickets.ts similarity index 88% rename from src/commands/showTickets.ts rename to packages/marinade-ts-cli/src/commands/showTickets.ts index 0b17b79..92665c5 100644 --- a/src/commands/showTickets.ts +++ b/packages/marinade-ts-cli/src/commands/showTickets.ts @@ -4,9 +4,9 @@ import { MarinadeUtils, } from '@marinade.finance/marinade-ts-sdk' import { Command } from 'commander' -import { getContext } from '../context' -import { parsePubkey } from '../utils/cliParser' +import { parsePubkey } from '@marinade.finance/cli-common' import { PublicKey } from '@solana/web3.js' +import { getMarinadeCliContext } from '../context' export function installShowTickets(program: Command) { program @@ -27,11 +27,11 @@ export function installShowTickets(program: Command) { } async function showTickets({ - beneficiary = getContext().walletSigner.publicKey, + beneficiary = getMarinadeCliContext().wallet.publicKey, }: { beneficiary?: PublicKey }) { - const { connection } = getContext() + const { connection } = getMarinadeCliContext() const marinadeConfig = new MarinadeConfig({ connection, diff --git a/packages/marinade-ts-cli/src/context.ts b/packages/marinade-ts-cli/src/context.ts new file mode 100644 index 0000000..3014e1e --- /dev/null +++ b/packages/marinade-ts-cli/src/context.ts @@ -0,0 +1,96 @@ +import { Connection } from '@solana/web3.js' +import { Wallet } from '@coral-xyz/anchor/dist/cjs/provider' +import { MarinadeConfig } from '@marinade.finance/marinade-ts-sdk' +import NodeWallet from '@coral-xyz/anchor/dist/cjs/nodewallet' +import { + Context, + getClusterUrl, + parseCommitment, + parseKeypair, + setContext, + getContext, +} from '@marinade.finance/cli-common' +import { parseLedgerWallet } from '@marinade.finance/ledger-utils' +import { Logger } from 'pino' + +export class MarinadeCLIContext extends Context { + readonly connection: Connection + readonly marinadeDefaults: MarinadeConfig + + constructor({ + connection, + wallet, + logger, + skipPreflight, + simulate, + printOnly, + commandName, + marinadeDefaults, + }: { + connection: Connection + wallet: Wallet + logger: Logger + skipPreflight: boolean + simulate: boolean + printOnly: boolean + commandName: string + marinadeDefaults: MarinadeConfig + }) { + super({ wallet, logger, skipPreflight, simulate, printOnly, commandName }) + this.connection = connection + this.marinadeDefaults = marinadeDefaults + } +} + +export function setMarinadeCLIContext({ + url, + walletSigner, + logger, + commitment, + skipPreflight, + simulate, + printOnly, + command, +}: { + url: string + walletSigner: Wallet + simulate: boolean + printOnly: boolean + skipPreflight: boolean + commitment: string + logger: Logger + command: string +}) { + const connection = new Connection( + getClusterUrl(url), + parseCommitment(commitment) + ) + setContext( + new MarinadeCLIContext({ + connection, + wallet: walletSigner, + logger, + skipPreflight, + simulate, + printOnly, + commandName: command, + marinadeDefaults: new MarinadeConfig(), + }) + ) +} + +export function getMarinadeCliContext(): MarinadeCLIContext { + return getContext() as MarinadeCLIContext +} + +export async function parseSigner( + pathOrUrl: string, + logger: Logger +): Promise { + const wallet = await parseLedgerWallet(pathOrUrl, logger) + if (wallet) { + return wallet + } + const keypair = await parseKeypair(pathOrUrl) + return new NodeWallet(keypair) +} diff --git a/src/index.ts b/packages/marinade-ts-cli/src/index.ts similarity index 94% rename from src/index.ts rename to packages/marinade-ts-cli/src/index.ts index 66c422c..92a357b 100644 --- a/src/index.ts +++ b/packages/marinade-ts-cli/src/index.ts @@ -1,9 +1,8 @@ /* eslint-disable no-process-exit */ import { Command } from 'commander' -import { setContext } from './context' +import { parseSigner, setMarinadeCLIContext } from './context' import { installCommands } from './commands' import { pino, Logger } from 'pino' -import { parseSigner } from './utils/cliParser' const DEFAULT_KEYPAIR_PATH = '~/.config/solana/id.json' @@ -27,7 +26,7 @@ const logger: Logger = pino({ const program = new Command('marinade') program - .version('5.0.0') + .version('5.1.0') .allowExcessArguments(false) .option( '-u, --url ', @@ -62,7 +61,7 @@ program let walletSigner = (await command.opts().keypair) ?? DEFAULT_KEYPAIR_PATH walletSigner = await parseSigner(walletSigner, logger) - setContext({ + setMarinadeCLIContext({ url: command.opts().url as string, walletSigner, simulate: Boolean(command.opts().simulate), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a88e543..84beb37 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,101 +1,178 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + overrides: - '@typescript-eslint/typescript-estree': ^5.59.11 - -dependencies: - '@coral-xyz/anchor': - specifier: '0.28' - version: 0.28.0 - '@ledgerhq/errors': - specifier: ^6.12.6 - version: 6.12.6 - '@ledgerhq/hw-app-solana': - specifier: ^7.0.9 - version: 7.0.9 - '@ledgerhq/hw-transport-node-hid-noevents': - specifier: ^6.27.15 - version: 6.27.15 - '@marinade.finance/marinade-ts-sdk': - specifier: ^5.0.1 - version: 5.0.1(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0) - '@solana/spl-governance': - specifier: ^0.3.27 - version: 0.3.27 - '@solana/spl-token': - specifier: ^0.3.8 - version: 0.3.8(@solana/web3.js@1.75.0) - bn.js: - specifier: ^5.2.1 - version: 5.2.1 - borsh: - specifier: ^0.7.0 - version: 0.7.0 - bs58: - specifier: ^4.0.1 - version: 4.0.1 - commander: - specifier: ^11.0.0 - version: 11.0.0 - expand-tilde: - specifier: ^2.0.2 - version: 2.0.2 - pino: - specifier: ^8.14.1 - version: 8.14.1 - pino-pretty: - specifier: ^10.0.0 - version: 10.0.0 - -devDependencies: - '@jest/globals': - specifier: ^29.5.0 - version: 29.5.0 - '@marinade.finance/solana-test-utils': - specifier: ^0.0.89 - version: 0.0.89(@gokiprotocol/client@0.11.1)(@marinade.finance/kedgeree-sdk@1.0.3)(@marinade.finance/spl-governance@0.3.25)(@quarryprotocol/quarry-sdk@5.3.0)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.75.0)(@types/node@16.0.0)(bn.js@5.2.1)(jsbi@4.3.0)(ts-node@10.9.1) - '@types/bn.js': - specifier: ^5.1.1 - version: 5.1.1 - '@types/bs58': - specifier: ^4.0.1 - version: 4.0.1 - '@types/expand-tilde': - specifier: ^2.0.0 - version: 2.0.0 - '@types/jest': - specifier: ^29.5.2 - version: 29.5.2 - '@types/node': - specifier: ^16.0.0 - version: 16.0.0 - '@typescript-eslint/typescript-estree': - specifier: ^5.59.11 - version: 5.59.11(typescript@5.0.4) - gts: - specifier: ^3.1.1 - version: 3.1.1(typescript@5.0.4) - husky: - specifier: ^8.0.3 - version: 8.0.3 - jest: - specifier: ^29.0.5 - version: 29.5.0(@types/node@16.0.0)(ts-node@10.9.1) - lint-staged: - specifier: ^13.2.2 - version: 13.2.2 - ts-jest: - specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@5.0.4) - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@16.0.0)(typescript@5.0.4) - typescript: - specifier: 5.0.4 - version: 5.0.4 + '@typescript-eslint/typescript-estree': ^5.59.1 + +importers: + + .: + devDependencies: + '@jest/globals': + specifier: ^29.5.0 + version: 29.5.0 + '@types/jest': + specifier: ^29.5.2 + version: 29.5.2 + '@types/node': + specifier: ^16.0.0 + version: 16.0.0 + '@typescript-eslint/eslint-plugin': + specifier: ^5.59.1 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.0.4) + '@typescript-eslint/parser': + specifier: ^5.59.1 + version: 5.62.0(eslint@8.46.0)(typescript@5.0.4) + '@typescript-eslint/typescript-estree': + specifier: ^5.59.1 + version: 5.59.1(typescript@5.0.4) + gts: + specifier: ^5.0.0 + version: 5.0.0(typescript@5.0.4) + husky: + specifier: ^8.0.3 + version: 8.0.3 + jest: + specifier: ^29.0.5 + version: 29.5.0(@types/node@16.0.0)(ts-node@10.9.1) + lint-staged: + specifier: ^13.2.2 + version: 13.2.2 + ts-jest: + specifier: ^29.1.0 + version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@5.0.4) + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@16.0.0)(typescript@5.0.4) + typescript: + specifier: 5.0.4 + version: 5.0.4 + + packages/cli-common: + devDependencies: + '@solana/web3.js': + specifier: ^1.78.3 + version: 1.78.3 + '@types/expand-tilde': + specifier: ^2.0.0 + version: 2.0.0 + borsh: + specifier: ^0.7.0 + version: 0.7.0 + expand-tilde: + specifier: ^2.0.2 + version: 2.0.2 + pino: + specifier: ^8.15.0 + version: 8.15.0 + + packages/jest-utils: + devDependencies: + '@jest/globals': + specifier: ^29.5.0 + version: 29.5.0 + '@solana/web3.js': + specifier: ^1.78.3 + version: 1.78.3 + '@types/bn.js': + specifier: ^5.1.1 + version: 5.1.1 + bn.js: + specifier: ^5.2.1 + version: 5.2.1 + + packages/ledger-utils: + devDependencies: + '@ledgerhq/errors': + specifier: ^6.13.1 + version: 6.13.1 + '@ledgerhq/hw-app-solana': + specifier: ^7.0.12 + version: 7.0.12 + '@ledgerhq/hw-transport-node-hid-noevents': + specifier: ^6.27.18 + version: 6.27.18 + '@marinade.finance/cli-common': + specifier: 'workspace: *' + version: link:../cli-common + '@solana/web3.js': + specifier: ^1.78.3 + version: 1.78.3 + pino: + specifier: ^8.15.0 + version: 8.15.0 + + packages/marinade-ts-cli: + dependencies: + '@coral-xyz/anchor': + specifier: '0.28' + version: 0.28.0 + '@ledgerhq/errors': + specifier: ^6.13.1 + version: 6.13.1 + '@ledgerhq/hw-app-solana': + specifier: ^7.0.12 + version: 7.0.12 + '@ledgerhq/hw-transport-node-hid-noevents': + specifier: ^6.27.18 + version: 6.27.18 + '@marinade.finance/cli-common': + specifier: workspace:* + version: link:../cli-common + '@marinade.finance/ledger-utils': + specifier: workspace:* + version: link:../ledger-utils + '@marinade.finance/marinade-ts-sdk': + specifier: ^5.0.3 + version: 5.0.3(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0) + '@solana/spl-governance': + specifier: ^0.3.28 + version: 0.3.28 + '@solana/spl-token': + specifier: ^0.3.8 + version: 0.3.8(@solana/web3.js@1.78.3) + '@solana/web3.js': + specifier: ^1.78.3 + version: 1.78.3 + bn.js: + specifier: ^5.2.1 + version: 5.2.1 + borsh: + specifier: ^0.7.0 + version: 0.7.0 + bs58: + specifier: ^4.0.1 + version: 4.0.1 + commander: + specifier: ^11.0.0 + version: 11.0.0 + expand-tilde: + specifier: ^2.0.2 + version: 2.0.2 + pino: + specifier: ^8.15.0 + version: 8.15.0 + pino-pretty: + specifier: ^10.2.0 + version: 10.2.0 + devDependencies: + '@marinade.finance/solana-test-utils': + specifier: ^0.0.89 + version: 0.0.89(@gokiprotocol/client@0.11.1)(@marinade.finance/kedgeree-sdk@1.0.3)(@marinade.finance/spl-governance@0.3.25)(@quarryprotocol/quarry-sdk@5.3.0)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.78.3)(@types/node@16.0.0)(bn.js@5.2.1)(jsbi@4.3.0)(ts-node@10.9.1) + '@types/bn.js': + specifier: ^5.1.1 + version: 5.1.1 packages: + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} @@ -104,12 +181,6 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true - /@babel/code-frame@7.12.11: - resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} - dependencies: - '@babel/highlight': 7.22.5 - dev: true - /@babel/code-frame@7.22.5: resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} @@ -403,11 +474,11 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/runtime@7.21.5: - resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} + /@babel/runtime@7.22.10: + resolution: {integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.11 + regenerator-runtime: 0.14.0 /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} @@ -453,14 +524,14 @@ packages: resolution: {integrity: sha512-+P/vPdORawvg3A9Wj02iquxb4T0C5m4P6aZBVYysKl4Amk+r6aMPZkUhilBkD6E4Nuxnoajv3CFykUfkGE0n5g==} engines: {node: '>=11'} dependencies: - '@coral-xyz/borsh': 0.27.0(@solana/web3.js@1.75.0) - '@solana/web3.js': 1.75.0 + '@coral-xyz/borsh': 0.27.0(@solana/web3.js@1.78.3) + '@solana/web3.js': 1.78.3 base64-js: 1.5.1 bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.1.6 + cross-fetch: 3.1.8 crypto-hash: 1.3.0 eventemitter3: 4.0.7 js-sha256: 0.9.0 @@ -471,7 +542,6 @@ packages: transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate dev: false @@ -479,14 +549,14 @@ packages: resolution: {integrity: sha512-kQ02Hv2ZqxtWP30WN1d4xxT4QqlOXYDxmEd3k/bbneqhV3X5QMO4LAtoUFs7otxyivOgoqam5Il5qx81FuI4vw==} engines: {node: '>=11'} dependencies: - '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.75.0) - '@solana/web3.js': 1.75.0 + '@coral-xyz/borsh': 0.28.0(@solana/web3.js@1.78.3) + '@solana/web3.js': 1.78.3 base64-js: 1.5.1 bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.1.6 + cross-fetch: 3.1.8 crypto-hash: 1.3.0 eventemitter3: 4.0.7 js-sha256: 0.9.0 @@ -497,39 +567,38 @@ packages: transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate dev: false - /@coral-xyz/borsh@0.26.0(@solana/web3.js@1.75.0): + /@coral-xyz/borsh@0.26.0(@solana/web3.js@1.78.3): resolution: {integrity: sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==} engines: {node: '>=10'} peerDependencies: '@solana/web3.js': ^1.68.0 dependencies: - '@solana/web3.js': 1.75.0 + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 buffer-layout: 1.2.2 dev: true - /@coral-xyz/borsh@0.27.0(@solana/web3.js@1.75.0): + /@coral-xyz/borsh@0.27.0(@solana/web3.js@1.78.3): resolution: {integrity: sha512-tJKzhLukghTWPLy+n8K8iJKgBq1yLT/AxaNd10yJrX8mI56ao5+OFAKAqW/h0i79KCvb4BK0VGO5ECmmolFz9A==} engines: {node: '>=10'} peerDependencies: '@solana/web3.js': ^1.68.0 dependencies: - '@solana/web3.js': 1.75.0 + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 buffer-layout: 1.2.2 dev: false - /@coral-xyz/borsh@0.28.0(@solana/web3.js@1.75.0): + /@coral-xyz/borsh@0.28.0(@solana/web3.js@1.78.3): resolution: {integrity: sha512-/u1VTzw7XooK7rqeD7JLUSwOyRSesPUk0U37BV9zK0axJc1q0nRbKFGFLYCQ16OtdOJTTwGfGp11Lx9B45bRCQ==} engines: {node: '>=10'} peerDependencies: '@solana/web3.js': ^1.68.0 dependencies: - '@solana/web3.js': 1.75.0 + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 buffer-layout: 1.2.2 dev: false @@ -541,24 +610,44 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@eslint/eslintrc@0.4.3: - resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} - engines: {node: ^10.12.0 || >=12.0.0} + /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.46.0 + eslint-visitor-keys: 3.4.2 + dev: true + + /@eslint-community/regexpp@4.6.2: + resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.1: + resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 7.3.1 + espree: 9.6.1 globals: 13.20.0 - ignore: 4.0.6 + ignore: 5.2.4 import-fresh: 3.3.0 - js-yaml: 3.14.1 + js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color dev: true - /@gokiprotocol/client@0.11.1(@project-serum/anchor@0.26.0)(@saberhq/anchor-contrib@1.14.11)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.75.0)(bn.js@5.2.1): + /@eslint/js@8.46.0: + resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@gokiprotocol/client@0.11.1(@project-serum/anchor@0.26.0)(@saberhq/anchor-contrib@1.14.11)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.78.3)(bn.js@5.2.1): resolution: {integrity: sha512-ckMxHxD1GLtllWzQWHah61FxkuQhJo79MPEJsdCF8eiLA/orN/nAU8N5kzihl/Rm67RjnV452e3Sjoyn1MLmLA==} peerDependencies: '@project-serum/anchor': '>=0.24' @@ -569,19 +658,19 @@ packages: bn.js: ^5 dependencies: '@project-serum/anchor': 0.26.0 - '@saberhq/anchor-contrib': 1.14.11(@project-serum/anchor@0.26.0)(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@saberhq/token-utils': 1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0) - '@solana/web3.js': 1.75.0 + '@saberhq/anchor-contrib': 1.14.11(@project-serum/anchor@0.26.0)(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@saberhq/token-utils': 1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0) + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 lodash.mapvalues: 4.6.0 superstruct: 0.16.7 tiny-invariant: 1.3.1 - tslib: 2.5.0 + tslib: 2.6.1 dev: true - /@humanwhocodes/config-array@0.5.0: - resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + /@humanwhocodes/config-array@0.11.10: + resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -591,6 +680,11 @@ packages: - supports-color dev: true + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true @@ -1084,51 +1178,45 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@ledgerhq/devices@8.0.3: - resolution: {integrity: sha512-Q7/vqkGELSBuwFafFoTqlHIRyOjw8JqbSgiQwe2R38xN0RKtKIh+5E6UfMKyoExiq+SrQg0IC8P2LS+XdjOHLw==} + /@ledgerhq/devices@8.0.6: + resolution: {integrity: sha512-KWA68krUD9pFp6bJAhTe2nurhku4HnS5LwtHnCXg8PB0DbzWt27PTKgVOCKO7TEdJ3wu4eVcgP5RQrap22pQHQ==} dependencies: - '@ledgerhq/errors': 6.12.6 + '@ledgerhq/errors': 6.13.1 '@ledgerhq/logs': 6.10.1 rxjs: 6.6.7 - semver: 7.5.1 - dev: false + semver: 7.5.4 - /@ledgerhq/errors@6.12.6: - resolution: {integrity: sha512-D+r2B09vaRO06wfGoss+rNgwqWSoK0bCtsaJWzlD2hv1zxTtucqVtSztbRFypIqxWTCb3ix5Nh2dWHEJVTp2Xw==} - dev: false + /@ledgerhq/errors@6.13.1: + resolution: {integrity: sha512-y5qOFiX7ILACF7GvCAB67S5nCABEP5rm8lxK66qKIBRApcLlTplbjUACDRfKQbAIwf0SJPuR31rtTKB92ykwKQ==} - /@ledgerhq/hw-app-solana@7.0.9: - resolution: {integrity: sha512-fOSf5O+ZAShPuTigZcPPDnM4nmeCeIrc4Ggv7xLXeYP2C8ixI3wxhT+ivuhWFuKQJKY01tRVscq/haIJq5kjlQ==} + /@ledgerhq/hw-app-solana@7.0.12: + resolution: {integrity: sha512-MY9QRutvv5oVB9iB/NuEz1PloAyS708T1EeECtCxvbaJZDPtBqFjg2B53nqED2H6iPzla1b3/Gjx6v2HbOZlzQ==} dependencies: - '@ledgerhq/errors': 6.12.6 - '@ledgerhq/hw-transport': 6.28.4 + '@ledgerhq/errors': 6.13.1 + '@ledgerhq/hw-transport': 6.28.7 '@ledgerhq/logs': 6.10.1 bip32-path: 0.4.2 - dev: false - /@ledgerhq/hw-transport-node-hid-noevents@6.27.15: - resolution: {integrity: sha512-cLf/Egp4+WWUlKT5Zi9BZTmlMcdVQKftmnfb/LIeVnoiN2tn6a3vx51+o7voqVzSKWYSQwwwTjVVI4ayf+Av3A==} + /@ledgerhq/hw-transport-node-hid-noevents@6.27.18: + resolution: {integrity: sha512-duVDQUzjdZ+BmKnp68XHxd3/osB7OeYVIMc/uYmk7InPsHUexpEPuyGBQMGPZlvJ/N6YpArEWJHzcxbcXoCZ2A==} dependencies: - '@ledgerhq/devices': 8.0.3 - '@ledgerhq/errors': 6.12.6 - '@ledgerhq/hw-transport': 6.28.4 + '@ledgerhq/devices': 8.0.6 + '@ledgerhq/errors': 6.13.1 + '@ledgerhq/hw-transport': 6.28.7 '@ledgerhq/logs': 6.10.1 node-hid: 2.1.2 - dev: false - /@ledgerhq/hw-transport@6.28.4: - resolution: {integrity: sha512-fB2H92YQjidmae2GFCmOGPwkZWk0lvTu0tlLlzfiY0wRheAG+DEgjnqhdU8wmydkPLIj0WUjRgldtnJtg/a2iQ==} + /@ledgerhq/hw-transport@6.28.7: + resolution: {integrity: sha512-P6XWv/Blb3AvzNH/33ouqFvsUwjCsQN5iMTLuVJqxVKwj91QmdYZfYR9U9FB0gBKrIQ7BONUgTX/ko9EnDV6/g==} dependencies: - '@ledgerhq/devices': 8.0.3 - '@ledgerhq/errors': 6.12.6 + '@ledgerhq/devices': 8.0.6 + '@ledgerhq/errors': 6.13.1 events: 3.3.0 - dev: false /@ledgerhq/logs@6.10.1: resolution: {integrity: sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w==} - dev: false - /@marinade.finance/directed-stake-sdk@0.0.4(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0): + /@marinade.finance/directed-stake-sdk@0.0.4(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0): resolution: {integrity: sha512-5WTBDRg8hbCHS54wUUhPUuXj9JiQE3Bc1+nmDI3JivQPHu7VsDaPB3w1SHRh0bfARnZQg9oKg8s6jVwNiScCsQ==} engines: {node: '>10'} peerDependencies: @@ -1137,18 +1225,17 @@ packages: jsbi: ^4.3.0 dependencies: '@coral-xyz/anchor': 0.27.0 - '@solana/web3.js': 1.75.0 + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 bs58: 5.0.0 jsbi: 4.3.0 transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate dev: false - /@marinade.finance/kedgeree-sdk@1.0.3(@saberhq/solana-contrib@1.14.11)(@solana/web3.js@1.75.0)(bn.js@5.2.1): + /@marinade.finance/kedgeree-sdk@1.0.3(@saberhq/solana-contrib@1.14.11)(@solana/web3.js@1.78.3)(bn.js@5.2.1): resolution: {integrity: sha512-BflAEptTZOvga7hE6XdIVr+QM34QEnxfVOHQntF9JRVSFQ/SQ9jXESCTRuIazMU1tNIYGGI02i5aOJONwYvTnQ==} peerDependencies: '@saberhq/solana-contrib': ^1.14 @@ -1156,25 +1243,24 @@ packages: bn.js: ^5.2.1 dependencies: '@project-serum/anchor': 0.24.2 - '@saberhq/anchor-contrib': 1.14.11(@project-serum/anchor@0.24.2)(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@solana/web3.js': 1.75.0 + '@saberhq/anchor-contrib': 1.14.11(@project-serum/anchor@0.24.2)(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate dev: true - /@marinade.finance/marinade-ts-sdk@5.0.1(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0): - resolution: {integrity: sha512-jYICyyAjj2MlTG2xZvYQFeQrtchgul78pLaUQQouSVQbKGZJuGV/a9PK4kmOuQxOFXiD+0wsvgUsJBwEIqMDtg==} - engines: {node: '>=16.0.0'} - requiresBuild: true + /@marinade.finance/marinade-ts-sdk@5.0.3(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0): + resolution: {integrity: sha512-QvVfywC4in6ep3HqUlK5Odz3QvgRrFe+Xc02kk9K8r6V9DRkPXPdjQRbG9SMVHlNbzq7GTdhqxAL15KnmWtetw==} + engines: {anchor: '>=0.28.0', node: '>=16.0.0'} dependencies: - '@coral-xyz/anchor': 0.27.0 - '@marinade.finance/directed-stake-sdk': 0.0.4(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0) - '@solana/spl-token': 0.3.8(@solana/web3.js@1.75.0) + '@coral-xyz/anchor': 0.28.0 + '@marinade.finance/directed-stake-sdk': 0.0.4(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0) + '@solana/spl-stake-pool': 0.6.5 + '@solana/spl-token-3.x': /@solana/spl-token@0.3.8(@solana/web3.js@1.78.3) borsh: 0.7.0 bs58: 5.0.0 transitivePeerDependencies: @@ -1183,11 +1269,10 @@ packages: - bufferutil - encoding - jsbi - - supports-color - utf-8-validate dev: false - /@marinade.finance/solana-cli-utils@0.0.84(@gokiprotocol/client@0.11.1)(@marinade.finance/kedgeree-sdk@1.0.3)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0): + /@marinade.finance/solana-cli-utils@0.0.84(@gokiprotocol/client@0.11.1)(@marinade.finance/kedgeree-sdk@1.0.3)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0): resolution: {integrity: sha512-QYqtNlM9Orld3D/egsP7XOrrxkwQnq/HuqzITpWXJQY01kquK5YxEm/DZ6LBhAnZa6CbUxGuOKrRQILBj5RYpA==} peerDependencies: '@gokiprotocol/client': ^0.11.1 @@ -1198,14 +1283,14 @@ packages: bn.js: ^5.2.1 jsbi: ^4.3.0 dependencies: - '@gokiprotocol/client': 0.11.1(@project-serum/anchor@0.26.0)(@saberhq/anchor-contrib@1.14.11)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@marinade.finance/kedgeree-sdk': 1.0.3(@saberhq/solana-contrib@1.14.11)(@solana/web3.js@1.75.0)(bn.js@5.2.1) + '@gokiprotocol/client': 0.11.1(@project-serum/anchor@0.26.0)(@saberhq/anchor-contrib@1.14.11)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@marinade.finance/kedgeree-sdk': 1.0.3(@saberhq/solana-contrib@1.14.11)(@solana/web3.js@1.78.3)(bn.js@5.2.1) '@marinade.finance/spl-governance': 0.3.25 '@project-serum/anchor': 0.26.0 - '@saberhq/anchor-contrib': 1.14.11(@project-serum/anchor@0.26.0)(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@saberhq/token-utils': 1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0) - '@solana/web3.js': 1.75.0 + '@saberhq/anchor-contrib': 1.14.11(@project-serum/anchor@0.26.0)(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@saberhq/token-utils': 1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0) + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 expand-tilde: 2.0.2 jsbi: 4.3.0 @@ -1214,11 +1299,10 @@ packages: - bufferutil - debug - encoding - - supports-color - utf-8-validate dev: true - /@marinade.finance/solana-test-utils@0.0.89(@gokiprotocol/client@0.11.1)(@marinade.finance/kedgeree-sdk@1.0.3)(@marinade.finance/spl-governance@0.3.25)(@quarryprotocol/quarry-sdk@5.3.0)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.75.0)(@types/node@16.0.0)(bn.js@5.2.1)(jsbi@4.3.0)(ts-node@10.9.1): + /@marinade.finance/solana-test-utils@0.0.89(@gokiprotocol/client@0.11.1)(@marinade.finance/kedgeree-sdk@1.0.3)(@marinade.finance/spl-governance@0.3.25)(@quarryprotocol/quarry-sdk@5.3.0)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.78.3)(@types/node@16.0.0)(bn.js@5.2.1)(jsbi@4.3.0)(ts-node@10.9.1): resolution: {integrity: sha512-LNSrVf8pNtHbw425eQfw5u/6kXZvgspypAqRsLU3UaJaY6jWAu/wC9RorIykGG6nBs2OPIrofAKt5ZJ6Cm/ySQ==} engines: {node: '>10'} peerDependencies: @@ -1232,23 +1316,23 @@ packages: bn.js: ^5.2.1 jsbi: ^4.3.0 dependencies: - '@gokiprotocol/client': 0.11.1(@project-serum/anchor@0.26.0)(@saberhq/anchor-contrib@1.14.11)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@marinade.finance/kedgeree-sdk': 1.0.3(@saberhq/solana-contrib@1.14.11)(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@marinade.finance/solana-cli-utils': 0.0.84(@gokiprotocol/client@0.11.1)(@marinade.finance/kedgeree-sdk@1.0.3)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0) + '@gokiprotocol/client': 0.11.1(@project-serum/anchor@0.26.0)(@saberhq/anchor-contrib@1.14.11)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@marinade.finance/kedgeree-sdk': 1.0.3(@saberhq/solana-contrib@1.14.11)(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@marinade.finance/solana-cli-utils': 0.0.84(@gokiprotocol/client@0.11.1)(@marinade.finance/kedgeree-sdk@1.0.3)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0) '@marinade.finance/spl-governance': 0.3.25 - '@metaplex-foundation/mpl-token-metadata': 2.12.0 + '@metaplex-foundation/mpl-token-metadata': 2.13.0 '@project-serum/anchor': 0.26.0 - '@quarryprotocol/quarry-sdk': 5.3.0(@project-serum/anchor@0.26.0)(@saberhq/anchor-contrib@1.14.11)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0) - '@saberhq/anchor-contrib': 1.14.11(@project-serum/anchor@0.26.0)(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@saberhq/token-utils': 1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0) - '@solana/web3.js': 1.75.0 + '@quarryprotocol/quarry-sdk': 5.3.0(@project-serum/anchor@0.26.0)(@saberhq/anchor-contrib@1.14.11)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0) + '@saberhq/anchor-contrib': 1.14.11(@project-serum/anchor@0.26.0)(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@saberhq/token-utils': 1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0) + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 jest: 28.1.3(@types/node@16.0.0)(ts-node@10.9.1) jest-shell-matchers: 1.0.2(jest@28.1.3) jsbi: 4.3.0 mz: 2.7.0 - solana-spl-token-modern: /@solana/spl-token@0.3.8(@solana/web3.js@1.75.0) + solana-spl-token-modern: /@solana/spl-token@0.3.8(@solana/web3.js@1.78.3) tmp: 0.2.1 tmp-promise: 3.0.3 transitivePeerDependencies: @@ -1265,7 +1349,7 @@ packages: /@marinade.finance/spl-governance@0.3.25: resolution: {integrity: sha512-0bjLRKHr3MQERwyCITiZ2kJnH59oXGQPqPrrsHSG+x0X59vv08XcFCb+h4jxeaKwDRVP6zfg/oU/vqq+aequgQ==} dependencies: - '@solana/web3.js': 1.75.0 + '@solana/web3.js': 1.78.3 axios: 1.4.0 bignumber.js: 9.1.1 bn.js: 5.2.1 @@ -1276,7 +1360,6 @@ packages: - bufferutil - debug - encoding - - supports-color - utf-8-validate dev: true @@ -1284,7 +1367,7 @@ packages: resolution: {integrity: sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==} dependencies: '@metaplex-foundation/beet': 0.7.1 - '@solana/web3.js': 1.75.0 + '@solana/web3.js': 1.78.3 bs58: 5.0.0 debug: 4.3.4 transitivePeerDependencies: @@ -1308,14 +1391,14 @@ packages: resolution: {integrity: sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==} dev: true - /@metaplex-foundation/mpl-token-metadata@2.12.0: - resolution: {integrity: sha512-DetC2F5MwMRt4TmLXwj8PJ8nClRYGMecSQ4pr9iKKa+rWertHgKoJHl2XhheRa084GtL7i0ssOKbX2gfYFosuQ==} + /@metaplex-foundation/mpl-token-metadata@2.13.0: + resolution: {integrity: sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==} dependencies: '@metaplex-foundation/beet': 0.7.1 '@metaplex-foundation/beet-solana': 0.4.0 '@metaplex-foundation/cusper': 0.0.2 - '@solana/spl-token': 0.3.8(@solana/web3.js@1.75.0) - '@solana/web3.js': 1.75.0 + '@solana/spl-token': 0.3.8(@solana/web3.js@1.78.3) + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 debug: 4.3.4 transitivePeerDependencies: @@ -1325,14 +1408,14 @@ packages: - utf-8-validate dev: true - /@noble/ed25519@1.7.3: - resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} - - /@noble/hashes@1.3.0: - resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} + /@noble/curves@1.1.0: + resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} + dependencies: + '@noble/hashes': 1.3.1 - /@noble/secp256k1@1.7.1: - resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + /@noble/hashes@1.3.1: + resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} + engines: {node: '>= 16'} /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1355,18 +1438,30 @@ packages: fastq: 1.15.0 dev: true + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.1 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.1 + dev: true + /@project-serum/anchor@0.24.2: resolution: {integrity: sha512-0/718g8/DnEuwAidUwh5wLYphUYXhUbiClkuRNhvNoa+1Y8a4g2tJyxoae+emV+PG/Gikd/QUBNMkIcimiIRTA==} engines: {node: '>=11'} dependencies: - '@project-serum/borsh': 0.2.5(@solana/web3.js@1.75.0) - '@solana/web3.js': 1.75.0 + '@project-serum/borsh': 0.2.5(@solana/web3.js@1.78.3) + '@solana/web3.js': 1.78.3 base64-js: 1.5.1 bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 5.3.1 - cross-fetch: 3.1.6 + cross-fetch: 3.1.8 crypto-hash: 1.3.0 eventemitter3: 4.0.7 js-sha256: 0.9.0 @@ -1376,7 +1471,6 @@ packages: transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate dev: true @@ -1384,14 +1478,14 @@ packages: resolution: {integrity: sha512-Nq+COIjE1135T7qfnOHEn7E0q39bQTgXLFk837/rgFe6Hkew9WML7eHsS+lSYD2p3OJaTiUOHTAq1lHy36oIqQ==} engines: {node: '>=11'} dependencies: - '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.75.0) - '@solana/web3.js': 1.75.0 + '@coral-xyz/borsh': 0.26.0(@solana/web3.js@1.78.3) + '@solana/web3.js': 1.78.3 base64-js: 1.5.1 bn.js: 5.2.1 bs58: 4.0.1 buffer-layout: 1.2.2 camelcase: 6.3.0 - cross-fetch: 3.1.6 + cross-fetch: 3.1.8 crypto-hash: 1.3.0 eventemitter3: 4.0.7 js-sha256: 0.9.0 @@ -1402,22 +1496,20 @@ packages: transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate dev: true - /@project-serum/borsh@0.2.5(@solana/web3.js@1.75.0): + /@project-serum/borsh@0.2.5(@solana/web3.js@1.78.3): resolution: {integrity: sha512-UmeUkUoKdQ7rhx6Leve1SssMR/Ghv8qrEiyywyxSWg7ooV7StdpPBhciiy5eB3T0qU1BXvdRNC8TdrkxK7WC5Q==} engines: {node: '>=10'} peerDependencies: '@solana/web3.js': ^1.2.0 dependencies: - '@solana/web3.js': 1.75.0 + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 buffer-layout: 1.2.2 - dev: true - /@quarryprotocol/quarry-sdk@5.3.0(@project-serum/anchor@0.26.0)(@saberhq/anchor-contrib@1.14.11)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0): + /@quarryprotocol/quarry-sdk@5.3.0(@project-serum/anchor@0.26.0)(@saberhq/anchor-contrib@1.14.11)(@saberhq/solana-contrib@1.14.11)(@saberhq/token-utils@1.14.11)(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0): resolution: {integrity: sha512-RgrGBHUJDBXzjrHaUlGJtbtz+KznzBkQKo7gdVREDHC8cWi2eDBA3JCy9vmlS2apBLqYh4YfsGP+HXDxgnu4IA==} peerDependencies: '@project-serum/anchor': '>=0.24' @@ -1429,18 +1521,18 @@ packages: jsbi: ^3 || ^4 dependencies: '@project-serum/anchor': 0.26.0 - '@saberhq/anchor-contrib': 1.14.11(@project-serum/anchor@0.26.0)(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@saberhq/token-utils': 1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0) - '@solana/web3.js': 1.75.0 + '@saberhq/anchor-contrib': 1.14.11(@project-serum/anchor@0.26.0)(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@saberhq/token-utils': 1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0) + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 jsbi: 4.3.0 superstruct: 0.16.7 tiny-invariant: 1.3.1 - tslib: 2.5.0 + tslib: 2.6.1 dev: true - /@saberhq/anchor-contrib@1.14.11(@project-serum/anchor@0.24.2)(@solana/web3.js@1.75.0)(bn.js@5.2.1): + /@saberhq/anchor-contrib@1.14.11(@project-serum/anchor@0.24.2)(@solana/web3.js@1.78.3)(bn.js@5.2.1): resolution: {integrity: sha512-6fOMC9XjuMSpGin/5HGqDita/dYzndjMMUNjht7yQZzD9638cdjrAutwZjvYwMUepKLdJ5CQV4bE74bSeMF9HQ==} peerDependencies: '@project-serum/anchor': ^0.22 || ^0.23 || ^0.24 @@ -1448,16 +1540,16 @@ packages: bn.js: ^4 || ^5 dependencies: '@project-serum/anchor': 0.24.2 - '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@solana/web3.js': 1.75.0 + '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 eventemitter3: 4.0.7 lodash.camelcase: 4.3.0 lodash.mapvalues: 4.6.0 - tslib: 2.5.0 + tslib: 2.6.1 dev: true - /@saberhq/anchor-contrib@1.14.11(@project-serum/anchor@0.26.0)(@solana/web3.js@1.75.0)(bn.js@5.2.1): + /@saberhq/anchor-contrib@1.14.11(@project-serum/anchor@0.26.0)(@solana/web3.js@1.78.3)(bn.js@5.2.1): resolution: {integrity: sha512-6fOMC9XjuMSpGin/5HGqDita/dYzndjMMUNjht7yQZzD9638cdjrAutwZjvYwMUepKLdJ5CQV4bE74bSeMF9HQ==} peerDependencies: '@project-serum/anchor': ^0.22 || ^0.23 || ^0.24 @@ -1465,22 +1557,22 @@ packages: bn.js: ^4 || ^5 dependencies: '@project-serum/anchor': 0.26.0 - '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1) - '@solana/web3.js': 1.75.0 + '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1) + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 eventemitter3: 4.0.7 lodash.camelcase: 4.3.0 lodash.mapvalues: 4.6.0 - tslib: 2.5.0 + tslib: 2.6.1 dev: true /@saberhq/option-utils@1.14.11: resolution: {integrity: sha512-v75bHrUYp791lGN6PnbX7eg8T8WbdGSX1y591IhC3WgZDdXPxC/lY1Puv/g9pXxytyCrftTLFehv8+2odMKsyw==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: true - /@saberhq/solana-contrib@1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1): + /@saberhq/solana-contrib@1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1): resolution: {integrity: sha512-HOEJpTZnSGmrfJG2gV18vQbtI14ET9l4/Q1yyPk4R2dkydxZIfBIPCI9SRWZ9g01/nuob3Fryd79Ca6QDk7qjw==} peerDependencies: '@solana/web3.js': ^1.42 @@ -1488,36 +1580,35 @@ packages: dependencies: '@saberhq/option-utils': 1.14.11 '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.75.0 + '@solana/web3.js': 1.78.3 '@types/promise-retry': 1.1.3 '@types/retry': 0.12.2 bn.js: 5.2.1 promise-retry: 2.0.1 retry: 0.13.1 tiny-invariant: 1.3.1 - tslib: 2.5.0 + tslib: 2.6.1 dev: true - /@saberhq/token-utils@1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1)(jsbi@4.3.0): + /@saberhq/token-utils@1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1)(jsbi@4.3.0): resolution: {integrity: sha512-C+K1IHQuLwG6APT8wbrlvJPM4arTcNHnnydqZbMpsi1Zyyis+UPM3n/PgHmyX2ydtQ+GzPMLFMgxahtjicEgXw==} peerDependencies: '@solana/web3.js': ^1.42 bn.js: ^4 || ^5 jsbi: ^3 || ^4 dependencies: - '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.75.0)(bn.js@5.2.1) + '@saberhq/solana-contrib': 1.14.11(@solana/web3.js@1.78.3)(bn.js@5.2.1) '@solana/buffer-layout': 4.0.1 '@solana/spl-token': 0.1.8 - '@solana/web3.js': 1.75.0 + '@solana/web3.js': 1.78.3 '@ubeswap/token-math': 5.2.1(jsbi@4.3.0) bn.js: 5.2.1 jsbi: 4.3.0 tiny-invariant: 1.3.1 - tslib: 2.5.0 + tslib: 2.6.1 transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate dev: true @@ -1558,13 +1649,12 @@ packages: engines: {node: '>= 10'} dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.75.0 + '@solana/web3.js': 1.78.3 bigint-buffer: 1.1.5 bignumber.js: 9.1.1 transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate /@solana/buffer-layout@4.0.1: @@ -1573,10 +1663,10 @@ packages: dependencies: buffer: 6.0.3 - /@solana/spl-governance@0.3.27: - resolution: {integrity: sha512-5qAgaOWXNNbfOAiBeX5GqX+ZahMGzm1s/kLADAVRWtPYI/vpwc8ENI5jpPOEWG5bgTnnBP+wLT9mgxgwoS4e+A==} + /@solana/spl-governance@0.3.28: + resolution: {integrity: sha512-CUi1hMvzId2rAtMFTlxMwOy0EmFeT0VcmiC+iQnDhRBuM8LLLvRrbTYBWZo3xIvtPQW9HfhVBoL7P/XNFIqYVQ==} dependencies: - '@solana/web3.js': 1.75.0 + '@solana/web3.js': 1.78.3 axios: 1.4.0 bignumber.js: 9.1.1 bn.js: 5.2.1 @@ -1587,7 +1677,21 @@ packages: - bufferutil - debug - encoding - - supports-color + - utf-8-validate + dev: false + + /@solana/spl-stake-pool@0.6.5: + resolution: {integrity: sha512-gAYjX4LlRem3Bje1csZOOBStX8wAH8b8tu4sublUTIoJxLMdEbXqnwc8RJ2lAsmFkjxxomEM9Hk65F8jcvv15A==} + dependencies: + '@project-serum/borsh': 0.2.5(@solana/web3.js@1.78.3) + '@solana/buffer-layout': 4.0.1 + '@solana/spl-token': 0.1.8 + '@solana/web3.js': 1.78.3 + bn.js: 5.2.1 + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding - utf-8-validate dev: false @@ -1595,8 +1699,8 @@ packages: resolution: {integrity: sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==} engines: {node: '>= 10'} dependencies: - '@babel/runtime': 7.21.5 - '@solana/web3.js': 1.75.0 + '@babel/runtime': 7.22.10 + '@solana/web3.js': 1.78.3 bn.js: 5.2.1 buffer: 6.0.3 buffer-layout: 1.2.2 @@ -1604,11 +1708,9 @@ packages: transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate - dev: true - /@solana/spl-token@0.3.8(@solana/web3.js@1.75.0): + /@solana/spl-token@0.3.8(@solana/web3.js@1.78.3): resolution: {integrity: sha512-ogwGDcunP9Lkj+9CODOWMiVJEdRtqHAtX2rWF62KxnnSWtMZtV9rDhTrZFshiyJmxDnRL/1nKE1yJHg4jjs3gg==} engines: {node: '>=16'} peerDependencies: @@ -1616,37 +1718,34 @@ packages: dependencies: '@solana/buffer-layout': 4.0.1 '@solana/buffer-layout-utils': 0.2.0 - '@solana/web3.js': 1.75.0 + '@solana/web3.js': 1.78.3 buffer: 6.0.3 transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate - /@solana/web3.js@1.75.0: - resolution: {integrity: sha512-rHQgdo1EWfb+nPUpHe4O7i8qJPELHKNR5PAZRK+a7XxiykqOfbaAlPt5boDWAGPnYbSv0ziWZv5mq9DlFaQCxg==} + /@solana/web3.js@1.78.3: + resolution: {integrity: sha512-qhpnyIlrj/4Czw1dBFZK6KgZBk5FwuJhvMl0C7m94jhl90yDC8b6w4svKwPjhB+OOrdQAzHyRp0+ocEs/Liw7w==} dependencies: - '@babel/runtime': 7.21.5 - '@noble/ed25519': 1.7.3 - '@noble/hashes': 1.3.0 - '@noble/secp256k1': 1.7.1 + '@babel/runtime': 7.22.10 + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.3.0 + 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: 3.7.0 - node-fetch: 2.6.9 + jayson: 4.1.0 + node-fetch: 2.6.12 rpc-websockets: 7.5.1 superstruct: 0.14.2 transitivePeerDependencies: - bufferutil - encoding - - supports-color - utf-8-validate /@tsconfig/node10@1.0.9: @@ -1694,8 +1793,8 @@ packages: '@babel/types': 7.22.5 dev: true - /@types/big.js@6.1.6: - resolution: {integrity: sha512-0r9J+Zz9rYm2hOTwiMAVkm3XFQ4u5uTK37xrQMhc9bysn/sf/okzovWMYYIBMFTn/yrEZ11pusgLEaoarTlQbA==} + /@types/big.js@6.2.0: + resolution: {integrity: sha512-ubLURWoc4tCw/8Yds0P3CE9cBG5q+aoycwWBiXXx4gp7XPYZy9ch0L9+Pv6osSoSRgvuQNqJdlwEhP5QhKKl6w==} dev: true /@types/bn.js@4.11.6: @@ -1709,12 +1808,6 @@ packages: '@types/node': 16.0.0 dev: true - /@types/bs58@4.0.1: - resolution: {integrity: sha512-yfAgiWgVLjFCmRv8zAcOIHywYATEwiTVccTLnRp6UxTNavT55M9d/uhK3T03St/+8/z/wW+CRjGKUNmEqoHHCA==} - dependencies: - base-x: 3.0.9 - dev: true - /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: @@ -1785,6 +1878,10 @@ packages: resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} dev: true + /@types/semver@7.5.0: + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + dev: true + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true @@ -1804,90 +1901,94 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.0.4): - resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} - engines: {node: ^10.12.0 || >=12.0.0} + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.0.4): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - '@typescript-eslint/parser': ^4.0.0 - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@5.0.4) - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.0.4) - '@typescript-eslint/scope-manager': 4.33.0 + '@eslint-community/regexpp': 4.6.2 + '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.46.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 7.32.0 - functional-red-black-tree: 1.0.1 + eslint: 8.46.0 + graphemer: 1.4.0 ignore: 5.2.4 - regexpp: 3.2.0 - semver: 7.5.1 + natural-compare-lite: 1.4.0 + semver: 7.5.4 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@5.0.4): - resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} - engines: {node: ^10.12.0 || >=12.0.0} + /@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.0.4): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: '*' + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@types/json-schema': 7.0.12 - '@typescript-eslint/scope-manager': 4.33.0 - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.0.4) - eslint: 7.32.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@7.32.0) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) + debug: 4.3.4 + eslint: 8.46.0 + typescript: 5.0.4 transitivePeerDependencies: - supports-color - - typescript dev: true - /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.0.4): - resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} - engines: {node: ^10.12.0 || >=12.0.0} + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/type-utils@5.62.0(eslint@8.46.0)(typescript@5.0.4): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + eslint: '*' typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 4.33.0 - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 5.59.11(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 7.32.0 + eslint: 8.46.0 + tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@4.33.0: - resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dependencies: - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/visitor-keys': 4.33.0 - dev: true - - /@typescript-eslint/types@4.33.0: - resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/types@5.59.1: + resolution: {integrity: sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@5.59.11: - resolution: {integrity: sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==} + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.11(typescript@5.0.4): - resolution: {integrity: sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==} + /@typescript-eslint/typescript-estree@5.59.1(typescript@5.0.4): + resolution: {integrity: sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1895,32 +1996,52 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.59.11 - '@typescript-eslint/visitor-keys': 5.59.11 + '@typescript-eslint/types': 5.59.1 + '@typescript-eslint/visitor-keys': 5.59.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.1 + semver: 7.5.4 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/visitor-keys@4.33.0: - resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/utils@5.62.0(eslint@8.46.0)(typescript@5.0.4): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4) + eslint: 8.46.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.59.1: + resolution: {integrity: sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 4.33.0 - eslint-visitor-keys: 2.1.0 + '@typescript-eslint/types': 5.59.1 + eslint-visitor-keys: 3.4.2 dev: true - /@typescript-eslint/visitor-keys@5.59.11: - resolution: {integrity: sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==} + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.11 - eslint-visitor-keys: 3.4.1 + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.2 dev: true /@ubeswap/token-math@5.2.1(jsbi@4.3.0): @@ -1929,12 +2050,12 @@ packages: peerDependencies: jsbi: ^3 || ^4 dependencies: - '@types/big.js': 6.1.6 + '@types/big.js': 6.2.0 big.js: 6.2.1 decimal.js-light: 2.5.1 jsbi: 4.3.0 tiny-invariant: 1.3.1 - tslib: 2.5.0 + tslib: 2.6.1 dev: true /JSONStream@1.3.5: @@ -1949,14 +2070,13 @@ packages: engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 - dev: false - /acorn-jsx@5.3.2(acorn@7.4.1): + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 7.4.1 + acorn: 8.10.0 dev: true /acorn-walk@8.2.0: @@ -1964,27 +2084,17 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true dev: true - /agentkeepalive@4.3.0: - resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} + /agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4 - depd: 2.0.0 humanize-ms: 1.2.1 - transitivePeerDependencies: - - supports-color /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} @@ -2003,20 +2113,6 @@ packages: uri-js: 4.4.1 dev: true - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: true - /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -2084,6 +2180,10 @@ packages: sprintf-js: 1.0.3 dev: true + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -2105,7 +2205,6 @@ packages: /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - dev: false /axios@1.4.0: resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} @@ -2241,6 +2340,11 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + /big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: true + /big.js@6.2.1: resolution: {integrity: sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==} dev: true @@ -2262,7 +2366,6 @@ packages: /bip32-path@0.4.2: resolution: {integrity: sha512-ZBMCELjJfcNMkz5bDuJ1WrYvjlhEF5k6mQ8vUr4N7MbVRsXei7ZOg8VhhwMfNiW68NWmLkgkc6WvTickrLGprQ==} - dev: false /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -2270,7 +2373,6 @@ packages: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - dev: false /bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} @@ -2290,6 +2392,13 @@ packages: bs58: 4.0.1 text-encoding-utf-8: 1.0.2 + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.51 + dev: true + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -2357,7 +2466,6 @@ packages: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -2372,6 +2480,13 @@ packages: dependencies: node-gyp-build: 4.6.0 + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: true + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2432,7 +2547,6 @@ packages: /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: false /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} @@ -2553,10 +2667,10 @@ packages: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true - /cross-fetch@3.1.6: - resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==} + /cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} dependencies: - node-fetch: 2.6.11 + node-fetch: 2.6.12 transitivePeerDependencies: - encoding @@ -2587,6 +2701,7 @@ packages: optional: true dependencies: ms: 2.1.2 + dev: true /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -2610,7 +2725,6 @@ packages: engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 - dev: false /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} @@ -2619,7 +2733,6 @@ packages: /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - dev: false /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -2630,6 +2743,29 @@ packages: engines: {node: '>=0.10.0'} dev: true + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.1.1 + titleize: 3.0.0 + dev: true + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + /delay@5.0.0: resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} engines: {node: '>=10'} @@ -2638,14 +2774,9 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - /detect-libc@2.0.1: - resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} - dev: false /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} @@ -2685,12 +2816,11 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.1 /dotenv@10.0.0: resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} engines: {node: '>=10'} - dev: true /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -2722,14 +2852,6 @@ packages: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - dev: false - - /enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.3 - dev: true /err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} @@ -2769,34 +2891,34 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@7.2.0(eslint@7.32.0): - resolution: {integrity: sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==} + /eslint-config-prettier@8.10.0(eslint@8.46.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 7.32.0 + eslint: 8.46.0 dev: true - /eslint-plugin-es@3.0.1(eslint@7.32.0): + /eslint-plugin-es@3.0.1(eslint@8.46.0): resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 7.32.0 + eslint: 8.46.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true - /eslint-plugin-node@11.1.0(eslint@7.32.0): + /eslint-plugin-node@11.1.0(eslint@8.46.0): resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=5.16.0' dependencies: - eslint: 7.32.0 - eslint-plugin-es: 3.0.1(eslint@7.32.0) + eslint: 8.46.0 + eslint-plugin-es: 3.0.1(eslint@8.46.0) eslint-utils: 2.1.0 ignore: 5.2.4 minimatch: 3.1.2 @@ -2804,21 +2926,25 @@ packages: semver: 6.3.0 dev: true - /eslint-plugin-prettier@3.4.1(eslint-config-prettier@7.2.0)(eslint@7.32.0)(prettier@2.8.8): - resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} - engines: {node: '>=6.0.0'} + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.10.0)(eslint@8.46.0)(prettier@3.0.1): + resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: '>=5.0.0' + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' eslint-config-prettier: '*' - prettier: '>=1.13.0' + prettier: '>=3.0.0' peerDependenciesMeta: + '@types/eslint': + optional: true eslint-config-prettier: optional: true dependencies: - eslint: 7.32.0 - eslint-config-prettier: 7.2.0(eslint@7.32.0) - prettier: 2.8.8 + eslint: 8.46.0 + eslint-config-prettier: 8.10.0(eslint@8.46.0) + prettier: 3.0.1 prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 dev: true /eslint-scope@5.1.1: @@ -2829,6 +2955,14 @@ packages: estraverse: 4.3.0 dev: true + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + /eslint-utils@2.1.0: resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} engines: {node: '>=6'} @@ -2836,87 +2970,69 @@ packages: eslint-visitor-keys: 1.3.0 dev: true - /eslint-utils@3.0.0(eslint@7.32.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 7.32.0 - eslint-visitor-keys: 2.1.0 - dev: true - /eslint-visitor-keys@1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} dev: true - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + /eslint-visitor-keys@3.4.2: + resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@7.32.0: - resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} - engines: {node: ^10.12.0 || >=12.0.0} + /eslint@8.46.0: + resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@babel/code-frame': 7.12.11 - '@eslint/eslintrc': 0.4.3 - '@humanwhocodes/config-array': 0.5.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/regexpp': 4.6.2 + '@eslint/eslintrc': 2.1.1 + '@eslint/js': 8.46.0 + '@humanwhocodes/config-array': 0.11.10 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 doctrine: 3.0.0 - enquirer: 2.3.6 escape-string-regexp: 4.0.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - eslint-visitor-keys: 2.1.0 - espree: 7.3.1 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.2 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 5.1.2 + find-up: 5.0.0 + glob-parent: 6.0.2 globals: 13.20.0 - ignore: 4.0.6 - import-fresh: 3.3.0 + graphemer: 1.4.0 + ignore: 5.2.4 imurmurhash: 0.1.4 is-glob: 4.0.3 - js-yaml: 3.14.1 + 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.1 - progress: 2.0.3 - regexpp: 3.2.0 - semver: 7.5.1 + optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - table: 6.8.1 text-table: 0.2.0 - v8-compile-cache: 2.3.0 transitivePeerDependencies: - supports-color dev: true - /espree@7.3.1: - resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} - engines: {node: ^10.12.0 || >=12.0.0} + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) - eslint-visitor-keys: 1.3.0 + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.2 dev: true /esprima@4.0.1: @@ -2957,7 +3073,6 @@ packages: /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - dev: false /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -2965,7 +3080,6 @@ packages: /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - dev: false /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} @@ -3005,7 +3119,6 @@ packages: /expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - dev: false /expand-tilde@2.0.2: resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} @@ -3060,8 +3173,8 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3079,10 +3192,9 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fast-redact@3.2.0: - resolution: {integrity: sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==} + /fast-redact@3.3.0: + resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} engines: {node: '>=6'} - dev: false /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} @@ -3135,6 +3247,14 @@ packages: path-exists: 4.0.0 dev: true + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -3166,7 +3286,6 @@ packages: /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: false /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -3183,10 +3302,6 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - dev: true - /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -3209,7 +3324,6 @@ packages: /github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - dev: false /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -3218,6 +3332,13 @@ packages: is-glob: 4.0.3 dev: true + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -3258,7 +3379,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -3268,30 +3389,35 @@ packages: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /gts@3.1.1(typescript@5.0.4): - resolution: {integrity: sha512-Jw44aBbzMnd1vtZs7tZt3LMstKQukCBg7N4CKVGzviIQ45Cz5b9lxDJGXVKj/9ySuGv6TYEeijZJGbiiVcM27w==} - engines: {node: '>=10'} + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /gts@5.0.0(typescript@5.0.4): + resolution: {integrity: sha512-Ce+etWLBS+kGVruPtZEspzTRBykhA+pDxeAm3majFoRKs2REDM1MLVhbkloeWiB1LSQWHKmL8HU1KXEdOO353A==} + engines: {node: '>=14'} hasBin: true peerDependencies: typescript: '>=3' dependencies: - '@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.0.4) - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.0.4) chalk: 4.1.2 - eslint: 7.32.0 - eslint-config-prettier: 7.2.0(eslint@7.32.0) - eslint-plugin-node: 11.1.0(eslint@7.32.0) - eslint-plugin-prettier: 3.4.1(eslint-config-prettier@7.2.0)(eslint@7.32.0)(prettier@2.8.8) + eslint: 8.46.0 + eslint-config-prettier: 8.10.0(eslint@8.46.0) + eslint-plugin-node: 11.1.0(eslint@8.46.0) + eslint-plugin-prettier: 5.0.0(eslint-config-prettier@8.10.0)(eslint@8.46.0)(prettier@3.0.1) execa: 5.1.1 inquirer: 7.3.3 json5: 2.2.3 meow: 9.0.0 ncp: 2.0.0 - prettier: 2.8.8 + prettier: 3.0.1 rimraf: 3.0.2 typescript: 5.0.4 - write-file-atomic: 3.0.3 + write-file-atomic: 4.0.2 transitivePeerDependencies: + - '@types/eslint' - supports-color dev: true @@ -3358,7 +3484,7 @@ packages: /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: - ms: 2.1.3 + ms: 2.1.2 /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} @@ -3376,11 +3502,6 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - dev: true - /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -3424,7 +3545,6 @@ packages: /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: false /inquirer@7.3.3: resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} @@ -3455,6 +3575,18 @@ packages: has: 1.0.3 dev: true + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3482,11 +3614,24 @@ packages: is-extglob: 2.1.1 dev: true + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -3502,8 +3647,11 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 dev: true /isexe@2.0.0: @@ -3563,8 +3711,8 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jayson@3.7.0: - resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==} + /jayson@4.1.0: + resolution: {integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==} engines: {node: '>=8'} hasBin: true dependencies: @@ -3578,7 +3726,6 @@ packages: eyes: 0.1.8 isomorphic-ws: 4.0.1(ws@7.5.9) json-stringify-safe: 5.0.1 - lodash: 4.17.21 uuid: 8.3.2 ws: 7.5.9 transitivePeerDependencies: @@ -4241,7 +4388,7 @@ packages: jest-util: 28.1.3 natural-compare: 1.4.0 pretty-format: 28.1.3 - semver: 7.5.1 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true @@ -4272,7 +4419,7 @@ packages: jest-util: 29.5.0 natural-compare: 1.4.0 pretty-format: 29.5.0 - semver: 7.5.1 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true @@ -4432,6 +4579,13 @@ packages: esprima: 4.0.1 dev: true + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + /jsbi@4.3.0: resolution: {integrity: sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==} @@ -4449,10 +4603,6 @@ packages: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true - /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true @@ -4551,6 +4701,13 @@ packages: p-locate: 4.1.0 dev: true + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + /lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: true @@ -4567,12 +4724,9 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - dev: true - /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true /log-update@4.0.0: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} @@ -4587,7 +4741,7 @@ packages: /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -4686,7 +4840,6 @@ packages: /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - dev: false /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} @@ -4717,18 +4870,13 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: false /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - dev: false /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true @@ -4743,7 +4891,10 @@ packages: /napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - dev: false + + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -4758,32 +4909,19 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.5.0 + tslib: 2.6.1 /node-abi@3.45.0: resolution: {integrity: sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==} engines: {node: '>=10'} dependencies: - semver: 7.5.1 - dev: false + semver: 7.5.4 /node-addon-api@3.2.1: resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} - dev: false - - /node-fetch@2.6.11: - resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - /node-fetch@2.6.9: - resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} + /node-fetch@2.6.12: + resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -4806,7 +4944,6 @@ packages: bindings: 1.5.0 node-addon-api: 3.2.1 prebuild-install: 7.1.1 - dev: false /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -4831,7 +4968,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.12.1 - semver: 7.5.1 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -4865,7 +5002,6 @@ packages: /on-exit-leak-free@2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} - dev: false /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -4886,16 +5022,26 @@ packages: mimic-fn: 4.0.0 dev: true - /optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.3 dev: true /os-tmpdir@1.0.2: @@ -4924,6 +5070,13 @@ packages: p-limit: 2.3.0 dev: true + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} @@ -5007,12 +5160,11 @@ packages: /pino-abstract-transport@1.0.0: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} dependencies: - readable-stream: 4.4.0 + readable-stream: 4.4.2 split2: 4.2.0 - dev: false - /pino-pretty@10.0.0: - resolution: {integrity: sha512-zKFjYXBzLaLTEAN1ayKpHXtL5UeRQC7R3lvhKe7fWs7hIVEjKGG/qIXwQt9HmeUp71ogUd/YcW+LmMwRp4KT6Q==} + /pino-pretty@10.2.0: + resolution: {integrity: sha512-tRvpyEmGtc2D+Lr3FulIZ+R1baggQ4S3xD2Ar93KixFEDx6SEAUP3W5aYuEw1C73d6ROrNcB2IXLteW8itlwhA==} hasBin: true dependencies: colorette: 2.0.20 @@ -5025,32 +5177,30 @@ packages: on-exit-leak-free: 2.1.0 pino-abstract-transport: 1.0.0 pump: 3.0.0 - readable-stream: 4.4.0 + readable-stream: 4.4.2 secure-json-parse: 2.7.0 sonic-boom: 3.3.0 strip-json-comments: 3.1.1 dev: false - /pino-std-serializers@6.2.1: - resolution: {integrity: sha512-wHuWB+CvSVb2XqXM0W/WOYUkVSPbiJb9S5fNB7TBhd8s892Xq910bRxwHtC4l71hgztObTjXL6ZheZXFjhDrDQ==} - dev: false + /pino-std-serializers@6.2.2: + resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} - /pino@8.14.1: - resolution: {integrity: sha512-8LYNv7BKWXSfS+k6oEc6occy5La+q2sPwU3q2ljTX5AZk7v+5kND2o5W794FyRaqha6DJajmkNRsWtPpFyMUdw==} + /pino@8.15.0: + resolution: {integrity: sha512-olUADJByk4twxccmAxb1RiGKOSvddHugCV3wkqjyv+3Sooa2KLrmXrKEWOKi0XPCLasRR5jBXxioE1jxUa4KzQ==} hasBin: true dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.2.0 + fast-redact: 3.3.0 on-exit-leak-free: 2.1.0 pino-abstract-transport: 1.0.0 - pino-std-serializers: 6.2.1 + pino-std-serializers: 6.2.2 process-warning: 2.2.0 quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.4.3 sonic-boom: 3.3.0 thread-stream: 2.3.0 - dev: false /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} @@ -5069,7 +5219,7 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - detect-libc: 2.0.1 + detect-libc: 2.0.2 expand-template: 2.0.3 github-from-package: 0.0.0 minimist: 1.2.8 @@ -5081,7 +5231,6 @@ packages: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 - dev: false /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -5095,9 +5244,9 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} + /prettier@3.0.1: + resolution: {integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==} + engines: {node: '>=14'} hasBin: true dev: true @@ -5122,17 +5271,10 @@ packages: /process-warning@2.2.0: resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} - dev: false /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - dev: false - - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: true /promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} @@ -5158,7 +5300,6 @@ packages: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: false /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} @@ -5175,7 +5316,6 @@ packages: /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - dev: false /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} @@ -5190,7 +5330,6 @@ packages: ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: false /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} @@ -5222,22 +5361,20 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: false - /readable-stream@4.4.0: - resolution: {integrity: sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==} + /readable-stream@4.4.2: + resolution: {integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: abort-controller: 3.0.0 buffer: 6.0.3 events: 3.3.0 process: 0.11.10 - dev: false + string_decoder: 1.3.0 /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} - dev: false /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} @@ -5247,8 +5384,8 @@ packages: strip-indent: 3.0.0 dev: true - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} /regexpp@3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} @@ -5260,11 +5397,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true - /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -5338,7 +5470,7 @@ packages: /rpc-websockets@7.5.1: resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.22.10 eventemitter3: 4.0.7 uuid: 8.3.2 ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) @@ -5346,6 +5478,13 @@ packages: bufferutil: 4.0.7 utf-8-validate: 5.0.10 + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -5366,7 +5505,7 @@ packages: /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: true /safe-buffer@5.2.1: @@ -5375,7 +5514,6 @@ packages: /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} - dev: false /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -5395,8 +5533,8 @@ packages: hasBin: true dev: true - /semver@7.5.1: - resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -5420,7 +5558,6 @@ packages: /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: false /simple-get@4.0.1: resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} @@ -5428,7 +5565,6 @@ packages: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 - dev: false /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -5469,13 +5605,12 @@ packages: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.1 /sonic-boom@3.3.0: resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} dependencies: atomic-sleep: 1.0.0 - dev: false /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} @@ -5521,7 +5656,6 @@ packages: /split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} - dev: false /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -5569,7 +5703,6 @@ packages: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - dev: false /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} @@ -5610,7 +5743,6 @@ packages: /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - dev: false /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} @@ -5661,15 +5793,12 @@ packages: engines: {node: '>= 0.4'} dev: true - /table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} - engines: {node: '>=10.0.0'} + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} dependencies: - ajv: 8.12.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 + '@pkgr/utils': 2.4.2 + tslib: 2.6.1 dev: true /tar-fs@2.1.1: @@ -5679,7 +5808,6 @@ packages: mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 2.2.0 - dev: false /tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} @@ -5690,7 +5818,6 @@ packages: fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 - dev: false /terminal-link@2.1.1: resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} @@ -5733,7 +5860,6 @@ packages: resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} dependencies: real-require: 0.2.0 - dev: false /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -5742,6 +5868,11 @@ packages: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: true + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: true + /tmp-promise@3.0.3: resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} dependencies: @@ -5818,7 +5949,7 @@ packages: json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.5.1 + semver: 7.5.4 typescript: 5.0.4 yargs-parser: 21.1.1 dev: true @@ -5843,7 +5974,7 @@ packages: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 16.0.0 - acorn: 8.8.2 + acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -5857,8 +5988,8 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib@2.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + /tslib@2.6.1: + resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} /tsutils@3.21.0(typescript@5.0.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -5874,7 +6005,6 @@ packages: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 - dev: false /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -5913,18 +6043,17 @@ packages: engines: {node: '>=8'} dev: true - /typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: true - /typescript@5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} hasBin: true dev: true + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + /update-browserslist-db@1.0.11(browserslist@4.21.9): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -5951,7 +6080,6 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} @@ -5961,10 +6089,6 @@ packages: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true - /v8-compile-cache@2.3.0: - resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} - dev: true - /v8-to-istanbul@9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} @@ -6004,11 +6128,6 @@ packages: isexe: 2.0.0 dev: true - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - dev: true - /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -6030,15 +6149,6 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: true - /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..4340350 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - 'packages/*' \ No newline at end of file diff --git a/src/context.ts b/src/context.ts deleted file mode 100644 index 52f813c..0000000 --- a/src/context.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { Commitment, Connection, clusterApiUrl, Cluster } from '@solana/web3.js' -import { Logger } from 'pino' -import { Wallet } from '@coral-xyz/anchor/dist/cjs/provider' -import { MarinadeConfig } from '@marinade.finance/marinade-ts-sdk' - -export interface Context { - connection: Connection - walletSigner: Wallet - logger: Logger - skipPreflight: boolean - simulate: boolean - printOnly: boolean - command: string - marinadeDefaults: MarinadeConfig -} - -const context: { - connection: Connection | null - walletSigner: Wallet | null - logger: Logger | null - skipPreflight: boolean - simulate: boolean - printOnly: boolean - command: string - marinadeDefaults: MarinadeConfig -} = { - connection: null, - walletSigner: null, - logger: null, - skipPreflight: false, - simulate: false, - printOnly: false, - command: '', - marinadeDefaults: new MarinadeConfig(), -} - -function getClusterUrl(url: string): string { - let clusterUrl = - url === 'd' - ? 'devnet' - : url === 't' - ? 'testnet' - : url === 'm' || url === 'mainnet' - ? 'mainnet-beta' - : url === 'l' || url === 'localnet' || url === 'localhost' - ? 'http://localhost:8899' - : url - - try { - clusterUrl = clusterApiUrl(clusterUrl as Cluster) - } catch (e) { - // ignore - } - return clusterUrl -} - -function parseCommitment(commitment: string): Commitment { - if (commitment === 'processed') { - return 'processed' - } else if (commitment === 'confirmed') { - return 'confirmed' - } else if (commitment === 'finalized') { - return 'finalized' - } else if (commitment === 'recent') { - return 'recent' - } else if (commitment === 'single') { - return 'single' - } else if (commitment === 'singleGossip') { - return 'singleGossip' - } else if (commitment === 'root') { - return 'root' - } else if (commitment === 'max') { - return 'max' - } else { - throw new Error( - 'Invalid value of --commitment: ' + - commitment + - '. Permitted values: processed, confirmed, finalized, recent, single, singleGossip, root, max' - ) - } -} - -export const setContext = ({ - url, - walletSigner, - logger, - commitment, - skipPreflight, - simulate, - printOnly, - command, -}: { - url: string - walletSigner: Wallet - simulate: boolean - printOnly: boolean - skipPreflight: boolean - commitment: string - logger: Logger - command: string -}) => { - context.connection = new Connection( - getClusterUrl(url), - parseCommitment(commitment) - ) - context.walletSigner = walletSigner - context.skipPreflight = skipPreflight - context.simulate = simulate - context.logger = logger - context.printOnly = printOnly - context.command = command -} - -export const getContext = (): Context => { - return context as Context -} diff --git a/tsconfig.json b/tsconfig.json index f4b6c7f..de09206 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,20 +1,12 @@ { - "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./node_modules/gts/tsconfig-google.json", "compilerOptions": { - "lib": ["es2021"], - "target": "ES6", - "module": "CommonJS", "rootDir": ".", "outDir": "./dist", - "moduleResolution": "node", - "declaration": true, - "sourceMap": true, - "strict": true, "esModuleInterop": true, + "resolveJsonModule": true, "skipLibCheck": true, - "forceConsistentCasingInFileNames": false, - "experimentalDecorators": true, - "resolveJsonModule": true + "sourceMap": true }, - "exclude": ["./dist", "./test", "./node_modules", "./fixtures"] + "include": ["packages/*/package.json", "packages/*/src/**/*.ts"] } \ No newline at end of file