@dynamic-labs/starknet 0.19.2 → 0.19.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/CHANGELOG.md +31 -0
- package/package.json +7 -5
- package/src/constants.cjs +0 -7
- package/src/constants.d.ts +0 -2
- package/src/constants.js +1 -7
- package/src/starknetWalletConnector.cjs +38 -6
- package/src/starknetWalletConnector.d.ts +5 -1
- package/src/starknetWalletConnector.js +38 -6
- package/src/utils/convertors.cjs +12 -5
- package/src/utils/convertors.js +12 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,35 @@
|
|
|
1
1
|
|
|
2
|
+
### [0.19.4](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.3...v0.19.4) (2023-11-29)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* passkey management and recovery ([#4018](https://github.com/dynamic-labs/DynamicAuth/issues/4018)) ([6fae19f](https://github.com/dynamic-labs/DynamicAuth/commit/6fae19f26d9bbbff5dd5863ac012cfb67e3fe535))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* add hydration safeguard for embedded widget ([#3953](https://github.com/dynamic-labs/DynamicAuth/issues/3953)) ([#3955](https://github.com/dynamic-labs/DynamicAuth/issues/3955)) ([848a684](https://github.com/dynamic-labs/DynamicAuth/commit/848a684a08fd38e23f86898b287f3badaa0a3b49))
|
|
13
|
+
* ensure all chain rpc providers are always assigned correctly ([#3985](https://github.com/dynamic-labs/DynamicAuth/issues/3985)) ([f36aebe](https://github.com/dynamic-labs/DynamicAuth/commit/f36aebeb8ddffa7fb65f6865005f44d5eacf3982))
|
|
14
|
+
* initialize selected chain with first evm network if no value in ls ([#4008](https://github.com/dynamic-labs/DynamicAuth/issues/4008)) ([b7d99be](https://github.com/dynamic-labs/DynamicAuth/commit/b7d99be80d990c264838f2619b45750b1a0037bc))
|
|
15
|
+
* nextjs issues to show transaction modals ([#3964](https://github.com/dynamic-labs/DynamicAuth/issues/3964)) ([#3978](https://github.com/dynamic-labs/DynamicAuth/issues/3978)) ([0ef4c3a](https://github.com/dynamic-labs/DynamicAuth/commit/0ef4c3adbc0883e127023c3c475637dfb648160d))
|
|
16
|
+
* onEmbeddedWalletCreated not being called ([#3977](https://github.com/dynamic-labs/DynamicAuth/issues/3977)) ([24de7c0](https://github.com/dynamic-labs/DynamicAuth/commit/24de7c0443d957302a52055e59196592f87e70e1)), closes [#3975](https://github.com/dynamic-labs/DynamicAuth/issues/3975)
|
|
17
|
+
* return linked wallets even when there's no primary wallet ([#3965](https://github.com/dynamic-labs/DynamicAuth/issues/3965)) ([#3976](https://github.com/dynamic-labs/DynamicAuth/issues/3976)) ([7052f99](https://github.com/dynamic-labs/DynamicAuth/commit/7052f990638295ddfc3cbe35853736dfc6250268))
|
|
18
|
+
* transaction modal not throwing viem compatible exception ([#3971](https://github.com/dynamic-labs/DynamicAuth/issues/3971)) ([#3979](https://github.com/dynamic-labs/DynamicAuth/issues/3979)) ([8bc551f](https://github.com/dynamic-labs/DynamicAuth/commit/8bc551f432e140e1cf16eb2b3305a8de761d4305))
|
|
19
|
+
|
|
20
|
+
### [0.19.3](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.2...v0.19.3) (2023-11-22)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
|
|
25
|
+
* multiple starknet improvements [Support for default/custom RPC Providers + Dynamic Domains in signature] ([#3938](https://github.com/dynamic-labs/DynamicAuth/issues/3938)) ([d299622](https://github.com/dynamic-labs/DynamicAuth/commit/d299622197cb28483c6c6d6d051c917d6cbbe5df)), closes [#3881](https://github.com/dynamic-labs/DynamicAuth/issues/3881) [#3927](https://github.com/dynamic-labs/DynamicAuth/issues/3927)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* allow user's metadata field to be updated in updateUser hook ([#3930](https://github.com/dynamic-labs/DynamicAuth/issues/3930)) ([7d00014](https://github.com/dynamic-labs/DynamicAuth/commit/7d000140f87453bd158798b973917fa8309c8e5e))
|
|
31
|
+
* better handling of wallet disconnect state edge case ([#3940](https://github.com/dynamic-labs/DynamicAuth/issues/3940)) ([#3942](https://github.com/dynamic-labs/DynamicAuth/issues/3942)) ([e9f944c](https://github.com/dynamic-labs/DynamicAuth/commit/e9f944c2c68de446e83c1dbd62aaaedd07443326))
|
|
32
|
+
|
|
2
33
|
### [0.19.2](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.1...v0.19.2) (2023-11-17)
|
|
3
34
|
|
|
4
35
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/starknet",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.4",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/dynamic-labs/DynamicAuth.git",
|
|
@@ -29,10 +29,12 @@
|
|
|
29
29
|
"starknet": "^5.19.5",
|
|
30
30
|
"get-starknet-core": "^3.2.0",
|
|
31
31
|
"text-encoding": "0.7.0",
|
|
32
|
-
"@dynamic-labs/sdk-api": "0.0.
|
|
33
|
-
"@dynamic-labs/
|
|
34
|
-
"@dynamic-labs/
|
|
35
|
-
"@dynamic-labs/
|
|
32
|
+
"@dynamic-labs/sdk-api": "0.0.311",
|
|
33
|
+
"@dynamic-labs/rpc-providers": "0.19.4",
|
|
34
|
+
"@dynamic-labs/types": "0.19.4",
|
|
35
|
+
"@dynamic-labs/utils": "0.19.4",
|
|
36
|
+
"@dynamic-labs/wallet-book": "0.19.4",
|
|
37
|
+
"@dynamic-labs/wallet-connector-core": "0.19.4"
|
|
36
38
|
},
|
|
37
39
|
"peerDependencies": {}
|
|
38
40
|
}
|
package/src/constants.cjs
CHANGED
|
@@ -3,12 +3,5 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const ETH_STARKNET_ADDRESS = '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7';
|
|
6
|
-
const DEFAULT_STARKNET_TYPED_DATA_DOMAIN = {
|
|
7
|
-
domain: {
|
|
8
|
-
name: 'Dynamic Sample dApp',
|
|
9
|
-
version: '0.0.1',
|
|
10
|
-
},
|
|
11
|
-
};
|
|
12
6
|
|
|
13
|
-
exports.DEFAULT_STARKNET_TYPED_DATA_DOMAIN = DEFAULT_STARKNET_TYPED_DATA_DOMAIN;
|
|
14
7
|
exports.ETH_STARKNET_ADDRESS = ETH_STARKNET_ADDRESS;
|
package/src/constants.d.ts
CHANGED
package/src/constants.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
1
|
const ETH_STARKNET_ADDRESS = '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7';
|
|
2
|
-
const DEFAULT_STARKNET_TYPED_DATA_DOMAIN = {
|
|
3
|
-
domain: {
|
|
4
|
-
name: 'Dynamic Sample dApp',
|
|
5
|
-
version: '0.0.1',
|
|
6
|
-
},
|
|
7
|
-
};
|
|
8
2
|
|
|
9
|
-
export {
|
|
3
|
+
export { ETH_STARKNET_ADDRESS };
|
|
@@ -7,6 +7,7 @@ var getStarknetCore = require('get-starknet-core');
|
|
|
7
7
|
var starknet = require('starknet');
|
|
8
8
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
9
9
|
var utils = require('@dynamic-labs/utils');
|
|
10
|
+
var rpcProviders = require('@dynamic-labs/rpc-providers');
|
|
10
11
|
var constants = require('./constants.cjs');
|
|
11
12
|
var ethereumContractAbi = require('./ethereumContractAbi.cjs');
|
|
12
13
|
var convertors = require('./utils/convertors.cjs');
|
|
@@ -16,6 +17,7 @@ const NETWORK_CHANGED_EVENT_LISTENER = 'networkChanged';
|
|
|
16
17
|
const STARKNET_VERSION = 'v5';
|
|
17
18
|
class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
18
19
|
constructor(name, windowKey, opts) {
|
|
20
|
+
var _a;
|
|
19
21
|
super(opts);
|
|
20
22
|
this.connectedChain = 'STARK';
|
|
21
23
|
this.supportedChains = ['STARK'];
|
|
@@ -23,14 +25,44 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
23
25
|
this.name = name;
|
|
24
26
|
this.windowKey = windowKey;
|
|
25
27
|
this.starknetNetworks = opts.starknetNetworks;
|
|
28
|
+
this.chainRpcProviders = opts.chainRpcProviders;
|
|
29
|
+
(_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerChainProviders(rpcProviders.ProviderChain.STARKNET, (config) => {
|
|
30
|
+
const rpcProviders = {};
|
|
31
|
+
if (config === null || config === void 0 ? void 0 : config.starknet) {
|
|
32
|
+
const networks = config.starknet;
|
|
33
|
+
rpcProviders.starknet = this.createProviderFromConfig(networks);
|
|
34
|
+
}
|
|
35
|
+
return rpcProviders.starknet;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
createProviderFromConfig(networks) {
|
|
39
|
+
return networks.map((network) => {
|
|
40
|
+
var _a;
|
|
41
|
+
const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
|
|
42
|
+
const provider = new starknet.RpcProvider({ nodeUrl: rpcUrl });
|
|
43
|
+
return {
|
|
44
|
+
chainId: network.chainId.toString(),
|
|
45
|
+
chainName: network.name,
|
|
46
|
+
provider,
|
|
47
|
+
};
|
|
48
|
+
});
|
|
26
49
|
}
|
|
27
50
|
getPublicClient() {
|
|
28
|
-
var _a
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
51
|
+
var _a;
|
|
52
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
if (this.starknetNetworks === undefined ||
|
|
54
|
+
this.starknetNetworks.length === 0)
|
|
55
|
+
return;
|
|
56
|
+
const configurations = {
|
|
57
|
+
cosmos: [],
|
|
58
|
+
evm: undefined,
|
|
59
|
+
solana: undefined,
|
|
60
|
+
starknet: this.starknetNetworks,
|
|
61
|
+
};
|
|
62
|
+
const chainId = yield this.getNetwork();
|
|
63
|
+
const starknetRpcProvider = (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.getStarknetRpcProviderByChainId(configurations, chainId);
|
|
64
|
+
return starknetRpcProvider === null || starknetRpcProvider === void 0 ? void 0 : starknetRpcProvider.provider;
|
|
65
|
+
});
|
|
34
66
|
}
|
|
35
67
|
/**
|
|
36
68
|
* returns stakrnet wallet network id
|
|
@@ -3,6 +3,8 @@ import { ProviderInterface, constants, AccountInterface, RpcProvider } from 'sta
|
|
|
3
3
|
import { Chain, WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
4
4
|
import { NetworkConfiguration } from '@dynamic-labs/sdk-api';
|
|
5
5
|
import { WalletBookSchema } from '@dynamic-labs/wallet-book';
|
|
6
|
+
import { ChainRpcProviders, StarknetRpcProvider } from '@dynamic-labs/rpc-providers';
|
|
7
|
+
import { GenericNetwork } from '@dynamic-labs/types';
|
|
6
8
|
import { StarknetWalletKey } from './types';
|
|
7
9
|
type AccountChangeEventHandler = (address: {
|
|
8
10
|
toString(): string;
|
|
@@ -23,10 +25,12 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
23
25
|
switchNetworkOnlyFromWallet: boolean;
|
|
24
26
|
starknetNetworks: NetworkConfiguration[];
|
|
25
27
|
constructor(name: string, windowKey: StarknetWalletKey, opts: {
|
|
28
|
+
chainRpcProviders: typeof ChainRpcProviders;
|
|
26
29
|
starknetNetworks: NetworkConfiguration[];
|
|
27
30
|
walletBook: WalletBookSchema;
|
|
28
31
|
});
|
|
29
|
-
|
|
32
|
+
createProviderFromConfig(networks: GenericNetwork[]): StarknetRpcProvider[];
|
|
33
|
+
getPublicClient(): Promise<RpcProvider | undefined>;
|
|
30
34
|
/**
|
|
31
35
|
* returns stakrnet wallet network id
|
|
32
36
|
*/
|
|
@@ -3,6 +3,7 @@ import { getStarknet } from 'get-starknet-core';
|
|
|
3
3
|
import { RpcProvider, Contract, cairo, constants } from 'starknet';
|
|
4
4
|
import { WalletConnectorBase, logger } from '@dynamic-labs/wallet-connector-core';
|
|
5
5
|
import { DynamicError } from '@dynamic-labs/utils';
|
|
6
|
+
import { ProviderChain } from '@dynamic-labs/rpc-providers';
|
|
6
7
|
import { ETH_STARKNET_ADDRESS } from './constants.js';
|
|
7
8
|
import ETH_CONTRACT_ABI from './ethereumContractAbi.js';
|
|
8
9
|
import { formatTypedDataMessage } from './utils/convertors.js';
|
|
@@ -12,6 +13,7 @@ const NETWORK_CHANGED_EVENT_LISTENER = 'networkChanged';
|
|
|
12
13
|
const STARKNET_VERSION = 'v5';
|
|
13
14
|
class StarknetWalletConnector extends WalletConnectorBase {
|
|
14
15
|
constructor(name, windowKey, opts) {
|
|
16
|
+
var _a;
|
|
15
17
|
super(opts);
|
|
16
18
|
this.connectedChain = 'STARK';
|
|
17
19
|
this.supportedChains = ['STARK'];
|
|
@@ -19,14 +21,44 @@ class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
19
21
|
this.name = name;
|
|
20
22
|
this.windowKey = windowKey;
|
|
21
23
|
this.starknetNetworks = opts.starknetNetworks;
|
|
24
|
+
this.chainRpcProviders = opts.chainRpcProviders;
|
|
25
|
+
(_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerChainProviders(ProviderChain.STARKNET, (config) => {
|
|
26
|
+
const rpcProviders = {};
|
|
27
|
+
if (config === null || config === void 0 ? void 0 : config.starknet) {
|
|
28
|
+
const networks = config.starknet;
|
|
29
|
+
rpcProviders.starknet = this.createProviderFromConfig(networks);
|
|
30
|
+
}
|
|
31
|
+
return rpcProviders.starknet;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
createProviderFromConfig(networks) {
|
|
35
|
+
return networks.map((network) => {
|
|
36
|
+
var _a;
|
|
37
|
+
const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
|
|
38
|
+
const provider = new RpcProvider({ nodeUrl: rpcUrl });
|
|
39
|
+
return {
|
|
40
|
+
chainId: network.chainId.toString(),
|
|
41
|
+
chainName: network.name,
|
|
42
|
+
provider,
|
|
43
|
+
};
|
|
44
|
+
});
|
|
22
45
|
}
|
|
23
46
|
getPublicClient() {
|
|
24
|
-
var _a
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
47
|
+
var _a;
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
if (this.starknetNetworks === undefined ||
|
|
50
|
+
this.starknetNetworks.length === 0)
|
|
51
|
+
return;
|
|
52
|
+
const configurations = {
|
|
53
|
+
cosmos: [],
|
|
54
|
+
evm: undefined,
|
|
55
|
+
solana: undefined,
|
|
56
|
+
starknet: this.starknetNetworks,
|
|
57
|
+
};
|
|
58
|
+
const chainId = yield this.getNetwork();
|
|
59
|
+
const starknetRpcProvider = (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.getStarknetRpcProviderByChainId(configurations, chainId);
|
|
60
|
+
return starknetRpcProvider === null || starknetRpcProvider === void 0 ? void 0 : starknetRpcProvider.provider;
|
|
61
|
+
});
|
|
30
62
|
}
|
|
31
63
|
/**
|
|
32
64
|
* returns stakrnet wallet network id
|
package/src/utils/convertors.cjs
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var starknet = require('starknet');
|
|
6
|
-
var constants = require('../constants.cjs');
|
|
7
6
|
|
|
8
|
-
const defaultTypedData =
|
|
7
|
+
const defaultTypedData = {
|
|
8
|
+
primaryType: 'Message',
|
|
9
|
+
types: {
|
|
9
10
|
Message: [
|
|
10
11
|
{
|
|
11
12
|
name: 'message',
|
|
@@ -26,12 +27,18 @@ const defaultTypedData = Object.assign(Object.assign({}, constants.DEFAULT_STARK
|
|
|
26
27
|
type: 'felt',
|
|
27
28
|
},
|
|
28
29
|
],
|
|
29
|
-
}
|
|
30
|
+
},
|
|
31
|
+
};
|
|
30
32
|
const formatTypedDataMessage = (inputMessage, chainId = starknet.constants.NetworkName.SN_MAIN) => {
|
|
33
|
+
const { nonce, domain } = JSON.parse(inputMessage);
|
|
31
34
|
const message = {
|
|
32
|
-
message:
|
|
35
|
+
message: nonce.substring(0, 31),
|
|
33
36
|
};
|
|
34
|
-
return Object.assign(Object.assign({}, defaultTypedData), { domain:
|
|
37
|
+
return Object.assign(Object.assign({}, defaultTypedData), { domain: {
|
|
38
|
+
chainId,
|
|
39
|
+
name: domain,
|
|
40
|
+
version: '0.0.1',
|
|
41
|
+
}, message });
|
|
35
42
|
};
|
|
36
43
|
|
|
37
44
|
exports.formatTypedDataMessage = formatTypedDataMessage;
|
package/src/utils/convertors.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { constants } from 'starknet';
|
|
2
|
-
import { DEFAULT_STARKNET_TYPED_DATA_DOMAIN } from '../constants.js';
|
|
3
2
|
|
|
4
|
-
const defaultTypedData =
|
|
3
|
+
const defaultTypedData = {
|
|
4
|
+
primaryType: 'Message',
|
|
5
|
+
types: {
|
|
5
6
|
Message: [
|
|
6
7
|
{
|
|
7
8
|
name: 'message',
|
|
@@ -22,12 +23,18 @@ const defaultTypedData = Object.assign(Object.assign({}, DEFAULT_STARKNET_TYPED_
|
|
|
22
23
|
type: 'felt',
|
|
23
24
|
},
|
|
24
25
|
],
|
|
25
|
-
}
|
|
26
|
+
},
|
|
27
|
+
};
|
|
26
28
|
const formatTypedDataMessage = (inputMessage, chainId = constants.NetworkName.SN_MAIN) => {
|
|
29
|
+
const { nonce, domain } = JSON.parse(inputMessage);
|
|
27
30
|
const message = {
|
|
28
|
-
message:
|
|
31
|
+
message: nonce.substring(0, 31),
|
|
29
32
|
};
|
|
30
|
-
return Object.assign(Object.assign({}, defaultTypedData), { domain:
|
|
33
|
+
return Object.assign(Object.assign({}, defaultTypedData), { domain: {
|
|
34
|
+
chainId,
|
|
35
|
+
name: domain,
|
|
36
|
+
version: '0.0.1',
|
|
37
|
+
}, message });
|
|
31
38
|
};
|
|
32
39
|
|
|
33
40
|
export { formatTypedDataMessage };
|