@opendatalabs/vana-sdk 3.12.0 → 3.13.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.
@@ -29204,6 +29204,21 @@ async function buildWeb3SignedHeader(params) {
29204
29204
  return `Web3Signed ${payloadBase64}.${signature}`;
29205
29205
  }
29206
29206
 
29207
+ // src/protocol/networks.ts
29208
+ var PROTOCOL_NETWORK_CHAIN_IDS = {
29209
+ mainnet: 1480,
29210
+ moksha: 14800
29211
+ };
29212
+ function isProtocolNetwork(value) {
29213
+ return typeof value === "string" && Object.hasOwn(PROTOCOL_NETWORK_CHAIN_IDS, value);
29214
+ }
29215
+ function getProtocolNetworkChainId(network) {
29216
+ if (!isProtocolNetwork(network)) {
29217
+ throw new Error(`Unsupported Vana protocol network: ${String(network)}`);
29218
+ }
29219
+ return PROTOCOL_NETWORK_CHAIN_IDS[network];
29220
+ }
29221
+
29207
29222
  // src/storage/providers/vana-storage.ts
29208
29223
  var DEFAULT_ENDPOINT = "https://storage.vana.org";
29209
29224
  var LEGACY_BLOB_PATH_PREFIX = "/v1/blobs";
@@ -29213,6 +29228,7 @@ var MAX_RATE_LIMIT_DELAY_MS = 3e4;
29213
29228
  var VanaStorage = class {
29214
29229
  endpoint;
29215
29230
  network;
29231
+ chainId;
29216
29232
  blobPathPrefix;
29217
29233
  signer;
29218
29234
  ownerAddress;
@@ -29226,15 +29242,10 @@ var VanaStorage = class {
29226
29242
  );
29227
29243
  }
29228
29244
  this.endpoint = (config.endpoint ?? DEFAULT_ENDPOINT).replace(/\/+$/, "");
29229
- if (config.network !== void 0 && !isProtocolNetwork(config.network)) {
29230
- throw new StorageError(
29231
- `Unsupported vana-storage network '${String(config.network)}'`,
29232
- "INVALID_NETWORK",
29233
- "vana-storage"
29234
- );
29235
- }
29236
- this.network = config.network;
29237
- this.blobPathPrefix = this.network ? `/v1/networks/${this.network}/blobs` : LEGACY_BLOB_PATH_PREFIX;
29245
+ const resolved = resolveStorageNamespace(config);
29246
+ this.network = resolved.network;
29247
+ this.chainId = resolved.chainId;
29248
+ this.blobPathPrefix = this.chainId !== void 0 ? `/v1/chains/${this.chainId}/blobs` : LEGACY_BLOB_PATH_PREFIX;
29238
29249
  this.signer = config.signer;
29239
29250
  this.ownerAddress = (config.ownerAddress ?? config.signer.address).toLowerCase();
29240
29251
  this.fetchImpl = config.fetchImpl ?? globalThis.fetch.bind(globalThis);
@@ -29431,20 +29442,52 @@ var VanaStorage = class {
29431
29442
  "vana-storage"
29432
29443
  );
29433
29444
  }
29434
- const crossNetwork = this.network ? route.network !== void 0 && route.network !== this.network : route.network !== void 0;
29435
- if (crossNetwork) {
29445
+ if (route.chainId !== this.chainId) {
29436
29446
  throw new StorageError(
29437
- `URL network '${route.network ?? "legacy"}' does not match provider network '${this.network ?? "legacy"}'`,
29447
+ `URL chainId '${route.chainId ?? "legacy"}' does not match provider namespace '${this.namespaceDescription()}'`,
29438
29448
  "INVALID_URL",
29439
29449
  "vana-storage"
29440
29450
  );
29441
29451
  }
29442
29452
  return parsed.pathname;
29443
29453
  }
29454
+ namespaceDescription() {
29455
+ if (this.network !== void 0) {
29456
+ return `${this.network} (${this.chainId})`;
29457
+ }
29458
+ return this.chainId === void 0 ? "legacy" : String(this.chainId);
29459
+ }
29444
29460
  };
29445
- var PROTOCOL_NETWORKS = ["mainnet", "moksha"];
29446
- function isProtocolNetwork(value) {
29447
- return typeof value === "string" && PROTOCOL_NETWORKS.includes(value);
29461
+ function isValidChainId(value) {
29462
+ return typeof value === "number" && Number.isInteger(value) && value > 0;
29463
+ }
29464
+ function resolveStorageNamespace(config) {
29465
+ if (config.network !== void 0 && !isProtocolNetwork(config.network)) {
29466
+ throw new StorageError(
29467
+ `Unsupported vana-storage network '${String(config.network)}'`,
29468
+ "INVALID_NETWORK",
29469
+ "vana-storage"
29470
+ );
29471
+ }
29472
+ if (config.chainId !== void 0 && !isValidChainId(config.chainId)) {
29473
+ throw new StorageError(
29474
+ `Unsupported vana-storage chainId '${String(config.chainId)}'`,
29475
+ "INVALID_CHAIN_ID",
29476
+ "vana-storage"
29477
+ );
29478
+ }
29479
+ if (config.network === void 0) {
29480
+ return { chainId: config.chainId };
29481
+ }
29482
+ const networkChainId = getProtocolNetworkChainId(config.network);
29483
+ if (config.chainId !== void 0 && config.chainId !== networkChainId) {
29484
+ throw new StorageError(
29485
+ `vana-storage network '${config.network}' resolves to chainId '${networkChainId}', not '${config.chainId}'`,
29486
+ "INVALID_CHAIN_ID",
29487
+ "vana-storage"
29488
+ );
29489
+ }
29490
+ return { chainId: networkChainId, network: config.network };
29448
29491
  }
29449
29492
  function parseBlobPath(pathname) {
29450
29493
  const segments = pathname.split("/").filter((s) => s.length > 0);
@@ -29454,11 +29497,13 @@ function parseBlobPath(pathname) {
29454
29497
  if (isTraversal(scope) || isTraversal(collectedAt)) return null;
29455
29498
  return { owner, scope, collectedAt };
29456
29499
  }
29457
- if (segments.length === 7 && segments[0] === "v1" && segments[1] === "networks" && segments[3] === "blobs") {
29458
- const [, , network, , owner, scope, collectedAt] = segments;
29459
- if (!isProtocolNetwork(network)) return null;
29500
+ if (segments.length === 7 && segments[0] === "v1" && segments[1] === "chains" && segments[3] === "blobs") {
29501
+ const [, , chainIdSegment, , owner, scope, collectedAt] = segments;
29502
+ if (!/^[0-9]+$/.test(chainIdSegment)) return null;
29503
+ const chainId = Number(chainIdSegment);
29504
+ if (!isValidChainId(chainId)) return null;
29460
29505
  if (isTraversal(scope) || isTraversal(collectedAt)) return null;
29461
- return { network, owner, scope, collectedAt };
29506
+ return { chainId, owner, scope, collectedAt };
29462
29507
  }
29463
29508
  return null;
29464
29509
  }