@cartridge/controller 0.5.0-alpha.8 → 0.5.1

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.
@@ -1,116 +1,115 @@
1
-
2
-
3
- > @cartridge/controller@0.5.0-alpha.8 build:deps /home/broody/development/controller/packages/controller
4
- > tsup --dts-resolve
5
-
6
- CLI Building entry: src/account.ts, src/constants.ts, src/controller.ts, src/errors.ts, src/icon.ts, src/index.ts, src/presets.ts, src/provider.ts, src/types.ts, src/utils.ts, src/session/account.ts, src/session/backend.ts, src/session/index.ts, src/session/provider.ts, src/iframe/base.ts, src/iframe/index.ts, src/iframe/keychain.ts, src/iframe/profile.ts, src/telegram/backend.ts, src/telegram/provider.ts
7
- CLI Using tsconfig: tsconfig.json
8
- CLI tsup v8.3.0
9
- CLI Using tsup config: /home/broody/development/controller/packages/controller/package.json
10
- CLI Target: es2020
11
- CLI Cleaning output folder
12
- ESM Build start
13
- ESM dist/account.js 2.39 KB
14
- ESM dist/controller.js 35.03 KB
15
- ESM dist/errors.js 271.00 B
16
- ESM dist/index.js 35.46 KB
17
- ESM dist/constants.js 194.00 B
18
- ESM dist/icon.js 15.15 KB
19
- ESM dist/presets.js 3.71 KB
20
- ESM dist/provider.js 19.16 KB
21
- ESM dist/utils.js 406.00 B
22
- ESM dist/types.js 437.00 B
23
- ESM dist/session/account.js 5.81 KB
24
- ESM dist/session/backend.js 1.18 KB
25
- ESM dist/session/index.js 27.85 KB
26
- ESM dist/session/provider.js 23.58 KB
27
- ESM dist/iframe/base.js 7.17 KB
28
- ESM dist/iframe/index.js 8.51 KB
29
- ESM dist/iframe/profile.js 8.04 KB
30
- ESM dist/iframe/keychain.js 7.64 KB
31
- ESM dist/telegram/provider.js 23.14 KB
32
- ESM dist/telegram/backend.js 1.27 KB
33
- ESM dist/account.js.map 4.58 KB
34
- ESM dist/errors.js.map 385.00 B
35
- ESM dist/constants.js.map 245.00 B
36
- ESM dist/index.js.map 58.22 KB
37
- ESM dist/provider.js.map 22.49 KB
38
- ESM dist/utils.js.map 707.00 B
39
- ESM dist/controller.js.map 53.34 KB
40
- ESM dist/types.js.map 4.95 KB
41
- ESM dist/presets.js.map 6.45 KB
42
- ESM dist/session/account.js.map 14.52 KB
43
- ESM dist/session/provider.js.map 31.27 KB
44
- ESM dist/session/index.js.map 42.85 KB
45
- ESM dist/iframe/index.js.map 16.17 KB
46
- ESM dist/icon.js.map 15.20 KB
47
- ESM dist/iframe/base.js.map 13.18 KB
48
- ESM dist/session/backend.js.map 2.88 KB
49
- ESM dist/iframe/keychain.js.map 14.32 KB
50
- ESM dist/telegram/provider.js.map 30.45 KB
51
- ESM dist/iframe/profile.js.map 15.17 KB
52
- ESM dist/telegram/backend.js.map 1.98 KB
53
- ESM ⚡️ Build success in 40ms
54
- DTS Build start
55
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
56
-
57
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
58
-
59
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
60
-
61
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
62
-
63
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
64
-
65
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
66
-
67
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
68
-
69
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
70
-
71
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
72
-
73
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
74
-
75
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
76
-
77
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
78
-
79
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
80
-
81
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
82
-
83
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
84
-
85
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
86
-
87
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
88
-
89
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
90
-
91
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
92
-
93
- ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
94
-
95
- DTS ⚡️ Build success in 5052ms
96
- DTS dist/index.d.ts 891.00 B
97
- DTS dist/session/index.d.ts 909.00 B
98
- DTS dist/account.d.ts 1.64 KB
99
- DTS dist/constants.d.ts 154.00 B
100
- DTS dist/icon.d.ts 15.11 KB
101
- DTS dist/controller.d.ts 1.05 KB
102
- DTS dist/utils.d.ts 251.00 B
103
- DTS dist/session/account.d.ts 2.00 KB
104
- DTS dist/session/backend.d.ts 2.29 KB
105
- DTS dist/errors.d.ts 100.00 B
106
- DTS dist/presets.d.ts 274.00 B
107
- DTS dist/session/provider.d.ts 969.00 B
108
- DTS dist/provider.d.ts 788.00 B
109
- DTS dist/telegram/backend.d.ts 1.27 KB
110
- DTS dist/telegram/provider.d.ts 706.00 B
111
- DTS dist/iframe/base.d.ts 196.00 B
112
- DTS dist/iframe/keychain.d.ts 184.00 B
113
- DTS dist/iframe/profile.d.ts 210.00 B
114
- DTS dist/iframe/index.d.ts 264.00 B
115
- DTS dist/types.d.ts 728.00 B
116
- DTS dist/types-4W1md4rs.d.ts 6.42 KB
1
+
2
+ > @cartridge/controller@0.5.1 build:deps /home/runner/work/controller/controller/packages/controller
3
+ > tsup --dts-resolve
4
+
5
+ CLI Building entry: src/account.ts, src/constants.ts, src/controller.ts, src/errors.ts, src/icon.ts, src/index.ts, src/presets.ts, src/provider.ts, src/types.ts, src/utils.ts, src/iframe/base.ts, src/iframe/index.ts, src/iframe/keychain.ts, src/iframe/profile.ts, src/session/account.ts, src/session/backend.ts, src/session/index.ts, src/session/provider.ts, src/telegram/backend.ts, src/telegram/provider.ts
6
+ CLI Using tsconfig: tsconfig.json
7
+ CLI tsup v8.3.0
8
+ CLI Using tsup config: /home/runner/work/controller/controller/packages/controller/package.json
9
+ CLI Target: es2020
10
+ CLI Cleaning output folder
11
+ ESM Build start
12
+ ESM dist/account.js 2.61 KB
13
+ ESM dist/iframe/base.js 7.17 KB
14
+ ESM dist/session/account.js 5.86 KB
15
+ ESM dist/telegram/backend.js 1.27 KB
16
+ ESM dist/controller.js 35.73 KB
17
+ ESM dist/errors.js 271.00 B
18
+ ESM dist/constants.js 194.00 B
19
+ ESM dist/icon.js 15.15 KB
20
+ ESM dist/index.js 36.16 KB
21
+ ESM dist/presets.js 3.71 KB
22
+ ESM dist/provider.js 19.16 KB
23
+ ESM dist/types.js 437.00 B
24
+ ESM dist/utils.js 1.08 KB
25
+ ESM dist/iframe/index.js 8.51 KB
26
+ ESM dist/iframe/keychain.js 7.64 KB
27
+ ESM dist/iframe/profile.js 8.04 KB
28
+ ESM dist/session/backend.js 1.18 KB
29
+ ESM dist/session/index.js 28.54 KB
30
+ ESM dist/session/provider.js 24.26 KB
31
+ ESM dist/telegram/provider.js 23.82 KB
32
+ ESM dist/account.js.map 5.08 KB
33
+ ESM dist/iframe/base.js.map 13.18 KB
34
+ ESM dist/session/account.js.map 15.68 KB
35
+ ESM dist/telegram/backend.js.map 1.98 KB
36
+ ESM dist/errors.js.map 385.00 B
37
+ ESM dist/constants.js.map 245.00 B
38
+ ESM dist/controller.js.map 54.72 KB
39
+ ESM dist/icon.js.map 15.20 KB
40
+ ESM dist/presets.js.map 6.45 KB
41
+ ESM dist/provider.js.map 22.49 KB
42
+ ESM dist/types.js.map 5.23 KB
43
+ ESM dist/index.js.map 59.88 KB
44
+ ESM dist/utils.js.map 1.96 KB
45
+ ESM dist/iframe/index.js.map 16.17 KB
46
+ ESM dist/iframe/keychain.js.map 14.32 KB
47
+ ESM dist/iframe/profile.js.map 15.17 KB
48
+ ESM dist/session/backend.js.map 2.88 KB
49
+ ESM dist/session/index.js.map 44.48 KB
50
+ ESM dist/session/provider.js.map 32.62 KB
51
+ ESM dist/telegram/provider.js.map 31.79 KB
52
+ ESM ⚡️ Build success in 59ms
53
+ DTS Build start
54
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
55
+
56
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
57
+
58
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
59
+
60
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
61
+
62
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
63
+
64
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
65
+
66
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
67
+
68
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
69
+
70
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
71
+
72
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
73
+
74
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
75
+
76
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
77
+
78
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
79
+
80
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
81
+
82
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
83
+
84
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
85
+
86
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
87
+
88
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
89
+
90
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
91
+
92
+ ../tsconfig/base.json(6,25): error TS6046: Argument for '--moduleResolution' option must be: 'node', 'classic', 'node16', 'nodenext'.
93
+
94
+ DTS ⚡️ Build success in 5274ms
95
+ DTS dist/index.d.ts 885.00 B
96
+ DTS dist/session/index.d.ts 903.00 B
97
+ DTS dist/account.d.ts 1.59 KB
98
+ DTS dist/constants.d.ts 154.00 B
99
+ DTS dist/icon.d.ts 15.11 KB
100
+ DTS dist/controller.d.ts 1.04 KB
101
+ DTS dist/utils.d.ts 501.00 B
102
+ DTS dist/session/account.d.ts 1.99 KB
103
+ DTS dist/session/backend.d.ts 2.29 KB
104
+ DTS dist/errors.d.ts 100.00 B
105
+ DTS dist/presets.d.ts 229.00 B
106
+ DTS dist/session/provider.d.ts 924.00 B
107
+ DTS dist/provider.d.ts 743.00 B
108
+ DTS dist/telegram/backend.d.ts 1.27 KB
109
+ DTS dist/telegram/provider.d.ts 706.00 B
110
+ DTS dist/iframe/base.d.ts 151.00 B
111
+ DTS dist/iframe/keychain.d.ts 139.00 B
112
+ DTS dist/iframe/profile.d.ts 165.00 B
113
+ DTS dist/iframe/index.d.ts 219.00 B
114
+ DTS dist/types.d.ts 722.00 B
115
+ DTS dist/types-ikHqoYmG.d.ts 6.70 KB
package/dist/account.d.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  import { WalletAccount, AllowArray, Call, InvokeFunctionResponse, TypedData } from 'starknet';
2
2
  import { SPEC } from '@starknet-io/types-js';
3
- import { K as Keychain, i as KeychainOptions, M as Modal } from './types-4W1md4rs.js';
3
+ import { K as Keychain, j as KeychainOptions, M as Modal } from './types-ikHqoYmG.js';
4
4
  import { AsyncMethodReturns } from '@cartridge/penpal';
5
5
  import BaseProvider from './provider.js';
6
- import '@cartridge/account-wasm/controller';
7
6
 
8
7
  declare class ControllerAccount extends WalletAccount {
9
8
  address: string;
package/dist/account.js CHANGED
@@ -65,18 +65,21 @@ var ControllerAccount = class extends WalletAccount {
65
65
  * @throws {Error} if the JSON object is not a valid JSON
66
66
  */
67
67
  async signMessage(typedData) {
68
- try {
68
+ return new Promise(async (resolve, reject) => {
69
+ const sessionSign = await this.keychain.signMessage(typedData, "", true);
70
+ if (!("code" in sessionSign)) {
71
+ resolve(sessionSign);
72
+ return;
73
+ }
69
74
  this.modal.open();
70
- const res = await this.keychain.signMessage(typedData, "");
71
- this.modal.close();
72
- if ("code" in res) {
73
- throw res;
75
+ const manualSign = await this.keychain.signMessage(typedData, "", false);
76
+ if (!("code" in manualSign)) {
77
+ resolve(manualSign);
78
+ } else {
79
+ reject(manualSign.error);
74
80
  }
75
- return res;
76
- } catch (e) {
77
- console.error(e);
78
- throw e;
79
- }
81
+ this.modal.close();
82
+ });
80
83
  }
81
84
  };
82
85
  var account_default = ControllerAccount;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/account.ts"],"sourcesContent":["import {\n InvokeFunctionResponse,\n TypedData,\n WalletAccount,\n Call,\n AllowArray,\n} from \"starknet\";\n\nimport { SPEC } from \"@starknet-io/types-js\";\n\nimport {\n ConnectError,\n Keychain,\n KeychainOptions,\n Modal,\n ResponseCodes,\n} from \"./types\";\nimport { AsyncMethodReturns } from \"@cartridge/penpal\";\nimport BaseProvider from \"./provider\";\n\nclass ControllerAccount extends WalletAccount {\n address: string;\n private keychain: AsyncMethodReturns<Keychain>;\n private modal: Modal;\n private options?: KeychainOptions;\n\n constructor(\n provider: BaseProvider,\n address: string,\n keychain: AsyncMethodReturns<Keychain>,\n options: KeychainOptions,\n modal: Modal,\n ) {\n super({ nodeUrl: provider.rpc.toString() }, provider);\n\n this.address = address;\n this.keychain = keychain;\n this.options = options;\n this.modal = modal;\n }\n\n /**\n * Invoke execute function in account contract\n *\n * @param calls the invocation object or an array of them, containing:\n * - contractAddress - the address of the contract\n * - entrypoint - the entrypoint of the contract\n * - calldata - (defaults to []) the calldata\n * - signature - (defaults to []) the signature\n * @param abis (optional) the abi of the contract for better displaying\n *\n * @returns response from addTransaction\n */\n async execute(calls: AllowArray<Call>): Promise<InvokeFunctionResponse> {\n calls = Array.isArray(calls) ? calls : [calls];\n\n return new Promise(async (resolve, reject) => {\n const sessionExecute = await this.keychain.execute(\n calls,\n undefined,\n undefined,\n false,\n );\n\n // Session call succeeded\n if (sessionExecute.code === ResponseCodes.SUCCESS) {\n resolve(sessionExecute as InvokeFunctionResponse);\n return;\n }\n\n // Propagates session txn error back to caller\n if (this.options?.propagateSessionErrors) {\n reject((sessionExecute as ConnectError).error);\n return;\n }\n\n // Session call or Paymaster flow failed.\n // Session not avaialble, manual flow fallback\n this.modal.open();\n const manualExecute = await this.keychain.execute(\n calls,\n undefined,\n undefined,\n true,\n (sessionExecute as ConnectError).error,\n );\n\n // Manual call succeeded\n if (manualExecute.code === ResponseCodes.SUCCESS) {\n resolve(manualExecute as InvokeFunctionResponse);\n this.modal.close();\n return;\n }\n\n reject((manualExecute as ConnectError).error);\n return;\n });\n }\n\n /**\n * Sign an JSON object for off-chain usage with the starknet private key and return the signature\n * This adds a message prefix so it cant be interchanged with transactions\n *\n * @param json - JSON object to be signed\n * @returns the signature of the JSON object\n * @throws {Error} if the JSON object is not a valid JSON\n */\n async signMessage(typedData: TypedData): Promise<SPEC.SIGNATURE> {\n try {\n this.modal.open();\n const res = await this.keychain.signMessage(typedData, \"\");\n this.modal.close();\n\n if (\"code\" in res) {\n throw res;\n }\n\n return res;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport default ControllerAccount;\n"],"mappings":";AAAA;AAAA,EAGE;AAAA,OAGK;AAcP,IAAM,oBAAN,cAAgC,cAAc;AAAA,EAM5C,YACE,UACA,SACA,UACA,SACA,OACA;AACA,UAAM,EAAE,SAAS,SAAS,IAAI,SAAS,EAAE,GAAG,QAAQ;AAEpD,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,SAAK,QAAQ;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,QAAQ,OAA0D;AACtE,YAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAE7C,WAAO,IAAI,QAAQ,OAAO,SAAS,WAAW;AAC5C,YAAM,iBAAiB,MAAM,KAAK,SAAS;AAAA,QACzC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAGA,UAAI,eAAe,kCAAgC;AACjD,gBAAQ,cAAwC;AAChD;AAAA,MACF;AAGA,UAAI,KAAK,SAAS,wBAAwB;AACxC,eAAQ,eAAgC,KAAK;AAC7C;AAAA,MACF;AAIA,WAAK,MAAM,KAAK;AAChB,YAAM,gBAAgB,MAAM,KAAK,SAAS;AAAA,QACxC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACC,eAAgC;AAAA,MACnC;AAGA,UAAI,cAAc,kCAAgC;AAChD,gBAAQ,aAAuC;AAC/C,aAAK,MAAM,MAAM;AACjB;AAAA,MACF;AAEA,aAAQ,cAA+B,KAAK;AAC5C;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,YAAY,WAA+C;AAC/D,QAAI;AACF,WAAK,MAAM,KAAK;AAChB,YAAM,MAAM,MAAM,KAAK,SAAS,YAAY,WAAW,EAAE;AACzD,WAAK,MAAM,MAAM;AAEjB,UAAI,UAAU,KAAK;AACjB,cAAM;AAAA,MACR;AAEA,aAAO;AAAA,IACT,SAAS,GAAG;AACV,cAAQ,MAAM,CAAC;AACf,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,IAAO,kBAAQ;","names":[]}
1
+ {"version":3,"sources":["../src/account.ts"],"sourcesContent":["import {\n InvokeFunctionResponse,\n TypedData,\n WalletAccount,\n Call,\n AllowArray,\n} from \"starknet\";\n\nimport { SPEC } from \"@starknet-io/types-js\";\n\nimport {\n ConnectError,\n Keychain,\n KeychainOptions,\n Modal,\n ResponseCodes,\n} from \"./types\";\nimport { AsyncMethodReturns } from \"@cartridge/penpal\";\nimport BaseProvider from \"./provider\";\n\nclass ControllerAccount extends WalletAccount {\n address: string;\n private keychain: AsyncMethodReturns<Keychain>;\n private modal: Modal;\n private options?: KeychainOptions;\n\n constructor(\n provider: BaseProvider,\n address: string,\n keychain: AsyncMethodReturns<Keychain>,\n options: KeychainOptions,\n modal: Modal,\n ) {\n super({ nodeUrl: provider.rpc.toString() }, provider);\n\n this.address = address;\n this.keychain = keychain;\n this.options = options;\n this.modal = modal;\n }\n\n /**\n * Invoke execute function in account contract\n *\n * @param calls the invocation object or an array of them, containing:\n * - contractAddress - the address of the contract\n * - entrypoint - the entrypoint of the contract\n * - calldata - (defaults to []) the calldata\n * - signature - (defaults to []) the signature\n * @param abis (optional) the abi of the contract for better displaying\n *\n * @returns response from addTransaction\n */\n async execute(calls: AllowArray<Call>): Promise<InvokeFunctionResponse> {\n calls = Array.isArray(calls) ? calls : [calls];\n\n return new Promise(async (resolve, reject) => {\n const sessionExecute = await this.keychain.execute(\n calls,\n undefined,\n undefined,\n false,\n );\n\n // Session call succeeded\n if (sessionExecute.code === ResponseCodes.SUCCESS) {\n resolve(sessionExecute as InvokeFunctionResponse);\n return;\n }\n\n // Propagates session txn error back to caller\n if (this.options?.propagateSessionErrors) {\n reject((sessionExecute as ConnectError).error);\n return;\n }\n\n // Session call or Paymaster flow failed.\n // Session not avaialble, manual flow fallback\n this.modal.open();\n const manualExecute = await this.keychain.execute(\n calls,\n undefined,\n undefined,\n true,\n (sessionExecute as ConnectError).error,\n );\n\n // Manual call succeeded\n if (manualExecute.code === ResponseCodes.SUCCESS) {\n resolve(manualExecute as InvokeFunctionResponse);\n this.modal.close();\n return;\n }\n\n reject((manualExecute as ConnectError).error);\n return;\n });\n }\n\n /**\n * Sign an JSON object for off-chain usage with the starknet private key and return the signature\n * This adds a message prefix so it cant be interchanged with transactions\n *\n * @param json - JSON object to be signed\n * @returns the signature of the JSON object\n * @throws {Error} if the JSON object is not a valid JSON\n */\n async signMessage(typedData: TypedData): Promise<SPEC.SIGNATURE> {\n return new Promise(async (resolve, reject) => {\n const sessionSign = await this.keychain.signMessage(typedData, \"\", true);\n\n // Session sign succeeded\n if (!(\"code\" in sessionSign)) {\n resolve(sessionSign as SPEC.SIGNATURE);\n return;\n }\n\n // Session not avaialble, manual flow fallback\n this.modal.open();\n const manualSign = await this.keychain.signMessage(typedData, \"\", false);\n\n if (!(\"code\" in manualSign)) {\n resolve(manualSign as SPEC.SIGNATURE);\n } else {\n reject((manualSign as ConnectError).error);\n }\n this.modal.close();\n });\n }\n}\n\nexport default ControllerAccount;\n"],"mappings":";AAAA;AAAA,EAGE;AAAA,OAGK;AAcP,IAAM,oBAAN,cAAgC,cAAc;AAAA,EAM5C,YACE,UACA,SACA,UACA,SACA,OACA;AACA,UAAM,EAAE,SAAS,SAAS,IAAI,SAAS,EAAE,GAAG,QAAQ;AAEpD,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,SAAK,QAAQ;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,QAAQ,OAA0D;AACtE,YAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAE7C,WAAO,IAAI,QAAQ,OAAO,SAAS,WAAW;AAC5C,YAAM,iBAAiB,MAAM,KAAK,SAAS;AAAA,QACzC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAGA,UAAI,eAAe,kCAAgC;AACjD,gBAAQ,cAAwC;AAChD;AAAA,MACF;AAGA,UAAI,KAAK,SAAS,wBAAwB;AACxC,eAAQ,eAAgC,KAAK;AAC7C;AAAA,MACF;AAIA,WAAK,MAAM,KAAK;AAChB,YAAM,gBAAgB,MAAM,KAAK,SAAS;AAAA,QACxC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACC,eAAgC;AAAA,MACnC;AAGA,UAAI,cAAc,kCAAgC;AAChD,gBAAQ,aAAuC;AAC/C,aAAK,MAAM,MAAM;AACjB;AAAA,MACF;AAEA,aAAQ,cAA+B,KAAK;AAC5C;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,YAAY,WAA+C;AAC/D,WAAO,IAAI,QAAQ,OAAO,SAAS,WAAW;AAC5C,YAAM,cAAc,MAAM,KAAK,SAAS,YAAY,WAAW,IAAI,IAAI;AAGvE,UAAI,EAAE,UAAU,cAAc;AAC5B,gBAAQ,WAA6B;AACrC;AAAA,MACF;AAGA,WAAK,MAAM,KAAK;AAChB,YAAM,aAAa,MAAM,KAAK,SAAS,YAAY,WAAW,IAAI,KAAK;AAEvE,UAAI,EAAE,UAAU,aAAa;AAC3B,gBAAQ,UAA4B;AAAA,MACtC,OAAO;AACL,eAAQ,WAA4B,KAAK;AAAA,MAC3C;AACA,WAAK,MAAM,MAAM;AAAA,IACnB,CAAC;AAAA,EACH;AACF;AAEA,IAAO,kBAAQ;","names":[]}
@@ -1,9 +1,8 @@
1
- import { f as ControllerOptions, k as ProfileContextTypeVariant, P as Policy } from './types-4W1md4rs.js';
1
+ import { g as ControllerOptions, l as ProfileContextTypeVariant, P as Policy } from './types-ikHqoYmG.js';
2
2
  import BaseProvider from './provider.js';
3
3
  import { WalletAccount } from 'starknet';
4
4
  import '@starknet-io/types-js';
5
5
  import '@cartridge/penpal';
6
- import '@cartridge/account-wasm/controller';
7
6
 
8
7
  declare class ControllerProvider extends BaseProvider {
9
8
  private keychain?;
@@ -20,6 +19,7 @@ declare class ControllerProvider extends BaseProvider {
20
19
  username(): Promise<string> | undefined;
21
20
  fetchControllers(contractAddresses: string[]): Promise<Record<string, string>>;
22
21
  openPurchaseCredits(): void;
22
+ private openExecute;
23
23
  delegateAccount(): Promise<string | null>;
24
24
  private waitForKeychain;
25
25
  }
@@ -65,18 +65,21 @@ var ControllerAccount = class extends WalletAccount {
65
65
  * @throws {Error} if the JSON object is not a valid JSON
66
66
  */
67
67
  async signMessage(typedData) {
68
- try {
68
+ return new Promise(async (resolve, reject) => {
69
+ const sessionSign = await this.keychain.signMessage(typedData, "", true);
70
+ if (!("code" in sessionSign)) {
71
+ resolve(sessionSign);
72
+ return;
73
+ }
69
74
  this.modal.open();
70
- const res = await this.keychain.signMessage(typedData, "");
71
- this.modal.close();
72
- if ("code" in res) {
73
- throw res;
75
+ const manualSign = await this.keychain.signMessage(typedData, "", false);
76
+ if (!("code" in manualSign)) {
77
+ resolve(manualSign);
78
+ } else {
79
+ reject(manualSign.error);
74
80
  }
75
- return res;
76
- } catch (e) {
77
- console.error(e);
78
- throw e;
79
- }
81
+ this.modal.close();
82
+ });
80
83
  }
81
84
  };
82
85
  var account_default = ControllerAccount;
@@ -608,7 +611,9 @@ var ControllerProvider = class extends BaseProvider {
608
611
  this.profile = profile;
609
612
  },
610
613
  methods: {
611
- openPurchaseCredits: this.openPurchaseCredits.bind(this)
614
+ openSettings: this.openSettings.bind(this),
615
+ openPurchaseCredits: this.openPurchaseCredits.bind(this),
616
+ openExecute: this.openExecute.bind(this)
612
617
  },
613
618
  rpcUrl: this.rpc.toString(),
614
619
  username
@@ -685,6 +690,7 @@ var ControllerProvider = class extends BaseProvider {
685
690
  console.error(new NotReadyToConnect().message);
686
691
  return null;
687
692
  }
693
+ this.iframes.profile?.close();
688
694
  this.iframes.keychain.open();
689
695
  const res = await this.keychain.openSettings();
690
696
  this.iframes.keychain.close();
@@ -726,6 +732,19 @@ var ControllerProvider = class extends BaseProvider {
726
732
  this.iframes.keychain.open();
727
733
  this.keychain.openPurchaseCredits();
728
734
  }
735
+ openExecute(calls) {
736
+ if (!this.keychain || !this.iframes.keychain) {
737
+ console.error(new NotReadyToConnect().message);
738
+ return;
739
+ }
740
+ if (!this.iframes.profile) {
741
+ console.error("Profile is not ready");
742
+ return;
743
+ }
744
+ this.iframes.profile.close();
745
+ this.iframes.keychain.open();
746
+ this.keychain.execute(calls);
747
+ }
729
748
  async delegateAccount() {
730
749
  if (!this.keychain) {
731
750
  console.error(new NotReadyToConnect().message);