@rango-dev/provider-solflare 0.28.1-next.4 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/mod.js CHANGED
@@ -1,2 +1,2 @@
1
- var P=Object.defineProperty;var n=(e,o)=>P(e,"name",{value:o,configurable:!0});import{defineVersions as Y}from"@hub3js/core/utils";import{ProviderBuilder as R}from"@hub3js/core";import{solanaBlockchain as T}from"rango-types";import{SOLANA_NAMESPACE as x}from"@hub3js/namespaces";import{getNetworkInstance as C}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as I,TransactionType as L}from"rango-types";import{DefaultSolanaSigner as v}from"@rango-dev/signer-solana";import E from"bs58";var s=class extends v{static{n(this,"SolflareSolanaSiger")}constructor(o){super(o)}async signMessage(o){let a=new TextEncoder().encode(o),t=await this.provider.signMessage(a,"utf8");return E.encode(t.signature)}};async function m(e){let o=new I,r=C(e,x);return o.registerSigner(L.SOLANA,new s(r)),o}n(m,"getSigners");import{SOLANA_NAMESPACE as p}from"@hub3js/namespaces";function c(){let e=new Map,{solflare:o}=window;return o?(e.set(p,o),e):null}n(c,"solflare");function u(){let e=c();if(!e)throw new Error("Solflare Wallet is not injected. Please check your wallet.");return e}n(u,"getInstanceOrThrow");function i(){let o=c()?.get(p);if(!o)throw new Error("Solflare Wallet not injected or Solana not enabled. Please check your wallet.");return o}n(i,"solanaSolflare");var l="solflare",f=1e3,b={name:"Solflare",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/solflare/icon.svg",extensions:{chrome:"https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic",brave:"https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic",firefox:"https://addons.mozilla.org/en-US/firefox/addon/solflare-wallet/",edge:"https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic",homepage:"https://solflare.com"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"Solana",value:"Solana",id:"SOLANA",getSupportedChains:e=>T(e)}]}},{name:"signers",value:{getSigners:async()=>m(u())}}]};import{ActionBuilder as _,NamespaceBuilder as B}from"@hub3js/core";import{builders as D,hooks as F}from"@hub3js/solana";import*as S from"@hub3js/std/builders";import{standardizeAndThrowError as M}from"@hub3js/std/operators";import{utils as j}from"@hub3js/solana";function k(e){return async()=>{let o=e();if(!await o.connect())throw new Error("Connecting to solana has been failed");return j.formatAccountsToCAIP([o.publicKey.toString()])}}n(k,"connect");function N(e){return()=>{let o=e();if(!o)throw new Error("Trying to eagerly connect to your Solana wallet, but seems its instance is not available.");return o.isConnected}}n(N,"canEagerConnect");var d={canEagerConnect:N,connect:k};function O(e){let o;return[(r,a)=>{let t=e();if(!t)throw new Error("Trying to subscribe to your Solana wallet, but seems its instance is not available.");if(o=n(()=>{r.action("disconnect")},"eventCallback"),t.on("disconnect",o),a instanceof Error)throw a},(r,a)=>{let t=e();return o&&t&&t.removeListener("disconnect",o),a}]}n(O,"getDisconnectSubscriber");var g={getDisconnectSubscriber:O};var[W,h]=F.changeAccountSubscriber(i),[U,A]=g.getDisconnectSubscriber(i),z=D.connect().action(d.connect(i)).before(W).before(U).or(h).or(A).or(M).build(),H=S.disconnect().and(A).after(h).build(),J=new _("canEagerConnect").action(d.canEagerConnect(i)).build(),w=new B("Solana",l).action(z).action(H).action(J).build();var y=n(()=>new R(l).init(function(e){let[,o]=e.state();setTimeout(()=>{c()&&(o("installed",!0),console.debug("[solflare] instance detected.",e))},f)}).config("metadata",b).add("solana",w).build(),"buildProvider");var No=n(()=>Y().version("1.0.0",y()).build(),"versions");export{No as versions};
1
+ var P=Object.defineProperty;var n=(e,o)=>P(e,"name",{value:o,configurable:!0});import{defineVersions as Y}from"@hub3js/core/utils";import{ProviderBuilder as R}from"@hub3js/core";import{isSolanaNamespace as T}from"@hub3js/solana";import{SOLANA_NAMESPACE as x}from"@hub3js/namespaces";import{getNetworkInstance as C}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as I,TransactionType as L}from"rango-types";import{DefaultSolanaSigner as v}from"@rango-dev/signer-solana";import E from"bs58";var s=class extends v{static{n(this,"SolflareSolanaSiger")}constructor(o){super(o)}async signMessage(o){let a=new TextEncoder().encode(o),t=await this.provider.signMessage(a,"utf8");return E.encode(t.signature)}};async function m(e){let o=new I,r=C(e,x);return o.registerSigner(L.SOLANA,new s(r)),o}n(m,"getSigners");import{SOLANA_NAMESPACE as p}from"@hub3js/namespaces";function c(){let e=new Map,{solflare:o}=window;return o?(e.set(p,o),e):null}n(c,"solflare");function u(){let e=c();if(!e)throw new Error("Solflare Wallet is not injected. Please check your wallet.");return e}n(u,"getInstanceOrThrow");function i(){let o=c()?.get(p);if(!o)throw new Error("Solflare Wallet not injected or Solana not enabled. Please check your wallet.");return o}n(i,"solanaSolflare");var l="solflare",f=1e3,b={name:"Solflare",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/solflare/icon.svg",extensions:{chrome:"https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic",brave:"https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic",firefox:"https://addons.mozilla.org/en-US/firefox/addon/solflare-wallet/",edge:"https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic",homepage:"https://solflare.com"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"Solana",value:"Solana",id:"SOLANA",isChainSupported:T}]}},{name:"signers",value:{getSigners:async()=>m(u())}}]};import{ActionBuilder as _,NamespaceBuilder as D}from"@hub3js/core";import{builders as F,hooks as M}from"@hub3js/solana";import*as S from"@hub3js/std/builders";import{standardizeAndThrowError as W}from"@hub3js/std/operators";import{utils as j}from"@hub3js/solana";function k(e){return async()=>{let o=e();if(!await o.connect())throw new Error("Connecting to solana has been failed");return j.formatAccountsToCAIP([o.publicKey.toString()])}}n(k,"connect");function N(e){return()=>{let o=e();if(!o)throw new Error("Trying to eagerly connect to your Solana wallet, but seems its instance is not available.");return o.isConnected}}n(N,"canEagerConnect");var d={canEagerConnect:N,connect:k};function O(e){let o;return[(r,a)=>{let t=e();if(!t)throw new Error("Trying to subscribe to your Solana wallet, but seems its instance is not available.");if(o=n(()=>{r.action("disconnect")},"eventCallback"),t.on("disconnect",o),a instanceof Error)throw a},(r,a)=>{let t=e();return o&&t&&t.removeListener("disconnect",o),a}]}n(O,"getDisconnectSubscriber");var g={getDisconnectSubscriber:O};var[B,h]=M.changeAccountSubscriber(i),[U,A]=g.getDisconnectSubscriber(i),z=F.connect().action(d.connect(i)).before(B).before(U).or(h).or(A).or(W).build(),H=S.disconnect().and(A).after(h).build(),J=new _("canEagerConnect").action(d.canEagerConnect(i)).build(),w=new D("Solana",l).action(z).action(H).action(J).build();var y=n(()=>new R(l).init(function(e){let[,o]=e.state();setTimeout(()=>{c()&&(o("installed",!0),console.debug("[solflare] instance detected.",e))},f)}).config("metadata",b).add("solana",w).build(),"buildProvider");var No=n(()=>Y().version("1.0.0",y()).build(),"versions");export{No as versions};
2
2
  //# sourceMappingURL=mod.js.map
package/dist/mod.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/mod.ts", "../src/provider.ts", "../src/constants.ts", "../src/signer.ts", "../src/signers/solana.ts", "../src/utils.ts", "../src/namespaces/solana.ts", "../src/actions/solana.ts", "../src/hooks/solana.ts"],
4
- "sourcesContent": ["import { defineVersions } from '@hub3js/core/utils';\n\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions().version('1.0.0', buildProvider()).build();\n\nexport { versions };\n", "import { ProviderBuilder } from '@hub3js/core';\n\nimport { metadata, SOLFLARE_INJECTION_DELAY, WALLET_ID } from './constants.js';\nimport { solana } from './namespaces/solana.js';\nimport { solflare } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n setTimeout(() => {\n if (solflare()) {\n setState('installed', true);\n console.debug('[solflare] instance detected.', context);\n }\n }, SOLFLARE_INJECTION_DELAY);\n })\n .config('metadata', metadata)\n .add('solana', solana)\n .build();\n\nexport { buildProvider };\n", "import type { ProviderMetadata } from '@hub3js/core';\n\nimport { type BlockchainMeta, solanaBlockchain } from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'solflare';\nexport const SOLFLARE_INJECTION_DELAY = 1000;\nexport const metadata: ProviderMetadata = {\n name: 'Solflare',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/solflare/icon.svg',\n extensions: {\n chrome:\n 'https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic',\n brave:\n 'https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic',\n firefox: 'https://addons.mozilla.org/en-US/firefox/addon/solflare-wallet/',\n edge: 'https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic',\n homepage: 'https://solflare.com',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n solanaBlockchain(allBlockchains),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { Provider } from './types.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport { SOLANA_NAMESPACE } from '@hub3js/namespaces';\nimport { getNetworkInstance } from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { SolflareSolanaSiger } from './signers/solana.js';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const signers = new DefaultSignerFactory();\n const solProvider = getNetworkInstance(provider, SOLANA_NAMESPACE);\n\n signers.registerSigner(TxType.SOLANA, new SolflareSolanaSiger(solProvider));\n return signers;\n}\n", "import {\n DefaultSolanaSigner,\n type SolanaExternalProvider,\n} from '@rango-dev/signer-solana';\nimport base58 from 'bs58';\n\nexport class SolflareSolanaSiger extends DefaultSolanaSigner {\n constructor(provider: SolanaExternalProvider) {\n super(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n const encoder = new TextEncoder();\n const messageBytes = encoder.encode(msg);\n // Used any instead of Solflare because there is an issue in type of `signTransaction` method of Solflare\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const messageSignature = await (this.provider as any).signMessage(\n messageBytes,\n 'utf8'\n );\n\n return base58.encode(messageSignature.signature);\n }\n}\n", "import type { Provider } from './types.js';\nimport type { ProviderAPI as SolanaProviderApi } from '@hub3js/solana';\n\nimport { SOLANA_NAMESPACE } from '@hub3js/namespaces';\n\nexport function solflare(): Provider | null {\n const instances: Provider = new Map();\n const { solflare } = window;\n if (!solflare) {\n return null;\n }\n\n instances.set(SOLANA_NAMESPACE, solflare);\n\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = solflare();\n\n if (!instances) {\n throw new Error(\n 'Solflare Wallet is not injected. Please check your wallet.'\n );\n }\n\n return instances;\n}\n\nexport function solanaSolflare(): SolanaProviderApi {\n const instance = solflare();\n const solanaInstance = instance?.get(SOLANA_NAMESPACE);\n\n if (!solanaInstance) {\n throw new Error(\n 'Solflare Wallet not injected or Solana not enabled. Please check your wallet.'\n );\n }\n\n return solanaInstance;\n}\n", "import type { SolanaActions } from '@hub3js/solana';\n\nimport { ActionBuilder, NamespaceBuilder } from '@hub3js/core';\nimport { builders, hooks } from '@hub3js/solana';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport { standardizeAndThrowError } from '@hub3js/std/operators';\n\nimport { solanaActions } from '../actions/solana.js';\nimport { WALLET_ID } from '../constants.js';\nimport { solanaHooks } from '../hooks/solana.js';\nimport { solanaSolflare } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] =\n hooks.changeAccountSubscriber(solanaSolflare);\n\nconst [disconnectSubscriber, disconnectCleanUp] =\n solanaHooks.getDisconnectSubscriber(solanaSolflare);\n\nconst connect = builders\n .connect()\n .action(solanaActions.connect(solanaSolflare))\n .before(changeAccountSubscriber)\n .before(disconnectSubscriber)\n .or(changeAccountCleanup)\n .or(disconnectCleanUp)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .and(disconnectCleanUp)\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = new ActionBuilder<SolanaActions, 'canEagerConnect'>(\n 'canEagerConnect'\n)\n .action(solanaActions.canEagerConnect(solanaSolflare))\n .build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .build();\n\nexport { solana };\n", "import type { Context, FunctionWithContext } from '@hub3js/core';\n\nimport { type ProviderAPI, type SolanaActions, utils } from '@hub3js/solana';\n\nfunction connect(\n instance: () => ProviderAPI\n): FunctionWithContext<SolanaActions['connect'], Context> {\n return async () => {\n const solanaInstance = instance();\n const isConnected = await solanaInstance.connect();\n\n if (!isConnected) {\n throw new Error('Connecting to solana has been failed');\n }\n\n return utils.formatAccountsToCAIP([solanaInstance.publicKey.toString()]);\n };\n}\nfunction canEagerConnect(instance: () => ProviderAPI) {\n return () => {\n const solanaInstance = instance();\n\n if (!solanaInstance) {\n throw new Error(\n 'Trying to eagerly connect to your Solana wallet, but seems its instance is not available.'\n );\n }\n return solanaInstance.isConnected;\n };\n}\nexport const solanaActions = { canEagerConnect, connect };\n", "import type { AnyFunction, Subscriber, SubscriberCleanUp } from '@hub3js/core';\nimport type { ProviderAPI, SolanaActions } from '@hub3js/solana';\n\nfunction getDisconnectSubscriber(\n instance: () => ProviderAPI\n): [Subscriber<SolanaActions>, SubscriberCleanUp<SolanaActions>] {\n let eventCallback: AnyFunction;\n\n // subscriber can be passed to `or`, it will get the error and should rethrow error to pass the error to next `or` or throw error.\n return [\n (context, err) => {\n const solanaInstance = instance();\n\n if (!solanaInstance) {\n throw new Error(\n 'Trying to subscribe to your Solana wallet, but seems its instance is not available.'\n );\n }\n\n eventCallback = () => {\n context.action('disconnect');\n };\n solanaInstance.on('disconnect', eventCallback);\n\n if (err instanceof Error) {\n throw err;\n }\n },\n (_context, err) => {\n const solanaInstance = instance();\n\n if (eventCallback && solanaInstance) {\n solanaInstance.removeListener('disconnect', eventCallback);\n }\n\n return err;\n },\n ];\n}\nexport const solanaHooks = { getDisconnectSubscriber };\n"],
5
- "mappings": "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",
6
- "names": ["defineVersions", "ProviderBuilder", "solanaBlockchain", "SOLANA_NAMESPACE", "getNetworkInstance", "DefaultSignerFactory", "TxType", "DefaultSolanaSigner", "base58", "SolflareSolanaSiger", "DefaultSolanaSigner", "__name", "provider", "msg", "messageBytes", "messageSignature", "base58", "getSigners", "provider", "signers", "DefaultSignerFactory", "solProvider", "getNetworkInstance", "SOLANA_NAMESPACE", "TxType", "SolflareSolanaSiger", "__name", "SOLANA_NAMESPACE", "solflare", "instances", "SOLANA_NAMESPACE", "__name", "getInstanceOrThrow", "solanaSolflare", "solanaInstance", "WALLET_ID", "SOLFLARE_INJECTION_DELAY", "metadata", "allBlockchains", "solanaBlockchain", "getSigners", "getInstanceOrThrow", "ActionBuilder", "NamespaceBuilder", "builders", "hooks", "commonBuilders", "standardizeAndThrowError", "utils", "connect", "instance", "solanaInstance", "utils", "__name", "canEagerConnect", "solanaActions", "getDisconnectSubscriber", "instance", "eventCallback", "context", "err", "solanaInstance", "__name", "_context", "solanaHooks", "changeAccountSubscriber", "changeAccountCleanup", "hooks", "solanaSolflare", "disconnectSubscriber", "disconnectCleanUp", "solanaHooks", "connect", "builders", "solanaActions", "standardizeAndThrowError", "disconnect", "canEagerConnect", "ActionBuilder", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "solflare", "SOLFLARE_INJECTION_DELAY", "metadata", "solana", "versions", "__name", "defineVersions", "buildProvider"]
4
+ "sourcesContent": ["import { defineVersions } from '@hub3js/core/utils';\n\nimport { buildProvider } from './provider.js';\n\nconst versions = () =>\n defineVersions().version('1.0.0', buildProvider()).build();\n\nexport { versions };\n", "import { ProviderBuilder } from '@hub3js/core';\n\nimport { metadata, SOLFLARE_INJECTION_DELAY, WALLET_ID } from './constants.js';\nimport { solana } from './namespaces/solana.js';\nimport { solflare } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n setTimeout(() => {\n if (solflare()) {\n setState('installed', true);\n console.debug('[solflare] instance detected.', context);\n }\n }, SOLFLARE_INJECTION_DELAY);\n })\n .config('metadata', metadata)\n .add('solana', solana)\n .build();\n\nexport { buildProvider };\n", "import type { ProviderMetadata } from '@hub3js/core';\n\nimport { isSolanaNamespace } from '@hub3js/solana';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'solflare';\nexport const SOLFLARE_INJECTION_DELAY = 1000;\nexport const metadata: ProviderMetadata = {\n name: 'Solflare',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/solflare/icon.svg',\n extensions: {\n chrome:\n 'https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic',\n brave:\n 'https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic',\n firefox: 'https://addons.mozilla.org/en-US/firefox/addon/solflare-wallet/',\n edge: 'https://chromewebstore.google.com/detail/solflare-wallet/bhhhlbepdkbapadjdnnojkbgioiodbic',\n homepage: 'https://solflare.com',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'Solana',\n value: 'Solana',\n id: 'SOLANA',\n isChainSupported: isSolanaNamespace,\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { Provider } from './types.js';\nimport type { SignerFactory } from 'rango-types';\n\nimport { SOLANA_NAMESPACE } from '@hub3js/namespaces';\nimport { getNetworkInstance } from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nimport { SolflareSolanaSiger } from './signers/solana.js';\n\nexport default async function getSigners(\n provider: Provider\n): Promise<SignerFactory> {\n const signers = new DefaultSignerFactory();\n const solProvider = getNetworkInstance(provider, SOLANA_NAMESPACE);\n\n signers.registerSigner(TxType.SOLANA, new SolflareSolanaSiger(solProvider));\n return signers;\n}\n", "import {\n DefaultSolanaSigner,\n type SolanaExternalProvider,\n} from '@rango-dev/signer-solana';\nimport base58 from 'bs58';\n\nexport class SolflareSolanaSiger extends DefaultSolanaSigner {\n constructor(provider: SolanaExternalProvider) {\n super(provider);\n }\n\n async signMessage(msg: string): Promise<string> {\n const encoder = new TextEncoder();\n const messageBytes = encoder.encode(msg);\n // Used any instead of Solflare because there is an issue in type of `signTransaction` method of Solflare\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const messageSignature = await (this.provider as any).signMessage(\n messageBytes,\n 'utf8'\n );\n\n return base58.encode(messageSignature.signature);\n }\n}\n", "import type { Provider } from './types.js';\nimport type { ProviderAPI as SolanaProviderApi } from '@hub3js/solana';\n\nimport { SOLANA_NAMESPACE } from '@hub3js/namespaces';\n\nexport function solflare(): Provider | null {\n const instances: Provider = new Map();\n const { solflare } = window;\n if (!solflare) {\n return null;\n }\n\n instances.set(SOLANA_NAMESPACE, solflare);\n\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = solflare();\n\n if (!instances) {\n throw new Error(\n 'Solflare Wallet is not injected. Please check your wallet.'\n );\n }\n\n return instances;\n}\n\nexport function solanaSolflare(): SolanaProviderApi {\n const instance = solflare();\n const solanaInstance = instance?.get(SOLANA_NAMESPACE);\n\n if (!solanaInstance) {\n throw new Error(\n 'Solflare Wallet not injected or Solana not enabled. Please check your wallet.'\n );\n }\n\n return solanaInstance;\n}\n", "import type { SolanaActions } from '@hub3js/solana';\n\nimport { ActionBuilder, NamespaceBuilder } from '@hub3js/core';\nimport { builders, hooks } from '@hub3js/solana';\nimport * as commonBuilders from '@hub3js/std/builders';\nimport { standardizeAndThrowError } from '@hub3js/std/operators';\n\nimport { solanaActions } from '../actions/solana.js';\nimport { WALLET_ID } from '../constants.js';\nimport { solanaHooks } from '../hooks/solana.js';\nimport { solanaSolflare } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] =\n hooks.changeAccountSubscriber(solanaSolflare);\n\nconst [disconnectSubscriber, disconnectCleanUp] =\n solanaHooks.getDisconnectSubscriber(solanaSolflare);\n\nconst connect = builders\n .connect()\n .action(solanaActions.connect(solanaSolflare))\n .before(changeAccountSubscriber)\n .before(disconnectSubscriber)\n .or(changeAccountCleanup)\n .or(disconnectCleanUp)\n .or(standardizeAndThrowError)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<SolanaActions>()\n .and(disconnectCleanUp)\n .after(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = new ActionBuilder<SolanaActions, 'canEagerConnect'>(\n 'canEagerConnect'\n)\n .action(solanaActions.canEagerConnect(solanaSolflare))\n .build();\n\nconst solana = new NamespaceBuilder<SolanaActions>('Solana', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .build();\n\nexport { solana };\n", "import type { Context, FunctionWithContext } from '@hub3js/core';\n\nimport { type ProviderAPI, type SolanaActions, utils } from '@hub3js/solana';\n\nfunction connect(\n instance: () => ProviderAPI\n): FunctionWithContext<SolanaActions['connect'], Context> {\n return async () => {\n const solanaInstance = instance();\n const isConnected = await solanaInstance.connect();\n\n if (!isConnected) {\n throw new Error('Connecting to solana has been failed');\n }\n\n return utils.formatAccountsToCAIP([solanaInstance.publicKey.toString()]);\n };\n}\nfunction canEagerConnect(instance: () => ProviderAPI) {\n return () => {\n const solanaInstance = instance();\n\n if (!solanaInstance) {\n throw new Error(\n 'Trying to eagerly connect to your Solana wallet, but seems its instance is not available.'\n );\n }\n return solanaInstance.isConnected;\n };\n}\nexport const solanaActions = { canEagerConnect, connect };\n", "import type { AnyFunction, Subscriber, SubscriberCleanUp } from '@hub3js/core';\nimport type { ProviderAPI, SolanaActions } from '@hub3js/solana';\n\nfunction getDisconnectSubscriber(\n instance: () => ProviderAPI\n): [Subscriber<SolanaActions>, SubscriberCleanUp<SolanaActions>] {\n let eventCallback: AnyFunction;\n\n // subscriber can be passed to `or`, it will get the error and should rethrow error to pass the error to next `or` or throw error.\n return [\n (context, err) => {\n const solanaInstance = instance();\n\n if (!solanaInstance) {\n throw new Error(\n 'Trying to subscribe to your Solana wallet, but seems its instance is not available.'\n );\n }\n\n eventCallback = () => {\n context.action('disconnect');\n };\n solanaInstance.on('disconnect', eventCallback);\n\n if (err instanceof Error) {\n throw err;\n }\n },\n (_context, err) => {\n const solanaInstance = instance();\n\n if (eventCallback && solanaInstance) {\n solanaInstance.removeListener('disconnect', eventCallback);\n }\n\n return err;\n },\n ];\n}\nexport const solanaHooks = { getDisconnectSubscriber };\n"],
5
+ "mappings": "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",
6
+ "names": ["defineVersions", "ProviderBuilder", "isSolanaNamespace", "SOLANA_NAMESPACE", "getNetworkInstance", "DefaultSignerFactory", "TxType", "DefaultSolanaSigner", "base58", "SolflareSolanaSiger", "DefaultSolanaSigner", "__name", "provider", "msg", "messageBytes", "messageSignature", "base58", "getSigners", "provider", "signers", "DefaultSignerFactory", "solProvider", "getNetworkInstance", "SOLANA_NAMESPACE", "TxType", "SolflareSolanaSiger", "__name", "SOLANA_NAMESPACE", "solflare", "instances", "SOLANA_NAMESPACE", "__name", "getInstanceOrThrow", "solanaSolflare", "solanaInstance", "WALLET_ID", "SOLFLARE_INJECTION_DELAY", "metadata", "isSolanaNamespace", "getSigners", "getInstanceOrThrow", "ActionBuilder", "NamespaceBuilder", "builders", "hooks", "commonBuilders", "standardizeAndThrowError", "utils", "connect", "instance", "solanaInstance", "utils", "__name", "canEagerConnect", "solanaActions", "getDisconnectSubscriber", "instance", "eventCallback", "context", "err", "solanaInstance", "__name", "_context", "solanaHooks", "changeAccountSubscriber", "changeAccountCleanup", "hooks", "solanaSolflare", "disconnectSubscriber", "disconnectCleanUp", "solanaHooks", "connect", "builders", "solanaActions", "standardizeAndThrowError", "disconnect", "canEagerConnect", "ActionBuilder", "solana", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "solflare", "SOLFLARE_INJECTION_DELAY", "metadata", "solana", "versions", "__name", "defineVersions", "buildProvider"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-solflare",
3
- "version": "0.28.1-next.4",
3
+ "version": "0.29.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/mod.ts",
@@ -21,13 +21,13 @@
21
21
  "lint": "eslint \"**/*.{ts,tsx}\""
22
22
  },
23
23
  "dependencies": {
24
- "@hub3js/core": "^0.61.0",
25
- "@hub3js/namespaces": "^0.2.2",
26
- "@hub3js/solana": "^0.3.0",
27
- "@hub3js/std": "^0.2.0",
28
- "@rango-dev/signer-solana": "^0.48.1-next.0",
29
- "@rango-dev/wallets-core": "^0.60.1-next.3",
30
- "@rango-dev/wallets-shared": "^0.61.1-next.4",
24
+ "@hub3js/core": "^0.61.1",
25
+ "@hub3js/namespaces": "^0.2.5",
26
+ "@hub3js/solana": "^0.3.3",
27
+ "@hub3js/std": "^0.2.3",
28
+ "@rango-dev/signer-solana": "^0.49.0",
29
+ "@rango-dev/wallets-core": "^0.61.0",
30
+ "@rango-dev/wallets-shared": "^0.62.0",
31
31
  "@solana/web3.js": "^1.91.4",
32
32
  "bs58": "^5.0.0",
33
33
  "rango-types": "^0.5.0"
package/src/constants.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { ProviderMetadata } from '@hub3js/core';
2
2
 
3
- import { type BlockchainMeta, solanaBlockchain } from 'rango-types';
3
+ import { isSolanaNamespace } from '@hub3js/solana';
4
4
 
5
5
  import getSigners from './signer.js';
6
6
  import { getInstanceOrThrow } from './utils.js';
@@ -29,8 +29,7 @@ export const metadata: ProviderMetadata = {
29
29
  label: 'Solana',
30
30
  value: 'Solana',
31
31
  id: 'SOLANA',
32
- getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
33
- solanaBlockchain(allBlockchains),
32
+ isChainSupported: isSolanaNamespace,
34
33
  },
35
34
  ],
36
35
  },