@cartridge/controller 0.3.18 → 0.3.20

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.
Files changed (46) hide show
  1. package/LICENSE +16 -0
  2. package/{lib → dist}/constants.d.ts +1 -7
  3. package/dist/constants.js +25 -0
  4. package/dist/constants.js.map +1 -0
  5. package/{lib → dist}/device.d.ts +3 -3
  6. package/dist/device.js +92 -0
  7. package/dist/device.js.map +1 -0
  8. package/dist/errors.js +9 -0
  9. package/dist/errors.js.map +1 -0
  10. package/{lib → dist}/index.d.ts +12 -12
  11. package/dist/index.js +221 -0
  12. package/dist/index.js.map +1 -0
  13. package/{lib → dist}/inject.d.ts +13 -12
  14. package/{lib → dist}/inject.js +15 -51
  15. package/dist/inject.js.map +1 -0
  16. package/{lib → dist}/modal.js +3 -7
  17. package/dist/modal.js.map +1 -0
  18. package/{lib → dist}/signer.d.ts +6 -3
  19. package/dist/signer.js +48 -0
  20. package/dist/signer.js.map +1 -0
  21. package/{lib → dist}/types.d.ts +14 -15
  22. package/dist/types.js +8 -0
  23. package/dist/types.js.map +1 -0
  24. package/dist/utils.d.ts +19 -0
  25. package/dist/utils.js +107 -0
  26. package/dist/utils.js.map +1 -0
  27. package/package.json +17 -21
  28. package/lib/constants.js +0 -35
  29. package/lib/constants.js.map +0 -1
  30. package/lib/device.js +0 -103
  31. package/lib/device.js.map +0 -1
  32. package/lib/errors.js +0 -13
  33. package/lib/errors.js.map +0 -1
  34. package/lib/index.js +0 -278
  35. package/lib/index.js.map +0 -1
  36. package/lib/inject.js.map +0 -1
  37. package/lib/modal.js.map +0 -1
  38. package/lib/signer.js +0 -45
  39. package/lib/signer.js.map +0 -1
  40. package/lib/types.js +0 -16
  41. package/lib/types.js.map +0 -1
  42. package/lib/utils.d.ts +0 -20
  43. package/lib/utils.js +0 -126
  44. package/lib/utils.js.map +0 -1
  45. /package/{lib → dist}/errors.d.ts +0 -0
  46. /package/{lib → dist}/modal.d.ts +0 -0
@@ -1,69 +1,34 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
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
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.injectController = exports.InjectedController = void 0;
36
- const starknet_1 = require("starknet");
37
- const _1 = __importStar(require("."));
38
- class InjectedController {
1
+ import { constants } from "starknet";
2
+ import Controller, { providers } from ".";
3
+ export class InjectedController {
39
4
  constructor(policies, options) {
40
5
  this.id = "Cartridge";
41
6
  this.name = "Cartridge";
42
7
  this.version = "0.0.1";
43
8
  this.icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjkiIGhlaWdodD0iNTciIHZpZXdCb3g9IjAgMCA2OSA1NyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMy41NTEzIDAuMDM5MDYyNUg0NC42Mjc4TDQ0LjcwMTIgMC4wNDE3NTc4QzQ2LjI2MjQgMC4wOTkwOTkyIDQ3Ljc5NDggMC40NzQ3OTUgNDkuMjA0OSAxLjE0NTA5TDYzLjUyMjcgNy4xODc5NUw2My42NTIyIDcuMjU0MDRDNjUuMDExOCA3Ljk0ODEyIDY2LjE0NzggOS4wMTA3NyA2Ni45MzE2IDEwLjMxOTNDNjcuNzA4MSAxMS42MTU3IDY4LjEwODUgMTMuMTAyMSA2OC4wODg5IDE0LjYxMjFWMzguNjg0QzY4LjA4ODkgMzguNzEgNjguMDg5IDM4LjczNzYgNjguMDg5MSAzOC43NjY2QzY4LjA5MTQgMzkuNjQwOSA2OC4wOTc0IDQxLjgzNTYgNjYuMTY5NyA0My43NjgxTDYxLjY2MjYgNDguMjg2NUM2MC44OTEzIDQ5LjA1OTggNTkuOTY3IDQ5LjY3NDkgNTguODA3IDQ5Ljk4NDlDNTcuOTIxNyA1MC4yMjE1IDU3LjA1MzUgNTAuMjE3IDU2LjY2MyA1MC4yMTVDNTYuNjMxMSA1MC4yMTQ4IDU2LjYwMjQgNTAuMjE0NyA1Ni41NzcxIDUwLjIxNDdMNTAuMzM4NSA1MC4yMDk5TDUwLjMzNjIgNTYuMjM1M0gxNy45MjkzVjUwLjIxNDdIMTEuNjA0QzExLjU3ODggNTAuMjE0NyAxMS41NTAxIDUwLjIxNDggMTEuNTE4MiA1MC4yMTVDMTEuMTI3NiA1MC4yMTcgMTAuMjU5NSA1MC4yMjE1IDkuMzc0MTYgNDkuOTg0OUM4LjIxNDUgNDkuNjc0OSA3LjI5MDQgNDkuMDYwMiA2LjUxOTEyIDQ4LjI4NzFMMi4wMTAxMSA0My43Njg3QzAuMDgyNDUwMyA0MS44MzYyIDAuMDg3Nzg0NCAzOS42NDA5IDAuMDkwMTUyNCAzOC43NjY2QzAuMDkwMjMwOSAzOC43Mzc2IDAuMDkwMzA1NSAzOC43MSAwLjA5MDMwNTUgMzguNjg0VjE0LjYxMjdDMC4wNzA0MyAxMy4xMDI1IDAuNDcwNjMgMTEuNjE1NyAxLjI0NzI5IDEwLjMxOTJDMi4wMzEzOSA5LjAxMDE4IDMuMTY3OTIgNy45NDczOCA0LjUyODExIDcuMjUzNUw0LjY1Njk3IDcuMTg3NzZMMTguOTcyOCAxLjE0NDg5QzIwLjM4MzUgMC40NzQ4MDggMjEuOTE2MiAwLjA5OTE5NTUgMjMuNDc3OCAwLjA0MTc2NUwyMy41NTEzIDAuMDM5MDYyNVoiIGZpbGw9IiMwRjE0MTAiLz4KPHBhdGggZD0iTTIyLjI4NjMgMjIuOTcyOUg0NS42NDdWMTcuMDcxN0gyMi4yOTIyQzIyLjI5MjIgMTcuNjc0NiAyMi4yODYzIDIyLjk3MjkgMjIuMjg2MyAyMi45NzI5WiIgZmlsbD0iI0ZCQ0I0QSIvPgo8cGF0aCBkPSJNNjEuODMzNCAxMC44MTY3TDQ3LjU1OTEgNC43OTIxM0M0Ni42MjA4IDQuMzMzODggNDUuNTk3NCA0LjA3NzM3IDQ0LjU1NDQgNC4wMzkwNkgyMy42MjQ4QzIyLjU4MTIgNC4wNzc0NCAyMS41NTcxIDQuMzMzOTQgMjAuNjE4MiA0Ljc5MjEzTDYuMzQ1NzkgMTAuODE2N0M1LjY1NTMgMTEuMTY4OSA1LjA3NzYxIDExLjcwODggNC42Nzg3NiAxMi4zNzQ3QzQuMjc5OSAxMy4wNDA1IDQuMDc1OTggMTMuODA1NCA0LjA5MDMxIDE0LjU4MlYzOC42ODRDNC4wOTAzMSAzOS40MzcxIDQuMDkwMyA0MC4xOTAxIDQuODQxNDggNDAuOTQzMkw5LjM1MDQ5IDQ1LjQ2MTZDMTAuMTAxNyA0Ni4yMTQ3IDEwLjY2NTUgNDYuMjE0NyAxMS42MDQgNDYuMjE0N0gyMS45MjkzQzIxLjkyOTMgNDYuODYyMSAyMS45MjkzIDUyLjIzNTMgMjEuOTI5MyA1Mi4yMzUzSDQ2LjMzNzdWNDYuMjA2OUgyMS45NDg4VjQwLjE5MDFIMTAuODUyOEMxMC4xMDE3IDQwLjE5MDEgMTAuMTAxNyAzOS40MzcxIDEwLjEwMTcgMzkuNDM3MVYxMC44MTY3QzEwLjEwMTcgMTAuODE2NyAxMC4xMDE3IDEwLjA2MzYgMTAuODUyOCAxMC4wNjM2SDU3LjMyODNDNTguMDc5NSAxMC4wNjM2IDU4LjA3OTUgMTAuODE2NyA1OC4wNzk1IDEwLjgxNjdWMzkuNDM3MUM1OC4wNzk1IDM5LjQzNzEgNTguMDc5NSA0MC4xOTAxIDU3LjMyODMgNDAuMTkwMUg0Ni4zNDM2TDQ2LjMzNzcgNDYuMjA2OUw1Ni41NzcxIDQ2LjIxNDdDNTcuNTE1NiA0Ni4yMTQ3IDU4LjA3OTUgNDYuMjE0NyA1OC44MzA3IDQ1LjQ2MTZMNjMuMzM3NyA0MC45NDMyQzY0LjA4ODkgNDAuMTkwMSA2NC4wODg5IDM5LjQzNzEgNjQuMDg4OSAzOC42ODRWMTQuNTgyQzY0LjEwMyAxMy44MDU1IDYzLjg5OSAxMy4wNDA2IDYzLjUwMDEgMTIuMzc0OEM2My4xMDEzIDExLjcwOSA2Mi41MjM4IDExLjE2OTEgNjEuODMzNCAxMC44MTY3WiIgZmlsbD0iI0ZCQ0I0QSIvPgo8L3N2Zz4K";
44
- this.provider = _1.providers[starknet_1.constants.StarknetChainId.MAINNET];
9
+ this.provider = providers[constants.StarknetChainId.SN_MAIN];
45
10
  this.isConnected = false;
46
11
  this.subscriptions = [];
47
- this.request = (call) => {
12
+ this.request = (_call) => {
48
13
  throw Error("Not implemented");
49
14
  };
50
- this.enable = () => __awaiter(this, void 0, void 0, function* () {
51
- this.account = yield this.controller.connect();
15
+ this.enable = async () => {
16
+ this.account = await this.controller.connect();
52
17
  if (!this.account) {
53
18
  return [];
54
19
  }
55
- this.provider = _1.providers[this.controller.chainId];
20
+ this.provider = providers[this.controller.chainId];
56
21
  this.isConnected = true;
57
22
  return [this.account.address];
58
- });
59
- this.isPreauthorized = () => __awaiter(this, void 0, void 0, function* () {
23
+ };
24
+ this.isPreauthorized = async () => {
60
25
  return this.controller
61
26
  .ready()
62
27
  .then(() => {
63
28
  return this.controller.probe();
64
29
  })
65
30
  .then((connected) => !!connected);
66
- });
31
+ };
67
32
  this.on = (type, handler) => {
68
33
  if (type === "accountsChanged") {
69
34
  this.subscriptions.push({
@@ -90,20 +55,19 @@ class InjectedController {
90
55
  this.subscriptions.splice(idx, 1);
91
56
  }
92
57
  };
93
- this.controller = new _1.default(policies, options);
94
- this.controller.ready().then(isConnected => {
58
+ this.controller = new Controller(policies, options);
59
+ this.controller.ready().then((isConnected) => {
95
60
  this.isConnected = !!isConnected;
96
61
  if (this.controller.account) {
97
62
  this.account = this.controller.account;
98
- this.provider = _1.providers[this.controller.chainId];
63
+ this.provider = providers[this.controller.chainId];
99
64
  this.selectedAddress = this.account.address;
100
65
  }
101
66
  });
102
67
  }
103
68
  }
104
- exports.InjectedController = InjectedController;
105
69
  function injectController(policies, options) {
106
70
  window.starknet_cartridge = new InjectedController(policies, options);
107
71
  }
108
- exports.injectController = injectController;
72
+ export { injectController };
109
73
  //# sourceMappingURL=inject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createModal = void 0;
4
- const createModal = (src, onClose) => {
1
+ export const createModal = (src, onClose) => {
5
2
  const iframe = document.createElement("iframe");
6
3
  iframe.src = src;
7
4
  iframe.id = "cartridge-modal";
@@ -21,7 +18,7 @@ const createModal = (src, onClose) => {
21
18
  container.style.top = "0";
22
19
  container.style.left = "0";
23
20
  container.style.zIndex = "10000";
24
- container.style.backgroundColor = "rgba(0,0,0,0.5)";
21
+ container.style.backgroundColor = "rgba(0,0,0,0.6)";
25
22
  container.style.display = "flex";
26
23
  container.style.alignItems = "center";
27
24
  container.style.justifyContent = "center";
@@ -49,9 +46,8 @@ const createModal = (src, onClose) => {
49
46
  close,
50
47
  };
51
48
  };
52
- exports.createModal = createModal;
53
49
  const resize = (el) => {
54
- if (window.innerWidth < 600) {
50
+ if (window.innerWidth < 768) {
55
51
  el.style.height = "100%";
56
52
  el.style.width = "100%";
57
53
  el.style.borderRadius = "0";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.js","sourceRoot":"","sources":["../src/modal.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { Signature, typedData } from "starknet";
1
+ import { Abi, Call, DeclareSignerDetails, DeployAccountSignerDetails, InvocationsSignerDetails, Signature, SignerInterface, TypedData } from "starknet";
2
2
  import { Keychain, Modal } from "./types";
3
3
  import { AsyncMethodReturns } from "@cartridge/penpal";
4
- export declare class Signer {
4
+ export declare class Signer implements SignerInterface {
5
5
  private keychain;
6
6
  modal: Modal;
7
7
  constructor(keychain: AsyncMethodReturns<Keychain>, modal: Modal);
@@ -20,5 +20,8 @@ export declare class Signer {
20
20
  * @returns the signature of the JSON object
21
21
  * @throws {Error} if the JSON object is not a valid JSON
22
22
  */
23
- signMessage(typedData: typedData.TypedData, account: string): Promise<Signature>;
23
+ signMessage(typedData: TypedData, account: string): Promise<Signature>;
24
+ signTransaction(transactions: Call[], transactionsDetail: InvocationsSignerDetails, abis?: Abi[]): Promise<Signature>;
25
+ signDeployAccountTransaction(transaction: DeployAccountSignerDetails): Promise<Signature>;
26
+ signDeclareTransaction(transaction: DeclareSignerDetails): Promise<Signature>;
24
27
  }
package/dist/signer.js ADDED
@@ -0,0 +1,48 @@
1
+ export class Signer {
2
+ constructor(keychain, modal) {
3
+ this.keychain = keychain;
4
+ this.modal = modal;
5
+ }
6
+ /**
7
+ * Method to get the public key of the signer
8
+ *
9
+ * @returns public key of signer as hex string with 0x prefix
10
+ */
11
+ getPubKey() {
12
+ return Promise.resolve("");
13
+ }
14
+ /**
15
+ * Sign an JSON object for off-chain usage with the starknet private key and return the signature
16
+ * This adds a message prefix so it cant be interchanged with transactions
17
+ *
18
+ * @param typedData - JSON object to be signed
19
+ * @param accountAddress - account
20
+ * @returns the signature of the JSON object
21
+ * @throws {Error} if the JSON object is not a valid JSON
22
+ */
23
+ async signMessage(typedData, account) {
24
+ this.modal.open();
25
+ const res = await this.keychain.signMessage(typedData, account);
26
+ this.modal.close();
27
+ return res;
28
+ }
29
+ async signTransaction(transactions, transactionsDetail, abis) {
30
+ this.modal.open();
31
+ const res = await this.keychain.signTransaction(transactions, transactionsDetail, abis);
32
+ this.modal.close();
33
+ return res;
34
+ }
35
+ async signDeployAccountTransaction(transaction) {
36
+ this.modal.open();
37
+ const res = await this.keychain.signDeployAccountTransaction(transaction);
38
+ this.modal.close();
39
+ return res;
40
+ }
41
+ async signDeclareTransaction(transaction) {
42
+ this.modal.open();
43
+ const res = await this.keychain.signDeclareTransaction(transaction);
44
+ this.modal.close();
45
+ return res;
46
+ }
47
+ }
48
+ //# sourceMappingURL=signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,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;IACI,KAAK,CAAC,WAAW,CACtB,SAAoB,EACpB,OAAe;QAEf,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,GAAgB,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,eAAe,CAC1B,YAAoB,EACpB,kBAA4C,EAC5C,IAAY;QAEZ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAC7C,YAAY,EACZ,kBAAkB,EAClB,IAAI,CACL,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,KAAK,CAAC,4BAA4B,CACvC,WAAuC;QAEvC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;QAC1E,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,KAAK,CAAC,sBAAsB,CACjC,WAAiC;QAEjC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
- import { constants, number, Abi, Call, InvocationsDetails, typedData, InvokeFunctionResponse, Signature, EstimateFeeDetails, EstimateFee, DeclareContractPayload } from "starknet";
3
- export declare type Assertion = {
2
+ import { constants, Abi, Call, InvocationsDetails, TypedData, InvokeFunctionResponse, Signature, EstimateFeeDetails, EstimateFee, DeclareContractPayload, BigNumberish, InvocationsSignerDetails, DeployAccountSignerDetails, DeclareSignerDetails } from "starknet";
3
+ export type Assertion = {
4
4
  id: string;
5
5
  type: string;
6
6
  rawId: string;
@@ -11,45 +11,41 @@ export declare type Assertion = {
11
11
  signature: string;
12
12
  };
13
13
  };
14
- export declare type Session = {
14
+ export type Session = {
15
15
  chainId: constants.StarknetChainId;
16
16
  policies: Policy[];
17
- maxFee: number.BigNumberish;
17
+ maxFee: BigNumberish;
18
18
  };
19
- export declare type Policy = {
19
+ export type Policy = {
20
20
  target: string;
21
21
  method?: string;
22
22
  };
23
- export declare enum SupportedChainIds {
24
- MAINNET = "0x534e5f4d41494e",
25
- TESTNET = "0x534e5f474f45524c49"
26
- }
27
23
  export declare enum ResponseCodes {
28
24
  SUCCESS = "SUCCESS",
29
25
  NOT_CONNECTED = "NOT_CONNECTED",
30
26
  NOT_ALLOWED = "NOT_ALLOWED",
31
27
  CANCELED = "CANCELED"
32
28
  }
33
- export declare type Error = {
29
+ export type Error = {
34
30
  code: ResponseCodes;
35
31
  message: string;
36
32
  };
37
- export declare type ConnectReply = {
33
+ export type ConnectReply = {
38
34
  code: ResponseCodes.SUCCESS;
39
35
  address: string;
40
36
  policies: Policy[];
41
37
  };
42
- export declare type ExecuteReply = InvokeFunctionResponse & {
38
+ export type ExecuteReply = InvokeFunctionResponse & {
43
39
  code: ResponseCodes.SUCCESS;
44
40
  };
45
- export declare type ProbeReply = {
41
+ export type ProbeReply = {
46
42
  code: ResponseCodes.SUCCESS;
47
43
  address: string;
48
44
  policies: Policy[];
49
45
  };
50
46
  export interface Keychain {
51
47
  probe(): Promise<ProbeReply | Error>;
52
- connect(policies: Policy[], starterPackId?: string, chainId?: SupportedChainIds): Promise<ConnectReply | Error>;
48
+ connect(policies: Policy[], starterPackId?: string, chainId?: constants.StarknetChainId): Promise<ConnectReply | Error>;
53
49
  disconnect(): void;
54
50
  reset(): void;
55
51
  revoke(origin: string): void;
@@ -82,7 +78,10 @@ export interface Keychain {
82
78
  sessions(): Promise<{
83
79
  [key: string]: Session;
84
80
  }>;
85
- signMessage(typedData: typedData.TypedData, account: string): Promise<Signature | Error>;
81
+ signMessage(typedData: TypedData, account: string): Promise<Signature | Error>;
82
+ signTransaction(transactions: Call[], transactionsDetail: InvocationsSignerDetails, abis?: Abi[]): Promise<Signature>;
83
+ signDeployAccountTransaction(transaction: DeployAccountSignerDetails): Promise<Signature>;
84
+ signDeclareTransaction(transaction: DeclareSignerDetails): Promise<Signature>;
86
85
  issueStarterPack(id: string): Promise<InvokeFunctionResponse>;
87
86
  showQuests(gameId: string): Promise<void>;
88
87
  }
package/dist/types.js ADDED
@@ -0,0 +1,8 @@
1
+ export var ResponseCodes;
2
+ (function (ResponseCodes) {
3
+ ResponseCodes["SUCCESS"] = "SUCCESS";
4
+ ResponseCodes["NOT_CONNECTED"] = "NOT_CONNECTED";
5
+ ResponseCodes["NOT_ALLOWED"] = "NOT_ALLOWED";
6
+ ResponseCodes["CANCELED"] = "CANCELED";
7
+ })(ResponseCodes || (ResponseCodes = {}));
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAwCA,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,gDAA+B,CAAA;IAC/B,4CAA2B,CAAA;IAC3B,sCAAqB,CAAA;AACvB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB"}
@@ -0,0 +1,19 @@
1
+ import { Policy } from "./types";
2
+ import { RpcProvider, BigNumberish, ArraySignatureType } from "starknet";
3
+ export declare function diff(a: Policy[], b: Policy[]): Policy[];
4
+ export declare const computeAddress: (username: string, { x0, x1, x2 }: {
5
+ x0: bigint;
6
+ x1: bigint;
7
+ x2: bigint;
8
+ }, { y0, y1, y2 }: {
9
+ y0: bigint;
10
+ y1: bigint;
11
+ y2: bigint;
12
+ }, deviceKey: string) => string;
13
+ export declare const verifyMessageHash: (provider: RpcProvider, address: string, messageHash: BigNumberish, signature: ArraySignatureType) => Promise<boolean>;
14
+ export declare const getAccounts: (addresses: string[]) => Promise<any>;
15
+ export declare function split(n: bigint): {
16
+ x: bigint;
17
+ y: bigint;
18
+ z: bigint;
19
+ };
package/dist/utils.js ADDED
@@ -0,0 +1,107 @@
1
+ import equal from "fast-deep-equal";
2
+ import { ec, hash, shortString, addAddressPadding, num, } from "starknet";
3
+ import { PROXY_CLASS, CLASS_HASHES } from "./constants";
4
+ import { decode } from "cbor-x";
5
+ export function diff(a, b) {
6
+ return a.reduce((prev, policyA) => b.some((policyB) => equal(policyB, policyA)) ? prev : [...prev, policyA], []);
7
+ }
8
+ export const computeAddress = (username, { x0, x1, x2 }, { y0, y1, y2 }, deviceKey) => hash.calculateContractAddressFromHash(shortString.encodeShortString(username), BigInt(PROXY_CLASS), [
9
+ BigInt(CLASS_HASHES["0.0.1"].account),
10
+ hash.getSelectorFromName("initialize"),
11
+ "9",
12
+ BigInt(CLASS_HASHES["0.0.1"].controller),
13
+ "7",
14
+ x0,
15
+ x1,
16
+ x2,
17
+ y0,
18
+ y1,
19
+ y2,
20
+ BigInt(deviceKey),
21
+ ], "0");
22
+ export const verifyMessageHash = async (provider, address, messageHash, signature) => {
23
+ const isDeployed = !!provider.getClassHashAt(address, "latest");
24
+ if (isDeployed) {
25
+ const res = await provider.callContract({
26
+ contractAddress: address,
27
+ entrypoint: "executeOnPlugin",
28
+ calldata: [
29
+ CLASS_HASHES["0.0.1"].controller,
30
+ hash.getSelector("is_public_key"),
31
+ "0x1",
32
+ signature[0],
33
+ ],
34
+ });
35
+ const isRegistered = res[0] === "0x1";
36
+ if (isRegistered) {
37
+ return ec.starkCurve.verify(
38
+ // @ts-expect-error TODO(#244): Adapt signature
39
+ signature, num.toHex(messageHash), signature[0]);
40
+ }
41
+ else {
42
+ const res = await provider.callContract({
43
+ contractAddress: address,
44
+ entrypoint: "isValidSignature",
45
+ calldata: [messageHash, signature.length, ...signature],
46
+ }, "latest");
47
+ return res[0] === "0x1";
48
+ }
49
+ }
50
+ else {
51
+ const res = await (await fetch("https://api.cartridge.gg/query", {
52
+ headers: {
53
+ "content-type": "application/json",
54
+ },
55
+ body: `{\"query\":\"query Account($address: String!) {\\n accounts(where: { contractAddress: $address }) {\\n edges {\\n node {\\n id\\n credential {\\n id\\n publicKey\\n }\\n }\\n }\\n }\\n}\\n\",\"variables\":{\"address\":\"${addAddressPadding(address)}\"},\"operationName\":\"Account\"}`,
56
+ method: "POST",
57
+ mode: "cors",
58
+ credentials: "omit",
59
+ })).json();
60
+ const account = res?.accounts?.edges?.[0]?.node;
61
+ if (!account) {
62
+ return false;
63
+ }
64
+ const buf = Buffer.alloc(32);
65
+ buf.writeBigInt64BE(BigInt(account.credential.publicKey));
66
+ const pubKeyCbor = decode(buf)[0];
67
+ const x = BigInt("0x" + pubKeyCbor[-2].toString("hex"));
68
+ const y = BigInt("0x" + pubKeyCbor[-3].toString("hex"));
69
+ const { x: x0, y: x1, z: x2 } = split(x);
70
+ const { x: y0, y: y1, z: y2 } = split(y);
71
+ const computedAddress = computeAddress(account.id, { x0, x1, x2 }, { y0, y1, y2 }, signature[0]);
72
+ if (computedAddress !== address) {
73
+ throw new Error("invalid public key");
74
+ }
75
+ return ec.starkCurve.verify(signature[0], BigInt(messageHash).toString(), account.credential.publicKey);
76
+ }
77
+ };
78
+ export const getAccounts = async (addresses) => {
79
+ const query = addresses.map((addr) => ({
80
+ contractAddress: addAddressPadding(addr),
81
+ }));
82
+ const res = await (await fetch("https://api.cartridge.gg/query", {
83
+ headers: {
84
+ "content-type": "application/json",
85
+ },
86
+ body: `{\"query\":\"query AccountInfo($addresses: [AccountWhereInput!]!) {\\n accounts(where: { or: $addresses}) {\\n edges {\\n node {\\n id\\n contractAddress\\n }\\n }\\n }\\n}\",\"variables\":{\"addresses\":${JSON.stringify(query)}},\"operationName\":\"AccountInfo\"}`,
87
+ method: "POST",
88
+ mode: "cors",
89
+ credentials: "omit",
90
+ })).json();
91
+ if (res.errors) {
92
+ throw new Error(res.errors[0].message);
93
+ }
94
+ return res.accounts.edges.map((edge) => ({
95
+ id: edge.node.id,
96
+ name: edge.node.id,
97
+ profile_uri: `https://cartridge.gg/profile/${edge.node.contractAddress}`,
98
+ }));
99
+ };
100
+ const BASE = 2n ** 86n;
101
+ export function split(n) {
102
+ const x = n % BASE;
103
+ const y = (n / BASE) % BASE;
104
+ const z = n / BASE / BASE;
105
+ return { x, y, z };
106
+ }
107
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,33 +1,29 @@
1
1
  {
2
2
  "name": "@cartridge/controller",
3
- "version": "0.3.18",
3
+ "version": "0.3.20",
4
4
  "description": "Cartridge Controller",
5
- "main": "lib/index.js",
6
- "types": "lib/index.d.ts",
7
- "scripts": {
8
- "build": "tsc --build tsconfig.json",
9
- "dev": "tsc --watch",
10
- "format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""
11
- },
5
+ "module": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
12
8
  "files": [
13
- "lib"
9
+ "dist"
14
10
  ],
15
- "devDependencies": {
16
- "@types/jest": "^26.0.18",
17
- "@types/node": "^17.0.23",
18
- "jest": "^26.6.3",
19
- "ts-jest": "^26.5.1",
20
- "ts-node": "^10.4.0",
21
- "tslib": "^2.3.1",
22
- "typescript": "4.8.2"
23
- },
24
11
  "dependencies": {
25
12
  "@cartridge/penpal": "^6.2.3",
26
13
  "base64url": "^3.0.1",
27
- "bn.js": "^5.2.1",
28
14
  "cbor-x": "^1.5.0",
29
15
  "fast-deep-equal": "^3.1.3",
30
16
  "query-string": "^7.1.1",
31
- "starknet": "^4.17.1"
17
+ "starknet": "^6.6.0"
18
+ },
19
+ "devDependencies": {
20
+ "@types/node": "^20.6.0",
21
+ "typescript": "^5.4.5",
22
+ "@cartridge/tsconfig": "^0.0.1"
23
+ },
24
+ "scripts": {
25
+ "build": "tsc",
26
+ "dev": "tsc",
27
+ "format": "prettier --write \"src/**/*.ts\""
32
28
  }
33
- }
29
+ }
package/lib/constants.js DELETED
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NamedChainId = exports.CLASS_HASHES = exports.PROXY_CLASS = exports.CONTRACT_NFF_BRIDGE = exports.CONTRACT_UPGRADE_IMPLEMENTATION = exports.CONTRACT_ACHIEVEMENTS = exports.CONTRACT_ARGENT_CLASS = exports.CONTRACT_CONTROLLER_CLASS = exports.CONTRACT_AVATAR = exports.CONTRACT_POINTS = exports.CONTRACT_ETH = exports.ETH_RPC_GOERLI = exports.ETH_RPC_MAINNET = exports.GATEWAY_GOERLI = exports.GATEWAY_MAINNET = void 0;
4
- const starknet_1 = require("starknet");
5
- exports.GATEWAY_MAINNET = "https://alpha-mainnet.starknet.io/feeder_gateway";
6
- exports.GATEWAY_GOERLI = "https://alpha4.starknet.io/feeder_gateway";
7
- exports.ETH_RPC_MAINNET = "https://eth-mainnet.g.alchemy.com/v2/OGPRMquXP3K7oTkLrmVZpjCd1DswtYz3";
8
- exports.ETH_RPC_GOERLI = "https://eth-goerli.g.alchemy.com/v2/RMPbO9CyB-lVmkbpXCyg8W482pZDDht_";
9
- exports.CONTRACT_ETH = "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7";
10
- exports.CONTRACT_POINTS = "0x00c62540e9a10c47a4b7d8abaff468192c66f2d1e979f6bade6e44bf73995982";
11
- exports.CONTRACT_AVATAR = "0x002e02ab50ad223a4de99d7591cbbb565705893ad5b8522a9bde011d20e99926";
12
- exports.CONTRACT_CONTROLLER_CLASS = "0x077007d85dd2466b2b29e626bac27ee017d7586f62511f4585dd596f33337ccf";
13
- exports.CONTRACT_ARGENT_CLASS = "0x025ec026985a3bf9d0cc1fe17326b245dfdc3ff89b8fde106542a3ea56c5a918";
14
- exports.CONTRACT_ACHIEVEMENTS = "0x00f6883b55c1ed7814e5df15fa8fa4bdbad4d4778662a62413c1e58fce10f4f0";
15
- exports.CONTRACT_UPGRADE_IMPLEMENTATION = "0x07e28fb0161d10d1cf7fe1f13e7ca57bce062731a3bd04494dfd2d0412699727";
16
- // L1 Contract
17
- exports.CONTRACT_NFF_BRIDGE = "0xbd701502203B21307BEa2d4078E69dd0c9C0703C";
18
- exports.PROXY_CLASS = "0x04be79b3904b4e2775fd706fa037610b41d8f8708ce298aac3a470badf68176d";
19
- exports.CLASS_HASHES = {
20
- ["0.0.1"]: {
21
- account: "0x079507b6068846a05500331e0b54f7b539f067c2003de1f4635fc9885a267144",
22
- controller: "0x0286a2ea79ee08506efcbc330efd2ae34e2f22b79ecd2fb9b86ce26d6a1dbece",
23
- legacyController: "0x58e648a242085d5ff1e8f92a6b91057826639a82b23798998d40b61a27bca85",
24
- },
25
- ["latest"]: {
26
- account: "0x627850d612539b1258f64f8d76b0392944bb2886ed891b93e2bff9223317a91",
27
- controller: "0x6bcb2ecc68f478bd0546c451a0820ce19e2d562e3cfcb5906eede15aa81cc42",
28
- legacyController: "0x58e648a242085d5ff1e8f92a6b91057826639a82b23798998d40b61a27bca85",
29
- },
30
- };
31
- exports.NamedChainId = {
32
- [starknet_1.constants.StarknetChainId.MAINNET]: "SN_MAIN",
33
- [starknet_1.constants.StarknetChainId.TESTNET]: "SN_GOERLI",
34
- };
35
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AAExB,QAAA,eAAe,GAAG,kDAAkD,CAAC;AACrE,QAAA,cAAc,GAAG,2CAA2C,CAAC;AAE7D,QAAA,eAAe,GAAG,uEAAuE,CAAC;AAC1F,QAAA,cAAc,GAAG,sEAAsE,CAAC;AAExF,QAAA,YAAY,GACvB,oEAAoE,CAAC;AAC1D,QAAA,eAAe,GAC1B,oEAAoE,CAAC;AAC1D,QAAA,eAAe,GAC1B,oEAAoE,CAAC;AAE1D,QAAA,yBAAyB,GACpC,oEAAoE,CAAC;AAC1D,QAAA,qBAAqB,GAChC,oEAAoE,CAAC;AAC1D,QAAA,qBAAqB,GAChC,oEAAoE,CAAC;AAC1D,QAAA,+BAA+B,GAC1C,oEAAoE,CAAC;AAEvE,cAAc;AACD,QAAA,mBAAmB,GAAG,4CAA4C,CAAC;AAEnE,QAAA,WAAW,GACtB,oEAAoE,CAAC;AAE1D,QAAA,YAAY,GAAG;IAC1B,CAAC,OAAO,CAAC,EAAE;QACT,OAAO,EACL,oEAAoE;QACtE,UAAU,EACR,oEAAoE;QACtE,gBAAgB,EACd,mEAAmE;KACtE;IACD,CAAC,QAAQ,CAAC,EAAE;QACV,OAAO,EACL,mEAAmE;QACrE,UAAU,EACR,mEAAmE;QACrE,gBAAgB,EACd,mEAAmE;KACtE;CACF,CAAC;AAEW,QAAA,YAAY,GAAG;IAC1B,CAAC,oBAAS,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,SAAS;IAC9C,CAAC,oBAAS,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,WAAW;CACjD,CAAC"}
package/lib/device.js DELETED
@@ -1,103 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const starknet_1 = require("starknet");
13
- const types_1 = require("./types");
14
- const signer_1 = require("./signer");
15
- class DeviceAccount extends starknet_1.Account {
16
- constructor(provider, address, keychain, modal) {
17
- super(provider, address, new signer_1.Signer(keychain, modal));
18
- this.address = address;
19
- this.keychain = keychain;
20
- this.modal = modal;
21
- }
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
- estimateInvokeFee(calls, details) {
34
- return __awaiter(this, void 0, void 0, function* () {
35
- return this.keychain.estimateInvokeFee(calls, Object.assign(Object.assign({}, details), { chainId: this.chainId }));
36
- });
37
- }
38
- estimateDeclareFee(payload, details) {
39
- return __awaiter(this, void 0, void 0, function* () {
40
- return this.keychain.estimateDeclareFee(payload, Object.assign(Object.assign({}, details), { chainId: this.chainId }));
41
- });
42
- }
43
- /**
44
- * Invoke execute function in account contract
45
- *
46
- * @param calls the invocation object or an array of them, containing:
47
- * - contractAddress - the address of the contract
48
- * - entrypoint - the entrypoint of the contract
49
- * - calldata - (defaults to []) the calldata
50
- * - signature - (defaults to []) the signature
51
- * @param abis (optional) the abi of the contract for better displaying
52
- *
53
- * @returns response from addTransaction
54
- */
55
- execute(calls, abis, transactionsDetail) {
56
- return __awaiter(this, void 0, void 0, function* () {
57
- if (!transactionsDetail) {
58
- transactionsDetail = {};
59
- }
60
- try {
61
- const res = yield this.keychain.execute(calls, abis, transactionsDetail);
62
- if (res.code === types_1.ResponseCodes.SUCCESS) {
63
- return res;
64
- }
65
- this.modal.open();
66
- const res2 = yield this.keychain.execute(calls, abis, transactionsDetail, true);
67
- this.modal.close();
68
- if (res2.code !== types_1.ResponseCodes.SUCCESS) {
69
- throw new Error(res2.message);
70
- }
71
- return res2;
72
- }
73
- catch (e) {
74
- console.error(e);
75
- throw e;
76
- }
77
- });
78
- }
79
- /**
80
- * Sign an JSON object for off-chain usage with the starknet private key and return the signature
81
- * This adds a message prefix so it cant be interchanged with transactions
82
- *
83
- * @param json - JSON object to be signed
84
- * @returns the signature of the JSON object
85
- * @throws {Error} if the JSON object is not a valid JSON
86
- */
87
- signMessage(typedData) {
88
- return __awaiter(this, void 0, void 0, function* () {
89
- try {
90
- this.modal.open();
91
- const res = yield this.keychain.signMessage(typedData, this.address);
92
- this.modal.close();
93
- return res;
94
- }
95
- catch (e) {
96
- console.error(e);
97
- throw e;
98
- }
99
- });
100
- }
101
- }
102
- exports.default = DeviceAccount;
103
- //# sourceMappingURL=device.js.map