diff --git a/README.md b/README.md index 6c078bba0..cf688c198 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,6 @@ yarn add \ @near-wallet-selector/ramper-wallet \ @near-wallet-selector/near-mobile-wallet \ @near-wallet-selector/bitget-wallet \ - @near-wallet-selector/okx-wallet \ @near-wallet-selector/mintbase-wallet \ @near-wallet-selector/bitte-wallet \ @near-wallet-selector/ethereum-wallets @@ -104,7 +103,6 @@ npm install \ @near-wallet-selector/ramper-wallet \ @near-wallet-selector/near-mobile-wallet \ @near-wallet-selector/bitget-wallet \ - @near-wallet-selector/okx-wallet \ @near-wallet-selector/mintbase-wallet \ @near-wallet-selector/bitte-wallet \ @near-wallet-selector/ethereum-wallets diff --git a/examples/angular/src/app/pages/wallet-selector/wallet-selector.component.ts b/examples/angular/src/app/pages/wallet-selector/wallet-selector.component.ts index ae071e9f1..74be6a265 100644 --- a/examples/angular/src/app/pages/wallet-selector/wallet-selector.component.ts +++ b/examples/angular/src/app/pages/wallet-selector/wallet-selector.component.ts @@ -46,7 +46,7 @@ const projectId = "30147604c5f01d0bc4482ab0665b5697"; // TODO: Replace with the NEAR chain after the protocol upgrade. const near: Chain = { id: 398, - name: "NEAR wallet playground", + name: "NEAR Protocol Testnet", nativeCurrency: { decimals: 18, name: "NEAR", @@ -156,7 +156,7 @@ export class WalletSelectorComponent implements OnInit { setupNearMobileWallet(), setupMintbaseWallet({ contractId: CONTRACT_ID }), setupBitteWallet({ contractId: CONTRACT_ID }), - setupEthereumWallets({ wagmiConfig, web3Modal, devMode: true }), + setupEthereumWallets({ wagmiConfig, web3Modal }), ], }); diff --git a/examples/react/contexts/WalletSelectorContext.tsx b/examples/react/contexts/WalletSelectorContext.tsx index 8bda704c2..5fadd74e9 100644 --- a/examples/react/contexts/WalletSelectorContext.tsx +++ b/examples/react/contexts/WalletSelectorContext.tsx @@ -77,7 +77,7 @@ const projectId = "30147604c5f01d0bc4482ab0665b5697"; // TODO: Replace with the NEAR chain after the protocol upgrade. const near: Chain = { id: 398, - name: "NEAR wallet playground", + name: "NEAR Protocol Testnet", nativeCurrency: { decimals: 18, name: "NEAR", @@ -188,7 +188,7 @@ export const WalletSelectorContextProvider: React.FC<{ setupNearMobileWallet(), setupMintbaseWallet({ contractId: CONTRACT_ID }), setupBitteWallet({ contractId: CONTRACT_ID }), - setupEthereumWallets({ wagmiConfig, web3Modal, devMode: true }), + setupEthereumWallets({ wagmiConfig, web3Modal }), ], }); const _modal = setupModal(_selector, { diff --git a/package.json b/package.json index bda89d9ce..20f8975a7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "near-wallet-selector", - "version": "8.9.12", + "version": "8.9.13", "description": "NEAR Wallet Selector makes it easy for users to interact with your dApp by providing an abstraction over various wallets within the NEAR ecosystem", "keywords": [ "near", @@ -44,6 +44,7 @@ "scripts": { "build:account-export": "nx run-many --target=build --projects=account-export --configuration=production", "build:all": "nx run-many --target=build --all --exclude=react,angular --configuration=production && node ./scripts/update-package-json.js", + "build:arepa-wallet": "nx run-many --target=build --projects=arepa-wallet --configuration=production", "build:bitget-wallet": "nx run-many --target=build --projects=bitget-wallet --configuration=production", "build:core": "nx run-many --target=build --projects=core --configuration=production", "build:here-wallet": "nx run-many --target=build --projects=here-wallet --configuration=production", @@ -91,12 +92,12 @@ "@angular/platform-browser-dynamic": "16.1.9", "@angular/router": "16.1.9", "@here-wallet/core": "3.3.1", - "@jscutlery/semver": "5.2.2", + "@jscutlery/semver": "5.3.1", "@ledgerhq/hw-transport": "6.30.3", "@ledgerhq/hw-transport-webhid": "6.29.2", "@metamask/detect-provider": "2.0.0", "@meteorwallet/sdk": "1.0.9", - "@mintbase-js/wallet": "0.6.0-beta.10", + "@mintbase-js/wallet": "0.6.1", "@near-snap/sdk": "0.6.0", "@noble/ciphers": "0.5.3", "@noble/hashes": "1.4.0", @@ -106,7 +107,7 @@ "@walletconnect/modal": "2.6.2", "@walletconnect/sign-client": "2.13.0", "@web3modal/wagmi": "5.0.6", - "better-sqlite3": "11.1.2", + "better-sqlite3": "11.2.1", "big.js": "6.2.1", "borsh": "0.7.0", "browserify-fs": "1.0.0", @@ -122,7 +123,7 @@ "near-seed-phrase": "0.2.0", "next": "13.3.0", "ngx-deploy-npm": "7.1.0", - "qrcode": "1.5.3", + "qrcode": "1.5.4", "react": "18.2.0", "react-dom": "18.2.0", "react-qr-code": "2.0.15", @@ -130,7 +131,7 @@ "rxjs": "7.8.1", "stream-browserify": "3.0.0", "stream-http": "3.2.0", - "tslib": "2.6.3", + "tslib": "2.7.0", "url": "0.11.0", "viem": "2.16.2", "wagmi": "2.10.9", diff --git a/packages/account-export/package.json b/packages/account-export/package.json index db9b70777..f32408578 100644 --- a/packages/account-export/package.json +++ b/packages/account-export/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/account-export", - "version": "8.9.12", + "version": "8.9.13", "description": "This is the Export Selector UI package for NEAR Wallet Selector.", "keywords": [ "near", @@ -19,5 +19,8 @@ "bugs": { "url": "https://github.com/near/wallet-selector/issues" }, - "homepage": "https://github.com/near/wallet-selector/tree/magin/packages/account-export" + "homepage": "https://github.com/near/wallet-selector/tree/magin/packages/account-export", + "peerDependencies": { + "near-api-js": "4.0.3" + } } diff --git a/packages/arepa-wallet/.babelrc b/packages/arepa-wallet/.babelrc new file mode 100644 index 000000000..b63f0528f --- /dev/null +++ b/packages/arepa-wallet/.babelrc @@ -0,0 +1,10 @@ +{ + "presets": [ + [ + "@nrwl/js/babel", + { + "useBuiltIns": "usage" + } + ] + ] +} diff --git a/packages/arepa-wallet/.eslintrc.json b/packages/arepa-wallet/.eslintrc.json new file mode 100644 index 000000000..9d9c0db55 --- /dev/null +++ b/packages/arepa-wallet/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/packages/arepa-wallet/README.md b/packages/arepa-wallet/README.md new file mode 100644 index 000000000..620398a03 --- /dev/null +++ b/packages/arepa-wallet/README.md @@ -0,0 +1,65 @@ +# @near-wallet-selector/my-near-wallet + +This is the [Arepa Wallet](https://mi.arepa.digital/) package for NEAR Wallet Selector. + +## Installation and Usage + +The easiest way to use this package is to install it from the NPM registry, this package requires `near-api-js` v1.0.0 or above: + +```bash +# Using Yarn +yarn add near-api-js + +# Using NPM. +npm install near-api-js +``` +```bash +# Using Yarn +yarn add @near-wallet-selector/arepa-wallet + +# Using NPM. +npm install @near-wallet-selector/arepa-wallet +``` + +Then use it in your dApp: + +```ts +import { setupWalletSelector } from "@near-wallet-selector/core"; +import { setupArepaWallet } from "@near-wallet-selector/arepa-wallet"; + +// My NEAR Wallet for Wallet Selector can be setup without any params or it can take few optional params, see options below. +const arepaWallet = setupArepaWallet({ + walletUrl: "https://develop.globaldv.tech/wallet-arepa/", + iconUrl: "https://" // optional +}); + +const selector = await setupWalletSelector({ + network: "testnet", + modules: [arepaWallet], +}); +``` + +## Options + +- `walletUrl` (`string?`): Wallet URL used to redirect when signing transactions. This parameter is required for custom network configuration. +- `iconUrl`: (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/arepa-wallet-icon.png`. +- `deprecated`: (`boolean?`): Deprecated is optional. Default is `false`. +- `successUrl`: (`string?`): SuccessUrl is optional. Default is `''` (empty string). +- `failureUrl`: (`string?`): FailureUrl is optional. Default is `''` (empty string). + +## Assets + +Assets such as icons can be found in the `/assets` directory of the package. Below is an example using Webpack: + +```ts +import { setupMyNearWallet } from "@near-wallet-selector/arepa-wallet"; +import arepaWalletIconUrl from "@near-wallet-selector/arepa-wallet/assets/arepa-wallet-icon.png"; + +const arepaWallet = setupArepaWallet({ + iconUrl: arepaWalletIconUrl +}); +``` + +## License + +This repository is distributed under the terms of both the MIT license and the Apache License (Version 2.0). diff --git a/packages/arepa-wallet/assets/arepa-wallet-icon.png b/packages/arepa-wallet/assets/arepa-wallet-icon.png new file mode 100644 index 000000000..20705413c Binary files /dev/null and b/packages/arepa-wallet/assets/arepa-wallet-icon.png differ diff --git a/packages/arepa-wallet/jest.config.js b/packages/arepa-wallet/jest.config.js new file mode 100644 index 000000000..fa21e8daf --- /dev/null +++ b/packages/arepa-wallet/jest.config.js @@ -0,0 +1,14 @@ +module.exports = { + displayName: "arepa-wallet", + preset: "../../jest.preset.js", + globals: { + "ts-jest": { + tsconfig: "/tsconfig.spec.json", + }, + }, + transform: { + "^.+\\.[tj]sx?$": "ts-jest", + }, + moduleFileExtensions: ["ts", "tsx", "js", "jsx"], + coverageDirectory: "../../coverage/packages/arepa-wallet", +}; diff --git a/packages/arepa-wallet/jest.config.ts b/packages/arepa-wallet/jest.config.ts new file mode 100644 index 000000000..531d03520 --- /dev/null +++ b/packages/arepa-wallet/jest.config.ts @@ -0,0 +1,16 @@ +/* eslint-disable */ +export default { + displayName: "arepa-wallet", + preset: "../../jest.preset.js", + globals: {}, + transform: { + "^.+\\.[tj]s$": [ + "ts-jest", + { + tsconfig: "/tsconfig.spec.json", + }, + ], + }, + moduleFileExtensions: ["ts", "tsx", "js", "jsx"], + coverageDirectory: "../../coverage/packages/arepa-wallet", +}; diff --git a/packages/arepa-wallet/package.json b/packages/arepa-wallet/package.json new file mode 100644 index 000000000..d88a31de2 --- /dev/null +++ b/packages/arepa-wallet/package.json @@ -0,0 +1,27 @@ +{ + "name": "@near-wallet-selector/arepa-wallet", + "version": "8.9.13", + "description": "Arepa Wallet package for NEAR Wallet Selector.", + "keywords": [ + "near", + "blockchain", + "wallets", + "dapps", + "near-protocol", + "near-blockchain", + "wallet selector", + "browser wallet", + "arepa Wallet" + ], + "repository": { + "type": "git", + "url": "https://github.com/near/wallet-selector.git" + }, + "bugs": { + "url": "https://github.com/near/wallet-selector/issues" + }, + "homepage": "https://github.com/near/wallet-selector/tree/main/packages/arepa-wallet", + "peerDependencies": { + "near-api-js": "4.0.3" + } +} diff --git a/packages/arepa-wallet/project.json b/packages/arepa-wallet/project.json new file mode 100644 index 000000000..877484034 --- /dev/null +++ b/packages/arepa-wallet/project.json @@ -0,0 +1,56 @@ +{ + "name": "arepa-wallet", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/arepa-wallet/src", + "projectType": "library", + "targets": { + "build": { + "executor": "@nrwl/rollup:rollup", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/packages/arepa-wallet", + "tsConfig": "packages/arepa-wallet/tsconfig.lib.json", + "project": "packages/arepa-wallet/package.json", + "entryFile": "packages/arepa-wallet/src/index.ts", + "buildableProjectDepsInPackageJsonType": "dependencies", + "compiler": "babel", + "format": ["esm", "cjs"], + "assets": [ + { + "glob": "packages/arepa-wallet/README.md", + "input": ".", + "output": "." + }, + { + "glob": "packages/arepa-wallet/assets/*", + "input": ".", + "output": "assets" + } + ] + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/arepa-wallet/**/*.ts"] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/packages/arepa-wallet"], + "options": { + "jestConfig": "packages/arepa-wallet/jest.config.ts", + "passWithNoTests": true + } + }, + "deploy": { + "executor": "ngx-deploy-npm:deploy", + "options": { + "access": "public" + }, + "dependsOn": ["^deploy"] + } + }, + "tags": ["browser-wallet"] +} diff --git a/packages/arepa-wallet/src/index.ts b/packages/arepa-wallet/src/index.ts new file mode 100644 index 000000000..66360c65d --- /dev/null +++ b/packages/arepa-wallet/src/index.ts @@ -0,0 +1,2 @@ +export { setupArepaWallet } from "./lib/arepa-wallet"; +export type { ArepaWalletParams } from "./lib/arepa-wallet"; diff --git a/packages/arepa-wallet/src/lib/arepa-wallet.spec.ts b/packages/arepa-wallet/src/lib/arepa-wallet.spec.ts new file mode 100644 index 000000000..edfff1118 --- /dev/null +++ b/packages/arepa-wallet/src/lib/arepa-wallet.spec.ts @@ -0,0 +1,121 @@ +/* eslint-disable @nx/enforce-module-boundaries */ +import type { + Near, + WalletConnection, + ConnectedWalletAccount, +} from "near-api-js"; +import type { AccountView } from "near-api-js/lib/providers/provider"; +import { mock } from "jest-mock-extended"; + +import { mockWallet } from "../../../core/src/lib/testUtils"; +import type { MockWalletDependencies } from "../../../core/src/lib/testUtils"; +import type { BrowserWallet } from "../../../core/src/lib/wallet"; + +const createArepaWallet = async (deps: MockWalletDependencies = {}) => { + const walletConnection = mock(); + const account = mock({ + connection: { + signer: { + getPublicKey: jest.fn().mockReturnValue(""), + }, + }, + }); + + jest.mock("near-api-js", () => { + const module = jest.requireActual("near-api-js"); + return { + ...module, + connect: jest.fn().mockResolvedValue(mock()), + WalletConnection: jest.fn().mockReturnValue(walletConnection), + }; + }); + + walletConnection.isSignedIn.calledWith().mockReturnValue(true); + walletConnection.getAccountId + .calledWith() + .mockReturnValue("test-account.testnet"); + walletConnection.account.calledWith().mockReturnValue(account); + // @ts-ignore + // near-api-js marks this method as protected. + // TODO: return value instead of null + account.signAndSendTransaction.calledWith().mockReturnValue(null); + account.state.calledWith().mockResolvedValue( + mock({ + amount: "1000000000000000000000000", + }) + ); + + // eslint-disable-next-line @typescript-eslint/no-var-requires + const { setupArepaWallet } = require("./arepa-wallet"); + const { wallet } = await mockWallet(setupArepaWallet(), deps); + + return { + nearApiJs: require("near-api-js"), + wallet, + walletConnection, + account, + }; +}; + +afterEach(() => { + jest.resetModules(); +}); + +describe("signIn", () => { + it("sign into near wallet", async () => { + const { wallet, nearApiJs } = await createArepaWallet(); + + await wallet.signIn({ contractId: "test.testnet" }); + + expect(nearApiJs.connect).toHaveBeenCalled(); + }); +}); + +describe("signOut", () => { + it("sign out of near wallet", async () => { + const { wallet, walletConnection } = await createArepaWallet(); + + await wallet.signIn({ contractId: "test.testnet" }); + await wallet.signOut(); + + expect(walletConnection.signOut).toHaveBeenCalled(); + }); +}); + +describe("getAccounts", () => { + it("returns array of accounts", async () => { + const { wallet, walletConnection } = await createArepaWallet(); + + await wallet.signIn({ contractId: "test.testnet" }); + const result = await wallet.getAccounts(); + + expect(walletConnection.getAccountId).toHaveBeenCalled(); + expect(result).toEqual([ + { accountId: "test-account.testnet", publicKey: "" }, + ]); + }); +}); + +describe("signAndSendTransaction", () => { + // TODO: Figure out why imports to core are returning undefined. + it("signs and sends transaction", async () => { + const { wallet, walletConnection, account } = await createArepaWallet(); + + await wallet.signIn({ contractId: "test.testnet" }); + const result = await wallet.signAndSendTransaction({ + receiverId: "guest-book.testnet", + actions: [], + }); + + expect(walletConnection.account).toHaveBeenCalled(); + // near-api-js marks this method as protected. + // @ts-ignore + expect(account.signAndSendTransaction).toHaveBeenCalled(); + // @ts-ignore + expect(account.signAndSendTransaction).toBeCalledWith({ + actions: [], + receiverId: "guest-book.testnet", + }); + expect(result).toEqual(null); + }); +}); diff --git a/packages/arepa-wallet/src/lib/arepa-wallet.ts b/packages/arepa-wallet/src/lib/arepa-wallet.ts new file mode 100644 index 000000000..4be01ca12 --- /dev/null +++ b/packages/arepa-wallet/src/lib/arepa-wallet.ts @@ -0,0 +1,271 @@ +import * as nearAPI from "near-api-js"; +import type { + WalletModuleFactory, + WalletBehaviourFactory, + BrowserWallet, + Transaction, + Optional, + Network, + Account, +} from "@near-wallet-selector/core"; +import { createAction } from "@near-wallet-selector/wallet-utils"; +import icon from "./icon"; + +export interface ArepaWalletParams { + walletUrl?: string; + iconUrl?: string; + deprecated?: boolean; + successUrl?: string; + failureUrl?: string; +} + +interface ArepaWalletState { + wallet: nearAPI.WalletConnection; + keyStore: nearAPI.keyStores.BrowserLocalStorageKeyStore; +} + +interface ArepaWalletExtraOptions { + walletUrl: string; +} + +const resolveWalletUrl = (network: Network, walletUrl?: string) => { + if (walletUrl) { + return walletUrl; + } + + switch (network.networkId) { + case "mainnet": + return "https://mi.arepa.digital"; + case "testnet": + return "https://testnet.arepa.digital"; + default: + throw new Error("Invalid wallet url"); + } +}; + +const setupWalletState = async ( + params: ArepaWalletExtraOptions, + network: Network +): Promise => { + const keyStore = new nearAPI.keyStores.BrowserLocalStorageKeyStore(); + + const near = await nearAPI.connect({ + keyStore, + walletUrl: params.walletUrl, + ...network, + headers: {}, + }); + + const wallet = new nearAPI.WalletConnection(near, "near_app"); + + return { + wallet, + keyStore, + }; +}; + +const ArepaWallet: WalletBehaviourFactory< + BrowserWallet, + { params: ArepaWalletExtraOptions } +> = async ({ metadata, options, store, params, logger, id }) => { + const _state = await setupWalletState(params, options.network); + const getAccounts = async (): Promise> => { + const accountId = _state.wallet.getAccountId(); + const account = _state.wallet.account(); + + if (!accountId || !account) { + return []; + } + + const publicKey = await account.connection.signer.getPublicKey( + account.accountId, + options.network.networkId + ); + return [ + { + accountId, + publicKey: publicKey ? publicKey.toString() : "", + }, + ]; + }; + + const transformTransactions = async ( + transactions: Array> + ) => { + const account = _state.wallet.account(); + const { networkId, signer, provider } = account.connection; + + const localKey = await signer.getPublicKey(account.accountId, networkId); + + return Promise.all( + transactions.map(async (transaction, index) => { + const actions = transaction.actions.map((action) => + createAction(action) + ); + const accessKey = await account.accessKeyForTransaction( + transaction.receiverId, + actions, + localKey + ); + + if (!accessKey) { + throw new Error( + `Failed to find matching key for transaction sent to ${transaction.receiverId}` + ); + } + + const block = await provider.block({ finality: "final" }); + + return nearAPI.transactions.createTransaction( + account.accountId, + nearAPI.utils.PublicKey.from(accessKey.public_key), + transaction.receiverId, + accessKey.access_key.nonce + index + 1, + actions, + nearAPI.utils.serialize.base_decode(block.header.hash) + ); + }) + ); + }; + + return { + async signIn({ contractId, methodNames, successUrl, failureUrl }) { + const existingAccounts = await getAccounts(); + + if (existingAccounts.length) { + return existingAccounts; + } + + await _state.wallet.requestSignIn({ + contractId, + methodNames, + successUrl, + failureUrl, + }); + + return getAccounts(); + }, + + async signOut() { + if (_state.wallet.isSignedIn()) { + _state.wallet.signOut(); + } + }, + + async getAccounts() { + return getAccounts(); + }, + + async verifyOwner() { + throw new Error(`Method not supported by ${metadata.name}`); + }, + + async signMessage({ message, nonce, recipient, callbackUrl, state }) { + logger.log("sign message", { message }); + + if (id !== "arepa-wallet") { + throw Error( + `The signMessage method is not supported by ${metadata.name}` + ); + } + + const locationUrl = + typeof window !== "undefined" ? window.location.href : ""; + + const url = callbackUrl || locationUrl; + + if (!url) { + throw new Error(`The callbackUrl is missing for ${metadata.name}`); + } + + const href = new URL(params.walletUrl); + href.pathname = "sign-message"; + href.searchParams.append("message", message); + href.searchParams.append("nonce", nonce.toString("base64")); + href.searchParams.append("recipient", recipient); + href.searchParams.append("callbackUrl", url); + if (state) { + href.searchParams.append("state", state); + } + + window.location.replace(href.toString()); + + return; + }, + + async signAndSendTransaction({ + signerId, + receiverId, + actions, + callbackUrl, + }) { + logger.log("signAndSendTransaction", { + signerId, + receiverId, + actions, + callbackUrl, + }); + + const { contract } = store.getState(); + + if (!_state.wallet.isSignedIn() || !contract) { + throw new Error("Wallet not signed in"); + } + + const account = _state.wallet.account(); + + return account["signAndSendTransaction"]({ + receiverId: receiverId || contract.contractId, + actions: actions.map((action) => createAction(action)), + walletCallbackUrl: callbackUrl, + }); + }, + + async signAndSendTransactions({ transactions, callbackUrl }) { + logger.log("signAndSendTransactions", { transactions, callbackUrl }); + + if (!_state.wallet.isSignedIn()) { + throw new Error("Wallet not signed in"); + } + + return _state.wallet.requestSignTransactions({ + transactions: await transformTransactions(transactions), + callbackUrl, + }); + }, + }; +}; + +export function setupArepaWallet({ + walletUrl, + iconUrl = icon, + deprecated = false, + successUrl = "", + failureUrl = "", +}: ArepaWalletParams = {}): WalletModuleFactory { + return async (moduleOptions) => { + return { + id: "arepa-wallet", + type: "browser", + metadata: { + name: "ArepaWallet", + description: + "NEAR wallet to store, buy, send and stake assets for DeFi.", + iconUrl, + deprecated, + available: true, + successUrl, + failureUrl, + walletUrl: resolveWalletUrl(moduleOptions.options.network, walletUrl), + }, + init: (options) => { + return ArepaWallet({ + ...options, + params: { + walletUrl: resolveWalletUrl(options.options.network, walletUrl), + }, + }); + }, + }; + }; +} diff --git a/packages/arepa-wallet/src/lib/icon.ts b/packages/arepa-wallet/src/lib/icon.ts new file mode 100644 index 000000000..b3d406ad9 --- /dev/null +++ b/packages/arepa-wallet/src/lib/icon.ts @@ -0,0 +1 @@ +export default `data:image/png;base64,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`; diff --git a/packages/arepa-wallet/tsconfig.json b/packages/arepa-wallet/tsconfig.json new file mode 100644 index 000000000..8b6d6acaf --- /dev/null +++ b/packages/arepa-wallet/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/packages/arepa-wallet/tsconfig.lib.json b/packages/arepa-wallet/tsconfig.lib.json new file mode 100644 index 000000000..b3f90c22f --- /dev/null +++ b/packages/arepa-wallet/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": [] + }, + "include": ["**/*.ts"], + "exclude": ["jest.config.ts", "**/*.spec.ts"] +} diff --git a/packages/arepa-wallet/tsconfig.spec.json b/packages/arepa-wallet/tsconfig.spec.json new file mode 100644 index 000000000..546f12877 --- /dev/null +++ b/packages/arepa-wallet/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] +} diff --git a/packages/bitget-wallet/README.md b/packages/bitget-wallet/README.md index 8e4a04402..bd33921e9 100644 --- a/packages/bitget-wallet/README.md +++ b/packages/bitget-wallet/README.md @@ -1,6 +1,6 @@ # @near-wallet-selector/bitget-wallet -This is the [Bitget Wallet](https://chrome.google.com/webstore/detail/bitkeep-crypto-nft-wallet/jiidiaalihmmhddjgbnbgdfflelocpak) package for NEAR Wallet Selector. +This is the [Bitget Wallet](https://chromewebstore.google.com/detail/bitget-wallet-formerly-bi/jiidiaalihmmhddjgbnbgdfflelocpak) package for NEAR Wallet Selector. ## Installation and Usage diff --git a/packages/bitget-wallet/package.json b/packages/bitget-wallet/package.json index 417fdb9ad..b0909194a 100644 --- a/packages/bitget-wallet/package.json +++ b/packages/bitget-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/bitget-wallet", - "version": "8.9.12", + "version": "8.9.13", "description": "Bitget wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/bitte-wallet/package.json b/packages/bitte-wallet/package.json index 1d091788b..0a983cc2c 100644 --- a/packages/bitte-wallet/package.json +++ b/packages/bitte-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/bitte-wallet", - "version": "8.9.12", + "version": "8.9.13", "description": "Bitte wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/coin98-wallet/package.json b/packages/coin98-wallet/package.json index 9f7bd88d8..9ffde9e8c 100644 --- a/packages/coin98-wallet/package.json +++ b/packages/coin98-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/coin98-wallet", - "version": "8.9.12", + "version": "8.9.13", "description": "Coin 98 wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/core/package.json b/packages/core/package.json index 4f6b896a7..62ddc3417 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/core", - "version": "8.9.12", + "version": "8.9.13", "description": "This is the core package for NEAR Wallet Selector.", "keywords": [ "near", @@ -18,5 +18,9 @@ "bugs": { "url": "https://github.com/near/wallet-selector/issues" }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/core" + "homepage": "https://github.com/near/wallet-selector/tree/main/packages/core", + "peerDependencies": { + "near-api-js": "4.0.3", + "@near-js/providers": "latest" + } } diff --git a/packages/core/src/lib/locale/ar.json b/packages/core/src/lib/locale/ar.json index aa5517da5..8b84d5f0e 100644 --- a/packages/core/src/lib/locale/ar.json +++ b/packages/core/src/lib/locale/ar.json @@ -57,12 +57,59 @@ "open": "فتح" }, "walletTypes": { - "hardware": "Hardware Wallet", - "browser": "Browser Wallet", - "injected": "Wallet Extension", - "bridge": "Bridge Wallet", - "mobile": "Mobile Wallet", - "instant-link": "Instant Wallet" + "hardware": "محفظة الأجهزة", + "browser": "محفظة المتصفح", + "injected": "ملحق المحفظة", + "bridge": "محفظة الجسر", + "mobile": "محفظة الجوال", + "instant-link": "محفظة الرابط الفوري" + }, + "exportAccounts": { + "afterDecide": "بعد اتخاذ قرار بشأن محفظة، يمكنك اختيار الحسابات التي تريد نقلها.", + "chooseAWallet": "اختر محفظة", + "disclaimer": "لن تتمكن من نقل الحسابات التي لم يتم تمويلها أو استخدامها على NEAR.", + "selectAWallet": "اختر محفظة تناسب احتياجاتك وتدعم حساباتك المتصلة.", + "selectYourAccounts": "حدد حساباتك", + "transferYourAccounts": "نقل حساباتك", + "warning": "لا تدعم تصدير الحسابات في الوقت الحالي. يرجى اختيار محفظة أخرى.", + "complete": { + "button": "أكمل", + "descOne": "سيتم توجيهك الآن إلى المحفظة التي اخترتها لإكمال النقل.", + "descTwo": "بمجرد إكمال جزء الاستيراد من العملية من المحفظة المحددة، اضغط على الزر لإكمال عملية النقل.", + "startOverButton": "ابدأ من جديد", + "title": "أكمل النقل" + }, + "getPassphrase": { + "button": "تابع", + "checkLabel": "لقد قمت بنسخ أو كتابة كلمة المرور", + "desc": "ستحتاج إلى إدخال هذه الكلمة السرية عند بدء تصدير حساباتك إلى محفظة مختلفة.", + "label": "انقر لنسخ", + "title": "انسخ كلمة المرور المؤقتة", + "transferButton": "نقل الحسابات" + }, + "selectAccounts": { + "button": "تابع", + "deselectAll": "إلغاء تحديد الكل", + "error": "الحساب غير موجود", + "noBalance": "الحساب غير ممول", + "selectAll": "تحديد الكل", + "title": "حدد الحسابات لنقلها", + "unavailable": "النقل غير متاح", + "warningLedger": "دعم Ledger مطلوب" + }, + "walletTypes": { + "bridge": "محفظة الجسر", + "browser": "محفظة المتصفح", + "hardware": "محفظة الأجهزة", + "injected": "ملحق المحفظة", + "mobile": "محفظة الجوال" + } + } + }, + "component": { + "clickToCopy": { + "label": "تم النسخ", + "tooltip": "انقر لنسخ" } } } diff --git a/packages/core/src/lib/locale/bg.json b/packages/core/src/lib/locale/bg.json index 29775e92f..72f35ef1f 100644 --- a/packages/core/src/lib/locale/bg.json +++ b/packages/core/src/lib/locale/bg.json @@ -57,12 +57,12 @@ "open": "Отворете" }, "walletTypes": { - "hardware": "Hardware Wallet", - "browser": "Browser Wallet", - "injected": "Wallet Extension", - "bridge": "Bridge Wallet", - "mobile": "Mobile Wallet", - "instant-link": "Instant Wallet" + "hardware": "Хардуерен портфейл", + "browser": "Портфейл в браузъра", + "injected": "Разширение на портфейл", + "bridge": "Мостов портфейл", + "mobile": "Мобилен портфейл", + "instant-link": "Мигновен портфейл" } } } diff --git a/packages/core/src/lib/locale/es.json b/packages/core/src/lib/locale/es.json index 61b4eec1c..e81f75c11 100644 --- a/packages/core/src/lib/locale/es.json +++ b/packages/core/src/lib/locale/es.json @@ -57,12 +57,12 @@ "open": "Abrir" }, "walletTypes": { - "hardware": "Hardware Wallet", - "browser": "Browser Wallet", - "injected": "Wallet Extension", - "bridge": "Bridge Wallet", - "mobile": "Mobile Wallet", - "instant-link": "Instant Wallet" + "hardware": "Cartera de Hardware", + "browser": "Cartera de Navegador", + "injected": "Extensión de Cartera", + "bridge": "Cartera de Puente", + "mobile": "Cartera Móvil", + "instant-link": "Cartera Instantánea" } } } diff --git a/packages/core/src/lib/locale/hi.json b/packages/core/src/lib/locale/hi.json index f487c5398..75dc8ed9e 100644 --- a/packages/core/src/lib/locale/hi.json +++ b/packages/core/src/lib/locale/hi.json @@ -56,12 +56,12 @@ "open": "खोले|" }, "walletTypes": { - "hardware": "Hardware Wallet", - "browser": "Browser Wallet", - "injected": "Wallet Extension", - "bridge": "Bridge Wallet", - "mobile": "Mobile Wallet", - "instant-link": "Instant Wallet" + "hardware": "हार्डवेयर वॉलेट", + "browser": "ब्राउज़र वॉलेट", + "injected": "वॉलेट एक्सटेंशन", + "bridge": "ब्रिज वॉलेट", + "mobile": "मोबाइल वॉलेट", + "instant-link": "इंस्टेंट वॉलेट" } } } diff --git a/packages/core/src/lib/locale/jp.json b/packages/core/src/lib/locale/jp.json new file mode 100644 index 000000000..a5c2211d3 --- /dev/null +++ b/packages/core/src/lib/locale/jp.json @@ -0,0 +1,115 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "ウォレットを接続", + "whatIsAWallet": "ウォレットとは?", + "secureAndManage": "デジタル資産を安全に管理", + "safelyStore": "暗号通貨やNFTを安全に保存し、転送します。", + "logInToAny": "すべてのNEARアプリにログイン", + "noNeedToCreate": "新しいアカウントや資格情報を作成する必要はありません。ウォレットを接続するだけで準備完了です!", + "getAWallet": "ウォレットを取得", + "useAWallet": "ウォレットを使ってNEARの資産を安全に管理し、ユーザー名やパスワードなしでNEARアプリにログインします。", + "connectionFailed": "接続失敗", + "connectionSuccessful": "接続成功", + "rememberWallet": "ウォレットを記憶", + "connected": "接続済み", + "connectingTo": "接続中", + "connectingMessage": { + "injected": "拡張機能ウィンドウで接続を確認", + "browser": "リダイレクト後にウォレットで接続を確認", + "hardware": "Ledgerデバイスで接続を確認", + "bridge": "ウォレットで接続を確認" + } + }, + "ledger": { + "connectWithLedger": "Ledgerで接続", + "makeSureYourLedger": "Ledgerが安全に接続され、NEARアプリがデバイスで開いていることを確認してください", + "continue": "続行", + "specifyHDPath": "HDパスを指定", + "enterYourPreferredHDPath": "希望のHDパスを入力し、アクティブなアカウントをスキャンします。", + "scan": "スキャン", + "retry": "再試行", + "ledgerIsNotAvailable": "Ledgerが使用できません", + "accessDeniedToUseLedgerDevice": "Ledgerデバイスの使用が拒否されました", + "noAccountsFound": "アカウントが見つかりません", + "selectYourAccounts": "アカウントを選択", + "connecting1Account": "1アカウントに接続中", + "cantFindAnyAccount": "このLedgerに関連付けられたアカウントが見つかりません。新しいNEARアカウントを作成してください", + "orConnectAnAnotherLedger": "または別のLedgerを接続してください。", + "connecting": "接続中", + "ofAccounts": "アカウントの", + "failedToAutomatically": "アカウントIDを自動的に見つけることができませんでした。手動で提供してください:", + "overviewTheListOfAuthorized": "認可されたアカウントのリストを確認し、以下のボタンをクリックしてサインインを完了します。", + "finish": "完了" + }, + "install": { + "youllNeedToInstall": "インストールが必要です", + "toContinueAfterInstalling": "続行するには", + "refreshThePage": "ページを更新してください。", + "open": "開く" + }, + "qr": { + "copiedToClipboard": "クリップボードにコピーされました", + "failedToCopy": "クリップボードにコピーできませんでした", + "scanWithYourMobile": "モバイルデバイスでスキャン", + "copyToClipboard": "クリップボードにコピー", + "preferTheOfficial": "公式ダイアログを推奨します", + "open": "開く" + }, + "walletTypes": { + "hardware": "ハードウェアウォレット", + "browser": "ブラウザウォレット", + "injected": "ウォレット拡張機能", + "bridge": "ブリッジウォレット", + "mobile": "モバイルウォレット", + "instant-link": "インスタントウォレット" + }, + "exportAccounts": { + "chooseAWallet": "ウォレットを選択", + "transferYourAccounts": "アカウントを転送", + "selectAWallet": "ニーズに合ったウォレットを選択し、接続されたアカウントをサポートしているものを選びます。", + "selectYourAccounts": "アカウントを選択", + "afterDecide": "ウォレットを決定した後、転送したいアカウントを選択できます。", + "disclaimer": "NEARで資金が提供されたことがないアカウントは転送できません。", + "warning": "現在、アカウントのエクスポートをサポートしていません。他のウォレットを選択してください。", + "walletTypes": { + "hardware": "ハードウェアウォレット", + "browser": "ブラウザウォレット", + "injected": "ウォレット拡張機能", + "bridge": "ブリッジウォレット", + "mobile": "モバイルウォレット" + }, + "selectAccounts": { + "title": "転送するアカウントを選択", + "button": "続行", + "deselectAll": "すべて選択解除", + "selectAll": "すべて選択", + "unavailable": "転送不可", + "error": "アカウントが存在しません", + "warningLedger": "Ledgerサポートが必要です", + "noBalance": "アカウントに資金がありません" + }, + "getPassphrase": { + "title": "一時パスワードをコピー", + "desc": "アカウントを別のウォレットにエクスポートする際にこのパスワードを入力する必要があります。", + "button": "続行", + "transferButton": "アカウントを転送", + "label": "クリックしてコピー", + "checkLabel": "パスワードをコピーまたは書き留めた" + }, + "complete": { + "title": "転送を完了", + "descOne": "選択したウォレットにリダイレクトされ、転送を完了します。", + "descTwo": "選択したウォレットからインポートの一部が完了した後、転送プロセスを完了するためにボタンを押してください。", + "startOverButton": "最初からやり直す", + "button": "完了" + } + } + }, + "component": { + "clickToCopy": { + "label": "コピー済み", + "tooltip": "コピーするにはクリック" + } + } +} \ No newline at end of file diff --git a/packages/core/src/lib/locale/zh-hk.json b/packages/core/src/lib/locale/zh-hk.json new file mode 100644 index 000000000..c3d6dd847 --- /dev/null +++ b/packages/core/src/lib/locale/zh-hk.json @@ -0,0 +1,62 @@ +{ + "modal": { + "wallet": { + "connectYourWallet": "連接你的錢包", + "whatIsAWallet": "咩係錢包?", + "secureAndManage": "保護同管理你的數碼資產", + "safelyStore": "安全儲存同轉移你的加密貨幣同NFT", + "logInToAny": "登入任何 NEAR 應用", + "noNeedToCreate": "無需創建新帳戶或密碼。連接你的錢包,即可開始使用!", + "getAWallet": "獲取新帳戶", + "useAWallet": "使用錢包來保護同管理你的 NEAR 資產,無需用戶名同密碼即可登入任何 NEAR 應用", + "connectionFailed": "連接失敗", + "connectionSuccessful": "連接成功", + "rememberWallet": "記住錢包選擇", + "connected": "已連接", + "connectingTo": "正在連接" + }, + "ledger": { + "connectWithLedger": "連接 Ledger", + "makeSureYourLedger": "確保你的 Ledger 已經安全連接,並且 NEAR 應用已經在你設備上打開", + "continue": "繼續", + "specifyHDPath": "指定 HD 路徑", + "enterYourPreferredHDPath": "輸入你偏好的 HD 路徑,然後為任何活躍帳戶掃描", + "scan": "掃描", + "retry": "重試", + "ledgerIsNotAvailable": "Ledger 不可用", + "accessDeniedToUseLedgerDevice": "訪問 Ledger 設備被拒絕", + "noAccountsFound": "沒有找到账戶", + "selectYourAccounts": "選擇你的帳戶", + "connecting1Account": "正在連接1個帳戶", + "cantFindAnyAccount": "未能找到任何與這個 Ledger 相關聯的帳戶。請於", + "orConnectAnAnotherLedger.": "或連接另一個 Ledger", + "connecting": "正在連接", + "ofAccounts": "個帳戶", + "failedToAutomatically": "無法自動找到账戶ID,請主動提供:", + "overviewTheListOfAuthorized": "請查看已授權的帳戶列表,點擊以下按鈕完成登入", + "finish": "完成" + }, + "install": { + "youllNeedToInstall": "你將需要安裝", + "toContinueAfterInstalling": "以繼續。安裝完", + "refreshThePage": "請刷新頁面", + "open": "打開" + }, + "qr": { + "copiedToClipboard": "複製到剪貼板", + "failedToCopy": "複製到剪貼板失敗", + "scanWithYourMobile": "用你的手機掃描", + "copyToClipboard": "複製到剪貼板", + "preferTheOfficial": "希望使用官方對話框於", + "open": "打開" + }, + "walletTypes": { + "hardware": "硬件錢包", + "browser": "瀏覽器錢包", + "injected": "錢包擴展", + "bridge": "橋接錢包", + "mobile": "流動錢包", + "instant-link": "即時錢包" + } + } +} diff --git a/packages/core/src/lib/locale/zh.json b/packages/core/src/lib/locale/zh.json index 09e4ab781..e999aa782 100644 --- a/packages/core/src/lib/locale/zh.json +++ b/packages/core/src/lib/locale/zh.json @@ -51,12 +51,12 @@ "open": "打开" }, "walletTypes": { - "hardware": "Hardware Wallet", - "browser": "Browser Wallet", - "injected": "Wallet Extension", - "bridge": "Bridge Wallet", - "mobile": "Mobile Wallet", - "instant-link": "Instant Wallet" + "hardware": "硬件钱包", + "browser": "浏览器钱包", + "injected": "钱包扩展", + "bridge": "桥接钱包", + "mobile": "移动钱包", + "instant-link": "即时钱包" } } } diff --git a/packages/ethereum-wallets/README.md b/packages/ethereum-wallets/README.md index 011ca94ba..93e3b33ba 100644 --- a/packages/ethereum-wallets/README.md +++ b/packages/ethereum-wallets/README.md @@ -17,7 +17,7 @@ NEP-518 doesn't support multiple actions within the same transaction, so when mu NEP-518 rpc relayer uses a FunctionCall access key to execute transactions on behalf of the user by calling `rlp_execute`. If this key is not yet added, the wallet will be onboarded before the first transaction is made. -`signMessage` and `verifyOwner` are not implemented because Ethereum wallets are not compatible with these standards, instead a dApp can use `eth_sign` or `eth_signTypedData_v4` to authenticate the wallet by interacting with it directly. +`signMessage` and `verifyOwner` are not implemented because Ethereum wallets are not compatible with these standards, instead a dApp can use `personal_sign` or `eth_signTypedData_v4` to authenticate the wallet by interacting with it directly. ## Installation and Usage @@ -79,6 +79,7 @@ Project ID is required, please obtain it from [walletconnect.com](https://wallet - `iconUrl` (`string?`): Image URL for the icon shown in the modal. This can also be a relative path or base64 encoded image. Defaults to `./assets/ethereum-wallets-icon.png`. - `wagmiCore` (`typeof import("@wagmi/core")?`): Optional, @wagmi/core functions can be overidden by the dapp to interract with the wallet. - `alwaysOnboardDuringSignIn` (`boolean?`): A dapp without SignIn access key will not onboard the relayer by default, this option does the relayer onboarding during login. +- `nearNodeUrl` (`string?`): NEAR node url to query the NEAR transaction status and onboarding access key. Developent options (before the NEAR protocol upgrade to support 0x accounts natively): diff --git a/packages/ethereum-wallets/package.json b/packages/ethereum-wallets/package.json index 8eb842c44..f11e43cf3 100644 --- a/packages/ethereum-wallets/package.json +++ b/packages/ethereum-wallets/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/ethereum-wallets", - "version": "1.0.0", + "version": "8.9.13", "description": "Ethereum wallets package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/ethereum-wallets/src/lib/index.ts b/packages/ethereum-wallets/src/lib/index.ts index 8ff973315..92efa1fec 100644 --- a/packages/ethereum-wallets/src/lib/index.ts +++ b/packages/ethereum-wallets/src/lib/index.ts @@ -64,6 +64,7 @@ export interface EthereumWalletsParams { devMode?: boolean; devModeAccount?: string; deprecated?: boolean; + nearNodeUrl?: string; } interface EthereumWalletsState { @@ -103,6 +104,7 @@ const EthereumWallets: WalletBehaviourFactory< alwaysOnboardDuringSignIn = false, devMode, devModeAccount = "eth-wallet.testnet", + nearNodeUrl, }, }) => { if (!wagmiCore) { @@ -123,6 +125,17 @@ const EthereumWallets: WalletBehaviourFactory< if (!nearExplorer) { throw new Error("Failed to parse NEAR explorer url from wagmiConfig."); } + // NOTE: use a custom provider because the failover provider doesn't give error details. + const nearProvider = new JsonRpcProvider( + nearNodeUrl ?? + // @ts-expect-error + provider.provider.connection ?? + // @ts-expect-error + provider.provider.providers[ + // @ts-expect-error + provider.provider.currentProviderIndex + ].connection + ); const getAccounts = async (): Promise> => { const address = wagmiCore!.getAccount(wagmiConfig).address?.toLowerCase(); @@ -279,8 +292,9 @@ const EthereumWallets: WalletBehaviourFactory< throw new Error("Invalid action type"); } } - const { request } = await wagmiCore!.simulateContract(wagmiConfig, ethTx); - const result = await wagmiCore!.writeContract(wagmiConfig, request); + // NOTE: re-add simulateContract and parse errors after eth_call implements errors. + // const { request } = await wagmiCore!.simulateContract(wagmiConfig, ethTx); + const result = await wagmiCore!.writeContract(wagmiConfig, ethTx); return result; }; @@ -422,7 +436,7 @@ const EthereumWallets: WalletBehaviourFactory< throw new Error("Failed to fetch the relayer's public key."); } try { - const key = await provider.query({ + const key = await nearProvider.query({ request_type: "view_access_key", finality: "final", account_id: accountId, @@ -439,6 +453,8 @@ const EthereumWallets: WalletBehaviourFactory< logger.error(error); if ( !error.message?.includes("does not exist while viewing") && + !error.message?.includes("doesn't exist") && + !error.message?.includes("does not exist") && !error.message?.includes("has never been observed on the node") ) { throw new Error( @@ -505,7 +521,7 @@ const EthereumWallets: WalletBehaviourFactory< if (accountLogIn.publicKey && nearTxs.length) { let accessKeyUsable; try { - const accessKey = await provider.query({ + const accessKey = await nearProvider.query({ request_type: "view_access_key", finality: "final", account_id: accountLogIn.accountId, @@ -528,7 +544,9 @@ const EthereumWallets: WalletBehaviourFactory< ); const results: Array = []; for (let i = 0; i < signedTransactions.length; i += 1) { - const nearTx = await provider.sendTransaction(signedTransactions[i]); + const nearTx = await nearProvider.sendTransaction( + signedTransactions[i] + ); logger.log("NEAR transaction:", nearTx); if ( typeof nearTx.status === "object" && @@ -651,10 +669,6 @@ const EthereumWallets: WalletBehaviourFactory< } } logger.log("Receipt:", receipt); - const nearProvider = new JsonRpcProvider( - // @ts-expect-error - provider.provider.connection - ); let nearTx; while (!nearTx) { try { @@ -711,7 +725,7 @@ const EthereumWallets: WalletBehaviourFactory< if (accountLogIn.publicKey) { try { // Check that the key exists before making a transaction. - await provider.query({ + await nearProvider.query({ request_type: "view_access_key", finality: "final", account_id: accountLogIn.accountId, @@ -842,7 +856,7 @@ const EthereumWallets: WalletBehaviourFactory< let reUseKeyPair = false; if (keyPair) { try { - await provider.query({ + await nearProvider.query({ request_type: "view_access_key", finality: "final", account_id: accountId, @@ -936,14 +950,14 @@ const EthereumWallets: WalletBehaviourFactory< async verifyOwner({ message }) { logger.log("EthereumWallets:verifyOwner", { message }); throw new Error( - "Not implemented: ed25519 N/A, use eth_sign or eth_signTypedData_v4 instead." + "Not implemented: ed25519 N/A, '\x19Ethereum Signed Message:\n' prefix is not compatible, use personal_sign or eth_signTypedData_v4 instead." ); }, async signMessage({ message, nonce, recipient }) { logger.log("EthereumWallets:signMessage", { message, nonce, recipient }); throw new Error( - "Not implemented: ed25519 N/A, use eth_sign or eth_signTypedData_v4 instead." + "Not implemented: ed25519 N/A, '\x19Ethereum Signed Message:\n' prefix is not compatible, use personal_sign or eth_signTypedData_v4 instead." ); }, diff --git a/packages/here-wallet/package.json b/packages/here-wallet/package.json index 28f5b8bc1..c2fbc5295 100644 --- a/packages/here-wallet/package.json +++ b/packages/here-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/here-wallet", - "version": "8.9.12", + "version": "8.9.13", "description": "Here wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/ledger/package.json b/packages/ledger/package.json index 980c52b33..7594aa8ff 100644 --- a/packages/ledger/package.json +++ b/packages/ledger/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/ledger", - "version": "8.9.12", + "version": "8.9.13", "description": "Ledger package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/math-wallet/package.json b/packages/math-wallet/package.json index 5972ee816..6e0726b16 100644 --- a/packages/math-wallet/package.json +++ b/packages/math-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/math-wallet", - "version": "8.9.12", + "version": "8.9.13", "description": "Math wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/meteor-wallet/package.json b/packages/meteor-wallet/package.json index 180143e75..68c487d62 100644 --- a/packages/meteor-wallet/package.json +++ b/packages/meteor-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/meteor-wallet", - "version": "8.9.12", + "version": "8.9.13", "description": "Meteor wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/mintbase-wallet/package.json b/packages/mintbase-wallet/package.json index efd4d57b4..c1793b815 100644 --- a/packages/mintbase-wallet/package.json +++ b/packages/mintbase-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/mintbase-wallet", - "version": "8.9.12", + "version": "8.9.13", "description": "Mintbase wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/modal-ui-js/package.json b/packages/modal-ui-js/package.json index 8815d0cd7..97819b23c 100644 --- a/packages/modal-ui-js/package.json +++ b/packages/modal-ui-js/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/modal-ui-js", - "version": "8.9.12", + "version": "8.9.13", "description": "Modal UI package for NEAR wallet Selector", "keywords": [ "near", diff --git a/packages/modal-ui/package.json b/packages/modal-ui/package.json index 29b097cc3..0da355ac7 100644 --- a/packages/modal-ui/package.json +++ b/packages/modal-ui/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/modal-ui", - "version": "8.9.12", + "version": "8.9.13", "description": "Modal UI package for NEAR wallet Selector", "keywords": [ "near", diff --git a/packages/my-near-wallet/package.json b/packages/my-near-wallet/package.json index ef9ad790a..12f11f6d9 100644 --- a/packages/my-near-wallet/package.json +++ b/packages/my-near-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/my-near-wallet", - "version": "8.9.12", + "version": "8.9.13", "description": "My Near Wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/narwallets/package.json b/packages/narwallets/package.json index c48c776a2..3263a0848 100644 --- a/packages/narwallets/package.json +++ b/packages/narwallets/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/narwallets", - "version": "8.9.12", + "version": "8.9.13", "description": "This is the Narwallets package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/near-mobile-wallet/package.json b/packages/near-mobile-wallet/package.json index f90b6b093..6c36d958b 100644 --- a/packages/near-mobile-wallet/package.json +++ b/packages/near-mobile-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/near-mobile-wallet", - "version": "8.9.12", + "version": "8.9.13", "description": "NEAR Mobile wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/near-snap/package.json b/packages/near-snap/package.json index b9ba2708d..687d64634 100644 --- a/packages/near-snap/package.json +++ b/packages/near-snap/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/near-snap", - "version": "8.9.12", + "version": "8.9.13", "description": "Metamask snap to interact with Near dapps.", "keywords": [ "near", diff --git a/packages/nearfi/package.json b/packages/nearfi/package.json index a92d43589..0704ffb2e 100644 --- a/packages/nearfi/package.json +++ b/packages/nearfi/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/nearfi", - "version": "8.9.12", + "version": "8.9.13", "description": "Nearfi package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/neth/package.json b/packages/neth/package.json index 78f727bd8..8f0da4770 100644 --- a/packages/neth/package.json +++ b/packages/neth/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/neth", - "version": "8.9.12", + "version": "8.9.13", "description": "Control NEAR accounts with ETH accounts", "author": "mattlockyer", "keywords": [ diff --git a/packages/nightly/package.json b/packages/nightly/package.json index a8ad257b3..5f3aa2230 100644 --- a/packages/nightly/package.json +++ b/packages/nightly/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/nightly", - "version": "8.9.12", + "version": "8.9.13", "description": "Nightly wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/okx-wallet/package.json b/packages/okx-wallet/package.json index a7e2f343e..78f7f5ca7 100644 --- a/packages/okx-wallet/package.json +++ b/packages/okx-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/okx-wallet", - "version": "8.9.12", + "version": "8.9.13", "description": "OKX Wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/ramper-wallet/package.json b/packages/ramper-wallet/package.json index 839a549cb..61f51927b 100644 --- a/packages/ramper-wallet/package.json +++ b/packages/ramper-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/ramper-wallet", - "version": "8.9.12", + "version": "8.9.13", "description": "Ramper wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/sender/package.json b/packages/sender/package.json index 962526de6..995ec220b 100644 --- a/packages/sender/package.json +++ b/packages/sender/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/sender", - "version": "8.9.12", + "version": "8.9.13", "description": "Sender wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/wallet-connect/package.json b/packages/wallet-connect/package.json index c88eabb95..1fef3775a 100644 --- a/packages/wallet-connect/package.json +++ b/packages/wallet-connect/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/wallet-connect", - "version": "8.9.12", + "version": "8.9.13", "description": "Wallet Connect package for NEAR Wallet Selector.", "keywords": [ "near", @@ -20,5 +20,8 @@ "bugs": { "url": "https://github.com/near/wallet-selector/issues" }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/wallet-connect" + "homepage": "https://github.com/near/wallet-selector/tree/main/packages/wallet-connect", + "peerDependencies": { + "near-api-js": "4.0.3" + } } diff --git a/packages/wallet-utils/package.json b/packages/wallet-utils/package.json index ff2127af2..00d477ac4 100644 --- a/packages/wallet-utils/package.json +++ b/packages/wallet-utils/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/wallet-utils", - "version": "8.9.12", + "version": "8.9.13", "description": "Wallet utils package for NEAR Wallet Selector.", "keywords": [ "near", @@ -18,5 +18,8 @@ "bugs": { "url": "https://github.com/near/wallet-selector/issues" }, - "homepage": "https://github.com/near/wallet-selector/tree/main/packages/wallet-utils" + "homepage": "https://github.com/near/wallet-selector/tree/main/packages/wallet-utils", + "peerDependencies": { + "near-api-js": "4.0.3" + } } diff --git a/packages/welldone-wallet/package.json b/packages/welldone-wallet/package.json index aea6e9dcf..52a7a2efd 100644 --- a/packages/welldone-wallet/package.json +++ b/packages/welldone-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/welldone-wallet", - "version": "8.9.12", + "version": "8.9.13", "description": "Welldone wallet package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/packages/xdefi/package.json b/packages/xdefi/package.json index 97910782a..a8b45f5ab 100644 --- a/packages/xdefi/package.json +++ b/packages/xdefi/package.json @@ -1,6 +1,6 @@ { "name": "@near-wallet-selector/xdefi", - "version": "8.9.12", + "version": "8.9.13", "description": "This is the XDEFI package for NEAR Wallet Selector.", "keywords": [ "near", diff --git a/scripts/release-packages.bash b/scripts/release-packages.bash index 52cf146ec..39e221eb6 100644 --- a/scripts/release-packages.bash +++ b/scripts/release-packages.bash @@ -30,3 +30,4 @@ npm publish dist/packages/bitte-wallet --tag "${TAG}" --otp "${OTP}" npm publish dist/packages/bitget-wallet --tag "${TAG}" --otp "${OTP}" npm publish dist/packages/okx-wallet --tag "${TAG}" --otp "${OTP}" npm publish dist/packages/ethereum-wallets --tag "${TAG}" --otp "${OTP}" +npm publish dist/packages/arepa-wallet --tag "${TAG}" --otp "${OTP}" diff --git a/tsconfig.base.json b/tsconfig.base.json index b175e61fc..702d746c7 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -30,6 +30,9 @@ "@near-wallet-selector/account-export": [ "packages/account-export/src/index.ts" ], + "@near-wallet-selector/arepa-wallet": [ + "packages/arepa-wallet/src/index.ts" + ], "@near-wallet-selector/bitget-wallet": [ "packages/bitget-wallet/src/index.ts" ], diff --git a/yarn.lock b/yarn.lock index 6b84573ad..60c24d448 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3625,10 +3625,10 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@jscutlery/semver@5.2.2": - version "5.2.2" - resolved "https://registry.yarnpkg.com/@jscutlery/semver/-/semver-5.2.2.tgz#5e1eec2554e38d449c2de4a6c5a41abeb3bc9d7f" - integrity sha512-lhklWnwa5X4N6aiBLbybdsZ37agtxa0EBRdXmjOFA+LzViVR6QIYZpk+/X/XLw/TB6z1rLrmFp/MakmNyaJiYg== +"@jscutlery/semver@5.3.1": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@jscutlery/semver/-/semver-5.3.1.tgz#6a7f0ba7ce40802e0101ea8ac5b155b0031e0c74" + integrity sha512-LJk85tsYnISmRBQid4fjavBYUN8W5QwVQrcZ9KuTv+/D8Qy1A3wbMcc0kfBnnsGwFcKjYTwr4/eGJ/i1HgVk2Q== dependencies: chalk "4.1.2" conventional-changelog "^5.1.0" @@ -4061,14 +4061,14 @@ nanoid "3.3.6" query-string "^7.1.3" -"@mintbase-js/wallet@0.6.0-beta.10": - version "0.6.0-beta.10" - resolved "https://registry.yarnpkg.com/@mintbase-js/wallet/-/wallet-0.6.0-beta.10.tgz#26a6ef1d9a46c117dc4389441b2f780c292afd43" - integrity sha512-i0U5cGLu7WySdfzOPlPO+eN/iQlVaPWo0E12UPWFNjAUrn76WJFvHM0RDHZYg9p+Ex5VTp2lU0vkJu6KtJO9Tw== +"@mintbase-js/wallet@0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@mintbase-js/wallet/-/wallet-0.6.1.tgz#09c4feaa5832a33c8e12623572d0edc0596e02c2" + integrity sha512-qU0Pgf7qN7Bs2G7wtUsOueUs77Yvd2CW2zLZWFHpzVstSI3IkYc0NwmW1u6dqXWYHqPinYMiicHtAq4xHbNgug== dependencies: - "@near-wallet-selector/wallet-utils" "^8.9.5" - bn.js "^5.2.1" - near-api-js "^3.0.0" + "@near-wallet-selector/core" "8.9.12" + "@near-wallet-selector/wallet-utils" "^8.9.12" + near-api-js "^4.0.3" "@mischnic/json-sourcemap@^0.1.0": version "0.1.1" @@ -4223,25 +4223,6 @@ uint8-varint "^2.0.1" uint8arrays "^5.0.0" -"@near-js/accounts@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@near-js/accounts/-/accounts-1.0.4.tgz#b699dc1c63ffccc1598481b4260dfaf2507f0a69" - integrity sha512-6zgSwq/rQ9ggPOIkGUx9RoEurbJiojqA/axeh6o1G+46GqUBI7SUcDooyVvZjeiOvUPObnTQptDYpbV+XZji8g== - dependencies: - "@near-js/crypto" "1.2.1" - "@near-js/providers" "0.1.1" - "@near-js/signers" "0.1.1" - "@near-js/transactions" "1.1.2" - "@near-js/types" "0.0.4" - "@near-js/utils" "0.1.0" - ajv "8.11.2" - ajv-formats "2.1.1" - bn.js "5.2.1" - borsh "1.0.0" - depd "2.0.0" - lru_map "0.4.1" - near-abi "0.1.1" - "@near-js/accounts@1.2.1", "@near-js/accounts@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@near-js/accounts/-/accounts-1.2.1.tgz#6e5c0315a07997bbaacbe7b9021ac23974a80ea0" @@ -4259,17 +4240,22 @@ lru_map "0.4.1" near-abi "0.1.1" -"@near-js/crypto@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@near-js/crypto/-/crypto-1.2.1.tgz#aa18bed171e68653dae9f82114636eba34ece32a" - integrity sha512-iJOHaGKvdudYfR8nEtRhGlgcTEHeVmxMoT0JVXmuP3peG96v/sSnA03CE6MZBeCC8txKAQOffagxE7oU6hJp9g== +"@near-js/accounts@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@near-js/accounts/-/accounts-1.2.2.tgz#c0ba5a4644c4438c0f339d842dec8d4d55d35cfb" + integrity sha512-8XInUVl8WwQyitRkG1HffZKhDmAXUwOaxurgkTYocDUUUp+ZB8NPxidg2uvj6f2wqnC8KAkjpm73wPoyRm6+yQ== dependencies: - "@near-js/types" "0.0.4" - "@near-js/utils" "0.1.0" - "@noble/curves" "1.2.0" - bn.js "5.2.1" + "@near-js/crypto" "1.3.0" + "@near-js/providers" "0.2.3" + "@near-js/signers" "0.1.5" + "@near-js/transactions" "1.2.3" + "@near-js/types" "0.2.1" + "@near-js/utils" "0.3.0" borsh "1.0.0" - randombytes "2.1.0" + depd "2.0.0" + is-my-json-valid "^2.20.6" + lru_map "0.4.1" + near-abi "0.1.1" "@near-js/crypto@1.2.4", "@near-js/crypto@^1.2.4": version "1.2.4" @@ -4282,6 +4268,18 @@ borsh "1.0.0" randombytes "2.1.0" +"@near-js/crypto@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@near-js/crypto/-/crypto-1.3.0.tgz#ddcfc2a1dc2ad9ac30df5f7ebd36d3408ac379bf" + integrity sha512-BIKO6v+rbYCzzrjsSV4KgClVgRiPluIXQ89B4ozIG8RjjBe/7IPFYF9tIxsXUyLzPFhISzeNQkL09ksHHmnymg== + dependencies: + "@near-js/types" "0.2.1" + "@near-js/utils" "0.3.0" + "@noble/curves" "1.2.0" + borsh "1.0.0" + randombytes "2.1.0" + secp256k1 "5.0.0" + "@near-js/keystores-browser@0.0.12": version "0.0.12" resolved "https://registry.yarnpkg.com/@near-js/keystores-browser/-/keystores-browser-0.0.12.tgz#2a9794a27d1e55ccb549125b29e183eb967fe52c" @@ -4290,13 +4288,13 @@ "@near-js/crypto" "1.2.4" "@near-js/keystores" "0.0.12" -"@near-js/keystores-browser@0.0.9": - version "0.0.9" - resolved "https://registry.yarnpkg.com/@near-js/keystores-browser/-/keystores-browser-0.0.9.tgz#4d6211ad617613124aeee78ede5771b153e3bcdd" - integrity sha512-JzPj+RHJN2G3CEm/LyfbtZDQy/wxgOlqfh52voqPGijUHg93b27KBqtZShazAgJNkhzRbWcoluWQnd2jL8vF7A== +"@near-js/keystores-browser@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@near-js/keystores-browser/-/keystores-browser-0.1.0.tgz#1cd5e08340067c6156c7d402859b70843afba948" + integrity sha512-v/4uFHKnbEXY4UcOAVCUSb3GKsVdrwv4uXBSPluvE16H9oxjB1+gfcz5qejwKp2cifYNCO0KfAWLnZas66Ohcg== dependencies: - "@near-js/crypto" "1.2.1" - "@near-js/keystores" "0.0.9" + "@near-js/crypto" "1.3.0" + "@near-js/keystores" "0.1.0" "@near-js/keystores-node@0.0.12": version "0.0.12" @@ -4306,13 +4304,13 @@ "@near-js/crypto" "1.2.4" "@near-js/keystores" "0.0.12" -"@near-js/keystores-node@0.0.9": - version "0.0.9" - resolved "https://registry.yarnpkg.com/@near-js/keystores-node/-/keystores-node-0.0.9.tgz#c2fd2f5bfbca1c75699dd7324e300cfd12e790ed" - integrity sha512-2B9MYz6uIhysG1fhQSjvaPYCM7gM+UAeDchX0J8QRauXIeN8TGzpcdgkdkMUnWNTIdt3Iblh0ZuCs+FY02dTXg== +"@near-js/keystores-node@0.0.13": + version "0.0.13" + resolved "https://registry.yarnpkg.com/@near-js/keystores-node/-/keystores-node-0.0.13.tgz#408952cbc9e8b5db419c7a6c89ebbf08185abaae" + integrity sha512-cnk2mwIRr7bCPgqz7KHU1Bqxm0u9J+FIubZ0AllFpMVMv8TJVVbs7FcsVIk282oeM7xxikjVJjs35DG6//Fehw== dependencies: - "@near-js/crypto" "1.2.1" - "@near-js/keystores" "0.0.9" + "@near-js/crypto" "1.3.0" + "@near-js/keystores" "0.1.0" "@near-js/keystores@0.0.12": version "0.0.12" @@ -4322,27 +4320,13 @@ "@near-js/crypto" "1.2.4" "@near-js/types" "0.2.1" -"@near-js/keystores@0.0.9": - version "0.0.9" - resolved "https://registry.yarnpkg.com/@near-js/keystores/-/keystores-0.0.9.tgz#768aaaab1beb7f797432513cb1bbf9430e305a85" - integrity sha512-j8ySgVEcm2Gg6zxkSdadNtPlIqhJZdPGfWWM3tPtEoowNS9snhwZn5NRFPrgmX0+MzpF7E091CRcY90MvRVhsg== - dependencies: - "@near-js/crypto" "1.2.1" - "@near-js/types" "0.0.4" - -"@near-js/providers@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@near-js/providers/-/providers-0.1.1.tgz#7489eb5a4248562fe98fdbc4cb55ea3f6d787e0a" - integrity sha512-0M/Vz2Ac34ShKVoe2ftVJ5Qg4eSbEqNXDbCDOdVj/2qbLWZa7Wpe+me5ei4TMY2ZhGdawhgJUPrYwdJzOCyf8w== +"@near-js/keystores@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@near-js/keystores/-/keystores-0.1.0.tgz#3c07fb4d2ec549598bc2db488d05e9fac8df1169" + integrity sha512-89EwYFDvPg7GnJAKmBDASKUSTXny0ZqgqDnSdhp7oJ78bXNlCs9xx0WnkK34TxFBnrL4c9szLjTkfGRcFT07NQ== dependencies: - "@near-js/transactions" "1.1.2" - "@near-js/types" "0.0.4" - "@near-js/utils" "0.1.0" - bn.js "5.2.1" - borsh "1.0.0" - http-errors "1.7.2" - optionalDependencies: - node-fetch "2.6.7" + "@near-js/crypto" "1.3.0" + "@near-js/types" "0.2.1" "@near-js/providers@0.2.2": version "0.2.2" @@ -4357,14 +4341,18 @@ optionalDependencies: node-fetch "2.6.7" -"@near-js/signers@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@near-js/signers/-/signers-0.1.1.tgz#6d32b262eac9b03fab5fc1ee93d2c4055c86980f" - integrity sha512-focJgs04dBUfawMnyGg3yIjaMawuVz2OeLRKC4t5IQDmO4PLfdIraEuwgS7tckMq3GdrJ7nqkwkpSNYpdt7I5Q== +"@near-js/providers@0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@near-js/providers/-/providers-0.2.3.tgz#e7d77fbdd8d6e024c0cf361b96663767bf4cb0f7" + integrity sha512-JBSze9fdoRXkOsFeLiooPWGm3vemY2dgHT0u0HoJCjpQtt41v7tr+6sWpxGWCaDwrzIwhm7og4qkGv4K9IxFVw== dependencies: - "@near-js/crypto" "1.2.1" - "@near-js/keystores" "0.0.9" - "@noble/hashes" "1.3.3" + "@near-js/transactions" "1.2.3" + "@near-js/types" "0.2.1" + "@near-js/utils" "0.3.0" + borsh "1.0.0" + http-errors "1.7.2" + optionalDependencies: + node-fetch "2.6.7" "@near-js/signers@0.1.4": version "0.1.4" @@ -4375,18 +4363,14 @@ "@near-js/keystores" "0.0.12" "@noble/hashes" "1.3.3" -"@near-js/transactions@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@near-js/transactions/-/transactions-1.1.2.tgz#7dec18b463cd336e325ee61b1e1c39a6192d9e81" - integrity sha512-AqYA56ncwgrWjIu+bNaWjTPRZb0O+SfpWIP7U+1FKNKxNYMCtkt6zp7SlQeZn743shKVq9qMzA9+ous/KCb0QQ== +"@near-js/signers@0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@near-js/signers/-/signers-0.1.5.tgz#4ad10d624f1b13579ce9db95e52a9a8b48251655" + integrity sha512-UldCktmR6HF6N2gPbgiUS8QPYCcDwjyzpdi3ukKezfY2NGA++F068ZwP50S+aQrtcwEBpECTo/Ps6pZq7cSVeQ== dependencies: - "@near-js/crypto" "1.2.1" - "@near-js/signers" "0.1.1" - "@near-js/types" "0.0.4" - "@near-js/utils" "0.1.0" + "@near-js/crypto" "1.3.0" + "@near-js/keystores" "0.1.0" "@noble/hashes" "1.3.3" - bn.js "5.2.1" - borsh "1.0.0" "@near-js/transactions@1.2.2": version "1.2.2" @@ -4400,29 +4384,23 @@ "@noble/hashes" "1.3.3" borsh "1.0.0" -"@near-js/types@0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@near-js/types/-/types-0.0.4.tgz#d941689df41c850aeeeaeb9d498418acec515404" - integrity sha512-8TTMbLMnmyG06R5YKWuS/qFG1tOA3/9lX4NgBqQPsvaWmDsa+D+QwOkrEHDegped0ZHQwcjAXjKML1S1TyGYKg== +"@near-js/transactions@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@near-js/transactions/-/transactions-1.2.3.tgz#c666a475ecfa9cfe3f0d14ad9717f46d0c206f04" + integrity sha512-wwkUupWrmKfdZmv6TmnTrskysX37F2SVHcns6BVwPjp6nFD29NAhul71I6u++8496Lq2FrgM1Kb8pEIpG9TV9w== dependencies: - bn.js "5.2.1" + "@near-js/crypto" "1.3.0" + "@near-js/signers" "0.1.5" + "@near-js/types" "0.2.1" + "@near-js/utils" "0.3.0" + "@noble/hashes" "1.3.3" + borsh "1.0.0" "@near-js/types@0.2.1", "@near-js/types@^0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@near-js/types/-/types-0.2.1.tgz#a298f0e70dbe059ee8c762dfac05c2eae3e0ae0e" integrity sha512-YygQEGMdFe6d2e/6dtNZer9paH396XeAdIKEhY/RPXDUnjDdfiDQ5DK4mM130sEeID2bAH9X1LQ+7vXGRjvyWw== -"@near-js/utils@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@near-js/utils/-/utils-0.1.0.tgz#1368f59008c39df1e903bd3e0f308eedcdf25c1d" - integrity sha512-kOVAXmJzaC8ElJD3RLEoBuqOK+d5s7jc0JkvhyEtbuEmXYHHAy9Q17/YkDcX9tyr01L85iOt66z0cODqzgtQwA== - dependencies: - "@near-js/types" "0.0.4" - bn.js "5.2.1" - bs58 "4.0.0" - depd "2.0.0" - mustache "4.0.0" - "@near-js/utils@0.2.2", "@near-js/utils@^0.2.2": version "0.2.2" resolved "https://registry.yarnpkg.com/@near-js/utils/-/utils-0.2.2.tgz#a42c29db9ccd5a02ad583319028fdb7231821ab2" @@ -4433,20 +4411,15 @@ depd "2.0.0" mustache "4.0.0" -"@near-js/wallet-account@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@near-js/wallet-account/-/wallet-account-1.1.1.tgz#e66e8d10fb51f71f7cb722bdff63fb98e2b0d486" - integrity sha512-NnoJKtogBQ7Qz+AP+LdF70BP8Az6UXQori7OjPqJLMo73bn6lh5Ywvegwd1EB7ZEVe4BRt9+f9QkbU5M8ANfAw== - dependencies: - "@near-js/accounts" "1.0.4" - "@near-js/crypto" "1.2.1" - "@near-js/keystores" "0.0.9" - "@near-js/signers" "0.1.1" - "@near-js/transactions" "1.1.2" - "@near-js/types" "0.0.4" - "@near-js/utils" "0.1.0" - bn.js "5.2.1" - borsh "1.0.0" +"@near-js/utils@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@near-js/utils/-/utils-0.3.0.tgz#7add9ea4d42c21a55a8346c1146f44b0e7d709fc" + integrity sha512-ExeWqP0b4subLcQuLDIixAZs6tiCWifDBz2OwU9ycntyjZslUUh4EKBaSS3mAEqhJ/t1B9WX80BntE/5PQ+JTg== + dependencies: + "@near-js/types" "0.2.1" + bs58 "4.0.0" + depd "2.0.0" + mustache "4.0.0" "@near-js/wallet-account@1.2.2": version "1.2.2" @@ -4463,6 +4436,21 @@ "@near-js/utils" "0.2.2" borsh "1.0.0" +"@near-js/wallet-account@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@near-js/wallet-account/-/wallet-account-1.2.3.tgz#48f8cdb75964428a6db1126b2484fa10cd29cdcf" + integrity sha512-yuYKKA8D06ztmbTvbajD8HBjP50x2NbMRPInsSSgNjBnvFA9f2J82SarzDLg+nTsayhMJdFGfArnKgIlO+bUaw== + dependencies: + "@near-js/accounts" "1.2.2" + "@near-js/crypto" "1.3.0" + "@near-js/keystores" "0.1.0" + "@near-js/providers" "0.2.3" + "@near-js/signers" "0.1.5" + "@near-js/transactions" "1.2.3" + "@near-js/types" "0.2.1" + "@near-js/utils" "0.3.0" + borsh "1.0.0" + "@near-snap/sdk@0.6.0": version "0.6.0" resolved "https://registry.yarnpkg.com/@near-snap/sdk/-/sdk-0.6.0.tgz#2c889dcb5c9e08c63363d600db3f66f7c7b40242" @@ -4470,7 +4458,19 @@ dependencies: "@near-wallet-selector/core" "^8.2.0" -"@near-wallet-selector/core@8.9.10", "@near-wallet-selector/core@^8.2.0": +"@near-wallet-selector/core@8.9.12": + version "8.9.12" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/core/-/core-8.9.12.tgz#6ce355fa70f4102122e812365726f82f884472a9" + integrity sha512-S23/IDi07kCr6JN28jxQZPQOwtp3MwZgMVbtwqZz2BP2N1puAFHIvKpUDrS2l2iZPBImHnU3tdOBvw6Yec7DjQ== + dependencies: + "@near-js/providers" "0.2.2" + borsh "0.7.0" + events "3.3.0" + js-sha256 "0.9.0" + near-api-js "4.0.3" + rxjs "7.8.1" + +"@near-wallet-selector/core@^8.2.0": version "8.9.10" resolved "https://registry.yarnpkg.com/@near-wallet-selector/core/-/core-8.9.10.tgz#0e19b22bbe69208c9e82b149682be37f6f9b76c5" integrity sha512-do+DDahRHPzr5VKiFS7NWKyNbspXu64/w7CuSBi8IUDsDsclmV7Os6Hp5HcVAq+X3Whi//NxKGX6mPMb+SRPqw== @@ -4480,13 +4480,13 @@ js-sha256 "0.9.0" rxjs "7.8.1" -"@near-wallet-selector/wallet-utils@^8.9.5": - version "8.9.10" - resolved "https://registry.yarnpkg.com/@near-wallet-selector/wallet-utils/-/wallet-utils-8.9.10.tgz#1e6d97464d995cccb4ec34314a1dd90e63901c39" - integrity sha512-Jq00IUAMvltaH8lvkaI8SRP6JWhqE4c0427ODSv+X10NwlkM8WKul9ZNZMxeCTC2ncZH23kDyaA+3MiYTX+DUg== +"@near-wallet-selector/wallet-utils@^8.9.12": + version "8.9.12" + resolved "https://registry.yarnpkg.com/@near-wallet-selector/wallet-utils/-/wallet-utils-8.9.12.tgz#fd36a2cedf43b7b78da3f9790b09f00d9d30daee" + integrity sha512-3KcZlaaiQ3OyQAqI48Px0dM7Bz3/6gLOgnNepk7BVEygX9h7CuDyVh5Ug3qgObbsDQ59vCLCDey0y0eI4BxkKQ== dependencies: - "@near-wallet-selector/core" "8.9.10" - bn.js "5.2.1" + "@near-wallet-selector/core" "8.9.12" + near-api-js "4.0.3" "@next/env@13.3.0": version "13.3.0" @@ -9024,16 +9024,6 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@8.11.2: - version "8.11.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78" - integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - ajv@8.12.0: version "8.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" @@ -9718,10 +9708,10 @@ before-after-hook@^2.2.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== -better-sqlite3@11.1.2: - version "11.1.2" - resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-11.1.2.tgz#6c9d064c9f1ff2a7f507477648ca0ba67bf564a3" - integrity sha512-gujtFwavWU4MSPT+h9B+4pkvZdyOUkH54zgLdIrMmmmd4ZqiBIrRNBzNzYVFO417xo882uP5HBu4GjOfaSrIQw== +better-sqlite3@11.2.1: + version "11.2.1" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-11.2.1.tgz#3c6b8a8e2e12444d380e811796b59c8aba012e03" + integrity sha512-Xbt1d68wQnUuFIEVsbt6V+RG30zwgbtCGQ4QOcXVrOH0FE4eHk64FWZ9NUfRHS4/x1PXqwz/+KOrnXD7f0WieA== dependencies: bindings "^1.5.0" prebuild-install "^7.1.1" @@ -9825,16 +9815,16 @@ bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@5.2.1, bn.js@^5.0.0, bn.js@^5.2.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== +bn.js@^5.0.0, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + body-parser@1.20.2: version "1.20.2" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" @@ -17778,26 +17768,23 @@ near-api-js@4.0.3, near-api-js@^4.0.0: near-abi "0.1.1" node-fetch "2.6.7" -near-api-js@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-3.0.4.tgz#5ee094ce53e30239cc817ca942ec3e9739296dbb" - integrity sha512-qKWjnugoB7kSFhzZ5GXyH/eABspCQYWBmWnM4hpV5ctnQBt89LqgEu9yD1z4sa89MvUu8BuCxwb1m00BE8iofg== - dependencies: - "@near-js/accounts" "1.0.4" - "@near-js/crypto" "1.2.1" - "@near-js/keystores" "0.0.9" - "@near-js/keystores-browser" "0.0.9" - "@near-js/keystores-node" "0.0.9" - "@near-js/providers" "0.1.1" - "@near-js/signers" "0.1.1" - "@near-js/transactions" "1.1.2" - "@near-js/types" "0.0.4" - "@near-js/utils" "0.1.0" - "@near-js/wallet-account" "1.1.1" +near-api-js@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-4.0.4.tgz#e04ef1fa051d3291c1a9bf1b4f07f880c49f80ca" + integrity sha512-IG+6NAMtn854palu/cIbVgey0OsIzllcajc3fbEbh7cb2pyPNMsfsBIO5WqsV+rY+7Tqr6lqYQ8f+4BHGUttyg== + dependencies: + "@near-js/accounts" "1.2.2" + "@near-js/crypto" "1.3.0" + "@near-js/keystores" "0.1.0" + "@near-js/keystores-browser" "0.1.0" + "@near-js/keystores-node" "0.0.13" + "@near-js/providers" "0.2.3" + "@near-js/signers" "0.1.5" + "@near-js/transactions" "1.2.3" + "@near-js/types" "0.2.1" + "@near-js/utils" "0.3.0" + "@near-js/wallet-account" "1.2.3" "@noble/curves" "1.2.0" - ajv "8.11.2" - ajv-formats "2.1.1" - bn.js "5.2.1" borsh "1.0.0" depd "2.0.0" http-errors "1.7.2" @@ -20160,6 +20147,15 @@ qrcode@1.5.3: pngjs "^5.0.0" yargs "^15.3.1" +qrcode@1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.4.tgz#5cb81d86eb57c675febb08cf007fff963405da88" + integrity sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg== + dependencies: + dijkstrajs "^1.0.1" + pngjs "^5.0.0" + yargs "^15.3.1" + qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -21055,7 +21051,7 @@ scrypt-js@3.0.1: resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -secp256k1@^5.0.0: +secp256k1@5.0.0, secp256k1@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-5.0.0.tgz#be6f0c8c7722e2481e9773336d351de8cddd12f7" integrity sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA== @@ -22577,10 +22573,10 @@ tslib@2.5.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== -tslib@2.6.3, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== +tslib@2.7.0, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== tsutils@^3.21.0: version "3.21.0"