@cartridge/controller 0.3.0 → 0.3.2
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/constants.d.ts +31 -0
- package/lib/constants.js +38 -0
- package/lib/constants.js.map +1 -0
- package/lib/device.js +130 -50
- package/lib/device.js.map +1 -1
- package/lib/errors.js +24 -6
- package/lib/errors.js.map +1 -1
- package/lib/generated/graphql.d.ts +3484 -0
- package/lib/generated/graphql.js +242 -0
- package/lib/generated/graphql.js.map +1 -0
- package/lib/generated/introspection.d.ts +7 -0
- package/lib/generated/introspection.js +48 -0
- package/lib/generated/introspection.js.map +1 -0
- package/lib/index.d.ts +1 -6
- package/lib/index.js +243 -157
- package/lib/index.js.map +1 -1
- package/lib/inject.d.ts +9 -2
- package/lib/inject.js +85 -41
- package/lib/inject.js.map +1 -1
- package/lib/signer.js +48 -12
- package/lib/signer.js.map +1 -1
- package/lib/utils.d.ts +20 -0
- package/lib/utils.js +154 -3
- package/lib/utils.js.map +1 -1
- package/package.json +10 -4
- package/lib/account.d.ts +0 -57
- package/lib/account.js +0 -145
- package/lib/account.js.map +0 -1
- package/lib/messenger.js +0 -74
- package/lib/messenger.js.map +0 -1
- package/lib/webauthn.d.ts +0 -24
- package/lib/webauthn.js +0 -153
- package/lib/webauthn.js.map +0 -1
package/lib/inject.js
CHANGED
|
@@ -31,12 +31,40 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
31
31
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
32
|
});
|
|
33
33
|
};
|
|
34
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
35
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
36
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
37
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
38
|
+
function step(op) {
|
|
39
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
40
|
+
while (_) try {
|
|
41
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
42
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
43
|
+
switch (op[0]) {
|
|
44
|
+
case 0: case 1: t = op; break;
|
|
45
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
46
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
47
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
48
|
+
default:
|
|
49
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
50
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
51
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
52
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
53
|
+
if (t[2]) _.ops.pop();
|
|
54
|
+
_.trys.pop(); continue;
|
|
55
|
+
}
|
|
56
|
+
op = body.call(thisArg, _);
|
|
57
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
58
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
59
|
+
}
|
|
60
|
+
};
|
|
34
61
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
62
|
exports.injectController = exports.InjectedController = void 0;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
63
|
+
var starknet_1 = require("starknet");
|
|
64
|
+
var _1 = __importStar(require("."));
|
|
65
|
+
var InjectedController = /** @class */ (function () {
|
|
66
|
+
function InjectedController(policies, options) {
|
|
67
|
+
var _this = this;
|
|
40
68
|
this.id = "Cartridge";
|
|
41
69
|
this.name = "Cartridge";
|
|
42
70
|
this.version = "0.0.1";
|
|
@@ -44,63 +72,79 @@ class InjectedController {
|
|
|
44
72
|
this.provider = _1.providers[starknet_1.constants.StarknetChainId.MAINNET];
|
|
45
73
|
this.isConnected = false;
|
|
46
74
|
this.subscriptions = [];
|
|
47
|
-
this.request = (call)
|
|
75
|
+
this.request = function (call) {
|
|
48
76
|
throw Error("Not implemented");
|
|
49
77
|
};
|
|
50
|
-
this.enable = ()
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
78
|
+
this.enable = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
79
|
+
var _a;
|
|
80
|
+
return __generator(this, function (_b) {
|
|
81
|
+
switch (_b.label) {
|
|
82
|
+
case 0:
|
|
83
|
+
_a = this;
|
|
84
|
+
return [4 /*yield*/, this.controller.connect()];
|
|
85
|
+
case 1:
|
|
86
|
+
_a.account = _b.sent();
|
|
87
|
+
if (!this.account) {
|
|
88
|
+
return [2 /*return*/, []];
|
|
89
|
+
}
|
|
90
|
+
this.provider = _1.providers[this.controller.chainId];
|
|
91
|
+
this.isConnected = true;
|
|
92
|
+
return [2 /*return*/, [this.account.address]];
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}); };
|
|
96
|
+
this.isPreauthorized = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
97
|
+
var _this = this;
|
|
98
|
+
return __generator(this, function (_a) {
|
|
99
|
+
return [2 /*return*/, this.controller
|
|
100
|
+
.ready()
|
|
101
|
+
.then(function () {
|
|
102
|
+
return _this.controller.probe();
|
|
103
|
+
})
|
|
104
|
+
.then(function (connected) { return !!connected; })];
|
|
105
|
+
});
|
|
106
|
+
}); };
|
|
107
|
+
this.on = function (type, handler) {
|
|
65
108
|
if (type === "accountsChanged") {
|
|
66
|
-
|
|
67
|
-
type,
|
|
68
|
-
handler,
|
|
109
|
+
_this.subscriptions.push({
|
|
110
|
+
type: type,
|
|
111
|
+
handler: handler,
|
|
69
112
|
});
|
|
70
113
|
}
|
|
71
114
|
else if (type === "networkChanged") {
|
|
72
|
-
|
|
73
|
-
type,
|
|
74
|
-
handler,
|
|
115
|
+
_this.subscriptions.push({
|
|
116
|
+
type: type,
|
|
117
|
+
handler: handler,
|
|
75
118
|
});
|
|
76
119
|
}
|
|
77
120
|
else {
|
|
78
|
-
throw new Error(
|
|
121
|
+
throw new Error("Unknwown event: ".concat(type));
|
|
79
122
|
}
|
|
80
123
|
};
|
|
81
|
-
this.off = (type, handler)
|
|
124
|
+
this.off = function (type, handler) {
|
|
82
125
|
if (type !== "accountsChanged" && type !== "networkChanged") {
|
|
83
|
-
throw new Error(
|
|
126
|
+
throw new Error("Unknwown event: ".concat(type));
|
|
84
127
|
}
|
|
85
|
-
|
|
128
|
+
var idx = _this.subscriptions.findIndex(function (userEvent) { return userEvent.type === type && userEvent.handler === handler; });
|
|
86
129
|
if (idx >= 0) {
|
|
87
|
-
|
|
130
|
+
_this.subscriptions.splice(idx, 1);
|
|
88
131
|
}
|
|
89
132
|
};
|
|
90
|
-
this.controller = new _1.default();
|
|
91
|
-
this.controller.ready().then(isConnected
|
|
92
|
-
|
|
93
|
-
if (
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
133
|
+
this.controller = new _1.default(policies, options);
|
|
134
|
+
this.controller.ready().then(function (isConnected) {
|
|
135
|
+
_this.isConnected = !!isConnected;
|
|
136
|
+
if (_this.controller.account) {
|
|
137
|
+
_this.account = _this.controller.account;
|
|
138
|
+
_this.provider = _1.providers[_this.controller.chainId];
|
|
139
|
+
_this.selectedAddress = _this.account.address;
|
|
97
140
|
}
|
|
98
141
|
});
|
|
99
142
|
}
|
|
100
|
-
|
|
143
|
+
return InjectedController;
|
|
144
|
+
}());
|
|
101
145
|
exports.InjectedController = InjectedController;
|
|
102
|
-
function injectController() {
|
|
103
|
-
window.starknet_cartridge = new InjectedController();
|
|
146
|
+
function injectController(policies, options) {
|
|
147
|
+
window.starknet_cartridge = new InjectedController(policies, options);
|
|
104
148
|
}
|
|
105
149
|
exports.injectController = injectController;
|
|
106
150
|
//# sourceMappingURL=inject.js.map
|
package/lib/inject.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"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"}
|
package/lib/signer.js
CHANGED
|
@@ -8,10 +8,37 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
11
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
39
|
exports.Signer = void 0;
|
|
13
|
-
|
|
14
|
-
|
|
40
|
+
var Signer = /** @class */ (function () {
|
|
41
|
+
function Signer(keychain, modal) {
|
|
15
42
|
this.keychain = keychain;
|
|
16
43
|
this.modal = modal;
|
|
17
44
|
}
|
|
@@ -20,9 +47,9 @@ class Signer {
|
|
|
20
47
|
*
|
|
21
48
|
* @returns public key of signer as hex string with 0x prefix
|
|
22
49
|
*/
|
|
23
|
-
getPubKey() {
|
|
50
|
+
Signer.prototype.getPubKey = function () {
|
|
24
51
|
return Promise.resolve("");
|
|
25
|
-
}
|
|
52
|
+
};
|
|
26
53
|
/**
|
|
27
54
|
* Sign an JSON object for off-chain usage with the starknet private key and return the signature
|
|
28
55
|
* This adds a message prefix so it cant be interchanged with transactions
|
|
@@ -32,14 +59,23 @@ class Signer {
|
|
|
32
59
|
* @returns the signature of the JSON object
|
|
33
60
|
* @throws {Error} if the JSON object is not a valid JSON
|
|
34
61
|
*/
|
|
35
|
-
signMessage(typedData, account) {
|
|
36
|
-
return __awaiter(this, void 0, void 0, function
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
62
|
+
Signer.prototype.signMessage = function (typedData, account) {
|
|
63
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
64
|
+
var res;
|
|
65
|
+
return __generator(this, function (_a) {
|
|
66
|
+
switch (_a.label) {
|
|
67
|
+
case 0:
|
|
68
|
+
this.modal.open();
|
|
69
|
+
return [4 /*yield*/, this.keychain.signMessage(typedData, account)];
|
|
70
|
+
case 1:
|
|
71
|
+
res = _a.sent();
|
|
72
|
+
this.modal.close();
|
|
73
|
+
return [2 /*return*/, res];
|
|
74
|
+
}
|
|
75
|
+
});
|
|
41
76
|
});
|
|
42
|
-
}
|
|
43
|
-
|
|
77
|
+
};
|
|
78
|
+
return Signer;
|
|
79
|
+
}());
|
|
44
80
|
exports.Signer = Signer;
|
|
45
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;IAGE,gBAAY,QAAsC,EAAE,KAAY;QAC9D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACI,0BAAS,GAAhB;QACE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;OAQG;IACU,4BAAW,GAAxB,UACE,SAA8B,EAC9B,OAAe;;;;;;wBAEf,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBACN,qBAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,EAAA;;wBAAzD,GAAG,GAAG,SAAmD;wBAC/D,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;wBACnB,sBAAO,GAAgB,EAAC;;;;KACzB;IACH,aAAC;AAAD,CAAC,AAnCD,IAmCC;AAnCY,wBAAM"}
|
package/lib/utils.d.ts
CHANGED
|
@@ -1,2 +1,22 @@
|
|
|
1
1
|
import { Policy } from "./types";
|
|
2
|
+
import { GraphQLClient } from "graphql-request";
|
|
3
|
+
import { number, Signature, Provider } from "starknet";
|
|
4
|
+
import BN from "bn.js";
|
|
5
|
+
export declare const ENDPOINT: string;
|
|
6
|
+
export declare const client: GraphQLClient;
|
|
2
7
|
export declare function diff(a: Policy[], b: Policy[]): Policy[];
|
|
8
|
+
export declare const computeAddress: (username: string, { x0, x1, x2 }: {
|
|
9
|
+
x0: BN;
|
|
10
|
+
x1: BN;
|
|
11
|
+
x2: BN;
|
|
12
|
+
}, { y0, y1, y2 }: {
|
|
13
|
+
y0: BN;
|
|
14
|
+
y1: BN;
|
|
15
|
+
y2: BN;
|
|
16
|
+
}, deviceKey: string) => string;
|
|
17
|
+
export declare const verifyMessageHash: (provider: Provider, address: string, messageHash: number.BigNumberish, signature: Signature) => Promise<boolean | undefined>;
|
|
18
|
+
export declare function split(n: BN): {
|
|
19
|
+
x: BN;
|
|
20
|
+
y: BN;
|
|
21
|
+
z: BN;
|
|
22
|
+
};
|
package/lib/utils.js
CHANGED
|
@@ -1,12 +1,163 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
39
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
40
|
+
if (!m) return o;
|
|
41
|
+
var i = m.call(o), r, ar = [], e;
|
|
42
|
+
try {
|
|
43
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
44
|
+
}
|
|
45
|
+
catch (error) { e = { error: error }; }
|
|
46
|
+
finally {
|
|
47
|
+
try {
|
|
48
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
49
|
+
}
|
|
50
|
+
finally { if (e) throw e.error; }
|
|
51
|
+
}
|
|
52
|
+
return ar;
|
|
53
|
+
};
|
|
54
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
55
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
56
|
+
if (ar || !(i in from)) {
|
|
57
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
58
|
+
ar[i] = from[i];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
62
|
+
};
|
|
2
63
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
64
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
65
|
};
|
|
5
66
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.diff = void 0;
|
|
7
|
-
|
|
67
|
+
exports.split = exports.verifyMessageHash = exports.computeAddress = exports.diff = exports.client = exports.ENDPOINT = void 0;
|
|
68
|
+
var fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
|
|
69
|
+
var graphql_request_1 = require("graphql-request");
|
|
70
|
+
var starknet_1 = require("starknet");
|
|
71
|
+
var constants_1 = require("./constants");
|
|
72
|
+
var graphql_1 = require("./generated/graphql");
|
|
73
|
+
var cbor_x_1 = require("cbor-x");
|
|
74
|
+
exports.ENDPOINT = process.env.NEXT_PUBLIC_API_URL;
|
|
75
|
+
exports.client = new graphql_request_1.GraphQLClient(exports.ENDPOINT, { credentials: "include" });
|
|
8
76
|
function diff(a, b) {
|
|
9
|
-
return a.reduce((prev, policyA)
|
|
77
|
+
return a.reduce(function (prev, policyA) {
|
|
78
|
+
return b.some(function (policyB) { return (0, fast_deep_equal_1.default)(policyB, policyA); }) ? prev : __spreadArray(__spreadArray([], __read(prev), false), [policyA], false);
|
|
79
|
+
}, []);
|
|
10
80
|
}
|
|
11
81
|
exports.diff = diff;
|
|
82
|
+
var computeAddress = function (username, _a, _b, deviceKey) {
|
|
83
|
+
var x0 = _a.x0, x1 = _a.x1, x2 = _a.x2;
|
|
84
|
+
var y0 = _b.y0, y1 = _b.y1, y2 = _b.y2;
|
|
85
|
+
return starknet_1.hash.calculateContractAddressFromHash(starknet_1.shortString.encodeShortString(username), starknet_1.number.toBN(constants_1.PROXY_CLASS), [
|
|
86
|
+
starknet_1.number.toBN(constants_1.CLASS_HASHES["0.0.1"].account),
|
|
87
|
+
starknet_1.hash.getSelectorFromName("initialize"),
|
|
88
|
+
"9",
|
|
89
|
+
starknet_1.number.toBN(constants_1.CLASS_HASHES["0.0.1"].controller),
|
|
90
|
+
"7",
|
|
91
|
+
x0,
|
|
92
|
+
x1,
|
|
93
|
+
x2,
|
|
94
|
+
y0,
|
|
95
|
+
y1,
|
|
96
|
+
y2,
|
|
97
|
+
starknet_1.number.toBN(deviceKey),
|
|
98
|
+
], "0");
|
|
99
|
+
};
|
|
100
|
+
exports.computeAddress = computeAddress;
|
|
101
|
+
var verifyMessageHash = function (provider, address, messageHash, signature) { return __awaiter(void 0, void 0, void 0, function () {
|
|
102
|
+
var isDeployed, res, isRegistered, keyPair, res, account, pubKeyCbor, x, y, _a, x0, x1, x2, _b, y0, y1, y2, computedAddress, keyPair;
|
|
103
|
+
var _c, _d, _e;
|
|
104
|
+
return __generator(this, function (_f) {
|
|
105
|
+
switch (_f.label) {
|
|
106
|
+
case 0:
|
|
107
|
+
isDeployed = !!provider.getClassHashAt(address, "latest");
|
|
108
|
+
if (!isDeployed) return [3 /*break*/, 2];
|
|
109
|
+
return [4 /*yield*/, provider.callContract({
|
|
110
|
+
contractAddress: address,
|
|
111
|
+
entrypoint: "executeOnPlugin",
|
|
112
|
+
calldata: [
|
|
113
|
+
constants_1.CLASS_HASHES["0.0.1"].controller,
|
|
114
|
+
starknet_1.hash.getSelector("is_public_key"),
|
|
115
|
+
"0x1",
|
|
116
|
+
signature[0],
|
|
117
|
+
],
|
|
118
|
+
})];
|
|
119
|
+
case 1:
|
|
120
|
+
res = _f.sent();
|
|
121
|
+
isRegistered = (res === null || res === void 0 ? void 0 : res.result[0]) === "0x1";
|
|
122
|
+
if (isRegistered) {
|
|
123
|
+
keyPair = starknet_1.ec.getKeyPairFromPublicKey(signature[0]);
|
|
124
|
+
return [2 /*return*/, starknet_1.ec.verify(keyPair, starknet_1.number.toBN(messageHash).toString(), signature)];
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
// validate register txn and signature
|
|
128
|
+
}
|
|
129
|
+
return [3 /*break*/, 4];
|
|
130
|
+
case 2: return [4 /*yield*/, exports.client.request(graphql_1.AccountDocument, {
|
|
131
|
+
address: address,
|
|
132
|
+
})];
|
|
133
|
+
case 3:
|
|
134
|
+
res = _f.sent();
|
|
135
|
+
account = (_e = (_d = (_c = res === null || res === void 0 ? void 0 : res.accounts) === null || _c === void 0 ? void 0 : _c.edges) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.node;
|
|
136
|
+
if (!account) {
|
|
137
|
+
return [2 /*return*/, false];
|
|
138
|
+
}
|
|
139
|
+
pubKeyCbor = (0, cbor_x_1.decode)(starknet_1.number.toBN(account.credential.publicKey).toBuffer())[0];
|
|
140
|
+
x = starknet_1.number.toBN("0x" + pubKeyCbor[-2].toString("hex"));
|
|
141
|
+
y = starknet_1.number.toBN("0x" + pubKeyCbor[-3].toString("hex"));
|
|
142
|
+
_a = split(x), x0 = _a.x, x1 = _a.y, x2 = _a.z;
|
|
143
|
+
_b = split(y), y0 = _b.x, y1 = _b.y, y2 = _b.z;
|
|
144
|
+
computedAddress = (0, exports.computeAddress)(account.id, { x0: x0, x1: x1, x2: x2 }, { y0: y0, y1: y1, y2: y2 }, signature[0]);
|
|
145
|
+
if (computedAddress !== address) {
|
|
146
|
+
throw new Error("invalid public key");
|
|
147
|
+
}
|
|
148
|
+
keyPair = starknet_1.ec.getKeyPairFromPublicKey(signature[0]);
|
|
149
|
+
return [2 /*return*/, starknet_1.ec.verify(keyPair, starknet_1.number.toBN(messageHash).toString(), signature)];
|
|
150
|
+
case 4: return [2 /*return*/];
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}); };
|
|
154
|
+
exports.verifyMessageHash = verifyMessageHash;
|
|
155
|
+
var BASE = starknet_1.number.toBN(2).pow(starknet_1.number.toBN(86));
|
|
156
|
+
function split(n) {
|
|
157
|
+
var x = n.mod(BASE);
|
|
158
|
+
var y = n.div(BASE).mod(BASE);
|
|
159
|
+
var z = n.div(BASE).div(BASE);
|
|
160
|
+
return { x: x, y: y, z: z };
|
|
161
|
+
}
|
|
162
|
+
exports.split = split;
|
|
12
163
|
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cartridge/controller",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Cartridge Controller",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"build": "tsc",
|
|
8
|
+
"build": "tsc --build tsconfig.json",
|
|
9
9
|
"dev": "tsc --watch",
|
|
10
|
-
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""
|
|
10
|
+
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
11
|
+
"gen": "graphql-codegen --config codegen.yaml"
|
|
11
12
|
},
|
|
12
13
|
"files": [
|
|
13
14
|
"lib"
|
|
14
15
|
],
|
|
15
16
|
"devDependencies": {
|
|
17
|
+
"@graphql-codegen/cli": "^2.16.4",
|
|
16
18
|
"@types/jest": "^26.0.18",
|
|
17
19
|
"@types/node": "^17.0.23",
|
|
20
|
+
"graphql": "^16.3.0",
|
|
21
|
+
"graphql-request": "^5.0.0",
|
|
18
22
|
"jest": "^26.6.3",
|
|
19
23
|
"ts-jest": "^26.5.1",
|
|
20
24
|
"ts-node": "^10.4.0",
|
|
@@ -25,8 +29,10 @@
|
|
|
25
29
|
"@cartridge/penpal": "^6.2.3",
|
|
26
30
|
"base64url": "^3.0.1",
|
|
27
31
|
"bn.js": "^5.2.1",
|
|
32
|
+
"cbor-x": "^1.5.0",
|
|
28
33
|
"fast-deep-equal": "^3.1.3",
|
|
29
34
|
"query-string": "^7.1.1",
|
|
30
|
-
"
|
|
35
|
+
"react-query": "^3.39.2",
|
|
36
|
+
"starknet": "^4.17.1"
|
|
31
37
|
}
|
|
32
38
|
}
|
package/lib/account.d.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { Account, DeployContractPayload, Abi, Call, EstimateFeeDetails, DeployContractResponse as StarknetDeployContractResponse, InvocationsDetails, Signature, typedData, InvokeFunctionResponse, EstimateFee } from "starknet";
|
|
2
|
-
import { Scope, Keychain } from "./types";
|
|
3
|
-
import { AsyncMethodReturns } from "@cartridge/penpal";
|
|
4
|
-
declare class CartridgeAccount extends Account {
|
|
5
|
-
address: string;
|
|
6
|
-
private keychain;
|
|
7
|
-
private url;
|
|
8
|
-
constructor(address: string, scopes: Scope[] | undefined, keychain: AsyncMethodReturns<Keychain>, options?: {
|
|
9
|
-
url?: string;
|
|
10
|
-
});
|
|
11
|
-
/**
|
|
12
|
-
* Deploys a given compiled contract (json) to starknet
|
|
13
|
-
*
|
|
14
|
-
* @param payload payload to be deployed containing:
|
|
15
|
-
* - compiled contract code
|
|
16
|
-
* - constructor calldata
|
|
17
|
-
* - address salt
|
|
18
|
-
* @param abi the abi of the contract
|
|
19
|
-
* @returns a confirmation of sending a transaction on the starknet contract
|
|
20
|
-
*/
|
|
21
|
-
deployContract(payload: DeployContractPayload, abi?: Abi): Promise<StarknetDeployContractResponse>;
|
|
22
|
-
/**
|
|
23
|
-
* Estimate Fee for a method on starknet
|
|
24
|
-
*
|
|
25
|
-
* @param calls the invocation object containing:
|
|
26
|
-
* - contractAddress - the address of the contract
|
|
27
|
-
* - entrypoint - the entrypoint of the contract
|
|
28
|
-
* - calldata - (defaults to []) the calldata
|
|
29
|
-
* - signature - (defaults to []) the signature
|
|
30
|
-
*
|
|
31
|
-
* @returns response from addTransaction
|
|
32
|
-
*/
|
|
33
|
-
estimateFee(calls: Call | Call[], details?: EstimateFeeDetails): Promise<EstimateFee>;
|
|
34
|
-
/**
|
|
35
|
-
* Invoke execute function in account contract
|
|
36
|
-
*
|
|
37
|
-
* @param calls the invocation object or an array of them, containing:
|
|
38
|
-
* - contractAddress - the address of the contract
|
|
39
|
-
* - entrypoint - the entrypoint of the contract
|
|
40
|
-
* - calldata - (defaults to []) the calldata
|
|
41
|
-
* - signature - (defaults to []) the signature
|
|
42
|
-
* @param abis (optional) the abi of the contract for better displaying
|
|
43
|
-
*
|
|
44
|
-
* @returns response from addTransaction
|
|
45
|
-
*/
|
|
46
|
-
execute(calls: Call | Call[], abis?: Abi[], transactionsDetail?: InvocationsDetails): Promise<InvokeFunctionResponse>;
|
|
47
|
-
/**
|
|
48
|
-
* Sign an JSON object for off-chain usage with the starknet private key and return the signature
|
|
49
|
-
* This adds a message prefix so it cant be interchanged with transactions
|
|
50
|
-
*
|
|
51
|
-
* @param json - JSON object to be signed
|
|
52
|
-
* @returns the signature of the JSON object
|
|
53
|
-
* @throws {Error} if the JSON object is not a valid JSON
|
|
54
|
-
*/
|
|
55
|
-
signMessage(typedData: typedData.TypedData): Promise<Signature>;
|
|
56
|
-
}
|
|
57
|
-
export default CartridgeAccount;
|