@rango-dev/provider-tron-link 0.57.1-next.0 → 0.57.1-next.1
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/actions/tron.d.ts +4 -0
- package/dist/actions/tron.d.ts.map +1 -0
- package/dist/builders/tron.d.ts +8 -0
- package/dist/builders/tron.d.ts.map +1 -0
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/mod.d.ts +3 -0
- package/dist/mod.d.ts.map +1 -0
- package/dist/mod.js +2 -0
- package/dist/mod.js.map +7 -0
- package/dist/namespaces/tron.d.ts +4 -0
- package/dist/namespaces/tron.d.ts.map +1 -0
- package/dist/provider-tron-link.build.json +1 -1
- package/dist/provider.d.ts +3 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/signer.d.ts +2 -1
- package/dist/signer.d.ts.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +9 -8
- package/readme.md +21 -1
- package/src/actions/tron.ts +13 -0
- package/src/builders/tron.ts +42 -0
- package/src/constants.ts +41 -0
- package/src/mod.ts +8 -0
- package/src/namespaces/tron.ts +62 -0
- package/src/provider.ts +22 -0
- package/src/signer.ts +14 -3
- package/src/types.ts +20 -0
- package/src/utils.ts +40 -0
- package/dist/helpers.d.ts +0 -2
- package/dist/helpers.d.ts.map +0 -1
- package/dist/index.d.ts +0 -15
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +0 -7
- package/src/helpers.ts +0 -5
- package/src/index.ts +0 -83
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../src/actions/tron.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,WAAW;;CAA4B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TronChangeAccountEvent } from '../types.js';
|
|
2
|
+
import { ChangeAccountSubscriberBuilder } from '@rango-dev/wallets-core/namespaces/common';
|
|
3
|
+
import { type ProviderAPI, type TronActions } from '@rango-dev/wallets-core/namespaces/tron';
|
|
4
|
+
export declare const changeAccountSubscriber: (getInstance: () => ProviderAPI) => ChangeAccountSubscriberBuilder<MessageEvent<TronChangeAccountEvent>, ProviderAPI, TronActions>;
|
|
5
|
+
export declare const tronBuilders: {
|
|
6
|
+
changeAccountSubscriber: (getInstance: () => ProviderAPI) => ChangeAccountSubscriberBuilder<MessageEvent<TronChangeAccountEvent>, ProviderAPI, TronActions>;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=tron.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../src/builders/tron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,yCAAyC,CAAC;AAIjD,eAAO,MAAM,uBAAuB,gBAAiB,MAAM,WAAW,mGA4BhE,CAAC;AAEP,eAAO,MAAM,YAAY;2CA9B4B,MAAM,WAAW;CA8Bf,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type ProviderMetadata } from '@rango-dev/wallets-core';
|
|
2
|
+
export declare const WALLET_ID = "tron-link";
|
|
3
|
+
export declare const TronOKRequestCode = 200;
|
|
4
|
+
export declare const TRONLINK_INJECTION_DELAY = 1000;
|
|
5
|
+
export declare const metadata: ProviderMetadata;
|
|
6
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMhE,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,QAAQ,EAAE,gBA+BtB,CAAC"}
|
package/dist/mod.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,QAAQ,kEAC8C,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/mod.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var b=Object.defineProperty;var r=(e,o)=>b(e,"name",{value:o,configurable:!0});import{defineVersions as q}from"@rango-dev/wallets-core/utils";import{ProviderBuilder as W}from"@rango-dev/wallets-core";import"@rango-dev/wallets-core";import{tronBlockchain as L}from"rango-types";import{LegacyNetworks as k}from"@rango-dev/wallets-core/legacy";import{dynamicImportWithRefinedError as v,getNetworkInstance as A}from"@rango-dev/wallets-shared";import{DefaultSignerFactory as P,TransactionType as E}from"rango-types";async function s(e){let o=A(e,k.TRON),t=new P,{DefaultTronSigner:h}=await v(async()=>await import("@rango-dev/signer-tron"));return t.registerSigner(E.TRON,new h(o)),t}r(s,"getSigners");import{LegacyNetworks as c}from"@rango-dev/wallets-core/legacy";function i(){let e=new Map,{tronLink:o}=window;return o?(e.set(c.TRON,o),e):null}r(i,"tronlink");function m(){let e=i();if(!e)throw new Error("TronLink is not injected. Please check your wallet.");return e}r(m,"getInstanceOrThrow");function n(){let o=i()?.get(c.TRON);if(!o)throw new Error("TronLink not injected or Tron not enabled. Please check your wallet.");return o}r(n,"tronTronlink");var a="tron-link",d=200,p=1e3,l={name:"TronLink",icon:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/tronlink/icon.svg",extensions:{chrome:"https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec",brave:"https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec",homepage:"https://www.tronlink.org"},properties:[{name:"namespaces",value:{selection:"multiple",data:[{label:"Tron",value:"Tron",id:"TRON",getSupportedChains:e=>L(e)}]}},{name:"signers",value:{getSigners:async()=>s(m())}}]};import{NamespaceBuilder as S}from"@rango-dev/wallets-core";import{builders as O,standardizeAndThrowError as R}from"@rango-dev/wallets-core/namespaces/common";import{utils as _}from"@rango-dev/wallets-core/namespaces/tron";import{builders as g}from"@rango-dev/wallets-core/namespaces/tron";var I=r(()=>{let e=n();if(!e)throw new Error("Trying to eagerly connect to your wallet, but seems its tron instance is not available.");return e.ready},"canEagerConnectAction"),u={canEagerConnectAction:I};import{ChangeAccountSubscriberBuilder as N}from"@rango-dev/wallets-core/namespaces/common";import{utils as x}from"@rango-dev/wallets-core/namespaces/tron";var C=r(e=>new N().getInstance(e).onSwitchAccount((o,t)=>{if(!o.payload?.data?.isTronLink||o.payload.data.message.action!=="accountsChanged"){o.preventDefault();return}(!o.payload?.data?.message.data.address||!n().ready)&&(o.preventDefault(),t.action("connect"))}).format(async(o,t)=>x.formatAccountsToCAIP([t.data.message.data.address])).addEventListener((o,t)=>{window.addEventListener("message",t)}).removeEventListener((o,t)=>{window.removeEventListener("message",t)}),"changeAccountSubscriber"),f={changeAccountSubscriber:C};var[B,T]=f.changeAccountSubscriber(n).build(),D=g.connect().action(async()=>{let e=n(),o=await e.request({method:"tron_requestAccounts"});if(!o)throw new Error("Please unlock your TronLink extension first.");if(o?.code&&o.message&&o.code!==d)throw new Error(o.message);return _.formatAccountsToCAIP([e.tronWeb.defaultAddress.base58])}).before(B).or(R).or(T).build(),j=g.canEagerConnect().action(u.canEagerConnectAction).build(),M=O.disconnect().after(T).build(),w=new S("Tron",a).action(D).action(M).action(j).build();var y=r(()=>new W(a).init(function(e){let[,o]=e.state();setTimeout(()=>{i()&&(o("installed",!0),console.debug("[tron-link] instance detected.",e))},p)}).config("metadata",l).add("tron",w).build(),"buildProvider");var Io=r(()=>q().version("1.0.0",y()).build(),"versions");export{Io as versions};
|
|
2
|
+
//# sourceMappingURL=mod.js.map
|
package/dist/mod.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/mod.ts", "../src/provider.ts", "../src/constants.ts", "../src/signer.ts", "../src/utils.ts", "../src/namespaces/tron.ts", "../src/actions/tron.ts", "../src/builders/tron.ts"],
|
|
4
|
+
"sourcesContent": ["import { defineVersions } from '@rango-dev/wallets-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 '@rango-dev/wallets-core';\n\nimport { metadata, TRONLINK_INJECTION_DELAY, WALLET_ID } from './constants.js';\nimport { tron } from './namespaces/tron.js';\nimport { tronlink } from './utils.js';\n\nconst buildProvider = () =>\n new ProviderBuilder(WALLET_ID)\n .init(function (context) {\n const [, setState] = context.state();\n setTimeout(() => {\n if (tronlink()) {\n setState('installed', true);\n console.debug('[tron-link] instance detected.', context);\n }\n }, TRONLINK_INJECTION_DELAY);\n })\n .config('metadata', metadata)\n .add('tron', tron)\n .build();\n\nexport { buildProvider };\n", "import { type ProviderMetadata } from '@rango-dev/wallets-core';\nimport { type BlockchainMeta, tronBlockchain } from 'rango-types';\n\nimport getSigners from './signer.js';\nimport { getInstanceOrThrow } from './utils.js';\n\nexport const WALLET_ID = 'tron-link';\nexport const TronOKRequestCode = 200;\nexport const TRONLINK_INJECTION_DELAY = 1000;\nexport const metadata: ProviderMetadata = {\n name: 'TronLink',\n icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/tronlink/icon.svg',\n extensions: {\n chrome:\n 'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',\n brave:\n 'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',\n homepage: 'https://www.tronlink.org',\n },\n properties: [\n {\n name: 'namespaces',\n value: {\n selection: 'multiple',\n data: [\n {\n label: 'Tron',\n value: 'Tron',\n id: 'TRON',\n getSupportedChains: (allBlockchains: BlockchainMeta[]) =>\n tronBlockchain(allBlockchains),\n },\n ],\n },\n },\n {\n name: 'signers',\n value: { getSigners: async () => getSigners(getInstanceOrThrow()) },\n },\n ],\n};\n", "import type { SignerFactory } from 'rango-types';\n\nimport {\n type LegacyNetworkProviderMap,\n LegacyNetworks,\n} from '@rango-dev/wallets-core/legacy';\nimport {\n dynamicImportWithRefinedError,\n getNetworkInstance,\n} from '@rango-dev/wallets-shared';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: LegacyNetworkProviderMap\n): Promise<SignerFactory> {\n const tronProvider = getNetworkInstance(provider, LegacyNetworks.TRON);\n const signers = new DefaultSignerFactory();\n const { DefaultTronSigner } = await dynamicImportWithRefinedError(\n async () => await import('@rango-dev/signer-tron')\n );\n signers.registerSigner(TxType.TRON, new DefaultTronSigner(tronProvider));\n return signers;\n}\n", "import type { Provider } from './types.js';\nimport type { ProviderAPI as TronProviderApi } from '@rango-dev/wallets-core/namespaces/tron';\n\nimport { LegacyNetworks } from '@rango-dev/wallets-core/legacy';\n\nexport function tronlink(): Provider | null {\n const instances: Provider = new Map();\n const { tronLink } = window;\n\n if (!tronLink) {\n return null;\n }\n\n instances.set(LegacyNetworks.TRON, tronLink);\n\n return instances;\n}\n\nexport function getInstanceOrThrow(): Provider {\n const instances = tronlink();\n\n if (!instances) {\n throw new Error('TronLink is not injected. Please check your wallet.');\n }\n\n return instances;\n}\n\nexport function tronTronlink(): TronProviderApi {\n const instance = tronlink();\n const tronInstance = instance?.get(LegacyNetworks.TRON);\n\n if (!tronInstance) {\n throw new Error(\n 'TronLink not injected or Tron not enabled. Please check your wallet.'\n );\n }\n\n return tronInstance;\n}\n", "import { NamespaceBuilder } from '@rango-dev/wallets-core';\nimport {\n builders as commonBuilders,\n standardizeAndThrowError,\n} from '@rango-dev/wallets-core/namespaces/common';\nimport {\n type TronActions,\n utils,\n} from '@rango-dev/wallets-core/namespaces/tron';\nimport { builders } from '@rango-dev/wallets-core/namespaces/tron';\n\nimport { tronActions } from '../actions/tron.js';\nimport { tronBuilders } from '../builders/tron.js';\nimport { TronOKRequestCode, WALLET_ID } from '../constants.js';\nimport { tronTronlink } from '../utils.js';\n\nconst [changeAccountSubscriber, changeAccountCleanup] = tronBuilders\n .changeAccountSubscriber(tronTronlink)\n .build();\n\nconst connect = builders\n .connect()\n .action(async () => {\n const instance = tronTronlink();\n const accountsResult = await instance.request({\n method: 'tron_requestAccounts',\n });\n if (!accountsResult) {\n throw new Error('Please unlock your TronLink extension first.');\n }\n\n if (\n !!accountsResult?.code &&\n !!accountsResult.message &&\n accountsResult.code !== TronOKRequestCode\n ) {\n throw new Error(accountsResult.message);\n }\n return utils.formatAccountsToCAIP([instance.tronWeb.defaultAddress.base58]);\n })\n .before(changeAccountSubscriber)\n .or(standardizeAndThrowError)\n .or(changeAccountCleanup)\n .build();\n\nconst canEagerConnect = builders\n .canEagerConnect()\n .action(tronActions.canEagerConnectAction)\n .build();\n\nconst disconnect = commonBuilders\n .disconnect<TronActions>()\n .after(changeAccountCleanup)\n .build();\n\nconst tron = new NamespaceBuilder<TronActions>('Tron', WALLET_ID)\n .action(connect)\n .action(disconnect)\n .action(canEagerConnect)\n .build();\n\nexport { tron };\n", "import { tronTronlink } from '../utils.js';\n\nconst canEagerConnectAction = () => {\n const tronInstance = tronTronlink();\n // Making sure that the Tron instance is available first to prevent errors.\n if (!tronInstance) {\n throw new Error(\n 'Trying to eagerly connect to your wallet, but seems its tron instance is not available.'\n );\n }\n return tronInstance.ready;\n};\nexport const tronActions = { canEagerConnectAction };\n", "import type { TronChangeAccountEvent } from '../types.js';\n\nimport { ChangeAccountSubscriberBuilder } from '@rango-dev/wallets-core/namespaces/common';\nimport {\n type ProviderAPI,\n type TronActions,\n utils,\n} from '@rango-dev/wallets-core/namespaces/tron';\n\nimport { tronTronlink } from '../utils.js';\n\nexport const changeAccountSubscriber = (getInstance: () => ProviderAPI) =>\n new ChangeAccountSubscriberBuilder<\n MessageEvent<TronChangeAccountEvent>,\n ProviderAPI,\n TronActions\n >()\n .getInstance(getInstance)\n .onSwitchAccount((event, context) => {\n if (\n !event.payload?.data?.isTronLink ||\n event.payload.data.message.action !== 'accountsChanged'\n ) {\n event.preventDefault();\n return;\n }\n if (!event.payload?.data?.message.data.address || !tronTronlink().ready) {\n event.preventDefault();\n void context.action('connect');\n }\n })\n .format(async (_, event) =>\n utils.formatAccountsToCAIP([event.data.message.data.address])\n )\n .addEventListener((_, callback) => {\n window.addEventListener('message', callback);\n })\n .removeEventListener((_, callback) => {\n window.removeEventListener('message', callback);\n });\n\nexport const tronBuilders = { changeAccountSubscriber };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["defineVersions", "ProviderBuilder", "tronBlockchain", "LegacyNetworks", "dynamicImportWithRefinedError", "getNetworkInstance", "DefaultSignerFactory", "TxType", "getSigners", "provider", "tronProvider", "getNetworkInstance", "LegacyNetworks", "signers", "DefaultSignerFactory", "DefaultTronSigner", "dynamicImportWithRefinedError", "TxType", "__name", "LegacyNetworks", "tronlink", "instances", "tronLink", "LegacyNetworks", "__name", "getInstanceOrThrow", "tronTronlink", "tronInstance", "WALLET_ID", "TronOKRequestCode", "TRONLINK_INJECTION_DELAY", "metadata", "allBlockchains", "tronBlockchain", "getSigners", "getInstanceOrThrow", "NamespaceBuilder", "commonBuilders", "standardizeAndThrowError", "utils", "builders", "canEagerConnectAction", "__name", "tronInstance", "tronTronlink", "tronActions", "ChangeAccountSubscriberBuilder", "utils", "changeAccountSubscriber", "__name", "getInstance", "ChangeAccountSubscriberBuilder", "event", "context", "tronTronlink", "_", "utils", "callback", "tronBuilders", "changeAccountSubscriber", "changeAccountCleanup", "tronBuilders", "tronTronlink", "connect", "builders", "instance", "accountsResult", "TronOKRequestCode", "utils", "standardizeAndThrowError", "canEagerConnect", "tronActions", "disconnect", "commonBuilders", "tron", "NamespaceBuilder", "WALLET_ID", "buildProvider", "__name", "ProviderBuilder", "WALLET_ID", "context", "setState", "tronlink", "TRONLINK_INJECTION_DELAY", "metadata", "tron", "versions", "__name", "defineVersions", "buildProvider"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../src/namespaces/tron.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,yCAAyC,CAAC;AA+CjD,QAAA,MAAM,IAAI,iEAIA,CAAC;AAEX,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/
|
|
1
|
+
{"inputs":{"src/signer.ts":{"bytes":784,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-tron","kind":"dynamic-import","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/utils.ts":{"bytes":943,"imports":[{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/constants.ts":{"bytes":1252,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"src/signer.ts","kind":"import-statement","original":"./signer.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"}],"format":"esm"},"src/actions/tron.ts":{"bytes":437,"imports":[{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/builders/tron.ts":{"bytes":1297,"imports":[{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/tron","kind":"import-statement","external":true},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/namespaces/tron.ts":{"bytes":1733,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/tron","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/tron","kind":"import-statement","external":true},{"path":"src/actions/tron.ts","kind":"import-statement","original":"../actions/tron.js"},{"path":"src/builders/tron.ts","kind":"import-statement","original":"../builders/tron.js"},{"path":"src/constants.ts","kind":"import-statement","original":"../constants.js"},{"path":"src/utils.ts","kind":"import-statement","original":"../utils.js"}],"format":"esm"},"src/provider.ts":{"bytes":670,"imports":[{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"src/constants.ts","kind":"import-statement","original":"./constants.js"},{"path":"src/namespaces/tron.ts","kind":"import-statement","original":"./namespaces/tron.js"},{"path":"src/utils.ts","kind":"import-statement","original":"./utils.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/mod.ts":{"bytes":220,"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"src/provider.ts","kind":"import-statement","original":"./provider.js"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/mod.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":12451},"dist/mod.js":{"imports":[{"path":"@rango-dev/wallets-core/utils","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-shared","kind":"import-statement","external":true},{"path":"rango-types","kind":"import-statement","external":true},{"path":"@rango-dev/signer-tron","kind":"dynamic-import","external":true},{"path":"@rango-dev/wallets-core/legacy","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/tron","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/tron","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/common","kind":"import-statement","external":true},{"path":"@rango-dev/wallets-core/namespaces/tron","kind":"import-statement","external":true}],"exports":["versions"],"entryPoint":"src/mod.ts","inputs":{"src/mod.ts":{"bytesInOutput":121},"src/provider.ts":{"bytesInOutput":271},"src/constants.ts":{"bytesInOutput":641},"src/signer.ts":{"bytesInOutput":420},"src/utils.ts":{"bytesInOutput":455},"src/namespaces/tron.ts":{"bytesInOutput":807},"src/actions/tron.ts":{"bytesInOutput":205},"src/builders/tron.ts":{"bytesInOutput":685}},"bytes":3740}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,aAAa,kDAaP,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/signer.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { SignerFactory } from 'rango-types';
|
|
2
|
-
|
|
2
|
+
import { type LegacyNetworkProviderMap } from '@rango-dev/wallets-core/legacy';
|
|
3
|
+
export default function getSigners(provider: LegacyNetworkProviderMap): Promise<SignerFactory>;
|
|
3
4
|
//# sourceMappingURL=signer.d.ts.map
|
package/dist/signer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,gCAAgC,CAAC;AAOxC,wBAA8B,UAAU,CACtC,QAAQ,EAAE,wBAAwB,GACjC,OAAO,CAAC,aAAa,CAAC,CAQxB"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
|
|
2
|
+
import type { ProviderAPI as TronProviderApi } from '@rango-dev/wallets-core/namespaces/tron';
|
|
3
|
+
export type ProviderObject = {
|
|
4
|
+
[LegacyNetworks.TRON]: TronProviderApi;
|
|
5
|
+
};
|
|
6
|
+
export type Provider = Map<keyof ProviderObject, ProviderObject[keyof ProviderObject]>;
|
|
7
|
+
export type TronChangeAccountEvent = {
|
|
8
|
+
isTronLink: boolean;
|
|
9
|
+
message: {
|
|
10
|
+
action: string;
|
|
11
|
+
data: {
|
|
12
|
+
address: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE9F,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;CACxC,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,GAAG,CACxB,MAAM,cAAc,EACpB,cAAc,CAAC,MAAM,cAAc,CAAC,CACrC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE;YACJ,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;CACH,CAAC"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Provider } from './types.js';
|
|
2
|
+
import type { ProviderAPI as TronProviderApi } from '@rango-dev/wallets-core/namespaces/tron';
|
|
3
|
+
export declare function tronlink(): Provider | null;
|
|
4
|
+
export declare function getInstanceOrThrow(): Provider;
|
|
5
|
+
export declare function tronTronlink(): TronProviderApi;
|
|
6
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAI9F,wBAAgB,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAW1C;AAED,wBAAgB,kBAAkB,IAAI,QAAQ,CAQ7C;AAED,wBAAgB,YAAY,IAAI,eAAe,CAW9C"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rango-dev/provider-tron-link",
|
|
3
|
-
"version": "0.57.1-next.
|
|
3
|
+
"version": "0.57.1-next.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"source": "./src/
|
|
7
|
-
"main": "./dist/
|
|
6
|
+
"source": "./src/mod.ts",
|
|
7
|
+
"main": "./dist/mod.js",
|
|
8
8
|
"exports": {
|
|
9
|
-
".": "./dist/
|
|
9
|
+
".": "./dist/mod.js"
|
|
10
10
|
},
|
|
11
|
-
"typings": "dist/
|
|
11
|
+
"typings": "dist/mod.d.ts",
|
|
12
12
|
"files": [
|
|
13
13
|
"dist",
|
|
14
14
|
"src"
|
|
15
15
|
],
|
|
16
16
|
"scripts": {
|
|
17
|
-
"build": "node ../../scripts/build/command.mjs --path wallets/provider-tron-link",
|
|
17
|
+
"build": "node ../../scripts/build/command.mjs --path wallets/provider-tron-link --inputs src/mod.ts",
|
|
18
18
|
"ts-check": "tsc --declaration --emitDeclarationOnly -p ./tsconfig.json",
|
|
19
19
|
"clean": "rimraf dist",
|
|
20
20
|
"format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
|
|
@@ -22,10 +22,11 @@
|
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@rango-dev/signer-tron": "^0.39.0",
|
|
25
|
+
"@rango-dev/wallets-core": "^0.56.1-next.0",
|
|
25
26
|
"@rango-dev/wallets-shared": "^0.57.1-next.0",
|
|
26
|
-
"rango-types": "^0.1.
|
|
27
|
+
"rango-types": "^0.1.92"
|
|
27
28
|
},
|
|
28
29
|
"publishConfig": {
|
|
29
30
|
"access": "public"
|
|
30
31
|
}
|
|
31
|
-
}
|
|
32
|
+
}
|
package/readme.md
CHANGED
|
@@ -1 +1,21 @@
|
|
|
1
|
-
#
|
|
1
|
+
# TronLink
|
|
2
|
+
TronLink integration for hub.
|
|
3
|
+
[Homepage](https://www.tronlink.org/) | [Docs](https://docs.tronlink.org/)
|
|
4
|
+
|
|
5
|
+
More about implementation status can be found [here](../readme.md).
|
|
6
|
+
|
|
7
|
+
## Implementation notes/limitations
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Feature
|
|
11
|
+
|
|
12
|
+
#### ⚠️ Cross Browser
|
|
13
|
+
TronLink is **only available on Chromium-based browsers**
|
|
14
|
+
(e.g., Chrome, Brave, Edge).
|
|
15
|
+
It is **not supported** on Firefox or Safari.
|
|
16
|
+
|
|
17
|
+
All other features—including connect, auto connect, account retrieval, switching accounts, and signing—work without any known limitations.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
More wallet information can be found in [readme.md](../readme.md).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { tronTronlink } from '../utils.js';
|
|
2
|
+
|
|
3
|
+
const canEagerConnectAction = () => {
|
|
4
|
+
const tronInstance = tronTronlink();
|
|
5
|
+
// Making sure that the Tron instance is available first to prevent errors.
|
|
6
|
+
if (!tronInstance) {
|
|
7
|
+
throw new Error(
|
|
8
|
+
'Trying to eagerly connect to your wallet, but seems its tron instance is not available.'
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
return tronInstance.ready;
|
|
12
|
+
};
|
|
13
|
+
export const tronActions = { canEagerConnectAction };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { TronChangeAccountEvent } from '../types.js';
|
|
2
|
+
|
|
3
|
+
import { ChangeAccountSubscriberBuilder } from '@rango-dev/wallets-core/namespaces/common';
|
|
4
|
+
import {
|
|
5
|
+
type ProviderAPI,
|
|
6
|
+
type TronActions,
|
|
7
|
+
utils,
|
|
8
|
+
} from '@rango-dev/wallets-core/namespaces/tron';
|
|
9
|
+
|
|
10
|
+
import { tronTronlink } from '../utils.js';
|
|
11
|
+
|
|
12
|
+
export const changeAccountSubscriber = (getInstance: () => ProviderAPI) =>
|
|
13
|
+
new ChangeAccountSubscriberBuilder<
|
|
14
|
+
MessageEvent<TronChangeAccountEvent>,
|
|
15
|
+
ProviderAPI,
|
|
16
|
+
TronActions
|
|
17
|
+
>()
|
|
18
|
+
.getInstance(getInstance)
|
|
19
|
+
.onSwitchAccount((event, context) => {
|
|
20
|
+
if (
|
|
21
|
+
!event.payload?.data?.isTronLink ||
|
|
22
|
+
event.payload.data.message.action !== 'accountsChanged'
|
|
23
|
+
) {
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (!event.payload?.data?.message.data.address || !tronTronlink().ready) {
|
|
28
|
+
event.preventDefault();
|
|
29
|
+
void context.action('connect');
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
.format(async (_, event) =>
|
|
33
|
+
utils.formatAccountsToCAIP([event.data.message.data.address])
|
|
34
|
+
)
|
|
35
|
+
.addEventListener((_, callback) => {
|
|
36
|
+
window.addEventListener('message', callback);
|
|
37
|
+
})
|
|
38
|
+
.removeEventListener((_, callback) => {
|
|
39
|
+
window.removeEventListener('message', callback);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
export const tronBuilders = { changeAccountSubscriber };
|
package/src/constants.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type ProviderMetadata } from '@rango-dev/wallets-core';
|
|
2
|
+
import { type BlockchainMeta, tronBlockchain } from 'rango-types';
|
|
3
|
+
|
|
4
|
+
import getSigners from './signer.js';
|
|
5
|
+
import { getInstanceOrThrow } from './utils.js';
|
|
6
|
+
|
|
7
|
+
export const WALLET_ID = 'tron-link';
|
|
8
|
+
export const TronOKRequestCode = 200;
|
|
9
|
+
export const TRONLINK_INJECTION_DELAY = 1000;
|
|
10
|
+
export const metadata: ProviderMetadata = {
|
|
11
|
+
name: 'TronLink',
|
|
12
|
+
icon: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/tronlink/icon.svg',
|
|
13
|
+
extensions: {
|
|
14
|
+
chrome:
|
|
15
|
+
'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',
|
|
16
|
+
brave:
|
|
17
|
+
'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',
|
|
18
|
+
homepage: 'https://www.tronlink.org',
|
|
19
|
+
},
|
|
20
|
+
properties: [
|
|
21
|
+
{
|
|
22
|
+
name: 'namespaces',
|
|
23
|
+
value: {
|
|
24
|
+
selection: 'multiple',
|
|
25
|
+
data: [
|
|
26
|
+
{
|
|
27
|
+
label: 'Tron',
|
|
28
|
+
value: 'Tron',
|
|
29
|
+
id: 'TRON',
|
|
30
|
+
getSupportedChains: (allBlockchains: BlockchainMeta[]) =>
|
|
31
|
+
tronBlockchain(allBlockchains),
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'signers',
|
|
38
|
+
value: { getSigners: async () => getSigners(getInstanceOrThrow()) },
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
};
|
package/src/mod.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { NamespaceBuilder } from '@rango-dev/wallets-core';
|
|
2
|
+
import {
|
|
3
|
+
builders as commonBuilders,
|
|
4
|
+
standardizeAndThrowError,
|
|
5
|
+
} from '@rango-dev/wallets-core/namespaces/common';
|
|
6
|
+
import {
|
|
7
|
+
type TronActions,
|
|
8
|
+
utils,
|
|
9
|
+
} from '@rango-dev/wallets-core/namespaces/tron';
|
|
10
|
+
import { builders } from '@rango-dev/wallets-core/namespaces/tron';
|
|
11
|
+
|
|
12
|
+
import { tronActions } from '../actions/tron.js';
|
|
13
|
+
import { tronBuilders } from '../builders/tron.js';
|
|
14
|
+
import { TronOKRequestCode, WALLET_ID } from '../constants.js';
|
|
15
|
+
import { tronTronlink } from '../utils.js';
|
|
16
|
+
|
|
17
|
+
const [changeAccountSubscriber, changeAccountCleanup] = tronBuilders
|
|
18
|
+
.changeAccountSubscriber(tronTronlink)
|
|
19
|
+
.build();
|
|
20
|
+
|
|
21
|
+
const connect = builders
|
|
22
|
+
.connect()
|
|
23
|
+
.action(async () => {
|
|
24
|
+
const instance = tronTronlink();
|
|
25
|
+
const accountsResult = await instance.request({
|
|
26
|
+
method: 'tron_requestAccounts',
|
|
27
|
+
});
|
|
28
|
+
if (!accountsResult) {
|
|
29
|
+
throw new Error('Please unlock your TronLink extension first.');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (
|
|
33
|
+
!!accountsResult?.code &&
|
|
34
|
+
!!accountsResult.message &&
|
|
35
|
+
accountsResult.code !== TronOKRequestCode
|
|
36
|
+
) {
|
|
37
|
+
throw new Error(accountsResult.message);
|
|
38
|
+
}
|
|
39
|
+
return utils.formatAccountsToCAIP([instance.tronWeb.defaultAddress.base58]);
|
|
40
|
+
})
|
|
41
|
+
.before(changeAccountSubscriber)
|
|
42
|
+
.or(standardizeAndThrowError)
|
|
43
|
+
.or(changeAccountCleanup)
|
|
44
|
+
.build();
|
|
45
|
+
|
|
46
|
+
const canEagerConnect = builders
|
|
47
|
+
.canEagerConnect()
|
|
48
|
+
.action(tronActions.canEagerConnectAction)
|
|
49
|
+
.build();
|
|
50
|
+
|
|
51
|
+
const disconnect = commonBuilders
|
|
52
|
+
.disconnect<TronActions>()
|
|
53
|
+
.after(changeAccountCleanup)
|
|
54
|
+
.build();
|
|
55
|
+
|
|
56
|
+
const tron = new NamespaceBuilder<TronActions>('Tron', WALLET_ID)
|
|
57
|
+
.action(connect)
|
|
58
|
+
.action(disconnect)
|
|
59
|
+
.action(canEagerConnect)
|
|
60
|
+
.build();
|
|
61
|
+
|
|
62
|
+
export { tron };
|
package/src/provider.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ProviderBuilder } from '@rango-dev/wallets-core';
|
|
2
|
+
|
|
3
|
+
import { metadata, TRONLINK_INJECTION_DELAY, WALLET_ID } from './constants.js';
|
|
4
|
+
import { tron } from './namespaces/tron.js';
|
|
5
|
+
import { tronlink } from './utils.js';
|
|
6
|
+
|
|
7
|
+
const buildProvider = () =>
|
|
8
|
+
new ProviderBuilder(WALLET_ID)
|
|
9
|
+
.init(function (context) {
|
|
10
|
+
const [, setState] = context.state();
|
|
11
|
+
setTimeout(() => {
|
|
12
|
+
if (tronlink()) {
|
|
13
|
+
setState('installed', true);
|
|
14
|
+
console.debug('[tron-link] instance detected.', context);
|
|
15
|
+
}
|
|
16
|
+
}, TRONLINK_INJECTION_DELAY);
|
|
17
|
+
})
|
|
18
|
+
.config('metadata', metadata)
|
|
19
|
+
.add('tron', tron)
|
|
20
|
+
.build();
|
|
21
|
+
|
|
22
|
+
export { buildProvider };
|
package/src/signer.ts
CHANGED
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
import type { SignerFactory } from 'rango-types';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type LegacyNetworkProviderMap,
|
|
5
|
+
LegacyNetworks,
|
|
6
|
+
} from '@rango-dev/wallets-core/legacy';
|
|
7
|
+
import {
|
|
8
|
+
dynamicImportWithRefinedError,
|
|
9
|
+
getNetworkInstance,
|
|
10
|
+
} from '@rango-dev/wallets-shared';
|
|
4
11
|
import { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';
|
|
5
12
|
|
|
6
13
|
export default async function getSigners(
|
|
7
|
-
provider:
|
|
14
|
+
provider: LegacyNetworkProviderMap
|
|
8
15
|
): Promise<SignerFactory> {
|
|
16
|
+
const tronProvider = getNetworkInstance(provider, LegacyNetworks.TRON);
|
|
9
17
|
const signers = new DefaultSignerFactory();
|
|
10
|
-
|
|
18
|
+
const { DefaultTronSigner } = await dynamicImportWithRefinedError(
|
|
19
|
+
async () => await import('@rango-dev/signer-tron')
|
|
20
|
+
);
|
|
21
|
+
signers.registerSigner(TxType.TRON, new DefaultTronSigner(tronProvider));
|
|
11
22
|
return signers;
|
|
12
23
|
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
|
|
2
|
+
import type { ProviderAPI as TronProviderApi } from '@rango-dev/wallets-core/namespaces/tron';
|
|
3
|
+
|
|
4
|
+
export type ProviderObject = {
|
|
5
|
+
[LegacyNetworks.TRON]: TronProviderApi;
|
|
6
|
+
};
|
|
7
|
+
export type Provider = Map<
|
|
8
|
+
keyof ProviderObject,
|
|
9
|
+
ProviderObject[keyof ProviderObject]
|
|
10
|
+
>;
|
|
11
|
+
|
|
12
|
+
export type TronChangeAccountEvent = {
|
|
13
|
+
isTronLink: boolean;
|
|
14
|
+
message: {
|
|
15
|
+
action: string;
|
|
16
|
+
data: {
|
|
17
|
+
address: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
package/src/utils.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Provider } from './types.js';
|
|
2
|
+
import type { ProviderAPI as TronProviderApi } from '@rango-dev/wallets-core/namespaces/tron';
|
|
3
|
+
|
|
4
|
+
import { LegacyNetworks } from '@rango-dev/wallets-core/legacy';
|
|
5
|
+
|
|
6
|
+
export function tronlink(): Provider | null {
|
|
7
|
+
const instances: Provider = new Map();
|
|
8
|
+
const { tronLink } = window;
|
|
9
|
+
|
|
10
|
+
if (!tronLink) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
instances.set(LegacyNetworks.TRON, tronLink);
|
|
15
|
+
|
|
16
|
+
return instances;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function getInstanceOrThrow(): Provider {
|
|
20
|
+
const instances = tronlink();
|
|
21
|
+
|
|
22
|
+
if (!instances) {
|
|
23
|
+
throw new Error('TronLink is not injected. Please check your wallet.');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return instances;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function tronTronlink(): TronProviderApi {
|
|
30
|
+
const instance = tronlink();
|
|
31
|
+
const tronInstance = instance?.get(LegacyNetworks.TRON);
|
|
32
|
+
|
|
33
|
+
if (!tronInstance) {
|
|
34
|
+
throw new Error(
|
|
35
|
+
'TronLink not injected or Tron not enabled. Please check your wallet.'
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return tronInstance;
|
|
40
|
+
}
|
package/dist/helpers.d.ts
DELETED
package/dist/helpers.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,QAIvB"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { CanSwitchNetwork, Connect, Subscribe, WalletInfo } from '@rango-dev/wallets-shared';
|
|
2
|
-
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
3
|
-
import { Networks, WalletTypes } from '@rango-dev/wallets-shared';
|
|
4
|
-
import { tronLink as tronLink_instance } from './helpers.js';
|
|
5
|
-
export declare const config: {
|
|
6
|
-
type: WalletTypes;
|
|
7
|
-
defaultNetwork: Networks;
|
|
8
|
-
};
|
|
9
|
-
export declare const getInstance: typeof tronLink_instance;
|
|
10
|
-
export declare const connect: Connect;
|
|
11
|
-
export declare const subscribe: Subscribe;
|
|
12
|
-
export declare const canSwitchNetworkTo: CanSwitchNetwork;
|
|
13
|
-
export declare const getSigners: (provider: any) => Promise<SignerFactory>;
|
|
14
|
-
export declare const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo;
|
|
15
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAS7D,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,eAAO,MAAM,WAAW,0BAAoB,CAAC;AAE7C,eAAO,MAAM,OAAO,EAAE,OAerB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAevB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,gBAA8B,CAAC;AAEhE,eAAO,MAAM,UAAU,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,aAAa,CAAU,CAAC;AAE5E,eAAO,MAAM,aAAa,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,UAiBjE,CAAC"}
|
package/dist/index.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var c=Object.defineProperty;var o=(e,t)=>c(e,"name",{value:t,configurable:!0});import{Networks as i,WalletTypes as g}from"@rango-dev/wallets-shared";import{tronBlockchain as d}from"rango-types";function a(){let{tronLink:e}=window;return e||null}o(a,"tronLink");import{DefaultTronSigner as l}from"@rango-dev/signer-tron";import{DefaultSignerFactory as m,TransactionType as p}from"rango-types";async function s(e){let t=new m;return t.registerSigner(p.TRON,new l(e)),t}o(s,"getSigners");var f=g.TRON_LINK,E={type:f,defaultNetwork:i.TRON},N=a,O=o(async({instance:e})=>{let t;if(e&&!e.ready){if(t=await e.request({method:"tron_requestAccounts"}),!t)throw new Error("Please unlock your TronLink extension first.");if(t?.code!==200&&t.message)throw new Error(t.message)}let r=e.tronWeb.defaultAddress.base58;return{accounts:r?[r]:[],chainId:i.TRON}},"connect"),F=o(({updateAccounts:e,disconnect:t})=>{window.addEventListener("message",n=>{if(n.data.isTronLink&&n.data.message&&n.data.message.action=="accountsChanged"){let r=n?.data?.message?.data?.address;r?e([r]):t()}})},"subscribe"),I=o(()=>!1,"canSwitchNetworkTo"),R=s,W=o(e=>{let t=d(e);return{name:"TronLink",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/tronlink/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec",BRAVE:"https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec",DEFAULT:"https://www.tronlink.org"},color:"#96e7ed",supportedChains:t}},"getWalletInfo");export{I as canSwitchNetworkTo,E as config,O as connect,N as getInstance,R as getSigners,W as getWalletInfo,F as subscribe};
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/helpers.ts", "../src/signer.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n CanSwitchNetwork,\n Connect,\n Subscribe,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport { Networks, WalletTypes } from '@rango-dev/wallets-shared';\nimport { tronBlockchain } from 'rango-types';\n\nimport { tronLink as tronLink_instance } from './helpers.js';\nimport signer from './signer.js';\n\n/*\n * https://docs.tronlink.org/dapp/start-developing\n * https://developers.tron.network/docs/tronlink-events\n */\nconst WALLET = WalletTypes.TRON_LINK;\n\nexport const config = {\n type: WALLET,\n defaultNetwork: Networks.TRON,\n};\n\nexport const getInstance = tronLink_instance;\n\nexport const connect: Connect = async ({ instance }) => {\n let r = undefined;\n const SUCCESS_CODE = 200;\n if (!!instance && !instance.ready) {\n r = await instance.request({ method: 'tron_requestAccounts' });\n if (!r) {\n throw new Error('Please unlock your TronLink extension first.');\n }\n if (r?.code !== SUCCESS_CODE && !!r.message) {\n throw new Error(r.message);\n }\n }\n const address = instance.tronWeb.defaultAddress.base58;\n // TODO check connected network\n return { accounts: address ? [address] : [], chainId: Networks.TRON };\n};\n\nexport const subscribe: Subscribe = ({ updateAccounts, disconnect }) => {\n window.addEventListener('message', (e) => {\n if (\n e.data.isTronLink &&\n e.data.message &&\n e.data.message.action == 'accountsChanged'\n ) {\n const account = e?.data?.message?.data?.address;\n if (account) {\n updateAccounts([account]);\n } else {\n disconnect();\n }\n }\n });\n};\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = () => false;\n\nexport const getSigners: (provider: any) => Promise<SignerFactory> = signer;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const tron = tronBlockchain(allBlockChains);\n return {\n name: 'TronLink',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/tronlink/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',\n DEFAULT: 'https://www.tronlink.org',\n },\n color: '#96e7ed',\n supportedChains: tron,\n };\n};\n", "export function tronLink() {\n const { tronLink } = window;\n if (!!tronLink) return tronLink;\n return null;\n}\n", "import type { SignerFactory } from 'rango-types';\n\nimport { DefaultTronSigner } from '@rango-dev/signer-tron';\nimport { DefaultSignerFactory, TransactionType as TxType } from 'rango-types';\n\nexport default async function getSigners(\n provider: any\n): Promise<SignerFactory> {\n const signers = new DefaultSignerFactory();\n signers.registerSigner(TxType.TRON, new DefaultTronSigner(provider));\n return signers;\n}\n"],
|
|
5
|
-
"mappings": "+EAQA,OAAS,YAAAA,EAAU,eAAAC,MAAmB,4BACtC,OAAS,kBAAAC,MAAsB,cCTxB,SAASC,GAAW,CACzB,GAAM,CAAE,SAAAA,CAAS,EAAI,OACrB,OAAMA,GACC,IACT,CAJgBC,EAAAD,EAAA,YCEhB,OAAS,qBAAAE,MAAyB,yBAClC,OAAS,wBAAAC,EAAsB,mBAAmBC,MAAc,cAEhE,eAAOC,EACLC,EACwB,CACxB,IAAMC,EAAU,IAAIC,EACpB,OAAAD,EAAQ,eAAeE,EAAO,KAAM,IAAIC,EAAkBJ,CAAQ,CAAC,EAC5DC,CACT,CAN8BI,EAAAN,EAAA,cFa9B,IAAMO,EAASC,EAAY,UAEdC,EAAS,CACpB,KAAMF,EACN,eAAgBG,EAAS,IAC3B,EAEaC,EAAcC,EAEdC,EAAmBC,EAAA,MAAO,CAAE,SAAAC,CAAS,IAAM,CACtD,IAAIC,EAEJ,GAAMD,GAAY,CAACA,EAAS,MAAO,CAEjC,GADAC,EAAI,MAAMD,EAAS,QAAQ,CAAE,OAAQ,sBAAuB,CAAC,EACzD,CAACC,EACH,MAAM,IAAI,MAAM,8CAA8C,EAEhE,GAAIA,GAAG,OAAS,KAAkBA,EAAE,QAClC,MAAM,IAAI,MAAMA,EAAE,OAAO,CAE7B,CACA,IAAMC,EAAUF,EAAS,QAAQ,eAAe,OAEhD,MAAO,CAAE,SAAUE,EAAU,CAACA,CAAO,EAAI,CAAC,EAAG,QAASP,EAAS,IAAK,CACtE,EAfgC,WAiBnBQ,EAAuBJ,EAAA,CAAC,CAAE,eAAAK,EAAgB,WAAAC,CAAW,IAAM,CACtE,OAAO,iBAAiB,UAAYC,GAAM,CACxC,GACEA,EAAE,KAAK,YACPA,EAAE,KAAK,SACPA,EAAE,KAAK,QAAQ,QAAU,kBACzB,CACA,IAAMC,EAAUD,GAAG,MAAM,SAAS,MAAM,QACpCC,EACFH,EAAe,CAACG,CAAO,CAAC,EAExBF,EAAW,CAEf,CACF,CAAC,CACH,EAfoC,aAiBvBG,EAAuCT,EAAA,IAAM,GAAN,sBAEvCU,EAAwDA,EAExDC,EAAkEX,EAC7EY,GACG,CACH,IAAMC,EAAOC,EAAeF,CAAc,EAC1C,MAAO,CACL,KAAM,WACN,IAAK,yFACL,YAAa,CACX,OACE,sFACF,MACE,sFACF,QAAS,0BACX,EACA,MAAO,UACP,gBAAiBC,CACnB,CACF,EAjB+E",
|
|
6
|
-
"names": ["Networks", "WalletTypes", "tronBlockchain", "tronLink", "__name", "DefaultTronSigner", "DefaultSignerFactory", "TxType", "getSigners", "provider", "signers", "DefaultSignerFactory", "TxType", "DefaultTronSigner", "__name", "WALLET", "WalletTypes", "config", "Networks", "getInstance", "tronLink", "connect", "__name", "instance", "r", "address", "subscribe", "updateAccounts", "disconnect", "e", "account", "canSwitchNetworkTo", "getSigners", "getWalletInfo", "allBlockChains", "tron", "tronBlockchain"]
|
|
7
|
-
}
|
package/src/helpers.ts
DELETED
package/src/index.ts
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
CanSwitchNetwork,
|
|
3
|
-
Connect,
|
|
4
|
-
Subscribe,
|
|
5
|
-
WalletInfo,
|
|
6
|
-
} from '@rango-dev/wallets-shared';
|
|
7
|
-
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
8
|
-
|
|
9
|
-
import { Networks, WalletTypes } from '@rango-dev/wallets-shared';
|
|
10
|
-
import { tronBlockchain } from 'rango-types';
|
|
11
|
-
|
|
12
|
-
import { tronLink as tronLink_instance } from './helpers.js';
|
|
13
|
-
import signer from './signer.js';
|
|
14
|
-
|
|
15
|
-
/*
|
|
16
|
-
* https://docs.tronlink.org/dapp/start-developing
|
|
17
|
-
* https://developers.tron.network/docs/tronlink-events
|
|
18
|
-
*/
|
|
19
|
-
const WALLET = WalletTypes.TRON_LINK;
|
|
20
|
-
|
|
21
|
-
export const config = {
|
|
22
|
-
type: WALLET,
|
|
23
|
-
defaultNetwork: Networks.TRON,
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export const getInstance = tronLink_instance;
|
|
27
|
-
|
|
28
|
-
export const connect: Connect = async ({ instance }) => {
|
|
29
|
-
let r = undefined;
|
|
30
|
-
const SUCCESS_CODE = 200;
|
|
31
|
-
if (!!instance && !instance.ready) {
|
|
32
|
-
r = await instance.request({ method: 'tron_requestAccounts' });
|
|
33
|
-
if (!r) {
|
|
34
|
-
throw new Error('Please unlock your TronLink extension first.');
|
|
35
|
-
}
|
|
36
|
-
if (r?.code !== SUCCESS_CODE && !!r.message) {
|
|
37
|
-
throw new Error(r.message);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
const address = instance.tronWeb.defaultAddress.base58;
|
|
41
|
-
// TODO check connected network
|
|
42
|
-
return { accounts: address ? [address] : [], chainId: Networks.TRON };
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export const subscribe: Subscribe = ({ updateAccounts, disconnect }) => {
|
|
46
|
-
window.addEventListener('message', (e) => {
|
|
47
|
-
if (
|
|
48
|
-
e.data.isTronLink &&
|
|
49
|
-
e.data.message &&
|
|
50
|
-
e.data.message.action == 'accountsChanged'
|
|
51
|
-
) {
|
|
52
|
-
const account = e?.data?.message?.data?.address;
|
|
53
|
-
if (account) {
|
|
54
|
-
updateAccounts([account]);
|
|
55
|
-
} else {
|
|
56
|
-
disconnect();
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
export const canSwitchNetworkTo: CanSwitchNetwork = () => false;
|
|
63
|
-
|
|
64
|
-
export const getSigners: (provider: any) => Promise<SignerFactory> = signer;
|
|
65
|
-
|
|
66
|
-
export const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (
|
|
67
|
-
allBlockChains
|
|
68
|
-
) => {
|
|
69
|
-
const tron = tronBlockchain(allBlockChains);
|
|
70
|
-
return {
|
|
71
|
-
name: 'TronLink',
|
|
72
|
-
img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/tronlink/icon.svg',
|
|
73
|
-
installLink: {
|
|
74
|
-
CHROME:
|
|
75
|
-
'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',
|
|
76
|
-
BRAVE:
|
|
77
|
-
'https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec',
|
|
78
|
-
DEFAULT: 'https://www.tronlink.org',
|
|
79
|
-
},
|
|
80
|
-
color: '#96e7ed',
|
|
81
|
-
supportedChains: tron,
|
|
82
|
-
};
|
|
83
|
-
};
|