@cartridge/controller 0.1.62 → 0.1.65
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/lib/device.d.ts +3 -2
- package/lib/device.js +8 -3
- package/lib/device.js.map +1 -1
- package/lib/index.d.ts +9 -2
- package/lib/index.js +37 -5
- package/lib/index.js.map +1 -1
- package/lib/signer.d.ts +2 -1
- package/lib/signer.js +7 -0
- package/lib/signer.js.map +1 -1
- package/lib/types.d.ts +5 -3
- package/lib/webauthn.d.ts +9 -5
- package/lib/webauthn.js +64 -49
- package/lib/webauthn.js.map +1 -1
- package/package.json +2 -2
package/lib/device.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Account, DeployContractPayload, Abi, Call, EstimateFeeDetails, DeployContractResponse as StarknetDeployContractResponse, InvocationsDetails, Signature, typedData, InvokeFunctionResponse, EstimateFee } from "starknet";
|
|
1
|
+
import { Account, DeployContractPayload, Abi, Call, EstimateFeeDetails, DeployContractResponse as StarknetDeployContractResponse, InvocationsDetails, Signature, typedData, InvokeFunctionResponse, EstimateFee, DeclareContractPayload } from "starknet";
|
|
2
2
|
import { Keychain } from "./types";
|
|
3
3
|
import { AsyncMethodReturns } from "@cartridge/penpal";
|
|
4
4
|
declare class DeviceAccount extends Account {
|
|
@@ -30,7 +30,8 @@ declare class DeviceAccount extends Account {
|
|
|
30
30
|
*
|
|
31
31
|
* @returns response from addTransaction
|
|
32
32
|
*/
|
|
33
|
-
|
|
33
|
+
estimateInvokeFee(calls: Call | Call[], details?: EstimateFeeDetails): Promise<EstimateFee>;
|
|
34
|
+
estimateDeclareFee(payload: DeclareContractPayload, details?: EstimateFeeDetails): Promise<EstimateFee>;
|
|
34
35
|
/**
|
|
35
36
|
* Invoke execute function in account contract
|
|
36
37
|
*
|
package/lib/device.js
CHANGED
|
@@ -15,7 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
const starknet_1 = require("starknet");
|
|
16
16
|
const query_string_1 = __importDefault(require("query-string"));
|
|
17
17
|
const signer_1 = require("./signer");
|
|
18
|
-
const constants_1 = require("starknet/constants");
|
|
18
|
+
const constants_1 = require("starknet/dist/constants");
|
|
19
19
|
class DeviceAccount extends starknet_1.Account {
|
|
20
20
|
constructor(address, keychain, options) {
|
|
21
21
|
super(starknet_1.defaultProvider, address, new signer_1.Signer(keychain, options));
|
|
@@ -52,9 +52,14 @@ class DeviceAccount extends starknet_1.Account {
|
|
|
52
52
|
*
|
|
53
53
|
* @returns response from addTransaction
|
|
54
54
|
*/
|
|
55
|
-
|
|
55
|
+
estimateInvokeFee(calls, details) {
|
|
56
56
|
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
-
return this.keychain.
|
|
57
|
+
return this.keychain.estimateInvokeFee(calls, details);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
estimateDeclareFee(payload, details) {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
return this.keychain.estimateDeclareFee(payload, details);
|
|
58
63
|
});
|
|
59
64
|
}
|
|
60
65
|
/**
|
package/lib/device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { AccountInterface } from "starknet";
|
|
2
3
|
import { Session, Policy } from "./types";
|
|
3
|
-
import { BigNumberish } from "starknet/utils/number";
|
|
4
|
+
import { BigNumberish } from "starknet/dist/utils/number";
|
|
4
5
|
declare class Controller {
|
|
5
6
|
private selector;
|
|
6
7
|
private connection?;
|
|
@@ -21,7 +22,13 @@ declare class Controller {
|
|
|
21
22
|
address: string;
|
|
22
23
|
deviceKey: string;
|
|
23
24
|
} | null>;
|
|
24
|
-
login(address: string, credentialId: string,
|
|
25
|
+
login(address: string, credentialId: string, options: {
|
|
26
|
+
rpId?: string;
|
|
27
|
+
challengeExt?: Buffer;
|
|
28
|
+
}): Promise<{
|
|
29
|
+
assertion: import("./webauthn").Assertion;
|
|
30
|
+
receipt: import("starknet").InvokeFunctionResponse;
|
|
31
|
+
} | null>;
|
|
25
32
|
provision(address: string): Promise<string | null>;
|
|
26
33
|
connect(): Promise<AccountInterface | null>;
|
|
27
34
|
disconnect(): Promise<void | null>;
|
package/lib/index.js
CHANGED
|
@@ -10,6 +10,18 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
10
10
|
if (k2 === undefined) k2 = k;
|
|
11
11
|
o[k2] = m[k];
|
|
12
12
|
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
13
25
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
26
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
27
|
};
|
|
@@ -31,8 +43,10 @@ const query_string_1 = __importDefault(require("query-string"));
|
|
|
31
43
|
const starknet_1 = require("starknet");
|
|
32
44
|
const penpal_1 = require("@cartridge/penpal");
|
|
33
45
|
const device_1 = __importDefault(require("./device"));
|
|
34
|
-
const number_1 = require("starknet/utils/number");
|
|
35
|
-
const webauthn_1 =
|
|
46
|
+
const number_1 = require("starknet/dist/utils/number");
|
|
47
|
+
const webauthn_1 = __importStar(require("./webauthn"));
|
|
48
|
+
const hash_1 = require("starknet/dist/utils/hash");
|
|
49
|
+
const transaction_1 = require("starknet/dist/utils/transaction");
|
|
36
50
|
class Controller {
|
|
37
51
|
constructor(policies, options) {
|
|
38
52
|
this.selector = "cartridge-messenger";
|
|
@@ -107,14 +121,14 @@ class Controller {
|
|
|
107
121
|
return yield this.keychain.register(username, credential);
|
|
108
122
|
});
|
|
109
123
|
}
|
|
110
|
-
login(address, credentialId,
|
|
124
|
+
login(address, credentialId, options) {
|
|
111
125
|
return __awaiter(this, void 0, void 0, function* () {
|
|
112
126
|
if (!this.keychain) {
|
|
113
127
|
console.error("not ready for connect");
|
|
114
128
|
return null;
|
|
115
129
|
}
|
|
116
130
|
const deviceKey = yield this.keychain.provision(address);
|
|
117
|
-
const account = new webauthn_1.default(address, credentialId, deviceKey,
|
|
131
|
+
const account = new webauthn_1.default(address, credentialId, deviceKey, options);
|
|
118
132
|
const calls = [
|
|
119
133
|
{
|
|
120
134
|
contractAddress: address,
|
|
@@ -122,7 +136,25 @@ class Controller {
|
|
|
122
136
|
calldata: [deviceKey],
|
|
123
137
|
},
|
|
124
138
|
];
|
|
125
|
-
|
|
139
|
+
const nonce = yield account.getNonce();
|
|
140
|
+
const { suggestedMaxFee } = yield account.estimateInvokeFee(calls, { nonce });
|
|
141
|
+
const maxFee = suggestedMaxFee.toString();
|
|
142
|
+
const version = (0, number_1.toBN)(hash_1.transactionVersion);
|
|
143
|
+
const chainId = yield account.getChainId();
|
|
144
|
+
const calldata = (0, transaction_1.fromCallsToExecuteCalldata)(calls);
|
|
145
|
+
let msgHash = (0, hash_1.calculateTransactionHash)(account.address, version, calldata, maxFee, chainId, nonce);
|
|
146
|
+
let challenge = Buffer.from(msgHash.slice(2).padStart(64, "0").slice(0, 64), "hex");
|
|
147
|
+
if (options.challengeExt) {
|
|
148
|
+
challenge = Buffer.concat([challenge, options.challengeExt]);
|
|
149
|
+
}
|
|
150
|
+
const assertion = yield account.signer.sign(challenge);
|
|
151
|
+
const signature = (0, webauthn_1.formatAssertion)(assertion);
|
|
152
|
+
const receipt = yield account.invokeFunction({ contractAddress: account.address, calldata, signature }, {
|
|
153
|
+
nonce,
|
|
154
|
+
maxFee,
|
|
155
|
+
version,
|
|
156
|
+
});
|
|
157
|
+
return { assertion, receipt };
|
|
126
158
|
});
|
|
127
159
|
}
|
|
128
160
|
provision(address) {
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAA8B;AAC9B,uCAA0D;AAC1D,8CAAmF;AAEnF,sDAAqC;AAErC,uDAAgE;AAChE,uDAA8D;AAC9D,mDAAwF;AACxF,iEAA6E;AAE7E,MAAM,UAAU;IAQd,YACE,QAAmB,EACnB,OAGC;QAZK,aAAQ,GAAG,qBAAqB,CAAC;QAGjC,aAAQ,GAAa,EAAE,CAAC;QACxB,QAAG,GAAW,wBAAwB,CAAC;QAU7C,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;QAED,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,EAAE;YAChB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;SACxB;QAED,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,OAAM;SACP;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1B,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACzB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QACnC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QAEvC,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE;YAC/B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;SAC9D;QAED,IACE,QAAQ,CAAC,UAAU,KAAK,UAAU;YAClC,QAAQ,CAAC,UAAU,KAAK,aAAa,EACrC;YACA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SACnC;aAAM;YACL,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBACjD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,UAAU,GAAG,IAAA,uBAAc,EAAW;YACzC,MAAM;YACN,KAAK,EAAE,IAAI;SACZ,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CACxC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CACzB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IAC5B,CAAC;IAEK,KAAK;;;YACT,OAAO,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;;KAC3F;IAEK,KAAK;;YACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;gBACtC,OAAO,IAAI,CAAC;aACb;YAED,IAAI;gBACF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAChD,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAa,CAC9B,OAAO,EACP,IAAI,CAAC,QAAQ,EACb;oBACE,GAAG,EAAE,IAAI,CAAC,GAAG;iBACd,CACF,CAAC;aACH;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;aACjB;YAED,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC;KAAA;IAED,6BAA6B;IACvB,QAAQ,CAAC,QAAgB,EAAE,UAAoC;;YACnE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;gBACtC,OAAO,IAAI,CAAC;aACb;YAED,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5D,CAAC;KAAA;IAEK,KAAK,CAAC,OAAe,EAAE,YAAoB,EAAE,OAGlD;;YACC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;gBACtC,OAAO,IAAI,CAAC;aACb;YAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,IAAI,kBAAe,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC/E,MAAM,KAAK,GAAW;gBACpB;oBACE,eAAe,EAAE,OAAO;oBACxB,UAAU,EAAE,gBAAgB;oBAC5B,QAAQ,EAAE,CAAC,SAAS,CAAC;iBACtB;aACF,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;YAE1C,MAAM,OAAO,GAAG,IAAA,aAAI,EAAC,yBAAkB,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAE3C,MAAM,QAAQ,GAAG,IAAA,wCAA0B,EAAC,KAAK,CAAC,CAAC;YACnD,IAAI,OAAO,GAAG,IAAA,+BAAwB,EACpC,OAAO,CAAC,OAAO,EACf,OAAO,EACP,QAAQ,EACR,MAAM,EACN,OAAO,EACP,KAAK,CACN,CAAC;YAEF,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,CACzB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAC/C,KAAK,CACN,CAAC;YAEF,IAAI,OAAO,CAAC,YAAY,EAAE;gBACxB,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAA;aAC7D;YAED,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACtD,MAAM,SAAS,GAAG,IAAA,0BAAe,EAAC,SAAS,CAAC,CAAA;YAE5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAC1C,EAAE,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EACzD;gBACE,KAAK;gBACL,MAAM;gBACN,OAAO;aACR,CACF,CAAC;YAEF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;QAC/B,CAAC;KAAA;IAEK,SAAS,CAAC,OAAe;;YAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;gBACtC,OAAO,IAAI,CAAC;aACb;YAED,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEK,OAAO;;YACX,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,OAAO,IAAI,CAAC,OAAO,CAAC;aACrB;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;gBACtC,OAAO,IAAI,CAAC;aACb;YAED,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAC/B,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAA;gBAC5C,IAAI,CAAC,EAAE,EAAE;oBACP,MAAM,QAAQ,CAAC,oBAAoB,EAAE,CAAA;iBACtC;aACF;YAED,MAAM,CAAC,IAAI,CACT,GAAG,IAAI,CAAC,GAAG,YAAY,sBAAE,CAAC,SAAS,CAAC;gBAClC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;aACxC,CAAC,EAAE,EACJ,QAAQ,EACR,sBAAsB,CACvB,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE5D,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAa,CAC9B,QAAQ,CAAC,OAAO,EAChB,IAAI,CAAC,QAAQ,EACb;gBACE,GAAG,EAAE,IAAI,CAAC,GAAG;aACd,CACF,CAAC;YAEF,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;KAAA;IAEK,UAAU;;YACd,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;gBACzC,OAAO,IAAI,CAAC;aACb;YAED,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAC/B,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAA;gBAC5C,IAAI,CAAC,EAAE,EAAE;oBACP,MAAM,QAAQ,CAAC,oBAAoB,EAAE,CAAA;iBACtC;aACF;YAED,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC1C,CAAC;KAAA;IAED,MAAM,CAAC,MAAc,EAAE,MAAgB;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;YACzC,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEK,SAAS,CAAC,MAAc;;YAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;gBACzC,OAAO;aACR;YAED,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACxC,CAAC;KAAA;CACF;AAED,MAAM,IAAI,GAAG,iBAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAA,aAAI,EAAC,EAAE,CAAC,CAAC,CAAC;AAE1C,SAAgB,KAAK,CAAC,CAAe;IACnC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACrB,CAAC;AALD,sBAKC;AAGD,0CAAwB;AACxB,2CAAyB;AACzB,6CAA2B;AAC3B,kBAAe,UAAU,CAAC"}
|
package/lib/signer.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Abi, InvocationsSignerDetails, SignerInterface, Signature, typedData, Call } from "starknet";
|
|
1
|
+
import { Abi, InvocationsSignerDetails, SignerInterface, Signature, typedData, Call, DeclareSignerDetails } from "starknet";
|
|
2
2
|
import { Keychain } from "./types";
|
|
3
3
|
import { AsyncMethodReturns } from "@cartridge/penpal";
|
|
4
4
|
export declare class Signer implements SignerInterface {
|
|
@@ -36,4 +36,5 @@ export declare class Signer implements SignerInterface {
|
|
|
36
36
|
* @returns signature
|
|
37
37
|
*/
|
|
38
38
|
signTransaction(calls: Call[], transactionsDetail: InvocationsSignerDetails, abis?: Abi[]): Promise<Signature>;
|
|
39
|
+
signDeclareTransaction(details: DeclareSignerDetails): Promise<Signature>;
|
|
39
40
|
}
|
package/lib/signer.js
CHANGED
|
@@ -69,6 +69,13 @@ class Signer {
|
|
|
69
69
|
return this.keychain.signTransaction(calls, transactionsDetail, abis);
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
|
+
signDeclareTransaction(
|
|
73
|
+
// contractClass: ContractClass, // Should be used once class hash is present in ContractClass
|
|
74
|
+
details) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
return this.keychain.signDeclareTransaction(details);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
72
79
|
}
|
|
73
80
|
exports.Signer = Signer;
|
|
74
81
|
//# sourceMappingURL=signer.js.map
|
package/lib/signer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AASA,gEAA8B;AAM9B,MAAa,MAAM;IAIf,YAAY,QAAsC,EAAE,OAEnD;QAJO,QAAG,GAAW,sBAAsB,CAAC;QAKzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,EAAE;YACd,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;SAC1B;IACL,CAAC;IAED;;;;OAIG;IACI,SAAS;QACZ,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACU,WAAW,CAAC,SAA8B,EAAE,OAAe;;YACpE,MAAM,CAAC,IAAI,CACP,GAAG,IAAI,CAAC,GAAG,SAAS,sBAAE,CAAC,SAAS,CAAC;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC;aAC7C,CAAC,EAAE,EACJ,QAAQ,EACR,sBAAsB,CACzB,CAAC;YAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;KAAA;IAED;;;;;;;;;;;OAWG;IACU,eAAe,CACxB,KAAa,EACb,kBAA4C,EAC5C,IAAY;;YAEZ,MAAM,CAAC,IAAI,CACP,GAAG,IAAI,CAAC,GAAG,SAAS,sBAAE,CAAC,SAAS,CAAC;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAC/B,CAAC,EAAE,EACJ,QAAQ,EACR,sBAAsB,CACzB,CAAC;YAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC1E,CAAC;KAAA;IAEY,sBAAsB;IAC/B,+FAA+F;IAC/F,OAA6B;;YAE7B,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;KAAA;CACJ;AAhFD,wBAgFC"}
|
package/lib/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Abi, Call, InvocationsDetails, typedData, InvokeFunctionResponse, Signature, InvocationsSignerDetails, EstimateFeeDetails, EstimateFee } from "starknet";
|
|
2
|
-
import { BigNumberish } from "starknet/utils/number";
|
|
1
|
+
import { Abi, Call, InvocationsDetails, typedData, InvokeFunctionResponse, Signature, InvocationsSignerDetails, EstimateFeeDetails, EstimateFee, DeclareSignerDetails, DeclareContractPayload } from "starknet";
|
|
2
|
+
import { BigNumberish } from "starknet/dist/utils/number";
|
|
3
3
|
export declare type Session = {
|
|
4
4
|
policies: Policy[];
|
|
5
5
|
maxFee: BigNumberish;
|
|
@@ -20,7 +20,8 @@ export interface Keychain {
|
|
|
20
20
|
disconnect(): void;
|
|
21
21
|
revoke(origin: string): void;
|
|
22
22
|
approvals(origin: string): Promise<Session | undefined>;
|
|
23
|
-
|
|
23
|
+
estimateDeclareFee(payload: DeclareContractPayload, details?: EstimateFeeDetails): Promise<EstimateFee>;
|
|
24
|
+
estimateInvokeFee(calls: Call | Call[], estimateFeeDetails?: EstimateFeeDetails): Promise<EstimateFee>;
|
|
24
25
|
execute(calls: Call | Call[], abis?: Abi[], transactionsDetail?: InvocationsDetails, sync?: boolean): Promise<InvokeFunctionResponse>;
|
|
25
26
|
provision(address: string): Promise<string>;
|
|
26
27
|
register(username: string, credential: {
|
|
@@ -32,4 +33,5 @@ export interface Keychain {
|
|
|
32
33
|
}>;
|
|
33
34
|
signMessage(typedData: typedData.TypedData, account: string): Promise<Signature>;
|
|
34
35
|
signTransaction(transactions: Call[], transactionsDetail: InvocationsSignerDetails, abis?: Abi[]): Promise<Signature>;
|
|
36
|
+
signDeclareTransaction(details: DeclareSignerDetails): Promise<Signature>;
|
|
35
37
|
}
|
package/lib/webauthn.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Abi, Call, InvocationsSignerDetails, Signature, SignerInterface, typedData, Account } from "starknet";
|
|
2
|
-
declare type Assertion = PublicKeyCredential & {
|
|
1
|
+
import { Abi, Call, InvocationsSignerDetails, Signature, SignerInterface, typedData, Account, DeclareSignerDetails } from "starknet";
|
|
2
|
+
export declare type Assertion = PublicKeyCredential & {
|
|
3
3
|
response: AuthenticatorAssertionResponse;
|
|
4
4
|
};
|
|
5
5
|
export declare class WebauthnSigner implements SignerInterface {
|
|
@@ -8,13 +8,17 @@ export declare class WebauthnSigner implements SignerInterface {
|
|
|
8
8
|
private rpId;
|
|
9
9
|
constructor(credentialId: string, publicKey: string, rpId?: string);
|
|
10
10
|
getPubKey(): Promise<string>;
|
|
11
|
-
sign(
|
|
12
|
-
formatAssertion(assertion: Assertion): Signature;
|
|
11
|
+
sign(challenge: BufferSource): Promise<Assertion>;
|
|
13
12
|
hashTransaction(transactions: Call[], transactionsDetail: InvocationsSignerDetails, abis?: Abi[]): string;
|
|
14
13
|
signTransaction(calls: Call[], transactionsDetail: InvocationsSignerDetails, abis?: Abi[]): Promise<Signature>;
|
|
15
14
|
signMessage(td: typedData.TypedData, accountAddress: string): Promise<Signature>;
|
|
15
|
+
signDeclareTransaction({ classHash, senderAddress, chainId, maxFee, version, nonce }: DeclareSignerDetails): Promise<Signature>;
|
|
16
16
|
}
|
|
17
17
|
declare class WebauthnAccount extends Account {
|
|
18
|
-
|
|
18
|
+
signer: WebauthnSigner;
|
|
19
|
+
constructor(address: string, credentialId: string, publicKey: string, options: {
|
|
20
|
+
rpId?: string;
|
|
21
|
+
});
|
|
19
22
|
}
|
|
23
|
+
export declare function formatAssertion(assertion: Assertion): Signature;
|
|
20
24
|
export default WebauthnAccount;
|
package/lib/webauthn.js
CHANGED
|
@@ -12,10 +12,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.WebauthnSigner = void 0;
|
|
15
|
+
exports.formatAssertion = exports.WebauthnSigner = void 0;
|
|
16
16
|
const starknet_1 = require("starknet");
|
|
17
17
|
const base64url_1 = __importDefault(require("base64url"));
|
|
18
18
|
const _1 = require(".");
|
|
19
|
+
const hash_1 = require("starknet/dist/utils/hash");
|
|
19
20
|
function convertUint8ArrayToWordArray(u8Array) {
|
|
20
21
|
var words = [], i = 0, len = u8Array.length;
|
|
21
22
|
while (i < len) {
|
|
@@ -41,9 +42,8 @@ class WebauthnSigner {
|
|
|
41
42
|
return this.publicKey;
|
|
42
43
|
});
|
|
43
44
|
}
|
|
44
|
-
sign(
|
|
45
|
+
sign(challenge) {
|
|
45
46
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
-
const challenge = Buffer.from(hash.slice(2).padStart(64, "0").slice(0, 64), "hex");
|
|
47
47
|
return (yield navigator.credentials.get({
|
|
48
48
|
publicKey: {
|
|
49
49
|
challenge,
|
|
@@ -60,46 +60,6 @@ class WebauthnSigner {
|
|
|
60
60
|
}));
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
|
-
formatAssertion(assertion) {
|
|
64
|
-
var authenticatorDataBytes = new Uint8Array(assertion.response.authenticatorData);
|
|
65
|
-
let authenticatorDataRem = 4 - (authenticatorDataBytes.length % 4);
|
|
66
|
-
if (authenticatorDataRem == 4) {
|
|
67
|
-
authenticatorDataRem = 0;
|
|
68
|
-
}
|
|
69
|
-
const authenticatorDataWords = convertUint8ArrayToWordArray(authenticatorDataBytes).words;
|
|
70
|
-
var clientDataJSONBytes = new Uint8Array(assertion.response.clientDataJSON);
|
|
71
|
-
let clientDataJSONRem = 4 - (clientDataJSONBytes.length % 4);
|
|
72
|
-
if (clientDataJSONRem == 4) {
|
|
73
|
-
clientDataJSONRem = 0;
|
|
74
|
-
}
|
|
75
|
-
const clientDataWords = convertUint8ArrayToWordArray(clientDataJSONBytes).words;
|
|
76
|
-
// Convert signature from ASN.1 sequence to "raw" format
|
|
77
|
-
const usignature = new Uint8Array(assertion.response.signature);
|
|
78
|
-
const rStart = usignature[4] === 0 ? 5 : 4;
|
|
79
|
-
const rEnd = rStart + 32;
|
|
80
|
-
const sStart = usignature[rEnd + 2] === 0 ? rEnd + 3 : rEnd + 2;
|
|
81
|
-
const r = starknet_1.number.toBN("0x" + Buffer.from(usignature.slice(rStart, rEnd)).toString("hex"));
|
|
82
|
-
const s = starknet_1.number.toBN("0x" + Buffer.from(usignature.slice(sStart)).toString("hex"));
|
|
83
|
-
const { x: r0, y: r1, z: r2 } = (0, _1.split)(r);
|
|
84
|
-
const { x: s0, y: s1, z: s2 } = (0, _1.split)(s);
|
|
85
|
-
return [
|
|
86
|
-
"0",
|
|
87
|
-
r0.toString(),
|
|
88
|
-
r1.toString(),
|
|
89
|
-
r2.toString(),
|
|
90
|
-
s0.toString(),
|
|
91
|
-
s1.toString(),
|
|
92
|
-
s2.toString(),
|
|
93
|
-
"9",
|
|
94
|
-
"0",
|
|
95
|
-
`${clientDataWords.length}`,
|
|
96
|
-
`${clientDataJSONRem}`,
|
|
97
|
-
...clientDataWords.map((word) => `${word}`),
|
|
98
|
-
`${authenticatorDataWords.length}`,
|
|
99
|
-
`${authenticatorDataRem}`,
|
|
100
|
-
...authenticatorDataWords.map((word) => `${word}`),
|
|
101
|
-
];
|
|
102
|
-
}
|
|
103
63
|
hashTransaction(transactions, transactionsDetail, abis) {
|
|
104
64
|
if (abis && abis.length !== transactions.length) {
|
|
105
65
|
throw new Error("ABI must be provided for each transaction or no transaction");
|
|
@@ -116,23 +76,78 @@ class WebauthnSigner {
|
|
|
116
76
|
// now use abi to display decoded data somewhere, but as this signer is headless, we can't do that
|
|
117
77
|
const calldata = starknet_1.transaction.fromCallsToExecuteCalldataWithNonce(calls, transactionsDetail.nonce);
|
|
118
78
|
const msgHash = starknet_1.hash.calculateTransactionHash(transactionsDetail.walletAddress, transactionsDetail.version, [starknet_1.hash.getSelectorFromName("__execute__")].concat(calldata), transactionsDetail.maxFee, transactionsDetail.chainId, transactionsDetail.nonce);
|
|
119
|
-
const
|
|
120
|
-
|
|
79
|
+
const challenge = Buffer.from(msgHash.slice(2).padStart(64, "0").slice(0, 64), "hex");
|
|
80
|
+
const assertion = yield this.sign(challenge);
|
|
81
|
+
return formatAssertion(assertion);
|
|
121
82
|
});
|
|
122
83
|
}
|
|
123
84
|
signMessage(td, accountAddress) {
|
|
124
85
|
return __awaiter(this, void 0, void 0, function* () {
|
|
125
86
|
const msgHash = starknet_1.typedData.getMessageHash(td, accountAddress);
|
|
126
|
-
const
|
|
127
|
-
|
|
87
|
+
const challenge = Buffer.from(msgHash.slice(2).padStart(64, "0").slice(0, 64), "hex");
|
|
88
|
+
const assertion = yield this.sign(challenge);
|
|
89
|
+
return formatAssertion(assertion);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
signDeclareTransaction(
|
|
93
|
+
// contractClass: ContractClass, // Should be used once class hash is present in ContractClass
|
|
94
|
+
{ classHash, senderAddress, chainId, maxFee, version, nonce }) {
|
|
95
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
const msgHash = (0, hash_1.calculateDeclareTransactionHash)(classHash, senderAddress, version, maxFee, chainId, nonce);
|
|
97
|
+
const challenge = Buffer.from(msgHash.slice(2).padStart(64, "0").slice(0, 64), "hex");
|
|
98
|
+
const assertion = yield this.sign(challenge);
|
|
99
|
+
return formatAssertion(assertion);
|
|
128
100
|
});
|
|
129
101
|
}
|
|
130
102
|
}
|
|
131
103
|
exports.WebauthnSigner = WebauthnSigner;
|
|
132
104
|
class WebauthnAccount extends starknet_1.Account {
|
|
133
|
-
constructor(address, credentialId, publicKey,
|
|
134
|
-
|
|
105
|
+
constructor(address, credentialId, publicKey, options) {
|
|
106
|
+
const signer = new WebauthnSigner(credentialId, publicKey, options.rpId);
|
|
107
|
+
super(starknet_1.defaultProvider, address, signer);
|
|
108
|
+
this.signer = signer;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function formatAssertion(assertion) {
|
|
112
|
+
var authenticatorDataBytes = new Uint8Array(assertion.response.authenticatorData);
|
|
113
|
+
let authenticatorDataRem = 4 - (authenticatorDataBytes.length % 4);
|
|
114
|
+
if (authenticatorDataRem == 4) {
|
|
115
|
+
authenticatorDataRem = 0;
|
|
116
|
+
}
|
|
117
|
+
const authenticatorDataWords = convertUint8ArrayToWordArray(authenticatorDataBytes).words;
|
|
118
|
+
var clientDataJSONBytes = new Uint8Array(assertion.response.clientDataJSON);
|
|
119
|
+
let clientDataJSONRem = 4 - (clientDataJSONBytes.length % 4);
|
|
120
|
+
if (clientDataJSONRem == 4) {
|
|
121
|
+
clientDataJSONRem = 0;
|
|
135
122
|
}
|
|
123
|
+
const clientDataWords = convertUint8ArrayToWordArray(clientDataJSONBytes).words;
|
|
124
|
+
// Convert signature from ASN.1 sequence to "raw" format
|
|
125
|
+
const usignature = new Uint8Array(assertion.response.signature);
|
|
126
|
+
const rStart = usignature[4] === 0 ? 5 : 4;
|
|
127
|
+
const rEnd = rStart + 32;
|
|
128
|
+
const sStart = usignature[rEnd + 2] === 0 ? rEnd + 3 : rEnd + 2;
|
|
129
|
+
const r = starknet_1.number.toBN("0x" + Buffer.from(usignature.slice(rStart, rEnd)).toString("hex"));
|
|
130
|
+
const s = starknet_1.number.toBN("0x" + Buffer.from(usignature.slice(sStart)).toString("hex"));
|
|
131
|
+
const { x: r0, y: r1, z: r2 } = (0, _1.split)(r);
|
|
132
|
+
const { x: s0, y: s1, z: s2 } = (0, _1.split)(s);
|
|
133
|
+
return [
|
|
134
|
+
"0",
|
|
135
|
+
r0.toString(),
|
|
136
|
+
r1.toString(),
|
|
137
|
+
r2.toString(),
|
|
138
|
+
s0.toString(),
|
|
139
|
+
s1.toString(),
|
|
140
|
+
s2.toString(),
|
|
141
|
+
"9",
|
|
142
|
+
"0",
|
|
143
|
+
`${clientDataWords.length}`,
|
|
144
|
+
`${clientDataJSONRem}`,
|
|
145
|
+
...clientDataWords.map((word) => `${word}`),
|
|
146
|
+
`${authenticatorDataWords.length}`,
|
|
147
|
+
`${authenticatorDataRem}`,
|
|
148
|
+
...authenticatorDataWords.map((word) => `${word}`),
|
|
149
|
+
];
|
|
136
150
|
}
|
|
151
|
+
exports.formatAssertion = formatAssertion;
|
|
137
152
|
exports.default = WebauthnAccount;
|
|
138
153
|
//# sourceMappingURL=webauthn.js.map
|
package/lib/webauthn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webauthn.js","sourceRoot":"","sources":["../src/webauthn.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"webauthn.js","sourceRoot":"","sources":["../src/webauthn.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uCAakB;AAClB,0DAAkC;AAClC,wBAA0B;AAC1B,mDAA2E;AAM3E,SAAS,4BAA4B,CAAC,OAAmB;IACvD,IAAI,KAAK,GAAG,EAAE,EACZ,CAAC,GAAG,CAAC,EACL,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAEvB,OAAO,CAAC,GAAG,GAAG,EAAE;QACd,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACnB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACpB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;YACf,CAAC,CACF,CAAC;KACH;IAED,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;QAC1B,KAAK,EAAE,KAAK;KACb,CAAC;AACJ,CAAC;AAED,MAAa,cAAc;IAKzB,YAAY,YAAoB,EAAE,SAAiB,EAAE,OAAe,cAAc;QAChF,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEY,SAAS;;YACpB,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;KAAA;IAEY,IAAI,CAAC,SAAuB;;YACvC,OAAO,CAAC,MAAM,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC;gBACtC,SAAS,EAAE;oBACT,SAAS;oBACT,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,gBAAgB,EAAE;wBAChB;4BACE,IAAI,EAAE,YAAY;4BAClB,EAAE,EAAE,mBAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;yBAC1C;qBACF;oBACD,gBAAgB,EAAE,UAAU;iBAC7B;aACF,CAAC,CAED,CAAC;QACJ,CAAC;KAAA;IAEM,eAAe,CACpB,YAAoB,EACpB,kBAA4C,EAC5C,IAAY;QAEZ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE;YAC/C,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;SACH;QACD,kGAAkG;QAElG,MAAM,QAAQ,GAAG,sBAAW,CAAC,mCAAmC,CAC9D,YAAY,EACZ,kBAAkB,CAAC,KAAK,CACzB,CAAC;QAEF,OAAO,eAAI,CAAC,wBAAwB,CAClC,kBAAkB,CAAC,aAAa,EAChC,kBAAkB,CAAC,OAAO,EAC1B,CAAC,eAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC1D,kBAAkB,CAAC,MAAM,EACzB,kBAAkB,CAAC,OAAO,EAC1B,kBAAkB,CAAC,KAAK,CACzB,CAAC;IACJ,CAAC;IAEY,eAAe,CAC1B,KAAa,EACb,kBAA4C,EAC5C,IAAY;;YAEZ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;gBACxC,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;aACH;YACD,kGAAkG;YAElG,MAAM,QAAQ,GAAG,sBAAW,CAAC,mCAAmC,CAC9D,KAAK,EACL,kBAAkB,CAAC,KAAK,CACzB,CAAC;YAEF,MAAM,OAAO,GAAG,eAAI,CAAC,wBAAwB,CAC3C,kBAAkB,CAAC,aAAa,EAChC,kBAAkB,CAAC,OAAO,EAC1B,CAAC,eAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC1D,kBAAkB,CAAC,MAAM,EACzB,kBAAkB,CAAC,OAAO,EAC1B,kBAAkB,CAAC,KAAK,CACzB,CAAC;YAEF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAC/C,KAAK,CACN,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7C,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;KAAA;IAEY,WAAW,CACtB,EAAuB,EACvB,cAAsB;;YAEtB,MAAM,OAAO,GAAG,oBAAS,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAC/C,KAAK,CACN,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7C,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;KAAA;IAEY,sBAAsB;IACjC,+FAA+F;IAC/F,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAwB;;YAEnF,MAAM,OAAO,GAAG,IAAA,sCAA+B,EAC7C,SAAS,EACT,aAAa,EACb,OAAO,EACP,MAAM,EACN,OAAO,EACP,KAAK,CACN,CAAC;YAEF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAC/C,KAAK,CACN,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7C,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;KAAA;CACF;AAhID,wCAgIC;AAED,MAAM,eAAgB,SAAQ,kBAAO;IAEnC,YACE,OAAe,EAAE,YAAoB,EAAE,SAAiB,EAAE,OAEzD;QACD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACzE,KAAK,CAAC,0BAAe,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,SAAgB,eAAe,CAAC,SAAoB;IAClD,IAAI,sBAAsB,GAAG,IAAI,UAAU,CACzC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CACrC,CAAC;IAEF,IAAI,oBAAoB,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnE,IAAI,oBAAoB,IAAI,CAAC,EAAE;QAC7B,oBAAoB,GAAG,CAAC,CAAC;KAC1B;IACD,MAAM,sBAAsB,GAAG,4BAA4B,CACzD,sBAAsB,CACvB,CAAC,KAAK,CAAC;IAER,IAAI,mBAAmB,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC5E,IAAI,iBAAiB,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7D,IAAI,iBAAiB,IAAI,CAAC,EAAE;QAC1B,iBAAiB,GAAG,CAAC,CAAC;KACvB;IACD,MAAM,eAAe,GACnB,4BAA4B,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC;IAE1D,wDAAwD;IACxD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IAEhE,MAAM,CAAC,GAAG,iBAAM,CAAC,IAAI,CACnB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CACnE,CAAC;IACF,MAAM,CAAC,GAAG,iBAAM,CAAC,IAAI,CACnB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC7D,CAAC;IAEF,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,IAAA,QAAK,EAAC,CAAC,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,IAAA,QAAK,EAAC,CAAC,CAAC,CAAC;IAEzC,OAAO;QACL,GAAG;QACH,EAAE,CAAC,QAAQ,EAAE;QACb,EAAE,CAAC,QAAQ,EAAE;QACb,EAAE,CAAC,QAAQ,EAAE;QACb,EAAE,CAAC,QAAQ,EAAE;QACb,EAAE,CAAC,QAAQ,EAAE;QACb,EAAE,CAAC,QAAQ,EAAE;QACb,GAAG;QACH,GAAG;QACH,GAAG,eAAe,CAAC,MAAM,EAAE;QAC3B,GAAG,iBAAiB,EAAE;QACtB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;QAC3C,GAAG,sBAAsB,CAAC,MAAM,EAAE;QAClC,GAAG,oBAAoB,EAAE;QACzB,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;KACnD,CAAC;AACJ,CAAC;AAtDD,0CAsDC;AAED,kBAAe,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cartridge/controller",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.65",
|
|
4
4
|
"description": "Cartridge Controller",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -26,6 +26,6 @@
|
|
|
26
26
|
"base64url": "^3.0.1",
|
|
27
27
|
"fast-deep-equal": "^3.1.3",
|
|
28
28
|
"query-string": "^7.1.1",
|
|
29
|
-
"starknet": "
|
|
29
|
+
"starknet": "https://github.com/0xs34n/starknet.js#develop"
|
|
30
30
|
}
|
|
31
31
|
}
|