@rango-dev/wallets-core 0.48.0 → 0.48.1-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/dist/hub/mod.d.ts +2 -2
- package/dist/hub/mod.d.ts.map +1 -1
- package/dist/hub/provider/mod.d.ts +1 -1
- package/dist/hub/provider/mod.d.ts.map +1 -1
- package/dist/hub/provider/provider.d.ts +2 -2
- package/dist/hub/provider/provider.d.ts.map +1 -1
- package/dist/hub/provider/types.d.ts +12 -1
- package/dist/hub/provider/types.d.ts.map +1 -1
- package/dist/hub/store/mod.d.ts +1 -1
- package/dist/hub/store/mod.d.ts.map +1 -1
- package/dist/hub/store/mod.js.map +2 -2
- package/dist/hub/store/providers.d.ts +5 -3
- package/dist/hub/store/providers.d.ts.map +1 -1
- package/dist/legacy/mod.js.map +2 -2
- package/dist/legacy/types.d.ts +2 -0
- package/dist/legacy/types.d.ts.map +1 -1
- package/dist/mod.d.ts +1 -1
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +1 -1
- package/dist/mod.js.map +3 -3
- package/dist/namespaces/common/mod.js +1 -1
- package/dist/namespaces/common/mod.js.map +2 -2
- package/dist/namespaces/evm/mod.js +1 -1
- package/dist/namespaces/evm/mod.js.map +2 -2
- package/dist/namespaces/solana/mod.js +1 -1
- package/dist/namespaces/solana/mod.js.map +2 -2
- package/dist/namespaces/sui/mod.js +1 -1
- package/dist/namespaces/sui/mod.js.map +2 -2
- package/dist/namespaces/utxo/mod.js +1 -1
- package/dist/namespaces/utxo/mod.js.map +2 -2
- package/dist/test-utils/fixtures.d.ts +4 -2
- package/dist/test-utils/fixtures.d.ts.map +1 -1
- package/dist/wallets-core.build.json +1 -1
- package/package.json +1 -1
- package/src/builders/provider.ts +1 -1
- package/src/hub/mod.ts +7 -2
- package/src/hub/provider/mod.ts +2 -0
- package/src/hub/provider/provider.test.ts +32 -52
- package/src/hub/provider/provider.ts +6 -4
- package/src/hub/provider/types.ts +16 -1
- package/src/hub/store/mod.ts +5 -1
- package/src/hub/store/providers.ts +9 -3
- package/src/hub/store/store.test.ts +7 -9
- package/src/legacy/types.ts +2 -1
- package/src/mod.ts +3 -1
- package/src/test-utils/fixtures.ts +8 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
# [0.48.0](https://github.com/rango-exchange/rango-client/compare/wallets-core@0.47.0...wallets-core@0.48.0) (2025-08-19)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* implement retry mechanism for lazy imports ([9a8e191](https://github.com/rango-exchange/rango-client/commit/9a8e191711d2319990ca4d0613e8188a5f86842f))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
1
10
|
# [0.47.0](https://github.com/rango-exchange/rango-client/compare/wallets-core@0.46.0...wallets-core@0.47.0) (2025-08-05)
|
|
2
11
|
|
|
3
12
|
|
package/dist/hub/mod.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export type { Subscriber, SubscriberCleanUp, Context, } from './namespaces/mod.js';
|
|
2
2
|
export { Namespace } from './namespaces/mod.js';
|
|
3
3
|
export { Provider } from './provider/mod.js';
|
|
4
|
-
export type { CommonNamespaces, CommonNamespaceKeys } from './provider/mod.js';
|
|
4
|
+
export type { CommonNamespaces, CommonNamespaceKeys, GenerateDeepLink, DeepLinkContext, } from './provider/mod.js';
|
|
5
5
|
export { Hub } from './hub.js';
|
|
6
|
-
export type { Store, State,
|
|
6
|
+
export type { Store, State, ProviderMetadata } from './store/mod.js';
|
|
7
7
|
export { createStore, guessProviderStateSelector, namespaceStateSelector, } from './store/mod.js';
|
|
8
8
|
export { generateStoreId } from './helpers.js';
|
|
9
9
|
//# sourceMappingURL=mod.d.ts.map
|
package/dist/hub/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/hub/mod.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,OAAO,GACR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/hub/mod.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,OAAO,GACR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EACL,WAAW,EACX,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { ExtendableInternalActions, CommonNamespaces, CommonNamespaceKeys, State, Context, ProviderBuilderOptions, } from './types.js';
|
|
1
|
+
export type { ExtendableInternalActions, CommonNamespaces, CommonNamespaceKeys, State, Context, ProviderBuilderOptions, GenerateDeepLink, DeepLinkContext, } from './types.js';
|
|
2
2
|
export { Provider } from './provider.js';
|
|
3
3
|
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/hub/provider/mod.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,EACL,OAAO,EACP,sBAAsB,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/hub/provider/mod.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,EACL,OAAO,EACP,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CommonNamespaces, Context, ExtendableInternalActions, GetState, RegisteredNamespaces, SetState } from './types.js';
|
|
2
2
|
import type { FindProxiedNamespace } from '../../builders/mod.js';
|
|
3
3
|
import type { AnyFunction, FunctionWithContext } from '../../types/actions.js';
|
|
4
|
-
import type { ProviderConfig, Store } from '../store/mod.js';
|
|
4
|
+
import type { ProviderConfig, ProviderInfo, Store } from '../store/mod.js';
|
|
5
5
|
export declare class Provider {
|
|
6
6
|
#private;
|
|
7
7
|
readonly id: string;
|
|
@@ -74,7 +74,7 @@ export declare class Provider {
|
|
|
74
74
|
* provider.info();
|
|
75
75
|
* ```
|
|
76
76
|
*/
|
|
77
|
-
info():
|
|
77
|
+
info(): ProviderInfo | undefined;
|
|
78
78
|
/**
|
|
79
79
|
* A list of registered _proxied_ namespaces.
|
|
80
80
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/hub/provider/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,yBAAyB,EACzB,QAAQ,EACR,oBAAoB,EACpB,QAAQ,EAET,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/hub/provider/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EACP,yBAAyB,EACzB,QAAQ,EACR,oBAAoB,EACpB,QAAQ,EAET,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI3E,qBAAa,QAAQ;;IACnB,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,OAAO,SAAW;gBAShC,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,oBAAoB,CAAC,MAAM,gBAAgB,EAAE,gBAAgB,CAAC,EAC1E,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;QACR;;;WAGG;QACH,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;QAClD,KAAK,CAAC,EAAE,KAAK,CAAC;KACf;IAkBH;;;;;;;;;;;;;;;OAeG;IACI,IAAI,IAAI,IAAI;IAanB;;;;;;;;;;;;;;;;;OAiBG;IACI,KAAK,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;IA+CpC;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAWhC;;;;;;;;;;OAUG;IACI,IAAI,IAAI,YAAY,GAAG,SAAS;IAUvC;;;;;;;;OAQG;IACI,MAAM,IAAI,oBAAoB,CACnC,MAAM,gBAAgB,EACtB,gBAAgB,CACjB;IAID;;;;;;OAMG;IACI,GAAG,CAAC,CAAC,SAAS,MAAM,gBAAgB,EACzC,EAAE,EAAE,CAAC,GACJ,oBAAoB,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,SAAS;IAMxD;;;;;;;;;;;OAWG;IACI,eAAe,CAAC,CAAC,SAAS,MAAM,gBAAgB,EACrD,mBAAmB,EAAE,CAAC,GAAG,MAAM,GAC9B,oBAAoB,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,SAAS;IAaxD;;;;;;;;;;;OAWG;IACI,MAAM,CACX,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,GAChD,IAAI;IAKP;;;;;;;;;;;OAWG;IACI,KAAK,CACV,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,GAChD,IAAI;CAiDR"}
|
|
@@ -11,7 +11,7 @@ import type { Prettify } from '../../types/utils.js';
|
|
|
11
11
|
export type Context = {
|
|
12
12
|
state: () => [GetState, SetState];
|
|
13
13
|
};
|
|
14
|
-
export type State = Omit<LegacyState, 'reachable' | 'accounts' | 'network'>;
|
|
14
|
+
export type State = Omit<LegacyState, 'reachable' | 'accounts' | 'network' | 'derivationPath'>;
|
|
15
15
|
export type SetState = <K extends keyof Pick<State, 'installed'>>(name: K, value: State[K]) => void;
|
|
16
16
|
export type GetState = {
|
|
17
17
|
(): State;
|
|
@@ -32,4 +32,15 @@ export type RegisteredNamespaces<K extends keyof T, T> = Map<K, FindProxiedNames
|
|
|
32
32
|
export type ProviderBuilderOptions = {
|
|
33
33
|
store?: Store;
|
|
34
34
|
};
|
|
35
|
+
export type GenerateDeepLink = (context: DeepLinkContext) => string;
|
|
36
|
+
/**
|
|
37
|
+
* Deeplink parameters context.
|
|
38
|
+
*
|
|
39
|
+
* @param targetUrl - URL of the widget in the app to be opened in the in-app browser.
|
|
40
|
+
* @param appHost - Domain of the app where the widget has been implemented.
|
|
41
|
+
*/
|
|
42
|
+
export type DeepLinkContext = {
|
|
43
|
+
targetUrl: string;
|
|
44
|
+
appHost: string;
|
|
45
|
+
};
|
|
35
46
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hub/provider/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hub/provider/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,IAAI,CACtB,WAAW,EACX,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,gBAAgB,CACxD,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,EAC9D,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KACZ,IAAI,CAAC;AACV,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,KAAK,CAAC;IACV,CAAC,CAAC,SAAS,MAAM,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,EAAE,UAAU,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,gBAAgB,CAAC,CAAC;AAEnE,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CAClD;AAED,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,CAC1D,CAAC,EACD,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IAAE,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AACvD,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,MAAM,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
package/dist/hub/store/mod.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { guessProviderStateSelector, namespaceStateSelector, } from './selectors
|
|
|
2
2
|
export type { Store } from './extend.js';
|
|
3
3
|
export type { State } from './store.js';
|
|
4
4
|
export type { Event, ProviderDetectedEvent, ProviderConnectingEvent, ProviderConnectedEvent, ProviderDisconnectedEvent, NamespaceDisconnectedEvent, NamespaceConnectedEvent, NamespaceSwitchedAccountEvent, } from './events.js';
|
|
5
|
-
export type {
|
|
5
|
+
export type { ProviderMetadata, ProviderConfig, ProviderInfo, } from './providers.js';
|
|
6
6
|
export type { NamespaceConfig, NamespaceData } from './namespaces.js';
|
|
7
7
|
export { createStore } from './store.js';
|
|
8
8
|
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/hub/store/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EACV,KAAK,EAEL,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EAEzB,0BAA0B,EAC1B,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,YAAY,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/hub/store/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EACV,KAAK,EAEL,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EAEzB,0BAA0B,EAC1B,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hub/store/selectors.ts", "../../../src/hub/store/store.ts", "../../../src/hub/store/extend.ts", "../../../src/hub/store/hub.ts", "../../../src/hub/store/namespaces.ts", "../../../src/hub/store/events.ts", "../../../src/hub/store/providers.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Note: Zustand has some difficulty when you are trying to `previous` state on `subscribe`.\n * If these selectors define inside store directly and use `get()` for accessing state, it will get the latest state\n * instead of previous state which desired.\n * So make them a helper will let us to reuse them both in store and outside of store in a `subscribe`.\n */\nimport type { State } from '../mod.js';\nimport type { State as InternalProviderState } from '../provider/mod.js';\n\n/**\n * Legacy provider state includes `connecting` and `connected` values. It hadn't a separation layer for `namespaces`.\n * For compatibility reasons, we should produce these two values somehow.\n *\n * Currently, We return `true` if any of namespaces return true. We are missing failed namespace here.\n * But if we want to solve that, we should migrate our client code to use `namespace` state directly and not from `provider`\n */\nexport function guessProviderStateSelector(\n state: State,\n providerId: string\n): InternalProviderState {\n /*\n * We keep namespaces in a separate branch than providers.\n * We should look at all of them and find all the namespaces that for our current proivder.\n */\n const allNamespaces = state.namespaces.list;\n const currentProviderNamespaces = Object.keys(allNamespaces).filter(\n (key) => allNamespaces[key].info.providerId === providerId\n );\n\n // Returning provider state value directly.\n const installed = !!state.providers.list[providerId]?.data.installed;\n\n /*\n * If any namespaces returns `true`, we consider the whole provider for this field to be `true`.\n * it has a downside regarding errors which explained on top of the function.\n */\n const connected =\n currentProviderNamespaces.length > 0\n ? currentProviderNamespaces.some(\n (key) => allNamespaces[key].data.connected\n )\n : false;\n const connecting =\n currentProviderNamespaces.length > 0\n ? currentProviderNamespaces.some(\n (key) => allNamespaces[key].data.connecting\n )\n : false;\n\n return {\n installed,\n connected,\n connecting,\n };\n}\n\nexport function namespaceStateSelector(state: State, storeId: string) {\n return state.namespaces.list[storeId].data;\n}\n", "import type { StoreApi } from 'zustand/vanilla';\n\nimport { createStore as createZustandStore } from 'zustand/vanilla';\n\nimport { extend, type Store } from './extend.js';\nimport { hubStore, type HubStore } from './hub.js';\nimport { namespacesStore, type NamespaceStore } from './namespaces.js';\nimport { providersStore, type ProviderStore } from './providers.js';\n\n/************ State ************/\n\nexport interface State {\n hub: HubStore;\n providers: ProviderStore;\n namespaces: NamespaceStore;\n}\n\nexport type RawStore = StoreApi<State>;\n\nexport const createStore = (): Store => {\n const store = createZustandStore<State>((...api) => {\n return {\n hub: hubStore(...api),\n providers: providersStore(...api),\n namespaces: namespacesStore(...api),\n };\n });\n\n return extend(store);\n};\n", "import type {\n Event,\n ProviderConnectedEvent,\n ProviderConnectingEvent,\n ProviderDisconnectedEvent,\n} from './events.js';\nimport type { RawStore, State } from './store.js';\n\nimport { guessProviderStateSelector } from './selectors.js';\n\nexport interface Store extends Omit<RawStore, 'subscribe'> {\n subscribe(listener: (event: Event, state: State, prevState: State) => void): {\n flushEvents(): void;\n };\n}\n\n/**\n * Zustand's store provides a set of built-in functionalities,\n * but it may not meet all our requirements.\n * This function modifies the interface and adds or updates the available methods.\n */\nexport function extend(store: RawStore): Store {\n const extendedSubscribe: (store: RawStore) => Store['subscribe'] =\n (store) => (listener) => {\n const executeListener = (\n events: Event[],\n state: State,\n prevState: State\n ) => {\n for (const ev of events) {\n listener(ev, state, prevState);\n }\n };\n\n /*\n * only known changes will fire event for lib users\n * so all the changes in store won't trigger a user-face event\n */\n store.subscribe((state, prevState) => {\n const eventsLike = getEventsLike(state, prevState);\n const events = tryConsumeEvents(state);\n const allQueuedEvents = [...events, ...eventsLike];\n executeListener(allQueuedEvents, state, prevState);\n });\n\n return {\n /**\n * Manually run pending events.\n * This useful when use `subscribe` method after sometime and when store initialized.\n *\n * Note: Please consider both current and previous state will be same and we don't have access to previous state in a such scenario.\n */\n flushEvents: () => {\n const state = store.getState();\n const events = tryConsumeEvents(state);\n executeListener(events, state, state);\n },\n };\n };\n\n return new Proxy(store, {\n get: function (target, prop, receiver) {\n if (prop === 'subscribe') {\n return extendedSubscribe(target);\n }\n return Reflect.get(target, prop, receiver);\n },\n }) as unknown as Store;\n}\n\n/**\n * Retrieves the ConsumableEvent from the store and returns its values.\n * The values will be consumed by iterating over the field.\n */\nfunction tryConsumeEvents(state: State): Event[] {\n return [...state.providers.events, ...state.namespaces.events];\n}\n\n/**\n * In certain cases, adding events to the store is not possible (e.g., namespace or provider layer).\n * In these cases, we observe store changes and treat specific patterns as events when detected.\n *\n * Note: This approach should be avoided in most cases. It is used here to maintain backward compatibility\n * with the provider's legacy interface.\n */\nfunction getEventsLike(state: State, prevState: State): Event[] {\n const events: Event[] = [];\n\n for (const providerId of Object.keys(state.providers.list)) {\n const currentProviderState = guessProviderStateSelector(state, providerId);\n const previousProviderState = guessProviderStateSelector(\n prevState,\n providerId\n );\n\n if (previousProviderState.connecting !== currentProviderState.connecting) {\n const ev: ProviderConnectingEvent = {\n type: 'provider_connecting',\n provider: providerId,\n value: currentProviderState.connecting,\n };\n events.push(ev);\n }\n\n if (!previousProviderState.connected && currentProviderState.connected) {\n const ev: ProviderConnectedEvent = {\n type: 'provider_connected',\n provider: providerId,\n };\n\n events.push(ev);\n }\n\n if (previousProviderState.connected && !currentProviderState.connected) {\n const ev: ProviderDisconnectedEvent = {\n type: 'provider_disconnected',\n provider: providerId,\n };\n\n events.push(ev);\n }\n }\n\n return events;\n}\n", "/************ Hub ************/\n\nimport type { State } from './mod.js';\nimport type { StateCreator } from 'zustand';\n\ntype HubConfig = object;\n\nexport interface HubStore {\n config: HubConfig;\n}\n\ntype HubStateCreator = StateCreator<State, [], [], HubStore>;\n\nconst hubStore: HubStateCreator = () => ({\n config: {},\n});\n\nexport { hubStore };\n", "/************ Namespace ************/\n\nimport type { StateCreator } from 'zustand';\n\nimport { produce } from 'immer';\n\nimport {\n ConsumableEvents,\n type NamespaceConnectedEvent,\n type NamespaceDisconnectedEvent,\n type NamespaceSwitchedAccountEvent,\n type NamespaceSwitchedNetworkEvent,\n} from './events.js';\nimport { namespaceStateSelector, type State } from './mod.js';\n\n// Currently, namespace doesn't has any config.\nexport type NamespaceConfig = object;\n\nexport interface NamespaceData {\n accounts: null | string[];\n network: null | string;\n connected: boolean;\n connecting: boolean;\n}\n\ninterface NamespaceInfo {\n providerId: string;\n namespaceId: string;\n}\n\ninterface NamespaceItem {\n info: NamespaceInfo;\n data: NamespaceData;\n error: unknown;\n}\n\ntype NamespaceState = {\n events: InstanceType<typeof ConsumableEvents>;\n list: Record<string, NamespaceItem>;\n};\n\ninterface NamespaceActions {\n addNamespace: (id: string, config: NamespaceInfo) => void;\n updateStatus: <K extends keyof NamespaceData>(\n id: string,\n key: K,\n value: NamespaceData[K]\n ) => void;\n\n _produceEventsWhenUpdatingStatus: <K extends keyof NamespaceData>(\n namespace: NamespaceItem,\n id: string,\n key: K,\n value: NamespaceData[K]\n ) => void;\n}\ninterface NamespaceSelectors {\n getNamespaceData(storeId: string): NamespaceData;\n}\n\nexport type NamespaceStore = NamespaceState &\n NamespaceActions &\n NamespaceSelectors;\ntype NamespaceStateCreator = StateCreator<State, [], [], NamespaceStore>;\n\nconst namespacesStore: NamespaceStateCreator = (set, get) => ({\n events: new ConsumableEvents(),\n\n list: {},\n addNamespace: (id, info) => {\n const data: NamespaceData = {\n accounts: null,\n network: null,\n connected: false,\n connecting: false,\n };\n\n const item = {\n data,\n error: '',\n info,\n };\n\n set(\n produce((state: State) => {\n state.namespaces.list[id] = item;\n })\n );\n },\n updateStatus: (id, key, value) => {\n const ns = get().namespaces.list[id];\n if (!ns) {\n throw new Error(`No namespace with '${id}' found.`);\n }\n\n get().namespaces._produceEventsWhenUpdatingStatus(ns, id, key, value);\n\n // Updating state\n set(\n produce((state: State) => {\n state.namespaces.list[id].data[key] = value;\n })\n );\n },\n getNamespaceData(storeId) {\n return namespaceStateSelector(get(), storeId);\n },\n\n _produceEventsWhenUpdatingStatus: (namespace, id, key, value) => {\n if (key === 'accounts') {\n // check for both null and empty array\n const isAccountsEmpty =\n Object.is(value, null) || (Array.isArray(value) && value.length === 0);\n\n if (isAccountsEmpty) {\n const currentConnectedStatus = get().namespaces.list[id].data.connected;\n if (currentConnectedStatus) {\n const event: NamespaceDisconnectedEvent = {\n type: 'namespace_disconnected',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n };\n\n get().namespaces.events.push(event);\n }\n // Skip emitting disconnect event, if the `connected` is false\n } else {\n const currentAccounts = get().namespaces.list[id].data.accounts;\n\n if (!currentAccounts) {\n const event: NamespaceConnectedEvent = {\n type: 'namespace_connected',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n accounts: value as string[],\n };\n\n get().namespaces.events.push(event);\n } else {\n const areSameAccounts =\n currentAccounts.sort().toString() ===\n (value as string[]).sort().toString();\n\n if (!areSameAccounts) {\n const event: NamespaceSwitchedAccountEvent = {\n type: 'namespace_account_switched',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n previousAccounts: currentAccounts,\n accounts: value as string[],\n };\n\n get().namespaces.events.push(event);\n }\n }\n }\n } else if (key === 'network') {\n const currentNetwork = get().namespaces.list[id].data.network;\n\n const event: NamespaceSwitchedNetworkEvent = {\n type: 'namespace_network_switched',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n network: value as string,\n previousNetwork: currentNetwork,\n };\n\n get().namespaces.events.push(event);\n }\n },\n});\n\nexport { namespacesStore };\n", "export type NamespaceDisconnectedEvent = {\n type: 'namespace_disconnected';\n provider: string;\n namespace: string;\n};\n\nexport type NamespaceConnectedEvent = {\n type: 'namespace_connected';\n provider: string;\n namespace: string;\n accounts: string[];\n};\n\nexport type NamespaceSwitchedAccountEvent = {\n type: 'namespace_account_switched';\n provider: string;\n namespace: string;\n accounts: string[];\n previousAccounts: string[];\n};\n\nexport type NamespaceSwitchedNetworkEvent = {\n type: 'namespace_network_switched';\n provider: string;\n namespace: string;\n network: string;\n previousNetwork: string | null;\n};\n\nexport type ProviderDetectedEvent = {\n type: 'provider_detected';\n provider: string;\n};\n\nexport type ProviderConnectingEvent = {\n type: 'provider_connecting';\n provider: string;\n value: boolean;\n};\n\nexport type ProviderConnectedEvent = {\n type: 'provider_connected';\n provider: string;\n};\n\nexport type ProviderDisconnectedEvent = {\n type: 'provider_disconnected';\n provider: string;\n};\n\nexport type Event =\n | NamespaceDisconnectedEvent\n | NamespaceConnectedEvent\n | NamespaceSwitchedAccountEvent\n | NamespaceSwitchedNetworkEvent\n | ProviderDetectedEvent\n | ProviderConnectingEvent\n | ProviderConnectedEvent\n | ProviderDisconnectedEvent;\n\n/**\n *\n * Keeping an array of Event and when iterates over its values, it will be removed (consume) from the array.\n *\n */\nexport class ConsumableEvents {\n #data: Event[] = [];\n\n push(val: Event) {\n this.#data.push(val);\n }\n\n [Symbol.iterator](): Iterator<Event> {\n return {\n next: (): IteratorResult<Event> => {\n if (this.#data.length == 0) {\n return { done: true, value: undefined };\n }\n\n // Typescript can not narrow the type, but we have a runtime check to ensure it will never be an empty list\n const value = this.#data.shift()!;\n return {\n done: false,\n value,\n };\n },\n };\n }\n}\n", "import type { Namespace } from '../../namespaces/common/types.js';\nimport type { State as InternalProviderState } from '../provider/mod.js';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\nimport type { StateCreator } from 'zustand';\n\nimport { produce } from 'immer';\n\nimport { ConsumableEvents, type ProviderDetectedEvent } from './events.js';\nimport { guessProviderStateSelector, type State } from './mod.js';\n\ntype Browsers = 'firefox' | 'chrome' | 'edge' | 'brave' | 'homepage';\ntype Property<N extends string, V> = { name: N; value: V };\n\ntype NamespacesProperty = Property<\n 'namespaces',\n {\n selection: 'single' | 'multiple';\n data: {\n label: string;\n id: string;\n value: Namespace;\n unsupported?: boolean;\n getSupportedChains: (chains: BlockchainMeta[]) => BlockchainMeta[];\n }[];\n }\n>;\ntype DerivationPathProperty = Property<\n 'derivationPath',\n {\n data: {\n id: string;\n label: string;\n namespace: Namespace;\n generateDerivationPath: (index: string) => string;\n }[];\n }\n>;\ntype DetailsProperty = Property<\n 'details',\n {\n mobileWallet?: boolean;\n showOnMobile?: boolean;\n isContractWallet?: boolean;\n }\n>;\ntype SignersProperty = Property<\n 'signers',\n {\n getSigners: () => Promise<SignerFactory>;\n }\n>;\n\nexport type ProviderInfo = {\n name: string;\n icon: string;\n extensions: Partial<Record<Browsers, string>>;\n properties?: Array<\n | NamespacesProperty\n | DerivationPathProperty\n | DetailsProperty\n | SignersProperty\n >;\n};\n\nexport interface ProviderConfig {\n info: ProviderInfo;\n}\n\ninterface ProviderData {\n installed: boolean;\n}\n\ninterface ProviderItem {\n config: ProviderConfig;\n data: ProviderData;\n error: unknown;\n}\n\ntype ProviderState = {\n events: ConsumableEvents;\n list: Record<string, ProviderItem>;\n};\ninterface ProviderActions {\n addProvider: (id: string, config: ProviderConfig) => void;\n removeProvider: (id: string) => void;\n updateStatus: <K extends keyof ProviderData>(\n id: string,\n key: K,\n value: ProviderData[K]\n ) => void;\n\n _produceEventsWhenUpdatingStatus: <K extends keyof ProviderData>(\n provider: ProviderItem,\n id: string,\n key: K,\n value: ProviderData[K]\n ) => void;\n}\n\ninterface ProviderSelectors {\n /**\n * Provider has a limited state to itself, to be compatible with legacy, we try to produce same object as legacy\n * which includes namespace state as well.\n */\n guessNamespacesState: (id: string) => InternalProviderState;\n}\n\nexport type ProviderStore = ProviderState & ProviderActions & ProviderSelectors;\ntype ProvidersStateCreator = StateCreator<State, [], [], ProviderStore>;\n\nconst providersStore: ProvidersStateCreator = (set, get) => ({\n events: new ConsumableEvents(),\n\n list: {},\n addProvider: (id, config) => {\n const item = {\n data: {\n installed: false,\n },\n error: '',\n config,\n };\n\n set(\n produce((state: State) => {\n state.providers.list[id] = item;\n })\n );\n },\n removeProvider: (id) => {\n set(\n produce((state: State) => {\n delete state.providers.list[id];\n })\n );\n },\n updateStatus: (id, key, value) => {\n const provider = get().providers.list[id];\n if (!provider) {\n throw new Error(`No namespace namespace with '${id}' found.`);\n }\n\n get().providers._produceEventsWhenUpdatingStatus(provider, id, key, value);\n\n set(\n produce((state: State) => {\n state.providers.list[id].data[key] = value;\n })\n );\n },\n guessNamespacesState: (providerId: string): InternalProviderState => {\n return guessProviderStateSelector(get(), providerId);\n },\n\n _produceEventsWhenUpdatingStatus: (_provider, id, key, _value) => {\n if (key === 'installed') {\n const event: ProviderDetectedEvent = {\n type: 'provider_detected',\n provider: id,\n };\n\n get().providers.events.push(event);\n }\n },\n});\n\nexport { providersStore };\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["/**\n * Note: Zustand has some difficulty when you are trying to `previous` state on `subscribe`.\n * If these selectors define inside store directly and use `get()` for accessing state, it will get the latest state\n * instead of previous state which desired.\n * So make them a helper will let us to reuse them both in store and outside of store in a `subscribe`.\n */\nimport type { State } from '../mod.js';\nimport type { State as InternalProviderState } from '../provider/mod.js';\n\n/**\n * Legacy provider state includes `connecting` and `connected` values. It hadn't a separation layer for `namespaces`.\n * For compatibility reasons, we should produce these two values somehow.\n *\n * Currently, We return `true` if any of namespaces return true. We are missing failed namespace here.\n * But if we want to solve that, we should migrate our client code to use `namespace` state directly and not from `provider`\n */\nexport function guessProviderStateSelector(\n state: State,\n providerId: string\n): InternalProviderState {\n /*\n * We keep namespaces in a separate branch than providers.\n * We should look at all of them and find all the namespaces that for our current proivder.\n */\n const allNamespaces = state.namespaces.list;\n const currentProviderNamespaces = Object.keys(allNamespaces).filter(\n (key) => allNamespaces[key].info.providerId === providerId\n );\n\n // Returning provider state value directly.\n const installed = !!state.providers.list[providerId]?.data.installed;\n\n /*\n * If any namespaces returns `true`, we consider the whole provider for this field to be `true`.\n * it has a downside regarding errors which explained on top of the function.\n */\n const connected =\n currentProviderNamespaces.length > 0\n ? currentProviderNamespaces.some(\n (key) => allNamespaces[key].data.connected\n )\n : false;\n const connecting =\n currentProviderNamespaces.length > 0\n ? currentProviderNamespaces.some(\n (key) => allNamespaces[key].data.connecting\n )\n : false;\n\n return {\n installed,\n connected,\n connecting,\n };\n}\n\nexport function namespaceStateSelector(state: State, storeId: string) {\n return state.namespaces.list[storeId].data;\n}\n", "import type { StoreApi } from 'zustand/vanilla';\n\nimport { createStore as createZustandStore } from 'zustand/vanilla';\n\nimport { extend, type Store } from './extend.js';\nimport { hubStore, type HubStore } from './hub.js';\nimport { namespacesStore, type NamespaceStore } from './namespaces.js';\nimport { providersStore, type ProviderStore } from './providers.js';\n\n/************ State ************/\n\nexport interface State {\n hub: HubStore;\n providers: ProviderStore;\n namespaces: NamespaceStore;\n}\n\nexport type RawStore = StoreApi<State>;\n\nexport const createStore = (): Store => {\n const store = createZustandStore<State>((...api) => {\n return {\n hub: hubStore(...api),\n providers: providersStore(...api),\n namespaces: namespacesStore(...api),\n };\n });\n\n return extend(store);\n};\n", "import type {\n Event,\n ProviderConnectedEvent,\n ProviderConnectingEvent,\n ProviderDisconnectedEvent,\n} from './events.js';\nimport type { RawStore, State } from './store.js';\n\nimport { guessProviderStateSelector } from './selectors.js';\n\nexport interface Store extends Omit<RawStore, 'subscribe'> {\n subscribe(listener: (event: Event, state: State, prevState: State) => void): {\n flushEvents(): void;\n };\n}\n\n/**\n * Zustand's store provides a set of built-in functionalities,\n * but it may not meet all our requirements.\n * This function modifies the interface and adds or updates the available methods.\n */\nexport function extend(store: RawStore): Store {\n const extendedSubscribe: (store: RawStore) => Store['subscribe'] =\n (store) => (listener) => {\n const executeListener = (\n events: Event[],\n state: State,\n prevState: State\n ) => {\n for (const ev of events) {\n listener(ev, state, prevState);\n }\n };\n\n /*\n * only known changes will fire event for lib users\n * so all the changes in store won't trigger a user-face event\n */\n store.subscribe((state, prevState) => {\n const eventsLike = getEventsLike(state, prevState);\n const events = tryConsumeEvents(state);\n const allQueuedEvents = [...events, ...eventsLike];\n executeListener(allQueuedEvents, state, prevState);\n });\n\n return {\n /**\n * Manually run pending events.\n * This useful when use `subscribe` method after sometime and when store initialized.\n *\n * Note: Please consider both current and previous state will be same and we don't have access to previous state in a such scenario.\n */\n flushEvents: () => {\n const state = store.getState();\n const events = tryConsumeEvents(state);\n executeListener(events, state, state);\n },\n };\n };\n\n return new Proxy(store, {\n get: function (target, prop, receiver) {\n if (prop === 'subscribe') {\n return extendedSubscribe(target);\n }\n return Reflect.get(target, prop, receiver);\n },\n }) as unknown as Store;\n}\n\n/**\n * Retrieves the ConsumableEvent from the store and returns its values.\n * The values will be consumed by iterating over the field.\n */\nfunction tryConsumeEvents(state: State): Event[] {\n return [...state.providers.events, ...state.namespaces.events];\n}\n\n/**\n * In certain cases, adding events to the store is not possible (e.g., namespace or provider layer).\n * In these cases, we observe store changes and treat specific patterns as events when detected.\n *\n * Note: This approach should be avoided in most cases. It is used here to maintain backward compatibility\n * with the provider's legacy interface.\n */\nfunction getEventsLike(state: State, prevState: State): Event[] {\n const events: Event[] = [];\n\n for (const providerId of Object.keys(state.providers.list)) {\n const currentProviderState = guessProviderStateSelector(state, providerId);\n const previousProviderState = guessProviderStateSelector(\n prevState,\n providerId\n );\n\n if (previousProviderState.connecting !== currentProviderState.connecting) {\n const ev: ProviderConnectingEvent = {\n type: 'provider_connecting',\n provider: providerId,\n value: currentProviderState.connecting,\n };\n events.push(ev);\n }\n\n if (!previousProviderState.connected && currentProviderState.connected) {\n const ev: ProviderConnectedEvent = {\n type: 'provider_connected',\n provider: providerId,\n };\n\n events.push(ev);\n }\n\n if (previousProviderState.connected && !currentProviderState.connected) {\n const ev: ProviderDisconnectedEvent = {\n type: 'provider_disconnected',\n provider: providerId,\n };\n\n events.push(ev);\n }\n }\n\n return events;\n}\n", "/************ Hub ************/\n\nimport type { State } from './mod.js';\nimport type { StateCreator } from 'zustand';\n\ntype HubConfig = object;\n\nexport interface HubStore {\n config: HubConfig;\n}\n\ntype HubStateCreator = StateCreator<State, [], [], HubStore>;\n\nconst hubStore: HubStateCreator = () => ({\n config: {},\n});\n\nexport { hubStore };\n", "/************ Namespace ************/\n\nimport type { StateCreator } from 'zustand';\n\nimport { produce } from 'immer';\n\nimport {\n ConsumableEvents,\n type NamespaceConnectedEvent,\n type NamespaceDisconnectedEvent,\n type NamespaceSwitchedAccountEvent,\n type NamespaceSwitchedNetworkEvent,\n} from './events.js';\nimport { namespaceStateSelector, type State } from './mod.js';\n\n// Currently, namespace doesn't has any config.\nexport type NamespaceConfig = object;\n\nexport interface NamespaceData {\n accounts: null | string[];\n network: null | string;\n connected: boolean;\n connecting: boolean;\n}\n\ninterface NamespaceInfo {\n providerId: string;\n namespaceId: string;\n}\n\ninterface NamespaceItem {\n info: NamespaceInfo;\n data: NamespaceData;\n error: unknown;\n}\n\ntype NamespaceState = {\n events: InstanceType<typeof ConsumableEvents>;\n list: Record<string, NamespaceItem>;\n};\n\ninterface NamespaceActions {\n addNamespace: (id: string, config: NamespaceInfo) => void;\n updateStatus: <K extends keyof NamespaceData>(\n id: string,\n key: K,\n value: NamespaceData[K]\n ) => void;\n\n _produceEventsWhenUpdatingStatus: <K extends keyof NamespaceData>(\n namespace: NamespaceItem,\n id: string,\n key: K,\n value: NamespaceData[K]\n ) => void;\n}\ninterface NamespaceSelectors {\n getNamespaceData(storeId: string): NamespaceData;\n}\n\nexport type NamespaceStore = NamespaceState &\n NamespaceActions &\n NamespaceSelectors;\ntype NamespaceStateCreator = StateCreator<State, [], [], NamespaceStore>;\n\nconst namespacesStore: NamespaceStateCreator = (set, get) => ({\n events: new ConsumableEvents(),\n\n list: {},\n addNamespace: (id, info) => {\n const data: NamespaceData = {\n accounts: null,\n network: null,\n connected: false,\n connecting: false,\n };\n\n const item = {\n data,\n error: '',\n info,\n };\n\n set(\n produce((state: State) => {\n state.namespaces.list[id] = item;\n })\n );\n },\n updateStatus: (id, key, value) => {\n const ns = get().namespaces.list[id];\n if (!ns) {\n throw new Error(`No namespace with '${id}' found.`);\n }\n\n get().namespaces._produceEventsWhenUpdatingStatus(ns, id, key, value);\n\n // Updating state\n set(\n produce((state: State) => {\n state.namespaces.list[id].data[key] = value;\n })\n );\n },\n getNamespaceData(storeId) {\n return namespaceStateSelector(get(), storeId);\n },\n\n _produceEventsWhenUpdatingStatus: (namespace, id, key, value) => {\n if (key === 'accounts') {\n // check for both null and empty array\n const isAccountsEmpty =\n Object.is(value, null) || (Array.isArray(value) && value.length === 0);\n\n if (isAccountsEmpty) {\n const currentConnectedStatus = get().namespaces.list[id].data.connected;\n if (currentConnectedStatus) {\n const event: NamespaceDisconnectedEvent = {\n type: 'namespace_disconnected',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n };\n\n get().namespaces.events.push(event);\n }\n // Skip emitting disconnect event, if the `connected` is false\n } else {\n const currentAccounts = get().namespaces.list[id].data.accounts;\n\n if (!currentAccounts) {\n const event: NamespaceConnectedEvent = {\n type: 'namespace_connected',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n accounts: value as string[],\n };\n\n get().namespaces.events.push(event);\n } else {\n const areSameAccounts =\n currentAccounts.sort().toString() ===\n (value as string[]).sort().toString();\n\n if (!areSameAccounts) {\n const event: NamespaceSwitchedAccountEvent = {\n type: 'namespace_account_switched',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n previousAccounts: currentAccounts,\n accounts: value as string[],\n };\n\n get().namespaces.events.push(event);\n }\n }\n }\n } else if (key === 'network') {\n const currentNetwork = get().namespaces.list[id].data.network;\n\n const event: NamespaceSwitchedNetworkEvent = {\n type: 'namespace_network_switched',\n provider: namespace.info.providerId,\n namespace: namespace.info.namespaceId,\n network: value as string,\n previousNetwork: currentNetwork,\n };\n\n get().namespaces.events.push(event);\n }\n },\n});\n\nexport { namespacesStore };\n", "export type NamespaceDisconnectedEvent = {\n type: 'namespace_disconnected';\n provider: string;\n namespace: string;\n};\n\nexport type NamespaceConnectedEvent = {\n type: 'namespace_connected';\n provider: string;\n namespace: string;\n accounts: string[];\n};\n\nexport type NamespaceSwitchedAccountEvent = {\n type: 'namespace_account_switched';\n provider: string;\n namespace: string;\n accounts: string[];\n previousAccounts: string[];\n};\n\nexport type NamespaceSwitchedNetworkEvent = {\n type: 'namespace_network_switched';\n provider: string;\n namespace: string;\n network: string;\n previousNetwork: string | null;\n};\n\nexport type ProviderDetectedEvent = {\n type: 'provider_detected';\n provider: string;\n};\n\nexport type ProviderConnectingEvent = {\n type: 'provider_connecting';\n provider: string;\n value: boolean;\n};\n\nexport type ProviderConnectedEvent = {\n type: 'provider_connected';\n provider: string;\n};\n\nexport type ProviderDisconnectedEvent = {\n type: 'provider_disconnected';\n provider: string;\n};\n\nexport type Event =\n | NamespaceDisconnectedEvent\n | NamespaceConnectedEvent\n | NamespaceSwitchedAccountEvent\n | NamespaceSwitchedNetworkEvent\n | ProviderDetectedEvent\n | ProviderConnectingEvent\n | ProviderConnectedEvent\n | ProviderDisconnectedEvent;\n\n/**\n *\n * Keeping an array of Event and when iterates over its values, it will be removed (consume) from the array.\n *\n */\nexport class ConsumableEvents {\n #data: Event[] = [];\n\n push(val: Event) {\n this.#data.push(val);\n }\n\n [Symbol.iterator](): Iterator<Event> {\n return {\n next: (): IteratorResult<Event> => {\n if (this.#data.length == 0) {\n return { done: true, value: undefined };\n }\n\n // Typescript can not narrow the type, but we have a runtime check to ensure it will never be an empty list\n const value = this.#data.shift()!;\n return {\n done: false,\n value,\n };\n },\n };\n }\n}\n", "import type { Namespace } from '../../namespaces/common/types.js';\nimport type {\n GenerateDeepLink,\n State as InternalProviderState,\n} from '../provider/mod.js';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\nimport type { StateCreator } from 'zustand';\n\nimport { produce } from 'immer';\n\nimport { ConsumableEvents, type ProviderDetectedEvent } from './events.js';\nimport { guessProviderStateSelector, type State } from './mod.js';\n\ntype Browsers = 'firefox' | 'chrome' | 'edge' | 'brave' | 'homepage';\ntype Property<N extends string, V> = { name: N; value: V };\n\ntype NamespacesProperty = Property<\n 'namespaces',\n {\n selection: 'single' | 'multiple';\n data: {\n label: string;\n id: string;\n value: Namespace;\n unsupported?: boolean;\n getSupportedChains: (chains: BlockchainMeta[]) => BlockchainMeta[];\n }[];\n }\n>;\ntype DerivationPathProperty = Property<\n 'derivationPath',\n {\n data: {\n id: string;\n label: string;\n namespace: Namespace;\n generateDerivationPath: (index: string) => string;\n }[];\n }\n>;\ntype DetailsProperty = Property<\n 'details',\n {\n mobileWallet?: boolean;\n showOnMobile?: boolean;\n isContractWallet?: boolean;\n }\n>;\ntype SignersProperty = Property<\n 'signers',\n {\n getSigners: () => Promise<SignerFactory>;\n }\n>;\n\nexport type ProviderMetadata = {\n name: string;\n icon: string;\n extensions: Partial<Record<Browsers, string>>;\n properties?: Array<\n | NamespacesProperty\n | DerivationPathProperty\n | DetailsProperty\n | SignersProperty\n >;\n};\n\nexport interface ProviderConfig {\n metadata: ProviderMetadata;\n deepLink?: GenerateDeepLink;\n}\n\nexport type ProviderInfo = ProviderConfig;\n\ninterface ProviderData {\n installed: boolean;\n}\n\ninterface ProviderItem {\n config: ProviderConfig;\n data: ProviderData;\n error: unknown;\n}\n\ntype ProviderState = {\n events: ConsumableEvents;\n list: Record<string, ProviderItem>;\n};\ninterface ProviderActions {\n addProvider: (id: string, config: ProviderConfig) => void;\n removeProvider: (id: string) => void;\n updateStatus: <K extends keyof ProviderData>(\n id: string,\n key: K,\n value: ProviderData[K]\n ) => void;\n\n _produceEventsWhenUpdatingStatus: <K extends keyof ProviderData>(\n provider: ProviderItem,\n id: string,\n key: K,\n value: ProviderData[K]\n ) => void;\n}\n\ninterface ProviderSelectors {\n /**\n * Provider has a limited state to itself, to be compatible with legacy, we try to produce same object as legacy\n * which includes namespace state as well.\n */\n guessNamespacesState: (id: string) => InternalProviderState;\n}\n\nexport type ProviderStore = ProviderState & ProviderActions & ProviderSelectors;\ntype ProvidersStateCreator = StateCreator<State, [], [], ProviderStore>;\n\nconst providersStore: ProvidersStateCreator = (set, get) => ({\n events: new ConsumableEvents(),\n\n list: {},\n addProvider: (id, config) => {\n const item = {\n data: {\n installed: false,\n },\n error: '',\n config,\n };\n\n set(\n produce((state: State) => {\n state.providers.list[id] = item;\n })\n );\n },\n removeProvider: (id) => {\n set(\n produce((state: State) => {\n delete state.providers.list[id];\n })\n );\n },\n updateStatus: (id, key, value) => {\n const provider = get().providers.list[id];\n if (!provider) {\n throw new Error(`No namespace namespace with '${id}' found.`);\n }\n\n get().providers._produceEventsWhenUpdatingStatus(provider, id, key, value);\n\n set(\n produce((state: State) => {\n state.providers.list[id].data[key] = value;\n })\n );\n },\n guessNamespacesState: (providerId: string): InternalProviderState => {\n return guessProviderStateSelector(get(), providerId);\n },\n\n _produceEventsWhenUpdatingStatus: (_provider, id, key, _value) => {\n if (key === 'installed') {\n const event: ProviderDetectedEvent = {\n type: 'provider_detected',\n provider: id,\n };\n\n get().providers.events.push(event);\n }\n },\n});\n\nexport { providersStore };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["guessProviderStateSelector", "state", "providerId", "allNamespaces", "currentProviderNamespaces", "key", "installed", "connected", "connecting", "__name", "namespaceStateSelector", "storeId", "createZustandStore", "extend", "store", "extendedSubscribe", "__name", "listener", "executeListener", "events", "state", "prevState", "ev", "eventsLike", "getEventsLike", "allQueuedEvents", "tryConsumeEvents", "target", "prop", "receiver", "providerId", "currentProviderState", "guessProviderStateSelector", "previousProviderState", "hubStore", "__name", "produce", "ConsumableEvents", "__name", "#data", "val", "namespacesStore", "__name", "set", "get", "ConsumableEvents", "id", "info", "item", "produce", "state", "key", "value", "ns", "storeId", "namespaceStateSelector", "namespace", "event", "currentAccounts", "currentNetwork", "produce", "providersStore", "__name", "set", "get", "ConsumableEvents", "id", "config", "item", "produce", "state", "key", "value", "provider", "providerId", "guessProviderStateSelector", "_provider", "_value", "event", "createStore", "__name", "store", "createZustandStore", "api", "hubStore", "providersStore", "namespacesStore", "extend"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Namespace } from '../../namespaces/common/types.js';
|
|
2
|
-
import type { State as InternalProviderState } from '../provider/mod.js';
|
|
2
|
+
import type { GenerateDeepLink, State as InternalProviderState } from '../provider/mod.js';
|
|
3
3
|
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
4
4
|
import type { StateCreator } from 'zustand';
|
|
5
5
|
import { ConsumableEvents } from './events.js';
|
|
@@ -35,15 +35,17 @@ type DetailsProperty = Property<'details', {
|
|
|
35
35
|
type SignersProperty = Property<'signers', {
|
|
36
36
|
getSigners: () => Promise<SignerFactory>;
|
|
37
37
|
}>;
|
|
38
|
-
export type
|
|
38
|
+
export type ProviderMetadata = {
|
|
39
39
|
name: string;
|
|
40
40
|
icon: string;
|
|
41
41
|
extensions: Partial<Record<Browsers, string>>;
|
|
42
42
|
properties?: Array<NamespacesProperty | DerivationPathProperty | DetailsProperty | SignersProperty>;
|
|
43
43
|
};
|
|
44
44
|
export interface ProviderConfig {
|
|
45
|
-
|
|
45
|
+
metadata: ProviderMetadata;
|
|
46
|
+
deepLink?: GenerateDeepLink;
|
|
46
47
|
}
|
|
48
|
+
export type ProviderInfo = ProviderConfig;
|
|
47
49
|
interface ProviderData {
|
|
48
50
|
installed: boolean;
|
|
49
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/hub/store/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/hub/store/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,KAAK,EACV,gBAAgB,EAChB,KAAK,IAAI,qBAAqB,EAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,OAAO,EAAE,gBAAgB,EAA8B,MAAM,aAAa,CAAC;AAC3E,OAAO,EAA8B,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAElE,KAAK,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AACrE,KAAK,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE3D,KAAK,kBAAkB,GAAG,QAAQ,CAChC,YAAY,EACZ;IACE,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,SAAS,CAAC;QACjB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,kBAAkB,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,CAAC;KACpE,EAAE,CAAC;CACL,CACF,CAAC;AACF,KAAK,sBAAsB,GAAG,QAAQ,CACpC,gBAAgB,EAChB;IACE,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,SAAS,CAAC;QACrB,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;KACnD,EAAE,CAAC;CACL,CACF,CAAC;AACF,KAAK,eAAe,GAAG,QAAQ,CAC7B,SAAS,EACT;IACE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CACF,CAAC;AACF,KAAK,eAAe,GAAG,QAAQ,CAC7B,SAAS,EACT;IACE,UAAU,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1C,CACF,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,UAAU,CAAC,EAAE,KAAK,CACd,kBAAkB,GAClB,sBAAsB,GACtB,eAAe,GACf,eAAe,CAClB,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC;AAE1C,UAAU,YAAY;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACpC,CAAC;AACF,UAAU,eAAe;IACvB,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1D,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EACzC,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KACnB,IAAI,CAAC;IAEV,gCAAgC,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAC7D,QAAQ,EAAE,YAAY,EACtB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,KACnB,IAAI,CAAC;CACX;AAED,UAAU,iBAAiB;IACzB;;;OAGG;IACH,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,qBAAqB,CAAC;CAC7D;AAED,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAChF,KAAK,qBAAqB,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;AAExE,QAAA,MAAM,cAAc,EAAE,qBAsDpB,CAAC;AAEH,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
package/dist/legacy/mod.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/legacy/types.ts", "../../src/legacy/persistor.ts", "../../src/legacy/helpers.ts", "../../src/legacy/utils.ts", "../../src/legacy/wallet.ts"],
|
|
4
|
-
"sourcesContent": ["import type { State as WalletState } from './wallet.js';\nimport type { Namespace } from '../namespaces/common/mod.js';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nexport enum Networks {\n BTC = 'BTC',\n BSC = 'BSC',\n LTC = 'LTC',\n THORCHAIN = 'THOR',\n BCH = 'BCH',\n BINANCE = 'BNB',\n ETHEREUM = 'ETH',\n POLYGON = 'POLYGON',\n TERRA = 'TERRA',\n POLKADOT = '',\n TRON = 'TRON',\n DOGE = 'DOGE',\n HARMONY = 'HARMONY',\n AVAX_CCHAIN = 'AVAX_CCHAIN',\n FANTOM = 'FANTOM',\n MOONBEAM = 'MOONBEAM',\n ARBITRUM = 'ARBITRUM',\n BOBA = 'BOBA',\n OPTIMISM = 'OPTIMISM',\n FUSE = 'FUSE',\n CRONOS = 'CRONOS',\n SOLANA = 'SOLANA',\n MOONRIVER = 'MOONRIVER',\n GNOSIS = 'GNOSIS',\n COSMOS = 'COSMOS',\n OSMOSIS = 'OSMOSIS',\n AXELAR = 'AXELAR',\n MARS = 'MARS',\n STRIDE = 'STRIDE',\n MAYA = 'MAYA',\n AKASH = 'AKASH',\n IRIS = 'IRIS',\n PERSISTENCE = 'PERSISTENCE',\n SENTINEL = 'SENTINEL',\n REGEN = 'REGEN',\n CRYPTO_ORG = 'CRYPTO_ORG',\n SIF = 'SIF',\n CHIHUAHUA = 'CHIHUAHUA',\n JUNO = 'JUNO',\n KUJIRA = 'KUJIRA',\n STARNAME = 'STARNAME',\n COMDEX = 'COMDEX',\n STARGAZE = 'STARGAZE',\n DESMOS = 'DESMOS',\n BITCANNA = 'BITCANNA',\n SECRET = 'SECRET',\n INJECTIVE = 'INJECTIVE',\n LUMNETWORK = 'LUMNETWORK',\n BANDCHAIN = 'BANDCHAIN',\n EMONEY = 'EMONEY',\n BITSONG = 'BITSONG',\n KI = 'KI',\n MEDIBLOC = 'MEDIBLOC',\n KONSTELLATION = 'KONSTELLATION',\n UMEE = 'UMEE',\n STARKNET = 'STARKNET',\n TON = 'TON',\n BASE = 'BASE',\n SUI = 'SUI',\n // Using instead of null\n Unknown = 'Unkown',\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype InstanceType = any;\n\nexport type NamespaceData = {\n namespace: Namespace;\n derivationPath?: string;\n};\n\nexport type WalletType = string;\nexport type Network = string;\n\nexport type InstallObjects = {\n CHROME?: string;\n FIREFOX?: string;\n EDGE?: string;\n BRAVE?: string;\n DEFAULT: string;\n};\n\nexport type NamespaceMeta = {\n label: string;\n /**\n * By using a matched `blockchain.name` (in meta) and `id`, we show logo in Namespace modal\n * e.g. ETH\n */\n id: string;\n value: Namespace;\n unsupported?: boolean;\n getSupportedChains: (chains: BlockchainMeta[]) => BlockchainMeta[];\n};\n\ninterface NeedsNamespace {\n selection: 'single' | 'multiple';\n data: NamespaceMeta[];\n}\n\ninterface NeedsDerivationPath {\n data: {\n id: string;\n label: string;\n namespace: Namespace;\n generateDerivationPath: (index: string) => string;\n }[];\n}\n\nexport type WalletInfo = {\n name: string;\n img: string;\n installLink: InstallObjects | string;\n /**\n * @deprecated we don't use this value anymore.\n */\n color: string;\n supportedChains: BlockchainMeta[];\n showOnMobile?: boolean;\n isContractWallet?: boolean;\n mobileWallet?: boolean;\n\n needsDerivationPath?: NeedsDerivationPath;\n needsNamespace?: NeedsNamespace;\n};\n\nexport type State = {\n [key: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: InstanceType;\n};\n\nexport type Providers = { [type in WalletType]?: InstanceType };\nexport type NetworkProviderMap = Map<Networks, unknown>;\n\nexport enum Events {\n CONNECTED = 'connected',\n CONNECTING = 'connecting',\n REACHABLE = 'reachable',\n INSTALLED = 'installed',\n ACCOUNTS = 'accounts',\n NETWORK = 'network',\n // Hub only events\n NAMESPACE_DISCONNECTED = 'namespace_disconnected',\n\n PROVIDER_DISCONNECTED = 'provider_disconnected',\n}\n\nexport type ProviderConnectResult = {\n accounts: string[];\n chainId: string;\n derivationPath?: string;\n};\n\nexport type GetInstanceOptions = {\n network?: Network;\n currentProvider: InstanceType;\n meta: BlockchainMeta[];\n getState: () => WalletState;\n /**\n * We always get the instance once and reuse it whenever we needs. By using this option\n * We can force the library to get a new instance and replace it with the old one.\n *\n * Originally, we used this option for wallet connect 1 and its switching network challenge.\n */\n force?: boolean;\n updateChainId: (chainId: number | string) => void;\n};\n\nexport type GetInstance =\n | (() => InstanceType)\n | ((options: GetInstanceOptions) => Promise<InstanceType>);\n\nexport type TryGetInstance =\n | (() => InstanceType)\n | ((\n options: Pick<GetInstanceOptions, 'force' | 'network'>\n ) => Promise<InstanceType>);\n\nexport type Connect = (options: {\n instance: InstanceType;\n network?: Network;\n meta: BlockchainMeta[];\n namespaces?: NamespaceData[];\n}) => Promise<ProviderConnectResult | ProviderConnectResult[]>;\n\nexport type Disconnect = (options: {\n instance: InstanceType;\n destroyInstance: () => void;\n}) => Promise<void>;\n\ntype CleanupSubscribe = () => void;\n\nexport type Subscribe = (options: {\n instance: InstanceType;\n state: WalletState;\n meta: BlockchainMeta[];\n updateChainId: (chainId: string) => void;\n updateAccounts: (accounts: string[], chainId?: string) => void;\n connect: (network?: Network) => void;\n disconnect: () => void;\n}) => CleanupSubscribe | void;\n\nexport type SwitchNetwork = (options: {\n instance: InstanceType;\n network: Network;\n meta: BlockchainMeta[];\n newInstance?: TryGetInstance;\n getState?: () => WalletState;\n updateChainId: (chainId: string) => void;\n}) => Promise<void>;\n\nexport type Suggest = (options: {\n instance: InstanceType;\n network: Network;\n meta: BlockchainMeta[];\n}) => Promise<void>;\n\nexport type CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n provider: InstanceType;\n}) => boolean;\n\nexport type CanEagerConnect = (options: {\n instance: InstanceType;\n meta: BlockchainMeta[];\n}) => Promise<boolean>;\n\nexport type EagerConnectResult<I = unknown> = {\n accounts: string[] | null;\n network: string | null;\n provider: I | null;\n};\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: InstanceType;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n suggest?: Suggest;\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: InstanceType) => Promise<SignerFactory>;\n canSwitchNetworkTo?: CanSwitchNetwork;\n canEagerConnect?: CanEagerConnect;\n getWalletInfo(allBlockChains: BlockchainMeta[]): WalletInfo;\n}\n\nexport interface WalletConfig {\n type: WalletType;\n defaultNetwork?: Network;\n checkInstallation?: boolean;\n isAsyncInstance?: boolean;\n isAsyncSwitchNetwork?: boolean;\n}\n\nexport type WalletProviders = Map<\n WalletType,\n {\n actions: WalletActions;\n config: WalletConfig;\n }\n>;\n\nexport type ProviderInterface = { config: WalletConfig } & WalletActions;\n\n// it comes from wallets.ts and `connect`\ntype NetworkTypeFromLegacyConnect = Network | undefined;\n\nexport type NamespaceInputForConnect<T extends Namespace = Namespace> = {\n /**\n * By default, you should specify namespace (e.g. evm).\n */\n namespace: T;\n /**\n * In some cases, we need to connect a specific network on a namespace. e.g. Polygon on EVM.\n */\n network: NetworkTypeFromLegacyConnect;\n derivationPath?: string;\n};\n", "export interface PersistStorage<T> {\n getItem: (name: string) => T | null;\n setItem: (name: string, value: T) => void;\n removeItem: (name: string) => void;\n}\n\nexport class Persistor<T> implements PersistStorage<T> {\n getItem(name: string) {\n const item = localStorage.getItem(name);\n const parsedItem = item ? (JSON.parse(item) as T) : null;\n return parsedItem;\n }\n setItem(name: string, value: T) {\n localStorage.setItem(name, JSON.stringify(value));\n }\n removeItem(name: string) {\n localStorage.removeItem(name);\n }\n}\n", "import type { Network } from './types.js';\nimport type { Options } from './wallet.js';\nimport type { BlockchainMeta } from 'rango-types';\n\nimport { Networks } from './types.js';\n\nexport function formatAddressWithNetwork(\n address: string,\n network?: Network | null\n) {\n return `${network || ''}:${address}`;\n}\n\nexport function accountAddressesWithNetwork(\n addresses: string[] | null,\n network?: Network | null\n) {\n if (!addresses) {\n return [];\n }\n\n return addresses.map((address) => {\n return formatAddressWithNetwork(address, network);\n });\n}\n\nexport function readAccountAddress(addressWithNetwork: string): {\n address: string;\n network: Network;\n} {\n const [network, address] = addressWithNetwork.split(':');\n\n return {\n network,\n address,\n };\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\nexport const getBlockChainNameFromId = (\n chainId: string | number,\n blockchains: BlockchainMeta[]\n): Network | null => {\n chainId =\n typeof chainId === 'string' && chainId.startsWith('0x')\n ? parseInt(chainId)\n : chainId;\n\n /*\n * Sometimes providers are passing `Network` as chainId.\n * If chainId is a `Network`, we return itself.\n */\n const allNetworks = Object.values(Networks);\n if (allNetworks.includes(String(chainId) as Networks)) {\n return chainId as Networks;\n }\n\n if (chainId === 'Binance-Chain-Tigris') {\n return Networks.BINANCE;\n }\n return (\n blockchains\n .filter((blockchainMeta) => !!blockchainMeta.chainId)\n .find((blockchainMeta) => {\n const blockchainChainId = blockchainMeta.chainId?.startsWith('0x')\n ? parseInt(blockchainMeta.chainId)\n : blockchainMeta.chainId;\n return blockchainChainId == chainId;\n })?.name || null\n );\n};\n", "import type { NamespaceInputForConnect } from './types.js';\n\nexport async function eagerConnectHandler<R = unknown>(params: {\n canEagerConnect: () => Promise<boolean>;\n connectHandler: () => Promise<R>;\n providerName: string;\n}) {\n // Check if we can eagerly connect to the wallet\n if (await params.canEagerConnect()) {\n // Connect to wallet as usual\n return await params.connectHandler();\n }\n throw new Error(`can't restore connection for ${params.providerName}.`);\n}\n\nexport function isEvmNamespace(\n namespace: NamespaceInputForConnect\n): namespace is NamespaceInputForConnect<'EVM'> {\n return namespace.namespace === 'EVM';\n}\n", "import type {\n EagerConnectResult,\n GetInstanceOptions,\n NamespaceData,\n Network,\n WalletActions,\n WalletConfig,\n WalletType,\n} from './types.js';\nimport type { Namespace } from '../namespaces/common/types.js';\nimport type { BlockchainMeta } from 'rango-types';\n\nimport {\n accountAddressesWithNetwork,\n getBlockChainNameFromId,\n needsCheckInstallation,\n} from './helpers.js';\nimport { Events, Networks } from './types.js';\nimport { eagerConnectHandler } from './utils.js';\n\nexport type EventHandler = (\n type: WalletType,\n event: Events,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any,\n coreState: State,\n info: EventInfo\n) => void;\n\nexport type EventInfo = {\n supportedBlockchains: BlockchainMeta[];\n isContractWallet: boolean;\n\n // Hub fields\n isHub: boolean;\n // will be set alongside ACCOUNT event\n namespace?: Namespace;\n derivationPath?: string;\n};\n\nexport interface State {\n connected: boolean;\n connecting: boolean;\n /**\n * @depreacted it always returns `false`. don't use it.\n */\n reachable: boolean;\n installed: boolean;\n accounts: string[] | null;\n network: Network | null;\n derivationPath?: string;\n}\n\nexport interface Options {\n config: WalletConfig;\n handler: EventHandler;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nclass Wallet<InstanceType = any> {\n public provider: InstanceType | null;\n private actions: WalletActions;\n private state: State;\n private options: Options;\n private info: EventInfo;\n private cleanupSubscribe?: (() => void) | void;\n\n constructor(options: Options, actions: WalletActions) {\n this.actions = actions;\n this.options = options;\n this.provider = null;\n this.info = {\n supportedBlockchains: [],\n isContractWallet: false,\n isHub: false,\n };\n this.state = {\n connected: false,\n connecting: false,\n // TODO: Remove\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n };\n\n if (!needsCheckInstallation(options)) {\n this.setInstalledAs(true);\n }\n }\n\n async suggestAndConnect(network: Network) {\n if (this.actions.suggest) {\n await this.actions.suggest({\n instance: this.provider,\n meta: this.info.supportedBlockchains,\n network,\n });\n }\n return await this.connect(network);\n }\n\n async connect(network?: Network, namespaces?: NamespaceData[]) {\n // If it's connecting, nothing do.\n if (this.state.connecting) {\n throw new Error('Connecting...');\n }\n\n const connectionFromState = await this.getConnectionFromState();\n const currentNetwork = this.state.network;\n /*\n * If a network hasn't been provided and also we have `lastNetwork`\n * We will use lastNetwork to make sure we will not\n * Ask the user to switch his network wrongly.\n */\n const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (connectionFromState) {\n const networkChanged =\n currentNetwork !== requestedNetwork && !!requestedNetwork;\n\n // Reuse current connection if nothing has changed and we already have the connection in memory.\n if (currentNetwork === requestedNetwork) {\n return connectionFromState;\n }\n\n let canSwitch = true;\n if (this.actions.canSwitchNetworkTo) {\n canSwitch = this.actions.canSwitchNetworkTo({\n provider: this.provider,\n meta: this.info.supportedBlockchains,\n network: requestedNetwork || '',\n });\n }\n\n if (networkChanged && canSwitch && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.info.supportedBlockchains,\n // TODO: Fix type error\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n getState: this.getState.bind(this),\n updateChainId: this.updateChainId.bind(this),\n });\n\n /*\n * We assume if we reach here (`switchNetwork` not throwing error), Switch successfully has been done.\n * But for providers with async switch network like wallet-connect, we need to wait for chain change\n * event before changing network.\n */\n if (\n requestedNetwork !== this.state.network &&\n !this.options.config.isAsyncSwitchNetwork\n ) {\n this.updateState({\n network,\n });\n }\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: connectionFromState.accounts,\n network: requestedNetwork,\n provider: this.provider,\n };\n }\n\n // If none of the above conditions didn't match, continute to connect.\n }\n\n // We are connecting to wallet for the first time\n\n // Trying to get wallet's instance, if it's not available, raise an error.\n const instance = await this.tryGetInstance({ network });\n\n // Instance exists, trying to connect\n this.updateState({\n connecting: true,\n });\n this.setInstalledAs(true);\n\n try {\n // eslint-disable-next-line no-var\n var connectResult = await this.actions.connect({\n instance,\n network: requestedNetwork || undefined,\n meta: this.info.supportedBlockchains || [],\n namespaces,\n });\n } catch (e) {\n this.resetState();\n throw e;\n }\n\n this.updateState({\n connected: true,\n reachable: true,\n connecting: false,\n });\n\n // TODO: Handle accounts.length > 0\n\n // Inserting accounts into our state.\n let nextAccounts: string[] = [];\n let nextNetwork: Network | null | undefined = null;\n let nextDerivationPath: string | undefined = undefined;\n if (Array.isArray(connectResult)) {\n let activeEvmNetwork: Network | null = null;\n const accounts = connectResult.flatMap((blockchain) => {\n const chainId = blockchain.chainId || Networks.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.info.supportedBlockchains) ||\n Networks.Unknown;\n nextDerivationPath = blockchain.derivationPath\n ? blockchain.derivationPath\n : nextDerivationPath;\n\n /*\n * When connecting to an evm instance, it will return address and wallet's active chain.\n * On switch network we are comparing state's network and what passed as requestedNetwork.\n * This code is for making sure we are setting correct active chain in state if it's evm.\n */\n if (!activeEvmNetwork && network !== Networks.Unknown) {\n const blockchainMeta = this.info.supportedBlockchains.find(\n (blockchain) => blockchain.name === network\n );\n if (blockchainMeta?.info?.infoType === 'EvmMetaInfo') {\n activeEvmNetwork = network;\n }\n }\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(blockchain.accounts, network);\n });\n nextAccounts = accounts.filter(Boolean);\n nextNetwork =\n activeEvmNetwork ||\n requestedNetwork ||\n this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Networks.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.info.supportedBlockchains) ||\n Networks.Unknown;\n const derivationPath = connectResult.derivationPath;\n\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network\n );\n nextNetwork = network;\n nextDerivationPath = derivationPath;\n }\n\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n network: nextNetwork,\n derivationPath: nextDerivationPath,\n });\n }\n\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n async disconnect() {\n this.resetState();\n\n if (this.actions.disconnect) {\n void this.actions.disconnect({\n instance: this.provider,\n // On wallet connect, we need to destory the instance and get a whole new instance when we are going to connect\n destroyInstance: () => {\n this.setProvider(null);\n },\n });\n }\n }\n\n // This method is only used for auto connection\n async eagerConnect(): Promise<EagerConnectResult<InstanceType>> {\n const instance = await this.tryGetInstance({ network: undefined });\n const { canEagerConnect } = this.actions;\n const providerName = this.options.config.type;\n\n return await eagerConnectHandler({\n canEagerConnect: async () => {\n if (!canEagerConnect) {\n throw new Error(\n `${providerName} provider hasn't implemented canEagerConnect.`\n );\n }\n\n return await canEagerConnect({\n instance: instance,\n meta: this.info.supportedBlockchains,\n });\n },\n connectHandler: async () => {\n const result = await this.connect();\n return result;\n },\n providerName,\n });\n }\n\n async getSigners(provider: InstanceType) {\n return await this.actions.getSigners(provider);\n }\n getWalletInfo(allBlockChains: BlockchainMeta[]) {\n return this.actions.getWalletInfo(allBlockChains);\n }\n canSwitchNetworkTo(network: Network, provider: InstanceType) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) {\n return false;\n }\n\n return switchTo({\n network,\n meta: this.info.supportedBlockchains,\n provider,\n });\n }\n\n onInit() {\n // some times functions can be overridden by wallets. see rf-2119\n if (!this.actions.getInstance) {\n throw new Error(\n `Provider hasn't defined how to get wallet's instance. provider: ${this.options.config.type} on: onInit`\n );\n }\n\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n } else if (needsCheckInstallation(this.options)) {\n this.actions.getInstance().then((data: unknown) => {\n if (data) {\n this.setInstalledAs(true);\n }\n });\n }\n }\n\n setProvider(value: InstanceType | null) {\n this.provider = value;\n if (!!value && !!this.actions.subscribe) {\n const cleanup = this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.info.supportedBlockchains,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(\n chainId,\n this.info.supportedBlockchains\n ) || Networks.Unknown;\n }\n\n const nextAccounts = accountAddressesWithNetwork(accounts, network);\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n });\n }\n },\n updateChainId: this.updateChainId.bind(this),\n });\n this.cleanupSubscribe = cleanup;\n } else if (!value && this.cleanupSubscribe) {\n this.cleanupSubscribe();\n }\n }\n\n setInfo(info: Partial<EventInfo>) {\n if (typeof info.supportedBlockchains !== 'undefined') {\n this.info.supportedBlockchains = info.supportedBlockchains;\n }\n if (typeof info.isContractWallet !== 'undefined') {\n this.info.isContractWallet = info.isContractWallet;\n }\n }\n\n setHandler(handler: EventHandler) {\n this.options.handler = handler;\n }\n\n getState(): State {\n return this.state;\n }\n\n updateState(states: Partial<State>) {\n /*\n * We will notify handler after updating all the states.\n * Because when we call `handler` it will has latest states.\n */\n const updates: [Events, unknown][] = [];\n\n if (typeof states.connected !== 'undefined') {\n this.state.connected = states.connected;\n updates.push([Events.CONNECTED, states.connected]);\n }\n if (typeof states.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n this.state.derivationPath = states.derivationPath;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n const eventInfo: EventInfo = {\n supportedBlockchains: this.info.supportedBlockchains,\n isContractWallet: this.info.isContractWallet,\n isHub: false,\n };\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n eventInfo\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private async getConnectionFromState() {\n // Already connected, so we return provider that we have in memory.\n\n /*\n * For switching network on Trust Wallet (WalletConnect),\n * We only kill the session (and not restting the whole state)\n * So we are relying on this.provider for achieving this functionality.\n */\n if (this.state.connected && !!this.provider) {\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n return null;\n }\n\n private updateChainId(chainId: string | number) {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.info.supportedBlockchains)\n : Networks.Unknown;\n\n this.updateState({\n network,\n });\n }\n\n private setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) {\n return;\n }\n\n this.updateState({\n installed: value,\n });\n }\n // eslint-disable-next-line destructuring/in-methods-params\n private async tryGetInstance({\n network,\n force,\n }: {\n network?: Network;\n force?: boolean;\n }) {\n let instance = null;\n /*\n * For switching network on Trust Wallet (WalletConnect),\n * We only kill the session (and not restting the whole state)\n * So we are relying on this.provider for achieving this functionality.\n */\n this.setProvider(null);\n if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.info.supportedBlockchains,\n force: force || false,\n updateChainId: this.updateChainId.bind(this),\n getState: this.getState.bind(this),\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n"],
|
|
5
|
-
"mappings": "+
|
|
4
|
+
"sourcesContent": ["import type { State as WalletState } from './wallet.js';\nimport type { GenerateDeepLink } from '../mod.js';\nimport type { Namespace } from '../namespaces/common/mod.js';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nexport enum Networks {\n BTC = 'BTC',\n BSC = 'BSC',\n LTC = 'LTC',\n THORCHAIN = 'THOR',\n BCH = 'BCH',\n BINANCE = 'BNB',\n ETHEREUM = 'ETH',\n POLYGON = 'POLYGON',\n TERRA = 'TERRA',\n POLKADOT = '',\n TRON = 'TRON',\n DOGE = 'DOGE',\n HARMONY = 'HARMONY',\n AVAX_CCHAIN = 'AVAX_CCHAIN',\n FANTOM = 'FANTOM',\n MOONBEAM = 'MOONBEAM',\n ARBITRUM = 'ARBITRUM',\n BOBA = 'BOBA',\n OPTIMISM = 'OPTIMISM',\n FUSE = 'FUSE',\n CRONOS = 'CRONOS',\n SOLANA = 'SOLANA',\n MOONRIVER = 'MOONRIVER',\n GNOSIS = 'GNOSIS',\n COSMOS = 'COSMOS',\n OSMOSIS = 'OSMOSIS',\n AXELAR = 'AXELAR',\n MARS = 'MARS',\n STRIDE = 'STRIDE',\n MAYA = 'MAYA',\n AKASH = 'AKASH',\n IRIS = 'IRIS',\n PERSISTENCE = 'PERSISTENCE',\n SENTINEL = 'SENTINEL',\n REGEN = 'REGEN',\n CRYPTO_ORG = 'CRYPTO_ORG',\n SIF = 'SIF',\n CHIHUAHUA = 'CHIHUAHUA',\n JUNO = 'JUNO',\n KUJIRA = 'KUJIRA',\n STARNAME = 'STARNAME',\n COMDEX = 'COMDEX',\n STARGAZE = 'STARGAZE',\n DESMOS = 'DESMOS',\n BITCANNA = 'BITCANNA',\n SECRET = 'SECRET',\n INJECTIVE = 'INJECTIVE',\n LUMNETWORK = 'LUMNETWORK',\n BANDCHAIN = 'BANDCHAIN',\n EMONEY = 'EMONEY',\n BITSONG = 'BITSONG',\n KI = 'KI',\n MEDIBLOC = 'MEDIBLOC',\n KONSTELLATION = 'KONSTELLATION',\n UMEE = 'UMEE',\n STARKNET = 'STARKNET',\n TON = 'TON',\n BASE = 'BASE',\n SUI = 'SUI',\n // Using instead of null\n Unknown = 'Unkown',\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype InstanceType = any;\n\nexport type NamespaceData = {\n namespace: Namespace;\n derivationPath?: string;\n};\n\nexport type WalletType = string;\nexport type Network = string;\n\nexport type InstallObjects = {\n CHROME?: string;\n FIREFOX?: string;\n EDGE?: string;\n BRAVE?: string;\n DEFAULT: string;\n};\n\nexport type NamespaceMeta = {\n label: string;\n /**\n * By using a matched `blockchain.name` (in meta) and `id`, we show logo in Namespace modal\n * e.g. ETH\n */\n id: string;\n value: Namespace;\n unsupported?: boolean;\n getSupportedChains: (chains: BlockchainMeta[]) => BlockchainMeta[];\n};\n\ninterface NeedsNamespace {\n selection: 'single' | 'multiple';\n data: NamespaceMeta[];\n}\n\ninterface NeedsDerivationPath {\n data: {\n id: string;\n label: string;\n namespace: Namespace;\n generateDerivationPath: (index: string) => string;\n }[];\n}\n\nexport type WalletInfo = {\n name: string;\n img: string;\n installLink: InstallObjects | string;\n /**\n * @deprecated we don't use this value anymore.\n */\n color: string;\n supportedChains: BlockchainMeta[];\n showOnMobile?: boolean;\n isContractWallet?: boolean;\n mobileWallet?: boolean;\n generateDeepLink?: GenerateDeepLink;\n needsDerivationPath?: NeedsDerivationPath;\n needsNamespace?: NeedsNamespace;\n};\n\nexport type State = {\n [key: string]: WalletState | undefined;\n};\n\nexport type ConnectResult = {\n accounts: string[] | null;\n network: Network | null;\n provider: InstanceType;\n};\n\nexport type Providers = { [type in WalletType]?: InstanceType };\nexport type NetworkProviderMap = Map<Networks, unknown>;\n\nexport enum Events {\n CONNECTED = 'connected',\n CONNECTING = 'connecting',\n REACHABLE = 'reachable',\n INSTALLED = 'installed',\n ACCOUNTS = 'accounts',\n NETWORK = 'network',\n // Hub only events\n NAMESPACE_DISCONNECTED = 'namespace_disconnected',\n\n PROVIDER_DISCONNECTED = 'provider_disconnected',\n}\n\nexport type ProviderConnectResult = {\n accounts: string[];\n chainId: string;\n derivationPath?: string;\n};\n\nexport type GetInstanceOptions = {\n network?: Network;\n currentProvider: InstanceType;\n meta: BlockchainMeta[];\n getState: () => WalletState;\n /**\n * We always get the instance once and reuse it whenever we needs. By using this option\n * We can force the library to get a new instance and replace it with the old one.\n *\n * Originally, we used this option for wallet connect 1 and its switching network challenge.\n */\n force?: boolean;\n updateChainId: (chainId: number | string) => void;\n};\n\nexport type GetInstance =\n | (() => InstanceType)\n | ((options: GetInstanceOptions) => Promise<InstanceType>);\n\nexport type TryGetInstance =\n | (() => InstanceType)\n | ((\n options: Pick<GetInstanceOptions, 'force' | 'network'>\n ) => Promise<InstanceType>);\n\nexport type Connect = (options: {\n instance: InstanceType;\n network?: Network;\n meta: BlockchainMeta[];\n namespaces?: NamespaceData[];\n}) => Promise<ProviderConnectResult | ProviderConnectResult[]>;\n\nexport type Disconnect = (options: {\n instance: InstanceType;\n destroyInstance: () => void;\n}) => Promise<void>;\n\ntype CleanupSubscribe = () => void;\n\nexport type Subscribe = (options: {\n instance: InstanceType;\n state: WalletState;\n meta: BlockchainMeta[];\n updateChainId: (chainId: string) => void;\n updateAccounts: (accounts: string[], chainId?: string) => void;\n connect: (network?: Network) => void;\n disconnect: () => void;\n}) => CleanupSubscribe | void;\n\nexport type SwitchNetwork = (options: {\n instance: InstanceType;\n network: Network;\n meta: BlockchainMeta[];\n newInstance?: TryGetInstance;\n getState?: () => WalletState;\n updateChainId: (chainId: string) => void;\n}) => Promise<void>;\n\nexport type Suggest = (options: {\n instance: InstanceType;\n network: Network;\n meta: BlockchainMeta[];\n}) => Promise<void>;\n\nexport type CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n provider: InstanceType;\n}) => boolean;\n\nexport type CanEagerConnect = (options: {\n instance: InstanceType;\n meta: BlockchainMeta[];\n}) => Promise<boolean>;\n\nexport type EagerConnectResult<I = unknown> = {\n accounts: string[] | null;\n network: string | null;\n provider: I | null;\n};\n\nexport interface WalletActions {\n connect: Connect;\n getInstance: InstanceType;\n disconnect?: Disconnect;\n subscribe?: Subscribe;\n // unsubscribe, // coupled to subscribe.\n\n // Optional, but should be provided at the same time.\n suggest?: Suggest;\n switchNetwork?: SwitchNetwork;\n getSigners: (provider: InstanceType) => Promise<SignerFactory>;\n canSwitchNetworkTo?: CanSwitchNetwork;\n canEagerConnect?: CanEagerConnect;\n getWalletInfo(allBlockChains: BlockchainMeta[]): WalletInfo;\n}\n\nexport interface WalletConfig {\n type: WalletType;\n defaultNetwork?: Network;\n checkInstallation?: boolean;\n isAsyncInstance?: boolean;\n isAsyncSwitchNetwork?: boolean;\n}\n\nexport type WalletProviders = Map<\n WalletType,\n {\n actions: WalletActions;\n config: WalletConfig;\n }\n>;\n\nexport type ProviderInterface = { config: WalletConfig } & WalletActions;\n\n// it comes from wallets.ts and `connect`\ntype NetworkTypeFromLegacyConnect = Network | undefined;\n\nexport type NamespaceInputForConnect<T extends Namespace = Namespace> = {\n /**\n * By default, you should specify namespace (e.g. evm).\n */\n namespace: T;\n /**\n * In some cases, we need to connect a specific network on a namespace. e.g. Polygon on EVM.\n */\n network: NetworkTypeFromLegacyConnect;\n derivationPath?: string;\n};\n", "export interface PersistStorage<T> {\n getItem: (name: string) => T | null;\n setItem: (name: string, value: T) => void;\n removeItem: (name: string) => void;\n}\n\nexport class Persistor<T> implements PersistStorage<T> {\n getItem(name: string) {\n const item = localStorage.getItem(name);\n const parsedItem = item ? (JSON.parse(item) as T) : null;\n return parsedItem;\n }\n setItem(name: string, value: T) {\n localStorage.setItem(name, JSON.stringify(value));\n }\n removeItem(name: string) {\n localStorage.removeItem(name);\n }\n}\n", "import type { Network } from './types.js';\nimport type { Options } from './wallet.js';\nimport type { BlockchainMeta } from 'rango-types';\n\nimport { Networks } from './types.js';\n\nexport function formatAddressWithNetwork(\n address: string,\n network?: Network | null\n) {\n return `${network || ''}:${address}`;\n}\n\nexport function accountAddressesWithNetwork(\n addresses: string[] | null,\n network?: Network | null\n) {\n if (!addresses) {\n return [];\n }\n\n return addresses.map((address) => {\n return formatAddressWithNetwork(address, network);\n });\n}\n\nexport function readAccountAddress(addressWithNetwork: string): {\n address: string;\n network: Network;\n} {\n const [network, address] = addressWithNetwork.split(':');\n\n return {\n network,\n address,\n };\n}\n\nexport function needsCheckInstallation(options: Options) {\n const { checkInstallation = true } = options.config;\n return checkInstallation;\n}\n\nexport const getBlockChainNameFromId = (\n chainId: string | number,\n blockchains: BlockchainMeta[]\n): Network | null => {\n chainId =\n typeof chainId === 'string' && chainId.startsWith('0x')\n ? parseInt(chainId)\n : chainId;\n\n /*\n * Sometimes providers are passing `Network` as chainId.\n * If chainId is a `Network`, we return itself.\n */\n const allNetworks = Object.values(Networks);\n if (allNetworks.includes(String(chainId) as Networks)) {\n return chainId as Networks;\n }\n\n if (chainId === 'Binance-Chain-Tigris') {\n return Networks.BINANCE;\n }\n return (\n blockchains\n .filter((blockchainMeta) => !!blockchainMeta.chainId)\n .find((blockchainMeta) => {\n const blockchainChainId = blockchainMeta.chainId?.startsWith('0x')\n ? parseInt(blockchainMeta.chainId)\n : blockchainMeta.chainId;\n return blockchainChainId == chainId;\n })?.name || null\n );\n};\n", "import type { NamespaceInputForConnect } from './types.js';\n\nexport async function eagerConnectHandler<R = unknown>(params: {\n canEagerConnect: () => Promise<boolean>;\n connectHandler: () => Promise<R>;\n providerName: string;\n}) {\n // Check if we can eagerly connect to the wallet\n if (await params.canEagerConnect()) {\n // Connect to wallet as usual\n return await params.connectHandler();\n }\n throw new Error(`can't restore connection for ${params.providerName}.`);\n}\n\nexport function isEvmNamespace(\n namespace: NamespaceInputForConnect\n): namespace is NamespaceInputForConnect<'EVM'> {\n return namespace.namespace === 'EVM';\n}\n", "import type {\n EagerConnectResult,\n GetInstanceOptions,\n NamespaceData,\n Network,\n WalletActions,\n WalletConfig,\n WalletType,\n} from './types.js';\nimport type { Namespace } from '../namespaces/common/types.js';\nimport type { BlockchainMeta } from 'rango-types';\n\nimport {\n accountAddressesWithNetwork,\n getBlockChainNameFromId,\n needsCheckInstallation,\n} from './helpers.js';\nimport { Events, Networks } from './types.js';\nimport { eagerConnectHandler } from './utils.js';\n\nexport type EventHandler = (\n type: WalletType,\n event: Events,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any,\n coreState: State,\n info: EventInfo\n) => void;\n\nexport type EventInfo = {\n supportedBlockchains: BlockchainMeta[];\n isContractWallet: boolean;\n\n // Hub fields\n isHub: boolean;\n // will be set alongside ACCOUNT event\n namespace?: Namespace;\n derivationPath?: string;\n};\n\nexport interface State {\n connected: boolean;\n connecting: boolean;\n /**\n * @depreacted it always returns `false`. don't use it.\n */\n reachable: boolean;\n installed: boolean;\n accounts: string[] | null;\n network: Network | null;\n derivationPath?: string;\n}\n\nexport interface Options {\n config: WalletConfig;\n handler: EventHandler;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nclass Wallet<InstanceType = any> {\n public provider: InstanceType | null;\n private actions: WalletActions;\n private state: State;\n private options: Options;\n private info: EventInfo;\n private cleanupSubscribe?: (() => void) | void;\n\n constructor(options: Options, actions: WalletActions) {\n this.actions = actions;\n this.options = options;\n this.provider = null;\n this.info = {\n supportedBlockchains: [],\n isContractWallet: false,\n isHub: false,\n };\n this.state = {\n connected: false,\n connecting: false,\n // TODO: Remove\n reachable: false,\n installed: false,\n accounts: null,\n network: null,\n };\n\n if (!needsCheckInstallation(options)) {\n this.setInstalledAs(true);\n }\n }\n\n async suggestAndConnect(network: Network) {\n if (this.actions.suggest) {\n await this.actions.suggest({\n instance: this.provider,\n meta: this.info.supportedBlockchains,\n network,\n });\n }\n return await this.connect(network);\n }\n\n async connect(network?: Network, namespaces?: NamespaceData[]) {\n // If it's connecting, nothing do.\n if (this.state.connecting) {\n throw new Error('Connecting...');\n }\n\n const connectionFromState = await this.getConnectionFromState();\n const currentNetwork = this.state.network;\n /*\n * If a network hasn't been provided and also we have `lastNetwork`\n * We will use lastNetwork to make sure we will not\n * Ask the user to switch his network wrongly.\n */\n const requestedNetwork =\n network || currentNetwork || this.options.config.defaultNetwork;\n\n if (connectionFromState) {\n const networkChanged =\n currentNetwork !== requestedNetwork && !!requestedNetwork;\n\n // Reuse current connection if nothing has changed and we already have the connection in memory.\n if (currentNetwork === requestedNetwork) {\n return connectionFromState;\n }\n\n let canSwitch = true;\n if (this.actions.canSwitchNetworkTo) {\n canSwitch = this.actions.canSwitchNetworkTo({\n provider: this.provider,\n meta: this.info.supportedBlockchains,\n network: requestedNetwork || '',\n });\n }\n\n if (networkChanged && canSwitch && !!this.actions.switchNetwork) {\n await this.actions.switchNetwork({\n instance: this.provider,\n meta: this.info.supportedBlockchains,\n // TODO: Fix type error\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n network: requestedNetwork,\n newInstance: this.tryGetInstance.bind(this),\n getState: this.getState.bind(this),\n updateChainId: this.updateChainId.bind(this),\n });\n\n /*\n * We assume if we reach here (`switchNetwork` not throwing error), Switch successfully has been done.\n * But for providers with async switch network like wallet-connect, we need to wait for chain change\n * event before changing network.\n */\n if (\n requestedNetwork !== this.state.network &&\n !this.options.config.isAsyncSwitchNetwork\n ) {\n this.updateState({\n network,\n });\n }\n\n return {\n // Only network has been changed, so we reuse accounts from what we have already.\n accounts: connectionFromState.accounts,\n network: requestedNetwork,\n provider: this.provider,\n };\n }\n\n // If none of the above conditions didn't match, continute to connect.\n }\n\n // We are connecting to wallet for the first time\n\n // Trying to get wallet's instance, if it's not available, raise an error.\n const instance = await this.tryGetInstance({ network });\n\n // Instance exists, trying to connect\n this.updateState({\n connecting: true,\n });\n this.setInstalledAs(true);\n\n try {\n // eslint-disable-next-line no-var\n var connectResult = await this.actions.connect({\n instance,\n network: requestedNetwork || undefined,\n meta: this.info.supportedBlockchains || [],\n namespaces,\n });\n } catch (e) {\n this.resetState();\n throw e;\n }\n\n this.updateState({\n connected: true,\n reachable: true,\n connecting: false,\n });\n\n // TODO: Handle accounts.length > 0\n\n // Inserting accounts into our state.\n let nextAccounts: string[] = [];\n let nextNetwork: Network | null | undefined = null;\n let nextDerivationPath: string | undefined = undefined;\n if (Array.isArray(connectResult)) {\n let activeEvmNetwork: Network | null = null;\n const accounts = connectResult.flatMap((blockchain) => {\n const chainId = blockchain.chainId || Networks.Unknown;\n // Try to map chainId with a Network, if not found, we use chainId directly.\n const network =\n getBlockChainNameFromId(chainId, this.info.supportedBlockchains) ||\n Networks.Unknown;\n nextDerivationPath = blockchain.derivationPath\n ? blockchain.derivationPath\n : nextDerivationPath;\n\n /*\n * When connecting to an evm instance, it will return address and wallet's active chain.\n * On switch network we are comparing state's network and what passed as requestedNetwork.\n * This code is for making sure we are setting correct active chain in state if it's evm.\n */\n if (!activeEvmNetwork && network !== Networks.Unknown) {\n const blockchainMeta = this.info.supportedBlockchains.find(\n (blockchain) => blockchain.name === network\n );\n if (blockchainMeta?.info?.infoType === 'EvmMetaInfo') {\n activeEvmNetwork = network;\n }\n }\n // TODO: second parameter should be `string` when we decided to open source the package.\n return accountAddressesWithNetwork(blockchain.accounts, network);\n });\n nextAccounts = accounts.filter(Boolean);\n nextNetwork =\n activeEvmNetwork ||\n requestedNetwork ||\n this.options.config.defaultNetwork;\n } else {\n const chainId = connectResult.chainId || Networks.Unknown;\n const network =\n getBlockChainNameFromId(chainId, this.info.supportedBlockchains) ||\n Networks.Unknown;\n const derivationPath = connectResult.derivationPath;\n\n // We fallback to current active network if `chainId` not provided.\n nextAccounts = accountAddressesWithNetwork(\n connectResult.accounts,\n network\n );\n nextNetwork = network;\n nextDerivationPath = derivationPath;\n }\n\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n network: nextNetwork,\n derivationPath: nextDerivationPath,\n });\n }\n\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n async disconnect() {\n this.resetState();\n\n if (this.actions.disconnect) {\n void this.actions.disconnect({\n instance: this.provider,\n // On wallet connect, we need to destory the instance and get a whole new instance when we are going to connect\n destroyInstance: () => {\n this.setProvider(null);\n },\n });\n }\n }\n\n // This method is only used for auto connection\n async eagerConnect(): Promise<EagerConnectResult<InstanceType>> {\n const instance = await this.tryGetInstance({ network: undefined });\n const { canEagerConnect } = this.actions;\n const providerName = this.options.config.type;\n\n return await eagerConnectHandler({\n canEagerConnect: async () => {\n if (!canEagerConnect) {\n throw new Error(\n `${providerName} provider hasn't implemented canEagerConnect.`\n );\n }\n\n return await canEagerConnect({\n instance: instance,\n meta: this.info.supportedBlockchains,\n });\n },\n connectHandler: async () => {\n const result = await this.connect();\n return result;\n },\n providerName,\n });\n }\n\n async getSigners(provider: InstanceType) {\n return await this.actions.getSigners(provider);\n }\n getWalletInfo(allBlockChains: BlockchainMeta[]) {\n return this.actions.getWalletInfo(allBlockChains);\n }\n canSwitchNetworkTo(network: Network, provider: InstanceType) {\n const switchTo = this.actions.canSwitchNetworkTo;\n if (!switchTo) {\n return false;\n }\n\n return switchTo({\n network,\n meta: this.info.supportedBlockchains,\n provider,\n });\n }\n\n onInit() {\n // some times functions can be overridden by wallets. see rf-2119\n if (!this.actions.getInstance) {\n throw new Error(\n `Provider hasn't defined how to get wallet's instance. provider: ${this.options.config.type} on: onInit`\n );\n }\n\n if (!this.options.config.isAsyncInstance) {\n const instance = this.actions.getInstance();\n if (!!instance && !this.state.installed) {\n this.setInstalledAs(true);\n }\n } else if (needsCheckInstallation(this.options)) {\n this.actions.getInstance().then((data: unknown) => {\n if (data) {\n this.setInstalledAs(true);\n }\n });\n }\n }\n\n setProvider(value: InstanceType | null) {\n this.provider = value;\n if (!!value && !!this.actions.subscribe) {\n const cleanup = this.actions.subscribe({\n instance: value,\n state: this.state,\n meta: this.info.supportedBlockchains,\n connect: this.connect.bind(this),\n disconnect: this.disconnect.bind(this),\n updateAccounts: (accounts, chainId) => {\n let network = this.state.network;\n if (chainId) {\n network =\n getBlockChainNameFromId(\n chainId,\n this.info.supportedBlockchains\n ) || Networks.Unknown;\n }\n\n const nextAccounts = accountAddressesWithNetwork(accounts, network);\n if (nextAccounts.length > 0) {\n this.updateState({\n accounts: nextAccounts,\n });\n }\n },\n updateChainId: this.updateChainId.bind(this),\n });\n this.cleanupSubscribe = cleanup;\n } else if (!value && this.cleanupSubscribe) {\n this.cleanupSubscribe();\n }\n }\n\n setInfo(info: Partial<EventInfo>) {\n if (typeof info.supportedBlockchains !== 'undefined') {\n this.info.supportedBlockchains = info.supportedBlockchains;\n }\n if (typeof info.isContractWallet !== 'undefined') {\n this.info.isContractWallet = info.isContractWallet;\n }\n }\n\n setHandler(handler: EventHandler) {\n this.options.handler = handler;\n }\n\n getState(): State {\n return this.state;\n }\n\n updateState(states: Partial<State>) {\n /*\n * We will notify handler after updating all the states.\n * Because when we call `handler` it will has latest states.\n */\n const updates: [Events, unknown][] = [];\n\n if (typeof states.connected !== 'undefined') {\n this.state.connected = states.connected;\n updates.push([Events.CONNECTED, states.connected]);\n }\n if (typeof states.connecting !== 'undefined') {\n this.state.connecting = states.connecting;\n updates.push([Events.CONNECTING, states.connecting]);\n }\n if (typeof states.reachable !== 'undefined') {\n this.state.reachable = states.reachable;\n updates.push([Events.REACHABLE, states.reachable]);\n }\n if (typeof states.installed !== 'undefined') {\n this.state.installed = states.installed;\n updates.push([Events.INSTALLED, states.installed]);\n }\n if (typeof states.accounts !== 'undefined') {\n this.state.accounts = states.accounts;\n this.state.derivationPath = states.derivationPath;\n updates.push([Events.ACCOUNTS, states.accounts]);\n }\n if (typeof states.network !== 'undefined') {\n this.state.network = states.network;\n updates.push([Events.NETWORK, states.network]);\n }\n\n const state = this.getState();\n updates.forEach(([name, value]) => {\n const eventInfo: EventInfo = {\n supportedBlockchains: this.info.supportedBlockchains,\n isContractWallet: this.info.isContractWallet,\n isHub: false,\n };\n this.options.handler(\n this.options.config.type,\n name,\n value,\n state,\n eventInfo\n );\n });\n }\n\n resetState() {\n this.updateState({\n connected: false,\n connecting: false,\n reachable: false,\n accounts: null,\n network: null,\n });\n }\n\n private async getConnectionFromState() {\n // Already connected, so we return provider that we have in memory.\n\n /*\n * For switching network on Trust Wallet (WalletConnect),\n * We only kill the session (and not restting the whole state)\n * So we are relying on this.provider for achieving this functionality.\n */\n if (this.state.connected && !!this.provider) {\n return {\n accounts: this.state.accounts,\n network: this.state.network,\n provider: this.provider,\n };\n }\n\n return null;\n }\n\n private updateChainId(chainId: string | number) {\n const network = chainId\n ? getBlockChainNameFromId(chainId, this.info.supportedBlockchains)\n : Networks.Unknown;\n\n this.updateState({\n network,\n });\n }\n\n private setInstalledAs(value: boolean) {\n if (!needsCheckInstallation(this.options) && value === false) {\n return;\n }\n\n this.updateState({\n installed: value,\n });\n }\n // eslint-disable-next-line destructuring/in-methods-params\n private async tryGetInstance({\n network,\n force,\n }: {\n network?: Network;\n force?: boolean;\n }) {\n let instance = null;\n /*\n * For switching network on Trust Wallet (WalletConnect),\n * We only kill the session (and not restting the whole state)\n * So we are relying on this.provider for achieving this functionality.\n */\n this.setProvider(null);\n if (this.options.config.isAsyncInstance) {\n // Trying to connect\n const instanceOptions: GetInstanceOptions = {\n currentProvider: this.provider,\n meta: this.info.supportedBlockchains,\n force: force || false,\n updateChainId: this.updateChainId.bind(this),\n getState: this.getState.bind(this),\n };\n\n if (network) {\n instanceOptions.network = network;\n }\n instance = await this.actions.getInstance(instanceOptions);\n } else {\n instance = this.actions.getInstance();\n }\n\n if (!instance) {\n this.setInstalledAs(false);\n this.resetState();\n\n const error_message = `It seems your selected wallet (${this.options.config.type}) isn't installed.`;\n throw new Error(error_message);\n }\n\n this.setProvider(instance);\n return instance;\n }\n}\n\nexport default Wallet;\n"],
|
|
5
|
+
"mappings": "+EAKO,IAAKA,OACVA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,IAAM,MACNA,EAAA,UAAY,OACZA,EAAA,IAAM,MACNA,EAAA,QAAU,MACVA,EAAA,SAAW,MACXA,EAAA,QAAU,UACVA,EAAA,MAAQ,QACRA,EAAA,SAAW,GACXA,EAAA,KAAO,OACPA,EAAA,KAAO,OACPA,EAAA,QAAU,UACVA,EAAA,YAAc,cACdA,EAAA,OAAS,SACTA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,KAAO,OACPA,EAAA,SAAW,WACXA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,UAAY,YACZA,EAAA,OAAS,SACTA,EAAA,OAAS,SACTA,EAAA,QAAU,UACVA,EAAA,OAAS,SACTA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,KAAO,OACPA,EAAA,MAAQ,QACRA,EAAA,KAAO,OACPA,EAAA,YAAc,cACdA,EAAA,SAAW,WACXA,EAAA,MAAQ,QACRA,EAAA,WAAa,aACbA,EAAA,IAAM,MACNA,EAAA,UAAY,YACZA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,SAAW,WACXA,EAAA,OAAS,SACTA,EAAA,SAAW,WACXA,EAAA,OAAS,SACTA,EAAA,SAAW,WACXA,EAAA,OAAS,SACTA,EAAA,UAAY,YACZA,EAAA,WAAa,aACbA,EAAA,UAAY,YACZA,EAAA,OAAS,SACTA,EAAA,QAAU,UACVA,EAAA,GAAK,KACLA,EAAA,SAAW,WACXA,EAAA,cAAgB,gBAChBA,EAAA,KAAO,OACPA,EAAA,SAAW,WACXA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,IAAM,MAENA,EAAA,QAAU,SA7DAA,OAAA,IA2IAC,OACVA,EAAA,UAAY,YACZA,EAAA,WAAa,aACbA,EAAA,UAAY,YACZA,EAAA,UAAY,YACZA,EAAA,SAAW,WACXA,EAAA,QAAU,UAEVA,EAAA,uBAAyB,yBAEzBA,EAAA,sBAAwB,wBAVdA,OAAA,IC1IL,IAAMC,EAAN,KAAgD,CANvD,MAMuD,CAAAC,EAAA,kBACrD,QAAQC,EAAc,CACpB,IAAMC,EAAO,aAAa,QAAQD,CAAI,EAEtC,OADmBC,EAAQ,KAAK,MAAMA,CAAI,EAAU,IAEtD,CACA,QAAQD,EAAcE,EAAU,CAC9B,aAAa,QAAQF,EAAM,KAAK,UAAUE,CAAK,CAAC,CAClD,CACA,WAAWF,EAAc,CACvB,aAAa,WAAWA,CAAI,CAC9B,CACF,ECZO,SAASG,EACdC,EACAC,EACA,CACA,MAAO,GAAGA,GAAW,EAAE,IAAID,CAAO,EACpC,CALgBE,EAAAH,EAAA,4BAOT,SAASI,EACdC,EACAH,EACA,CACA,OAAKG,EAIEA,EAAU,IAAKJ,GACbD,EAAyBC,EAASC,CAAO,CACjD,EALQ,CAAC,CAMZ,CAXgBC,EAAAC,EAAA,+BAaT,SAASE,EAAmBC,EAGjC,CACA,GAAM,CAACL,EAASD,CAAO,EAAIM,EAAmB,MAAM,GAAG,EAEvD,MAAO,CACL,QAAAL,EACA,QAAAD,CACF,CACF,CAVgBE,EAAAG,EAAA,sBAYT,SAASE,EAAuBC,EAAkB,CACvD,GAAM,CAAE,kBAAAC,EAAoB,EAAK,EAAID,EAAQ,OAC7C,OAAOC,CACT,CAHgBP,EAAAK,EAAA,0BAKT,IAAMG,EAA0BR,EAAA,CACrCS,EACAC,KAEAD,EACE,OAAOA,GAAY,UAAYA,EAAQ,WAAW,IAAI,EAClD,SAASA,CAAO,EAChBA,EAMc,OAAO,OAAOE,CAAQ,EAC1B,SAAS,OAAOF,CAAO,CAAa,EAC3CA,EAGLA,IAAY,6BAIdC,EACG,OAAQE,GAAmB,CAAC,CAACA,EAAe,OAAO,EACnD,KAAMA,IACqBA,EAAe,SAAS,WAAW,IAAI,EAC7D,SAASA,EAAe,OAAO,EAC/BA,EAAe,UACSH,CAC7B,GAAG,MAAQ,MA7BqB,2BCzCvC,eAAsBI,EAAiCC,EAIpD,CAED,GAAI,MAAMA,EAAO,gBAAgB,EAE/B,OAAO,MAAMA,EAAO,eAAe,EAErC,MAAM,IAAI,MAAM,gCAAgCA,EAAO,YAAY,GAAG,CACxE,CAXsBC,EAAAF,EAAA,uBAaf,SAASG,EACdC,EAC8C,CAC9C,OAAOA,EAAU,YAAc,KACjC,CAJgBF,EAAAC,EAAA,kBC4ChB,IAAME,EAAN,KAAiC,CA3DjC,MA2DiC,CAAAC,EAAA,eACxB,SACC,QACA,MACA,QACA,KACA,iBAER,YAAYC,EAAkBC,EAAwB,CACpD,KAAK,QAAUA,EACf,KAAK,QAAUD,EACf,KAAK,SAAW,KAChB,KAAK,KAAO,CACV,qBAAsB,CAAC,EACvB,iBAAkB,GAClB,MAAO,EACT,EACA,KAAK,MAAQ,CACX,UAAW,GACX,WAAY,GAEZ,UAAW,GACX,UAAW,GACX,SAAU,KACV,QAAS,IACX,EAEKE,EAAuBF,CAAO,GACjC,KAAK,eAAe,EAAI,CAE5B,CAEA,MAAM,kBAAkBG,EAAkB,CACxC,OAAI,KAAK,QAAQ,SACf,MAAM,KAAK,QAAQ,QAAQ,CACzB,SAAU,KAAK,SACf,KAAM,KAAK,KAAK,qBAChB,QAAAA,CACF,CAAC,EAEI,MAAM,KAAK,QAAQA,CAAO,CACnC,CAEA,MAAM,QAAQA,EAAmBC,EAA8B,CAE7D,GAAI,KAAK,MAAM,WACb,MAAM,IAAI,MAAM,eAAe,EAGjC,IAAMC,EAAsB,MAAM,KAAK,uBAAuB,EACxDC,EAAiB,KAAK,MAAM,QAM5BC,EACJJ,GAAWG,GAAkB,KAAK,QAAQ,OAAO,eAEnD,GAAID,EAAqB,CACvB,IAAMG,EACJF,IAAmBC,GAAoB,CAAC,CAACA,EAG3C,GAAID,IAAmBC,EACrB,OAAOF,EAGT,IAAII,EAAY,GAShB,GARI,KAAK,QAAQ,qBACfA,EAAY,KAAK,QAAQ,mBAAmB,CAC1C,SAAU,KAAK,SACf,KAAM,KAAK,KAAK,qBAChB,QAASF,GAAoB,EAC/B,CAAC,GAGCC,GAAkBC,GAAe,KAAK,QAAQ,cAChD,aAAM,KAAK,QAAQ,cAAc,CAC/B,SAAU,KAAK,SACf,KAAM,KAAK,KAAK,qBAIhB,QAASF,EACT,YAAa,KAAK,eAAe,KAAK,IAAI,EAC1C,SAAU,KAAK,SAAS,KAAK,IAAI,EACjC,cAAe,KAAK,cAAc,KAAK,IAAI,CAC7C,CAAC,EAQCA,IAAqB,KAAK,MAAM,SAChC,CAAC,KAAK,QAAQ,OAAO,sBAErB,KAAK,YAAY,CACf,QAAAJ,CACF,CAAC,EAGI,CAEL,SAAUE,EAAoB,SAC9B,QAASE,EACT,SAAU,KAAK,QACjB,CAIJ,CAKA,IAAMG,EAAW,MAAM,KAAK,eAAe,CAAE,QAAAP,CAAQ,CAAC,EAGtD,KAAK,YAAY,CACf,WAAY,EACd,CAAC,EACD,KAAK,eAAe,EAAI,EAExB,GAAI,CAEF,IAAIQ,EAAgB,MAAM,KAAK,QAAQ,QAAQ,CAC7C,SAAAD,EACA,QAASH,GAAoB,OAC7B,KAAM,KAAK,KAAK,sBAAwB,CAAC,EACzC,WAAAH,CACF,CAAC,CACH,OAASQ,EAAG,CACV,WAAK,WAAW,EACVA,CACR,CAEA,KAAK,YAAY,CACf,UAAW,GACX,UAAW,GACX,WAAY,EACd,CAAC,EAKD,IAAIC,EAAyB,CAAC,EAC1BC,EAA0C,KAC1CC,EACJ,GAAI,MAAM,QAAQJ,CAAa,EAAG,CAChC,IAAIK,EAAmC,KA2BvCH,EA1BiBF,EAAc,QAASM,GAAe,CACrD,IAAMC,EAAUD,EAAW,kBAErBd,EACJgB,EAAwBD,EAAS,KAAK,KAAK,oBAAoB,YAEjE,OAAAH,EAAqBE,EAAW,eAC5BA,EAAW,eACXF,EAOA,CAACC,GAAoBb,cACA,KAAK,KAAK,qBAAqB,KACnDc,GAAeA,EAAW,OAASd,CACtC,GACoB,MAAM,WAAa,gBACrCa,EAAmBb,GAIhBiB,EAA4BH,EAAW,SAAUd,CAAO,CACjE,CAAC,EACuB,OAAO,OAAO,EACtCW,EACEE,GACAT,GACA,KAAK,QAAQ,OAAO,cACxB,KAAO,CACL,IAAMW,EAAUP,EAAc,kBACxBR,EACJgB,EAAwBD,EAAS,KAAK,KAAK,oBAAoB,YAE3DG,EAAiBV,EAAc,eAGrCE,EAAeO,EACbT,EAAc,SACdR,CACF,EACAW,EAAcX,EACdY,EAAqBM,CACvB,CAEA,OAAIR,EAAa,OAAS,GACxB,KAAK,YAAY,CACf,SAAUA,EACV,QAASC,EACT,eAAgBC,CAClB,CAAC,EAGI,CACL,SAAU,KAAK,MAAM,SACrB,QAAS,KAAK,MAAM,QACpB,SAAU,KAAK,QACjB,CACF,CAEA,MAAM,YAAa,CACjB,KAAK,WAAW,EAEZ,KAAK,QAAQ,YACV,KAAK,QAAQ,WAAW,CAC3B,SAAU,KAAK,SAEf,gBAAiB,IAAM,CACrB,KAAK,YAAY,IAAI,CACvB,CACF,CAAC,CAEL,CAGA,MAAM,cAA0D,CAC9D,IAAML,EAAW,MAAM,KAAK,eAAe,CAAE,QAAS,MAAU,CAAC,EAC3D,CAAE,gBAAAY,CAAgB,EAAI,KAAK,QAC3BC,EAAe,KAAK,QAAQ,OAAO,KAEzC,OAAO,MAAMC,EAAoB,CAC/B,gBAAiB,SAAY,CAC3B,GAAI,CAACF,EACH,MAAM,IAAI,MACR,GAAGC,CAAY,+CACjB,EAGF,OAAO,MAAMD,EAAgB,CAC3B,SAAUZ,EACV,KAAM,KAAK,KAAK,oBAClB,CAAC,CACH,EACA,eAAgB,SACC,MAAM,KAAK,QAAQ,EAGpC,aAAAa,CACF,CAAC,CACH,CAEA,MAAM,WAAWE,EAAwB,CACvC,OAAO,MAAM,KAAK,QAAQ,WAAWA,CAAQ,CAC/C,CACA,cAAcC,EAAkC,CAC9C,OAAO,KAAK,QAAQ,cAAcA,CAAc,CAClD,CACA,mBAAmBvB,EAAkBsB,EAAwB,CAC3D,IAAME,EAAW,KAAK,QAAQ,mBAC9B,OAAKA,EAIEA,EAAS,CACd,QAAAxB,EACA,KAAM,KAAK,KAAK,qBAChB,SAAAsB,CACF,CAAC,EAPQ,EAQX,CAEA,QAAS,CAEP,GAAI,CAAC,KAAK,QAAQ,YAChB,MAAM,IAAI,MACR,mEAAmE,KAAK,QAAQ,OAAO,IAAI,aAC7F,EAGG,KAAK,QAAQ,OAAO,gBAKdvB,EAAuB,KAAK,OAAO,GAC5C,KAAK,QAAQ,YAAY,EAAE,KAAM0B,GAAkB,CAC7CA,GACF,KAAK,eAAe,EAAI,CAE5B,CAAC,EATgB,KAAK,QAAQ,YAAY,GACxB,CAAC,KAAK,MAAM,WAC5B,KAAK,eAAe,EAAI,CAS9B,CAEA,YAAYC,EAA4B,CAEtC,GADA,KAAK,SAAWA,EACVA,GAAW,KAAK,QAAQ,UAAW,CACvC,IAAMC,EAAU,KAAK,QAAQ,UAAU,CACrC,SAAUD,EACV,MAAO,KAAK,MACZ,KAAM,KAAK,KAAK,qBAChB,QAAS,KAAK,QAAQ,KAAK,IAAI,EAC/B,WAAY,KAAK,WAAW,KAAK,IAAI,EACrC,eAAgB,CAACE,EAAUb,IAAY,CACrC,IAAIf,EAAU,KAAK,MAAM,QACrBe,IACFf,EACEgB,EACED,EACA,KAAK,KAAK,oBACZ,aAGJ,IAAML,EAAeO,EAA4BW,EAAU5B,CAAO,EAC9DU,EAAa,OAAS,GACxB,KAAK,YAAY,CACf,SAAUA,CACZ,CAAC,CAEL,EACA,cAAe,KAAK,cAAc,KAAK,IAAI,CAC7C,CAAC,EACD,KAAK,iBAAmBiB,CAC1B,KAAW,CAACD,GAAS,KAAK,kBACxB,KAAK,iBAAiB,CAE1B,CAEA,QAAQG,EAA0B,CAC5B,OAAOA,EAAK,qBAAyB,MACvC,KAAK,KAAK,qBAAuBA,EAAK,sBAEpC,OAAOA,EAAK,iBAAqB,MACnC,KAAK,KAAK,iBAAmBA,EAAK,iBAEtC,CAEA,WAAWC,EAAuB,CAChC,KAAK,QAAQ,QAAUA,CACzB,CAEA,UAAkB,CAChB,OAAO,KAAK,KACd,CAEA,YAAYC,EAAwB,CAKlC,IAAMC,EAA+B,CAAC,EAElC,OAAOD,EAAO,UAAc,MAC9B,KAAK,MAAM,UAAYA,EAAO,UAC9BC,EAAQ,KAAK,aAAmBD,EAAO,SAAS,CAAC,GAE/C,OAAOA,EAAO,WAAe,MAC/B,KAAK,MAAM,WAAaA,EAAO,WAC/BC,EAAQ,KAAK,cAAoBD,EAAO,UAAU,CAAC,GAEjD,OAAOA,EAAO,UAAc,MAC9B,KAAK,MAAM,UAAYA,EAAO,UAC9BC,EAAQ,KAAK,aAAmBD,EAAO,SAAS,CAAC,GAE/C,OAAOA,EAAO,UAAc,MAC9B,KAAK,MAAM,UAAYA,EAAO,UAC9BC,EAAQ,KAAK,aAAmBD,EAAO,SAAS,CAAC,GAE/C,OAAOA,EAAO,SAAa,MAC7B,KAAK,MAAM,SAAWA,EAAO,SAC7B,KAAK,MAAM,eAAiBA,EAAO,eACnCC,EAAQ,KAAK,YAAkBD,EAAO,QAAQ,CAAC,GAE7C,OAAOA,EAAO,QAAY,MAC5B,KAAK,MAAM,QAAUA,EAAO,QAC5BC,EAAQ,KAAK,WAAiBD,EAAO,OAAO,CAAC,GAG/C,IAAME,EAAQ,KAAK,SAAS,EAC5BD,EAAQ,QAAQ,CAAC,CAACE,EAAMR,CAAK,IAAM,CACjC,IAAMS,EAAuB,CAC3B,qBAAsB,KAAK,KAAK,qBAChC,iBAAkB,KAAK,KAAK,iBAC5B,MAAO,EACT,EACA,KAAK,QAAQ,QACX,KAAK,QAAQ,OAAO,KACpBD,EACAR,EACAO,EACAE,CACF,CACF,CAAC,CACH,CAEA,YAAa,CACX,KAAK,YAAY,CACf,UAAW,GACX,WAAY,GACZ,UAAW,GACX,SAAU,KACV,QAAS,IACX,CAAC,CACH,CAEA,MAAc,wBAAyB,CAQrC,OAAI,KAAK,MAAM,WAAe,KAAK,SAC1B,CACL,SAAU,KAAK,MAAM,SACrB,QAAS,KAAK,MAAM,QACpB,SAAU,KAAK,QACjB,EAGK,IACT,CAEQ,cAAcpB,EAA0B,CAC9C,IAAMf,EAAUe,EACZC,EAAwBD,EAAS,KAAK,KAAK,oBAAoB,WAGnE,KAAK,YAAY,CACf,QAAAf,CACF,CAAC,CACH,CAEQ,eAAe0B,EAAgB,CACjC,CAAC3B,EAAuB,KAAK,OAAO,GAAK2B,IAAU,IAIvD,KAAK,YAAY,CACf,UAAWA,CACb,CAAC,CACH,CAEA,MAAc,eAAe,CAC3B,QAAA1B,EACA,MAAAoC,CACF,EAGG,CACD,IAAI7B,EAAW,KAOf,GADA,KAAK,YAAY,IAAI,EACjB,KAAK,QAAQ,OAAO,gBAAiB,CAEvC,IAAM8B,EAAsC,CAC1C,gBAAiB,KAAK,SACtB,KAAM,KAAK,KAAK,qBAChB,MAAOD,GAAS,GAChB,cAAe,KAAK,cAAc,KAAK,IAAI,EAC3C,SAAU,KAAK,SAAS,KAAK,IAAI,CACnC,EAEIpC,IACFqC,EAAgB,QAAUrC,GAE5BO,EAAW,MAAM,KAAK,QAAQ,YAAY8B,CAAe,CAC3D,MACE9B,EAAW,KAAK,QAAQ,YAAY,EAGtC,GAAI,CAACA,EAAU,CACb,KAAK,eAAe,EAAK,EACzB,KAAK,WAAW,EAEhB,IAAM+B,EAAgB,kCAAkC,KAAK,QAAQ,OAAO,IAAI,qBAChF,MAAM,IAAI,MAAMA,CAAa,CAC/B,CAEA,YAAK,YAAY/B,CAAQ,EAClBA,CACT,CACF,EAEOgC,EAAQ5C",
|
|
6
6
|
"names": ["Networks", "Events", "Persistor", "__name", "name", "item", "value", "formatAddressWithNetwork", "address", "network", "__name", "accountAddressesWithNetwork", "addresses", "readAccountAddress", "addressWithNetwork", "needsCheckInstallation", "options", "checkInstallation", "getBlockChainNameFromId", "chainId", "blockchains", "Networks", "blockchainMeta", "eagerConnectHandler", "params", "__name", "isEvmNamespace", "namespace", "Wallet", "__name", "options", "actions", "needsCheckInstallation", "network", "namespaces", "connectionFromState", "currentNetwork", "requestedNetwork", "networkChanged", "canSwitch", "instance", "connectResult", "e", "nextAccounts", "nextNetwork", "nextDerivationPath", "activeEvmNetwork", "blockchain", "chainId", "getBlockChainNameFromId", "accountAddressesWithNetwork", "derivationPath", "canEagerConnect", "providerName", "eagerConnectHandler", "provider", "allBlockChains", "switchTo", "data", "value", "cleanup", "accounts", "info", "handler", "states", "updates", "state", "name", "eventInfo", "force", "instanceOptions", "error_message", "wallet_default"]
|
|
7
7
|
}
|
package/dist/legacy/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { State as WalletState } from './wallet.js';
|
|
2
|
+
import type { GenerateDeepLink } from '../mod.js';
|
|
2
3
|
import type { Namespace } from '../namespaces/common/mod.js';
|
|
3
4
|
import type { BlockchainMeta, SignerFactory } from 'rango-types';
|
|
4
5
|
export declare enum Networks {
|
|
@@ -112,6 +113,7 @@ export type WalletInfo = {
|
|
|
112
113
|
showOnMobile?: boolean;
|
|
113
114
|
isContractWallet?: boolean;
|
|
114
115
|
mobileWallet?: boolean;
|
|
116
|
+
generateDeepLink?: GenerateDeepLink;
|
|
115
117
|
needsDerivationPath?: NeedsDerivationPath;
|
|
116
118
|
needsNamespace?: NeedsNamespace;
|
|
117
119
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/legacy/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,oBAAY,QAAQ;IAClB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,SAAS,SAAS;IAClB,GAAG,QAAQ;IACX,OAAO,QAAQ;IACf,QAAQ,QAAQ;IAChB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,KAAK;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;IACb,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,UAAU,eAAe;IACzB,GAAG,QAAQ;IACX,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,EAAE,OAAO;IACT,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IAEX,OAAO,WAAW;CACnB;AAGD,KAAK,YAAY,GAAG,GAAG,CAAC;AAExB,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAChC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,CAAC;CACpE,CAAC;AAEF,UAAU,cAAc;IACtB,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,SAAS,CAAC;QACrB,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;KACnD,EAAE,CAAC;CACL;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,cAAc,GAAG,MAAM,CAAC;IACrC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/legacy/types.ts"],"names":[],"mappings":"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"}
|
package/dist/mod.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { Store, State,
|
|
1
|
+
export type { Store, State, ProviderMetadata, CommonNamespaces, CommonNamespaceKeys, Subscriber, SubscriberCleanUp, Context, GenerateDeepLink, DeepLinkContext, } from './hub/mod.js';
|
|
2
2
|
export { Hub, Provider, Namespace, createStore, guessProviderStateSelector, namespaceStateSelector, } from './hub/mod.js';
|
|
3
3
|
export type { ProxiedNamespace, FindProxiedNamespace } from './builders/mod.js';
|
|
4
4
|
export { NamespaceBuilder, ProviderBuilder, ActionBuilder, } from './builders/mod.js';
|
package/dist/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,KAAK,EACL,KAAK,EACL,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,KAAK,EACL,KAAK,EACL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,OAAO,EACP,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,GAAG,EACH,QAAQ,EACR,SAAS,EACT,WAAW,EACX,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AAgB3B,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|