@cartridge/connector 0.13.6 → 0.13.7
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/.turbo/turbo-build$colon$deps.log +8 -8
- package/dist/controller.d.ts +4 -2
- package/dist/controller.js +3 -0
- package/dist/controller.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/controller.ts +4 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @cartridge/connector@0.13.
|
|
2
|
+
> @cartridge/connector@0.13.7 build:deps /home/runner/work/controller/controller/packages/connector
|
|
3
3
|
> tsup --dts-resolve
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/controller.ts, src/index.ts, src/session.ts
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
[34mCLI[39m Target: esnext
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mESM[39m Build start
|
|
12
|
-
[32mESM[39m [1mdist/
|
|
12
|
+
[32mESM[39m [1mdist/controller.js [22m[32m2.06 KB[39m
|
|
13
|
+
[32mESM[39m [1mdist/index.js [22m[32m2.91 KB[39m
|
|
13
14
|
[32mESM[39m [1mdist/session.js [22m[32m916.00 B[39m
|
|
14
|
-
[32mESM[39m [1mdist/controller.js
|
|
15
|
-
[32mESM[39m [1mdist/index.js.map [22m[32m5.
|
|
15
|
+
[32mESM[39m [1mdist/controller.js.map [22m[32m4.31 KB[39m
|
|
16
|
+
[32mESM[39m [1mdist/index.js.map [22m[32m5.99 KB[39m
|
|
16
17
|
[32mESM[39m [1mdist/session.js.map [22m[32m1.73 KB[39m
|
|
17
|
-
[32mESM[39m
|
|
18
|
-
[32mESM[39m ⚡️ Build success in 44ms
|
|
18
|
+
[32mESM[39m ⚡️ Build success in 50ms
|
|
19
19
|
[34mDTS[39m Build start
|
|
20
|
-
[32mDTS[39m ⚡️ Build success in
|
|
20
|
+
[32mDTS[39m ⚡️ Build success in 6450ms
|
|
21
21
|
[32mDTS[39m [1mdist/index.d.ts [22m[32m290.00 B[39m
|
|
22
|
-
[32mDTS[39m [1mdist/controller.d.ts [22m[
|
|
22
|
+
[32mDTS[39m [1mdist/controller.d.ts [22m[32m1.10 KB[39m
|
|
23
23
|
[32mDTS[39m [1mdist/session.d.ts [22m[32m476.00 B[39m
|
package/dist/controller.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import * as _starknet_io_get_starknet_wallet_standard_features from '@starknet-io/get-starknet-wallet-standard/features';
|
|
2
|
-
import
|
|
2
|
+
import * as ControllerProvider from '@cartridge/controller';
|
|
3
|
+
import ControllerProvider__default, { ControllerOptions, ConnectOptions } from '@cartridge/controller';
|
|
3
4
|
import { InjectedConnector, Connector } from '@starknet-react/core';
|
|
4
5
|
|
|
5
6
|
declare class ControllerConnector extends InjectedConnector {
|
|
6
|
-
controller:
|
|
7
|
+
controller: ControllerProvider__default;
|
|
7
8
|
constructor(options?: ControllerOptions);
|
|
8
9
|
disconnect(): Promise<void>;
|
|
9
10
|
username(): Promise<string> | undefined;
|
|
11
|
+
lookupUsername(username: string): Promise<ControllerProvider.HeadlessUsernameLookupResult>;
|
|
10
12
|
isReady(): boolean;
|
|
11
13
|
delegateAccount(): Promise<string | null>;
|
|
12
14
|
connect(args?: {
|
package/dist/controller.js
CHANGED
|
@@ -26,6 +26,9 @@ var ControllerConnector = class extends InjectedConnector {
|
|
|
26
26
|
username() {
|
|
27
27
|
return this.controller.username();
|
|
28
28
|
}
|
|
29
|
+
lookupUsername(username) {
|
|
30
|
+
return this.controller.lookupUsername(username);
|
|
31
|
+
}
|
|
29
32
|
isReady() {
|
|
30
33
|
return this.controller.isReady();
|
|
31
34
|
}
|
package/dist/controller.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/controller.ts"],"sourcesContent":["import ControllerProvider, {\n ConnectOptions,\n ControllerOptions,\n} from \"@cartridge/controller\";\nimport { Connector, InjectedConnector } from \"@starknet-react/core\";\n\nexport default class ControllerConnector extends InjectedConnector {\n public controller: ControllerProvider;\n\n constructor(options: ControllerOptions = {}) {\n let controller: ControllerProvider;\n\n if (typeof window !== \"undefined\" && (window as any).starknet_controller) {\n console.warn(\n \"ControllerConnector was instantiated multiple times. \" +\n \"Reusing existing controller to prevent errors. \" +\n \"To fix, create the connector at the module level instead of inside a React component.\",\n );\n controller = (window as any).starknet_controller;\n } else {\n controller = new ControllerProvider(options);\n }\n\n super({ options: { id: controller.id, name: controller.name } });\n this.controller = controller;\n }\n\n async disconnect() {\n await this.controller.disconnect();\n try {\n await super.disconnect();\n } catch {\n // Best-effort: starknet-react may call disconnect even when the injected wallet isn't present.\n }\n }\n\n username() {\n return this.controller.username();\n }\n\n isReady(): boolean {\n return this.controller.isReady();\n }\n\n async delegateAccount() {\n return await this.controller.delegateAccount();\n }\n\n async connect(args?: { chainIdHint?: bigint } & ConnectOptions) {\n const { chainIdHint, ...connectOptions } = args ?? {};\n const controllerArgs =\n args && Object.keys(connectOptions).length > 0\n ? (connectOptions as ConnectOptions)\n : undefined;\n\n const account = await this.controller.connect(controllerArgs);\n if (!account) {\n throw new Error(\"Failed to connect controller\");\n }\n\n // Ensure the injected wallet instance used by starknet-react (window.starknet_controller)\n // always points at the same ControllerProvider instance this connector wraps.\n if (typeof window !== \"undefined\") {\n (window as any).starknet_controller = this.controller;\n }\n\n const data = await super.connect({ chainIdHint });\n\n // `@starknet-react/core` updates its state from the `account` returned here.\n // Use the authoritative address from `controller.connect()` to avoid edge cases\n // where the injected wallet request returns an empty/undefined account.\n return { ...data, account: account.address };\n }\n\n static fromConnectors(connectors: Connector[]): ControllerConnector {\n const connector = connectors.find((c) => c.id === \"controller\");\n if (!connector) {\n throw new Error(\"Controller connector not found\");\n }\n return connector as ControllerConnector;\n }\n\n asWalletStandard() {\n return this.controller.asWalletStandard();\n }\n}\n"],"mappings":";AAAA,OAAO,wBAGA;AACP,SAAoB,yBAAyB;AAE7C,IAAqB,sBAArB,cAAiD,kBAAkB;AAAA,EAC1D;AAAA,EAEP,YAAY,UAA6B,CAAC,GAAG;AAC3C,QAAI;AAEJ,QAAI,OAAO,WAAW,eAAgB,OAAe,qBAAqB;AACxE,cAAQ;AAAA,QACN;AAAA,MAGF;AACA,mBAAc,OAAe;AAAA,IAC/B,OAAO;AACL,mBAAa,IAAI,mBAAmB,OAAO;AAAA,IAC7C;AAEA,UAAM,EAAE,SAAS,EAAE,IAAI,WAAW,IAAI,MAAM,WAAW,KAAK,EAAE,CAAC;AAC/D,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,MAAM,aAAa;AACjB,UAAM,KAAK,WAAW,WAAW;AACjC,QAAI;AACF,YAAM,MAAM,WAAW;AAAA,IACzB,QAAQ;AAAA,IAER;AAAA,EACF;AAAA,EAEA,WAAW;AACT,WAAO,KAAK,WAAW,SAAS;AAAA,EAClC;AAAA,EAEA,UAAmB;AACjB,WAAO,KAAK,WAAW,QAAQ;AAAA,EACjC;AAAA,EAEA,MAAM,kBAAkB;AACtB,WAAO,MAAM,KAAK,WAAW,gBAAgB;AAAA,EAC/C;AAAA,EAEA,MAAM,QAAQ,MAAkD;AAC9D,UAAM,EAAE,aAAa,GAAG,eAAe,IAAI,QAAQ,CAAC;AACpD,UAAM,iBACJ,QAAQ,OAAO,KAAK,cAAc,EAAE,SAAS,IACxC,iBACD;AAEN,UAAM,UAAU,MAAM,KAAK,WAAW,QAAQ,cAAc;AAC5D,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AAIA,QAAI,OAAO,WAAW,aAAa;AACjC,MAAC,OAAe,sBAAsB,KAAK;AAAA,IAC7C;AAEA,UAAM,OAAO,MAAM,MAAM,QAAQ,EAAE,YAAY,CAAC;AAKhD,WAAO,EAAE,GAAG,MAAM,SAAS,QAAQ,QAAQ;AAAA,EAC7C;AAAA,EAEA,OAAO,eAAe,YAA8C;AAClE,UAAM,YAAY,WAAW,KAAK,CAAC,MAAM,EAAE,OAAO,YAAY;AAC9D,QAAI,CAAC,WAAW;AACd,YAAM,IAAI,MAAM,gCAAgC;AAAA,IAClD;AACA,WAAO;AAAA,EACT;AAAA,EAEA,mBAAmB;AACjB,WAAO,KAAK,WAAW,iBAAiB;AAAA,EAC1C;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/controller.ts"],"sourcesContent":["import ControllerProvider, {\n ConnectOptions,\n ControllerOptions,\n} from \"@cartridge/controller\";\nimport { Connector, InjectedConnector } from \"@starknet-react/core\";\n\nexport default class ControllerConnector extends InjectedConnector {\n public controller: ControllerProvider;\n\n constructor(options: ControllerOptions = {}) {\n let controller: ControllerProvider;\n\n if (typeof window !== \"undefined\" && (window as any).starknet_controller) {\n console.warn(\n \"ControllerConnector was instantiated multiple times. \" +\n \"Reusing existing controller to prevent errors. \" +\n \"To fix, create the connector at the module level instead of inside a React component.\",\n );\n controller = (window as any).starknet_controller;\n } else {\n controller = new ControllerProvider(options);\n }\n\n super({ options: { id: controller.id, name: controller.name } });\n this.controller = controller;\n }\n\n async disconnect() {\n await this.controller.disconnect();\n try {\n await super.disconnect();\n } catch {\n // Best-effort: starknet-react may call disconnect even when the injected wallet isn't present.\n }\n }\n\n username() {\n return this.controller.username();\n }\n\n lookupUsername(username: string) {\n return this.controller.lookupUsername(username);\n }\n\n isReady(): boolean {\n return this.controller.isReady();\n }\n\n async delegateAccount() {\n return await this.controller.delegateAccount();\n }\n\n async connect(args?: { chainIdHint?: bigint } & ConnectOptions) {\n const { chainIdHint, ...connectOptions } = args ?? {};\n const controllerArgs =\n args && Object.keys(connectOptions).length > 0\n ? (connectOptions as ConnectOptions)\n : undefined;\n\n const account = await this.controller.connect(controllerArgs);\n if (!account) {\n throw new Error(\"Failed to connect controller\");\n }\n\n // Ensure the injected wallet instance used by starknet-react (window.starknet_controller)\n // always points at the same ControllerProvider instance this connector wraps.\n if (typeof window !== \"undefined\") {\n (window as any).starknet_controller = this.controller;\n }\n\n const data = await super.connect({ chainIdHint });\n\n // `@starknet-react/core` updates its state from the `account` returned here.\n // Use the authoritative address from `controller.connect()` to avoid edge cases\n // where the injected wallet request returns an empty/undefined account.\n return { ...data, account: account.address };\n }\n\n static fromConnectors(connectors: Connector[]): ControllerConnector {\n const connector = connectors.find((c) => c.id === \"controller\");\n if (!connector) {\n throw new Error(\"Controller connector not found\");\n }\n return connector as ControllerConnector;\n }\n\n asWalletStandard() {\n return this.controller.asWalletStandard();\n }\n}\n"],"mappings":";AAAA,OAAO,wBAGA;AACP,SAAoB,yBAAyB;AAE7C,IAAqB,sBAArB,cAAiD,kBAAkB;AAAA,EAC1D;AAAA,EAEP,YAAY,UAA6B,CAAC,GAAG;AAC3C,QAAI;AAEJ,QAAI,OAAO,WAAW,eAAgB,OAAe,qBAAqB;AACxE,cAAQ;AAAA,QACN;AAAA,MAGF;AACA,mBAAc,OAAe;AAAA,IAC/B,OAAO;AACL,mBAAa,IAAI,mBAAmB,OAAO;AAAA,IAC7C;AAEA,UAAM,EAAE,SAAS,EAAE,IAAI,WAAW,IAAI,MAAM,WAAW,KAAK,EAAE,CAAC;AAC/D,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,MAAM,aAAa;AACjB,UAAM,KAAK,WAAW,WAAW;AACjC,QAAI;AACF,YAAM,MAAM,WAAW;AAAA,IACzB,QAAQ;AAAA,IAER;AAAA,EACF;AAAA,EAEA,WAAW;AACT,WAAO,KAAK,WAAW,SAAS;AAAA,EAClC;AAAA,EAEA,eAAe,UAAkB;AAC/B,WAAO,KAAK,WAAW,eAAe,QAAQ;AAAA,EAChD;AAAA,EAEA,UAAmB;AACjB,WAAO,KAAK,WAAW,QAAQ;AAAA,EACjC;AAAA,EAEA,MAAM,kBAAkB;AACtB,WAAO,MAAM,KAAK,WAAW,gBAAgB;AAAA,EAC/C;AAAA,EAEA,MAAM,QAAQ,MAAkD;AAC9D,UAAM,EAAE,aAAa,GAAG,eAAe,IAAI,QAAQ,CAAC;AACpD,UAAM,iBACJ,QAAQ,OAAO,KAAK,cAAc,EAAE,SAAS,IACxC,iBACD;AAEN,UAAM,UAAU,MAAM,KAAK,WAAW,QAAQ,cAAc;AAC5D,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AAIA,QAAI,OAAO,WAAW,aAAa;AACjC,MAAC,OAAe,sBAAsB,KAAK;AAAA,IAC7C;AAEA,UAAM,OAAO,MAAM,MAAM,QAAQ,EAAE,YAAY,CAAC;AAKhD,WAAO,EAAE,GAAG,MAAM,SAAS,QAAQ,QAAQ;AAAA,EAC7C;AAAA,EAEA,OAAO,eAAe,YAA8C;AAClE,UAAM,YAAY,WAAW,KAAK,CAAC,MAAM,EAAE,OAAO,YAAY;AAC9D,QAAI,CAAC,WAAW;AACd,YAAM,IAAI,MAAM,gCAAgC;AAAA,IAClD;AACA,WAAO;AAAA,EACT;AAAA,EAEA,mBAAmB;AACjB,WAAO,KAAK,WAAW,iBAAiB;AAAA,EAC1C;AACF;","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -26,6 +26,9 @@ var ControllerConnector = class extends InjectedConnector {
|
|
|
26
26
|
username() {
|
|
27
27
|
return this.controller.username();
|
|
28
28
|
}
|
|
29
|
+
lookupUsername(username) {
|
|
30
|
+
return this.controller.lookupUsername(username);
|
|
31
|
+
}
|
|
29
32
|
isReady() {
|
|
30
33
|
return this.controller.isReady();
|
|
31
34
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/controller.ts","../src/session.ts"],"sourcesContent":["import ControllerProvider, {\n ConnectOptions,\n ControllerOptions,\n} from \"@cartridge/controller\";\nimport { Connector, InjectedConnector } from \"@starknet-react/core\";\n\nexport default class ControllerConnector extends InjectedConnector {\n public controller: ControllerProvider;\n\n constructor(options: ControllerOptions = {}) {\n let controller: ControllerProvider;\n\n if (typeof window !== \"undefined\" && (window as any).starknet_controller) {\n console.warn(\n \"ControllerConnector was instantiated multiple times. \" +\n \"Reusing existing controller to prevent errors. \" +\n \"To fix, create the connector at the module level instead of inside a React component.\",\n );\n controller = (window as any).starknet_controller;\n } else {\n controller = new ControllerProvider(options);\n }\n\n super({ options: { id: controller.id, name: controller.name } });\n this.controller = controller;\n }\n\n async disconnect() {\n await this.controller.disconnect();\n try {\n await super.disconnect();\n } catch {\n // Best-effort: starknet-react may call disconnect even when the injected wallet isn't present.\n }\n }\n\n username() {\n return this.controller.username();\n }\n\n isReady(): boolean {\n return this.controller.isReady();\n }\n\n async delegateAccount() {\n return await this.controller.delegateAccount();\n }\n\n async connect(args?: { chainIdHint?: bigint } & ConnectOptions) {\n const { chainIdHint, ...connectOptions } = args ?? {};\n const controllerArgs =\n args && Object.keys(connectOptions).length > 0\n ? (connectOptions as ConnectOptions)\n : undefined;\n\n const account = await this.controller.connect(controllerArgs);\n if (!account) {\n throw new Error(\"Failed to connect controller\");\n }\n\n // Ensure the injected wallet instance used by starknet-react (window.starknet_controller)\n // always points at the same ControllerProvider instance this connector wraps.\n if (typeof window !== \"undefined\") {\n (window as any).starknet_controller = this.controller;\n }\n\n const data = await super.connect({ chainIdHint });\n\n // `@starknet-react/core` updates its state from the `account` returned here.\n // Use the authoritative address from `controller.connect()` to avoid edge cases\n // where the injected wallet request returns an empty/undefined account.\n return { ...data, account: account.address };\n }\n\n static fromConnectors(connectors: Connector[]): ControllerConnector {\n const connector = connectors.find((c) => c.id === \"controller\");\n if (!connector) {\n throw new Error(\"Controller connector not found\");\n }\n return connector as ControllerConnector;\n }\n\n asWalletStandard() {\n return this.controller.asWalletStandard();\n }\n}\n","import SessionProvider, { SessionOptions } from \"@cartridge/controller/session\";\nimport { Connector, InjectedConnector } from \"@starknet-react/core\";\n\nexport default class SessionConnector extends InjectedConnector {\n public controller: SessionProvider;\n\n constructor(options: SessionOptions) {\n const controller = new SessionProvider(options);\n\n super({\n options: {\n id: controller.id,\n name: controller.name,\n },\n });\n\n this.controller = controller;\n }\n\n async disconnect() {\n await this.controller.disconnect();\n try {\n await super.disconnect();\n } catch {\n // Best-effort: disconnect should not throw if the injected wallet isn't available.\n }\n }\n\n static fromConnectors(connectors: Connector[]): SessionConnector {\n const connector = connectors.find((c) => c.id === \"controller_session\");\n if (!connector) {\n throw new Error(\"Session connector not found\");\n }\n return connector as SessionConnector;\n }\n\n username() {\n return this.controller.username();\n }\n}\n"],"mappings":";AAAA,OAAO,wBAGA;AACP,SAAoB,yBAAyB;AAE7C,IAAqB,sBAArB,cAAiD,kBAAkB;AAAA,EAC1D;AAAA,EAEP,YAAY,UAA6B,CAAC,GAAG;AAC3C,QAAI;AAEJ,QAAI,OAAO,WAAW,eAAgB,OAAe,qBAAqB;AACxE,cAAQ;AAAA,QACN;AAAA,MAGF;AACA,mBAAc,OAAe;AAAA,IAC/B,OAAO;AACL,mBAAa,IAAI,mBAAmB,OAAO;AAAA,IAC7C;AAEA,UAAM,EAAE,SAAS,EAAE,IAAI,WAAW,IAAI,MAAM,WAAW,KAAK,EAAE,CAAC;AAC/D,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,MAAM,aAAa;AACjB,UAAM,KAAK,WAAW,WAAW;AACjC,QAAI;AACF,YAAM,MAAM,WAAW;AAAA,IACzB,QAAQ;AAAA,IAER;AAAA,EACF;AAAA,EAEA,WAAW;AACT,WAAO,KAAK,WAAW,SAAS;AAAA,EAClC;AAAA,EAEA,UAAmB;AACjB,WAAO,KAAK,WAAW,QAAQ;AAAA,EACjC;AAAA,EAEA,MAAM,kBAAkB;AACtB,WAAO,MAAM,KAAK,WAAW,gBAAgB;AAAA,EAC/C;AAAA,EAEA,MAAM,QAAQ,MAAkD;AAC9D,UAAM,EAAE,aAAa,GAAG,eAAe,IAAI,QAAQ,CAAC;AACpD,UAAM,iBACJ,QAAQ,OAAO,KAAK,cAAc,EAAE,SAAS,IACxC,iBACD;AAEN,UAAM,UAAU,MAAM,KAAK,WAAW,QAAQ,cAAc;AAC5D,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AAIA,QAAI,OAAO,WAAW,aAAa;AACjC,MAAC,OAAe,sBAAsB,KAAK;AAAA,IAC7C;AAEA,UAAM,OAAO,MAAM,MAAM,QAAQ,EAAE,YAAY,CAAC;AAKhD,WAAO,EAAE,GAAG,MAAM,SAAS,QAAQ,QAAQ;AAAA,EAC7C;AAAA,EAEA,OAAO,eAAe,YAA8C;AAClE,UAAM,YAAY,WAAW,KAAK,CAAC,MAAM,EAAE,OAAO,YAAY;AAC9D,QAAI,CAAC,WAAW;AACd,YAAM,IAAI,MAAM,gCAAgC;AAAA,IAClD;AACA,WAAO;AAAA,EACT;AAAA,EAEA,mBAAmB;AACjB,WAAO,KAAK,WAAW,iBAAiB;AAAA,EAC1C;AACF;;;
|
|
1
|
+
{"version":3,"sources":["../src/controller.ts","../src/session.ts"],"sourcesContent":["import ControllerProvider, {\n ConnectOptions,\n ControllerOptions,\n} from \"@cartridge/controller\";\nimport { Connector, InjectedConnector } from \"@starknet-react/core\";\n\nexport default class ControllerConnector extends InjectedConnector {\n public controller: ControllerProvider;\n\n constructor(options: ControllerOptions = {}) {\n let controller: ControllerProvider;\n\n if (typeof window !== \"undefined\" && (window as any).starknet_controller) {\n console.warn(\n \"ControllerConnector was instantiated multiple times. \" +\n \"Reusing existing controller to prevent errors. \" +\n \"To fix, create the connector at the module level instead of inside a React component.\",\n );\n controller = (window as any).starknet_controller;\n } else {\n controller = new ControllerProvider(options);\n }\n\n super({ options: { id: controller.id, name: controller.name } });\n this.controller = controller;\n }\n\n async disconnect() {\n await this.controller.disconnect();\n try {\n await super.disconnect();\n } catch {\n // Best-effort: starknet-react may call disconnect even when the injected wallet isn't present.\n }\n }\n\n username() {\n return this.controller.username();\n }\n\n lookupUsername(username: string) {\n return this.controller.lookupUsername(username);\n }\n\n isReady(): boolean {\n return this.controller.isReady();\n }\n\n async delegateAccount() {\n return await this.controller.delegateAccount();\n }\n\n async connect(args?: { chainIdHint?: bigint } & ConnectOptions) {\n const { chainIdHint, ...connectOptions } = args ?? {};\n const controllerArgs =\n args && Object.keys(connectOptions).length > 0\n ? (connectOptions as ConnectOptions)\n : undefined;\n\n const account = await this.controller.connect(controllerArgs);\n if (!account) {\n throw new Error(\"Failed to connect controller\");\n }\n\n // Ensure the injected wallet instance used by starknet-react (window.starknet_controller)\n // always points at the same ControllerProvider instance this connector wraps.\n if (typeof window !== \"undefined\") {\n (window as any).starknet_controller = this.controller;\n }\n\n const data = await super.connect({ chainIdHint });\n\n // `@starknet-react/core` updates its state from the `account` returned here.\n // Use the authoritative address from `controller.connect()` to avoid edge cases\n // where the injected wallet request returns an empty/undefined account.\n return { ...data, account: account.address };\n }\n\n static fromConnectors(connectors: Connector[]): ControllerConnector {\n const connector = connectors.find((c) => c.id === \"controller\");\n if (!connector) {\n throw new Error(\"Controller connector not found\");\n }\n return connector as ControllerConnector;\n }\n\n asWalletStandard() {\n return this.controller.asWalletStandard();\n }\n}\n","import SessionProvider, { SessionOptions } from \"@cartridge/controller/session\";\nimport { Connector, InjectedConnector } from \"@starknet-react/core\";\n\nexport default class SessionConnector extends InjectedConnector {\n public controller: SessionProvider;\n\n constructor(options: SessionOptions) {\n const controller = new SessionProvider(options);\n\n super({\n options: {\n id: controller.id,\n name: controller.name,\n },\n });\n\n this.controller = controller;\n }\n\n async disconnect() {\n await this.controller.disconnect();\n try {\n await super.disconnect();\n } catch {\n // Best-effort: disconnect should not throw if the injected wallet isn't available.\n }\n }\n\n static fromConnectors(connectors: Connector[]): SessionConnector {\n const connector = connectors.find((c) => c.id === \"controller_session\");\n if (!connector) {\n throw new Error(\"Session connector not found\");\n }\n return connector as SessionConnector;\n }\n\n username() {\n return this.controller.username();\n }\n}\n"],"mappings":";AAAA,OAAO,wBAGA;AACP,SAAoB,yBAAyB;AAE7C,IAAqB,sBAArB,cAAiD,kBAAkB;AAAA,EAC1D;AAAA,EAEP,YAAY,UAA6B,CAAC,GAAG;AAC3C,QAAI;AAEJ,QAAI,OAAO,WAAW,eAAgB,OAAe,qBAAqB;AACxE,cAAQ;AAAA,QACN;AAAA,MAGF;AACA,mBAAc,OAAe;AAAA,IAC/B,OAAO;AACL,mBAAa,IAAI,mBAAmB,OAAO;AAAA,IAC7C;AAEA,UAAM,EAAE,SAAS,EAAE,IAAI,WAAW,IAAI,MAAM,WAAW,KAAK,EAAE,CAAC;AAC/D,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,MAAM,aAAa;AACjB,UAAM,KAAK,WAAW,WAAW;AACjC,QAAI;AACF,YAAM,MAAM,WAAW;AAAA,IACzB,QAAQ;AAAA,IAER;AAAA,EACF;AAAA,EAEA,WAAW;AACT,WAAO,KAAK,WAAW,SAAS;AAAA,EAClC;AAAA,EAEA,eAAe,UAAkB;AAC/B,WAAO,KAAK,WAAW,eAAe,QAAQ;AAAA,EAChD;AAAA,EAEA,UAAmB;AACjB,WAAO,KAAK,WAAW,QAAQ;AAAA,EACjC;AAAA,EAEA,MAAM,kBAAkB;AACtB,WAAO,MAAM,KAAK,WAAW,gBAAgB;AAAA,EAC/C;AAAA,EAEA,MAAM,QAAQ,MAAkD;AAC9D,UAAM,EAAE,aAAa,GAAG,eAAe,IAAI,QAAQ,CAAC;AACpD,UAAM,iBACJ,QAAQ,OAAO,KAAK,cAAc,EAAE,SAAS,IACxC,iBACD;AAEN,UAAM,UAAU,MAAM,KAAK,WAAW,QAAQ,cAAc;AAC5D,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AAIA,QAAI,OAAO,WAAW,aAAa;AACjC,MAAC,OAAe,sBAAsB,KAAK;AAAA,IAC7C;AAEA,UAAM,OAAO,MAAM,MAAM,QAAQ,EAAE,YAAY,CAAC;AAKhD,WAAO,EAAE,GAAG,MAAM,SAAS,QAAQ,QAAQ;AAAA,EAC7C;AAAA,EAEA,OAAO,eAAe,YAA8C;AAClE,UAAM,YAAY,WAAW,KAAK,CAAC,MAAM,EAAE,OAAO,YAAY;AAC9D,QAAI,CAAC,WAAW;AACd,YAAM,IAAI,MAAM,gCAAgC;AAAA,IAClD;AACA,WAAO;AAAA,EACT;AAAA,EAEA,mBAAmB;AACjB,WAAO,KAAK,WAAW,iBAAiB;AAAA,EAC1C;AACF;;;ACzFA,OAAO,qBAAyC;AAChD,SAAoB,qBAAAA,0BAAyB;AAE7C,IAAqB,mBAArB,cAA8CA,mBAAkB;AAAA,EACvD;AAAA,EAEP,YAAY,SAAyB;AACnC,UAAM,aAAa,IAAI,gBAAgB,OAAO;AAE9C,UAAM;AAAA,MACJ,SAAS;AAAA,QACP,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,MACnB;AAAA,IACF,CAAC;AAED,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,MAAM,aAAa;AACjB,UAAM,KAAK,WAAW,WAAW;AACjC,QAAI;AACF,YAAM,MAAM,WAAW;AAAA,IACzB,QAAQ;AAAA,IAER;AAAA,EACF;AAAA,EAEA,OAAO,eAAe,YAA2C;AAC/D,UAAM,YAAY,WAAW,KAAK,CAAC,MAAM,EAAE,OAAO,oBAAoB;AACtE,QAAI,CAAC,WAAW;AACd,YAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AACA,WAAO;AAAA,EACT;AAAA,EAEA,WAAW;AACT,WAAO,KAAK,WAAW,SAAS;AAAA,EAClC;AACF;","names":["InjectedConnector"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cartridge/connector",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.7",
|
|
4
4
|
"description": "Cartridge Controller Connector",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@starknet-react/core": "^5.0.1"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@cartridge/controller": "0.13.
|
|
47
|
+
"@cartridge/controller": "0.13.7"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@vitest/coverage-v8": "2.1.8",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"tsup": "^8.0.1",
|
|
53
53
|
"typescript": "^5.7.3",
|
|
54
54
|
"vitest": "2.1.8",
|
|
55
|
-
"@cartridge/tsconfig": "0.13.
|
|
55
|
+
"@cartridge/tsconfig": "0.13.7"
|
|
56
56
|
},
|
|
57
57
|
"scripts": {
|
|
58
58
|
"build:deps": "tsup --dts-resolve",
|
package/src/controller.ts
CHANGED
|
@@ -38,6 +38,10 @@ export default class ControllerConnector extends InjectedConnector {
|
|
|
38
38
|
return this.controller.username();
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
lookupUsername(username: string) {
|
|
42
|
+
return this.controller.lookupUsername(username);
|
|
43
|
+
}
|
|
44
|
+
|
|
41
45
|
isReady(): boolean {
|
|
42
46
|
return this.controller.isReady();
|
|
43
47
|
}
|