From 7d41f2fec6a7a97c4746c4dbf1face287c3604f3 Mon Sep 17 00:00:00 2001 From: Jordan Date: Thu, 4 Jan 2024 19:09:29 -0600 Subject: [PATCH] particle fixes, changeset (#877) --- .changeset/popular-pants-cheat.md | 5 ++ packages/wallets/particle/package.json | 1 + packages/wallets/particle/src/adapter.ts | 68 ++++++-------------- pnpm-lock.yaml | 82 ++++++++++++++++++------ 4 files changed, 89 insertions(+), 67 deletions(-) create mode 100644 .changeset/popular-pants-cheat.md diff --git a/.changeset/popular-pants-cheat.md b/.changeset/popular-pants-cheat.md new file mode 100644 index 000000000..094377f73 --- /dev/null +++ b/.changeset/popular-pants-cheat.md @@ -0,0 +1,5 @@ +--- +'@solana/wallet-adapter-particle': patch +--- + +Update Particle adapter diff --git a/packages/wallets/particle/package.json b/packages/wallets/particle/package.json index 5156085d5..49da0a473 100644 --- a/packages/wallets/particle/package.json +++ b/packages/wallets/particle/package.json @@ -39,6 +39,7 @@ "@solana/wallet-adapter-base": "workspace:^" }, "devDependencies": { + "@metamask/eth-sig-util": "^7.0.1", "@solana/web3.js": "^1.77.3", "shx": "^0.3.4" } diff --git a/packages/wallets/particle/src/adapter.ts b/packages/wallets/particle/src/adapter.ts index 4d2c7926c..2e4a67ed1 100644 --- a/packages/wallets/particle/src/adapter.ts +++ b/packages/wallets/particle/src/adapter.ts @@ -1,4 +1,4 @@ -import type { Config, ParticleNetwork, SolanaWallet } from '@particle-network/solana-wallet'; +import type { ParticleNetwork, SolanaWallet } from '@particle-network/solana-wallet'; import type { WalletName } from '@solana/wallet-adapter-base'; import { BaseMessageSignerWalletAdapter, @@ -15,19 +15,10 @@ import { } from '@solana/wallet-adapter-base'; import type { Transaction } from '@solana/web3.js'; import { PublicKey } from '@solana/web3.js'; -import { LoginOptions } from '@particle-network/auth'; - -interface NestedConfig { - chainId?: number; - chainName?: string; - projectId: string; - clientKey: string; - appId: string; -} export interface ParticleAdapterConfig { - config?: NestedConfig; - preferredAuthType?: string; + config?: ConstructorParameters[0]; + login?: Parameters[0]; } export const ParticleName = 'Particle' as WalletName<'Particle'>; @@ -46,7 +37,7 @@ export class ParticleAdapter extends BaseMessageSignerWalletAdapter { private _readyState: WalletReadyState = typeof window === 'undefined' ? WalletReadyState.Unsupported : WalletReadyState.Loadable; - private _particleNetwork: ParticleNetwork | null = null; + private _particle: ParticleNetwork | null = null; constructor(config: ParticleAdapterConfig = {}) { super(); @@ -54,35 +45,21 @@ export class ParticleAdapter extends BaseMessageSignerWalletAdapter { this._publicKey = null; this._wallet = null; - const defaultNestedConfig: NestedConfig = { - projectId: '', - clientKey: '', - appId: '', - }; - - const nestedConfig: NestedConfig = { - ...defaultNestedConfig, - ...config.config, - }; - - const chainId = nestedConfig.chainId !== undefined ? nestedConfig.chainId : 101; - const chainName = nestedConfig.chainName !== undefined ? nestedConfig.chainName : 'solana'; - this._config = { - ...config, config: { - ...nestedConfig, - chainId, - chainName, - projectId: nestedConfig.projectId, - clientKey: nestedConfig.clientKey, - appId: nestedConfig.appId, + projectId: '', + clientKey: '', + appId: '', + ...config.config, + chainId: config.config?.chainId ?? 101, + chainName: config.config?.chainName ?? 'solana', }, + login: config.login, }; } - public get particle(): ParticleNetwork | null { - return this._particleNetwork; + get particle(): ParticleNetwork | null { + return this._particle; } get publicKey() { @@ -106,7 +83,6 @@ export class ParticleAdapter extends BaseMessageSignerWalletAdapter { let ParticleClass: typeof ParticleNetwork; let WalletClass: typeof SolanaWallet; - try { ({ ParticleNetwork: ParticleClass, SolanaWallet: WalletClass } = await import( '@particle-network/solana-wallet' @@ -115,17 +91,11 @@ export class ParticleAdapter extends BaseMessageSignerWalletAdapter { throw new WalletLoadError(error?.message, error); } - let particleNetwork: ParticleNetwork; - - const authOptions: LoginOptions = {}; - if (this._config.preferredAuthType) { - authOptions.preferredAuthType = this._config.preferredAuthType as LoginOptions['preferredAuthType']; - } - + let particle: ParticleNetwork; try { - particleNetwork = new ParticleClass(this._config?.config as Config); - if (!particleNetwork.auth.isLogin()) { - await particleNetwork.auth.login(authOptions); + particle = new ParticleClass(this._config.config); + if (!particle.auth.isLogin()) { + await particle.auth.login(this._config.login); } } catch (error: any) { throw new WalletConfigError(error?.message, error); @@ -133,7 +103,7 @@ export class ParticleAdapter extends BaseMessageSignerWalletAdapter { let wallet: SolanaWallet; try { - wallet = new WalletClass(particleNetwork.auth); + wallet = new WalletClass(particle.auth); } catch (error: any) { throw new WalletConfigError(error?.message, error); } @@ -148,8 +118,8 @@ export class ParticleAdapter extends BaseMessageSignerWalletAdapter { throw new WalletPublicKeyError(error?.message, error); } + this._particle = particle; this._wallet = wallet; - this._particleNetwork = particleNetwork; this._publicKey = publicKey; this.emit('connect', publicKey); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a22dd3509..acd6c3665 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -896,6 +896,9 @@ importers: specifier: workspace:^ version: link:../../core/base devDependencies: + '@metamask/eth-sig-util': + specifier: ^7.0.1 + version: 7.0.1 '@solana/web3.js': specifier: ^1.77.3 version: 1.78.0 @@ -3376,13 +3379,11 @@ packages: dependencies: '@ethereumjs/util': 8.1.0 crc-32: 1.2.2 - dev: false /@ethereumjs/rlp@4.0.1: resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} engines: {node: '>=14'} hasBin: true - dev: false /@ethereumjs/tx@4.2.0: resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} @@ -3392,7 +3393,6 @@ packages: '@ethereumjs/rlp': 4.0.1 '@ethereumjs/util': 8.1.0 ethereum-cryptography: 2.1.2 - dev: false /@ethereumjs/util@8.1.0: resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} @@ -3401,7 +3401,6 @@ packages: '@ethereumjs/rlp': 4.0.1 ethereum-cryptography: 2.1.2 micro-ftch: 0.3.1 - dev: false /@fivebinaries/coin-selection@2.2.0: resolution: {integrity: sha512-1j0GGlfXla6Ws51gmemyLBVtsROQBGhTMExSYmpRmLHGLpNuOsEA4O7P19yzjW209gSswcD9+T7zEYCNbp3MRg==} @@ -4143,6 +4142,30 @@ packages: read-yaml-file: 1.1.0 dev: true + /@metamask/abi-utils@2.0.2: + resolution: {integrity: sha512-B/A1dY/w4F/t6cDHUscklO6ovb/ztFsrsTXFd8QlqSByk/vyy+QbPE3VVpmmyI/7RX+PA1AJcvBdzCIz+r9dVQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@metamask/utils': 8.2.1 + superstruct: 1.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@metamask/eth-sig-util@7.0.1: + resolution: {integrity: sha512-59GSrMyFH2fPfu7nKeIQdZ150zxXNNhAQIUaFRUW+MGtVA4w/ONbiQobcRBLi+jQProfIyss51G8pfLPcQ0ylg==} + engines: {node: ^16.20 || ^18.16 || >=20} + dependencies: + '@ethereumjs/util': 8.1.0 + '@metamask/abi-utils': 2.0.2 + '@metamask/utils': 8.2.1 + ethereum-cryptography: 2.1.2 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + transitivePeerDependencies: + - supports-color + dev: true + /@metamask/rpc-errors@5.1.1: resolution: {integrity: sha512-JjZnDi2y2CfvbohhBl+FOQRzmFlJpybcQlIk37zEX8B96eVSPbH/T8S0p7cSF8IE33IWx6JkD8Ycsd+2TXFxCw==} engines: {node: '>=16.0.0'} @@ -4166,6 +4189,22 @@ packages: - supports-color dev: false + /@metamask/utils@8.2.1: + resolution: {integrity: sha512-dlnpow8r0YHDDL1xKCEwUoTGOAo9icdv+gaJG0EbgDnkD/BDqW2eH1XMtm9i7rPaiHWo/aLtcrh9WBhkCq/viw==} + engines: {node: '>=16.0.0'} + dependencies: + '@ethereumjs/tx': 4.2.0 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.5 + '@types/debug': 4.1.8 + debug: 4.3.4 + pony-cause: 2.1.10 + semver: 7.5.4 + superstruct: 1.0.3 + transitivePeerDependencies: + - supports-color + dev: true + /@mischnic/json-sourcemap@0.1.0: resolution: {integrity: sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA==} engines: {node: '>=12.0.0'} @@ -4562,7 +4601,6 @@ packages: /@noble/hashes@1.3.2: resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} engines: {node: '>= 16'} - dev: false /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -5814,22 +5852,23 @@ packages: /@scure/base@1.1.1: resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} - dev: false + + /@scure/base@1.1.5: + resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} + dev: true /@scure/bip32@1.3.1: resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} dependencies: '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.2 '@scure/base': 1.1.1 - dev: false /@scure/bip39@1.2.1: resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.2 '@scure/base': 1.1.1 - dev: false /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} @@ -6015,7 +6054,7 @@ packages: dependencies: '@babel/runtime': 7.23.5 '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.2 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.3.0 bigint-buffer: 1.1.5 @@ -6932,7 +6971,6 @@ packages: resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} dependencies: '@types/ms': 0.7.31 - dev: false /@types/eslint-scope@3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} @@ -7054,7 +7092,6 @@ packages: /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: false /@types/node-fetch@2.6.4: resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} @@ -8793,7 +8830,7 @@ packages: /bs58check@3.0.1: resolution: {integrity: sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==} dependencies: - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.2 bs58: 5.0.0 dev: false @@ -9346,7 +9383,6 @@ packages: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} hasBin: true - dev: false /crc@3.8.0: resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} @@ -10783,7 +10819,6 @@ packages: '@noble/hashes': 1.3.1 '@scure/bip32': 1.3.1 '@scure/bip39': 1.2.1 - dev: false /ev-emitter@2.1.2: resolution: {integrity: sha512-jQ5Ql18hdCQ4qS+RCrbLfz1n+Pags27q5TwMKvZyhp5hh2UULUYZUy1keqj6k6SYsdqIYjnmz7xyyEY0V67B8Q==} @@ -14351,7 +14386,6 @@ packages: /micro-ftch@0.3.1: resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - dev: false /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -15258,6 +15292,11 @@ packages: hasBin: true dev: true + /pony-cause@2.1.10: + resolution: {integrity: sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==} + engines: {node: '>=12.0.0'} + dev: true + /postcss-attribute-case-insensitive@5.0.2(postcss@8.4.26): resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} engines: {node: ^12 || ^14 || >=16} @@ -18462,7 +18501,6 @@ packages: /superstruct@1.0.3: resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==} engines: {node: '>=14.0.0'} - dev: false /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} @@ -18927,6 +18965,14 @@ packages: turbo-windows-arm64: 1.10.9 dev: true + /tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + dev: true + + /tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + dev: true + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'}