@tezos-x/octez.connect-core 5.0.0-beta.6 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/cjs/package.json +3 -3
  2. package/dist/cjs/src/clients/client/Client.js +13 -16
  3. package/dist/cjs/src/clients/client/Client.js.map +1 -1
  4. package/dist/cjs/src/constants.js +2 -2
  5. package/dist/cjs/src/constants.js.map +1 -1
  6. package/dist/cjs/src/errors/InvalidBeaconVersionError.d.ts +17 -0
  7. package/dist/cjs/src/errors/InvalidBeaconVersionError.js +26 -0
  8. package/dist/cjs/src/errors/InvalidBeaconVersionError.js.map +1 -0
  9. package/dist/cjs/src/errors/InvalidRequiredMinimumVersionError.d.ts +16 -0
  10. package/dist/cjs/src/errors/InvalidRequiredMinimumVersionError.js +25 -0
  11. package/dist/cjs/src/errors/InvalidRequiredMinimumVersionError.js.map +1 -0
  12. package/dist/cjs/src/errors/NetworksUnsupportedBeaconError.d.ts +21 -0
  13. package/dist/cjs/src/errors/NetworksUnsupportedBeaconError.js +33 -0
  14. package/dist/cjs/src/errors/NetworksUnsupportedBeaconError.js.map +1 -0
  15. package/dist/cjs/src/errors/VersionUnsupportedBeaconError.d.ts +16 -0
  16. package/dist/cjs/src/errors/VersionUnsupportedBeaconError.js +26 -0
  17. package/dist/cjs/src/errors/VersionUnsupportedBeaconError.js.map +1 -0
  18. package/dist/cjs/src/errors/error-codes.d.ts +8 -0
  19. package/dist/cjs/src/errors/error-codes.js +5 -1
  20. package/dist/cjs/src/errors/error-codes.js.map +1 -1
  21. package/dist/cjs/src/index.d.ts +9 -2
  22. package/dist/cjs/src/index.js +28 -2
  23. package/dist/cjs/src/index.js.map +1 -1
  24. package/dist/cjs/src/managers/AccountManager.d.ts +7 -0
  25. package/dist/cjs/src/managers/AccountManager.js +11 -0
  26. package/dist/cjs/src/managers/AccountManager.js.map +1 -1
  27. package/dist/cjs/src/managers/PermissionManager.d.ts +7 -0
  28. package/dist/cjs/src/managers/PermissionManager.js +12 -0
  29. package/dist/cjs/src/managers/PermissionManager.js.map +1 -1
  30. package/dist/cjs/src/managers/PermissionValidator.js +13 -1
  31. package/dist/cjs/src/managers/PermissionValidator.js.map +1 -1
  32. package/dist/cjs/src/managers/StorageManager.d.ts +11 -0
  33. package/dist/cjs/src/managers/StorageManager.js +28 -0
  34. package/dist/cjs/src/managers/StorageManager.js.map +1 -1
  35. package/dist/cjs/src/utils/assert-never.d.ts +9 -2
  36. package/dist/cjs/src/utils/assert-never.js +21 -3
  37. package/dist/cjs/src/utils/assert-never.js.map +1 -1
  38. package/dist/cjs/src/utils/caip2.d.ts +61 -0
  39. package/dist/cjs/src/utils/caip2.js +93 -0
  40. package/dist/cjs/src/utils/caip2.js.map +1 -0
  41. package/dist/cjs/src/utils/get-account-identifier.js +19 -5
  42. package/dist/cjs/src/utils/get-account-identifier.js.map +1 -1
  43. package/dist/cjs/src/utils/message-utils.d.ts +94 -0
  44. package/dist/cjs/src/utils/message-utils.js +148 -5
  45. package/dist/cjs/src/utils/message-utils.js.map +1 -1
  46. package/dist/cjs/src/utils/required-minimum-version.d.ts +19 -0
  47. package/dist/cjs/src/utils/required-minimum-version.js +47 -0
  48. package/dist/cjs/src/utils/required-minimum-version.js.map +1 -0
  49. package/dist/esm/package.json +3 -3
  50. package/dist/esm/src/clients/client/Client.js +13 -18
  51. package/dist/esm/src/clients/client/Client.js.map +1 -1
  52. package/dist/esm/src/constants.js +2 -2
  53. package/dist/esm/src/constants.js.map +1 -1
  54. package/dist/esm/src/errors/InvalidBeaconVersionError.d.ts +17 -0
  55. package/dist/esm/src/errors/InvalidBeaconVersionError.js +24 -0
  56. package/dist/esm/src/errors/InvalidBeaconVersionError.js.map +1 -0
  57. package/dist/esm/src/errors/InvalidRequiredMinimumVersionError.d.ts +16 -0
  58. package/dist/esm/src/errors/InvalidRequiredMinimumVersionError.js +23 -0
  59. package/dist/esm/src/errors/InvalidRequiredMinimumVersionError.js.map +1 -0
  60. package/dist/esm/src/errors/NetworksUnsupportedBeaconError.d.ts +21 -0
  61. package/dist/esm/src/errors/NetworksUnsupportedBeaconError.js +30 -0
  62. package/dist/esm/src/errors/NetworksUnsupportedBeaconError.js.map +1 -0
  63. package/dist/esm/src/errors/VersionUnsupportedBeaconError.d.ts +16 -0
  64. package/dist/esm/src/errors/VersionUnsupportedBeaconError.js +25 -0
  65. package/dist/esm/src/errors/VersionUnsupportedBeaconError.js.map +1 -0
  66. package/dist/esm/src/errors/error-codes.d.ts +8 -0
  67. package/dist/esm/src/errors/error-codes.js +5 -1
  68. package/dist/esm/src/errors/error-codes.js.map +1 -1
  69. package/dist/esm/src/index.d.ts +9 -2
  70. package/dist/esm/src/index.js +9 -2
  71. package/dist/esm/src/index.js.map +1 -1
  72. package/dist/esm/src/managers/AccountManager.d.ts +7 -0
  73. package/dist/esm/src/managers/AccountManager.js +9 -0
  74. package/dist/esm/src/managers/AccountManager.js.map +1 -1
  75. package/dist/esm/src/managers/PermissionManager.d.ts +7 -0
  76. package/dist/esm/src/managers/PermissionManager.js +10 -0
  77. package/dist/esm/src/managers/PermissionManager.js.map +1 -1
  78. package/dist/esm/src/managers/PermissionValidator.js +13 -1
  79. package/dist/esm/src/managers/PermissionValidator.js.map +1 -1
  80. package/dist/esm/src/managers/StorageManager.d.ts +11 -0
  81. package/dist/esm/src/managers/StorageManager.js +26 -0
  82. package/dist/esm/src/managers/StorageManager.js.map +1 -1
  83. package/dist/esm/src/utils/assert-never.d.ts +9 -2
  84. package/dist/esm/src/utils/assert-never.js +20 -3
  85. package/dist/esm/src/utils/assert-never.js.map +1 -1
  86. package/dist/esm/src/utils/caip2.d.ts +61 -0
  87. package/dist/esm/src/utils/caip2.js +82 -0
  88. package/dist/esm/src/utils/caip2.js.map +1 -0
  89. package/dist/esm/src/utils/get-account-identifier.js +19 -5
  90. package/dist/esm/src/utils/get-account-identifier.js.map +1 -1
  91. package/dist/esm/src/utils/message-utils.d.ts +94 -0
  92. package/dist/esm/src/utils/message-utils.js +139 -4
  93. package/dist/esm/src/utils/message-utils.js.map +1 -1
  94. package/dist/esm/src/utils/required-minimum-version.d.ts +19 -0
  95. package/dist/esm/src/utils/required-minimum-version.js +43 -0
  96. package/dist/esm/src/utils/required-minimum-version.js.map +1 -0
  97. package/package.json +3 -3
@@ -0,0 +1,23 @@
1
+ import { BeaconErrorType } from '@tezos-x/octez.connect-types';
2
+ import { BEACON_ERROR_CODES } from './error-codes';
3
+ import { BeaconError } from './BeaconError';
4
+ /**
5
+ * Thrown at `DAppClient` construction time when `requiredMinimumVersion` is
6
+ * not a parseable decimal-integer string, is below `1`, or exceeds the
7
+ * SDK's own `BEACON_VERSION`. Configuration error; never emitted on the wire.
8
+ *
9
+ * @category Error
10
+ */
11
+ export class InvalidRequiredMinimumVersionError extends BeaconError {
12
+ name = 'InvalidRequiredMinimumVersionError';
13
+ title = 'Invalid requiredMinimumVersion option';
14
+ errorCode = BEACON_ERROR_CODES.INVALID_REQUIRED_MINIMUM_VERSION;
15
+ providedValue;
16
+ sdkBeaconVersion;
17
+ constructor(providedValue, sdkBeaconVersion, reason) {
18
+ super(BeaconErrorType.UNKNOWN_ERROR, `Invalid requiredMinimumVersion "${providedValue}" (SDK BEACON_VERSION = "${sdkBeaconVersion}"): ${reason}`, BEACON_ERROR_CODES.INVALID_REQUIRED_MINIMUM_VERSION);
19
+ this.providedValue = providedValue;
20
+ this.sdkBeaconVersion = sdkBeaconVersion;
21
+ }
22
+ }
23
+ //# sourceMappingURL=InvalidRequiredMinimumVersionError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidRequiredMinimumVersionError.js","sourceRoot":"","sources":["../../../../src/errors/InvalidRequiredMinimumVersionError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;;;;;GAMG;AACH,MAAM,OAAO,kCAAmC,SAAQ,WAAW;IAC1D,IAAI,GAAW,oCAAoC,CAAA;IACnD,KAAK,GAAW,uCAAuC,CAAA;IAE9C,SAAS,GAAG,kBAAkB,CAAC,gCAAgC,CAAA;IAC/D,aAAa,CAAQ;IACrB,gBAAgB,CAAQ;IAExC,YAAY,aAAqB,EAAE,gBAAwB,EAAE,MAAc;QACzE,KAAK,CACH,eAAe,CAAC,aAAa,EAC7B,mCAAmC,aAAa,4BAA4B,gBAAgB,OAAO,MAAM,EAAE,EAC3G,kBAAkB,CAAC,gCAAgC,CACpD,CAAA;QACD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;IAC1C,CAAC;CACF","sourcesContent":["import { BeaconErrorType } from '@tezos-x/octez.connect-types'\n\nimport { BEACON_ERROR_CODES } from './error-codes'\nimport { BeaconError } from './BeaconError'\n\n/**\n * Thrown at `DAppClient` construction time when `requiredMinimumVersion` is\n * not a parseable decimal-integer string, is below `1`, or exceeds the\n * SDK's own `BEACON_VERSION`. Configuration error; never emitted on the wire.\n *\n * @category Error\n */\nexport class InvalidRequiredMinimumVersionError extends BeaconError {\n public name: string = 'InvalidRequiredMinimumVersionError'\n public title: string = 'Invalid requiredMinimumVersion option'\n\n public readonly errorCode = BEACON_ERROR_CODES.INVALID_REQUIRED_MINIMUM_VERSION\n public readonly providedValue: string\n public readonly sdkBeaconVersion: string\n\n constructor(providedValue: string, sdkBeaconVersion: string, reason: string) {\n super(\n BeaconErrorType.UNKNOWN_ERROR,\n `Invalid requiredMinimumVersion \"${providedValue}\" (SDK BEACON_VERSION = \"${sdkBeaconVersion}\"): ${reason}`,\n BEACON_ERROR_CODES.INVALID_REQUIRED_MINIMUM_VERSION\n )\n this.providedValue = providedValue\n this.sdkBeaconVersion = sdkBeaconVersion\n }\n}\n"]}
@@ -0,0 +1,21 @@
1
+ import { BeaconError } from './BeaconError';
2
+ /**
3
+ * Raised by the dApp-side SDK when a wallet cannot serve every requested
4
+ * network, or when `requestOperation({ network })` targets a network not in
5
+ * the current session. SDK-internal; never emitted on the wire. Distinct
6
+ * from the wire-level `NetworkNotSupportedBeaconError` (singular).
7
+ *
8
+ * @category Error
9
+ */
10
+ export declare class NetworksUnsupportedBeaconError extends BeaconError {
11
+ name: string;
12
+ title: string;
13
+ readonly errorCode: "NETWORKS_UNSUPPORTED";
14
+ readonly requestedNetworks: string[];
15
+ readonly unsupportedNetworks: string[];
16
+ constructor(input: {
17
+ requestedNetworks: string[];
18
+ unsupportedNetworks: string[];
19
+ customMessage?: string;
20
+ });
21
+ }
@@ -0,0 +1,30 @@
1
+ import { BeaconErrorType } from '@tezos-x/octez.connect-types';
2
+ import { BEACON_ERROR_CODES } from './error-codes';
3
+ import { BeaconError } from './BeaconError';
4
+ const defaultMessage = (input) => {
5
+ if (input.requestedNetworks.length === 0 && input.unsupportedNetworks.length === 0) {
6
+ return 'Multiple networks are available in this session; specify a network argument on requestOperation.';
7
+ }
8
+ return `The wallet cannot serve all requested networks. Unsupported: ${input.unsupportedNetworks.join(', ')}.`;
9
+ };
10
+ /**
11
+ * Raised by the dApp-side SDK when a wallet cannot serve every requested
12
+ * network, or when `requestOperation({ network })` targets a network not in
13
+ * the current session. SDK-internal; never emitted on the wire. Distinct
14
+ * from the wire-level `NetworkNotSupportedBeaconError` (singular).
15
+ *
16
+ * @category Error
17
+ */
18
+ export class NetworksUnsupportedBeaconError extends BeaconError {
19
+ name = 'NetworksUnsupportedBeaconError';
20
+ title = 'Networks not supported';
21
+ errorCode = BEACON_ERROR_CODES.NETWORKS_UNSUPPORTED;
22
+ requestedNetworks;
23
+ unsupportedNetworks;
24
+ constructor(input) {
25
+ super(BeaconErrorType.UNKNOWN_ERROR, input.customMessage ?? defaultMessage(input), BEACON_ERROR_CODES.NETWORKS_UNSUPPORTED);
26
+ this.requestedNetworks = input.requestedNetworks;
27
+ this.unsupportedNetworks = input.unsupportedNetworks;
28
+ }
29
+ }
30
+ //# sourceMappingURL=NetworksUnsupportedBeaconError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworksUnsupportedBeaconError.js","sourceRoot":"","sources":["../../../../src/errors/NetworksUnsupportedBeaconError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,cAAc,GAAG,CAAC,KAGvB,EAAU,EAAE;IACX,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnF,OAAO,kGAAkG,CAAA;IAC3G,CAAC;IAED,OAAO,gEAAgE,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;AAChH,CAAC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,8BAA+B,SAAQ,WAAW;IACtD,IAAI,GAAW,gCAAgC,CAAA;IAC/C,KAAK,GAAW,wBAAwB,CAAA;IAE/B,SAAS,GAAG,kBAAkB,CAAC,oBAAoB,CAAA;IACnD,iBAAiB,CAAU;IAC3B,mBAAmB,CAAU;IAE7C,YAAY,KAIX;QACC,KAAK,CACH,eAAe,CAAC,aAAa,EAC7B,KAAK,CAAC,aAAa,IAAI,cAAc,CAAC,KAAK,CAAC,EAC5C,kBAAkB,CAAC,oBAAoB,CACxC,CAAA;QACD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAA;QAChD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAA;IACtD,CAAC;CACF","sourcesContent":["import { BeaconErrorType } from '@tezos-x/octez.connect-types'\n\nimport { BEACON_ERROR_CODES } from './error-codes'\nimport { BeaconError } from './BeaconError'\n\nconst defaultMessage = (input: {\n requestedNetworks: string[]\n unsupportedNetworks: string[]\n}): string => {\n if (input.requestedNetworks.length === 0 && input.unsupportedNetworks.length === 0) {\n return 'Multiple networks are available in this session; specify a network argument on requestOperation.'\n }\n\n return `The wallet cannot serve all requested networks. Unsupported: ${input.unsupportedNetworks.join(', ')}.`\n}\n\n/**\n * Raised by the dApp-side SDK when a wallet cannot serve every requested\n * network, or when `requestOperation({ network })` targets a network not in\n * the current session. SDK-internal; never emitted on the wire. Distinct\n * from the wire-level `NetworkNotSupportedBeaconError` (singular).\n *\n * @category Error\n */\nexport class NetworksUnsupportedBeaconError extends BeaconError {\n public name: string = 'NetworksUnsupportedBeaconError'\n public title: string = 'Networks not supported'\n\n public readonly errorCode = BEACON_ERROR_CODES.NETWORKS_UNSUPPORTED\n public readonly requestedNetworks: string[]\n public readonly unsupportedNetworks: string[]\n\n constructor(input: {\n requestedNetworks: string[]\n unsupportedNetworks: string[]\n customMessage?: string\n }) {\n super(\n BeaconErrorType.UNKNOWN_ERROR,\n input.customMessage ?? defaultMessage(input),\n BEACON_ERROR_CODES.NETWORKS_UNSUPPORTED\n )\n this.requestedNetworks = input.requestedNetworks\n this.unsupportedNetworks = input.unsupportedNetworks\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { BeaconError } from './BeaconError';
2
+ /**
3
+ * Raised by the dApp-side SDK when a wallet's `peer.version` is lower than
4
+ * the dApp's declared required minimum. SDK-internal; never emitted on the
5
+ * wire. Consumers discriminate via `instanceof` or `errorCode`.
6
+ *
7
+ * @category Error
8
+ */
9
+ export declare class VersionUnsupportedBeaconError extends BeaconError {
10
+ name: string;
11
+ title: string;
12
+ readonly errorCode: "VERSION_UNSUPPORTED";
13
+ readonly requiredMinimumVersion: string;
14
+ readonly walletServedVersion: string;
15
+ constructor(requiredMinimumVersion: string, walletServedVersion: string, message?: string);
16
+ }
@@ -0,0 +1,25 @@
1
+ import { BeaconErrorType } from '@tezos-x/octez.connect-types';
2
+ import { BEACON_ERROR_CODES } from './error-codes';
3
+ import { BeaconError } from './BeaconError';
4
+ /**
5
+ * Raised by the dApp-side SDK when a wallet's `peer.version` is lower than
6
+ * the dApp's declared required minimum. SDK-internal; never emitted on the
7
+ * wire. Consumers discriminate via `instanceof` or `errorCode`.
8
+ *
9
+ * @category Error
10
+ */
11
+ export class VersionUnsupportedBeaconError extends BeaconError {
12
+ name = 'VersionUnsupportedBeaconError';
13
+ title = 'Wallet version not supported';
14
+ errorCode = BEACON_ERROR_CODES.VERSION_UNSUPPORTED;
15
+ requiredMinimumVersion;
16
+ walletServedVersion;
17
+ constructor(requiredMinimumVersion, walletServedVersion, message) {
18
+ super(BeaconErrorType.UNKNOWN_ERROR, message ??
19
+ `This dApp requires Octez.connect protocol version ${requiredMinimumVersion} or higher, ` +
20
+ `but the wallet only supports version ${walletServedVersion}. Please upgrade your wallet.`, BEACON_ERROR_CODES.VERSION_UNSUPPORTED);
21
+ this.requiredMinimumVersion = requiredMinimumVersion;
22
+ this.walletServedVersion = walletServedVersion;
23
+ }
24
+ }
25
+ //# sourceMappingURL=VersionUnsupportedBeaconError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VersionUnsupportedBeaconError.js","sourceRoot":"","sources":["../../../../src/errors/VersionUnsupportedBeaconError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;;;;;GAMG;AACH,MAAM,OAAO,6BAA8B,SAAQ,WAAW;IACrD,IAAI,GAAW,+BAA+B,CAAA;IAC9C,KAAK,GAAW,8BAA8B,CAAA;IAErC,SAAS,GAAG,kBAAkB,CAAC,mBAAmB,CAAA;IAClD,sBAAsB,CAAQ;IAC9B,mBAAmB,CAAQ;IAE3C,YAAY,sBAA8B,EAAE,mBAA2B,EAAE,OAAgB;QACvF,KAAK,CACH,eAAe,CAAC,aAAa,EAC7B,OAAO;YACL,qDAAqD,sBAAsB,cAAc;gBACvF,wCAAwC,mBAAmB,+BAA+B,EAC9F,kBAAkB,CAAC,mBAAmB,CACvC,CAAA;QACD,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAA;QACpD,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAA;IAChD,CAAC;CACF","sourcesContent":["import { BeaconErrorType } from '@tezos-x/octez.connect-types'\n\nimport { BEACON_ERROR_CODES } from './error-codes'\nimport { BeaconError } from './BeaconError'\n\n/**\n * Raised by the dApp-side SDK when a wallet's `peer.version` is lower than\n * the dApp's declared required minimum. SDK-internal; never emitted on the\n * wire. Consumers discriminate via `instanceof` or `errorCode`.\n *\n * @category Error\n */\nexport class VersionUnsupportedBeaconError extends BeaconError {\n public name: string = 'VersionUnsupportedBeaconError'\n public title: string = 'Wallet version not supported'\n\n public readonly errorCode = BEACON_ERROR_CODES.VERSION_UNSUPPORTED\n public readonly requiredMinimumVersion: string\n public readonly walletServedVersion: string\n\n constructor(requiredMinimumVersion: string, walletServedVersion: string, message?: string) {\n super(\n BeaconErrorType.UNKNOWN_ERROR,\n message ??\n `This dApp requires Octez.connect protocol version ${requiredMinimumVersion} or higher, ` +\n `but the wallet only supports version ${walletServedVersion}. Please upgrade your wallet.`,\n BEACON_ERROR_CODES.VERSION_UNSUPPORTED\n )\n this.requiredMinimumVersion = requiredMinimumVersion\n this.walletServedVersion = walletServedVersion\n }\n}\n"]}
@@ -93,6 +93,10 @@ export declare const BEACON_ERROR_CODES: {
93
93
  readonly BROADCAST_ERROR: "BROADCAST_ERROR";
94
94
  readonly SIGNATURE_TYPE_NOT_SUPPORTED: "SIGNATURE_TYPE_NOT_SUPPORTED";
95
95
  readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
96
+ readonly VERSION_UNSUPPORTED: "VERSION_UNSUPPORTED";
97
+ readonly INVALID_REQUIRED_MINIMUM_VERSION: "INVALID_REQUIRED_MINIMUM_VERSION";
98
+ readonly NETWORKS_UNSUPPORTED: "NETWORKS_UNSUPPORTED";
99
+ readonly INVALID_BEACON_VERSION: "INVALID_BEACON_VERSION";
96
100
  };
97
101
  /**
98
102
  * All error codes combined
@@ -109,6 +113,10 @@ export declare const ERROR_CODES: {
109
113
  readonly BROADCAST_ERROR: "BROADCAST_ERROR";
110
114
  readonly SIGNATURE_TYPE_NOT_SUPPORTED: "SIGNATURE_TYPE_NOT_SUPPORTED";
111
115
  readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
116
+ readonly VERSION_UNSUPPORTED: "VERSION_UNSUPPORTED";
117
+ readonly INVALID_REQUIRED_MINIMUM_VERSION: "INVALID_REQUIRED_MINIMUM_VERSION";
118
+ readonly NETWORKS_UNSUPPORTED: "NETWORKS_UNSUPPORTED";
119
+ readonly INVALID_BEACON_VERSION: "INVALID_BEACON_VERSION";
112
120
  readonly TEZOS_INVALID_SIGNATURE: "TEZOS_INVALID_SIGNATURE";
113
121
  readonly TEZOS_NETWORK_ERROR: "TEZOS_NETWORK_ERROR";
114
122
  readonly TEZOS_NODE_ERROR: "TEZOS_NODE_ERROR";
@@ -96,7 +96,11 @@ export const BEACON_ERROR_CODES = {
96
96
  TRANSACTION_INVALID: 'TRANSACTION_INVALID',
97
97
  BROADCAST_ERROR: 'BROADCAST_ERROR',
98
98
  SIGNATURE_TYPE_NOT_SUPPORTED: 'SIGNATURE_TYPE_NOT_SUPPORTED',
99
- UNKNOWN_ERROR: 'UNKNOWN_ERROR'
99
+ UNKNOWN_ERROR: 'UNKNOWN_ERROR',
100
+ VERSION_UNSUPPORTED: 'VERSION_UNSUPPORTED',
101
+ INVALID_REQUIRED_MINIMUM_VERSION: 'INVALID_REQUIRED_MINIMUM_VERSION',
102
+ NETWORKS_UNSUPPORTED: 'NETWORKS_UNSUPPORTED',
103
+ INVALID_BEACON_VERSION: 'INVALID_BEACON_VERSION'
100
104
  };
101
105
  /**
102
106
  * All error codes combined
@@ -1 +1 @@
1
- {"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../../../../src/errors/error-codes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Centralized error code registry for all Beacon SDK errors.\n * Error codes provide unique identifiers for debugging and support.\n */\n\n/**\n * WalletConnect transport error codes\n * Reference: @walletconnect/utils SDK_ERRORS and INTERNAL_ERRORS\n */\nexport const WC_ERROR_CODES = {\n // Custom Beacon SDK WC errors\n INVALID_NAMESPACE: 'WC_INVALID_NAMESPACE',\n INCOMPLETE_NAMESPACE: 'WC_INCOMPLETE_NAMESPACE',\n NOT_CONNECTED: 'WC_NOT_CONNECTED',\n INVALID_SESSION: 'WC_INVALID_SESSION',\n MISSING_REQUIRED_SCOPE: 'WC_MISSING_REQUIRED_SCOPE',\n ACTIVE_NETWORK_UNSPECIFIED: 'WC_ACTIVE_NETWORK_UNSPECIFIED',\n ACTIVE_ACCOUNT_UNSPECIFIED: 'WC_ACTIVE_ACCOUNT_UNSPECIFIED',\n INVALID_NETWORK_OR_ACCOUNT: 'WC_INVALID_NETWORK_OR_ACCOUNT',\n\n // WC INTERNAL_ERRORS (from @walletconnect/utils)\n NOT_INITIALIZED: 'WC_NOT_INITIALIZED', // code 1\n NO_MATCHING_KEY: 'WC_NO_MATCHING_KEY', // code 2\n EXPIRED: 'WC_EXPIRED', // code 6 (session or pairing expiry)\n SESSION_EXPIRED: 'WC_SESSION_EXPIRED',\n PAIRING_EXPIRED: 'WC_PAIRING_EXPIRED',\n UNKNOWN_TYPE: 'WC_UNKNOWN_TYPE', // code 7\n MISMATCHED_TOPIC: 'WC_MISMATCHED_TOPIC', // code 8\n NON_CONFORMING_NAMESPACES: 'WC_NON_CONFORMING_NAMESPACES', // code 9\n\n // WC SDK_ERRORS (from @walletconnect/utils)\n INVALID_METHOD: 'WC_INVALID_METHOD', // code 1001\n INVALID_EVENT: 'WC_INVALID_EVENT', // code 1002\n INVALID_UPDATE_REQUEST: 'WC_INVALID_UPDATE_REQUEST', // code 1003\n INVALID_EXTEND_REQUEST: 'WC_INVALID_EXTEND_REQUEST', // code 1004\n INVALID_SESSION_SETTLE_REQUEST: 'WC_INVALID_SESSION_SETTLE_REQUEST', // code 1005\n UNAUTHORIZED_METHOD: 'WC_UNAUTHORIZED_METHOD', // code 3001\n UNAUTHORIZED_EVENT: 'WC_UNAUTHORIZED_EVENT', // code 3002\n UNAUTHORIZED_UPDATE_REQUEST: 'WC_UNAUTHORIZED_UPDATE_REQUEST', // code 3003\n UNAUTHORIZED_EXTEND_REQUEST: 'WC_UNAUTHORIZED_EXTEND_REQUEST', // code 3004\n USER_REJECTED: 'WC_USER_REJECTED', // code 5000\n USER_REJECTED_CHAINS: 'WC_USER_REJECTED_CHAINS', // code 5001\n USER_REJECTED_METHODS: 'WC_USER_REJECTED_METHODS', // code 5002\n USER_REJECTED_EVENTS: 'WC_USER_REJECTED_EVENTS', // code 5003\n UNSUPPORTED_CHAINS: 'WC_UNSUPPORTED_CHAINS', // code 5100\n UNSUPPORTED_METHODS: 'WC_UNSUPPORTED_METHODS', // code 5101\n UNSUPPORTED_EVENTS: 'WC_UNSUPPORTED_EVENTS', // code 5102\n UNSUPPORTED_ACCOUNTS: 'WC_UNSUPPORTED_ACCOUNTS', // code 5103\n UNSUPPORTED_NAMESPACE_KEY: 'WC_UNSUPPORTED_NAMESPACE_KEY', // code 5104\n USER_DISCONNECTED: 'WC_USER_DISCONNECTED', // code 6000\n SESSION_SETTLEMENT_FAILED: 'WC_SESSION_SETTLEMENT_FAILED', // code 7000\n WC_METHOD_UNSUPPORTED: 'WC_METHOD_UNSUPPORTED', // code 10001\n\n // Generic\n UNKNOWN_ERROR: 'WC_UNKNOWN_ERROR'\n} as const\n\n/**\n * Matrix/P2P transport error codes\n */\nexport const MATRIX_ERROR_CODES = {\n RELAY_TIMEOUT: 'MATRIX_RELAY_TIMEOUT',\n CONNECTION_FAILED: 'MATRIX_CONNECTION_FAILED',\n RELAY_ERROR: 'MATRIX_RELAY_ERROR',\n PEER_NOT_FOUND: 'MATRIX_PEER_NOT_FOUND',\n MESSAGE_DELIVERY_FAILED: 'MATRIX_MESSAGE_DELIVERY_FAILED',\n ROOM_JOIN_FAILED: 'MATRIX_ROOM_JOIN_FAILED'\n} as const\n\n/**\n * PostMessage transport error codes\n */\nexport const PM_ERROR_CODES = {\n EXTENSION_ERROR: 'PM_EXTENSION_ERROR',\n ORIGIN_MISMATCH: 'PM_ORIGIN_MISMATCH',\n NO_RESPONSE: 'PM_NO_RESPONSE',\n EXTENSION_NOT_FOUND: 'PM_EXTENSION_NOT_FOUND',\n MESSAGE_TIMEOUT: 'PM_MESSAGE_TIMEOUT'\n} as const\n\n/**\n * Blockchain-specific error codes\n */\nexport const BLOCKCHAIN_ERROR_CODES = {\n TEZOS_INVALID_SIGNATURE: 'TEZOS_INVALID_SIGNATURE',\n TEZOS_NETWORK_ERROR: 'TEZOS_NETWORK_ERROR',\n TEZOS_NODE_ERROR: 'TEZOS_NODE_ERROR',\n TEZOS_SIMULATION_ERROR: 'TEZOS_SIMULATION_ERROR',\n SUBSTRATE_INVALID_SIGNATURE: 'SUBSTRATE_INVALID_SIGNATURE',\n SUBSTRATE_NETWORK_ERROR: 'SUBSTRATE_NETWORK_ERROR'\n} as const\n\n/**\n * Generic Beacon error codes\n */\nexport const BEACON_ERROR_CODES = {\n ABORTED_BY_USER: 'ABORTED_BY_USER',\n NETWORK_NOT_SUPPORTED: 'NETWORK_NOT_SUPPORTED',\n PERMISSION_DENIED: 'PERMISSION_DENIED',\n NO_ADDRESS: 'NO_ADDRESS',\n NO_PRIVATE_KEY: 'NO_PRIVATE_KEY',\n PARAMETERS_INVALID: 'PARAMETERS_INVALID',\n TOO_MANY_OPERATIONS: 'TOO_MANY_OPERATIONS',\n TRANSACTION_INVALID: 'TRANSACTION_INVALID',\n BROADCAST_ERROR: 'BROADCAST_ERROR',\n SIGNATURE_TYPE_NOT_SUPPORTED: 'SIGNATURE_TYPE_NOT_SUPPORTED',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR'\n} as const\n\n/**\n * All error codes combined\n */\nexport const ERROR_CODES = {\n ...WC_ERROR_CODES,\n ...MATRIX_ERROR_CODES,\n ...PM_ERROR_CODES,\n ...BLOCKCHAIN_ERROR_CODES,\n ...BEACON_ERROR_CODES\n} as const\n\n/**\n * Type for all possible error codes\n */\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES]\n"]}
1
+ {"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../../../../src/errors/error-codes.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Centralized error code registry for all Beacon SDK errors.\n * Error codes provide unique identifiers for debugging and support.\n */\n\n/**\n * WalletConnect transport error codes\n * Reference: @walletconnect/utils SDK_ERRORS and INTERNAL_ERRORS\n */\nexport const WC_ERROR_CODES = {\n // Custom Beacon SDK WC errors\n INVALID_NAMESPACE: 'WC_INVALID_NAMESPACE',\n INCOMPLETE_NAMESPACE: 'WC_INCOMPLETE_NAMESPACE',\n NOT_CONNECTED: 'WC_NOT_CONNECTED',\n INVALID_SESSION: 'WC_INVALID_SESSION',\n MISSING_REQUIRED_SCOPE: 'WC_MISSING_REQUIRED_SCOPE',\n ACTIVE_NETWORK_UNSPECIFIED: 'WC_ACTIVE_NETWORK_UNSPECIFIED',\n ACTIVE_ACCOUNT_UNSPECIFIED: 'WC_ACTIVE_ACCOUNT_UNSPECIFIED',\n INVALID_NETWORK_OR_ACCOUNT: 'WC_INVALID_NETWORK_OR_ACCOUNT',\n\n // WC INTERNAL_ERRORS (from @walletconnect/utils)\n NOT_INITIALIZED: 'WC_NOT_INITIALIZED', // code 1\n NO_MATCHING_KEY: 'WC_NO_MATCHING_KEY', // code 2\n EXPIRED: 'WC_EXPIRED', // code 6 (session or pairing expiry)\n SESSION_EXPIRED: 'WC_SESSION_EXPIRED',\n PAIRING_EXPIRED: 'WC_PAIRING_EXPIRED',\n UNKNOWN_TYPE: 'WC_UNKNOWN_TYPE', // code 7\n MISMATCHED_TOPIC: 'WC_MISMATCHED_TOPIC', // code 8\n NON_CONFORMING_NAMESPACES: 'WC_NON_CONFORMING_NAMESPACES', // code 9\n\n // WC SDK_ERRORS (from @walletconnect/utils)\n INVALID_METHOD: 'WC_INVALID_METHOD', // code 1001\n INVALID_EVENT: 'WC_INVALID_EVENT', // code 1002\n INVALID_UPDATE_REQUEST: 'WC_INVALID_UPDATE_REQUEST', // code 1003\n INVALID_EXTEND_REQUEST: 'WC_INVALID_EXTEND_REQUEST', // code 1004\n INVALID_SESSION_SETTLE_REQUEST: 'WC_INVALID_SESSION_SETTLE_REQUEST', // code 1005\n UNAUTHORIZED_METHOD: 'WC_UNAUTHORIZED_METHOD', // code 3001\n UNAUTHORIZED_EVENT: 'WC_UNAUTHORIZED_EVENT', // code 3002\n UNAUTHORIZED_UPDATE_REQUEST: 'WC_UNAUTHORIZED_UPDATE_REQUEST', // code 3003\n UNAUTHORIZED_EXTEND_REQUEST: 'WC_UNAUTHORIZED_EXTEND_REQUEST', // code 3004\n USER_REJECTED: 'WC_USER_REJECTED', // code 5000\n USER_REJECTED_CHAINS: 'WC_USER_REJECTED_CHAINS', // code 5001\n USER_REJECTED_METHODS: 'WC_USER_REJECTED_METHODS', // code 5002\n USER_REJECTED_EVENTS: 'WC_USER_REJECTED_EVENTS', // code 5003\n UNSUPPORTED_CHAINS: 'WC_UNSUPPORTED_CHAINS', // code 5100\n UNSUPPORTED_METHODS: 'WC_UNSUPPORTED_METHODS', // code 5101\n UNSUPPORTED_EVENTS: 'WC_UNSUPPORTED_EVENTS', // code 5102\n UNSUPPORTED_ACCOUNTS: 'WC_UNSUPPORTED_ACCOUNTS', // code 5103\n UNSUPPORTED_NAMESPACE_KEY: 'WC_UNSUPPORTED_NAMESPACE_KEY', // code 5104\n USER_DISCONNECTED: 'WC_USER_DISCONNECTED', // code 6000\n SESSION_SETTLEMENT_FAILED: 'WC_SESSION_SETTLEMENT_FAILED', // code 7000\n WC_METHOD_UNSUPPORTED: 'WC_METHOD_UNSUPPORTED', // code 10001\n\n // Generic\n UNKNOWN_ERROR: 'WC_UNKNOWN_ERROR'\n} as const\n\n/**\n * Matrix/P2P transport error codes\n */\nexport const MATRIX_ERROR_CODES = {\n RELAY_TIMEOUT: 'MATRIX_RELAY_TIMEOUT',\n CONNECTION_FAILED: 'MATRIX_CONNECTION_FAILED',\n RELAY_ERROR: 'MATRIX_RELAY_ERROR',\n PEER_NOT_FOUND: 'MATRIX_PEER_NOT_FOUND',\n MESSAGE_DELIVERY_FAILED: 'MATRIX_MESSAGE_DELIVERY_FAILED',\n ROOM_JOIN_FAILED: 'MATRIX_ROOM_JOIN_FAILED'\n} as const\n\n/**\n * PostMessage transport error codes\n */\nexport const PM_ERROR_CODES = {\n EXTENSION_ERROR: 'PM_EXTENSION_ERROR',\n ORIGIN_MISMATCH: 'PM_ORIGIN_MISMATCH',\n NO_RESPONSE: 'PM_NO_RESPONSE',\n EXTENSION_NOT_FOUND: 'PM_EXTENSION_NOT_FOUND',\n MESSAGE_TIMEOUT: 'PM_MESSAGE_TIMEOUT'\n} as const\n\n/**\n * Blockchain-specific error codes\n */\nexport const BLOCKCHAIN_ERROR_CODES = {\n TEZOS_INVALID_SIGNATURE: 'TEZOS_INVALID_SIGNATURE',\n TEZOS_NETWORK_ERROR: 'TEZOS_NETWORK_ERROR',\n TEZOS_NODE_ERROR: 'TEZOS_NODE_ERROR',\n TEZOS_SIMULATION_ERROR: 'TEZOS_SIMULATION_ERROR',\n SUBSTRATE_INVALID_SIGNATURE: 'SUBSTRATE_INVALID_SIGNATURE',\n SUBSTRATE_NETWORK_ERROR: 'SUBSTRATE_NETWORK_ERROR'\n} as const\n\n/**\n * Generic Beacon error codes\n */\nexport const BEACON_ERROR_CODES = {\n ABORTED_BY_USER: 'ABORTED_BY_USER',\n NETWORK_NOT_SUPPORTED: 'NETWORK_NOT_SUPPORTED',\n PERMISSION_DENIED: 'PERMISSION_DENIED',\n NO_ADDRESS: 'NO_ADDRESS',\n NO_PRIVATE_KEY: 'NO_PRIVATE_KEY',\n PARAMETERS_INVALID: 'PARAMETERS_INVALID',\n TOO_MANY_OPERATIONS: 'TOO_MANY_OPERATIONS',\n TRANSACTION_INVALID: 'TRANSACTION_INVALID',\n BROADCAST_ERROR: 'BROADCAST_ERROR',\n SIGNATURE_TYPE_NOT_SUPPORTED: 'SIGNATURE_TYPE_NOT_SUPPORTED',\n UNKNOWN_ERROR: 'UNKNOWN_ERROR',\n VERSION_UNSUPPORTED: 'VERSION_UNSUPPORTED',\n INVALID_REQUIRED_MINIMUM_VERSION: 'INVALID_REQUIRED_MINIMUM_VERSION',\n NETWORKS_UNSUPPORTED: 'NETWORKS_UNSUPPORTED',\n INVALID_BEACON_VERSION: 'INVALID_BEACON_VERSION'\n} as const\n\n/**\n * All error codes combined\n */\nexport const ERROR_CODES = {\n ...WC_ERROR_CODES,\n ...MATRIX_ERROR_CODES,\n ...PM_ERROR_CODES,\n ...BLOCKCHAIN_ERROR_CODES,\n ...BEACON_ERROR_CODES\n} as const\n\n/**\n * Type for all possible error codes\n */\nexport type ErrorCode = (typeof ERROR_CODES)[keyof typeof ERROR_CODES]\n"]}
@@ -33,6 +33,10 @@ import { PeerManager } from './managers/PeerManager';
33
33
  import { MessageBasedClient } from './transports/clients/MessageBasedClient';
34
34
  import { setDebugEnabled, getDebugEnabled } from './debug';
35
35
  import { SignatureTypeNotSupportedBeaconError } from './errors/SignatureTypeNotSupportedBeaconError';
36
+ import { VersionUnsupportedBeaconError } from './errors/VersionUnsupportedBeaconError';
37
+ import { InvalidRequiredMinimumVersionError } from './errors/InvalidRequiredMinimumVersionError';
38
+ import { NetworksUnsupportedBeaconError } from './errors/NetworksUnsupportedBeaconError';
39
+ import { InvalidBeaconVersionError } from './errors/InvalidBeaconVersionError';
36
40
  import { getLogger, Logger, setLogger } from './utils/Logger';
37
41
  import { windowRef } from './MockWindow';
38
42
  import { CommunicationClient } from './transports/clients/CommunicationClient';
@@ -43,13 +47,16 @@ import { StorageValidator } from './storage/StorageValidator';
43
47
  import { MultiTabChannel } from './utils/multi-tab-channel';
44
48
  import getError from './errors/get-error';
45
49
  export { BeaconClient, BeaconClientOptions, Client, ClientOptions, ClientEvents };
46
- export { getError, BeaconError, AbortedBeaconError, BroadcastBeaconError, NetworkNotSupportedBeaconError, NoAddressBeaconError, NoPrivateKeyBeaconError, NotGrantedBeaconError, ParametersInvalidBeaconError, TooManyOperationsBeaconError, TransactionInvalidBeaconError, SignatureTypeNotSupportedBeaconError, UnknownBeaconError };
50
+ export { getError, BeaconError, AbortedBeaconError, BroadcastBeaconError, NetworkNotSupportedBeaconError, NoAddressBeaconError, NoPrivateKeyBeaconError, NotGrantedBeaconError, ParametersInvalidBeaconError, TooManyOperationsBeaconError, TransactionInvalidBeaconError, SignatureTypeNotSupportedBeaconError, UnknownBeaconError, VersionUnsupportedBeaconError, InvalidRequiredMinimumVersionError, NetworksUnsupportedBeaconError, InvalidBeaconVersionError };
47
51
  export { Transport, MessageBasedClient, CommunicationClient };
48
52
  export { ChromeStorage, LocalStorage, WCStorage, IndexedDBStorage, StorageValidator, getStorage };
49
53
  export { PeerManager, AccountManager, AppMetadataManager, PermissionManager };
50
54
  export { SDK_VERSION, BEACON_VERSION, PROTOCOL_VERSION_V1, PROTOCOL_VERSION_V2, LATEST_PROTOCOL_VERSION, DEFAULT_PROTOCOL_VERSION, getPreferredMessageProtocolVersion, setPreferredMessageProtocolVersion };
51
55
  export { getSenderId, getAccountIdentifier, windowRef, MultiTabChannel };
52
- export { usesWrappedMessages, MESSAGE_WRAPPED_FROM_VERSION } from './utils/message-utils';
56
+ export { usesWrappedMessages, MESSAGE_WRAPPED_FROM_VERSION, MULTI_NETWORK_FROM_VERSION, compareBeaconVersion, isAtLeastVersion, isMultiNetworkVersion, negotiateEnvelopeVersion, wrapBeaconMessage, unwrapBeaconMessage } from './utils/message-utils';
57
+ export { normalizeTezosCaip2, isValidTezosCaip2, networkFromTezosCaip2, TEZOS_NETWORK_GENESIS_IDS, tezosCaip2FromNetworkType, networkTypeFromTezosCaip2 } from './utils/caip2';
58
+ export { assertNever } from './utils/assert-never';
59
+ export { resolveRequiredMinimumVersion } from './utils/required-minimum-version';
53
60
  export { gatherDiagnostics, buildErrorContext, serializeErrorContext, copyErrorContextToClipboard, SENSITIVE_STORAGE_KEYS } from './utils/diagnostics';
54
61
  export { ERROR_CODES, WC_ERROR_CODES, MATRIX_ERROR_CODES, PM_ERROR_CODES, BLOCKCHAIN_ERROR_CODES, BEACON_ERROR_CODES } from './errors/error-codes';
55
62
  export type { ErrorCode } from './errors/error-codes';
@@ -34,6 +34,10 @@ import { setDebugEnabled, getDebugEnabled } from './debug';
34
34
  // import { EncryptPayloadResponse } from './types/beacon/messages/EncryptPayloadResponse'
35
35
  // import { EncryptionTypeNotSupportedBeaconError } from './errors/EncryptionTypeNotSupportedBeaconError'
36
36
  import { SignatureTypeNotSupportedBeaconError } from './errors/SignatureTypeNotSupportedBeaconError';
37
+ import { VersionUnsupportedBeaconError } from './errors/VersionUnsupportedBeaconError';
38
+ import { InvalidRequiredMinimumVersionError } from './errors/InvalidRequiredMinimumVersionError';
39
+ import { NetworksUnsupportedBeaconError } from './errors/NetworksUnsupportedBeaconError';
40
+ import { InvalidBeaconVersionError } from './errors/InvalidBeaconVersionError';
37
41
  import { getLogger, Logger, setLogger } from './utils/Logger';
38
42
  import { windowRef } from './MockWindow';
39
43
  import { CommunicationClient } from './transports/clients/CommunicationClient';
@@ -49,7 +53,7 @@ export { BeaconClient, Client };
49
53
  // Errors
50
54
  export { getError, BeaconError, AbortedBeaconError, BroadcastBeaconError, NetworkNotSupportedBeaconError, NoAddressBeaconError, NoPrivateKeyBeaconError, NotGrantedBeaconError, ParametersInvalidBeaconError, TooManyOperationsBeaconError, TransactionInvalidBeaconError, SignatureTypeNotSupportedBeaconError,
51
55
  // EncryptionTypeNotSupportedBeaconError,
52
- UnknownBeaconError };
56
+ UnknownBeaconError, VersionUnsupportedBeaconError, InvalidRequiredMinimumVersionError, NetworksUnsupportedBeaconError, InvalidBeaconVersionError };
53
57
  // Transport
54
58
  export { Transport, MessageBasedClient, CommunicationClient };
55
59
  // Storage
@@ -60,7 +64,10 @@ export { PeerManager, AccountManager, AppMetadataManager, PermissionManager };
60
64
  export { SDK_VERSION, BEACON_VERSION, PROTOCOL_VERSION_V1, PROTOCOL_VERSION_V2, LATEST_PROTOCOL_VERSION, DEFAULT_PROTOCOL_VERSION, getPreferredMessageProtocolVersion, setPreferredMessageProtocolVersion };
61
65
  // Utils
62
66
  export { getSenderId, getAccountIdentifier, windowRef, MultiTabChannel };
63
- export { usesWrappedMessages, MESSAGE_WRAPPED_FROM_VERSION } from './utils/message-utils';
67
+ export { usesWrappedMessages, MESSAGE_WRAPPED_FROM_VERSION, MULTI_NETWORK_FROM_VERSION, compareBeaconVersion, isAtLeastVersion, isMultiNetworkVersion, negotiateEnvelopeVersion, wrapBeaconMessage, unwrapBeaconMessage } from './utils/message-utils';
68
+ export { normalizeTezosCaip2, isValidTezosCaip2, networkFromTezosCaip2, TEZOS_NETWORK_GENESIS_IDS, tezosCaip2FromNetworkType, networkTypeFromTezosCaip2 } from './utils/caip2';
69
+ export { assertNever } from './utils/assert-never';
70
+ export { resolveRequiredMinimumVersion } from './utils/required-minimum-version';
64
71
  // Diagnostics
65
72
  export { gatherDiagnostics, buildErrorContext, serializeErrorContext, copyErrorContextToClipboard, SENSITIVE_STORAGE_KEYS } from './utils/diagnostics';
66
73
  // Error codes
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * General docs\n * @module public\n */\nimport { Client } from './clients/client/Client'\nimport { BeaconError } from './errors/BeaconError'\nimport { BroadcastBeaconError } from './errors/BroadcastBeaconError'\nimport { NetworkNotSupportedBeaconError } from './errors/NetworkNotSupportedBeaconError'\nimport { NoAddressBeaconError } from './errors/NoAddressBeaconError'\nimport { NoPrivateKeyBeaconError } from './errors/NoPrivateKeyBeaconError'\nimport { NotGrantedBeaconError } from './errors/NotGrantedBeaconError'\nimport { ParametersInvalidBeaconError } from './errors/ParametersInvalidBeaconError'\nimport { TooManyOperationsBeaconError } from './errors/TooManyOperationsBeaconError'\nimport { TransactionInvalidBeaconError } from './errors/TransactionInvalidBeaconError'\nimport { UnknownBeaconError } from './errors/UnknownBeaconError'\nimport { Transport } from './transports/Transport'\nimport { ChromeStorage } from './storage/ChromeStorage'\nimport { LocalStorage } from './storage/LocalStorage'\nimport { getStorage } from './storage/getStorage'\nimport { Serializer } from './Serializer'\n// import { RequestEncryptPayloadInput } from './types/RequestEncryptPayloadInput'\nimport { ClientOptions } from './clients/client/ClientOptions'\nimport {\n SDK_VERSION,\n BEACON_VERSION,\n PROTOCOL_VERSION_V1,\n PROTOCOL_VERSION_V2,\n LATEST_PROTOCOL_VERSION,\n DEFAULT_PROTOCOL_VERSION\n} from './constants'\nimport {\n getPreferredMessageProtocolVersion,\n setPreferredMessageProtocolVersion\n} from './message-protocol'\nimport { AccountManager } from './managers/AccountManager'\nimport { AppMetadataManager } from './managers/AppMetadataManager'\nimport { PermissionManager } from './managers/PermissionManager'\nimport { BeaconClient } from './clients/beacon-client/BeaconClient'\nimport { BeaconClientOptions } from './clients/beacon-client/BeaconClientOptions'\nimport { getAccountIdentifier } from './utils/get-account-identifier'\nimport { AbortedBeaconError } from './errors/AbortedBeaconError'\nimport { getSenderId } from './utils/get-sender-id'\nimport { PeerManager } from './managers/PeerManager'\nimport { MessageBasedClient } from './transports/clients/MessageBasedClient'\nimport { setDebugEnabled, getDebugEnabled } from './debug'\n// import { EncryptPayloadRequest } from './types/beacon/messages/EncryptPayloadRequest'\n// import { EncryptPayloadResponse } from './types/beacon/messages/EncryptPayloadResponse'\n// import { EncryptionTypeNotSupportedBeaconError } from './errors/EncryptionTypeNotSupportedBeaconError'\nimport { SignatureTypeNotSupportedBeaconError } from './errors/SignatureTypeNotSupportedBeaconError'\nimport { getLogger, Logger, setLogger } from './utils/Logger'\nimport { windowRef } from './MockWindow'\nimport { CommunicationClient } from './transports/clients/CommunicationClient'\nimport { ClientEvents } from './transports/clients/ClientEvents'\nimport { WCStorage } from './storage/WCStorage'\nimport { IndexedDBStorage } from './storage/IndexedDBStorage'\nimport { StorageValidator } from './storage/StorageValidator'\nimport { MultiTabChannel } from './utils/multi-tab-channel'\nimport getError from './errors/get-error'\n// import { EncryptionType } from './types/EncryptionType'\n// import { EncryptionOperation } from './types/EncryptionOperation'\n\n// Clients\nexport { BeaconClient, BeaconClientOptions, Client, ClientOptions, ClientEvents }\n\n// Errors\nexport {\n getError,\n BeaconError,\n AbortedBeaconError,\n BroadcastBeaconError,\n NetworkNotSupportedBeaconError,\n NoAddressBeaconError,\n NoPrivateKeyBeaconError,\n NotGrantedBeaconError,\n ParametersInvalidBeaconError,\n TooManyOperationsBeaconError,\n TransactionInvalidBeaconError,\n SignatureTypeNotSupportedBeaconError,\n // EncryptionTypeNotSupportedBeaconError,\n UnknownBeaconError\n}\n\n// Transport\nexport { Transport, MessageBasedClient, CommunicationClient }\n\n// Storage\nexport { ChromeStorage, LocalStorage, WCStorage, IndexedDBStorage, StorageValidator, getStorage }\n\n// Managers\nexport { PeerManager, AccountManager, AppMetadataManager, PermissionManager }\n\n// Constants\nexport {\n SDK_VERSION,\n BEACON_VERSION,\n PROTOCOL_VERSION_V1,\n PROTOCOL_VERSION_V2,\n LATEST_PROTOCOL_VERSION,\n DEFAULT_PROTOCOL_VERSION,\n getPreferredMessageProtocolVersion,\n setPreferredMessageProtocolVersion\n}\n\n// Utils\nexport { getSenderId, getAccountIdentifier, windowRef, MultiTabChannel }\nexport { usesWrappedMessages, MESSAGE_WRAPPED_FROM_VERSION } from './utils/message-utils'\n\n// Diagnostics\nexport {\n gatherDiagnostics,\n buildErrorContext,\n serializeErrorContext,\n copyErrorContextToClipboard,\n SENSITIVE_STORAGE_KEYS\n} from './utils/diagnostics'\n\n// Error codes\nexport { ERROR_CODES, WC_ERROR_CODES, MATRIX_ERROR_CODES, PM_ERROR_CODES, BLOCKCHAIN_ERROR_CODES, BEACON_ERROR_CODES } from './errors/error-codes'\nexport type { ErrorCode } from './errors/error-codes'\n\n// Others\nexport { Serializer, Logger, setLogger, getLogger }\n\n// Debug\nexport { setDebugEnabled, getDebugEnabled }\n\nexport { NOTIFICATION_ORACLE_URL, BACKEND_URL } from './constants'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * General docs\n * @module public\n */\nimport { Client } from './clients/client/Client'\nimport { BeaconError } from './errors/BeaconError'\nimport { BroadcastBeaconError } from './errors/BroadcastBeaconError'\nimport { NetworkNotSupportedBeaconError } from './errors/NetworkNotSupportedBeaconError'\nimport { NoAddressBeaconError } from './errors/NoAddressBeaconError'\nimport { NoPrivateKeyBeaconError } from './errors/NoPrivateKeyBeaconError'\nimport { NotGrantedBeaconError } from './errors/NotGrantedBeaconError'\nimport { ParametersInvalidBeaconError } from './errors/ParametersInvalidBeaconError'\nimport { TooManyOperationsBeaconError } from './errors/TooManyOperationsBeaconError'\nimport { TransactionInvalidBeaconError } from './errors/TransactionInvalidBeaconError'\nimport { UnknownBeaconError } from './errors/UnknownBeaconError'\nimport { Transport } from './transports/Transport'\nimport { ChromeStorage } from './storage/ChromeStorage'\nimport { LocalStorage } from './storage/LocalStorage'\nimport { getStorage } from './storage/getStorage'\nimport { Serializer } from './Serializer'\n// import { RequestEncryptPayloadInput } from './types/RequestEncryptPayloadInput'\nimport { ClientOptions } from './clients/client/ClientOptions'\nimport {\n SDK_VERSION,\n BEACON_VERSION,\n PROTOCOL_VERSION_V1,\n PROTOCOL_VERSION_V2,\n LATEST_PROTOCOL_VERSION,\n DEFAULT_PROTOCOL_VERSION\n} from './constants'\nimport {\n getPreferredMessageProtocolVersion,\n setPreferredMessageProtocolVersion\n} from './message-protocol'\nimport { AccountManager } from './managers/AccountManager'\nimport { AppMetadataManager } from './managers/AppMetadataManager'\nimport { PermissionManager } from './managers/PermissionManager'\nimport { BeaconClient } from './clients/beacon-client/BeaconClient'\nimport { BeaconClientOptions } from './clients/beacon-client/BeaconClientOptions'\nimport { getAccountIdentifier } from './utils/get-account-identifier'\nimport { AbortedBeaconError } from './errors/AbortedBeaconError'\nimport { getSenderId } from './utils/get-sender-id'\nimport { PeerManager } from './managers/PeerManager'\nimport { MessageBasedClient } from './transports/clients/MessageBasedClient'\nimport { setDebugEnabled, getDebugEnabled } from './debug'\n// import { EncryptPayloadRequest } from './types/beacon/messages/EncryptPayloadRequest'\n// import { EncryptPayloadResponse } from './types/beacon/messages/EncryptPayloadResponse'\n// import { EncryptionTypeNotSupportedBeaconError } from './errors/EncryptionTypeNotSupportedBeaconError'\nimport { SignatureTypeNotSupportedBeaconError } from './errors/SignatureTypeNotSupportedBeaconError'\nimport { VersionUnsupportedBeaconError } from './errors/VersionUnsupportedBeaconError'\nimport { InvalidRequiredMinimumVersionError } from './errors/InvalidRequiredMinimumVersionError'\nimport { NetworksUnsupportedBeaconError } from './errors/NetworksUnsupportedBeaconError'\nimport { InvalidBeaconVersionError } from './errors/InvalidBeaconVersionError'\nimport { getLogger, Logger, setLogger } from './utils/Logger'\nimport { windowRef } from './MockWindow'\nimport { CommunicationClient } from './transports/clients/CommunicationClient'\nimport { ClientEvents } from './transports/clients/ClientEvents'\nimport { WCStorage } from './storage/WCStorage'\nimport { IndexedDBStorage } from './storage/IndexedDBStorage'\nimport { StorageValidator } from './storage/StorageValidator'\nimport { MultiTabChannel } from './utils/multi-tab-channel'\nimport getError from './errors/get-error'\n// import { EncryptionType } from './types/EncryptionType'\n// import { EncryptionOperation } from './types/EncryptionOperation'\n\n// Clients\nexport { BeaconClient, BeaconClientOptions, Client, ClientOptions, ClientEvents }\n\n// Errors\nexport {\n getError,\n BeaconError,\n AbortedBeaconError,\n BroadcastBeaconError,\n NetworkNotSupportedBeaconError,\n NoAddressBeaconError,\n NoPrivateKeyBeaconError,\n NotGrantedBeaconError,\n ParametersInvalidBeaconError,\n TooManyOperationsBeaconError,\n TransactionInvalidBeaconError,\n SignatureTypeNotSupportedBeaconError,\n // EncryptionTypeNotSupportedBeaconError,\n UnknownBeaconError,\n VersionUnsupportedBeaconError,\n InvalidRequiredMinimumVersionError,\n NetworksUnsupportedBeaconError,\n InvalidBeaconVersionError\n}\n\n// Transport\nexport { Transport, MessageBasedClient, CommunicationClient }\n\n// Storage\nexport { ChromeStorage, LocalStorage, WCStorage, IndexedDBStorage, StorageValidator, getStorage }\n\n// Managers\nexport { PeerManager, AccountManager, AppMetadataManager, PermissionManager }\n\n// Constants\nexport {\n SDK_VERSION,\n BEACON_VERSION,\n PROTOCOL_VERSION_V1,\n PROTOCOL_VERSION_V2,\n LATEST_PROTOCOL_VERSION,\n DEFAULT_PROTOCOL_VERSION,\n getPreferredMessageProtocolVersion,\n setPreferredMessageProtocolVersion\n}\n\n// Utils\nexport { getSenderId, getAccountIdentifier, windowRef, MultiTabChannel }\nexport {\n usesWrappedMessages,\n MESSAGE_WRAPPED_FROM_VERSION,\n MULTI_NETWORK_FROM_VERSION,\n compareBeaconVersion,\n isAtLeastVersion,\n isMultiNetworkVersion,\n negotiateEnvelopeVersion,\n wrapBeaconMessage,\n unwrapBeaconMessage\n} from './utils/message-utils'\nexport {\n normalizeTezosCaip2,\n isValidTezosCaip2,\n networkFromTezosCaip2,\n TEZOS_NETWORK_GENESIS_IDS,\n tezosCaip2FromNetworkType,\n networkTypeFromTezosCaip2\n} from './utils/caip2'\nexport { assertNever } from './utils/assert-never'\nexport { resolveRequiredMinimumVersion } from './utils/required-minimum-version'\n\n// Diagnostics\nexport {\n gatherDiagnostics,\n buildErrorContext,\n serializeErrorContext,\n copyErrorContextToClipboard,\n SENSITIVE_STORAGE_KEYS\n} from './utils/diagnostics'\n\n// Error codes\nexport { ERROR_CODES, WC_ERROR_CODES, MATRIX_ERROR_CODES, PM_ERROR_CODES, BLOCKCHAIN_ERROR_CODES, BEACON_ERROR_CODES } from './errors/error-codes'\nexport type { ErrorCode } from './errors/error-codes'\n\n// Others\nexport { Serializer, Logger, setLogger, getLogger }\n\n// Debug\nexport { setDebugEnabled, getDebugEnabled }\n\nexport { NOTIFICATION_ORACLE_URL, BACKEND_URL } from './constants'\n"]}
@@ -10,6 +10,13 @@ export declare class AccountManager {
10
10
  getAccounts(): Promise<AccountInfo[]>;
11
11
  getAccount(accountIdentifier: string): Promise<AccountInfo | undefined>;
12
12
  addAccount(accountInfo: AccountInfo): Promise<void>;
13
+ /**
14
+ * Persist several accounts in a single read-modify-write cycle. Behaves like
15
+ * calling {@link addAccount} for each entry (dedupe/overwrite by
16
+ * `accountIdentifier`) but touches storage once. Used by the v4 multi-network
17
+ * permission flow, which materialises one account per requested network.
18
+ */
19
+ addAccounts(accountInfos: AccountInfo[]): Promise<void>;
13
20
  updateAccount(accountIdentifier: string, accountInfo: Partial<AccountInfo>): Promise<AccountInfo | undefined>;
14
21
  removeAccount(accountIdentifier: string): Promise<void>;
15
22
  removeAccounts(accountIdentifiers: string[]): Promise<void>;
@@ -20,6 +20,15 @@ export class AccountManager {
20
20
  async addAccount(accountInfo) {
21
21
  return this.storageManager.addOne(accountInfo, (account) => account.accountIdentifier === accountInfo.accountIdentifier);
22
22
  }
23
+ /**
24
+ * Persist several accounts in a single read-modify-write cycle. Behaves like
25
+ * calling {@link addAccount} for each entry (dedupe/overwrite by
26
+ * `accountIdentifier`) but touches storage once. Used by the v4 multi-network
27
+ * permission flow, which materialises one account per requested network.
28
+ */
29
+ async addAccounts(accountInfos) {
30
+ return this.storageManager.addMany(accountInfos, (stored, incoming) => stored.accountIdentifier === incoming.accountIdentifier);
31
+ }
23
32
  async updateAccount(accountIdentifier, accountInfo) {
24
33
  const account = await this.getAccount(accountIdentifier);
25
34
  if (!account)
@@ -1 +1 @@
1
- {"version":3,"file":"AccountManager.js","sourceRoot":"","sources":["../../../../src/managers/AccountManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,UAAU,EAA8B,MAAM,8BAA8B,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACR,cAAc,CAAqC;IAEpE,YAAY,OAAgB;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;IACxE,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAA;IACnD,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,iBAAyB;QAC/C,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,CAAA;IACjG,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,WAAwB;QAC9C,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAC/B,WAAW,EACX,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,KAAK,WAAW,CAAC,iBAAiB,CACzE,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,iBAAyB,EACzB,WAAiC;QAEjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;QAExD,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAA;QAE9B,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,WAAW,EAAE,CAAA;QACjD,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAC9B,UAAU,EACV,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,KAAK,iBAAiB,EAC5D,IAAI,CACL,CAAA;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,iBAAyB;QAClD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,CAAA;IACjG,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,kBAA4B;QACtD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5C,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CACvD,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAA;IACxC,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAAsB;QAC/C,OAAO,mBAAmB,CAAC,aAAa,CACtC,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5B,CAAA;IACH,CAAC;CACF","sourcesContent":["import { Storage, StorageKey, AccountInfo, BeaconMessage } from '@tezos-x/octez.connect-types'\nimport { StorageManager } from './StorageManager'\nimport { PermissionValidator } from './PermissionValidator'\n\n/**\n * @internalapi\n *\n * The AccountManager provides CRUD functionality for account entities and persists them to the provided storage.\n */\nexport class AccountManager {\n private readonly storageManager: StorageManager<StorageKey.ACCOUNTS>\n\n constructor(storage: Storage) {\n this.storageManager = new StorageManager(storage, StorageKey.ACCOUNTS)\n }\n\n public async getAccounts(): Promise<AccountInfo[]> {\n return (await this.storageManager.getAll()) ?? []\n }\n\n public async getAccount(accountIdentifier: string): Promise<AccountInfo | undefined> {\n return this.storageManager.getOne((account) => account.accountIdentifier === accountIdentifier)\n }\n\n public async addAccount(accountInfo: AccountInfo): Promise<void> {\n return this.storageManager.addOne(\n accountInfo,\n (account) => account.accountIdentifier === accountInfo.accountIdentifier\n )\n }\n\n public async updateAccount(\n accountIdentifier: string,\n accountInfo: Partial<AccountInfo>\n ): Promise<AccountInfo | undefined> {\n const account = await this.getAccount(accountIdentifier)\n\n if (!account) return undefined\n\n const newAccount = { ...account, ...accountInfo }\n await this.storageManager.addOne(\n newAccount,\n (account) => account.accountIdentifier === accountIdentifier,\n true\n )\n\n return newAccount\n }\n\n public async removeAccount(accountIdentifier: string): Promise<void> {\n return this.storageManager.remove((account) => account.accountIdentifier === accountIdentifier)\n }\n\n public async removeAccounts(accountIdentifiers: string[]): Promise<void> {\n return this.storageManager.remove((account) =>\n accountIdentifiers.includes(account.accountIdentifier)\n )\n }\n\n public async removeAllAccounts(): Promise<void> {\n return this.storageManager.removeAll()\n }\n\n public async hasPermission(message: BeaconMessage): Promise<boolean> {\n return PermissionValidator.hasPermission(\n message,\n this.getAccount.bind(this),\n this.getAccounts.bind(this)\n )\n }\n}\n"]}
1
+ {"version":3,"file":"AccountManager.js","sourceRoot":"","sources":["../../../../src/managers/AccountManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,UAAU,EAA8B,MAAM,8BAA8B,CAAA;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACR,cAAc,CAAqC;IAEpE,YAAY,OAAgB;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;IACxE,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAA;IACnD,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,iBAAyB;QAC/C,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,CAAA;IACjG,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,WAAwB;QAC9C,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAC/B,WAAW,EACX,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,KAAK,WAAW,CAAC,iBAAiB,CACzE,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,WAAW,CAAC,YAA2B;QAClD,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAChC,YAAY,EACZ,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,KAAK,QAAQ,CAAC,iBAAiB,CAC9E,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,iBAAyB,EACzB,WAAiC;QAEjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;QAExD,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAA;QAE9B,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,WAAW,EAAE,CAAA;QACjD,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAC9B,UAAU,EACV,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,KAAK,iBAAiB,EAC5D,IAAI,CACL,CAAA;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,iBAAyB;QAClD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,CAAA;IACjG,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,kBAA4B;QACtD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5C,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CACvD,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAA;IACxC,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAAsB;QAC/C,OAAO,mBAAmB,CAAC,aAAa,CACtC,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5B,CAAA;IACH,CAAC;CACF","sourcesContent":["import { Storage, StorageKey, AccountInfo, BeaconMessage } from '@tezos-x/octez.connect-types'\nimport { StorageManager } from './StorageManager'\nimport { PermissionValidator } from './PermissionValidator'\n\n/**\n * @internalapi\n *\n * The AccountManager provides CRUD functionality for account entities and persists them to the provided storage.\n */\nexport class AccountManager {\n private readonly storageManager: StorageManager<StorageKey.ACCOUNTS>\n\n constructor(storage: Storage) {\n this.storageManager = new StorageManager(storage, StorageKey.ACCOUNTS)\n }\n\n public async getAccounts(): Promise<AccountInfo[]> {\n return (await this.storageManager.getAll()) ?? []\n }\n\n public async getAccount(accountIdentifier: string): Promise<AccountInfo | undefined> {\n return this.storageManager.getOne((account) => account.accountIdentifier === accountIdentifier)\n }\n\n public async addAccount(accountInfo: AccountInfo): Promise<void> {\n return this.storageManager.addOne(\n accountInfo,\n (account) => account.accountIdentifier === accountInfo.accountIdentifier\n )\n }\n\n /**\n * Persist several accounts in a single read-modify-write cycle. Behaves like\n * calling {@link addAccount} for each entry (dedupe/overwrite by\n * `accountIdentifier`) but touches storage once. Used by the v4 multi-network\n * permission flow, which materialises one account per requested network.\n */\n public async addAccounts(accountInfos: AccountInfo[]): Promise<void> {\n return this.storageManager.addMany(\n accountInfos,\n (stored, incoming) => stored.accountIdentifier === incoming.accountIdentifier\n )\n }\n\n public async updateAccount(\n accountIdentifier: string,\n accountInfo: Partial<AccountInfo>\n ): Promise<AccountInfo | undefined> {\n const account = await this.getAccount(accountIdentifier)\n\n if (!account) return undefined\n\n const newAccount = { ...account, ...accountInfo }\n await this.storageManager.addOne(\n newAccount,\n (account) => account.accountIdentifier === accountIdentifier,\n true\n )\n\n return newAccount\n }\n\n public async removeAccount(accountIdentifier: string): Promise<void> {\n return this.storageManager.remove((account) => account.accountIdentifier === accountIdentifier)\n }\n\n public async removeAccounts(accountIdentifiers: string[]): Promise<void> {\n return this.storageManager.remove((account) =>\n accountIdentifiers.includes(account.accountIdentifier)\n )\n }\n\n public async removeAllAccounts(): Promise<void> {\n return this.storageManager.removeAll()\n }\n\n public async hasPermission(message: BeaconMessage): Promise<boolean> {\n return PermissionValidator.hasPermission(\n message,\n this.getAccount.bind(this),\n this.getAccounts.bind(this)\n )\n }\n}\n"]}
@@ -10,6 +10,13 @@ export declare class PermissionManager {
10
10
  getPermissions(): Promise<PermissionInfo[]>;
11
11
  getPermission(accountIdentifier: string): Promise<PermissionInfo | undefined>;
12
12
  addPermission(permissionInfo: PermissionInfo): Promise<void>;
13
+ /**
14
+ * Persist several permissions in one read-modify-write cycle. Required for
15
+ * the v4 multi-network fanout (N permissions from one response): N
16
+ * concurrent `addPermission` calls race on the shared permission list and
17
+ * the last write clobbers the others.
18
+ */
19
+ addPermissions(permissionInfos: PermissionInfo[]): Promise<void>;
13
20
  removePermission(accountIdentifier: string, senderId: string): Promise<void>;
14
21
  removePermissions(accountIdentifiers: string[]): Promise<void>;
15
22
  removeAllPermissions(): Promise<void>;
@@ -21,6 +21,16 @@ export class PermissionManager {
21
21
  return this.storageManager.addOne(permissionInfo, (permission) => permission.accountIdentifier === permissionInfo.accountIdentifier &&
22
22
  permission.senderId === permissionInfo.senderId);
23
23
  }
24
+ /**
25
+ * Persist several permissions in one read-modify-write cycle. Required for
26
+ * the v4 multi-network fanout (N permissions from one response): N
27
+ * concurrent `addPermission` calls race on the shared permission list and
28
+ * the last write clobbers the others.
29
+ */
30
+ async addPermissions(permissionInfos) {
31
+ return this.storageManager.addMany(permissionInfos, (stored, incoming) => stored.accountIdentifier === incoming.accountIdentifier &&
32
+ stored.senderId === incoming.senderId);
33
+ }
24
34
  async removePermission(accountIdentifier, senderId) {
25
35
  return this.storageManager.remove((permission) => permission.accountIdentifier === accountIdentifier && permission.senderId === senderId);
26
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionManager.js","sourceRoot":"","sources":["../../../../src/managers/PermissionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,UAAU,EAAkB,MAAM,8BAA8B,CAAA;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IACX,cAAc,CAA4C;IAE3E,YAAY,OAAgB;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;IAC/E,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAA;IACnD,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,iBAAyB;QAClD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAC/B,CAAC,UAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,KAAK,iBAAiB,CACnF,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,cAA8B;QACvD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAC/B,cAAc,EACd,CAAC,UAA0B,EAAE,EAAE,CAC7B,UAAU,CAAC,iBAAiB,KAAK,cAAc,CAAC,iBAAiB;YACjE,UAAU,CAAC,QAAQ,KAAK,cAAc,CAAC,QAAQ,CAClD,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,iBAAyB,EAAE,QAAgB;QACvE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAC/B,CAAC,UAA0B,EAAE,EAAE,CAC7B,UAAU,CAAC,iBAAiB,KAAK,iBAAiB,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,CACzF,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,kBAA4B;QACzD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,UAA0B,EAAE,EAAE,CAC/D,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAC1D,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAA;IACxC,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAAsB;QAC/C,OAAO,mBAAmB,CAAC,aAAa,CACtC,OAAO,EACP,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/B,CAAA;IACH,CAAC;CACF","sourcesContent":["import { BeaconMessage, Storage, StorageKey, PermissionInfo } from '@tezos-x/octez.connect-types'\nimport { StorageManager } from './StorageManager'\nimport { PermissionValidator } from './PermissionValidator'\n\n/**\n * @internalapi\n *\n * The PermissionManager provides CRUD functionality for permission entities and persists them to the provided storage.\n */\nexport class PermissionManager {\n private readonly storageManager: StorageManager<StorageKey.PERMISSION_LIST>\n\n constructor(storage: Storage) {\n this.storageManager = new StorageManager(storage, StorageKey.PERMISSION_LIST)\n }\n\n public async getPermissions(): Promise<PermissionInfo[]> {\n return (await this.storageManager.getAll()) ?? []\n }\n\n public async getPermission(accountIdentifier: string): Promise<PermissionInfo | undefined> {\n return this.storageManager.getOne(\n (permission: PermissionInfo) => permission.accountIdentifier === accountIdentifier\n )\n }\n\n public async addPermission(permissionInfo: PermissionInfo): Promise<void> {\n return this.storageManager.addOne(\n permissionInfo,\n (permission: PermissionInfo) =>\n permission.accountIdentifier === permissionInfo.accountIdentifier &&\n permission.senderId === permissionInfo.senderId\n )\n }\n\n public async removePermission(accountIdentifier: string, senderId: string): Promise<void> {\n return this.storageManager.remove(\n (permission: PermissionInfo) =>\n permission.accountIdentifier === accountIdentifier && permission.senderId === senderId\n )\n }\n\n public async removePermissions(accountIdentifiers: string[]): Promise<void> {\n return this.storageManager.remove((permission: PermissionInfo) =>\n accountIdentifiers.includes(permission.accountIdentifier)\n )\n }\n\n public async removeAllPermissions(): Promise<void> {\n return this.storageManager.removeAll()\n }\n\n public async hasPermission(message: BeaconMessage): Promise<boolean> {\n return PermissionValidator.hasPermission(\n message,\n this.getPermission.bind(this),\n this.getPermissions.bind(this)\n )\n }\n}\n"]}
1
+ {"version":3,"file":"PermissionManager.js","sourceRoot":"","sources":["../../../../src/managers/PermissionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,UAAU,EAAkB,MAAM,8BAA8B,CAAA;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IACX,cAAc,CAA4C;IAE3E,YAAY,OAAgB;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;IAC/E,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAA;IACnD,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,iBAAyB;QAClD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAC/B,CAAC,UAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,KAAK,iBAAiB,CACnF,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,cAA8B;QACvD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAC/B,cAAc,EACd,CAAC,UAA0B,EAAE,EAAE,CAC7B,UAAU,CAAC,iBAAiB,KAAK,cAAc,CAAC,iBAAiB;YACjE,UAAU,CAAC,QAAQ,KAAK,cAAc,CAAC,QAAQ,CAClD,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,cAAc,CAAC,eAAiC;QAC3D,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAChC,eAAe,EACf,CAAC,MAAsB,EAAE,QAAwB,EAAE,EAAE,CACnD,MAAM,CAAC,iBAAiB,KAAK,QAAQ,CAAC,iBAAiB;YACvD,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CACxC,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,iBAAyB,EAAE,QAAgB;QACvE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAC/B,CAAC,UAA0B,EAAE,EAAE,CAC7B,UAAU,CAAC,iBAAiB,KAAK,iBAAiB,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,CACzF,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,kBAA4B;QACzD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,UAA0B,EAAE,EAAE,CAC/D,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAC1D,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAA;IACxC,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,OAAsB;QAC/C,OAAO,mBAAmB,CAAC,aAAa,CACtC,OAAO,EACP,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/B,CAAA;IACH,CAAC;CACF","sourcesContent":["import { BeaconMessage, Storage, StorageKey, PermissionInfo } from '@tezos-x/octez.connect-types'\nimport { StorageManager } from './StorageManager'\nimport { PermissionValidator } from './PermissionValidator'\n\n/**\n * @internalapi\n *\n * The PermissionManager provides CRUD functionality for permission entities and persists them to the provided storage.\n */\nexport class PermissionManager {\n private readonly storageManager: StorageManager<StorageKey.PERMISSION_LIST>\n\n constructor(storage: Storage) {\n this.storageManager = new StorageManager(storage, StorageKey.PERMISSION_LIST)\n }\n\n public async getPermissions(): Promise<PermissionInfo[]> {\n return (await this.storageManager.getAll()) ?? []\n }\n\n public async getPermission(accountIdentifier: string): Promise<PermissionInfo | undefined> {\n return this.storageManager.getOne(\n (permission: PermissionInfo) => permission.accountIdentifier === accountIdentifier\n )\n }\n\n public async addPermission(permissionInfo: PermissionInfo): Promise<void> {\n return this.storageManager.addOne(\n permissionInfo,\n (permission: PermissionInfo) =>\n permission.accountIdentifier === permissionInfo.accountIdentifier &&\n permission.senderId === permissionInfo.senderId\n )\n }\n\n /**\n * Persist several permissions in one read-modify-write cycle. Required for\n * the v4 multi-network fanout (N permissions from one response): N\n * concurrent `addPermission` calls race on the shared permission list and\n * the last write clobbers the others.\n */\n public async addPermissions(permissionInfos: PermissionInfo[]): Promise<void> {\n return this.storageManager.addMany(\n permissionInfos,\n (stored: PermissionInfo, incoming: PermissionInfo) =>\n stored.accountIdentifier === incoming.accountIdentifier &&\n stored.senderId === incoming.senderId\n )\n }\n\n public async removePermission(accountIdentifier: string, senderId: string): Promise<void> {\n return this.storageManager.remove(\n (permission: PermissionInfo) =>\n permission.accountIdentifier === accountIdentifier && permission.senderId === senderId\n )\n }\n\n public async removePermissions(accountIdentifiers: string[]): Promise<void> {\n return this.storageManager.remove((permission: PermissionInfo) =>\n accountIdentifiers.includes(permission.accountIdentifier)\n )\n }\n\n public async removeAllPermissions(): Promise<void> {\n return this.storageManager.removeAll()\n }\n\n public async hasPermission(message: BeaconMessage): Promise<boolean> {\n return PermissionValidator.hasPermission(\n message,\n this.getPermission.bind(this),\n this.getPermissions.bind(this)\n )\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { BeaconMessageType, PermissionScope } from '@tezos-x/octez.connect-types';
2
2
  import { getAccountIdentifier } from '../utils/get-account-identifier';
3
+ import { networkFromTezosCaip2, normalizeTezosCaip2 } from '../utils/caip2';
3
4
  /**
4
5
  * @internalapi
5
6
  *
@@ -20,7 +21,18 @@ export class PermissionValidator {
20
21
  return true;
21
22
  }
22
23
  case BeaconMessageType.OperationRequest: {
23
- const accountIdentifier = await getAccountIdentifier(message.sourceAddress, message.network);
24
+ // operation_request.network is now `Network | string`: on the v4 path
25
+ // the wire carries a CAIP-2 string, which we coerce to the minimal
26
+ // Network used to derive the account identifier (same helper the
27
+ // permission-storage side uses, so the two ids match). Normalize first:
28
+ // the wire accepts both the bare reference (`NetX…`) and the full
29
+ // `tezos:NetX…` form, but permissions were stored under the normalized
30
+ // (prefixed) chainId, so a bare reference must be prefixed before the
31
+ // identifier is derived or the lookup misses a valid grant.
32
+ const networkForId = typeof message.network === 'string'
33
+ ? networkFromTezosCaip2(normalizeTezosCaip2(message.network))
34
+ : message.network;
35
+ const accountIdentifier = await getAccountIdentifier(message.sourceAddress, networkForId);
24
36
  const permission = await getOne(accountIdentifier);
25
37
  if (!permission) {
26
38
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionValidator.js","sourceRoot":"","sources":["../../../../src/managers/PermissionValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,eAAe,EAEhB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAEtE;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAC9B;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,aAAa,CAC/B,OAAsB,EACtB,MAA6D,EAC7D,MAAyC;QAEzC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,iBAAiB,CAAC,iBAAiB,CAAC;YACzC,KAAK,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACxC,OAAO,IAAI,CAAA;YACb,CAAC;YACD,KAAK,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACxC,MAAM,iBAAiB,GAAW,MAAM,oBAAoB,CAC1D,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,OAAO,CAChB,CAAA;gBAED,MAAM,UAAU,GAAiC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;gBAChF,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAA;YACtE,CAAC;YACD,KAAK,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC1C,MAAM,WAAW,GAAuB,MAAM,MAAM,EAAE,CAAA;gBACtD,MAAM,mBAAmB,GAAuB,WAAW,CAAC,MAAM,CAChE,CAAC,UAA4B,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,aAAa,CAC/E,CAAA;gBAED,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,UAA4B,EAAE,EAAE,CAC/D,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CACjD,CAAA;YACH,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\n BeaconMessage,\n BeaconMessageType,\n PermissionScope,\n PermissionEntity\n} from '@tezos-x/octez.connect-types'\nimport { getAccountIdentifier } from '../utils/get-account-identifier'\n\n/**\n * @internalapi\n *\n * The PermissionValidator is used to check if permissions for a certain message type have been given\n */\nexport class PermissionValidator {\n /**\n * Check if permissions were given for a certain message type.\n *\n * PermissionRequest and BroadcastRequest will always return true.\n *\n * @param message octez.connect message\n */\n public static async hasPermission(\n message: BeaconMessage,\n getOne: (id: string) => Promise<PermissionEntity | undefined>,\n getAll: () => Promise<PermissionEntity[]>\n ): Promise<boolean> {\n switch (message.type) {\n case BeaconMessageType.PermissionRequest:\n case BeaconMessageType.BroadcastRequest: {\n return true\n }\n case BeaconMessageType.OperationRequest: {\n const accountIdentifier: string = await getAccountIdentifier(\n message.sourceAddress,\n message.network\n )\n\n const permission: PermissionEntity | undefined = await getOne(accountIdentifier)\n if (!permission) {\n return false\n }\n\n return permission.scopes.includes(PermissionScope.OPERATION_REQUEST)\n }\n case BeaconMessageType.SignPayloadRequest: {\n const permissions: PermissionEntity[] = await getAll()\n const filteredPermissions: PermissionEntity[] = permissions.filter(\n (permission: PermissionEntity) => permission.address === message.sourceAddress\n )\n\n if (filteredPermissions.length === 0) {\n return false\n }\n\n return filteredPermissions.some((permission: PermissionEntity) =>\n permission.scopes.includes(PermissionScope.SIGN)\n )\n }\n default:\n throw new Error('Message not handled')\n }\n }\n}\n"]}
1
+ {"version":3,"file":"PermissionValidator.js","sourceRoot":"","sources":["../../../../src/managers/PermissionValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAEjB,eAAe,EAEhB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAE3E;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAC9B;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,CAAC,aAAa,CAC/B,OAAsB,EACtB,MAA6D,EAC7D,MAAyC;QAEzC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,iBAAiB,CAAC,iBAAiB,CAAC;YACzC,KAAK,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACxC,OAAO,IAAI,CAAA;YACb,CAAC;YACD,KAAK,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBACxC,sEAAsE;gBACtE,mEAAmE;gBACnE,iEAAiE;gBACjE,wEAAwE;gBACxE,kEAAkE;gBAClE,uEAAuE;gBACvE,sEAAsE;gBACtE,4DAA4D;gBAC5D,MAAM,YAAY,GAChB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;oBACjC,CAAC,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC7D,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;gBACrB,MAAM,iBAAiB,GAAW,MAAM,oBAAoB,CAC1D,OAAO,CAAC,aAAa,EACrB,YAAY,CACb,CAAA;gBAED,MAAM,UAAU,GAAiC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;gBAChF,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAA;YACtE,CAAC;YACD,KAAK,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC1C,MAAM,WAAW,GAAuB,MAAM,MAAM,EAAE,CAAA;gBACtD,MAAM,mBAAmB,GAAuB,WAAW,CAAC,MAAM,CAChE,CAAC,UAA4B,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,aAAa,CAC/E,CAAA;gBAED,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrC,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,UAA4B,EAAE,EAAE,CAC/D,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CACjD,CAAA;YACH,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;CACF","sourcesContent":["import {\n BeaconMessage,\n BeaconMessageType,\n Network,\n PermissionScope,\n PermissionEntity\n} from '@tezos-x/octez.connect-types'\nimport { getAccountIdentifier } from '../utils/get-account-identifier'\nimport { networkFromTezosCaip2, normalizeTezosCaip2 } from '../utils/caip2'\n\n/**\n * @internalapi\n *\n * The PermissionValidator is used to check if permissions for a certain message type have been given\n */\nexport class PermissionValidator {\n /**\n * Check if permissions were given for a certain message type.\n *\n * PermissionRequest and BroadcastRequest will always return true.\n *\n * @param message octez.connect message\n */\n public static async hasPermission(\n message: BeaconMessage,\n getOne: (id: string) => Promise<PermissionEntity | undefined>,\n getAll: () => Promise<PermissionEntity[]>\n ): Promise<boolean> {\n switch (message.type) {\n case BeaconMessageType.PermissionRequest:\n case BeaconMessageType.BroadcastRequest: {\n return true\n }\n case BeaconMessageType.OperationRequest: {\n // operation_request.network is now `Network | string`: on the v4 path\n // the wire carries a CAIP-2 string, which we coerce to the minimal\n // Network used to derive the account identifier (same helper the\n // permission-storage side uses, so the two ids match). Normalize first:\n // the wire accepts both the bare reference (`NetX…`) and the full\n // `tezos:NetX…` form, but permissions were stored under the normalized\n // (prefixed) chainId, so a bare reference must be prefixed before the\n // identifier is derived or the lookup misses a valid grant.\n const networkForId: Network =\n typeof message.network === 'string'\n ? networkFromTezosCaip2(normalizeTezosCaip2(message.network))\n : message.network\n const accountIdentifier: string = await getAccountIdentifier(\n message.sourceAddress,\n networkForId\n )\n\n const permission: PermissionEntity | undefined = await getOne(accountIdentifier)\n if (!permission) {\n return false\n }\n\n return permission.scopes.includes(PermissionScope.OPERATION_REQUEST)\n }\n case BeaconMessageType.SignPayloadRequest: {\n const permissions: PermissionEntity[] = await getAll()\n const filteredPermissions: PermissionEntity[] = permissions.filter(\n (permission: PermissionEntity) => permission.address === message.sourceAddress\n )\n\n if (filteredPermissions.length === 0) {\n return false\n }\n\n return filteredPermissions.some((permission: PermissionEntity) =>\n permission.scopes.includes(PermissionScope.SIGN)\n )\n }\n default:\n throw new Error('Message not handled')\n }\n }\n}\n"]}
@@ -13,6 +13,17 @@ export declare class StorageManager<T extends StorageKey.ACCOUNTS | StorageKey.A
13
13
  getAll(): Promise<StorageKeyReturnType[T]>;
14
14
  getOne(predicate: (element: ArrayElem<StorageKeyReturnType[T]>) => boolean): Promise<ArrayElem<StorageKeyReturnType[T]> | undefined>;
15
15
  addOne(element: ArrayElem<StorageKeyReturnType[T]>, predicate: (element: ArrayElem<StorageKeyReturnType[T]>) => boolean, overwrite?: boolean): Promise<void>;
16
+ /**
17
+ * Insert or update many elements in a single read-modify-write cycle.
18
+ *
19
+ * Equivalent to calling {@link addOne} for each element, but reads and writes
20
+ * storage once instead of once per element. Elements are reconciled against
21
+ * the store AND against earlier elements in the same batch (so a duplicate
22
+ * within `elements` collapses to one), using `match(stored, incoming)` to
23
+ * decide identity. Used for the v4 multi-network fanout, which persists one
24
+ * account per requested network from a single permission response.
25
+ */
26
+ addMany(elements: ArrayElem<StorageKeyReturnType[T]>[], match: (stored: ArrayElem<StorageKeyReturnType[T]>, incoming: ArrayElem<StorageKeyReturnType[T]>) => boolean, overwrite?: boolean): Promise<void>;
16
27
  remove(predicate: (element: ArrayElem<StorageKeyReturnType[T]>) => boolean): Promise<void>;
17
28
  removeAll(): Promise<void>;
18
29
  }
@@ -37,6 +37,32 @@ export class StorageManager {
37
37
  }
38
38
  return this.storage.set(this.storageKey, entities);
39
39
  }
40
+ /**
41
+ * Insert or update many elements in a single read-modify-write cycle.
42
+ *
43
+ * Equivalent to calling {@link addOne} for each element, but reads and writes
44
+ * storage once instead of once per element. Elements are reconciled against
45
+ * the store AND against earlier elements in the same batch (so a duplicate
46
+ * within `elements` collapses to one), using `match(stored, incoming)` to
47
+ * decide identity. Used for the v4 multi-network fanout, which persists one
48
+ * account per requested network from a single permission response.
49
+ */
50
+ async addMany(elements, match, overwrite = true) {
51
+ if (elements.length === 0) {
52
+ return;
53
+ }
54
+ const entities = await this.storage.get(this.storageKey);
55
+ for (const element of elements) {
56
+ const index = fixArrayType(entities).findIndex((existing) => match(existing, element));
57
+ if (index === -1) {
58
+ fixArrayType(entities).push(element);
59
+ }
60
+ else if (overwrite) {
61
+ entities[index] = element;
62
+ }
63
+ }
64
+ return this.storage.set(this.storageKey, entities);
65
+ }
40
66
  async remove(predicate) {
41
67
  const entities = await this.storage.get(this.storageKey);
42
68
  const filteredEntities = fixArrayType(entities).filter((entity) => !predicate(entity));
@@ -1 +1 @@
1
- {"version":3,"file":"StorageManager.js","sourceRoot":"","sources":["../../../../src/managers/StorageManager.ts"],"names":[],"mappings":"AAKA,wDAAwD;AACxD,SAAS,YAAY,CAAI,KAAQ;IAC/B,8DAA8D;IAC9D,OAAO,KAAY,CAAA;AACrB,CAAC;AACD,uDAAuD;AAEvD;;;;GAIG;AACH,MAAM,OAAO,cAAc;IAWR,OAAO,CAAS;IAChB,UAAU,CAAG;IAE9B,YAAY,OAAgB,EAAE,UAAa;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;IACxD,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,SAAmE;QAEnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAExD,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC/C,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,OAA2C,EAC3C,SAAmE,EACnE,YAAqB,IAAI;QAEzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAExD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACtC,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,IAAI,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACpD,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,SAAmE;QAEnE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAExD,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;QAEtF,8DAA8D;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAuB,CAAC,CAAA;IACnE,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC7C,CAAC;CACF","sourcesContent":["import { StorageKey, Storage, StorageKeyReturnType } from '@tezos-x/octez.connect-types'\n\n/** Type workaround for https://github.com/Microsoft/TypeScript/issues/7294#issuecomment-465794460 */\nexport type ArrayElem<A> = A extends (infer Elem)[] ? Elem : never\n\n/* eslint-disable prefer-arrow/prefer-arrow-functions */\nfunction fixArrayType<T>(array: T): ArrayElem<T>[] {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return array as any\n}\n/* eslint-enable prefer-arrow/prefer-arrow-functions */\n\n/**\n * @internalapi\n *\n * The StorageManager provides CRUD functionality for specific entities and persists them to the provided storage.\n */\nexport class StorageManager<\n T extends\n | StorageKey.ACCOUNTS\n | StorageKey.APP_METADATA_LIST\n | StorageKey.PERMISSION_LIST\n | StorageKey.TRANSPORT_P2P_PEERS_DAPP\n | StorageKey.TRANSPORT_P2P_PEERS_WALLET\n | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP\n | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET\n | StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP\n> {\n private readonly storage: Storage\n private readonly storageKey: T\n\n constructor(storage: Storage, storageKey: T) {\n this.storage = storage\n this.storageKey = storageKey\n }\n\n public async getAll(): Promise<StorageKeyReturnType[T]> {\n return (await this.storage.get(this.storageKey)) ?? []\n }\n\n public async getOne(\n predicate: (element: ArrayElem<StorageKeyReturnType[T]>) => boolean\n ): Promise<ArrayElem<StorageKeyReturnType[T]> | undefined> {\n const entities = await this.storage.get(this.storageKey)\n\n return fixArrayType(entities).find(predicate)\n }\n\n public async addOne(\n element: ArrayElem<StorageKeyReturnType[T]>,\n predicate: (element: ArrayElem<StorageKeyReturnType[T]>) => boolean,\n overwrite: boolean = true\n ): Promise<void> {\n const entities = await this.storage.get(this.storageKey)\n\n if (!fixArrayType(entities).some(predicate)) {\n fixArrayType(entities).push(element)\n } else if (overwrite) {\n for (let i = 0; i < entities.length; i++) {\n if (predicate(fixArrayType(entities)[i])) {\n entities[i] = element\n }\n }\n }\n\n return this.storage.set(this.storageKey, entities)\n }\n\n public async remove(\n predicate: (element: ArrayElem<StorageKeyReturnType[T]>) => boolean\n ): Promise<void> {\n const entities = await this.storage.get(this.storageKey)\n\n const filteredEntities = fixArrayType(entities).filter((entity) => !predicate(entity))\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.storage.set(this.storageKey, filteredEntities as any)\n }\n\n public async removeAll(): Promise<void> {\n return this.storage.delete(this.storageKey)\n }\n}\n"]}
1
+ {"version":3,"file":"StorageManager.js","sourceRoot":"","sources":["../../../../src/managers/StorageManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { StorageKey, Storage, StorageKeyReturnType } from '@tezos-x/octez.connect-types'\n\n/** Type workaround for https://github.com/Microsoft/TypeScript/issues/7294#issuecomment-465794460 */\nexport type ArrayElem<A> = A extends (infer Elem)[] ? Elem : never\n\n/* eslint-disable prefer-arrow/prefer-arrow-functions */\nfunction fixArrayType<T>(array: T): ArrayElem<T>[] {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return array as any\n}\n/* eslint-enable prefer-arrow/prefer-arrow-functions */\n\n/**\n * @internalapi\n *\n * The StorageManager provides CRUD functionality for specific entities and persists them to the provided storage.\n */\nexport class StorageManager<\n T extends\n | StorageKey.ACCOUNTS\n | StorageKey.APP_METADATA_LIST\n | StorageKey.PERMISSION_LIST\n | StorageKey.TRANSPORT_P2P_PEERS_DAPP\n | StorageKey.TRANSPORT_P2P_PEERS_WALLET\n | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP\n | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET\n | StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP\n> {\n private readonly storage: Storage\n private readonly storageKey: T\n\n constructor(storage: Storage, storageKey: T) {\n this.storage = storage\n this.storageKey = storageKey\n }\n\n public async getAll(): Promise<StorageKeyReturnType[T]> {\n return (await this.storage.get(this.storageKey)) ?? []\n }\n\n public async getOne(\n predicate: (element: ArrayElem<StorageKeyReturnType[T]>) => boolean\n ): Promise<ArrayElem<StorageKeyReturnType[T]> | undefined> {\n const entities = await this.storage.get(this.storageKey)\n\n return fixArrayType(entities).find(predicate)\n }\n\n public async addOne(\n element: ArrayElem<StorageKeyReturnType[T]>,\n predicate: (element: ArrayElem<StorageKeyReturnType[T]>) => boolean,\n overwrite: boolean = true\n ): Promise<void> {\n const entities = await this.storage.get(this.storageKey)\n\n if (!fixArrayType(entities).some(predicate)) {\n fixArrayType(entities).push(element)\n } else if (overwrite) {\n for (let i = 0; i < entities.length; i++) {\n if (predicate(fixArrayType(entities)[i])) {\n entities[i] = element\n }\n }\n }\n\n return this.storage.set(this.storageKey, entities)\n }\n\n /**\n * Insert or update many elements in a single read-modify-write cycle.\n *\n * Equivalent to calling {@link addOne} for each element, but reads and writes\n * storage once instead of once per element. Elements are reconciled against\n * the store AND against earlier elements in the same batch (so a duplicate\n * within `elements` collapses to one), using `match(stored, incoming)` to\n * decide identity. Used for the v4 multi-network fanout, which persists one\n * account per requested network from a single permission response.\n */\n public async addMany(\n elements: ArrayElem<StorageKeyReturnType[T]>[],\n match: (\n stored: ArrayElem<StorageKeyReturnType[T]>,\n incoming: ArrayElem<StorageKeyReturnType[T]>\n ) => boolean,\n overwrite: boolean = true\n ): Promise<void> {\n if (elements.length === 0) {\n return\n }\n\n const entities = await this.storage.get(this.storageKey)\n\n for (const element of elements) {\n const index = fixArrayType(entities).findIndex((existing) => match(existing, element))\n if (index === -1) {\n fixArrayType(entities).push(element)\n } else if (overwrite) {\n entities[index] = element\n }\n }\n\n return this.storage.set(this.storageKey, entities)\n }\n\n public async remove(\n predicate: (element: ArrayElem<StorageKeyReturnType[T]>) => boolean\n ): Promise<void> {\n const entities = await this.storage.get(this.storageKey)\n\n const filteredEntities = fixArrayType(entities).filter((entity) => !predicate(entity))\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.storage.set(this.storageKey, filteredEntities as any)\n }\n\n public async removeAll(): Promise<void> {\n return this.storage.delete(this.storageKey)\n }\n}\n"]}
@@ -1,6 +1,13 @@
1
1
  /**
2
- * A helper function to make sure if/elses and switch/cases are exhaustive
2
+ * Exhaustiveness guard for if/else chains and switch/cases.
3
3
  *
4
- * @param empty The data that has to be empty
4
+ * Compile time: passing anything but `never` is a type error, so adding a new
5
+ * union member without handling it fails to build. Runtime: an untrusted value
6
+ * (e.g. an unknown message or error type from the wire) can still reach the
7
+ * default branch, so throw an actionable error naming that value instead of
8
+ * silently returning — callers previously received `undefined` and failed
9
+ * later with no context.
10
+ *
11
+ * @param empty The value that should be unreachable
5
12
  */
6
13
  export declare function assertNever(empty: never): never;