From 60bce323749e52fb24c33feaf4184dcda5d36e42 Mon Sep 17 00:00:00 2001 From: Tan Le Date: Tue, 19 Mar 2024 17:20:15 +0700 Subject: [PATCH 01/11] chore: revert tezos wallet connection --- apps/wallet/browser/content/tezos.ts | 239 +++ apps/wallet/browser/content/utils.ts | 70 +- apps/wallet/browser/kernel/handlers/kernel.ts | 9 + apps/wallet/browser/kernel/handlers/tezos.ts | 17 + .../wallet/browser/kernel/utils/middleware.ts | 37 +- apps/wallet/package.json | 2 + yarn.lock | 1456 ++++++++++++++++- 7 files changed, 1769 insertions(+), 61 deletions(-) create mode 100644 apps/wallet/browser/content/tezos.ts diff --git a/apps/wallet/browser/content/tezos.ts b/apps/wallet/browser/content/tezos.ts new file mode 100644 index 000000000..43a48901e --- /dev/null +++ b/apps/wallet/browser/content/tezos.ts @@ -0,0 +1,239 @@ +import type { + OperationRequest, + PermissionRequest, + PostMessagePairingRequest, + PostMessagePairingResponse, + SignPayloadRequest, + SignPayloadResponse, +} from '@airgap/beacon-sdk'; +import { + BeaconMessageType, + decryptCryptoboxPayload, + encryptCryptoboxPayload, + ExtensionMessageTarget, + NetworkType, + PermissionScope, + sealCryptobox, +} from '@airgap/beacon-sdk'; +import type { UnknownObject } from '@walless/core'; +import { Networks, RequestType } from '@walless/core'; +import { + createCryptoBoxClient, + createCryptoBoxServer, +} from '@walless/crypto/utils/p2p'; +import type { ConnectOptions } from '@walless/sdk'; + +import { + deserialize, + getDAppPublicKey, + getOrCreateKeypair, + messenger, + serialize, + storeDAppPublicKey, +} from './utils'; + +const TEZOS_PAIRING_REQUEST = 'postmessage-pairing-request'; +const TEZOS_PAIRING_RESPONSE = 'postmessage-pairing-response'; + +const ONE_MINUTE_TO_MS = 60000; + +const WALLESS_TEZOS = { + id: chrome.runtime.id, + name: 'Walless', + iconUrl: 'https://walless.io/img/walless-icon.svg', + appUrl: 'https://walless.io', + version: '3', +}; + +window.addEventListener('message', async (e) => { + const isNotTezosRequest = e.data?.target !== ExtensionMessageTarget.EXTENSION; + const wrongTarget = e.data?.targetId && e.data?.targetId !== WALLESS_TEZOS.id; + if (isNotTezosRequest || wrongTarget) { + return; + } + + if (e.data?.payload === 'ping') { + return handlePingPong(); + } else { + origin = e.origin; + let payload = e.data?.payload; + const encryptedPayload = e.data?.encryptedPayload; + if (payload) { + if (typeof payload === 'string') payload = deserialize(payload); + if (payload.type === TEZOS_PAIRING_REQUEST) { + return handlePairingRequest(payload); + } + } else if (encryptedPayload) { + handleEncryptedRequest(encryptedPayload); + } + } +}); + +const handlePingPong = () => { + window.postMessage({ + target: ExtensionMessageTarget.PAGE, + payload: 'pong', + sender: WALLESS_TEZOS, + }); +}; + +const handlePairingRequest = async (payload: PostMessagePairingRequest) => { + const keypair = await getOrCreateKeypair(origin, true); + const recipientPublicKey = await storeDAppPublicKey( + origin, + payload.publicKey, + ); + + const resPayload: PostMessagePairingResponse = { + type: TEZOS_PAIRING_RESPONSE, + publicKey: Buffer.from(keypair.publicKey).toString('hex'), + ...WALLESS_TEZOS, + }; + + const recipientPublicKeyBytes = Uint8Array.from( + Buffer.from(recipientPublicKey, 'hex'), + ); + + const encryptedPayload = await sealCryptobox( + JSON.stringify(resPayload), + recipientPublicKeyBytes, + ); + + window.postMessage({ + message: { + target: ExtensionMessageTarget.PAGE, + payload: encryptedPayload, + }, + sender: { id: WALLESS_TEZOS.id }, + }); +}; + +const handleEncryptedRequest = async (encryptedPayload: string) => { + if (typeof encryptedPayload !== 'string') return; + const payload = await decryptPayload(encryptedPayload); + if (!payload || !payload.type) return; + sendAckMessage(payload.id); + + if (payload.type === BeaconMessageType.PermissionRequest) { + handlePermissionRequest(payload as never); + } else if (payload.type === BeaconMessageType.Disconnect) { + handleDisconnect(); + } else if (payload.type === BeaconMessageType.SignPayloadRequest) { + handleSignPayloadRequest(payload as never); + } else if (payload.type === BeaconMessageType.OperationRequest) { + handleOperationRequest(payload as never); + } else { + console.log('not support this type of request'); + } +}; + +const handlePermissionRequest = async (payload: PermissionRequest) => { + // TODO: check network is valid or not, throw error if not + const res = await messenger.request<{ options: ConnectOptions }>( + 'kernel', + { + from: 'walless@sdk', + type: RequestType.REQUEST_CONNECT, + options: { + network: Networks.tezos, + domain: origin, + onlyIfTrusted: true, + }, + }, + ONE_MINUTE_TO_MS, + ); + + const resPayload = { + id: payload.id, + type: BeaconMessageType.PermissionResponse, + network: { type: NetworkType.MAINNET }, // TODO: handle custom networks + publicKey: res.publicKeys[0]?.meta?.publicKey, + scopes: [PermissionScope.OPERATION_REQUEST, PermissionScope.SIGN], + }; + + respondWithSharedKeyEncrypt(resPayload); +}; + +const handleSignPayloadRequest = async (payload: SignPayloadRequest) => { + const res = await messenger.request( + 'kernel', + { + from: 'walless@sdk', + type: RequestType.SIGN_PAYLOAD_ON_TEZOS, + payload: payload.payload, + signingType: payload.signingType, + }, + ONE_MINUTE_TO_MS, + ); + + const resPayload: SignPayloadResponse = { + id: payload.id, + signature: res.signature, + signingType: payload.signingType, + type: BeaconMessageType.SignPayloadResponse, + senderId: payload.senderId, + version: '2', + }; + + respondWithSharedKeyEncrypt(resPayload); +}; + +const handleOperationRequest = async (payload: OperationRequest) => { + // TODO: need to implement + console.log(payload); +}; + +const sendAckMessage = async (requestId: string) => { + const resPayload = { + type: BeaconMessageType.Acknowledge, + id: requestId, + }; + + respondWithSharedKeyEncrypt(resPayload); +}; + +const decryptPayload = async (encryptedPayload: string) => { + const keypair = await getOrCreateKeypair(origin); + const recipientPublicKey = await getDAppPublicKey(origin); + const sharedKey = await createCryptoBoxServer(recipientPublicKey, keypair); + try { + const payload = await decryptCryptoboxPayload( + Buffer.from(encryptedPayload, 'hex'), + sharedKey.receive, + ); + + return deserialize(payload); + } catch (e) { + // TODO: need to respond error to client side + console.log('error decrypting payload', e); + handleDisconnect(); + } +}; + +const respondWithSharedKeyEncrypt = async (payload: UnknownObject) => { + const keypair = await getOrCreateKeypair(origin); + const recipientPublicKey = await getDAppPublicKey(origin); + const sharedKey = await createCryptoBoxClient(recipientPublicKey, keypair); + const encryptedPayload = await encryptCryptoboxPayload( + serialize(payload), + sharedKey.send, + ); + + window.postMessage({ + message: { + target: ExtensionMessageTarget.PAGE, + encryptedPayload, + }, + sender: { id: WALLESS_TEZOS.id }, + }); +}; + +const handleDisconnect = () => { + messenger.request<{ options: ConnectOptions }>('kernel', { + from: 'walless@sdk', + type: RequestType.REQUEST_DISCONNECT, + options: { + domain: origin, + }, + }); +}; diff --git a/apps/wallet/browser/content/utils.ts b/apps/wallet/browser/content/utils.ts index aa65851b5..7107ad57c 100644 --- a/apps/wallet/browser/content/utils.ts +++ b/apps/wallet/browser/content/utils.ts @@ -1,6 +1,12 @@ +import type { UnknownObject } from '@walless/core'; +import { + extractPublicKeyFromSecretKey, + generateKeyPair, +} from '@walless/crypto/utils/p2p'; import { createMessenger } from '@walless/messaging'; +import { decode, encode } from 'bs58check'; -const messenger = createMessenger(); +export const messenger = createMessenger(); export const initializeMessaging = async () => { window.postMessage({ from: 'walless-content-script-loaded' }); @@ -37,3 +43,65 @@ export const injectScript = (scriptUri: string) => { console.error('script injection failed.', error); } }; + +export const serialize = (data: UnknownObject): string => { + return encode(Buffer.from(JSON.stringify(data))); +}; + +export const deserialize = (encoded: string): UnknownObject => { + return JSON.parse(decode(encoded).toString()); +}; + +export const getOrCreateKeypair = async (origin: string, create = false) => { + if (!origin) throw Error('require origin'); + + const key = 'transport_secret_key:' + origin; + if (create) { + const keypair = generateKeyPair(); + chrome.storage.local.set({ + [key]: Buffer.from(keypair.secretKey).toString('hex'), + }); + + return keypair; + } else { + const result = await chrome.storage.local.get([key]); + const secretKeyString = result[key] as string; + + if (secretKeyString) { + const secretKey = new Uint8Array(Buffer.from(secretKeyString, 'hex')); + const keypair = { + publicKey: extractPublicKeyFromSecretKey(secretKey), + secretKey, + }; + + return keypair; + } else { + const keypair = generateKeyPair(); + chrome.storage.local.set({ + transport_secret_key: Buffer.from(keypair.secretKey).toString('hex'), + }); + + return keypair; + } + } +}; + +export const storeDAppPublicKey = async (origin: string, publicKey: string) => { + if (!origin) throw Error('require origin'); + const key = 'dapp_public_key:' + origin; + await chrome.storage.local.set({ [key]: publicKey }); + + return publicKey; +}; + +export const getDAppPublicKey = async (origin: string) => { + if (!origin) throw Error('require origin'); + + const key = 'dapp_public_key:' + origin; + const result = await chrome.storage.local.get([key]); + const publicKey = result[key]; + + if (!publicKey) throw Error('Not found dapp public key'); + + return publicKey; +}; diff --git a/apps/wallet/browser/kernel/handlers/kernel.ts b/apps/wallet/browser/kernel/handlers/kernel.ts index d497ca15f..b4e56c89b 100644 --- a/apps/wallet/browser/kernel/handlers/kernel.ts +++ b/apps/wallet/browser/kernel/handlers/kernel.ts @@ -5,6 +5,7 @@ import { handle } from '../utils/handle'; import { checkApproval, checkConnection, + deserializePayloadToMessageOnTezos, filterSDKSignatureRequest, forwardToSourceRequest, getPrivateKey, @@ -82,6 +83,14 @@ export const onKernelMessage: MessengerCallback = async (payload, channel) => { getPrivateKey(Networks.sui), sui.signAndExecuteTransaction, ]); + } else if (payload.type === RequestType.SIGN_PAYLOAD_ON_TEZOS) { + handle(payload).execute([ + deserializePayloadToMessageOnTezos, + filterSDKSignatureRequest, + getPrivateKey(Networks.tezos), + forwardToSourceRequest, + tezos.signPayload, + ]); } else if (payload.type === RequestType.TRANSFER_TEZOS_TOKEN) { handle(payload).execute([ getPrivateKey(Networks.tezos), diff --git a/apps/wallet/browser/kernel/handlers/tezos.ts b/apps/wallet/browser/kernel/handlers/tezos.ts index 4b642ad51..8565d2ba5 100644 --- a/apps/wallet/browser/kernel/handlers/tezos.ts +++ b/apps/wallet/browser/kernel/handlers/tezos.ts @@ -1,6 +1,8 @@ +import { InMemorySigner } from '@taquito/signer'; import { TezosToolkit } from '@taquito/taquito'; import { ResponseCode } from '@walless/core'; import { tezos } from '@walless/network'; +import { encode } from 'bs58'; import { environment } from 'utils/config'; import { respond } from '../utils/requestPool'; @@ -20,6 +22,21 @@ const tezosToolkit = new TezosToolkit( : tezosEndpoints.ghostnetTestnet, ); +export const signPayload: HandleMethod<{ + privateKey?: Uint8Array; + payload?: string; +}> = async ({ payload }) => { + if (!payload.privateKey || !payload.payload) { + throw Error('Missing privateKey or message'); + } + + const privateKey = encode(payload.privateKey); + const signer = await InMemorySigner.fromSecretKey(privateKey); + const { prefixSig } = await signer.sign(payload.payload as string); + + respond(payload.requestId, ResponseCode.SUCCESS, { signature: prefixSig }); +}; + export const transferToken: HandleMethod<{ privateKey?: Uint8Array; transaction?: string; diff --git a/apps/wallet/browser/kernel/utils/middleware.ts b/apps/wallet/browser/kernel/utils/middleware.ts index eee54e22b..0f5c6e324 100644 --- a/apps/wallet/browser/kernel/utils/middleware.ts +++ b/apps/wallet/browser/kernel/utils/middleware.ts @@ -47,13 +47,14 @@ export const checkConnection: HandleMethod<{ const domainResponse = await storage.find(selectors.trustedDomains); const trustedDomains = domainResponse.docs as TrustedDomainDocument[]; const savedDomain = trustedDomains.find(({ _id }) => _id == domain); + if (!savedDomain || !savedDomain.connect) { Object.values(requestPool).forEach((ele) => { - if ( + const isDuplicatedRequest = ele.payload.requestId !== payload.requestId && ele.payload.type === RequestType.REQUEST_CONNECT && - ele.payload.options.domain === domain - ) { + ele.payload.options.domain === domain; + if (isDuplicatedRequest) { respond(ele.payload.requestId, ResponseCode.ERROR); closePopup(ele.payload.popupId); } @@ -121,3 +122,33 @@ export const forwardToSourceRequest: HandleMethod<{ next?.(payload); } }; + +export const deserializePayloadToMessageOnTezos: HandleMethod<{ + payload?: string; + signingType?: string; +}> = ({ payload, next }) => { + if (payload.from === 'walless@sdk') { + if (!payload.payload || !payload.signingType) + throw Error('Missing payload or signingType'); + + let message: string; + try { + if (payload.signingType === 'raw') { + message = Buffer.from(payload.payload, 'hex').toString(); + payload.message = message; + } else if ( + payload.signingType === 'operation' || + payload.signingType === 'micheline' + ) { + message = Buffer.from(payload.payload, 'hex').toString(); + payload.message = message; + } else { + throw Error(`can not handle this signing type ${payload.signingType}`); + } + } catch (e) { + console.log('deserialize failed', e); + } + } + + next?.(payload); +}; diff --git a/apps/wallet/package.json b/apps/wallet/package.json index b19ccba9a..b33f3f4c0 100644 --- a/apps/wallet/package.json +++ b/apps/wallet/package.json @@ -20,6 +20,8 @@ "test": "jest --passWithNoTests" }, "dependencies": { + "@airgap/beacon-sdk": "^4.0.12", + "@airgap/beacon-utils": "^4.0.12", "@babel/plugin-proposal-export-namespace-from": "^7.18.9", "@coral-xyz/anchor": "^0.29.0", "@craftzdog/pouchdb-collate-react-native": "^7.3.0", diff --git a/yarn.lock b/yarn.lock index 4f059f1ee..b1f639c70 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,6 +31,153 @@ __metadata: languageName: node linkType: hard +"@airgap/beacon-blockchain-substrate@npm:4.1.2": + version: 4.1.2 + resolution: "@airgap/beacon-blockchain-substrate@npm:4.1.2" + dependencies: + "@airgap/beacon-types": 4.1.2 + "@airgap/beacon-ui": 4.1.2 + checksum: 5415bd489aeeea1a2931a4e2def7dd99b56ca399d381327531be25614019d1b30495df11e2f30962144d244975a7313414b884fff00297f68211a270186a9e26 + languageName: node + linkType: hard + +"@airgap/beacon-blockchain-tezos@npm:4.1.2": + version: 4.1.2 + resolution: "@airgap/beacon-blockchain-tezos@npm:4.1.2" + dependencies: + "@airgap/beacon-types": 4.1.2 + "@airgap/beacon-ui": 4.1.2 + checksum: 44ab2e69d817ffe20744b656072183d42811eb8ca189844f972659bb72c2d1b24b7b6edbc432ac7f74e5a5fe1ef1742dd26524587bbdaa38a7cfd3841eb26742 + languageName: node + linkType: hard + +"@airgap/beacon-core@npm:4.1.2": + version: 4.1.2 + resolution: "@airgap/beacon-core@npm:4.1.2" + dependencies: + "@airgap/beacon-types": 4.1.2 + "@airgap/beacon-utils": 4.1.2 + "@stablelib/ed25519": ^1.0.3 + "@stablelib/nacl": ^1.0.4 + "@stablelib/utf8": ^1.0.1 + "@stablelib/x25519-session": ^1.0.4 + bs58check: 2.1.2 + checksum: 7f28cf74e9de4431de7ce190c05d8bec3f490e471d1f614692a1d01abea5c381a753ae61b0ad3cdf1696ede34333e0d70bd36173806df90d63990c31190ec53e + languageName: node + linkType: hard + +"@airgap/beacon-dapp@npm:4.1.2": + version: 4.1.2 + resolution: "@airgap/beacon-dapp@npm:4.1.2" + dependencies: + "@airgap/beacon-core": 4.1.2 + "@airgap/beacon-transport-matrix": 4.1.2 + "@airgap/beacon-transport-postmessage": 4.1.2 + "@airgap/beacon-transport-walletconnect": 4.1.2 + "@airgap/beacon-ui": 4.1.2 + checksum: 1cda839193bf3093c0150e7a5889b8af1711a04f5a6546281a21281f427d29f79d71b323741acbac154e13606a5f475c91932d8c3b07bcde56c87ce222e0999d + languageName: node + linkType: hard + +"@airgap/beacon-sdk@npm:^4.0.12": + version: 4.1.2 + resolution: "@airgap/beacon-sdk@npm:4.1.2" + dependencies: + "@airgap/beacon-blockchain-substrate": 4.1.2 + "@airgap/beacon-blockchain-tezos": 4.1.2 + "@airgap/beacon-core": 4.1.2 + "@airgap/beacon-dapp": 4.1.2 + "@airgap/beacon-transport-matrix": 4.1.2 + "@airgap/beacon-transport-postmessage": 4.1.2 + "@airgap/beacon-types": 4.1.2 + "@airgap/beacon-ui": 4.1.2 + "@airgap/beacon-utils": 4.1.2 + "@airgap/beacon-wallet": 4.1.2 + checksum: 53034c6ea1b1fa2b4a6d933caab2bdcc433f8ceb33b551c5ab875179371ab7f5e9694fd96dc657b4ae67ddc889471d3cba75a3d48fc5b643a8e5108f34cac662 + languageName: node + linkType: hard + +"@airgap/beacon-transport-matrix@npm:4.1.2": + version: 4.1.2 + resolution: "@airgap/beacon-transport-matrix@npm:4.1.2" + dependencies: + "@airgap/beacon-core": 4.1.2 + "@airgap/beacon-utils": 4.1.2 + axios: ^1.6.2 + checksum: b298d49c6a4a3b26e57e2398280f56784978f22edb6dff424dc123e119619cd59562e445372f00b581170a2302084726822dc02e293dd5adac45c0d00addd5ac + languageName: node + linkType: hard + +"@airgap/beacon-transport-postmessage@npm:4.1.2": + version: 4.1.2 + resolution: "@airgap/beacon-transport-postmessage@npm:4.1.2" + dependencies: + "@airgap/beacon-core": 4.1.2 + "@airgap/beacon-types": 4.1.2 + "@airgap/beacon-utils": 4.1.2 + checksum: d0bba4e9bcfd3265887353a8a7640e95e2ecda847eba82e193145c4175b461492e20125626b18701a7d2bc810002945e3d87f584242a2298b6a87ab7c3bfb044 + languageName: node + linkType: hard + +"@airgap/beacon-transport-walletconnect@npm:4.1.2": + version: 4.1.2 + resolution: "@airgap/beacon-transport-walletconnect@npm:4.1.2" + dependencies: + "@airgap/beacon-core": 4.1.2 + "@airgap/beacon-types": 4.1.2 + "@airgap/beacon-utils": 4.1.2 + "@walletconnect/sign-client": ^2.10.6 + checksum: e95c1160e647c7ff4eefcf050bc9e27829cb295833d5b610908bfa2d9e10f18593c7e26837ec83487379853d2a8a158ce8441ac3e16e41d4f33980b22a8413d7 + languageName: node + linkType: hard + +"@airgap/beacon-types@npm:4.1.2": + version: 4.1.2 + resolution: "@airgap/beacon-types@npm:4.1.2" + dependencies: + "@types/chrome": 0.0.246 + checksum: c8256c37e4f40bf372bbae0c5ecc2d91ab3d102d9b007cf08bca37749c28ce15c0d537adf6ec2ad720df825502f1808f066bcbf30567b2a0a8736862f8fd32b0 + languageName: node + linkType: hard + +"@airgap/beacon-ui@npm:4.1.2": + version: 4.1.2 + resolution: "@airgap/beacon-ui@npm:4.1.2" + dependencies: + "@airgap/beacon-core": 4.1.2 + "@airgap/beacon-transport-postmessage": 4.1.2 + "@airgap/beacon-types": 4.1.2 + "@airgap/beacon-utils": 4.1.2 + qrcode-svg: ^1.1.0 + solid-js: ^1.7.11 + checksum: 4f3e8004462163750b095a4b4cf9768ef5c61e8a3ffd63c8877f0c2480d0c6acf954f280dd496128304bd7c0a2e10efd29f2c5a15fa674f169931fcb8140ca33 + languageName: node + linkType: hard + +"@airgap/beacon-utils@npm:4.1.2, @airgap/beacon-utils@npm:^4.0.12": + version: 4.1.2 + resolution: "@airgap/beacon-utils@npm:4.1.2" + dependencies: + "@stablelib/ed25519": ^1.0.3 + "@stablelib/nacl": ^1.0.4 + "@stablelib/random": ^1.0.2 + "@stablelib/utf8": ^1.0.1 + bs58check: 2.1.2 + checksum: 0b4228bffb2ed724bde1205fe4e5a3d6857fa0afa2fb4d42b4a45d4d8d1be94119fb07e4fffa31b6d2fd04fe220bd92e5f25cbef66a340aa9f1310f69edf21c4 + languageName: node + linkType: hard + +"@airgap/beacon-wallet@npm:4.1.2": + version: 4.1.2 + resolution: "@airgap/beacon-wallet@npm:4.1.2" + dependencies: + "@airgap/beacon-core": 4.1.2 + "@airgap/beacon-transport-matrix": 4.1.2 + "@airgap/beacon-transport-postmessage": 4.1.2 + checksum: 2105cc430b39d010b2d51d09f1bc0a3365513fafe6c800f5855f94f2770081c205027dd9997211b9843b8b2ffba98921613ed8d3e9ce2c0c92b457e4db364f27 + languageName: node + linkType: hard + "@alcalzone/ansi-tokenize@npm:^0.1.3": version: 0.1.3 resolution: "@alcalzone/ansi-tokenize@npm:0.1.3" @@ -6928,6 +7075,151 @@ __metadata: languageName: node linkType: hard +"@parcel/watcher-android-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-android-arm64@npm:2.4.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-darwin-arm64@npm:2.4.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-darwin-x64@npm:2.4.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-freebsd-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-freebsd-x64@npm:2.4.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.1" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-musl@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-musl@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-wasm@npm:^2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-wasm@npm:2.4.1" + dependencies: + is-glob: ^4.0.3 + micromatch: ^4.0.5 + napi-wasm: ^1.1.0 + checksum: 8ac9585b5aac43d7125ea326482b733fbe4564ed68846624647a93899885290a5a3e26c71d16adfc43dec98a69ee73256aa714f53b430be1ef501b6c69973b2e + languageName: node + linkType: hard + +"@parcel/watcher-win32-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-arm64@npm:2.4.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-win32-ia32@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-ia32@npm:2.4.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@parcel/watcher-win32-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-x64@npm:2.4.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher@npm:^2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher@npm:2.4.1" + dependencies: + "@parcel/watcher-android-arm64": 2.4.1 + "@parcel/watcher-darwin-arm64": 2.4.1 + "@parcel/watcher-darwin-x64": 2.4.1 + "@parcel/watcher-freebsd-x64": 2.4.1 + "@parcel/watcher-linux-arm-glibc": 2.4.1 + "@parcel/watcher-linux-arm64-glibc": 2.4.1 + "@parcel/watcher-linux-arm64-musl": 2.4.1 + "@parcel/watcher-linux-x64-glibc": 2.4.1 + "@parcel/watcher-linux-x64-musl": 2.4.1 + "@parcel/watcher-win32-arm64": 2.4.1 + "@parcel/watcher-win32-ia32": 2.4.1 + "@parcel/watcher-win32-x64": 2.4.1 + detect-libc: ^1.0.3 + is-glob: ^4.0.3 + micromatch: ^4.0.5 + node-addon-api: ^7.0.0 + node-gyp: latest + dependenciesMeta: + "@parcel/watcher-android-arm64": + optional: true + "@parcel/watcher-darwin-arm64": + optional: true + "@parcel/watcher-darwin-x64": + optional: true + "@parcel/watcher-freebsd-x64": + optional: true + "@parcel/watcher-linux-arm-glibc": + optional: true + "@parcel/watcher-linux-arm64-glibc": + optional: true + "@parcel/watcher-linux-arm64-musl": + optional: true + "@parcel/watcher-linux-x64-glibc": + optional: true + "@parcel/watcher-linux-x64-musl": + optional: true + "@parcel/watcher-win32-arm64": + optional: true + "@parcel/watcher-win32-ia32": + optional: true + "@parcel/watcher-win32-x64": + optional: true + checksum: 4da70551da27e565c726b0bbd5ba5afcb2bca36dfd8619a649f0eaa41f693ddd1d630c36e53bc083895d71a3e28bc4199013e557cd13c7af6ccccab28ceecbff + languageName: node + linkType: hard + "@peculiar/asn1-schema@npm:^2.3.6": version: 2.3.8 resolution: "@peculiar/asn1-schema@npm:2.3.8" @@ -8647,6 +8939,13 @@ __metadata: languageName: node linkType: hard +"@stablelib/aead@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/aead@npm:1.0.1" + checksum: 1a6f68d138f105d17dd65349751515bd252ab0498c77255b8555478d28415600dde493f909eb718245047a993f838dfae546071e1687566ffb7b8c3e10c918d9 + languageName: node + linkType: hard + "@stablelib/binary@npm:^1.0.1": version: 1.0.1 resolution: "@stablelib/binary@npm:1.0.1" @@ -8674,6 +8973,30 @@ __metadata: languageName: node linkType: hard +"@stablelib/chacha20poly1305@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/chacha20poly1305@npm:1.0.1" + dependencies: + "@stablelib/aead": ^1.0.1 + "@stablelib/binary": ^1.0.1 + "@stablelib/chacha": ^1.0.1 + "@stablelib/constant-time": ^1.0.1 + "@stablelib/poly1305": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: 81f1a32330838d31e4dc3144d76eba7244b56d9ea38c1f604f2c34d93ed8e67e9a6167d2cfd72254c13cc46dfc1f5ce5157b37939a575295d69d9144abb4e4fb + languageName: node + linkType: hard + +"@stablelib/chacha@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/chacha@npm:1.0.1" + dependencies: + "@stablelib/binary": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: f061f36c4ca4bf177dd7cac11e7c65ced164f141b6065885141ae5a55f32e16ba0209aefcdcc966aef013f1da616ce901a3a80653b4b6f833cf7e3397ae2d6bd + languageName: node + linkType: hard + "@stablelib/constant-time@npm:^1.0.1": version: 1.0.1 resolution: "@stablelib/constant-time@npm:1.0.1" @@ -8681,7 +9004,7 @@ __metadata: languageName: node linkType: hard -"@stablelib/ed25519@npm:^1.0.3": +"@stablelib/ed25519@npm:^1.0.2, @stablelib/ed25519@npm:^1.0.3": version: 1.0.3 resolution: "@stablelib/ed25519@npm:1.0.3" dependencies: @@ -8699,6 +9022,17 @@ __metadata: languageName: node linkType: hard +"@stablelib/hkdf@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/hkdf@npm:1.0.1" + dependencies: + "@stablelib/hash": ^1.0.1 + "@stablelib/hmac": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: 9d45e303715a1835c8612b78e6c1b9d2b7463699b484241d8681fb5c17e0f2bbde5ce211c882134b64616a402e09177baeba80426995ff227b3654a155ab225d + languageName: node + linkType: hard + "@stablelib/hmac@npm:^1.0.1": version: 1.0.1 resolution: "@stablelib/hmac@npm:1.0.1" @@ -8761,7 +9095,7 @@ __metadata: languageName: node linkType: hard -"@stablelib/random@npm:^1.0.2": +"@stablelib/random@npm:^1.0.1, @stablelib/random@npm:^1.0.2": version: 1.0.2 resolution: "@stablelib/random@npm:1.0.2" dependencies: @@ -8782,6 +9116,17 @@ __metadata: languageName: node linkType: hard +"@stablelib/sha256@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/sha256@npm:1.0.1" + dependencies: + "@stablelib/binary": ^1.0.1 + "@stablelib/hash": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: 38669871e1bda72eb537629ebceac1c72da8890273a9fbe088f81f6d14c1ec04e78be8c5b455380a06c67f8e62b2508e11e9063fcc257dbaa1b5c27ac756ba77 + languageName: node + linkType: hard + "@stablelib/sha512@npm:^1.0.1": version: 1.0.1 resolution: "@stablelib/sha512@npm:1.0.1" @@ -8793,6 +9138,13 @@ __metadata: languageName: node linkType: hard +"@stablelib/utf8@npm:^1.0.1": + version: 1.0.2 + resolution: "@stablelib/utf8@npm:1.0.2" + checksum: 3ab01baa4eb36eece44a310bf6b2e4313e8d585fc04dbcf8a5dc2d239f06071f34038b85aad6fbd98e9969f0b3b0584fcb541fe5e512c8f0cc0982b9fe1290a3 + languageName: node + linkType: hard + "@stablelib/wipe@npm:^1.0.1": version: 1.0.1 resolution: "@stablelib/wipe@npm:1.0.1" @@ -10852,6 +11204,16 @@ __metadata: languageName: node linkType: hard +"@types/chrome@npm:0.0.246": + version: 0.0.246 + resolution: "@types/chrome@npm:0.0.246" + dependencies: + "@types/filesystem": "*" + "@types/har-format": "*" + checksum: 6c6d92814b9838bbb1034d0cf731e53f8bb0090dc3e4a248c0e7c4c087fba305702ebf61b80858fec60f52858cb9ecf8148dbe9e94a20d742661085f31ee9cc7 + languageName: node + linkType: hard + "@types/chrome@npm:^0.0.231": version: 0.0.231 resolution: "@types/chrome@npm:0.0.231" @@ -11717,6 +12079,8 @@ __metadata: version: 0.0.0-use.local resolution: "@walless/wallet@workspace:apps/wallet" dependencies: + "@airgap/beacon-sdk": ^4.0.12 + "@airgap/beacon-utils": ^4.0.12 "@babel/plugin-proposal-export-namespace-from": ^7.18.9 "@coral-xyz/anchor": ^0.29.0 "@craftzdog/pouchdb-collate-react-native": ^7.3.0 @@ -11862,70 +12226,309 @@ __metadata: languageName: node linkType: hard -"@wasm-tool/wasm-pack-plugin@npm:^1.6.0": - version: 1.7.0 - resolution: "@wasm-tool/wasm-pack-plugin@npm:1.7.0" +"@walletconnect/core@npm:2.11.3": + version: 2.11.3 + resolution: "@walletconnect/core@npm:2.11.3" + dependencies: + "@walletconnect/heartbeat": 1.2.1 + "@walletconnect/jsonrpc-provider": 1.0.13 + "@walletconnect/jsonrpc-types": 1.0.3 + "@walletconnect/jsonrpc-utils": 1.0.8 + "@walletconnect/jsonrpc-ws-connection": 1.0.14 + "@walletconnect/keyvaluestorage": ^1.1.1 + "@walletconnect/logger": ^2.0.1 + "@walletconnect/relay-api": ^1.0.9 + "@walletconnect/relay-auth": ^1.0.4 + "@walletconnect/safe-json": ^1.0.2 + "@walletconnect/time": ^1.0.2 + "@walletconnect/types": 2.11.3 + "@walletconnect/utils": 2.11.3 + events: ^3.3.0 + isomorphic-unfetch: 3.1.0 + lodash.isequal: 4.5.0 + uint8arrays: ^3.1.0 + checksum: 75bef3c4f09971c4e38abb01fe9497580c4c6f3f33e4841f240bbbeca38c241f482c8d6205d4a4bf961fdcfd02a214733800bb10a5745170ed94e2834ab9dfc3 + languageName: node + linkType: hard + +"@walletconnect/environment@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/environment@npm:1.0.1" dependencies: - chalk: ^2.4.1 - command-exists: ^1.2.7 - watchpack: ^2.1.1 - which: ^2.0.2 - checksum: b0a09f70827b262c4b4689296aae712cc7d9fb742e32eb7e7b720a5b45be1d256864c84c37c8f97de4c762cdae9c35be4a37cdea6832281056921edf4944aea4 + tslib: 1.14.1 + checksum: a18731d857bdca73910147e59992cef3c6e292c37ab3d3013307bd706f06cb216aa804f0f48b25a78df6493ad8127e633629f4b50acb4f69d3765d6ac0524f68 languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": - version: 1.11.6 - resolution: "@webassemblyjs/ast@npm:1.11.6" +"@walletconnect/events@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/events@npm:1.0.1" dependencies: - "@webassemblyjs/helper-numbers": 1.11.6 - "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - checksum: 38ef1b526ca47c210f30975b06df2faf1a8170b1636ce239fc5738fc231ce28389dd61ecedd1bacfc03cbe95b16d1af848c805652080cb60982836eb4ed2c6cf + keyvaluestorage-interface: ^1.0.0 + tslib: 1.14.1 + checksum: d28aa4dcc981bdaf38f0aeed979731ca793cead7e7a4ee730a9146d99d89db09a86c8e3192ed860638283276961c0723ba00cf3b8776f0692b36ec7df6c01be4 languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" - checksum: 29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 +"@walletconnect/heartbeat@npm:1.2.1": + version: 1.2.1 + resolution: "@walletconnect/heartbeat@npm:1.2.1" + dependencies: + "@walletconnect/events": ^1.0.1 + "@walletconnect/time": ^1.0.2 + tslib: 1.14.1 + checksum: df4d492a2d336283f834bc205c09b795f85cd507a61b14745dc2124e510a250fefbd83d51216f93df2e0aa0cf8120134db2679de8019eddd63877e9928997952 languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" - checksum: e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f +"@walletconnect/jsonrpc-provider@npm:1.0.13": + version: 1.0.13 + resolution: "@walletconnect/jsonrpc-provider@npm:1.0.13" + dependencies: + "@walletconnect/jsonrpc-utils": ^1.0.8 + "@walletconnect/safe-json": ^1.0.2 + tslib: 1.14.1 + checksum: 497dfdd9f988432f171bc98336f3583c679059f0a166f95d6e51c8e1937c17abd9a5fd3aadfcebf6964bae14edd1e05fb0453e370d6e3bbc7ff4919fcad7c478 languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" - checksum: b14d0573bf680d22b2522e8a341ec451fddd645d1f9c6bd9012ccb7e587a2973b86ab7b89fe91e1c79939ba96095f503af04369a3b356c8023c13a5893221644 +"@walletconnect/jsonrpc-types@npm:1.0.3, @walletconnect/jsonrpc-types@npm:^1.0.2, @walletconnect/jsonrpc-types@npm:^1.0.3": + version: 1.0.3 + resolution: "@walletconnect/jsonrpc-types@npm:1.0.3" + dependencies: + keyvaluestorage-interface: ^1.0.0 + tslib: 1.14.1 + checksum: 26e6f1d8f4207328d3df465c36d0d67844772863dc8e9e78e6cfec417cfc359300eab049d99ea558982b3f0948f4ca26b75253bdf635ffd82ffe30a5276b790c languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" +"@walletconnect/jsonrpc-utils@npm:1.0.8, @walletconnect/jsonrpc-utils@npm:^1.0.6, @walletconnect/jsonrpc-utils@npm:^1.0.8": + version: 1.0.8 + resolution: "@walletconnect/jsonrpc-utils@npm:1.0.8" dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.6 - "@webassemblyjs/helper-api-error": 1.11.6 - "@xtuc/long": 4.2.2 - checksum: f4b562fa219f84368528339e0f8d273ad44e047a07641ffcaaec6f93e5b76fd86490a009aa91a294584e1436d74b0a01fa9fde45e333a4c657b58168b04da424 + "@walletconnect/environment": ^1.0.1 + "@walletconnect/jsonrpc-types": ^1.0.3 + tslib: 1.14.1 + checksum: f43a85dfce8150c3e3d1f009e8d8241ab8e10b026ea435f0918edf4db6b3a17586ba9d9c54a93cc61e4d3c685611e5bd5954fc377a581af503acd38e6d84c2ef languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" - checksum: 3535ef4f1fba38de3475e383b3980f4bbf3de72bbb631c2b6584c7df45be4eccd62c6ff48b5edd3f1bcff275cfd605a37679ec199fc91fd0a7705d7f1e3972dc +"@walletconnect/jsonrpc-ws-connection@npm:1.0.14": + version: 1.0.14 + resolution: "@walletconnect/jsonrpc-ws-connection@npm:1.0.14" + dependencies: + "@walletconnect/jsonrpc-utils": ^1.0.6 + "@walletconnect/safe-json": ^1.0.2 + events: ^3.3.0 + ws: ^7.5.1 + checksum: a401e60b19390098183ef1b2a7b3e15c4dd3c64f9ac87fd2bbc0ae1f7fb31539ba542374ca021193efc4a2ae59fa3b04e588aed98cdf5c364f50524403d50f9f languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" +"@walletconnect/keyvaluestorage@npm:^1.1.1": + version: 1.1.1 + resolution: "@walletconnect/keyvaluestorage@npm:1.1.1" + dependencies: + "@walletconnect/safe-json": ^1.0.1 + idb-keyval: ^6.2.1 + unstorage: ^1.9.0 + peerDependencies: + "@react-native-async-storage/async-storage": 1.x + peerDependenciesMeta: + "@react-native-async-storage/async-storage": + optional: true + checksum: 7f85cb83963153417745367742070ccb78e03bd62adb549de57a7d5fae7bcfbd9a8f42b2f445ca76a3817ffacacc69d85bbf67757c3616ee7b3525f2f8a0faea + languageName: node + linkType: hard + +"@walletconnect/logger@npm:^2.0.1": + version: 2.0.1 + resolution: "@walletconnect/logger@npm:2.0.1" + dependencies: + pino: 7.11.0 + tslib: 1.14.1 + checksum: b686679d176d5d22a3441d93e71be2652e6c447682a6d6f014baf7c2d9dcd23b93e2f434d4410e33cc532d068333f6b3c1d899aeb0d6f60cc296ed17f57b0c2c + languageName: node + linkType: hard + +"@walletconnect/relay-api@npm:^1.0.9": + version: 1.0.9 + resolution: "@walletconnect/relay-api@npm:1.0.9" + dependencies: + "@walletconnect/jsonrpc-types": ^1.0.2 + tslib: 1.14.1 + checksum: 5870579b6552f1ce7351878f1acb8386b0c11288c64d39133c7cee5040feeb7ccf9114228d97a59749d60366ad107b097d656407d534567c24f5d3878ea6e246 + languageName: node + linkType: hard + +"@walletconnect/relay-auth@npm:^1.0.4": + version: 1.0.4 + resolution: "@walletconnect/relay-auth@npm:1.0.4" + dependencies: + "@stablelib/ed25519": ^1.0.2 + "@stablelib/random": ^1.0.1 + "@walletconnect/safe-json": ^1.0.1 + "@walletconnect/time": ^1.0.2 + tslib: 1.14.1 + uint8arrays: ^3.0.0 + checksum: 35b3229d7b57e74fdb8fe6827d8dd8291dc60bacda880a57b2acb47a34d38f12be46c971c9eff361eb4073e896648b550de7a7a3852ef3752f9619c08dfba891 + languageName: node + linkType: hard + +"@walletconnect/safe-json@npm:^1.0.1, @walletconnect/safe-json@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/safe-json@npm:1.0.2" + dependencies: + tslib: 1.14.1 + checksum: fee03fcc70adb5635ab9419ea6ec6555aa2467bef650ad3b9526451c3a5cf247836db0f3ae3bb435d2e585d99e50c2ebe7dc9c429cfa3df900cf3fe4bd06d37f + languageName: node + linkType: hard + +"@walletconnect/sign-client@npm:^2.10.6": + version: 2.11.3 + resolution: "@walletconnect/sign-client@npm:2.11.3" + dependencies: + "@walletconnect/core": 2.11.3 + "@walletconnect/events": ^1.0.1 + "@walletconnect/heartbeat": 1.2.1 + "@walletconnect/jsonrpc-utils": 1.0.8 + "@walletconnect/logger": ^2.0.1 + "@walletconnect/time": ^1.0.2 + "@walletconnect/types": 2.11.3 + "@walletconnect/utils": 2.11.3 + events: ^3.3.0 + checksum: 5bb322a691f22ba54983d6a2f6440ff18ce7a415b869520d3c3bc6514cf3018e2435e1a4b11e1f77636cc5ad3402519385b098ad426b3921f292dc5cfc6e4120 + languageName: node + linkType: hard + +"@walletconnect/time@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/time@npm:1.0.2" + dependencies: + tslib: 1.14.1 + checksum: e3fc0113ca9e7ecedfc65f9e1517196682d5ffcda60750f51073b8d704719a17fea75da8b242c804bfa5b994707723043892a2db3cc86988b190b7b8711fe3c0 + languageName: node + linkType: hard + +"@walletconnect/types@npm:2.11.3": + version: 2.11.3 + resolution: "@walletconnect/types@npm:2.11.3" + dependencies: + "@walletconnect/events": ^1.0.1 + "@walletconnect/heartbeat": 1.2.1 + "@walletconnect/jsonrpc-types": 1.0.3 + "@walletconnect/keyvaluestorage": ^1.1.1 + "@walletconnect/logger": ^2.0.1 + events: ^3.3.0 + checksum: a8afbffa401fab7c8c67ac5c3f12638d0d14a763c3b3000f71b77a3d5f451498e6ede5f9ab7c112db48f620fbcb892ac55ebac0dbfa2ce1bd9159e9aa291b5b2 + languageName: node + linkType: hard + +"@walletconnect/utils@npm:2.11.3": + version: 2.11.3 + resolution: "@walletconnect/utils@npm:2.11.3" + dependencies: + "@stablelib/chacha20poly1305": 1.0.1 + "@stablelib/hkdf": 1.0.1 + "@stablelib/random": ^1.0.2 + "@stablelib/sha256": 1.0.1 + "@stablelib/x25519": ^1.0.3 + "@walletconnect/relay-api": ^1.0.9 + "@walletconnect/safe-json": ^1.0.2 + "@walletconnect/time": ^1.0.2 + "@walletconnect/types": 2.11.3 + "@walletconnect/window-getters": ^1.0.1 + "@walletconnect/window-metadata": ^1.0.1 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: ^3.1.0 + checksum: b62b80ad2ea02d799637b1014894e8b227d68e4e79c1267b7ffccf2176acf79387cf7f909923739a1b7a7f2084fd50149bc7528a5a2fb9991671e88637ebd7ac + languageName: node + linkType: hard + +"@walletconnect/window-getters@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/window-getters@npm:1.0.1" + dependencies: + tslib: 1.14.1 + checksum: fae312c4e1be5574d97f071de58e6aa0d0296869761499caf9d4a9a5fd2643458af32233a2120521b00873a599ff88457d405bd82ced5fb5bd6dc3191c07a3e5 + languageName: node + linkType: hard + +"@walletconnect/window-metadata@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/window-metadata@npm:1.0.1" + dependencies: + "@walletconnect/window-getters": ^1.0.1 + tslib: 1.14.1 + checksum: e82aea7195c6fe95c00e87bb38051c5549838c2e8302da94f1afa48206f79f0b620166c9820f847494505d282d1568e2086a1561b0493d2d0a1fa115f9106aef + languageName: node + linkType: hard + +"@wasm-tool/wasm-pack-plugin@npm:^1.6.0": + version: 1.7.0 + resolution: "@wasm-tool/wasm-pack-plugin@npm:1.7.0" + dependencies: + chalk: ^2.4.1 + command-exists: ^1.2.7 + watchpack: ^2.1.1 + which: ^2.0.2 + checksum: b0a09f70827b262c4b4689296aae712cc7d9fb742e32eb7e7b720a5b45be1d256864c84c37c8f97de4c762cdae9c35be4a37cdea6832281056921edf4944aea4 + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/ast@npm:1.11.6" + dependencies: + "@webassemblyjs/helper-numbers": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + checksum: 38ef1b526ca47c210f30975b06df2faf1a8170b1636ce239fc5738fc231ce28389dd61ecedd1bacfc03cbe95b16d1af848c805652080cb60982836eb4ed2c6cf + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" + checksum: b14d0573bf680d22b2522e8a341ec451fddd645d1f9c6bd9012ccb7e587a2973b86ab7b89fe91e1c79939ba96095f503af04369a3b356c8023c13a5893221644 + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser": 1.11.6 + "@webassemblyjs/helper-api-error": 1.11.6 + "@xtuc/long": 4.2.2 + checksum: f4b562fa219f84368528339e0f8d273ad44e047a07641ffcaaec6f93e5b76fd86490a009aa91a294584e1436d74b0a01fa9fde45e333a4c657b58168b04da424 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 3535ef4f1fba38de3475e383b3980f4bbf3de72bbb631c2b6584c7df45be4eccd62c6ff48b5edd3f1bcff275cfd605a37679ec199fc91fd0a7705d7f1e3972dc + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" dependencies: "@webassemblyjs/ast": 1.11.6 "@webassemblyjs/helper-buffer": 1.11.6 @@ -12218,7 +12821,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": +"acorn@npm:^8.11.3, acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": version: 8.11.3 resolution: "acorn@npm:8.11.3" bin: @@ -12464,7 +13067,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": +"anymatch@npm:^3.0.3, anymatch@npm:^3.1.3, anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: @@ -12924,6 +13527,13 @@ __metadata: languageName: node linkType: hard +"atomic-sleep@npm:^1.0.0": + version: 1.0.0 + resolution: "atomic-sleep@npm:1.0.0" + checksum: b95275afb2f80732f22f43a60178430c468906a415a7ff18bcd0feeebc8eec3930b51250aeda91a476062a90e07132b43a1794e8d8ffcf9b650e8139be75fa36 + languageName: node + linkType: hard + "atomically@npm:^1.7.0": version: 1.7.0 resolution: "atomically@npm:1.7.0" @@ -13097,6 +13707,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:^1.6.2": + version: 1.6.8 + resolution: "axios@npm:1.6.8" + dependencies: + follow-redirects: ^1.15.6 + form-data: ^4.0.0 + proxy-from-env: ^1.1.0 + checksum: bf007fa4b207d102459300698620b3b0873503c6d47bf5a8f6e43c0c64c90035a4f698b55027ca1958f61ab43723df2781c38a99711848d232cad7accbcdfcdd + languageName: node + linkType: hard + "babel-core@npm:^7.0.0-bridge.0": version: 7.0.0-bridge.0 resolution: "babel-core@npm:7.0.0-bridge.0" @@ -13739,7 +14360,7 @@ __metadata: languageName: node linkType: hard -"bs58check@npm:^2.1.2": +"bs58check@npm:2.1.2, bs58check@npm:^2.1.2": version: 2.1.2 resolution: "bs58check@npm:2.1.2" dependencies: @@ -14194,6 +14815,25 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^3.6.0": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: ~3.1.2 + braces: ~3.0.2 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.6.0 + dependenciesMeta: + fsevents: + optional: true + checksum: d2f29f499705dcd4f6f3bbed79a9ce2388cf530460122eed3b9c48efeab7a4e28739c6551fd15bec9245c6b9eeca7a32baa64694d64d9b6faeb74ddb8c4a413d + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -14232,6 +14872,15 @@ __metadata: languageName: node linkType: hard +"citty@npm:^0.1.5, citty@npm:^0.1.6": + version: 0.1.6 + resolution: "citty@npm:0.1.6" + dependencies: + consola: ^3.2.3 + checksum: 3fbcaaea92d328deddb5aba7d629d9076d4f1aa0338f59db7ea647a8f51eedc14b7f6218c87ad03c9e3c126213ba87d13d7774f9c30d64209f4b074aa83bd6ab + languageName: node + linkType: hard + "cjs-module-lexer@npm:^1.0.0": version: 1.2.3 resolution: "cjs-module-lexer@npm:1.2.3" @@ -14332,6 +14981,17 @@ __metadata: languageName: node linkType: hard +"clipboardy@npm:^4.0.0": + version: 4.0.0 + resolution: "clipboardy@npm:4.0.0" + dependencies: + execa: ^8.0.1 + is-wsl: ^3.1.0 + is64bit: ^2.0.0 + checksum: ac7fa4438451d4a509fd7163505c08be92087c1a0ab8f54f8063eb04a69191ded1b59333344e2fd60bad9688e2a3dd69e50a813bf05ebf8369fa8bf65a0f47a2 + languageName: node + linkType: hard + "cliui@npm:^6.0.0": version: 6.0.0 resolution: "cliui@npm:6.0.0" @@ -14676,6 +15336,13 @@ __metadata: languageName: node linkType: hard +"consola@npm:^3.2.3": + version: 3.2.3 + resolution: "consola@npm:3.2.3" + checksum: 32ec70e177dd2385c42e38078958cc7397be91db21af90c6f9faa0b16168b49b1c61d689338604bbb2d64370b9347a35f42a9197663a913d3a405bb0ce728499 + languageName: node + linkType: hard + "console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -14731,6 +15398,13 @@ __metadata: languageName: node linkType: hard +"cookie-es@npm:^1.0.0": + version: 1.0.0 + resolution: "cookie-es@npm:1.0.0" + checksum: e8721cf4d38f3e44049c9118874b323f4f674b1c5cef84a2b888f5bf86ad720ad17b51b43150cad7535a375c24e2921da603801ad28aa6125c3d36c031b41468 + languageName: node + linkType: hard + "cookie-signature@npm:1.0.6": version: 1.0.6 resolution: "cookie-signature@npm:1.0.6" @@ -14950,6 +15624,18 @@ __metadata: languageName: node linkType: hard +"crossws@npm:^0.2.0, crossws@npm:^0.2.2": + version: 0.2.4 + resolution: "crossws@npm:0.2.4" + peerDependencies: + uWebSockets.js: "*" + peerDependenciesMeta: + uWebSockets.js: + optional: true + checksum: dcaf730a3af32cf081ab49fdb9c31192a738d7e0585585975e581e71a3d7d14df8d3b42ba183e13e34a1fc26645f695362abf30c40369d12652bcee372a484c3 + languageName: node + linkType: hard + "crypt@npm:0.0.2": version: 0.0.2 resolution: "crypt@npm:0.0.2" @@ -15085,7 +15771,7 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^3.0.2": +"csstype@npm:^3.0.2, csstype@npm:^3.1.0": version: 3.1.3 resolution: "csstype@npm:3.1.3" checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 @@ -15322,6 +16008,13 @@ __metadata: languageName: node linkType: hard +"defu@npm:^6.1.3, defu@npm:^6.1.4": + version: 6.1.4 + resolution: "defu@npm:6.1.4" + checksum: 40e3af6338f195ac1564f53d1887fa2d0429ac7e8c081204bc4d29191180059d3952b5f4e08fe5df8d59eb873aa26e9c88b56d4fac699673d4a372c93620b229 + languageName: node + linkType: hard + "delay@npm:^5.0.0": version: 5.0.0 resolution: "delay@npm:5.0.0" @@ -15408,6 +16101,13 @@ __metadata: languageName: node linkType: hard +"destr@npm:^2.0.1, destr@npm:^2.0.3": + version: 2.0.3 + resolution: "destr@npm:2.0.3" + checksum: 4521b145ba6118919a561f7d979d623793695a516d1b9df704de81932601bf9cf21c47278e1cb93a309c88a14f4fd1f18680bb49ebef8b2546cc7f415e7ae48e + languageName: node + linkType: hard + "destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" @@ -15415,6 +16115,13 @@ __metadata: languageName: node linkType: hard +"detect-browser@npm:5.3.0": + version: 5.3.0 + resolution: "detect-browser@npm:5.3.0" + checksum: dd6e08d55da1d9e0f22510ac79872078ae03d9dfa13c5e66c96baedc1c86567345a88f96949161f6be8f3e0fafa93bf179bdb1cd311b14f5f163112fcc70ab49 + languageName: node + linkType: hard + "detect-indent@npm:^6.0.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" @@ -15422,6 +16129,15 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: daaaed925ffa7889bd91d56e9624e6c8033911bb60f3a50a74a87500680652969dbaab9526d1e200a4c94acf80fc862a22131841145a0a8482d60a99c24f4a3e + languageName: node + linkType: hard + "detect-libc@npm:^2.0.0": version: 2.0.2 resolution: "detect-libc@npm:2.0.2" @@ -15651,6 +16367,18 @@ __metadata: languageName: node linkType: hard +"duplexify@npm:^4.1.2": + version: 4.1.3 + resolution: "duplexify@npm:4.1.3" + dependencies: + end-of-stream: ^1.4.1 + inherits: ^2.0.3 + readable-stream: ^3.1.1 + stream-shift: ^1.0.2 + checksum: 9636a027345de3dd3c801594d01a7c73d9ce260019538beb1ee650bba7544e72f40a4d4902b52e1ab283dc32a06f210d42748773af02ff15e3064a9659deab7f + languageName: node + linkType: hard + "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -16736,6 +17464,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:^8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^8.0.1 + human-signals: ^5.0.0 + is-stream: ^3.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^5.1.0 + onetime: ^6.0.0 + signal-exit: ^4.1.0 + strip-final-newline: ^3.0.0 + checksum: cac1bf86589d1d9b73bdc5dda65c52012d1a9619c44c526891956745f7b366ca2603d29fe3f7460bacc2b48c6eab5d6a4f7afe0534b31473d3708d1265545e1f + languageName: node + linkType: hard + "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" @@ -16910,6 +17655,13 @@ __metadata: languageName: node linkType: hard +"fast-redact@npm:^3.0.0": + version: 3.4.1 + resolution: "fast-redact@npm:3.4.1" + checksum: 5c44a27b4593d357c13126d80c2bc10aa821f9105a93ab86f46efbc773b33a87e27d176e863e74d59cb7bc579206a5b1f1c00f72f11d048532497d4dd7437a82 + languageName: node + linkType: hard + "fast-stable-stringify@npm:^1.0.0": version: 1.0.0 resolution: "fast-stable-stringify@npm:1.0.0" @@ -17252,6 +18004,16 @@ __metadata: languageName: node linkType: hard +"follow-redirects@npm:^1.15.6": + version: 1.15.6 + resolution: "follow-redirects@npm:1.15.6" + peerDependenciesMeta: + debug: + optional: true + checksum: a62c378dfc8c00f60b9c80cab158ba54e99ba0239a5dd7c81245e5a5b39d10f0c35e249c3379eae719ff0285fff88c365dd446fab19dee771f1d76252df1bbf5 + languageName: node + linkType: hard + "for-each@npm:^0.3.3": version: 0.3.3 resolution: "for-each@npm:0.3.3" @@ -17536,6 +18298,13 @@ __metadata: languageName: node linkType: hard +"get-port-please@npm:^3.1.2": + version: 3.1.2 + resolution: "get-port-please@npm:3.1.2" + checksum: 8e65b56459ead2f31c446d76bb8eb639c33e04e72b07a4dd5d8acc39738f12962591e90b2befecf10492844d0d11c2122c281f5204ee48692d4a8ba0ec68733a + languageName: node + linkType: hard + "get-port@npm:^6.1.2": version: 6.1.2 resolution: "get-port@npm:6.1.2" @@ -17568,6 +18337,13 @@ __metadata: languageName: node linkType: hard +"get-stream@npm:^8.0.1": + version: 8.0.1 + resolution: "get-stream@npm:8.0.1" + checksum: 01e3d3cf29e1393f05f44d2f00445c5f9ec3d1c49e8179b31795484b9c117f4c695e5e07b88b50785d5c8248a788c85d9913a79266fc77e3ef11f78f10f1b974 + languageName: node + linkType: hard + "get-symbol-description@npm:^1.0.0": version: 1.0.0 resolution: "get-symbol-description@npm:1.0.0" @@ -17866,6 +18642,24 @@ __metadata: languageName: node linkType: hard +"h3@npm:^1.10.2, h3@npm:^1.11.1": + version: 1.11.1 + resolution: "h3@npm:1.11.1" + dependencies: + cookie-es: ^1.0.0 + crossws: ^0.2.2 + defu: ^6.1.4 + destr: ^2.0.3 + iron-webcrypto: ^1.0.0 + ohash: ^1.1.3 + radix3: ^1.1.0 + ufo: ^1.4.0 + uncrypto: ^0.1.3 + unenv: ^1.9.0 + checksum: 505ef90cf095f5a6c1e7fb7f26e83b44477634c31eda4459b683e96837ba33d163e89599b3a883e645688b761ffa754ff1f77a432c4e229bf5ab916272e0bee5 + languageName: node + linkType: hard + "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" @@ -18195,6 +18989,13 @@ __metadata: languageName: node linkType: hard +"http-shutdown@npm:^1.2.2": + version: 1.2.2 + resolution: "http-shutdown@npm:1.2.2" + checksum: 5dccd94f4fe4f51f9cbd7ec4586121160cd6470728e581662ea8032724440d891c4c92b8210b871ac468adadb3c99c40098ad0f752a781a550abae49dfa26206 + languageName: node + linkType: hard + "http2-wrapper@npm:^1.0.0-beta.5.2": version: 1.0.3 resolution: "http2-wrapper@npm:1.0.3" @@ -18239,6 +19040,13 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^5.0.0": + version: 5.0.0 + resolution: "human-signals@npm:5.0.0" + checksum: 6504560d5ed91444f16bea3bd9dfc66110a339442084e56c3e7fa7bbdf3f406426d6563d662bdce67064b165eac31eeabfc0857ed170aaa612cf14ec9f9a464c + languageName: node + linkType: hard + "humanize-ms@npm:^1.2.1": version: 1.2.1 resolution: "humanize-ms@npm:1.2.1" @@ -18282,6 +19090,13 @@ __metadata: languageName: node linkType: hard +"idb-keyval@npm:^6.2.1": + version: 6.2.1 + resolution: "idb-keyval@npm:6.2.1" + checksum: 7c0836f832096086e99258167740181132a71dd2694c8b8454a4f5ec69114ba6d70983115153306f0b6de1c8d3bad04f67eed3dff8f50c96815b9985d6d78470 + languageName: node + linkType: hard + "idb@npm:7.0.1": version: 7.0.1 resolution: "idb@npm:7.0.1" @@ -18566,6 +19381,13 @@ __metadata: languageName: node linkType: hard +"iron-webcrypto@npm:^1.0.0": + version: 1.1.0 + resolution: "iron-webcrypto@npm:1.1.0" + checksum: 75cdc0931a9ff701dfd699c48eeeb855bc07c2525f72f4086d0790e18133e44e8253949cf109240c149aa0b823f376c4eff4b2e69d4540914d54b2200b19f460 + languageName: node + linkType: hard + "is-absolute@npm:^1.0.0": version: 1.0.0 resolution: "is-absolute@npm:1.0.0" @@ -18722,6 +19544,15 @@ __metadata: languageName: node linkType: hard +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90 + languageName: node + linkType: hard + "is-extendable@npm:^0.1.1": version: 0.1.1 resolution: "is-extendable@npm:0.1.1" @@ -18805,6 +19636,17 @@ __metadata: languageName: node linkType: hard +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: ^3.0.0 + bin: + is-inside-container: cli.js + checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03 + languageName: node + linkType: hard + "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" @@ -18954,6 +19796,13 @@ __metadata: languageName: node linkType: hard +"is-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "is-stream@npm:3.0.0" + checksum: 172093fe99119ffd07611ab6d1bcccfe8bc4aa80d864b15f43e63e54b7abc71e779acd69afdb854c4e2a67fdc16ae710e370eda40088d1cfc956a50ed82d8f16 + languageName: node + linkType: hard + "is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" @@ -19053,6 +19902,24 @@ __metadata: languageName: node linkType: hard +"is-wsl@npm:^3.1.0": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" + dependencies: + is-inside-container: ^1.0.0 + checksum: f9734c81f2f9cf9877c5db8356bfe1ff61680f1f4c1011e91278a9c0564b395ae796addb4bf33956871041476ec82c3e5260ed57b22ac91794d4ae70a1d2f0a9 + languageName: node + linkType: hard + +"is64bit@npm:^2.0.0": + version: 2.0.0 + resolution: "is64bit@npm:2.0.0" + dependencies: + system-architecture: ^0.1.0 + checksum: 253079e64b6f9bb90295a63b73a046bea67364cdc104bc5abeffcf4cbc52b3e66b0e921cb14f686deb71b5cab628f9f490845c1194c6e94f84068d177c7f15cd + languageName: node + linkType: hard + "isarray@npm:0.0.1": version: 0.0.1 resolution: "isarray@npm:0.0.1" @@ -19095,6 +19962,16 @@ __metadata: languageName: node linkType: hard +"isomorphic-unfetch@npm:3.1.0": + version: 3.1.0 + resolution: "isomorphic-unfetch@npm:3.1.0" + dependencies: + node-fetch: ^2.6.1 + unfetch: ^4.2.0 + checksum: 82b92fe4ec2823a81ab0fc0d11bd94d710e6f9a940d56b3cba31896d4345ec9ffc7949f4ff31ebcae84f6b95f7ebf3474c4c7452b834eb4078ea3f2c37e459c5 + languageName: node + linkType: hard + "isomorphic-ws@npm:^4.0.1": version: 4.0.1 resolution: "isomorphic-ws@npm:4.0.1" @@ -19728,7 +20605,7 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^1.17.1, jiti@npm:^1.18.2": +"jiti@npm:^1.17.1, jiti@npm:^1.18.2, jiti@npm:^1.21.0": version: 1.21.0 resolution: "jiti@npm:1.21.0" bin: @@ -20015,6 +20892,13 @@ __metadata: languageName: node linkType: hard +"jsonc-parser@npm:^3.2.0": + version: 3.2.1 + resolution: "jsonc-parser@npm:3.2.1" + checksum: 656d9027b91de98d8ab91b3aa0d0a4cab7dc798a6830845ca664f3e76c82d46b973675bbe9b500fae1de37fd3e81aceacbaa2a57884bf2f8f29192150d2d1ef7 + languageName: node + linkType: hard + "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0" @@ -20101,6 +20985,13 @@ __metadata: languageName: node linkType: hard +"keyvaluestorage-interface@npm:^1.0.0": + version: 1.0.0 + resolution: "keyvaluestorage-interface@npm:1.0.0" + checksum: e20530e71b738dc094ad170a91a98d4b9bdc772dd9044b23cdaaa102aafa8997b1ac867550a1e66ba1d64fcaa949214df31aed18413b4bac31e5fe1f2c76c9de + languageName: node + linkType: hard + "kind-of@npm:^5.0.0": version: 5.1.0 resolution: "kind-of@npm:5.1.0" @@ -20265,6 +21156,35 @@ __metadata: languageName: node linkType: hard +"listhen@npm:^1.7.2": + version: 1.7.2 + resolution: "listhen@npm:1.7.2" + dependencies: + "@parcel/watcher": ^2.4.1 + "@parcel/watcher-wasm": ^2.4.1 + citty: ^0.1.6 + clipboardy: ^4.0.0 + consola: ^3.2.3 + crossws: ^0.2.0 + defu: ^6.1.4 + get-port-please: ^3.1.2 + h3: ^1.10.2 + http-shutdown: ^1.2.2 + jiti: ^1.21.0 + mlly: ^1.6.1 + node-forge: ^1.3.1 + pathe: ^1.1.2 + std-env: ^3.7.0 + ufo: ^1.4.0 + untun: ^0.1.3 + uqr: ^0.1.2 + bin: + listen: bin/listhen.mjs + listhen: bin/listhen.mjs + checksum: 92b160ab493bbdb4941ba7fbfc7e0815b4c1da9ca01f792df2e77da13a6b726086d62d57cd2da51242c47a463d59a68798666fb8b64338510e2edf8dc2e7a1c3 + languageName: node + linkType: hard + "listr2@npm:^4.0.5": version: 4.0.5 resolution: "listr2@npm:4.0.5" @@ -20381,7 +21301,7 @@ __metadata: languageName: node linkType: hard -"lodash.isequal@npm:^4.5.0": +"lodash.isequal@npm:4.5.0, lodash.isequal@npm:^4.5.0": version: 4.5.0 resolution: "lodash.isequal@npm:4.5.0" checksum: da27515dc5230eb1140ba65ff8de3613649620e8656b19a6270afe4866b7bd461d9ba2ac8a48dcc57f7adac4ee80e1de9f965d89d4d81a0ad52bb3eec2609644 @@ -20556,6 +21476,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^10.2.0": + version: 10.2.0 + resolution: "lru-cache@npm:10.2.0" + checksum: eee7ddda4a7475deac51ac81d7dd78709095c6fa46e8350dc2d22462559a1faa3b81ed931d5464b13d48cbd7e08b46100b6f768c76833912bc444b99c37e25db + languageName: node + linkType: hard + "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -21276,6 +22203,13 @@ __metadata: languageName: node linkType: hard +"mimic-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "mimic-fn@npm:4.0.0" + checksum: 995dcece15ee29aa16e188de6633d43a3db4611bcf93620e7e62109ec41c79c0f34277165b8ce5e361205049766e371851264c21ac64ca35499acb5421c2ba56 + languageName: node + linkType: hard + "mimic-response@npm:^1.0.0": version: 1.0.1 resolution: "mimic-response@npm:1.0.1" @@ -21508,6 +22442,18 @@ __metadata: languageName: node linkType: hard +"mlly@npm:^1.2.0, mlly@npm:^1.6.1": + version: 1.6.1 + resolution: "mlly@npm:1.6.1" + dependencies: + acorn: ^8.11.3 + pathe: ^1.1.2 + pkg-types: ^1.0.3 + ufo: ^1.3.2 + checksum: c40a547dba8f6b2a5a840899d49f4c9550c233d47fd7bd75f4ac27f388047bad655ad86684329809c1640df4373b45bec77304f73530ca4354bc1199700e2a46 + languageName: node + linkType: hard + "mnemonist@npm:^0.39.5": version: 0.39.7 resolution: "mnemonist@npm:0.39.7" @@ -21583,6 +22529,13 @@ __metadata: languageName: node linkType: hard +"mri@npm:^1.2.0": + version: 1.2.0 + resolution: "mri@npm:1.2.0" + checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85 + languageName: node + linkType: hard + "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" @@ -21604,6 +22557,13 @@ __metadata: languageName: node linkType: hard +"multiformats@npm:^9.4.2": + version: 9.9.0 + resolution: "multiformats@npm:9.9.0" + checksum: d3e8c1be400c09a014f557ea02251a2710dbc9fca5aa32cc702ff29f636c5471e17979f30bdcb0a9cbb556f162a8591dc2e1219c24fc21394a56115b820bb84e + languageName: node + linkType: hard + "multistream@npm:^4.1.0": version: 4.1.0 resolution: "multistream@npm:4.1.0" @@ -21639,6 +22599,13 @@ __metadata: languageName: node linkType: hard +"napi-wasm@npm:^1.1.0": + version: 1.1.0 + resolution: "napi-wasm@npm:1.1.0" + checksum: 649a5d03477b89ee75cd8d7be5404daa5c889915640fd4ab042f2d38d265e961f86933e83982388d72c8b0a3952f36f099b96598ea88210205519ec2adc41d8d + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -21828,6 +22795,15 @@ __metadata: languageName: node linkType: hard +"node-addon-api@npm:^7.0.0": + version: 7.1.0 + resolution: "node-addon-api@npm:7.1.0" + dependencies: + node-gyp: latest + checksum: 26640c8d2ed7e2059e2ed65ee79e2a195306b3f1fc27ad11448943ba91d37767bd717a9a0453cc97e83a1109194dced8336a55f8650000458ef625c0b8b5e3df + languageName: node + linkType: hard + "node-dir@npm:^0.1.17": version: 0.1.17 resolution: "node-dir@npm:0.1.17" @@ -21837,6 +22813,13 @@ __metadata: languageName: node linkType: hard +"node-fetch-native@npm:^1.4.0, node-fetch-native@npm:^1.6.1, node-fetch-native@npm:^1.6.2": + version: 1.6.2 + resolution: "node-fetch-native@npm:1.6.2" + checksum: a6e7b9bf2f671895421441177ebd1d12d2a6f18bc1afc29b8d413f65716faebb6c03adab332eff6392e538da8f40e862c67402bfb8a12c6b54b6a84a1a267377 + languageName: node + linkType: hard + "node-fetch@npm:2.6.7": version: 2.6.7 resolution: "node-fetch@npm:2.6.7" @@ -21865,6 +22848,13 @@ __metadata: languageName: node linkType: hard +"node-forge@npm:^1.3.1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: 08fb072d3d670599c89a1704b3e9c649ff1b998256737f0e06fbd1a5bf41cae4457ccaee32d95052d80bbafd9ffe01284e078c8071f0267dc9744e51c5ed42a9 + languageName: node + linkType: hard + "node-gyp-build@npm:^4.2.0, node-gyp-build@npm:^4.3.0": version: 4.7.1 resolution: "node-gyp-build@npm:4.7.1" @@ -22014,6 +23004,15 @@ __metadata: languageName: node linkType: hard +"npm-run-path@npm:^5.1.0": + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" + dependencies: + path-key: ^4.0.0 + checksum: ae8e7a89da9594fb9c308f6555c73f618152340dcaae423e5fb3620026fefbec463618a8b761920382d666fa7a2d8d240b6fe320e8a6cdd54dc3687e2b659d25 + languageName: node + linkType: hard + "npmlog@npm:^5.0.1": version: 5.0.1 resolution: "npmlog@npm:5.0.1" @@ -22223,6 +23222,24 @@ __metadata: languageName: node linkType: hard +"ofetch@npm:^1.3.3": + version: 1.3.3 + resolution: "ofetch@npm:1.3.3" + dependencies: + destr: ^2.0.1 + node-fetch-native: ^1.4.0 + ufo: ^1.3.0 + checksum: 945d757b25ba144f9f45d9de3382de743f0950e68e76726a4c0d2ef01456fa6700a6b102cc343a4e06f71d5ac59a8affdd9a673751c448f4265996f7f22ffa3d + languageName: node + linkType: hard + +"ohash@npm:^1.1.3": + version: 1.1.3 + resolution: "ohash@npm:1.1.3" + checksum: 44c7321cb950ce6e87d46584fd5cc8dd3dd15fcd4ade0ac2995d0497dc6b6b1ae9bd844c59af185d63923da5cfe9b37ae37a9dbd9ac455f3ad0cdfb5a73d5ef6 + languageName: node + linkType: hard + "oidc-token-hash@npm:^5.0.3": version: 5.0.3 resolution: "oidc-token-hash@npm:5.0.3" @@ -22230,6 +23247,13 @@ __metadata: languageName: node linkType: hard +"on-exit-leak-free@npm:^0.2.0": + version: 0.2.0 + resolution: "on-exit-leak-free@npm:0.2.0" + checksum: d22b0f0538069110626b578db6e68b6ee0e85b1ee9cc5ef9b4de1bba431431d6a8da91a61e09d2ad46f22a96f968e5237833cb9d0b69bc4d294f7ec82f609b05 + languageName: node + linkType: hard + "on-finished@npm:2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" @@ -22273,6 +23297,15 @@ __metadata: languageName: node linkType: hard +"onetime@npm:^6.0.0": + version: 6.0.0 + resolution: "onetime@npm:6.0.0" + dependencies: + mimic-fn: ^4.0.0 + checksum: 0846ce78e440841335d4e9182ef69d5762e9f38aa7499b19f42ea1c4cd40f0b4446094c455c713f9adac3f4ae86f613bb5e30c99e52652764d06a89f709b3788 + languageName: node + linkType: hard + "open@npm:^6.2.0": version: 6.4.0 resolution: "open@npm:6.4.0" @@ -22630,6 +23663,13 @@ __metadata: languageName: node linkType: hard +"path-key@npm:^4.0.0": + version: 4.0.0 + resolution: "path-key@npm:4.0.0" + checksum: 8e6c314ae6d16b83e93032c61020129f6f4484590a777eed709c4a01b50e498822b00f76ceaf94bc64dbd90b327df56ceadce27da3d83393790f1219e07721d7 + languageName: node + linkType: hard + "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" @@ -22677,6 +23717,13 @@ __metadata: languageName: node linkType: hard +"pathe@npm:^1.1.0, pathe@npm:^1.1.1, pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: ec5f778d9790e7b9ffc3e4c1df39a5bb1ce94657a4e3ad830c1276491ca9d79f189f47609884671db173400256b005f4955f7952f52a2aeb5834ad5fb4faf134 + languageName: node + linkType: hard + "pbkdf2@npm:^3.0.3, pbkdf2@npm:^3.0.9, pbkdf2@npm:^3.1.2": version: 3.1.2 resolution: "pbkdf2@npm:3.1.2" @@ -22725,6 +23772,44 @@ __metadata: languageName: node linkType: hard +"pino-abstract-transport@npm:v0.5.0": + version: 0.5.0 + resolution: "pino-abstract-transport@npm:0.5.0" + dependencies: + duplexify: ^4.1.2 + split2: ^4.0.0 + checksum: c503f867de3189f8217ab9cf794e8a631dddd0029a829f0f985f5511308152ebd53e363764fbc5570b3d1c715b341e3923456ce16ad84cd41be2b9a074ada234 + languageName: node + linkType: hard + +"pino-std-serializers@npm:^4.0.0": + version: 4.0.0 + resolution: "pino-std-serializers@npm:4.0.0" + checksum: 89d487729b58c9d3273a0ee851ead068d6d2e2ccc1af8e1c1d28f1b3442423679bec7ec04d9a2aba36f94f335e82be9f4de19dc4fbc161e71c136aaa15b85ad3 + languageName: node + linkType: hard + +"pino@npm:7.11.0": + version: 7.11.0 + resolution: "pino@npm:7.11.0" + dependencies: + atomic-sleep: ^1.0.0 + fast-redact: ^3.0.0 + on-exit-leak-free: ^0.2.0 + pino-abstract-transport: v0.5.0 + pino-std-serializers: ^4.0.0 + process-warning: ^1.0.0 + quick-format-unescaped: ^4.0.3 + real-require: ^0.1.0 + safe-stable-stringify: ^2.1.0 + sonic-boom: ^2.2.1 + thread-stream: ^0.15.1 + bin: + pino: bin.js + checksum: b919e7dbe41de978bb050dcef94fd687c012eb78d344a18f75f04ce180d5810fc162be1f136722d70cd005ed05832c4023a38b9acbc1076ae63c9f5ec5ca515c + languageName: node + linkType: hard + "pirates@npm:^4.0.4, pirates@npm:^4.0.6": version: 4.0.6 resolution: "pirates@npm:4.0.6" @@ -22750,6 +23835,17 @@ __metadata: languageName: node linkType: hard +"pkg-types@npm:^1.0.3": + version: 1.0.3 + resolution: "pkg-types@npm:1.0.3" + dependencies: + jsonc-parser: ^3.2.0 + mlly: ^1.2.0 + pathe: ^1.1.0 + checksum: 4b305c834b912ddcc8a0fe77530c0b0321fe340396f84cbb87aecdbc126606f47f2178f23b8639e71a4870f9631c7217aef52ffed0ae17ea2dbbe7e43d116a6e + languageName: node + linkType: hard + "pkg-up@npm:^3.1.0": version: 3.1.0 resolution: "pkg-up@npm:3.1.0" @@ -23318,6 +24414,13 @@ __metadata: languageName: node linkType: hard +"process-warning@npm:^1.0.0": + version: 1.0.0 + resolution: "process-warning@npm:1.0.0" + checksum: c708a03241deec3cabaeee39c4f9ee8c4d71f1c5ef9b746c8252cdb952a6059068cfcdaf348399775244cbc441b6ae5e26a9c87ed371f88335d84f26d19180f9 + languageName: node + linkType: hard + "process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" @@ -23525,6 +24628,15 @@ __metadata: languageName: node linkType: hard +"qrcode-svg@npm:^1.1.0": + version: 1.1.0 + resolution: "qrcode-svg@npm:1.1.0" + bin: + qrcode-svg: bin/qrcode-svg.js + checksum: 07f9dcdea55fe11a5264aad6c576ab91a37968bace6997d8cde868aeb8dfb87fd3fb352715ee6f8f26a732231c194af5e2b8fa550103abdb20ed5c8ad0a1bd3e + languageName: node + linkType: hard + "qrcode@npm:^1.5.1": version: 1.5.3 resolution: "qrcode@npm:1.5.3" @@ -23557,7 +24669,7 @@ __metadata: languageName: node linkType: hard -"query-string@npm:^7.1.3": +"query-string@npm:7.1.3, query-string@npm:^7.1.3": version: 7.1.3 resolution: "query-string@npm:7.1.3" dependencies: @@ -23590,6 +24702,13 @@ __metadata: languageName: node linkType: hard +"quick-format-unescaped@npm:^4.0.3": + version: 4.0.4 + resolution: "quick-format-unescaped@npm:4.0.4" + checksum: 7bc32b99354a1aa46c089d2a82b63489961002bb1d654cee3e6d2d8778197b68c2d854fd23d8422436ee1fdfd0abaddc4d4da120afe700ade68bd357815b26fd + languageName: node + linkType: hard + "quick-lru@npm:^5.1.1": version: 5.1.1 resolution: "quick-lru@npm:5.1.1" @@ -23597,6 +24716,13 @@ __metadata: languageName: node linkType: hard +"radix3@npm:^1.1.0": + version: 1.1.1 + resolution: "radix3@npm:1.1.1" + checksum: e65754552aa7e68d8b324b66b879f2fa019cec1229d44806f908aedf9b6e731ece4c9dd5823ec103d25d6d3e3223a197ed27987ab3479588a0dbab69a155517c + languageName: node + linkType: hard + "raf@npm:^3.4.1": version: 3.4.1 resolution: "raf@npm:3.4.1" @@ -24349,6 +25475,13 @@ __metadata: languageName: node linkType: hard +"real-require@npm:^0.1.0": + version: 0.1.0 + resolution: "real-require@npm:0.1.0" + checksum: 96745583ed4f82cd5c6a6af012fd1d3c6fc2f13ae1bcff1a3c4f8094696013a1a07c82c5aa66a403d7d4f84949fc2203bc927c7ad120caad125941ca2d7e5e8e + languageName: node + linkType: hard + "recast@npm:^0.21.0": version: 0.21.5 resolution: "recast@npm:0.21.5" @@ -24892,6 +26025,13 @@ __metadata: languageName: node linkType: hard +"safe-stable-stringify@npm:^2.1.0": + version: 2.4.3 + resolution: "safe-stable-stringify@npm:2.4.3" + checksum: 3aeb64449706ee1f5ad2459fc99648b131d48e7a1fbb608d7c628020177512dc9d94108a5cb61bbc953985d313d0afea6566d243237743e02870490afef04b43 + languageName: node + linkType: hard + "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -25087,6 +26227,22 @@ __metadata: languageName: node linkType: hard +"seroval-plugins@npm:^1.0.3": + version: 1.0.5 + resolution: "seroval-plugins@npm:1.0.5" + peerDependencies: + seroval: ^1.0 + checksum: 2d752ddbb1724ffcb4793e6e974729efbdb00fff8017788a88a052a705c93bd14bb49b700c428829058cf7164b3f66d117764a2b0c6d4a07329d2fa32a5fab23 + languageName: node + linkType: hard + +"seroval@npm:^1.0.3": + version: 1.0.5 + resolution: "seroval@npm:1.0.5" + checksum: 851fc2045016a7aff11850835ca9e8f22d34614ccad6d38a33e7adb3da268206276174be1320be4e849949c2365424555e8b1c47389a5ce5a31e9078b62cfb71 + languageName: node + linkType: hard + "serve-static@npm:1.15.0, serve-static@npm:^1.13.1": version: 1.15.0 resolution: "serve-static@npm:1.15.0" @@ -25257,7 +26413,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^4.0.1": +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 @@ -25434,6 +26590,26 @@ __metadata: languageName: node linkType: hard +"solid-js@npm:^1.7.11": + version: 1.8.15 + resolution: "solid-js@npm:1.8.15" + dependencies: + csstype: ^3.1.0 + seroval: ^1.0.3 + seroval-plugins: ^1.0.3 + checksum: d1c68e1b45979ee44ed315a9094d82d741f4936fa839c8af540e628e877e684ce24fe76d9395c3f935cae778c741839c582dcf68f436eafb2ee8fe717cdd1ed1 + languageName: node + linkType: hard + +"sonic-boom@npm:^2.2.1": + version: 2.8.0 + resolution: "sonic-boom@npm:2.8.0" + dependencies: + atomic-sleep: ^1.0.0 + checksum: c7f9c89f931d7f60f8e0741551a729f0d81e6dc407a99420fc847a9a4c25af048a615b1188ab3c4f1fb3708fe4904973ddab6ebcc8ed5b78b50ab81a99045910 + languageName: node + linkType: hard + "source-list-map@npm:^2.0.0": version: 2.0.1 resolution: "source-list-map@npm:2.0.1" @@ -25538,6 +26714,13 @@ __metadata: languageName: node linkType: hard +"split2@npm:^4.0.0": + version: 4.2.0 + resolution: "split2@npm:4.2.0" + checksum: 05d54102546549fe4d2455900699056580cca006c0275c334611420f854da30ac999230857a85fdd9914dc2109ae50f80fda43d2a445f2aa86eccdc1dfce779d + languageName: node + linkType: hard + "sponge-case@npm:^1.0.1": version: 1.0.1 resolution: "sponge-case@npm:1.0.1" @@ -25763,6 +26946,13 @@ __metadata: languageName: node linkType: hard +"std-env@npm:^3.7.0": + version: 3.7.0 + resolution: "std-env@npm:3.7.0" + checksum: 4f489d13ff2ab838c9acd4ed6b786b51aa52ecacdfeaefe9275fcb220ff2ac80c6e95674723508fd29850a694569563a8caaaea738eb82ca16429b3a0b50e510 + languageName: node + linkType: hard + "stdin-discarder@npm:^0.1.0": version: 0.1.0 resolution: "stdin-discarder@npm:0.1.0" @@ -25801,6 +26991,13 @@ __metadata: languageName: node linkType: hard +"stream-shift@npm:^1.0.2": + version: 1.0.3 + resolution: "stream-shift@npm:1.0.3" + checksum: a24c0a3f66a8f9024bd1d579a533a53be283b4475d4e6b4b3211b964031447bdf6532dd1f3c2b0ad66752554391b7c62bd7ca4559193381f766534e723d50242 + languageName: node + linkType: hard + "stream-transform@npm:^2.1.3": version: 2.1.3 resolution: "stream-transform@npm:2.1.3" @@ -26000,6 +27197,13 @@ __metadata: languageName: node linkType: hard +"strip-final-newline@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-final-newline@npm:3.0.0" + checksum: 23ee263adfa2070cd0f23d1ac14e2ed2f000c9b44229aec9c799f1367ec001478469560abefd00c5c99ee6f0b31c137d53ec6029c53e9f32a93804e18c201050 + languageName: node + linkType: hard + "strip-hex-prefix@npm:1.0.0": version: 1.0.0 resolution: "strip-hex-prefix@npm:1.0.0" @@ -26148,6 +27352,13 @@ __metadata: languageName: node linkType: hard +"system-architecture@npm:^0.1.0": + version: 0.1.0 + resolution: "system-architecture@npm:0.1.0" + checksum: ca0dd793c45c354ab57dd7fc8ce7dc9923a6e07382bd3b22eb5b08f55ddb0217c390d00767549c5155fd4ce7ef23ffdd8cfb33dd4344cbbd37837d085a50f6f0 + languageName: node + linkType: hard + "tabbable@npm:^6.0.1": version: 6.2.0 resolution: "tabbable@npm:6.2.0" @@ -26371,6 +27582,15 @@ __metadata: languageName: node linkType: hard +"thread-stream@npm:^0.15.1": + version: 0.15.2 + resolution: "thread-stream@npm:0.15.2" + dependencies: + real-require: ^0.1.0 + checksum: 0547795a8f357ba1ac0dba29c71f965182e29e21752951a04a7167515ee37524bfba6c410f31e65a01a8d3e5b93400b812889aa09523e38ce4d744c894ffa6c0 + languageName: node + linkType: hard + "throat@npm:^5.0.0": version: 5.0.0 resolution: "throat@npm:5.0.0" @@ -26617,6 +27837,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:1.14.1, tslib@npm:^1.11.1, tslib@npm:^1.9.0": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd + languageName: node + linkType: hard + "tslib@npm:2.4.0": version: 2.4.0 resolution: "tslib@npm:2.4.0" @@ -26624,13 +27851,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.11.1, tslib@npm:^1.9.0": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd - languageName: node - linkType: hard - "tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2": version: 2.6.2 resolution: "tslib@npm:2.6.2" @@ -26886,6 +28106,13 @@ __metadata: languageName: node linkType: hard +"ufo@npm:^1.3.0, ufo@npm:^1.3.2, ufo@npm:^1.4.0": + version: 1.5.2 + resolution: "ufo@npm:1.5.2" + checksum: f0bdc651d4ca2eae02b6f11b628582ac58b7986a01d784ca21fffb52166b5180c794b5f8229fe20c9b5c55a7c899baa33e56ddccd3920adc2cb1d387cea00e1b + languageName: node + linkType: hard + "uglify-es@npm:^3.1.9": version: 3.3.10 resolution: "uglify-es@npm:3.3.10" @@ -26898,6 +28125,15 @@ __metadata: languageName: node linkType: hard +"uint8arrays@npm:^3.0.0, uint8arrays@npm:^3.1.0": + version: 3.1.1 + resolution: "uint8arrays@npm:3.1.1" + dependencies: + multiformats: ^9.4.2 + checksum: b93b6c3f0a526b116799f3a3409bd4b5d5553eb3e73e485998ece7974742254fbc0d2f7988dd21ac86c4b974552f45d9ae9cf9cba9647e529f8eb1fdd2ed84d0 + languageName: node + linkType: hard + "ultron@npm:~1.1.0": version: 1.1.1 resolution: "ultron@npm:1.1.1" @@ -26924,6 +28160,13 @@ __metadata: languageName: node linkType: hard +"uncrypto@npm:^0.1.3": + version: 0.1.3 + resolution: "uncrypto@npm:0.1.3" + checksum: 07160e08806dd6cea16bb96c3fd54cd70fc801e02fc3c6f86980144d15c9ebbd1c55587f7280a207b3af6cd34901c0d0b77ada5a02c2f7081a033a05acf409e2 + languageName: node + linkType: hard + "undici-types@npm:~5.26.4": version: 5.26.5 resolution: "undici-types@npm:5.26.5" @@ -26949,6 +28192,26 @@ __metadata: languageName: node linkType: hard +"unenv@npm:^1.9.0": + version: 1.9.0 + resolution: "unenv@npm:1.9.0" + dependencies: + consola: ^3.2.3 + defu: ^6.1.3 + mime: ^3.0.0 + node-fetch-native: ^1.6.1 + pathe: ^1.1.1 + checksum: 4cfbeedee1436e7f417d655c521e4c6220228f5b96afff90b5253d4504282c6de5acdd982aa51c977ce38d21d7692a33d10fc857166b3488655ff29c3bb754a2 + languageName: node + linkType: hard + +"unfetch@npm:^4.2.0": + version: 4.2.0 + resolution: "unfetch@npm:4.2.0" + checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -27067,6 +28330,78 @@ __metadata: languageName: node linkType: hard +"unstorage@npm:^1.9.0": + version: 1.10.2 + resolution: "unstorage@npm:1.10.2" + dependencies: + anymatch: ^3.1.3 + chokidar: ^3.6.0 + destr: ^2.0.3 + h3: ^1.11.1 + listhen: ^1.7.2 + lru-cache: ^10.2.0 + mri: ^1.2.0 + node-fetch-native: ^1.6.2 + ofetch: ^1.3.3 + ufo: ^1.4.0 + peerDependencies: + "@azure/app-configuration": ^1.5.0 + "@azure/cosmos": ^4.0.0 + "@azure/data-tables": ^13.2.2 + "@azure/identity": ^4.0.1 + "@azure/keyvault-secrets": ^4.8.0 + "@azure/storage-blob": ^12.17.0 + "@capacitor/preferences": ^5.0.7 + "@netlify/blobs": ^6.5.0 || ^7.0.0 + "@planetscale/database": ^1.16.0 + "@upstash/redis": ^1.28.4 + "@vercel/kv": ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.3.2 + peerDependenciesMeta: + "@azure/app-configuration": + optional: true + "@azure/cosmos": + optional: true + "@azure/data-tables": + optional: true + "@azure/identity": + optional: true + "@azure/keyvault-secrets": + optional: true + "@azure/storage-blob": + optional: true + "@capacitor/preferences": + optional: true + "@netlify/blobs": + optional: true + "@planetscale/database": + optional: true + "@upstash/redis": + optional: true + "@vercel/kv": + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + checksum: dd3dc881fb2724b0e1af069b919682cc8cfe539e9c8fa50cd3fe448744c9608f97c47b092f48c615e4d17736e206e880b76d7479a4520177bc3e197159d49718 + languageName: node + linkType: hard + +"untun@npm:^0.1.3": + version: 0.1.3 + resolution: "untun@npm:0.1.3" + dependencies: + citty: ^0.1.5 + consola: ^3.2.3 + pathe: ^1.1.1 + bin: + untun: bin/untun.mjs + checksum: ad886c242dbac250f88ef6f18ad780fa084d07e4d030ab5ceacfe4378aa4bf2d3549b8ed8352bad5776facd9aaee05e3f914c661adc11bace867e2a12fd7bee5 + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.0.13": version: 1.0.13 resolution: "update-browserslist-db@npm:1.0.13" @@ -27099,6 +28434,13 @@ __metadata: languageName: node linkType: hard +"uqr@npm:^0.1.2": + version: 0.1.2 + resolution: "uqr@npm:0.1.2" + checksum: 717766f03814172f5a9934dae2c4c48f6de065a4fd7da82aa513bd8300b621c1e606efdd174478cab79093e5ba244a99f0c0b1b0b9c0175656ab5e637a006d92 + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" From c6dc134ff12a77b04593444252a047be8c7d6f23 Mon Sep 17 00:00:00 2001 From: Tan Le Date: Mon, 8 Apr 2024 15:01:29 +0700 Subject: [PATCH 02/11] feat: tezos dapp example boilerplate with walless integration --- apps/wallet/package.json | 2 +- examples/dapps/tezos/README.md | 3 + examples/dapps/tezos/index.web.js | 10 + examples/dapps/tezos/metacraft.config.js | 28 +++ examples/dapps/tezos/package.json | 22 +++ examples/dapps/tezos/src/bootstrap.ts | 22 +++ examples/dapps/tezos/src/context.ts | 9 + examples/dapps/tezos/src/index.tsx | 33 ++++ examples/dapps/tezos/src/utils.ts | 10 + examples/dapps/tezos/tsconfig.json | 7 + examples/dapps/tezos/walless.ts | 3 + package.json | 4 +- yarn.lock | 233 ++++++++++++----------- 13 files changed, 274 insertions(+), 112 deletions(-) create mode 100644 examples/dapps/tezos/README.md create mode 100644 examples/dapps/tezos/index.web.js create mode 100644 examples/dapps/tezos/metacraft.config.js create mode 100644 examples/dapps/tezos/package.json create mode 100644 examples/dapps/tezos/src/bootstrap.ts create mode 100644 examples/dapps/tezos/src/context.ts create mode 100644 examples/dapps/tezos/src/index.tsx create mode 100644 examples/dapps/tezos/src/utils.ts create mode 100644 examples/dapps/tezos/tsconfig.json create mode 100644 examples/dapps/tezos/walless.ts diff --git a/apps/wallet/package.json b/apps/wallet/package.json index e6b056e07..a7fe86a2c 100644 --- a/apps/wallet/package.json +++ b/apps/wallet/package.json @@ -1,6 +1,6 @@ { "name": "@walless/wallet", - "version": "1.1.2", + "version": "1.1.5", "private": true, "scripts": { "dev": "metacraft", diff --git a/examples/dapps/tezos/README.md b/examples/dapps/tezos/README.md new file mode 100644 index 000000000..9fc27d515 --- /dev/null +++ b/examples/dapps/tezos/README.md @@ -0,0 +1,3 @@ +# DApp implmentation to work with Walless SDK / Beacon wallet implementation + +For development, we integrate `@walless/wallet` as a dev dependencies, which exposing contentScript.js diff --git a/examples/dapps/tezos/index.web.js b/examples/dapps/tezos/index.web.js new file mode 100644 index 000000000..85a6ebd19 --- /dev/null +++ b/examples/dapps/tezos/index.web.js @@ -0,0 +1,10 @@ +import { createRoot } from 'react-dom/client'; + +import './walless'; + +import App from './src'; + +const container = document.getElementById('root'); +const root = createRoot(container); + +root.render(); diff --git a/examples/dapps/tezos/metacraft.config.js b/examples/dapps/tezos/metacraft.config.js new file mode 100644 index 000000000..96c96d09b --- /dev/null +++ b/examples/dapps/tezos/metacraft.config.js @@ -0,0 +1,28 @@ +const { web3Polyfills } = require('@metacraft/cli-web3-polyfills'); + +const injectEnvironments = (configs, internal) => { + const { webpack } = internal.modules; + const { DefinePlugin } = webpack; + const env = internal.configs.env; + const isProduction = internal.configs.isProduction; + + configs.plugins[0] = new DefinePlugin({ + __DEV__: !isProduction, + ENV: JSON.stringify(env), + chrome: { runtime: { id: JSON.stringify('walless-tezos-example') } }, + }); + + return configs; +}; + +module.exports = { + publicPath: () => process.env.PUBLIC_URL || '/', + keepPreviousBuild: () => true, + buildId: () => 'app', + webpackMiddlewares: [web3Polyfills, injectEnvironments], + devMiddlewares: [], + htmlPluginOptions: { + chunks: ['app'], + }, + moduleAlias: {}, +}; diff --git a/examples/dapps/tezos/package.json b/examples/dapps/tezos/package.json new file mode 100644 index 000000000..50a71e994 --- /dev/null +++ b/examples/dapps/tezos/package.json @@ -0,0 +1,22 @@ +{ + "name": "@walless/tezos-dapp-example", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "dev": "metacraft --port 3011" + }, + "author": "", + "license": "ISC", + "dependencies": { + "@airgap/beacon-sdk": "^4.2.1", + "@airgap/beacon-utils": "^4.2.1", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@walless/wallet": "workspace:^", + "@metacraft/cli-web3-polyfills": "^0.0.7" + } +} diff --git a/examples/dapps/tezos/src/bootstrap.ts b/examples/dapps/tezos/src/bootstrap.ts new file mode 100644 index 000000000..d4d0158d5 --- /dev/null +++ b/examples/dapps/tezos/src/bootstrap.ts @@ -0,0 +1,22 @@ +import type { Network } from '@airgap/beacon-sdk'; +import { ColorMode, DAppClient, NetworkType } from '@airgap/beacon-sdk'; + +import { updateContext } from './context'; + +export const network: Network = { type: NetworkType.MAINNET }; +export const dAppClient = new DAppClient({ + name: 'Beacon Docs', + preferredNetwork: network.type, +}); +const theme = localStorage.getItem('theme'); +await dAppClient.setColorMode( + theme === 'dark' ? ColorMode.DARK : ColorMode.LIGHT, +); + +const activeAccount = await dAppClient.getActiveAccount(); +if (activeAccount) { + console.log('Already connected:', activeAccount.address); + updateContext({ address: activeAccount.address }); +} + +await dAppClient.clearActiveAccount(); diff --git a/examples/dapps/tezos/src/context.ts b/examples/dapps/tezos/src/context.ts new file mode 100644 index 000000000..bd49ed778 --- /dev/null +++ b/examples/dapps/tezos/src/context.ts @@ -0,0 +1,9 @@ +const context = { + address: '', +}; + +export const updateContext = ({ address }: { address?: string }) => { + if (address) { + context.address = address; + } +}; diff --git a/examples/dapps/tezos/src/index.tsx b/examples/dapps/tezos/src/index.tsx new file mode 100644 index 000000000..c0e6ca045 --- /dev/null +++ b/examples/dapps/tezos/src/index.tsx @@ -0,0 +1,33 @@ +import './bootstrap'; + +import { connect } from './utils'; + +export const App = () => { + return ( +
+

Hello Tezos example dApp

+ +
+ ); +}; + +export default App; diff --git a/examples/dapps/tezos/src/utils.ts b/examples/dapps/tezos/src/utils.ts new file mode 100644 index 000000000..6be77c7b5 --- /dev/null +++ b/examples/dapps/tezos/src/utils.ts @@ -0,0 +1,10 @@ +import { dAppClient, network } from './bootstrap'; +import { updateContext } from './context'; + +export const connect = async () => { + const permissions = await dAppClient.requestPermissions({ + network: network, + }); + console.log('New connection: ', permissions.address); + updateContext({ address: permissions.address }); +}; diff --git a/examples/dapps/tezos/tsconfig.json b/examples/dapps/tezos/tsconfig.json new file mode 100644 index 000000000..fb2b3d080 --- /dev/null +++ b/examples/dapps/tezos/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "@walless/tsconfig/application.json", + "compilerOptions": { + "module": "esnext", + "target": "es2017" + } +} diff --git a/examples/dapps/tezos/walless.ts b/examples/dapps/tezos/walless.ts new file mode 100644 index 000000000..9e6e6ac67 --- /dev/null +++ b/examples/dapps/tezos/walless.ts @@ -0,0 +1,3 @@ +import { WALLESS_TEZOS } from '@walless/wallet/browser/content/tezos'; + +WALLESS_TEZOS.name = 'Walless | Tezos Example'; diff --git a/package.json b/package.json index 1b6dcd5e3..a10f9f28a 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,9 @@ "private": true, "workspaces": [ "apps/*", - "packages/*" + "packages/*", + "examples/*", + "examples/dapps/*" ], "scripts": { "batch": "node tool/batch", diff --git a/yarn.lock b/yarn.lock index 52018d1d1..8710f16cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,150 +31,151 @@ __metadata: languageName: node linkType: hard -"@airgap/beacon-blockchain-substrate@npm:4.1.2": - version: 4.1.2 - resolution: "@airgap/beacon-blockchain-substrate@npm:4.1.2" +"@airgap/beacon-blockchain-substrate@npm:4.2.1": + version: 4.2.1 + resolution: "@airgap/beacon-blockchain-substrate@npm:4.2.1" dependencies: - "@airgap/beacon-types": 4.1.2 - "@airgap/beacon-ui": 4.1.2 - checksum: 5415bd489aeeea1a2931a4e2def7dd99b56ca399d381327531be25614019d1b30495df11e2f30962144d244975a7313414b884fff00297f68211a270186a9e26 + "@airgap/beacon-types": 4.2.1 + "@airgap/beacon-ui": 4.2.1 + checksum: 203b60bf5c8f500a857ddec2f899f165ccedcf6d2b70a86e6ec2c5408432d172d9ca6c0c62beec3a2088b3fb68cca7786a0a91bfb6947482d5b920b3a3d3deb9 languageName: node linkType: hard -"@airgap/beacon-blockchain-tezos@npm:4.1.2": - version: 4.1.2 - resolution: "@airgap/beacon-blockchain-tezos@npm:4.1.2" +"@airgap/beacon-blockchain-tezos@npm:4.2.1": + version: 4.2.1 + resolution: "@airgap/beacon-blockchain-tezos@npm:4.2.1" dependencies: - "@airgap/beacon-types": 4.1.2 - "@airgap/beacon-ui": 4.1.2 - checksum: 44ab2e69d817ffe20744b656072183d42811eb8ca189844f972659bb72c2d1b24b7b6edbc432ac7f74e5a5fe1ef1742dd26524587bbdaa38a7cfd3841eb26742 + "@airgap/beacon-types": 4.2.1 + "@airgap/beacon-ui": 4.2.1 + checksum: 2d70045e26ae23cabc9a259f38a8612acd0988ebfa6578496e6c3666d3fd27bd029062d11fb31865e670ca802c6da8a1eec297df5d91d185ab40cecd5d4116f6 languageName: node linkType: hard -"@airgap/beacon-core@npm:4.1.2": - version: 4.1.2 - resolution: "@airgap/beacon-core@npm:4.1.2" +"@airgap/beacon-core@npm:4.2.1": + version: 4.2.1 + resolution: "@airgap/beacon-core@npm:4.2.1" dependencies: - "@airgap/beacon-types": 4.1.2 - "@airgap/beacon-utils": 4.1.2 + "@airgap/beacon-types": 4.2.1 + "@airgap/beacon-utils": 4.2.1 "@stablelib/ed25519": ^1.0.3 "@stablelib/nacl": ^1.0.4 "@stablelib/utf8": ^1.0.1 "@stablelib/x25519-session": ^1.0.4 bs58check: 2.1.2 - checksum: 7f28cf74e9de4431de7ce190c05d8bec3f490e471d1f614692a1d01abea5c381a753ae61b0ad3cdf1696ede34333e0d70bd36173806df90d63990c31190ec53e + checksum: 8b9a2b8a13ca262e5bd230f49d3f489150f0ee72b9bba7f8461d05984816abaed8fe0fe36ce9972753225ffd0188eae001722e32e31abb14f0968e7d93876f67 languageName: node linkType: hard -"@airgap/beacon-dapp@npm:4.1.2": - version: 4.1.2 - resolution: "@airgap/beacon-dapp@npm:4.1.2" +"@airgap/beacon-dapp@npm:4.2.1": + version: 4.2.1 + resolution: "@airgap/beacon-dapp@npm:4.2.1" dependencies: - "@airgap/beacon-core": 4.1.2 - "@airgap/beacon-transport-matrix": 4.1.2 - "@airgap/beacon-transport-postmessage": 4.1.2 - "@airgap/beacon-transport-walletconnect": 4.1.2 - "@airgap/beacon-ui": 4.1.2 - checksum: 1cda839193bf3093c0150e7a5889b8af1711a04f5a6546281a21281f427d29f79d71b323741acbac154e13606a5f475c91932d8c3b07bcde56c87ce222e0999d + "@airgap/beacon-core": 4.2.1 + "@airgap/beacon-transport-matrix": 4.2.1 + "@airgap/beacon-transport-postmessage": 4.2.1 + "@airgap/beacon-transport-walletconnect": 4.2.1 + "@airgap/beacon-ui": 4.2.1 + checksum: 343df511eb9176cb1a8da608b5ac7a807d7090754200121ee73173dc60a789006da0617f961b5da20388c7c92aca9c44f247527537c9688ea532ff3b4025dafe languageName: node linkType: hard -"@airgap/beacon-sdk@npm:^4.0.12": - version: 4.1.2 - resolution: "@airgap/beacon-sdk@npm:4.1.2" +"@airgap/beacon-sdk@npm:^4.2.1": + version: 4.2.1 + resolution: "@airgap/beacon-sdk@npm:4.2.1" dependencies: - "@airgap/beacon-blockchain-substrate": 4.1.2 - "@airgap/beacon-blockchain-tezos": 4.1.2 - "@airgap/beacon-core": 4.1.2 - "@airgap/beacon-dapp": 4.1.2 - "@airgap/beacon-transport-matrix": 4.1.2 - "@airgap/beacon-transport-postmessage": 4.1.2 - "@airgap/beacon-types": 4.1.2 - "@airgap/beacon-ui": 4.1.2 - "@airgap/beacon-utils": 4.1.2 - "@airgap/beacon-wallet": 4.1.2 - checksum: 53034c6ea1b1fa2b4a6d933caab2bdcc433f8ceb33b551c5ab875179371ab7f5e9694fd96dc657b4ae67ddc889471d3cba75a3d48fc5b643a8e5108f34cac662 + "@airgap/beacon-blockchain-substrate": 4.2.1 + "@airgap/beacon-blockchain-tezos": 4.2.1 + "@airgap/beacon-core": 4.2.1 + "@airgap/beacon-dapp": 4.2.1 + "@airgap/beacon-transport-matrix": 4.2.1 + "@airgap/beacon-transport-postmessage": 4.2.1 + "@airgap/beacon-types": 4.2.1 + "@airgap/beacon-ui": 4.2.1 + "@airgap/beacon-utils": 4.2.1 + "@airgap/beacon-wallet": 4.2.1 + checksum: 6e4d4d18e5ecc8258f94db308a43bd64777e00247fb3580676a9f6fe69d8d6436d6ada15df7f36b2280a2e90b66e80b53e6f84c31623ae056ee649ce534f1fc5 languageName: node linkType: hard -"@airgap/beacon-transport-matrix@npm:4.1.2": - version: 4.1.2 - resolution: "@airgap/beacon-transport-matrix@npm:4.1.2" +"@airgap/beacon-transport-matrix@npm:4.2.1": + version: 4.2.1 + resolution: "@airgap/beacon-transport-matrix@npm:4.2.1" dependencies: - "@airgap/beacon-core": 4.1.2 - "@airgap/beacon-utils": 4.1.2 + "@airgap/beacon-core": 4.2.1 + "@airgap/beacon-utils": 4.2.1 axios: ^1.6.2 - checksum: b298d49c6a4a3b26e57e2398280f56784978f22edb6dff424dc123e119619cd59562e445372f00b581170a2302084726822dc02e293dd5adac45c0d00addd5ac + checksum: c1dd7644d618192cd5660cc892a6f6b82e399c21c8c440c8ef8a24535e67d2477e406dfff865b8dc1182de6adfec3677c6a9f731515f63d258ce130bece29226 languageName: node linkType: hard -"@airgap/beacon-transport-postmessage@npm:4.1.2": - version: 4.1.2 - resolution: "@airgap/beacon-transport-postmessage@npm:4.1.2" +"@airgap/beacon-transport-postmessage@npm:4.2.1": + version: 4.2.1 + resolution: "@airgap/beacon-transport-postmessage@npm:4.2.1" dependencies: - "@airgap/beacon-core": 4.1.2 - "@airgap/beacon-types": 4.1.2 - "@airgap/beacon-utils": 4.1.2 - checksum: d0bba4e9bcfd3265887353a8a7640e95e2ecda847eba82e193145c4175b461492e20125626b18701a7d2bc810002945e3d87f584242a2298b6a87ab7c3bfb044 + "@airgap/beacon-core": 4.2.1 + "@airgap/beacon-types": 4.2.1 + "@airgap/beacon-utils": 4.2.1 + checksum: abe39aa301facc0c060c26c0b9f757a595dc30bd44c432ebc1a37e2db5797dc3668355bd7b4d9d264b634461811b6350430c14d51832b878c2ba780ebe277410 languageName: node linkType: hard -"@airgap/beacon-transport-walletconnect@npm:4.1.2": - version: 4.1.2 - resolution: "@airgap/beacon-transport-walletconnect@npm:4.1.2" +"@airgap/beacon-transport-walletconnect@npm:4.2.1": + version: 4.2.1 + resolution: "@airgap/beacon-transport-walletconnect@npm:4.2.1" dependencies: - "@airgap/beacon-core": 4.1.2 - "@airgap/beacon-types": 4.1.2 - "@airgap/beacon-utils": 4.1.2 - "@walletconnect/sign-client": ^2.10.6 - checksum: e95c1160e647c7ff4eefcf050bc9e27829cb295833d5b610908bfa2d9e10f18593c7e26837ec83487379853d2a8a158ce8441ac3e16e41d4f33980b22a8413d7 + "@airgap/beacon-core": 4.2.1 + "@airgap/beacon-types": 4.2.1 + "@airgap/beacon-utils": 4.2.1 + "@walletconnect/sign-client": 2.11.2 + checksum: 7e74ef722b222b5d5c142c2334f6c6cd036915f1a3125c5edb280ee1bb6aacab8b030ced72b71b256b41583cc233ba314be8fa33bbd9ce1af548d8c21520ee2b languageName: node linkType: hard -"@airgap/beacon-types@npm:4.1.2": - version: 4.1.2 - resolution: "@airgap/beacon-types@npm:4.1.2" +"@airgap/beacon-types@npm:4.2.1": + version: 4.2.1 + resolution: "@airgap/beacon-types@npm:4.2.1" dependencies: "@types/chrome": 0.0.246 - checksum: c8256c37e4f40bf372bbae0c5ecc2d91ab3d102d9b007cf08bca37749c28ce15c0d537adf6ec2ad720df825502f1808f066bcbf30567b2a0a8736862f8fd32b0 + checksum: 84b5997badecfae1d0f470c3e325f27d57cdfb905b087f1506c77fdb12c673fc8c62cc4c59a24d428a6447d79a109108f74a7642b35d0eab8354eb4b8f1254b5 languageName: node linkType: hard -"@airgap/beacon-ui@npm:4.1.2": - version: 4.1.2 - resolution: "@airgap/beacon-ui@npm:4.1.2" +"@airgap/beacon-ui@npm:4.2.1": + version: 4.2.1 + resolution: "@airgap/beacon-ui@npm:4.2.1" dependencies: - "@airgap/beacon-core": 4.1.2 - "@airgap/beacon-transport-postmessage": 4.1.2 - "@airgap/beacon-types": 4.1.2 - "@airgap/beacon-utils": 4.1.2 + "@airgap/beacon-core": 4.2.1 + "@airgap/beacon-transport-postmessage": 4.2.1 + "@airgap/beacon-types": 4.2.1 + "@airgap/beacon-utils": 4.2.1 + "@walletconnect/utils": 2.11.2 qrcode-svg: ^1.1.0 solid-js: ^1.7.11 - checksum: 4f3e8004462163750b095a4b4cf9768ef5c61e8a3ffd63c8877f0c2480d0c6acf954f280dd496128304bd7c0a2e10efd29f2c5a15fa674f169931fcb8140ca33 + checksum: 709b39baa0091ab4eb935669865b537a744d1d591149cfab588e765e626c05ac57e929afd971764707630285eb34f0da65973f09c4d0ec59338bc2e209e0f5bb languageName: node linkType: hard -"@airgap/beacon-utils@npm:4.1.2, @airgap/beacon-utils@npm:^4.0.12": - version: 4.1.2 - resolution: "@airgap/beacon-utils@npm:4.1.2" +"@airgap/beacon-utils@npm:4.2.1, @airgap/beacon-utils@npm:^4.2.1": + version: 4.2.1 + resolution: "@airgap/beacon-utils@npm:4.2.1" dependencies: "@stablelib/ed25519": ^1.0.3 "@stablelib/nacl": ^1.0.4 "@stablelib/random": ^1.0.2 "@stablelib/utf8": ^1.0.1 bs58check: 2.1.2 - checksum: 0b4228bffb2ed724bde1205fe4e5a3d6857fa0afa2fb4d42b4a45d4d8d1be94119fb07e4fffa31b6d2fd04fe220bd92e5f25cbef66a340aa9f1310f69edf21c4 + checksum: ea4f21fdaff3ded76173379a57e671ecfb28ca4c18d8a5119b7ae1238c126b86170d6fd28a5d4f7fcb8a8e9b47b15cf71613245ed850464d9321d46c78a8aedc languageName: node linkType: hard -"@airgap/beacon-wallet@npm:4.1.2": - version: 4.1.2 - resolution: "@airgap/beacon-wallet@npm:4.1.2" +"@airgap/beacon-wallet@npm:4.2.1": + version: 4.2.1 + resolution: "@airgap/beacon-wallet@npm:4.2.1" dependencies: - "@airgap/beacon-core": 4.1.2 - "@airgap/beacon-transport-matrix": 4.1.2 - "@airgap/beacon-transport-postmessage": 4.1.2 - checksum: 2105cc430b39d010b2d51d09f1bc0a3365513fafe6c800f5855f94f2770081c205027dd9997211b9843b8b2ffba98921613ed8d3e9ce2c0c92b457e4db364f27 + "@airgap/beacon-core": 4.2.1 + "@airgap/beacon-transport-matrix": 4.2.1 + "@airgap/beacon-transport-postmessage": 4.2.1 + checksum: 84019b883636d35ec50a51e4d9061b95ee6ff1b2317d6d18e72393a8a1f4fdb6880d5633379b2a0470229697d857de30efd6d1ce904bab9ebfce27a8e0d3ad0f languageName: node linkType: hard @@ -12030,6 +12031,18 @@ __metadata: languageName: unknown linkType: soft +"@walless/tezos-dapp-example@workspace:examples/dapps/tezos": + version: 0.0.0-use.local + resolution: "@walless/tezos-dapp-example@workspace:examples/dapps/tezos" + dependencies: + "@airgap/beacon-sdk": ^4.2.1 + "@airgap/beacon-utils": ^4.2.1 + "@walless/wallet": "workspace:^" + react: ^18.2.0 + react-dom: ^18.2.0 + languageName: unknown + linkType: soft + "@walless/tsconfig@*, @walless/tsconfig@workspace:packages/tsconfig": version: 0.0.0-use.local resolution: "@walless/tsconfig@workspace:packages/tsconfig" @@ -12076,12 +12089,12 @@ __metadata: languageName: unknown linkType: soft -"@walless/wallet@workspace:apps/wallet": +"@walless/wallet@workspace:^, @walless/wallet@workspace:apps/wallet": version: 0.0.0-use.local resolution: "@walless/wallet@workspace:apps/wallet" dependencies: - "@airgap/beacon-sdk": ^4.0.12 - "@airgap/beacon-utils": ^4.0.12 + "@airgap/beacon-sdk": ^4.2.1 + "@airgap/beacon-utils": ^4.2.1 "@babel/plugin-proposal-export-namespace-from": ^7.18.9 "@coral-xyz/anchor": ^0.29.0 "@craftzdog/pouchdb-collate-react-native": ^7.3.0 @@ -12228,9 +12241,9 @@ __metadata: languageName: node linkType: hard -"@walletconnect/core@npm:2.11.3": - version: 2.11.3 - resolution: "@walletconnect/core@npm:2.11.3" +"@walletconnect/core@npm:2.11.2": + version: 2.11.2 + resolution: "@walletconnect/core@npm:2.11.2" dependencies: "@walletconnect/heartbeat": 1.2.1 "@walletconnect/jsonrpc-provider": 1.0.13 @@ -12243,13 +12256,13 @@ __metadata: "@walletconnect/relay-auth": ^1.0.4 "@walletconnect/safe-json": ^1.0.2 "@walletconnect/time": ^1.0.2 - "@walletconnect/types": 2.11.3 - "@walletconnect/utils": 2.11.3 + "@walletconnect/types": 2.11.2 + "@walletconnect/utils": 2.11.2 events: ^3.3.0 isomorphic-unfetch: 3.1.0 lodash.isequal: 4.5.0 uint8arrays: ^3.1.0 - checksum: 75bef3c4f09971c4e38abb01fe9497580c4c6f3f33e4841f240bbbeca38c241f482c8d6205d4a4bf961fdcfd02a214733800bb10a5745170ed94e2834ab9dfc3 + checksum: 048c1dbdf096218b1e0c878005faf6ec98b825594e38dedbbf1bbd488c0cc73cc9376180c1701c8b26e9735e0cde0fe31ab3ee01facb34c30cd75077fe03f31f languageName: node linkType: hard @@ -12386,20 +12399,20 @@ __metadata: languageName: node linkType: hard -"@walletconnect/sign-client@npm:^2.10.6": - version: 2.11.3 - resolution: "@walletconnect/sign-client@npm:2.11.3" +"@walletconnect/sign-client@npm:2.11.2": + version: 2.11.2 + resolution: "@walletconnect/sign-client@npm:2.11.2" dependencies: - "@walletconnect/core": 2.11.3 + "@walletconnect/core": 2.11.2 "@walletconnect/events": ^1.0.1 "@walletconnect/heartbeat": 1.2.1 "@walletconnect/jsonrpc-utils": 1.0.8 "@walletconnect/logger": ^2.0.1 "@walletconnect/time": ^1.0.2 - "@walletconnect/types": 2.11.3 - "@walletconnect/utils": 2.11.3 + "@walletconnect/types": 2.11.2 + "@walletconnect/utils": 2.11.2 events: ^3.3.0 - checksum: 5bb322a691f22ba54983d6a2f6440ff18ce7a415b869520d3c3bc6514cf3018e2435e1a4b11e1f77636cc5ad3402519385b098ad426b3921f292dc5cfc6e4120 + checksum: c7e566bcddedfd3c2498541c4ba9caf45436e8de0d3aa3b1da4d3b09d3fbad630ecbfe249c3ea19ed16b368c32ec3fa28b3ed78a82f1ce52793af17a585a4d71 languageName: node linkType: hard @@ -12412,9 +12425,9 @@ __metadata: languageName: node linkType: hard -"@walletconnect/types@npm:2.11.3": - version: 2.11.3 - resolution: "@walletconnect/types@npm:2.11.3" +"@walletconnect/types@npm:2.11.2": + version: 2.11.2 + resolution: "@walletconnect/types@npm:2.11.2" dependencies: "@walletconnect/events": ^1.0.1 "@walletconnect/heartbeat": 1.2.1 @@ -12422,13 +12435,13 @@ __metadata: "@walletconnect/keyvaluestorage": ^1.1.1 "@walletconnect/logger": ^2.0.1 events: ^3.3.0 - checksum: a8afbffa401fab7c8c67ac5c3f12638d0d14a763c3b3000f71b77a3d5f451498e6ede5f9ab7c112db48f620fbcb892ac55ebac0dbfa2ce1bd9159e9aa291b5b2 + checksum: 0979f214682f46762f15bef23d37220abc677dac09b38d40687efb32d7ac2636a92eff952a382ecc291641054736b9236ddaab870d6607e42b9cb77ffdce4079 languageName: node linkType: hard -"@walletconnect/utils@npm:2.11.3": - version: 2.11.3 - resolution: "@walletconnect/utils@npm:2.11.3" +"@walletconnect/utils@npm:2.11.2": + version: 2.11.2 + resolution: "@walletconnect/utils@npm:2.11.2" dependencies: "@stablelib/chacha20poly1305": 1.0.1 "@stablelib/hkdf": 1.0.1 @@ -12438,13 +12451,13 @@ __metadata: "@walletconnect/relay-api": ^1.0.9 "@walletconnect/safe-json": ^1.0.2 "@walletconnect/time": ^1.0.2 - "@walletconnect/types": 2.11.3 + "@walletconnect/types": 2.11.2 "@walletconnect/window-getters": ^1.0.1 "@walletconnect/window-metadata": ^1.0.1 detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: ^3.1.0 - checksum: b62b80ad2ea02d799637b1014894e8b227d68e4e79c1267b7ffccf2176acf79387cf7f909923739a1b7a7f2084fd50149bc7528a5a2fb9991671e88637ebd7ac + checksum: 169147f99c7486c48c23ad0a8ebcbbb4f07aaffd954bad20f4b98516391e89e44f213b5226b3ef737ee91e1226fff9b1becf79dd56738c86becdc96d86cbbc72 languageName: node linkType: hard From e3b67cb53ccbcc83896e6d6a385e47c893c8084a Mon Sep 17 00:00:00 2001 From: Tan Le Date: Mon, 8 Apr 2024 15:02:00 +0700 Subject: [PATCH 03/11] feat: add example for solana and sui --- examples/dapps/solana/README.md | 1 + examples/dapps/sui/README.md | 1 + 2 files changed, 2 insertions(+) create mode 100644 examples/dapps/solana/README.md create mode 100644 examples/dapps/sui/README.md diff --git a/examples/dapps/solana/README.md b/examples/dapps/solana/README.md new file mode 100644 index 000000000..e95055182 --- /dev/null +++ b/examples/dapps/solana/README.md @@ -0,0 +1 @@ +# DApp implmentation to work with Walless SDK / Wallet Standard integration diff --git a/examples/dapps/sui/README.md b/examples/dapps/sui/README.md new file mode 100644 index 000000000..e95055182 --- /dev/null +++ b/examples/dapps/sui/README.md @@ -0,0 +1 @@ +# DApp implmentation to work with Walless SDK / Wallet Standard integration From 33d1bf9e342f779fb7060da3e1a3444f2f5b39e1 Mon Sep 17 00:00:00 2001 From: Tan Le Date: Tue, 9 Apr 2024 17:00:21 +0700 Subject: [PATCH 04/11] chore: standalone tezos dapp example with beacon-sdk v3 --- examples/dapps/tezos/index.web.js | 3 --- examples/dapps/tezos/metacraft.config.js | 1 - examples/dapps/tezos/package.json | 4 +--- examples/dapps/tezos/src/utils.ts | 6 ++---- examples/dapps/tezos/walless.ts | 3 --- 5 files changed, 3 insertions(+), 14 deletions(-) delete mode 100644 examples/dapps/tezos/walless.ts diff --git a/examples/dapps/tezos/index.web.js b/examples/dapps/tezos/index.web.js index 85a6ebd19..a05de78ad 100644 --- a/examples/dapps/tezos/index.web.js +++ b/examples/dapps/tezos/index.web.js @@ -1,10 +1,7 @@ import { createRoot } from 'react-dom/client'; -import './walless'; - import App from './src'; const container = document.getElementById('root'); const root = createRoot(container); - root.render(); diff --git a/examples/dapps/tezos/metacraft.config.js b/examples/dapps/tezos/metacraft.config.js index 96c96d09b..5705698ba 100644 --- a/examples/dapps/tezos/metacraft.config.js +++ b/examples/dapps/tezos/metacraft.config.js @@ -9,7 +9,6 @@ const injectEnvironments = (configs, internal) => { configs.plugins[0] = new DefinePlugin({ __DEV__: !isProduction, ENV: JSON.stringify(env), - chrome: { runtime: { id: JSON.stringify('walless-tezos-example') } }, }); return configs; diff --git a/examples/dapps/tezos/package.json b/examples/dapps/tezos/package.json index 50a71e994..c7c04fe76 100644 --- a/examples/dapps/tezos/package.json +++ b/examples/dapps/tezos/package.json @@ -10,13 +10,11 @@ "author": "", "license": "ISC", "dependencies": { - "@airgap/beacon-sdk": "^4.2.1", - "@airgap/beacon-utils": "^4.2.1", + "@airgap/beacon-sdk": "3.3.4", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { - "@walless/wallet": "workspace:^", "@metacraft/cli-web3-polyfills": "^0.0.7" } } diff --git a/examples/dapps/tezos/src/utils.ts b/examples/dapps/tezos/src/utils.ts index 6be77c7b5..f8897e7a3 100644 --- a/examples/dapps/tezos/src/utils.ts +++ b/examples/dapps/tezos/src/utils.ts @@ -2,9 +2,7 @@ import { dAppClient, network } from './bootstrap'; import { updateContext } from './context'; export const connect = async () => { - const permissions = await dAppClient.requestPermissions({ - network: network, - }); - console.log('New connection: ', permissions.address); + const permissions = await dAppClient.requestPermissions({ network }); + console.log('new connection: ', permissions.address); updateContext({ address: permissions.address }); }; diff --git a/examples/dapps/tezos/walless.ts b/examples/dapps/tezos/walless.ts deleted file mode 100644 index 9e6e6ac67..000000000 --- a/examples/dapps/tezos/walless.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { WALLESS_TEZOS } from '@walless/wallet/browser/content/tezos'; - -WALLESS_TEZOS.name = 'Walless | Tezos Example'; From 2b7b2b813f86c4525164c4c00493357efa5a15c4 Mon Sep 17 00:00:00 2001 From: Tan Le Date: Tue, 9 Apr 2024 17:58:55 +0700 Subject: [PATCH 05/11] chore: init tezos wallet by method --- apps/wallet/browser/content/index.ts | 2 + apps/wallet/browser/content/tezos.ts | 75 +++++++++++++++++----------- 2 files changed, 49 insertions(+), 28 deletions(-) diff --git a/apps/wallet/browser/content/index.ts b/apps/wallet/browser/content/index.ts index 2efa10067..7d6617979 100644 --- a/apps/wallet/browser/content/index.ts +++ b/apps/wallet/browser/content/index.ts @@ -1,9 +1,11 @@ import { logger } from '@walless/core'; +import { initializeTezosWallet } from './tezos'; import { initializeMessaging, injectScript } from './utils'; (async () => { await initializeMessaging(); + initializeTezosWallet(); logger.info('Messaging module initialized..'); injectScript('injection.js'); diff --git a/apps/wallet/browser/content/tezos.ts b/apps/wallet/browser/content/tezos.ts index 43a48901e..41e57fe35 100644 --- a/apps/wallet/browser/content/tezos.ts +++ b/apps/wallet/browser/content/tezos.ts @@ -37,7 +37,7 @@ const TEZOS_PAIRING_RESPONSE = 'postmessage-pairing-response'; const ONE_MINUTE_TO_MS = 60000; -const WALLESS_TEZOS = { +export const WALLESS_TEZOS = { id: chrome.runtime.id, name: 'Walless', iconUrl: 'https://walless.io/img/walless-icon.svg', @@ -45,29 +45,42 @@ const WALLESS_TEZOS = { version: '3', }; -window.addEventListener('message', async (e) => { - const isNotTezosRequest = e.data?.target !== ExtensionMessageTarget.EXTENSION; - const wrongTarget = e.data?.targetId && e.data?.targetId !== WALLESS_TEZOS.id; - if (isNotTezosRequest || wrongTarget) { - return; - } +let init = false; +export const initializeTezosWallet = () => { + if (init) throw Error('Already initialized'); + init = true; + + window.addEventListener('message', async (e) => { + if (!e.data) return; + const { target, targetId } = e.data; + const isNotTezosRequest = target !== ExtensionMessageTarget.EXTENSION; + const wrongTarget = targetId && targetId !== WALLESS_TEZOS.id; + if (isNotTezosRequest || wrongTarget) return; + + if (e.data.payload === 'ping') return handlePingPong(); - if (e.data?.payload === 'ping') { - return handlePingPong(); - } else { origin = e.origin; - let payload = e.data?.payload; - const encryptedPayload = e.data?.encryptedPayload; - if (payload) { + if (e.data.payload) { + let payload = e.data.payload; if (typeof payload === 'string') payload = deserialize(payload); + if (payload.type === TEZOS_PAIRING_REQUEST) { return handlePairingRequest(payload); + } else if (payload.type === BeaconMessageType.PermissionRequest) { + const response = await handlePermissionRequest(payload as never); + window.postMessage({ + message: { + target: ExtensionMessageTarget.PAGE, + payload: response, + }, + sender: { id: WALLESS_TEZOS.id }, + }); } - } else if (encryptedPayload) { - handleEncryptedRequest(encryptedPayload); + } else if (e.data.encryptedPayload) { + handleEncryptedRequest(e.data.encryptedPayload); } - } -}); + }); +}; const handlePingPong = () => { window.postMessage({ @@ -114,17 +127,22 @@ const handleEncryptedRequest = async (encryptedPayload: string) => { if (!payload || !payload.type) return; sendAckMessage(payload.id); + let response; if (payload.type === BeaconMessageType.PermissionRequest) { - handlePermissionRequest(payload as never); + response = await handlePermissionRequest(payload as never); } else if (payload.type === BeaconMessageType.Disconnect) { handleDisconnect(); } else if (payload.type === BeaconMessageType.SignPayloadRequest) { - handleSignPayloadRequest(payload as never); + response = await handleSignPayloadRequest(payload as never); } else if (payload.type === BeaconMessageType.OperationRequest) { - handleOperationRequest(payload as never); + response = await handleOperationRequest(payload as never); } else { console.log('not support this type of request'); } + + if (response) { + respondWithSharedKeyEncrypt(response); + } }; const handlePermissionRequest = async (payload: PermissionRequest) => { @@ -143,15 +161,15 @@ const handlePermissionRequest = async (payload: PermissionRequest) => { ONE_MINUTE_TO_MS, ); - const resPayload = { + const response = { id: payload.id, type: BeaconMessageType.PermissionResponse, network: { type: NetworkType.MAINNET }, // TODO: handle custom networks - publicKey: res.publicKeys[0]?.meta?.publicKey, + publicKey: res.publicKeys[0].publicKey, scopes: [PermissionScope.OPERATION_REQUEST, PermissionScope.SIGN], }; - respondWithSharedKeyEncrypt(resPayload); + return response; }; const handleSignPayloadRequest = async (payload: SignPayloadRequest) => { @@ -166,7 +184,7 @@ const handleSignPayloadRequest = async (payload: SignPayloadRequest) => { ONE_MINUTE_TO_MS, ); - const resPayload: SignPayloadResponse = { + const response: SignPayloadResponse = { id: payload.id, signature: res.signature, signingType: payload.signingType, @@ -175,7 +193,7 @@ const handleSignPayloadRequest = async (payload: SignPayloadRequest) => { version: '2', }; - respondWithSharedKeyEncrypt(resPayload); + return response; }; const handleOperationRequest = async (payload: OperationRequest) => { @@ -184,12 +202,12 @@ const handleOperationRequest = async (payload: OperationRequest) => { }; const sendAckMessage = async (requestId: string) => { - const resPayload = { + const response = { type: BeaconMessageType.Acknowledge, id: requestId, }; - respondWithSharedKeyEncrypt(resPayload); + return response; }; const decryptPayload = async (encryptedPayload: string) => { @@ -202,7 +220,8 @@ const decryptPayload = async (encryptedPayload: string) => { sharedKey.receive, ); - return deserialize(payload); + const payloadJson = deserialize(payload); + return payloadJson; } catch (e) { // TODO: need to respond error to client side console.log('error decrypting payload', e); From 6ae2de3e989226a9369dfa0fe8299712145cd94d Mon Sep 17 00:00:00 2001 From: Tan Le Date: Tue, 9 Apr 2024 18:01:59 +0700 Subject: [PATCH 06/11] chore: decouple storage/config for separate runtime --- apps/wallet/browser/bridge/index.ts | 3 +- apps/wallet/browser/bridge/utils.ts | 5 +++- apps/wallet/browser/content/utils.ts | 4 +++ apps/wallet/browser/kernel/handlers/aptos.ts | 2 +- apps/wallet/browser/kernel/handlers/common.ts | 16 +++++++++-- apps/wallet/browser/kernel/handlers/solana.ts | 2 +- apps/wallet/browser/kernel/handlers/sui.ts | 2 +- apps/wallet/browser/kernel/handlers/tezos.ts | 2 +- apps/wallet/browser/kernel/index.ts | 3 +- .../wallet/browser/kernel/messaging/shared.ts | 3 +- apps/wallet/browser/kernel/utils/config.ts | 28 +++++++++++++++++++ apps/wallet/browser/kernel/utils/helper.ts | 2 +- .../wallet/browser/kernel/utils/middleware.ts | 2 +- apps/wallet/browser/kernel/utils/storage.ts | 4 +++ 14 files changed, 63 insertions(+), 15 deletions(-) create mode 100644 apps/wallet/browser/kernel/utils/config.ts create mode 100644 apps/wallet/browser/kernel/utils/storage.ts diff --git a/apps/wallet/browser/bridge/index.ts b/apps/wallet/browser/bridge/index.ts index 83d836edc..21cfe24c0 100644 --- a/apps/wallet/browser/bridge/index.ts +++ b/apps/wallet/browser/bridge/index.ts @@ -3,9 +3,8 @@ import { runtime } from '@walless/core'; import type { SettingDocument } from '@walless/store'; -import { storage } from 'utils/storage'; -import { injectServiceWorker, launchSignInTab } from './utils'; +import { injectServiceWorker, launchSignInTab, storage } from './utils'; export const runBridge = async (): Promise => { if (runtime.isExtension) { diff --git a/apps/wallet/browser/bridge/utils.ts b/apps/wallet/browser/bridge/utils.ts index 661ddc727..95e141f4c 100644 --- a/apps/wallet/browser/bridge/utils.ts +++ b/apps/wallet/browser/bridge/utils.ts @@ -1,7 +1,10 @@ import { logger } from '@walless/core'; import type { PureMessagePayload } from '@walless/messaging'; import { createEncryptionKeyVault, createMessenger } from '@walless/messaging'; -import { storage } from 'utils/storage/db'; +import { create } from '@walless/store'; +import IDBPouch from 'pouchdb-adapter-idb'; + +export const storage = create('engine', IDBPouch); export interface PayloadOptions { sourceRequestId: string; diff --git a/apps/wallet/browser/content/utils.ts b/apps/wallet/browser/content/utils.ts index 7107ad57c..c90249c00 100644 --- a/apps/wallet/browser/content/utils.ts +++ b/apps/wallet/browser/content/utils.ts @@ -4,7 +4,11 @@ import { generateKeyPair, } from '@walless/crypto/utils/p2p'; import { createMessenger } from '@walless/messaging'; +import { create } from '@walless/store'; import { decode, encode } from 'bs58check'; +import IDBPouch from 'pouchdb-adapter-idb'; + +export const storage = create('engine', IDBPouch); export const messenger = createMessenger(); diff --git a/apps/wallet/browser/kernel/handlers/aptos.ts b/apps/wallet/browser/kernel/handlers/aptos.ts index 244c03a39..0a9091024 100644 --- a/apps/wallet/browser/kernel/handlers/aptos.ts +++ b/apps/wallet/browser/kernel/handlers/aptos.ts @@ -1,8 +1,8 @@ import { ResponseCode } from '@walless/core'; import { aptos } from '@walless/network'; import { Network, Provider } from 'aptos'; -import { environment } from 'utils/config'; +import { environment } from '../utils/config'; import { respond } from '../utils/requestPool'; import type { HandleMethod } from '../utils/types'; diff --git a/apps/wallet/browser/kernel/handlers/common.ts b/apps/wallet/browser/kernel/handlers/common.ts index 4a41fdc0d..f02cbfb86 100644 --- a/apps/wallet/browser/kernel/handlers/common.ts +++ b/apps/wallet/browser/kernel/handlers/common.ts @@ -1,12 +1,11 @@ import { PublicKey } from '@solana/web3.js'; -import type { SuiPublicKey } from '@walless/core'; +import type { SuiPublicKey, TezosPublicKey } from '@walless/core'; import { Networks } from '@walless/core'; import { ResponseCode } from '@walless/core'; import type { ConnectOptions } from '@walless/sdk'; import type { PublicKeyDocument, TrustedDomainDocument } from '@walless/store'; import { selectors } from '@walless/store'; import { encode } from 'bs58'; -import { storage } from 'utils/storage/db'; import { addExtensionsById, @@ -14,6 +13,7 @@ import { } from '../utils/helper'; import { openPopup } from '../utils/popup'; import { getRequestRecord, respond } from '../utils/requestPool'; +import { storage } from '../utils/storage'; import type { HandleMethod } from '../utils/types'; export const connect: HandleMethod<{ options?: ConnectOptions }> = async ({ @@ -41,6 +41,7 @@ export const connect: HandleMethod<{ options?: ConnectOptions }> = async ({ const pkDocs = await storage.find(selectors.allKeys); const publicKeys = pkDocs.docs + .filter((k) => k.network === connectOptions.network) .map((publickey) => { switch (publickey.network) { case Networks.solana: { @@ -50,7 +51,6 @@ export const connect: HandleMethod<{ options?: ConnectOptions }> = async ({ network, }; } - case Networks.sui: { const { network, encodedPublicKey } = publickey as never as SuiPublicKey; @@ -59,6 +59,16 @@ export const connect: HandleMethod<{ options?: ConnectOptions }> = async ({ network, }; } + case Networks.tezos: { + const { + network, + meta: { publicKey }, + } = publickey as PublicKeyDocument; + return { + publicKey, + network, + }; + } } }) .filter((k) => !!k); diff --git a/apps/wallet/browser/kernel/handlers/solana.ts b/apps/wallet/browser/kernel/handlers/solana.ts index 90062d58f..ed3b5381a 100644 --- a/apps/wallet/browser/kernel/handlers/solana.ts +++ b/apps/wallet/browser/kernel/handlers/solana.ts @@ -1,8 +1,8 @@ import { clusterApiUrl, Connection } from '@solana/web3.js'; import { ResponseCode } from '@walless/core'; import { solana } from '@walless/network'; -import { environment } from 'utils/config'; +import { environment } from '../utils/config'; import { respond } from '../utils/requestPool'; import type { HandleMethod } from '../utils/types'; diff --git a/apps/wallet/browser/kernel/handlers/sui.ts b/apps/wallet/browser/kernel/handlers/sui.ts index b36143a1a..2927fe3f2 100644 --- a/apps/wallet/browser/kernel/handlers/sui.ts +++ b/apps/wallet/browser/kernel/handlers/sui.ts @@ -1,8 +1,8 @@ import { getFullnodeUrl, SuiClient } from '@mysten/sui.js/client'; import { ResponseCode } from '@walless/core'; import { sui } from '@walless/network'; -import { environment } from 'utils/config'; +import { environment } from '../utils/config'; import { respond } from '../utils/requestPool'; import type { HandleMethod } from '../utils/types'; diff --git a/apps/wallet/browser/kernel/handlers/tezos.ts b/apps/wallet/browser/kernel/handlers/tezos.ts index 8565d2ba5..49d38a135 100644 --- a/apps/wallet/browser/kernel/handlers/tezos.ts +++ b/apps/wallet/browser/kernel/handlers/tezos.ts @@ -3,8 +3,8 @@ import { TezosToolkit } from '@taquito/taquito'; import { ResponseCode } from '@walless/core'; import { tezos } from '@walless/network'; import { encode } from 'bs58'; -import { environment } from 'utils/config'; +import { environment } from '../utils/config'; import { respond } from '../utils/requestPool'; import type { HandleMethod } from '../utils/types'; diff --git a/apps/wallet/browser/kernel/index.ts b/apps/wallet/browser/kernel/index.ts index a92c1850d..7c788a8f0 100644 --- a/apps/wallet/browser/kernel/index.ts +++ b/apps/wallet/browser/kernel/index.ts @@ -1,9 +1,8 @@ import { logger, runtime } from '@walless/core'; import { configure, migrateDatabase } from '@walless/store'; -// TODO: need to initialize storage separately for kernel -import { storage } from 'utils/storage/db'; import { keepBackgroundAlive } from './utils/extension'; +import { storage } from './utils/storage'; import { initializeMessaging } from './messaging'; import { configurePWA } from './pwa'; diff --git a/apps/wallet/browser/kernel/messaging/shared.ts b/apps/wallet/browser/kernel/messaging/shared.ts index 98b4ac9f5..49e68ca18 100644 --- a/apps/wallet/browser/kernel/messaging/shared.ts +++ b/apps/wallet/browser/kernel/messaging/shared.ts @@ -1,5 +1,6 @@ import { Channels, createEncryptionKeyVault } from '@walless/messaging'; -import { storage } from 'utils/storage/db'; + +import { storage } from '../utils/storage'; export const channels = [ Channels.ui, diff --git a/apps/wallet/browser/kernel/utils/config.ts b/apps/wallet/browser/kernel/utils/config.ts new file mode 100644 index 000000000..4c9813dff --- /dev/null +++ b/apps/wallet/browser/kernel/utils/config.ts @@ -0,0 +1,28 @@ +export const w3aBaseUrl = + NETWORK_CLUSTER === 'mainnet' ? 'https:app.walless.io' : location.origin; + +export const environment = { + NETWORK_CLUSTER, + FIREBASE_API_KEY, + BUILD_TARGET, + BROWSER_CLIENT_ID, + EXTENSION_CLIENT_ID, + FIREBASE_AUTH_DOMAIN, + FIREBASE_PROJECT_ID, + FIREBASE_STORAGE_BUCKET, + FIREBASE_MESSAGING_SENDER_ID, + FIREBASE_APP_ID, + FIREBASE_MEASUREMENT_ID, + FIREBASE_VAPID_KEY, + GATEFI_ENDPOINT, + GATEFI_MERCHANT_ID, + WEB3AUTH_ID, + GRAPHQL_ENDPOINT, + PIXEVERSE_ENDPOINT, + PIXEVERSE_ORIGIN, + PIXEVERSE_URL, + SOLANA_CLUSTER_URL, + GASILON_ENDPOINT, + JUPITER_TOKENS_ENDPOINT, + JUPITER_API_ENDPOINT, +}; diff --git a/apps/wallet/browser/kernel/utils/helper.ts b/apps/wallet/browser/kernel/utils/helper.ts index 644181f20..466c68e13 100644 --- a/apps/wallet/browser/kernel/utils/helper.ts +++ b/apps/wallet/browser/kernel/utils/helper.ts @@ -5,9 +5,9 @@ import type { PrivateKeyDocument, PublicKeyDocument, } from '@walless/store'; -import { storage } from 'utils/storage/db'; import { mockLayoutCards } from './mockExtension'; +import { storage } from './storage'; export const getExtensionById = async (id: string) => { return mockLayoutCards.find((card) => card._id === id); diff --git a/apps/wallet/browser/kernel/utils/middleware.ts b/apps/wallet/browser/kernel/utils/middleware.ts index 0f5c6e324..8db3ee91a 100644 --- a/apps/wallet/browser/kernel/utils/middleware.ts +++ b/apps/wallet/browser/kernel/utils/middleware.ts @@ -9,10 +9,10 @@ import { utils } from '@walless/network'; import type { ConnectOptions } from '@walless/sdk'; import type { TrustedDomainDocument } from '@walless/store'; import { selectors } from '@walless/store'; -import { storage } from 'utils/storage/db'; import { closePopup, openPopup } from './popup'; import { getRequestRecord, requestPool, respond } from './requestPool'; +import { storage } from './storage'; import type { HandleMethod } from './types'; export const getPrivateKey = ( diff --git a/apps/wallet/browser/kernel/utils/storage.ts b/apps/wallet/browser/kernel/utils/storage.ts new file mode 100644 index 000000000..34e817cd3 --- /dev/null +++ b/apps/wallet/browser/kernel/utils/storage.ts @@ -0,0 +1,4 @@ +import { create } from '@walless/store'; +import IDBPouch from 'pouchdb-adapter-idb'; + +export const storage = create('engine', IDBPouch); From 7bd06925a4d4eb4ec26b8371c4982faeb1425e6a Mon Sep 17 00:00:00 2001 From: Tan Le Date: Tue, 9 Apr 2024 18:02:37 +0700 Subject: [PATCH 07/11] chore: TezosPublicKey meta type --- packages/core/utils/keys.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/core/utils/keys.ts b/packages/core/utils/keys.ts index cae842ebe..0625467f2 100644 --- a/packages/core/utils/keys.ts +++ b/packages/core/utils/keys.ts @@ -1,4 +1,4 @@ -import type { Networks, UnknownObject } from './common'; +import type { Networks } from './common'; export type PublicKey = { privateKeyId: string; @@ -11,5 +11,8 @@ export type SuiPublicKey = PublicKey & { }; export type TezosPublicKey = PublicKey & { - meta: UnknownObject; + meta: { + publicKey: string; + address: string; + }; }; From 9a057852736bdaa60fd9888134b2b0e551c2cde8 Mon Sep 17 00:00:00 2001 From: Tan Le Date: Tue, 9 Apr 2024 18:04:38 +0700 Subject: [PATCH 08/11] chore: sync workspace/packages --- .gitignore | 4 +- apps/wallet/package.json | 6 +- yarn.lock | 193 +++++++++++++++++++++++++++++++++++---- 3 files changed, 181 insertions(+), 22 deletions(-) diff --git a/.gitignore b/.gitignore index e58a38fd2..f7bb37c9f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ +# editor .idea +.zed # automations .sst @@ -72,4 +74,4 @@ cli/tokens/**/cache.json cli/tokens/**/config.json cli/tokens/**/sugar.log -playground \ No newline at end of file +playground diff --git a/apps/wallet/package.json b/apps/wallet/package.json index d7e34e230..c2bc66d76 100644 --- a/apps/wallet/package.json +++ b/apps/wallet/package.json @@ -1,6 +1,6 @@ { "name": "@walless/wallet", - "version": "1.1.5", + "version": "1.1.6", "private": true, "scripts": { "dev": "metacraft", @@ -18,8 +18,8 @@ "test": "jest --passWithNoTests" }, "dependencies": { - "@airgap/beacon-sdk": "^4.0.12", - "@airgap/beacon-utils": "^4.0.12", + "@airgap/beacon-sdk": "^4.2.1", + "@airgap/beacon-utils": "^4.2.1", "@babel/plugin-proposal-export-namespace-from": "^7.18.9", "@coral-xyz/anchor": "^0.29.0", "@craftzdog/pouchdb-collate-react-native": "^7.3.0", diff --git a/yarn.lock b/yarn.lock index 84ea5fb6a..de6e257d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -41,6 +41,16 @@ __metadata: languageName: node linkType: hard +"@airgap/beacon-blockchain-substrate@npm:^3.3.4": + version: 3.3.4 + resolution: "@airgap/beacon-blockchain-substrate@npm:3.3.4" + dependencies: + "@airgap/beacon-types": ^3.3.4 + "@airgap/beacon-ui": ^3.3.4 + checksum: 766db0042402e898d353b04796216c4d4a1db0b1899fb00be5c435c859ac99dfd79b45830712b3cff5323798b4fdc870facdbf284162dabad9652c9c1ce85bcf + languageName: node + linkType: hard + "@airgap/beacon-blockchain-tezos@npm:4.2.1": version: 4.2.1 resolution: "@airgap/beacon-blockchain-tezos@npm:4.2.1" @@ -51,6 +61,16 @@ __metadata: languageName: node linkType: hard +"@airgap/beacon-blockchain-tezos@npm:^3.3.4": + version: 3.3.4 + resolution: "@airgap/beacon-blockchain-tezos@npm:3.3.4" + dependencies: + "@airgap/beacon-types": ^3.3.4 + "@airgap/beacon-ui": ^3.3.4 + checksum: baaf20bd8c96ea32d7e6f23485c68b060afe0d9960b87361894751f4aaf09aeceb7384f4929a1e3f69a0525b21203f4744ab4d0fe09f0b6354832151e9479007 + languageName: node + linkType: hard + "@airgap/beacon-core@npm:4.2.1": version: 4.2.1 resolution: "@airgap/beacon-core@npm:4.2.1" @@ -66,6 +86,21 @@ __metadata: languageName: node linkType: hard +"@airgap/beacon-core@npm:^3.3.4": + version: 3.3.4 + resolution: "@airgap/beacon-core@npm:3.3.4" + dependencies: + "@airgap/beacon-types": ^3.3.4 + "@airgap/beacon-utils": ^3.3.4 + "@stablelib/ed25519": ^1.0.3 + "@stablelib/nacl": ^1.0.4 + "@stablelib/utf8": ^1.0.1 + "@stablelib/x25519-session": ^1.0.4 + bs58check: 2.1.2 + checksum: 9f18f6521867c95c251ccb9c23247fcc275d0160b2d4c185fd3c38346f08a5780b66051d09e380f620e85ce03608a40df2c6a6201fab49a9b17ce44a9ee7a112 + languageName: node + linkType: hard + "@airgap/beacon-dapp@npm:4.2.1": version: 4.2.1 resolution: "@airgap/beacon-dapp@npm:4.2.1" @@ -79,6 +114,37 @@ __metadata: languageName: node linkType: hard +"@airgap/beacon-dapp@npm:^3.3.4": + version: 3.3.4 + resolution: "@airgap/beacon-dapp@npm:3.3.4" + dependencies: + "@airgap/beacon-core": ^3.3.4 + "@airgap/beacon-transport-matrix": ^3.3.4 + "@airgap/beacon-transport-postmessage": ^3.3.4 + "@airgap/beacon-ui": ^3.3.4 + qrcode-generator: 1.4.4 + checksum: 979ead0e3e993d797a27fa2d9fc9d5dcb9d96aa0ba133afd4927ed27b167c9b87e68ed989e04e93af5ffc9fddb05cdc729a1f8bd17c06a394c744d538c17042d + languageName: node + linkType: hard + +"@airgap/beacon-sdk@npm:3.3.4": + version: 3.3.4 + resolution: "@airgap/beacon-sdk@npm:3.3.4" + dependencies: + "@airgap/beacon-blockchain-substrate": ^3.3.4 + "@airgap/beacon-blockchain-tezos": ^3.3.4 + "@airgap/beacon-core": ^3.3.4 + "@airgap/beacon-dapp": ^3.3.4 + "@airgap/beacon-transport-matrix": ^3.3.4 + "@airgap/beacon-transport-postmessage": ^3.3.4 + "@airgap/beacon-types": ^3.3.4 + "@airgap/beacon-ui": ^3.3.4 + "@airgap/beacon-utils": ^3.3.4 + "@airgap/beacon-wallet": ^3.3.4 + checksum: 12426d7f4973ece03919b3471f12e7e198e03859e7cd1b264e5e74423a52d24ed6cfc5ea3289f630a3d5a358501bf4059dfaa112c54a5f18a08c40587731363b + languageName: node + linkType: hard + "@airgap/beacon-sdk@npm:^4.2.1": version: 4.2.1 resolution: "@airgap/beacon-sdk@npm:4.2.1" @@ -108,6 +174,17 @@ __metadata: languageName: node linkType: hard +"@airgap/beacon-transport-matrix@npm:^3.3.4": + version: 3.3.4 + resolution: "@airgap/beacon-transport-matrix@npm:3.3.4" + dependencies: + "@airgap/beacon-core": ^3.3.4 + "@airgap/beacon-utils": ^3.3.4 + axios: 0.24.0 + checksum: b70beecbce11e4b41ca6a0065b865f7458b8c9829874f290e078744f228fcc6965040e06d2363981783104f1278a9edbb4c91de56581473cdf207f018053bd56 + languageName: node + linkType: hard + "@airgap/beacon-transport-postmessage@npm:4.2.1": version: 4.2.1 resolution: "@airgap/beacon-transport-postmessage@npm:4.2.1" @@ -119,6 +196,17 @@ __metadata: languageName: node linkType: hard +"@airgap/beacon-transport-postmessage@npm:^3.3.4": + version: 3.3.4 + resolution: "@airgap/beacon-transport-postmessage@npm:3.3.4" + dependencies: + "@airgap/beacon-core": ^3.3.4 + "@airgap/beacon-types": ^3.3.4 + "@airgap/beacon-utils": ^3.3.4 + checksum: 265f19637609dd7ed2cc6926c82ee1397fe4a45d220a7b5f47217565f1175dd194f960722a1aabd5e42af658a64d3a10964e93fe4aee385feffa7eb4e50a94d5 + languageName: node + linkType: hard + "@airgap/beacon-transport-walletconnect@npm:4.2.1": version: 4.2.1 resolution: "@airgap/beacon-transport-walletconnect@npm:4.2.1" @@ -140,6 +228,15 @@ __metadata: languageName: node linkType: hard +"@airgap/beacon-types@npm:^3.3.4": + version: 3.3.4 + resolution: "@airgap/beacon-types@npm:3.3.4" + dependencies: + "@types/chrome": 0.0.163 + checksum: c44626182d6d69756ec58756c6ed2789977bd7287d914f56cba1124e8c2d433112f712daf57f61cf5a477fbfd3f23cd83b96a9e7fb2a62f8886334e0ade18aa2 + languageName: node + linkType: hard + "@airgap/beacon-ui@npm:4.2.1": version: 4.2.1 resolution: "@airgap/beacon-ui@npm:4.2.1" @@ -155,6 +252,18 @@ __metadata: languageName: node linkType: hard +"@airgap/beacon-ui@npm:^3.3.4": + version: 3.3.4 + resolution: "@airgap/beacon-ui@npm:3.3.4" + dependencies: + "@airgap/beacon-core": ^3.3.4 + "@airgap/beacon-transport-postmessage": ^3.3.4 + "@airgap/beacon-types": ^3.3.4 + "@airgap/beacon-utils": ^3.3.4 + checksum: 009f31aa64d1c8a52866b24bfd344e931e5de61187e18528285d2264c0ffd267f6342bf24432b8ef3d75ffd86c8c74537ca5a6cf7a622ed68873a479a5261c3a + languageName: node + linkType: hard + "@airgap/beacon-utils@npm:4.2.1, @airgap/beacon-utils@npm:^4.2.1": version: 4.2.1 resolution: "@airgap/beacon-utils@npm:4.2.1" @@ -168,6 +277,18 @@ __metadata: languageName: node linkType: hard +"@airgap/beacon-utils@npm:^3.3.4": + version: 3.3.4 + resolution: "@airgap/beacon-utils@npm:3.3.4" + dependencies: + "@stablelib/nacl": ^1.0.3 + "@stablelib/random": ^1.0.2 + "@stablelib/utf8": ^1.0.1 + bs58check: 2.1.2 + checksum: 1f9eec76dccd1d68c545f8b57bc040082677e0472a334c36c1a4265e49c0446f4d63c7a3c82e96bc18da27fd58de8c954421869d40e2d153fbe6816672603e10 + languageName: node + linkType: hard + "@airgap/beacon-wallet@npm:4.2.1": version: 4.2.1 resolution: "@airgap/beacon-wallet@npm:4.2.1" @@ -179,6 +300,17 @@ __metadata: languageName: node linkType: hard +"@airgap/beacon-wallet@npm:^3.3.4": + version: 3.3.4 + resolution: "@airgap/beacon-wallet@npm:3.3.4" + dependencies: + "@airgap/beacon-core": ^3.3.4 + "@airgap/beacon-transport-matrix": ^3.3.4 + "@airgap/beacon-transport-postmessage": ^3.3.4 + checksum: f26dd1c05ac3eea5d398aaf1526e0f8e29727c3e8b9f83afe147d27a6438fd9b469cb8ce5ed3c78a16ab2a3a254808a163e35b517f36508a7966c817daac4697 + languageName: node + linkType: hard + "@alcalzone/ansi-tokenize@npm:^0.1.3": version: 0.1.3 resolution: "@alcalzone/ansi-tokenize@npm:0.1.3" @@ -9104,7 +9236,7 @@ __metadata: languageName: node linkType: hard -"@stablelib/nacl@npm:^1.0.4": +"@stablelib/nacl@npm:^1.0.3, @stablelib/nacl@npm:^1.0.4": version: 1.0.4 resolution: "@stablelib/nacl@npm:1.0.4" dependencies: @@ -11248,6 +11380,16 @@ __metadata: languageName: node linkType: hard +"@types/chrome@npm:0.0.163": + version: 0.0.163 + resolution: "@types/chrome@npm:0.0.163" + dependencies: + "@types/filesystem": "*" + "@types/har-format": "*" + checksum: e47d99d7c581a4dc70c30ae5e6e2980666b25bbf098c6eaa9fd3abd6e1686f0acf2e53bf2c8e7bba339c4639df0828d45d10fa9d66f669d9ef2bb1314b6a9500 + languageName: node + linkType: hard + "@types/chrome@npm:0.0.246": version: 0.0.246 resolution: "@types/chrome@npm:0.0.246" @@ -12078,9 +12220,8 @@ __metadata: version: 0.0.0-use.local resolution: "@walless/tezos-dapp-example@workspace:examples/dapps/tezos" dependencies: - "@airgap/beacon-sdk": ^4.2.1 - "@airgap/beacon-utils": ^4.2.1 - "@walless/wallet": "workspace:^" + "@airgap/beacon-sdk": 3.3.4 + "@metacraft/cli-web3-polyfills": ^0.0.7 react: ^18.2.0 react-dom: ^18.2.0 languageName: unknown @@ -12132,7 +12273,7 @@ __metadata: languageName: unknown linkType: soft -"@walless/wallet@workspace:^, @walless/wallet@workspace:apps/wallet": +"@walless/wallet@workspace:apps/wallet": version: 0.0.0-use.local resolution: "@walless/wallet@workspace:apps/wallet" dependencies: @@ -13696,6 +13837,15 @@ __metadata: languageName: node linkType: hard +"axios@npm:0.24.0": + version: 0.24.0 + resolution: "axios@npm:0.24.0" + dependencies: + follow-redirects: ^1.14.4 + checksum: 468cf496c08a6aadfb7e699bebdac02851e3043d4e7d282350804ea8900e30d368daa6e3cd4ab83b8ddb5a3b1e17a5a21ada13fc9cebd27b74828f47a4236316 + languageName: node + linkType: hard + "axios@npm:0.27.2": version: 0.27.2 resolution: "axios@npm:0.27.2" @@ -18053,23 +18203,23 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.14.9": - version: 1.15.5 - resolution: "follow-redirects@npm:1.15.5" +"follow-redirects@npm:^1.14.4, follow-redirects@npm:^1.15.6": + version: 1.15.6 + resolution: "follow-redirects@npm:1.15.6" peerDependenciesMeta: debug: optional: true - checksum: 5ca49b5ce6f44338cbfc3546823357e7a70813cecc9b7b768158a1d32c1e62e7407c944402a918ea8c38ae2e78266312d617dc68783fac502cbb55e1047b34ec + checksum: a62c378dfc8c00f60b9c80cab158ba54e99ba0239a5dd7c81245e5a5b39d10f0c35e249c3379eae719ff0285fff88c365dd446fab19dee771f1d76252df1bbf5 languageName: node linkType: hard -"follow-redirects@npm:^1.15.6": - version: 1.15.6 - resolution: "follow-redirects@npm:1.15.6" +"follow-redirects@npm:^1.14.9": + version: 1.15.5 + resolution: "follow-redirects@npm:1.15.5" peerDependenciesMeta: debug: optional: true - checksum: a62c378dfc8c00f60b9c80cab158ba54e99ba0239a5dd7c81245e5a5b39d10f0c35e249c3379eae719ff0285fff88c365dd446fab19dee771f1d76252df1bbf5 + checksum: 5ca49b5ce6f44338cbfc3546823357e7a70813cecc9b7b768158a1d32c1e62e7407c944402a918ea8c38ae2e78266312d617dc68783fac502cbb55e1047b34ec languageName: node linkType: hard @@ -24694,6 +24844,13 @@ __metadata: languageName: node linkType: hard +"qrcode-generator@npm:1.4.4": + version: 1.4.4 + resolution: "qrcode-generator@npm:1.4.4" + checksum: 860cfdd2a7a608d34e92cab99774cc08182e1911432f30ed36d16f8a5cdabd7fdf40239caed91fa2691cfe66c8d95c1340a2fc9cc439eed07a9f2eb328c6f527 + languageName: node + linkType: hard + "qrcode-svg@npm:^1.1.0": version: 1.1.0 resolution: "qrcode-svg@npm:1.1.0" @@ -26309,7 +26466,7 @@ __metadata: languageName: node linkType: hard -"seroval@npm:^1.0.3": +"seroval@npm:^1.0.4": version: 1.0.5 resolution: "seroval@npm:1.0.5" checksum: 851fc2045016a7aff11850835ca9e8f22d34614ccad6d38a33e7adb3da268206276174be1320be4e849949c2365424555e8b1c47389a5ce5a31e9078b62cfb71 @@ -26664,13 +26821,13 @@ __metadata: linkType: hard "solid-js@npm:^1.7.11": - version: 1.8.15 - resolution: "solid-js@npm:1.8.15" + version: 1.8.16 + resolution: "solid-js@npm:1.8.16" dependencies: csstype: ^3.1.0 - seroval: ^1.0.3 + seroval: ^1.0.4 seroval-plugins: ^1.0.3 - checksum: d1c68e1b45979ee44ed315a9094d82d741f4936fa839c8af540e628e877e684ce24fe76d9395c3f935cae778c741839c582dcf68f436eafb2ee8fe717cdd1ed1 + checksum: d0b9c067814290f56ca59bed58db69fc482b6a53bc0f05915b103b4517a19b98fc42885d84e189eafd33720c9ce32f3e7815973983b926476a8d0aa7c10017be languageName: node linkType: hard From 75a6146622cd7a348a064ff333414e1a03d536ea Mon Sep 17 00:00:00 2001 From: Tan Le Date: Wed, 10 Apr 2024 14:07:19 +0700 Subject: [PATCH 09/11] chore: polyfill content script and chrome runtime on web --- apps/wallet/browser/bundler/polyfill.js | 8 +++++ apps/wallet/browser/bundler/utils.js | 42 +++++++++++++++++++++++++ apps/wallet/metacraft.config.js | 7 ++++- 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 apps/wallet/browser/bundler/polyfill.js create mode 100644 apps/wallet/browser/bundler/utils.js diff --git a/apps/wallet/browser/bundler/polyfill.js b/apps/wallet/browser/bundler/polyfill.js new file mode 100644 index 000000000..d00bdcc77 --- /dev/null +++ b/apps/wallet/browser/bundler/polyfill.js @@ -0,0 +1,8 @@ +global.chrome.runtime = Object.assign(global.chrome.runtime || {}, { + id: 'internal-walless-app', +}); + +export * from 'browser/content/utils'; +export const injectScript = () => { + require('browser/content/injection'); +}; diff --git a/apps/wallet/browser/bundler/utils.js b/apps/wallet/browser/bundler/utils.js new file mode 100644 index 000000000..9a1e307e0 --- /dev/null +++ b/apps/wallet/browser/bundler/utils.js @@ -0,0 +1,42 @@ +const path = require('path'); + +/** + * polyfill `chrome.runtime` usage of contentScript in web runtime + */ +module.exports.contentScriptPolyfill = (configs, { modules }) => { + const { webpack } = modules; + + configs.plugins.push( + new webpack.NormalModuleReplacementPlugin(/.\/utils/, (resource) => { + const contentScriptScope = 'browser/content'; + const isInContentScriptScope = + resource.contextInfo.issuer.includes(contentScriptScope); + + if (isInContentScriptScope && resource.request === './utils') { + resource.request = path.resolve(__dirname, './polyfill.js'); + } + }), + ); + + return configs; +}; + +/** + * experimental, dApp side need to support proxy request + */ +module.exports.widgetsProxy = (configs) => { + configs = { + ...configs, + proxy: { + '/widgets-proxy': { + target: 'http://127.0.0.1:3011', // tezos dApp host + pathRewrite: function () { + return '/'; + }, + changeOrigin: true, + }, + }, + }; + + return configs; +}; diff --git a/apps/wallet/metacraft.config.js b/apps/wallet/metacraft.config.js index ba367fe91..81d946df2 100644 --- a/apps/wallet/metacraft.config.js +++ b/apps/wallet/metacraft.config.js @@ -8,6 +8,10 @@ const { injectEnvironments, replaceExtensionArgonLinks, } = require('./browser/bundler/webpack'); +const { + contentScriptPolyfill, + widgetsProxy, +} = require('./browser/bundler/utils'); module.exports = { publicPath: () => process.env.PUBLIC_URL || '/', @@ -21,8 +25,9 @@ module.exports = { injectEntries, injectEnvironments, replaceExtensionArgonLinks, + contentScriptPolyfill, ], - devMiddlewares: [w3aDevRoute], + devMiddlewares: [w3aDevRoute, widgetsProxy], htmlPluginOptions: { chunks: ['app'], }, From 3cd5034afd949ced883b35508d2cee225aec5d1a Mon Sep 17 00:00:00 2001 From: Tan Le Date: Mon, 15 Apr 2024 09:24:12 +0700 Subject: [PATCH 10/11] chore: playaround with tezos --- .../src/features/Widget/TezosDApp/index.tsx | 28 ++++++++++++ .../features/Widget/TezosDApp/index.web.tsx | 43 +++++++++++++++++++ apps/wallet/src/features/Widget/internal.ts | 2 + apps/wallet/src/state/widget/shared.ts | 25 +++++++++++ examples/dapps/tezos/index.web.js | 3 ++ examples/dapps/tezos/metacraft.config.js | 23 +++++++++- examples/dapps/tezos/package.json | 1 - examples/dapps/tezos/polyfill.js | 19 ++++++++ examples/dapps/tezos/src/index.tsx | 11 +++-- 9 files changed, 150 insertions(+), 5 deletions(-) create mode 100644 apps/wallet/src/features/Widget/TezosDApp/index.tsx create mode 100644 apps/wallet/src/features/Widget/TezosDApp/index.web.tsx create mode 100644 examples/dapps/tezos/polyfill.js diff --git a/apps/wallet/src/features/Widget/TezosDApp/index.tsx b/apps/wallet/src/features/Widget/TezosDApp/index.tsx new file mode 100644 index 000000000..25f842192 --- /dev/null +++ b/apps/wallet/src/features/Widget/TezosDApp/index.tsx @@ -0,0 +1,28 @@ +import { useRef } from 'react'; +import { StyleSheet } from 'react-native'; + +export const TezosDApp = () => { + const iframeRef = useRef(null); + + const handleOnLoad = () => { + iframeRef.current?.contentWindow?.focus(); + }; + + return ( + + ); +}; + +export default TezosDApp; + +const styles = StyleSheet.create({ + container: { + flex: 1, + borderColor: 'transparent', + }, +}); diff --git a/apps/wallet/src/features/Widget/TezosDApp/index.web.tsx b/apps/wallet/src/features/Widget/TezosDApp/index.web.tsx new file mode 100644 index 000000000..b3a8ef497 --- /dev/null +++ b/apps/wallet/src/features/Widget/TezosDApp/index.web.tsx @@ -0,0 +1,43 @@ +import { useEffect, useRef } from 'react'; +import { StyleSheet } from 'react-native'; +import { + initializeTezosWallet, + resolveTargetWindow, +} from 'browser/content/tezos'; + +export const TezosDApp = () => { + const iframeRef = useRef(null); + + const handleOnLoad = () => { + iframeRef.current?.contentWindow?.focus(); + }; + + useEffect(() => { + if (!iframeRef.current) { + console.log('not found ref'); + return; + } + console.log('resolve target window', iframeRef.current.contentWindow); + resolveTargetWindow(iframeRef.current.contentWindow as never); + initializeTezosWallet(); + }, [iframeRef]); + + return ( +