@opendatalabs/personal-server-ts-server 1.1.0 → 1.1.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.
@@ -125492,9 +125492,7 @@ async function uploadOne(deps, entry) {
125492
125492
  if (!isStaleVersionConflict(err2))
125493
125493
  throw err2;
125494
125494
  const record2 = await gateway.getDataPoint(computeDataPointId(serverOwner, entry.scope));
125495
- if (!record2)
125496
- throw err2;
125497
- if (record2.dataHash.toLowerCase() === dataHash.toLowerCase()) {
125495
+ if (record2 && record2.dataHash.toLowerCase() === dataHash.toLowerCase()) {
125498
125496
  dataPointId = record2.id;
125499
125497
  const adoptedVersion = Number(record2.expectedVersion);
125500
125498
  if (adoptedVersion !== entry.version) {
@@ -125507,7 +125505,12 @@ async function uploadOne(deps, entry) {
125507
125505
  await storage.updateEntryVersion(entry.path, adoptedVersion);
125508
125506
  }
125509
125507
  } else {
125510
- const rebased = BigInt(record2.expectedVersion) + 1n;
125508
+ const recordNext = record2 ? Number(record2.expectedVersion) + 1 : 0;
125509
+ const errorNext = parseGatewayNextVersion(err2.message) ?? 0;
125510
+ const target = Math.max(recordNext, errorNext);
125511
+ if (target <= 0)
125512
+ throw err2;
125513
+ const rebased = BigInt(target);
125511
125514
  url2 = await storageAdapter.upload(`${entry.scope}/${rebased}`, encrypted);
125512
125515
  dataPointId = await registerAt(rebased);
125513
125516
  await storage.updateEntryVersion(entry.path, Number(rebased));
@@ -125546,6 +125549,18 @@ function uint8ToHex(bytes2) {
125546
125549
  function isStaleVersionConflict(err2) {
125547
125550
  return err2 instanceof Error && /Gateway error: 409\b/.test(err2.message);
125548
125551
  }
125552
+ function parseGatewayNextVersion(message) {
125553
+ const nextValid = message.match(/next valid version is (\d+)/i);
125554
+ if (nextValid)
125555
+ return Number(nextValid[1]);
125556
+ const effectiveMax = message.match(/effective max \((\d+)/i);
125557
+ if (effectiveMax)
125558
+ return Number(effectiveMax[1]) + 1;
125559
+ const storedValue = message.match(/strictly greater than the stored value (\d+)/i);
125560
+ if (storedValue)
125561
+ return Number(storedValue[1]) + 1;
125562
+ return null;
125563
+ }
125549
125564
  function computeDataPointId(ownerAddress, scope) {
125550
125565
  return keccak256(encodeAbiParameters([
125551
125566
  { name: "ownerAddress", type: "address" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendatalabs/personal-server-ts-server",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "Hono HTTP server for the Vana Personal Server — routes, middleware, composition root",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -44,8 +44,8 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "@hono/node-server": "^1.19.13",
47
- "@opendatalabs/personal-server-ts-core": "1.1.0",
48
- "@opendatalabs/personal-server-ts-lite": "1.1.0",
47
+ "@opendatalabs/personal-server-ts-core": "1.1.1",
48
+ "@opendatalabs/personal-server-ts-lite": "1.1.1",
49
49
  "@opendatalabs/vana-sdk": "3.13.0",
50
50
  "better-sqlite3": "^12.11.1",
51
51
  "hono": "^4.12.27",