diff --git a/package.json b/package.json index 164fcdc..7f5b544 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,9 @@ "version": "1.3.1", "homepage": "https://github.com/wharfkit/wallet-plugin-scatter", "license": "BSD-3-Clause", - "main": "lib/wallet-plugin-scatter.js", - "module": "lib/wallet-plugin-scatter.m.js", - "types": "lib/wallet-plugin-scatter.d.ts", + "main": "lib/cjs/index.js", + "module": "lib/esm/index.js", + "types": "lib/types/index.d.ts", "sideEffects": false, "files": [ "lib/*", @@ -20,7 +20,7 @@ "tslib": "^2.1.0" }, "peerDependencies": { - "@wharfkit/session": "^1.3.1" + "@wharfkit/session": "^1.4.0" }, "devDependencies": { "@babel/runtime": "^7.22.6", @@ -34,7 +34,7 @@ "@types/node": "^18.7.18", "@typescript-eslint/eslint-plugin": "^5.20.0", "@typescript-eslint/parser": "^5.20.0", - "@wharfkit/session": "^1.3.1", + "@wharfkit/session": "^1.4.0", "chai": "^4.3.4", "crypto-js": "^4.1.1", "eslint": "^8.13.0", diff --git a/rollup.config.mjs b/rollup.config.mjs index 5b4d42d..86a4c32 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -30,7 +30,7 @@ export default [ input: 'src/index.ts', output: { banner, - file: pkg.main, + dir: pkg.main.split('/').slice(0, -1).join('/'), format: 'cjs', sourcemap: true, exports: 'named', @@ -50,7 +50,7 @@ export default [ input: 'src/index.ts', output: { banner, - file: pkg.module, + dir: pkg.module.split('/').slice(0, -1).join('/'), format: 'esm', sourcemap: true, }, @@ -67,7 +67,7 @@ export default [ }, { input: 'src/index.ts', - output: {banner, file: pkg.types, format: 'esm'}, + output: {banner, dir: pkg.types.split('/').slice(0, -1).join('/'), format: 'esm'}, plugins: [dts()], }, ] diff --git a/src/index.ts b/src/index.ts index 1a1105b..667ebc3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -10,7 +10,6 @@ import { WalletPluginMetadata, WalletPluginSignResponse, } from '@wharfkit/session' -import {handleLogin, handleLogout, handleSignatureRequest} from '@wharfkit/protocol-scatter' export class WalletPluginScatter extends AbstractWalletPlugin implements WalletPlugin { id = 'scatter' @@ -43,22 +42,28 @@ export class WalletPluginScatter extends AbstractWalletPlugin implements WalletP download: 'https://github.com/GetScatter/ScatterDesktop/releases', }) + private async loadScatterProtocol() { + let protocolScatter + if (typeof window !== 'undefined') { + protocolScatter = await import('@wharfkit/protocol-scatter') + } + + if (!protocolScatter) { + throw new Error('Scatter protocol is not available in this environment') + } + + return protocolScatter + } + /** * Performs the wallet logic required to login and return the chain and permission level to use. * * @param context LoginContext * @returns Promise */ - login(context: LoginContext): Promise { - return new Promise((resolve, reject) => { - handleLogin(context) - .then((response) => { - resolve(response) - }) - .catch((error) => { - reject(error) - }) - }) + async login(context: LoginContext): Promise { + const scatterProtocol = await this.loadScatterProtocol() + return scatterProtocol.handleLogin(context) } /** @@ -68,16 +73,9 @@ export class WalletPluginScatter extends AbstractWalletPlugin implements WalletP * @returns Promise */ - logout(context: LogoutContext): Promise { - return new Promise((resolve, reject) => { - handleLogout(context) - .then(() => { - resolve() - }) - .catch((error) => { - reject(error) - }) - }) + async logout(context: LogoutContext): Promise { + const scatterProtocol = await this.loadScatterProtocol() + return scatterProtocol.handleLogout(context) } /** @@ -87,10 +85,11 @@ export class WalletPluginScatter extends AbstractWalletPlugin implements WalletP * @param resolved ResolvedSigningRequest * @returns Promise */ - sign( + async sign( resolved: ResolvedSigningRequest, context: TransactContext ): Promise { - return handleSignatureRequest(resolved, context) + const scatterProtocol = await this.loadScatterProtocol() + return scatterProtocol.handleSignatureRequest(resolved, context) } } diff --git a/yarn.lock b/yarn.lock index 62c4e93..5116d1a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -584,6 +584,18 @@ pako "^2.1.0" tslib "^2.0.3" +"@wharfkit/antelope@^1.0.11": + version "1.0.12" + resolved "https://registry.yarnpkg.com/@wharfkit/antelope/-/antelope-1.0.12.tgz#e7b8e0e0805a7194fa62cacd3dfb662b18aa9962" + integrity sha512-Iuqog3rgnW+o8S+Etw5mMto14e1RILIDnRfZAvRS1DOVFgAma6Vv+rT9rJpJq7ldvTBdZu35BImkfwl0iDJCVw== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + elliptic "^6.5.4" + hash.js "^1.0.0" + pako "^2.1.0" + tslib "^2.0.3" + "@wharfkit/antelope@^1.0.2", "@wharfkit/antelope@^1.0.4": version "1.0.7" resolved "https://registry.yarnpkg.com/@wharfkit/antelope/-/antelope-1.0.7.tgz#5ca010db963e061b2e8c47c14e55f86817718c2e" @@ -632,14 +644,14 @@ js-big-decimal "^2.0.7" tslib "^2.1.0" -"@wharfkit/session@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@wharfkit/session/-/session-1.3.1.tgz#2cbfa14aafc21abba060e97dab24e9263c78ad6e" - integrity sha512-x+SV14arfhvuiDGyWAH2WIKW7v2WKQ1njc3EzU5ZzE6xVWRfKZ23mqtz83YemQ2h0562+QR712CzX5ZhAcdcpg== +"@wharfkit/session@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@wharfkit/session/-/session-1.4.0.tgz#13a44a0d23d5ee689755985580f943f869352987" + integrity sha512-U+K9eWbYzFeDshYwgrhyNoF47kYToKFpTe6xFAwaJO+2w0kIkP0vtJFl7ygd06muh7Hu3K1BqrZ3j6+FyyuIyA== dependencies: "@wharfkit/abicache" "^1.2.1" "@wharfkit/account" "^1.0.0" - "@wharfkit/antelope" "^1.0.2" + "@wharfkit/antelope" "^1.0.11" "@wharfkit/common" "^1.2.0" "@wharfkit/signing-request" "^3.1.0" pako "^2.0.4"