@calimero-network/mero-js 23.5.0 → 23.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -3475,6 +3475,7 @@ async function resolveSigner(secret, signer, label2) {
3475
3475
  var DOMAIN = new TextEncoder().encode("calimero.mdma.account-ownership-claim.v1\0");
3476
3476
  var DEFAULT_TTL_MS = 6e4;
3477
3477
  var MAX_TTL_MS = 5 * 6e4;
3478
+ var MAX_RELAY_URL = 1024;
3478
3479
  var ACCOUNT_OWNERSHIP_AUDIENCE = "mdma:enable-ha-namespace";
3479
3480
  var ACCOUNT_HA_AUDIENCE = "mdma:enable-ha-namespace-as-account";
3480
3481
  function base64(bytes) {
@@ -3486,7 +3487,10 @@ var hex32 = (value, what) => {
3486
3487
  if (!/^[0-9a-fA-F]{64}$/.test(value)) throw new Error(`${what} must be 64 hex characters`);
3487
3488
  return value.toLowerCase();
3488
3489
  };
3489
- async function signClaim(input, audience, subject) {
3490
+ async function signClaim(input, audience, subject, relayUrl) {
3491
+ if (relayUrl !== void 0 && !(relayUrl.length > 0 && relayUrl.length <= MAX_RELAY_URL)) {
3492
+ throw new Error(`relayUrl must be a non-empty string of at most ${MAX_RELAY_URL} characters`);
3493
+ }
3490
3494
  const ttl = input.ttlMs ?? DEFAULT_TTL_MS;
3491
3495
  if (!(ttl > 0 && ttl <= MAX_TTL_MS)) throw new Error(`ttlMs must be in (0, ${MAX_TTL_MS}]`);
3492
3496
  const groupId = hex32(input.namespaceId, "namespaceId");
@@ -3505,7 +3509,8 @@ async function signClaim(input, audience, subject) {
3505
3509
  ...subject === void 0 ? {} : { subject },
3506
3510
  nonce: nonce2,
3507
3511
  issued_at_ms: issued,
3508
- expires_at_ms: issued + ttl
3512
+ expires_at_ms: issued + ttl,
3513
+ ...relayUrl === void 0 ? {} : { relay_url: relayUrl }
3509
3514
  })
3510
3515
  );
3511
3516
  const signature = await signer.sign(concat(DOMAIN, payload));
@@ -3516,7 +3521,7 @@ async function signAccountOwnershipClaim(input) {
3516
3521
  return signClaim(input, ACCOUNT_OWNERSHIP_AUDIENCE, input.subject);
3517
3522
  }
3518
3523
  async function signAccountHaClaim(input) {
3519
- return signClaim(input, ACCOUNT_HA_AUDIENCE, void 0);
3524
+ return signClaim(input, ACCOUNT_HA_AUDIENCE, void 0, input.relayUrl);
3520
3525
  }
3521
3526
 
3522
3527
  // src/device-cert/device-cert.ts
@@ -5941,6 +5946,31 @@ var AccountLinkedToSeveralUsersError = class extends AccountHaRefusedError {
5941
5946
  }
5942
5947
  };
5943
5948
  AccountLinkedToSeveralUsersError.CODE = "account_linked_to_several_users";
5949
+ var HaRequestPendingError = class extends AccountHaRefusedError {
5950
+ constructor() {
5951
+ super(...arguments);
5952
+ this.name = "HaRequestPendingError";
5953
+ }
5954
+ };
5955
+ HaRequestPendingError.CODE = "ha_request_pending";
5956
+ var UnknownRelayError = class extends AccountHaRefusedError {
5957
+ constructor() {
5958
+ super(...arguments);
5959
+ this.name = "UnknownRelayError";
5960
+ }
5961
+ };
5962
+ UnknownRelayError.CODE = "unknown_relay";
5963
+ var RelayNotDialableError = class extends AccountHaRefusedError {
5964
+ constructor() {
5965
+ super(...arguments);
5966
+ this.name = "RelayNotDialableError";
5967
+ }
5968
+ };
5969
+ RelayNotDialableError.CODE = "relay_not_dialable";
5970
+ var ACCOUNT_HA_REFUSALS = {
5971
+ 409: [AccountNotLinkedError, AccountLinkedToSeveralUsersError, HaRequestPendingError],
5972
+ 422: [UnknownRelayError, RelayNotDialableError]
5973
+ };
5944
5974
  function conflictCode(bodyText) {
5945
5975
  if (!bodyText) return void 0;
5946
5976
  try {
@@ -6438,7 +6468,8 @@ var CloudClient = class {
6438
6468
  credential: options.credential,
6439
6469
  deviceSecret: options.deviceSecret,
6440
6470
  signer: options.signer,
6441
- ttlMs: options.ttlMs
6471
+ ttlMs: options.ttlMs,
6472
+ relayUrl: options.relayUrl
6442
6473
  });
6443
6474
  const account = options.accountId.toLowerCase();
6444
6475
  const namespace = options.namespaceId.toLowerCase();
@@ -6449,9 +6480,9 @@ var CloudClient = class {
6449
6480
  { body: { ownership_proof: proof }, anonymous: true }
6450
6481
  );
6451
6482
  } catch (err) {
6452
- if (err instanceof HTTPError && err.status === 409) {
6483
+ if (err instanceof HTTPError && ACCOUNT_HA_REFUSALS[err.status]) {
6453
6484
  const code = conflictCode(err.bodyText);
6454
- const Typed = code === AccountNotLinkedError.CODE ? AccountNotLinkedError : code === AccountLinkedToSeveralUsersError.CODE ? AccountLinkedToSeveralUsersError : void 0;
6485
+ const Typed = ACCOUNT_HA_REFUSALS[err.status].find((t) => t.CODE === code);
6455
6486
  if (Typed && code) {
6456
6487
  throw new Typed(code, err.status, err.statusText, err.url, err.headers, err.bodyText);
6457
6488
  }
@@ -11180,6 +11211,7 @@ export {
11180
11211
  EphemeralClient,
11181
11212
  HANDSHAKE_PATH,
11182
11213
  HTTPError,
11214
+ HaRequestPendingError,
11183
11215
  INVITED_ROLE,
11184
11216
  IntentRefusedError,
11185
11217
  LocalStorageTokenStore,
@@ -11192,6 +11224,7 @@ export {
11192
11224
  PRESENCE_DOMAIN,
11193
11225
  REQUEST_PROOF_HEADER,
11194
11226
  RelayClient,
11227
+ RelayNotDialableError,
11195
11228
  RelayObserver,
11196
11229
  RelayPresenceClient,
11197
11230
  RelayTransport,
@@ -11203,6 +11236,7 @@ export {
11203
11236
  SealedTransportError,
11204
11237
  SseClient,
11205
11238
  StaleTransportKeyError,
11239
+ UnknownRelayError,
11206
11240
  WarrantNonceExhaustedError,
11207
11241
  WarrantNonceRouteUnavailableError,
11208
11242
  WebHttpClient,