@0xsequence/provider 0.40.1 → 0.40.4
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/0xsequence-provider.cjs.dev.js +285 -27
- package/dist/0xsequence-provider.cjs.prod.js +285 -27
- package/dist/0xsequence-provider.esm.js +284 -28
- package/dist/declarations/src/transports/index.d.ts +1 -0
- package/dist/declarations/src/transports/unreal-transport/index.d.ts +2 -0
- package/dist/declarations/src/transports/unreal-transport/overridelogs.d.ts +4 -0
- package/dist/declarations/src/transports/unreal-transport/unreal-message-handler.d.ts +14 -0
- package/dist/declarations/src/transports/unreal-transport/unreal-message-provider.d.ts +15 -0
- package/dist/declarations/src/types.d.ts +1 -1
- package/dist/declarations/src/wallet.d.ts +7 -5
- package/package.json +8 -8
- package/src/transports/index.ts +1 -0
- package/src/transports/unreal-transport/index.ts +2 -0
- package/src/transports/unreal-transport/overridelogs.ts +36 -0
- package/src/transports/unreal-transport/unreal-message-handler.ts +121 -0
- package/src/transports/unreal-transport/unreal-message-provider.ts +121 -0
- package/src/transports/wallet-request-handler.ts +3 -3
- package/src/types.ts +1 -1
- package/src/wallet.ts +36 -25
|
@@ -589,19 +589,19 @@ class WalletRequestHandler {
|
|
|
589
589
|
let sig = ''; // Message must be prefixed with "\x19Ethereum Signed Message:\n"
|
|
590
590
|
// as defined by EIP-191
|
|
591
591
|
|
|
592
|
-
|
|
592
|
+
const prefixedMessage = prefixEIP191Message(message); // TODO:
|
|
593
593
|
// if (process.env.TEST_MODE === 'true' && this.prompter === null) {
|
|
594
594
|
|
|
595
595
|
if (_this.prompter === null) {
|
|
596
596
|
// prompter is null, so we'll sign from here
|
|
597
|
-
sig = await signer.signMessage(
|
|
597
|
+
sig = await signer.signMessage(prefixedMessage, chainId);
|
|
598
598
|
} else {
|
|
599
599
|
const promptResultForDeployment = await _this.handleConfirmWalletDeployPrompt(_this.prompter, signer, chainId);
|
|
600
600
|
|
|
601
601
|
if (promptResultForDeployment) {
|
|
602
602
|
sig = await _this.prompter.promptSignMessage({
|
|
603
603
|
chainId: chainId,
|
|
604
|
-
message
|
|
604
|
+
message: prefixedMessage
|
|
605
605
|
}, _this.connectOptions);
|
|
606
606
|
}
|
|
607
607
|
}
|
|
@@ -3141,6 +3141,257 @@ class BaseInjectedTransport extends EventEmitter2 {
|
|
|
3141
3141
|
|
|
3142
3142
|
}
|
|
3143
3143
|
|
|
3144
|
+
/**
|
|
3145
|
+
* This will redirect console logs from Sequence.js & the wallet to the Unreal console, for debugging purposes.
|
|
3146
|
+
*/
|
|
3147
|
+
function overrideLogs(side) {
|
|
3148
|
+
var _window$ue;
|
|
3149
|
+
|
|
3150
|
+
if ((_window$ue = window.ue) != null && _window$ue.sequencewallettransport && !window.logsOverriddenForUnreal) {
|
|
3151
|
+
var _window$ue2;
|
|
3152
|
+
|
|
3153
|
+
const t = (_window$ue2 = window.ue) == null ? void 0 : _window$ue2.sequencewallettransport;
|
|
3154
|
+
|
|
3155
|
+
console.log = (...args) => {
|
|
3156
|
+
t.logfromjs(`${side}: ${stringify(args)}`);
|
|
3157
|
+
};
|
|
3158
|
+
|
|
3159
|
+
console.warn = (...args) => {
|
|
3160
|
+
t.warnfromjs(`${side}: ${stringify(args)}`);
|
|
3161
|
+
};
|
|
3162
|
+
|
|
3163
|
+
console.error = (...args) => {
|
|
3164
|
+
t.errorfromjs(`${side}: ${stringify(args)}`);
|
|
3165
|
+
};
|
|
3166
|
+
|
|
3167
|
+
window.logsOverriddenForUnreal = true;
|
|
3168
|
+
}
|
|
3169
|
+
}
|
|
3170
|
+
|
|
3171
|
+
function stringify(things) {
|
|
3172
|
+
return things.map(a => typeof a === 'object' ? a instanceof Error ? a.message : JSON.stringify(a) : String(a)).join(' ');
|
|
3173
|
+
}
|
|
3174
|
+
|
|
3175
|
+
let registeredUnrealMessageProvider; // all lowercase is an annoying limitation of Unreal CEF BindUObject
|
|
3176
|
+
|
|
3177
|
+
/**
|
|
3178
|
+
* Initialized on dApp side
|
|
3179
|
+
*/
|
|
3180
|
+
class UnrealMessageProvider extends BaseProviderTransport {
|
|
3181
|
+
constructor(walletAppURL) {
|
|
3182
|
+
super();
|
|
3183
|
+
this.walletURL = void 0;
|
|
3184
|
+
|
|
3185
|
+
this.register = () => {
|
|
3186
|
+
var _window$ue;
|
|
3187
|
+
|
|
3188
|
+
overrideLogs('dapp');
|
|
3189
|
+
|
|
3190
|
+
if (registeredUnrealMessageProvider) {
|
|
3191
|
+
// overriding the registered message provider
|
|
3192
|
+
registeredUnrealMessageProvider.unregister();
|
|
3193
|
+
registeredUnrealMessageProvider = this;
|
|
3194
|
+
} // listen for incoming messages from wallet
|
|
3195
|
+
|
|
3196
|
+
|
|
3197
|
+
if ((_window$ue = window.ue) != null && _window$ue.sequencewallettransport) {
|
|
3198
|
+
window.ue.sequencewallettransport.onmessagefromwallet = this.onUnrealCallback;
|
|
3199
|
+
}
|
|
3200
|
+
|
|
3201
|
+
registeredUnrealMessageProvider = this;
|
|
3202
|
+
this._registered = true;
|
|
3203
|
+
console.log('registering transport!');
|
|
3204
|
+
};
|
|
3205
|
+
|
|
3206
|
+
this.unregister = () => {
|
|
3207
|
+
var _window$ue2, _window$ue2$sequencew;
|
|
3208
|
+
|
|
3209
|
+
this._registered = false;
|
|
3210
|
+
this.closeWallet(); // disable message listener
|
|
3211
|
+
|
|
3212
|
+
if (registeredUnrealMessageProvider === this) {
|
|
3213
|
+
registeredUnrealMessageProvider = undefined;
|
|
3214
|
+
}
|
|
3215
|
+
|
|
3216
|
+
if (((_window$ue2 = window.ue) == null ? void 0 : (_window$ue2$sequencew = _window$ue2.sequencewallettransport) == null ? void 0 : _window$ue2$sequencew.onmessagefromwallet) === this.onUnrealCallback) {
|
|
3217
|
+
delete window.ue.sequencewallettransport.onmessagefromwallet;
|
|
3218
|
+
} // clear event listeners
|
|
3219
|
+
|
|
3220
|
+
|
|
3221
|
+
this.events.removeAllListeners();
|
|
3222
|
+
};
|
|
3223
|
+
|
|
3224
|
+
this.openWallet = (path, intent, networkId) => {
|
|
3225
|
+
if (this.isOpened()) {
|
|
3226
|
+
// TODO focus wallet
|
|
3227
|
+
console.log('wallet already open!');
|
|
3228
|
+
return;
|
|
3229
|
+
}
|
|
3230
|
+
|
|
3231
|
+
console.log('opening wallet!'); // Instantiate new walletURL for this call
|
|
3232
|
+
|
|
3233
|
+
const walletURL = new URL(this.walletURL.href);
|
|
3234
|
+
const windowSessionParams = new WindowSessionParams();
|
|
3235
|
+
|
|
3236
|
+
if (path) {
|
|
3237
|
+
walletURL.pathname = path.toLowerCase();
|
|
3238
|
+
} // Set session, intent and network id on walletURL
|
|
3239
|
+
|
|
3240
|
+
|
|
3241
|
+
this._init = InitState.NIL;
|
|
3242
|
+
this._sessionId = `${performance.now()}`;
|
|
3243
|
+
windowSessionParams.set('sid', this._sessionId);
|
|
3244
|
+
|
|
3245
|
+
if (intent) {
|
|
3246
|
+
// encode intent as base64 url-encoded param
|
|
3247
|
+
windowSessionParams.set('intent', base64EncodeObject(intent));
|
|
3248
|
+
}
|
|
3249
|
+
|
|
3250
|
+
if (networkId) {
|
|
3251
|
+
windowSessionParams.set('net', `${networkId}`);
|
|
3252
|
+
} // serialize params
|
|
3253
|
+
|
|
3254
|
+
|
|
3255
|
+
walletURL.search = windowSessionParams.toString();
|
|
3256
|
+
console.log('opening wallet to', walletURL.href);
|
|
3257
|
+
window.open(walletURL.href);
|
|
3258
|
+
};
|
|
3259
|
+
|
|
3260
|
+
this.onUnrealCallback = message => {
|
|
3261
|
+
if (!message) {
|
|
3262
|
+
throw new Error('ProviderMessage object is empty');
|
|
3263
|
+
} // handle message with base message provider
|
|
3264
|
+
|
|
3265
|
+
|
|
3266
|
+
this.handleMessage(message);
|
|
3267
|
+
};
|
|
3268
|
+
|
|
3269
|
+
this.walletURL = new URL(walletAppURL);
|
|
3270
|
+
}
|
|
3271
|
+
|
|
3272
|
+
closeWallet() {
|
|
3273
|
+
this.close();
|
|
3274
|
+
} // onmessage, receives ProviderMessageResponse from the wallet unreal transport
|
|
3275
|
+
|
|
3276
|
+
|
|
3277
|
+
// all lowercase is an annoying limitation of Unreal CEF BindUObject
|
|
3278
|
+
sendMessage(message) {
|
|
3279
|
+
var _window$ue3, _window$ue3$sequencew;
|
|
3280
|
+
|
|
3281
|
+
const postedMessage = typeof message !== 'string' ? JSON.stringify(message) : message;
|
|
3282
|
+
console.log('Sending message to wallet:', postedMessage);
|
|
3283
|
+
(_window$ue3 = window.ue) == null ? void 0 : (_window$ue3$sequencew = _window$ue3.sequencewallettransport) == null ? void 0 : _window$ue3$sequencew.sendmessagetowallet(postedMessage);
|
|
3284
|
+
}
|
|
3285
|
+
|
|
3286
|
+
}
|
|
3287
|
+
|
|
3288
|
+
/**
|
|
3289
|
+
* Initialized on Wallet side
|
|
3290
|
+
*/
|
|
3291
|
+
class UnrealMessageHandler extends BaseWalletTransport {
|
|
3292
|
+
constructor(walletRequestHandler) {
|
|
3293
|
+
super(walletRequestHandler);
|
|
3294
|
+
|
|
3295
|
+
this.onMessageFromUnreal = request => {
|
|
3296
|
+
// Wallet always expects json-rpc request messages from a dapp
|
|
3297
|
+
logger.debug('RECEIVED MESSAGE', request); // Handle message via the base transport
|
|
3298
|
+
|
|
3299
|
+
this.handleMessage(request);
|
|
3300
|
+
};
|
|
3301
|
+
|
|
3302
|
+
this.getUnrealTransportSession = windowParams => {
|
|
3303
|
+
const params = new WindowSessionParams(windowParams);
|
|
3304
|
+
return {
|
|
3305
|
+
sessionId: params.get('sid'),
|
|
3306
|
+
networkId: params.get('net'),
|
|
3307
|
+
intent: base64DecodeObject(params.get('intent'))
|
|
3308
|
+
};
|
|
3309
|
+
};
|
|
3310
|
+
|
|
3311
|
+
this._init = InitState.NIL;
|
|
3312
|
+
}
|
|
3313
|
+
|
|
3314
|
+
async register(windowHref) {
|
|
3315
|
+
var _window$ue;
|
|
3316
|
+
|
|
3317
|
+
if (((_window$ue = window.ue) == null ? void 0 : _window$ue.sequencewallettransport) === undefined) {
|
|
3318
|
+
return;
|
|
3319
|
+
}
|
|
3320
|
+
|
|
3321
|
+
overrideLogs('wallet'); // record open details (sessionId + default network) from the window url
|
|
3322
|
+
|
|
3323
|
+
const {
|
|
3324
|
+
search: rawParams
|
|
3325
|
+
} = new URL(windowHref || window.location.href);
|
|
3326
|
+
let session = this.getUnrealTransportSession(rawParams); // provider should always include sid when opening a new window
|
|
3327
|
+
|
|
3328
|
+
const isNewWindowSession = !!session.sessionId; // attempt to restore previous session in the case of a redirect or window reload
|
|
3329
|
+
|
|
3330
|
+
if (!isNewWindowSession) {
|
|
3331
|
+
session = await this.getCachedTransportSession();
|
|
3332
|
+
}
|
|
3333
|
+
|
|
3334
|
+
if (!session) {
|
|
3335
|
+
logger.error('unreal session is undefined');
|
|
3336
|
+
return;
|
|
3337
|
+
} // listen for window-transport requests
|
|
3338
|
+
|
|
3339
|
+
|
|
3340
|
+
window.ue.sequencewallettransport.onmessagefromsequencejs = this.onMessageFromUnreal;
|
|
3341
|
+
this._registered = true; // send open event to the app which opened us
|
|
3342
|
+
|
|
3343
|
+
this.open(session).then(opened => {
|
|
3344
|
+
if (!opened) {
|
|
3345
|
+
var _session;
|
|
3346
|
+
|
|
3347
|
+
const err = `failed to open to network ${(_session = session) == null ? void 0 : _session.networkId}`;
|
|
3348
|
+
logger.error(err);
|
|
3349
|
+
this.notifyClose({
|
|
3350
|
+
message: err
|
|
3351
|
+
});
|
|
3352
|
+
window.close();
|
|
3353
|
+
}
|
|
3354
|
+
}).catch(e => {
|
|
3355
|
+
var _session2;
|
|
3356
|
+
|
|
3357
|
+
const err = `failed to open to network ${(_session2 = session) == null ? void 0 : _session2.networkId}, due to: ${e}`;
|
|
3358
|
+
logger.error(err);
|
|
3359
|
+
this.notifyClose({
|
|
3360
|
+
message: err
|
|
3361
|
+
});
|
|
3362
|
+
window.close();
|
|
3363
|
+
});
|
|
3364
|
+
}
|
|
3365
|
+
|
|
3366
|
+
unregister() {
|
|
3367
|
+
var _window$ue2, _window$ue2$sequencew;
|
|
3368
|
+
|
|
3369
|
+
if (((_window$ue2 = window.ue) == null ? void 0 : (_window$ue2$sequencew = _window$ue2.sequencewallettransport) == null ? void 0 : _window$ue2$sequencew.onmessagefromsequencejs) === this.onMessageFromUnreal) {
|
|
3370
|
+
delete window.ue.sequencewallettransport.onmessagefromsequencejs;
|
|
3371
|
+
}
|
|
3372
|
+
|
|
3373
|
+
this._registered = false;
|
|
3374
|
+
} // onmessage is called when (the wallet) receives request messages from the dapp
|
|
3375
|
+
// over the unreal json-messaging transport
|
|
3376
|
+
|
|
3377
|
+
|
|
3378
|
+
// sendMessage sends message to the dapp window
|
|
3379
|
+
sendMessage(message) {
|
|
3380
|
+
var _window$ue3, _window$ue3$sequencew;
|
|
3381
|
+
|
|
3382
|
+
if (message.type !== EventType.INIT && this._init !== InitState.OK) {
|
|
3383
|
+
logger.error('impossible state, should not be calling postMessage until inited');
|
|
3384
|
+
return;
|
|
3385
|
+
} // prepare payload
|
|
3386
|
+
|
|
3387
|
+
|
|
3388
|
+
const payload = JSON.stringify(message); // post-message to app.
|
|
3389
|
+
|
|
3390
|
+
(_window$ue3 = window.ue) == null ? void 0 : (_window$ue3$sequencew = _window$ue3.sequencewallettransport) == null ? void 0 : _window$ue3$sequencew.sendmessagetosequencejs(payload);
|
|
3391
|
+
}
|
|
3392
|
+
|
|
3393
|
+
}
|
|
3394
|
+
|
|
3144
3395
|
class WalletUtils {
|
|
3145
3396
|
constructor(walletProvider) {
|
|
3146
3397
|
var _this = this;
|
|
@@ -3246,7 +3497,7 @@ class Wallet {
|
|
|
3246
3497
|
this.providers = void 0;
|
|
3247
3498
|
|
|
3248
3499
|
this.init = () => {
|
|
3249
|
-
var _this$config$transpor, _this$config$transpor2, _this$config$transpor3, _this$config$transpor4, _this$config$transpor5, _this$config$transpor6;
|
|
3500
|
+
var _this$config$transpor, _this$config$transpor2, _this$config$transpor3, _this$config$transpor4, _this$config$transpor5, _this$config$transpor6, _this$config$transpor7, _this$config$transpor8;
|
|
3250
3501
|
|
|
3251
3502
|
if (this.transport.provider) {
|
|
3252
3503
|
// init must have already been called
|
|
@@ -3278,6 +3529,11 @@ class Wallet {
|
|
|
3278
3529
|
// this.transport.messageProvider.add(this.transport.extensionMessageProvider)
|
|
3279
3530
|
}
|
|
3280
3531
|
|
|
3532
|
+
if ((_this$config$transpor7 = this.config.transports) != null && (_this$config$transpor8 = _this$config$transpor7.unrealTransport) != null && _this$config$transpor8.enabled) {
|
|
3533
|
+
this.transport.unrealMessageProvider = new UnrealMessageProvider(this.config.walletAppURL);
|
|
3534
|
+
this.transport.messageProvider.add(this.transport.unrealMessageProvider);
|
|
3535
|
+
}
|
|
3536
|
+
|
|
3281
3537
|
this.transport.messageProvider.register(); // .....
|
|
3282
3538
|
|
|
3283
3539
|
this.transport.allowProvider = allowProviderMiddleware(request => {
|
|
@@ -3362,13 +3618,28 @@ class Wallet {
|
|
|
3362
3618
|
this.useSession({
|
|
3363
3619
|
walletContext: walletContext
|
|
3364
3620
|
}, true);
|
|
3365
|
-
});
|
|
3621
|
+
});
|
|
3622
|
+
};
|
|
3623
|
+
|
|
3624
|
+
this.loadSession = async function () {
|
|
3625
|
+
const data = await LocalStorage.getInstance().getItem('@sequence.session');
|
|
3626
|
+
|
|
3627
|
+
if (!data || data === '') {
|
|
3628
|
+
return undefined;
|
|
3629
|
+
}
|
|
3630
|
+
|
|
3631
|
+
try {
|
|
3632
|
+
const session = JSON.parse(data);
|
|
3366
3633
|
|
|
3367
|
-
this.loadSession().then(session => {
|
|
3368
3634
|
if (session) {
|
|
3369
|
-
|
|
3635
|
+
_this.useSession(session, false);
|
|
3370
3636
|
}
|
|
3371
|
-
|
|
3637
|
+
|
|
3638
|
+
return session;
|
|
3639
|
+
} catch (err) {
|
|
3640
|
+
logger.warn('loadSession failed, unable to parse session payload from storage.');
|
|
3641
|
+
return undefined;
|
|
3642
|
+
}
|
|
3372
3643
|
};
|
|
3373
3644
|
|
|
3374
3645
|
this.connect = async function (options) {
|
|
@@ -3502,26 +3773,10 @@ class Wallet {
|
|
|
3502
3773
|
this.transport.messageProvider.closeWallet();
|
|
3503
3774
|
};
|
|
3504
3775
|
|
|
3505
|
-
this.
|
|
3506
|
-
const data = await LocalStorage.getInstance().getItem('@sequence.session');
|
|
3507
|
-
|
|
3508
|
-
if (!data || data === '') {
|
|
3509
|
-
return undefined;
|
|
3510
|
-
}
|
|
3511
|
-
|
|
3512
|
-
try {
|
|
3513
|
-
const session = JSON.parse(data);
|
|
3514
|
-
return session;
|
|
3515
|
-
} catch (err) {
|
|
3516
|
-
logger.warn('loadSession failed, unable to parse session payload from localStorage.');
|
|
3517
|
-
return undefined;
|
|
3518
|
-
}
|
|
3519
|
-
};
|
|
3520
|
-
|
|
3521
|
-
this.saveSession = session => {
|
|
3776
|
+
this.saveSession = async function (session) {
|
|
3522
3777
|
logger.debug('wallet provider: saving session');
|
|
3523
3778
|
const data = JSON.stringify(session);
|
|
3524
|
-
LocalStorage.getInstance().setItem('@sequence.session', data);
|
|
3779
|
+
await LocalStorage.getInstance().setItem('@sequence.session', data);
|
|
3525
3780
|
};
|
|
3526
3781
|
|
|
3527
3782
|
this.useSession = async function (session, autoSave = true) {
|
|
@@ -3801,12 +4056,13 @@ const DefaultProviderConfig = {
|
|
|
3801
4056
|
}
|
|
3802
4057
|
};
|
|
3803
4058
|
let walletInstance;
|
|
3804
|
-
const initWallet = (network, config) => {
|
|
4059
|
+
const initWallet = async (network, config) => {
|
|
3805
4060
|
if (walletInstance && walletInstance.isOpened()) {
|
|
3806
4061
|
walletInstance.closeWallet();
|
|
3807
4062
|
}
|
|
3808
4063
|
|
|
3809
4064
|
walletInstance = new Wallet(network, config);
|
|
4065
|
+
await walletInstance.loadSession();
|
|
3810
4066
|
return walletInstance;
|
|
3811
4067
|
};
|
|
3812
4068
|
const getWallet = () => {
|
|
@@ -3817,4 +4073,4 @@ const getWallet = () => {
|
|
|
3817
4073
|
return walletInstance;
|
|
3818
4074
|
};
|
|
3819
4075
|
|
|
3820
|
-
export { BaseInjectedTransport, BaseProviderTransport, BaseWalletTransport, CHANNEL_ID, DefaultProviderConfig, ErrSignedInRequired, EventType, ExtensionMessageHandler, ExtensionMessageProvider, InitState, LocalStorage, LocalStore, LocalWeb3Provider, MuxMessageProvider, OpenState, PROVIDER_OPEN_TIMEOUT, ProviderError, ProxyMessageChannel, ProxyMessageChannelPort, ProxyMessageHandler, ProxyMessageProvider, Wallet, WalletRequestHandler, Web3Provider, Web3Signer, WindowMessageHandler, WindowMessageProvider, WindowSessionParams, getWallet, initWallet, isBrowserExtension, isSequenceProvider, isValidMessageSignature, isValidSignature, isValidTypedDataSignature, isWalletUpToDate, messageToBytes, nextMessageIdx, prefixEIP191Message, recoverWalletConfig };
|
|
4076
|
+
export { BaseInjectedTransport, BaseProviderTransport, BaseWalletTransport, CHANNEL_ID, DefaultProviderConfig, ErrSignedInRequired, EventType, ExtensionMessageHandler, ExtensionMessageProvider, InitState, LocalStorage, LocalStore, LocalWeb3Provider, MuxMessageProvider, OpenState, PROVIDER_OPEN_TIMEOUT, ProviderError, ProxyMessageChannel, ProxyMessageChannelPort, ProxyMessageHandler, ProxyMessageProvider, UnrealMessageHandler, UnrealMessageProvider, Wallet, WalletRequestHandler, Web3Provider, Web3Signer, WindowMessageHandler, WindowMessageProvider, WindowSessionParams, getWallet, initWallet, isBrowserExtension, isSequenceProvider, isValidMessageSignature, isValidSignature, isValidTypedDataSignature, isWalletUpToDate, messageToBytes, nextMessageIdx, prefixEIP191Message, recoverWalletConfig };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ProviderMessage } from '../../types';
|
|
2
|
+
import { WalletRequestHandler } from '../wallet-request-handler';
|
|
3
|
+
import { BaseWalletTransport } from '../base-wallet-transport';
|
|
4
|
+
/**
|
|
5
|
+
* Initialized on Wallet side
|
|
6
|
+
*/
|
|
7
|
+
export declare class UnrealMessageHandler extends BaseWalletTransport {
|
|
8
|
+
constructor(walletRequestHandler: WalletRequestHandler);
|
|
9
|
+
register(windowHref?: string | URL): Promise<void>;
|
|
10
|
+
unregister(): void;
|
|
11
|
+
private onMessageFromUnreal;
|
|
12
|
+
sendMessage(message: ProviderMessage<any>): void;
|
|
13
|
+
private getUnrealTransportSession;
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { OpenWalletIntent, ProviderMessage } from '../../types';
|
|
2
|
+
import { BaseProviderTransport } from '../base-provider-transport';
|
|
3
|
+
/**
|
|
4
|
+
* Initialized on dApp side
|
|
5
|
+
*/
|
|
6
|
+
export declare class UnrealMessageProvider extends BaseProviderTransport {
|
|
7
|
+
private walletURL;
|
|
8
|
+
constructor(walletAppURL: string);
|
|
9
|
+
register: () => void;
|
|
10
|
+
unregister: () => void;
|
|
11
|
+
openWallet: (path?: string | undefined, intent?: OpenWalletIntent | undefined, networkId?: string | number | undefined) => void;
|
|
12
|
+
closeWallet(): void;
|
|
13
|
+
private onUnrealCallback;
|
|
14
|
+
sendMessage(message: ProviderMessage<unknown>): void;
|
|
15
|
+
}
|
|
@@ -6,17 +6,16 @@ import { WalletSession, ProviderEventTypes, ConnectOptions, OpenWalletIntent, Co
|
|
|
6
6
|
import { ItemStore } from './utils';
|
|
7
7
|
import { WalletUtils } from './utils/index';
|
|
8
8
|
import { Runtime } from 'webextension-polyfill-ts';
|
|
9
|
-
import { sequence } from '../../0xsequence/src';
|
|
10
9
|
export interface WalletProvider {
|
|
11
10
|
connect(options?: ConnectOptions): Promise<ConnectDetails>;
|
|
12
11
|
disconnect(): void;
|
|
13
|
-
isOpened(): boolean;
|
|
14
12
|
isConnected(): boolean;
|
|
15
13
|
getSession(): WalletSession | undefined;
|
|
16
14
|
getAddress(): Promise<string>;
|
|
17
15
|
getNetworks(chainId?: ChainIdLike): Promise<NetworkConfig[]>;
|
|
18
16
|
getChainId(): Promise<number>;
|
|
19
17
|
getAuthChainId(): Promise<number>;
|
|
18
|
+
isOpened(): boolean;
|
|
20
19
|
openWallet(path?: string, intent?: OpenWalletIntent, networkId?: string | number): Promise<boolean>;
|
|
21
20
|
closeWallet(): void;
|
|
22
21
|
getProvider(chainId?: ChainIdLike): Web3Provider | undefined;
|
|
@@ -40,6 +39,7 @@ export declare class Wallet implements WalletProvider {
|
|
|
40
39
|
private providers;
|
|
41
40
|
constructor(network?: string | number, config?: Partial<ProviderConfig>);
|
|
42
41
|
private init;
|
|
42
|
+
loadSession: () => Promise<WalletSession | undefined>;
|
|
43
43
|
connect: (options?: ConnectOptions | undefined) => Promise<ConnectDetails>;
|
|
44
44
|
addConnectedSite(origin: string | undefined): Promise<void>;
|
|
45
45
|
removeConnectedSite(origin: string): Promise<void>;
|
|
@@ -71,7 +71,6 @@ export declare class Wallet implements WalletProvider {
|
|
|
71
71
|
isDeployed(chainId?: ChainIdLike): Promise<boolean>;
|
|
72
72
|
on<K extends keyof ProviderEventTypes>(event: K, fn: ProviderEventTypes[K]): void;
|
|
73
73
|
once<K extends keyof ProviderEventTypes>(event: K, fn: ProviderEventTypes[K]): void;
|
|
74
|
-
private loadSession;
|
|
75
74
|
private saveSession;
|
|
76
75
|
private useSession;
|
|
77
76
|
private useAccountAddress;
|
|
@@ -96,9 +95,12 @@ export interface ProviderConfig {
|
|
|
96
95
|
enabled: boolean;
|
|
97
96
|
runtime: Runtime.Static;
|
|
98
97
|
};
|
|
98
|
+
unrealTransport?: {
|
|
99
|
+
enabled: boolean;
|
|
100
|
+
};
|
|
99
101
|
};
|
|
100
102
|
walletContext?: WalletContext;
|
|
101
103
|
}
|
|
102
104
|
export declare const DefaultProviderConfig: ProviderConfig;
|
|
103
|
-
export declare const initWallet: (network?: string | number | undefined, config?: Partial<
|
|
104
|
-
export declare const getWallet: () =>
|
|
105
|
+
export declare const initWallet: (network?: string | number | undefined, config?: Partial<ProviderConfig> | undefined) => Promise<Wallet>;
|
|
106
|
+
export declare const getWallet: () => Wallet;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@0xsequence/provider",
|
|
3
|
-
"version": "0.40.
|
|
3
|
+
"version": "0.40.4",
|
|
4
4
|
"description": "provider sub-package for Sequence",
|
|
5
5
|
"repository": "https://github.com/0xsequence/sequence.js/tree/master/packages/provider",
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
"typecheck": "tsc --noEmit"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@0xsequence/abi": "^0.40.
|
|
17
|
-
"@0xsequence/auth": "^0.40.
|
|
18
|
-
"@0xsequence/config": "^0.40.
|
|
19
|
-
"@0xsequence/network": "^0.40.
|
|
20
|
-
"@0xsequence/transactions": "^0.40.
|
|
21
|
-
"@0xsequence/utils": "^0.40.
|
|
22
|
-
"@0xsequence/wallet": "^0.40.
|
|
16
|
+
"@0xsequence/abi": "^0.40.4",
|
|
17
|
+
"@0xsequence/auth": "^0.40.4",
|
|
18
|
+
"@0xsequence/config": "^0.40.4",
|
|
19
|
+
"@0xsequence/network": "^0.40.4",
|
|
20
|
+
"@0xsequence/transactions": "^0.40.4",
|
|
21
|
+
"@0xsequence/utils": "^0.40.4",
|
|
22
|
+
"@0xsequence/wallet": "^0.40.4",
|
|
23
23
|
"@ethersproject/abstract-signer": "^5.5.0",
|
|
24
24
|
"@ethersproject/hash": "^5.5.0",
|
|
25
25
|
"@ethersproject/providers": "^5.5.1",
|
package/src/transports/index.ts
CHANGED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
interface UnrealInjectedWindow {
|
|
2
|
+
ue?: {
|
|
3
|
+
sequencewallettransport?: {
|
|
4
|
+
logfromjs: (message: string) => void
|
|
5
|
+
warnfromjs: (message: string) => void
|
|
6
|
+
errorfromjs: (message: string) => void
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
logsOverriddenForUnreal?: boolean
|
|
10
|
+
}
|
|
11
|
+
declare const window: Window & typeof globalThis & UnrealInjectedWindow
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* This will redirect console logs from Sequence.js & the wallet to the Unreal console, for debugging purposes.
|
|
15
|
+
*/
|
|
16
|
+
export function overrideLogs(side: 'dapp' | 'wallet') {
|
|
17
|
+
if (window.ue?.sequencewallettransport && !window.logsOverriddenForUnreal) {
|
|
18
|
+
const t = window.ue?.sequencewallettransport
|
|
19
|
+
console.log = (...args: unknown[]) => {
|
|
20
|
+
t.logfromjs(`${side}: ${stringify(args)}`)
|
|
21
|
+
}
|
|
22
|
+
console.warn = (...args: unknown[]) => {
|
|
23
|
+
t.warnfromjs(`${side}: ${stringify(args)}`)
|
|
24
|
+
}
|
|
25
|
+
console.error = (...args: unknown[]) => {
|
|
26
|
+
t.errorfromjs(`${side}: ${stringify(args)}`)
|
|
27
|
+
}
|
|
28
|
+
window.logsOverriddenForUnreal = true
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function stringify(things: unknown[]): string {
|
|
33
|
+
return things
|
|
34
|
+
.map(a => (typeof a === 'object' ? (a instanceof Error ? a.message : JSON.stringify(a)) : String(a)))
|
|
35
|
+
.join(' ')
|
|
36
|
+
}
|