@cartridge/controller 0.3.1 → 0.3.3

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/inject.js CHANGED
@@ -31,40 +31,12 @@ 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
- };
61
34
  Object.defineProperty(exports, "__esModule", { value: true });
62
35
  exports.injectController = exports.InjectedController = void 0;
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;
36
+ const starknet_1 = require("starknet");
37
+ const _1 = __importStar(require("."));
38
+ class InjectedController {
39
+ constructor(policies, options) {
68
40
  this.id = "Cartridge";
69
41
  this.name = "Cartridge";
70
42
  this.version = "0.0.1";
@@ -72,76 +44,63 @@ var InjectedController = /** @class */ (function () {
72
44
  this.provider = _1.providers[starknet_1.constants.StarknetChainId.MAINNET];
73
45
  this.isConnected = false;
74
46
  this.subscriptions = [];
75
- this.request = function (call) {
47
+ this.request = (call) => {
76
48
  throw Error("Not implemented");
77
49
  };
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) {
50
+ this.enable = () => __awaiter(this, void 0, void 0, function* () {
51
+ this.account = yield this.controller.connect();
52
+ if (!this.account) {
53
+ return [];
54
+ }
55
+ this.provider = _1.providers[this.controller.chainId];
56
+ this.isConnected = true;
57
+ return [this.account.address];
58
+ });
59
+ this.isPreauthorized = () => __awaiter(this, void 0, void 0, function* () {
60
+ return this.controller
61
+ .ready()
62
+ .then(() => {
63
+ return this.controller.probe();
64
+ })
65
+ .then((connected) => !!connected);
66
+ });
67
+ this.on = (type, handler) => {
108
68
  if (type === "accountsChanged") {
109
- _this.subscriptions.push({
110
- type: type,
111
- handler: handler,
69
+ this.subscriptions.push({
70
+ type,
71
+ handler,
112
72
  });
113
73
  }
114
74
  else if (type === "networkChanged") {
115
- _this.subscriptions.push({
116
- type: type,
117
- handler: handler,
75
+ this.subscriptions.push({
76
+ type,
77
+ handler,
118
78
  });
119
79
  }
120
80
  else {
121
- throw new Error("Unknwown event: ".concat(type));
81
+ throw new Error(`Unknwown event: ${type}`);
122
82
  }
123
83
  };
124
- this.off = function (type, handler) {
84
+ this.off = (type, handler) => {
125
85
  if (type !== "accountsChanged" && type !== "networkChanged") {
126
- throw new Error("Unknwown event: ".concat(type));
86
+ throw new Error(`Unknwown event: ${type}`);
127
87
  }
128
- var idx = _this.subscriptions.findIndex(function (userEvent) { return userEvent.type === type && userEvent.handler === handler; });
88
+ const idx = this.subscriptions.findIndex((userEvent) => userEvent.type === type && userEvent.handler === handler);
129
89
  if (idx >= 0) {
130
- _this.subscriptions.splice(idx, 1);
90
+ this.subscriptions.splice(idx, 1);
131
91
  }
132
92
  };
133
93
  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;
94
+ this.controller.ready().then(isConnected => {
95
+ this.isConnected = !!isConnected;
96
+ if (this.controller.account) {
97
+ this.account = this.controller.account;
98
+ this.provider = _1.providers[this.controller.chainId];
99
+ this.selectedAddress = this.account.address;
140
100
  }
141
101
  });
142
102
  }
143
- return InjectedController;
144
- }());
103
+ }
145
104
  exports.InjectedController = InjectedController;
146
105
  function injectController(policies, options) {
147
106
  window.starknet_cartridge = new InjectedController(policies, options);
package/lib/inject.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"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"}
package/lib/signer.js CHANGED
@@ -8,37 +8,10 @@ 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
- };
38
11
  Object.defineProperty(exports, "__esModule", { value: true });
39
12
  exports.Signer = void 0;
40
- var Signer = /** @class */ (function () {
41
- function Signer(keychain, modal) {
13
+ class Signer {
14
+ constructor(keychain, modal) {
42
15
  this.keychain = keychain;
43
16
  this.modal = modal;
44
17
  }
@@ -47,9 +20,9 @@ var Signer = /** @class */ (function () {
47
20
  *
48
21
  * @returns public key of signer as hex string with 0x prefix
49
22
  */
50
- Signer.prototype.getPubKey = function () {
23
+ getPubKey() {
51
24
  return Promise.resolve("");
52
- };
25
+ }
53
26
  /**
54
27
  * Sign an JSON object for off-chain usage with the starknet private key and return the signature
55
28
  * This adds a message prefix so it cant be interchanged with transactions
@@ -59,23 +32,14 @@ var Signer = /** @class */ (function () {
59
32
  * @returns the signature of the JSON object
60
33
  * @throws {Error} if the JSON object is not a valid JSON
61
34
  */
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
- });
35
+ signMessage(typedData, account) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ this.modal.open();
38
+ const res = yield this.keychain.signMessage(typedData, account);
39
+ this.modal.close();
40
+ return res;
76
41
  });
77
- };
78
- return Signer;
79
- }());
42
+ }
43
+ }
80
44
  exports.Signer = Signer;
81
45
  //# 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":";;;;;;;;;;;;AAMA,MAAa,MAAM;IAGjB,YAAY,QAAsC,EAAE,KAAY;QAC9D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACI,SAAS;QACd,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;OAQG;IACU,WAAW,CACtB,SAA8B,EAC9B,OAAe;;YAEf,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,GAAgB,CAAC;QAC1B,CAAC;KAAA;CACF;AAnCD,wBAmCC"}
package/lib/utils.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Policy } from "./types";
2
2
  import { GraphQLClient } from "graphql-request";
3
+ import { number, Signature, Provider } from "starknet";
3
4
  import BN from "bn.js";
4
5
  export declare const ENDPOINT: string;
5
6
  export declare const client: GraphQLClient;
@@ -13,3 +14,9 @@ export declare const computeAddress: (username: string, { x0, x1, x2 }: {
13
14
  y1: BN;
14
15
  y2: BN;
15
16
  }, deviceKey: string) => string;
17
+ export declare const verifyMessageHash: (provider: Provider, address: string, messageHash: number.BigNumberish, signature: Signature) => Promise<boolean>;
18
+ export declare function split(n: BN): {
19
+ x: BN;
20
+ y: BN;
21
+ z: BN;
22
+ };
package/lib/utils.js CHANGED
@@ -1,63 +1,101 @@
1
1
  "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
- if (ar || !(i in from)) {
21
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
- ar[i] = from[i];
23
- }
24
- }
25
- return to.concat(ar || Array.prototype.slice.call(from));
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
+ });
26
10
  };
27
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
28
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
29
13
  };
30
14
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.computeAddress = exports.diff = exports.client = exports.ENDPOINT = void 0;
32
- var fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
33
- var graphql_request_1 = require("graphql-request");
34
- var starknet_1 = require("starknet");
35
- var constants_1 = require("@cartridge/controller/src/constants");
15
+ exports.split = exports.verifyMessageHash = exports.computeAddress = exports.diff = exports.client = exports.ENDPOINT = void 0;
16
+ const fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
17
+ const graphql_request_1 = require("graphql-request");
18
+ const starknet_1 = require("starknet");
19
+ const constants_1 = require("./constants");
20
+ const graphql_1 = require("./generated/graphql");
21
+ const cbor_x_1 = require("cbor-x");
36
22
  exports.ENDPOINT = process.env.NEXT_PUBLIC_API_URL;
37
23
  exports.client = new graphql_request_1.GraphQLClient(exports.ENDPOINT, { credentials: "include" });
38
24
  function diff(a, b) {
39
- return a.reduce(function (prev, policyA) {
40
- return b.some(function (policyB) { return (0, fast_deep_equal_1.default)(policyB, policyA); }) ? prev : __spreadArray(__spreadArray([], __read(prev), false), [policyA], false);
41
- }, []);
25
+ return a.reduce((prev, policyA) => b.some((policyB) => (0, fast_deep_equal_1.default)(policyB, policyA)) ? prev : [...prev, policyA], []);
42
26
  }
43
27
  exports.diff = diff;
44
- var computeAddress = function (username, _a, _b, deviceKey) {
45
- var x0 = _a.x0, x1 = _a.x1, x2 = _a.x2;
46
- var y0 = _b.y0, y1 = _b.y1, y2 = _b.y2;
47
- return starknet_1.hash.calculateContractAddressFromHash(starknet_1.shortString.encodeShortString(username), starknet_1.number.toBN(constants_1.PROXY_CLASS), [
48
- starknet_1.number.toBN(constants_1.CLASS_HASHES["0.0.1"].account),
49
- starknet_1.hash.getSelectorFromName("initialize"),
50
- "9",
51
- starknet_1.number.toBN(constants_1.CLASS_HASHES["0.0.1"].controller),
52
- "7",
53
- x0,
54
- x1,
55
- x2,
56
- y0,
57
- y1,
58
- y2,
59
- starknet_1.number.toBN(deviceKey),
60
- ], "0");
61
- };
28
+ const computeAddress = (username, { x0, x1, x2 }, { y0, y1, y2 }, deviceKey) => starknet_1.hash.calculateContractAddressFromHash(starknet_1.shortString.encodeShortString(username), starknet_1.number.toBN(constants_1.PROXY_CLASS), [
29
+ starknet_1.number.toBN(constants_1.CLASS_HASHES["0.0.1"].account),
30
+ starknet_1.hash.getSelectorFromName("initialize"),
31
+ "9",
32
+ starknet_1.number.toBN(constants_1.CLASS_HASHES["0.0.1"].controller),
33
+ "7",
34
+ x0,
35
+ x1,
36
+ x2,
37
+ y0,
38
+ y1,
39
+ y2,
40
+ starknet_1.number.toBN(deviceKey),
41
+ ], "0");
62
42
  exports.computeAddress = computeAddress;
43
+ const verifyMessageHash = (provider, address, messageHash, signature) => __awaiter(void 0, void 0, void 0, function* () {
44
+ var _a, _b, _c;
45
+ const isDeployed = !!provider.getClassHashAt(address, "latest");
46
+ if (isDeployed) {
47
+ const res = yield provider.callContract({
48
+ contractAddress: address,
49
+ entrypoint: "executeOnPlugin",
50
+ calldata: [
51
+ constants_1.CLASS_HASHES["0.0.1"].controller,
52
+ starknet_1.hash.getSelector("is_public_key"),
53
+ "0x1",
54
+ signature[0],
55
+ ],
56
+ });
57
+ const isRegistered = (res === null || res === void 0 ? void 0 : res.result[0]) === "0x1";
58
+ if (isRegistered) {
59
+ const keyPair = starknet_1.ec.getKeyPairFromPublicKey(signature[0]);
60
+ return starknet_1.ec.verify(keyPair, starknet_1.number.toBN(messageHash).toString(), signature);
61
+ }
62
+ else {
63
+ const res = yield provider.callContract({
64
+ contractAddress: address,
65
+ entrypoint: "isValidSignature",
66
+ calldata: [messageHash, signature.length, ...signature],
67
+ }, "latest");
68
+ return (res === null || res === void 0 ? void 0 : res.result[0]) === "0x1";
69
+ }
70
+ }
71
+ else {
72
+ const res = yield exports.client.request(graphql_1.AccountDocument, {
73
+ address,
74
+ });
75
+ const account = (_c = (_b = (_a = res === null || res === void 0 ? void 0 : res.accounts) === null || _a === void 0 ? void 0 : _a.edges) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.node;
76
+ if (!account) {
77
+ return false;
78
+ }
79
+ const pubKeyCbor = (0, cbor_x_1.decode)(starknet_1.number.toBN(account.credential.publicKey).toBuffer())[0];
80
+ const x = starknet_1.number.toBN("0x" + pubKeyCbor[-2].toString("hex"));
81
+ const y = starknet_1.number.toBN("0x" + pubKeyCbor[-3].toString("hex"));
82
+ const { x: x0, y: x1, z: x2 } = split(x);
83
+ const { x: y0, y: y1, z: y2 } = split(y);
84
+ const computedAddress = (0, exports.computeAddress)(account.id, { x0, x1, x2 }, { y0, y1, y2 }, signature[0]);
85
+ if (computedAddress !== address) {
86
+ throw new Error("invalid public key");
87
+ }
88
+ const keyPair = starknet_1.ec.getKeyPairFromPublicKey(signature[0]);
89
+ return starknet_1.ec.verify(keyPair, starknet_1.number.toBN(messageHash).toString(), signature);
90
+ }
91
+ });
92
+ exports.verifyMessageHash = verifyMessageHash;
93
+ const BASE = starknet_1.number.toBN(2).pow(starknet_1.number.toBN(86));
94
+ function split(n) {
95
+ const x = n.mod(BASE);
96
+ const y = n.div(BASE).mod(BASE);
97
+ const z = n.div(BASE).div(BASE);
98
+ return { x, y, z };
99
+ }
100
+ exports.split = split;
63
101
  //# 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oEAAoC;AAEpC,mDAAgD;AAChD,qCAAqD;AAErD,iEAAgF;AAEnE,QAAA,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAoB,CAAC;AAE5C,QAAA,MAAM,GAAG,IAAI,+BAAa,CAAC,gBAAQ,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;AAE9E,SAAgB,IAAI,CAAC,CAAW,EAAE,CAAW;IAC3C,OAAO,CAAC,CAAC,MAAM,CACb,UAAC,IAAI,EAAE,OAAO;QACZ,OAAA,CAAC,CAAC,IAAI,CAAC,UAAC,OAAO,IAAK,OAAA,IAAA,yBAAK,EAAC,OAAO,EAAE,OAAO,CAAC,EAAvB,CAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,wCAAK,IAAI,YAAE,OAAO,SAAC;IAAxE,CAAwE,EAC1E,EAAc,CACf,CAAC;AACJ,CAAC;AAND,oBAMC;AAEM,IAAM,cAAc,GAAG,UAC5B,QAAgB,EAChB,EAA0C,EAC1C,EAA0C,EAC1C,SAAiB;QAFf,EAAE,QAAA,EAAE,EAAE,QAAA,EAAE,EAAE,QAAA;QACV,EAAE,QAAA,EAAE,EAAE,QAAA,EAAE,EAAE,QAAA;IAGZ,OAAA,eAAI,CAAC,gCAAgC,CACnC,sBAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EACvC,iBAAM,CAAC,IAAI,CAAC,uBAAW,CAAC,EACxB;QACE,iBAAM,CAAC,IAAI,CAAC,wBAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;QAC1C,eAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;QACtC,GAAG;QACH,iBAAM,CAAC,IAAI,CAAC,wBAAY,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;QAC7C,GAAG;QACH,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,EAAE;QACF,iBAAM,CAAC,IAAI,CAAC,SAAS,CAAC;KACvB,EACD,GAAG,CACJ;AAlBD,CAkBC,CAAC;AAxBS,QAAA,cAAc,kBAwBvB"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cartridge/controller",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "description": "Cartridge Controller",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -17,8 +17,6 @@
17
17
  "@graphql-codegen/cli": "^2.16.4",
18
18
  "@types/jest": "^26.0.18",
19
19
  "@types/node": "^17.0.23",
20
- "graphql": "^16.3.0",
21
- "graphql-request": "^5.0.0",
22
20
  "jest": "^26.6.3",
23
21
  "ts-jest": "^26.5.1",
24
22
  "ts-node": "^10.4.0",
@@ -31,7 +29,10 @@
31
29
  "bn.js": "^5.2.1",
32
30
  "cbor-x": "^1.5.0",
33
31
  "fast-deep-equal": "^3.1.3",
32
+ "graphql": "^16.3.0",
33
+ "graphql-request": "^5.0.0",
34
34
  "query-string": "^7.1.1",
35
+ "react-query": "^3.39.2",
35
36
  "starknet": "^4.17.1"
36
37
  }
37
38
  }