@ocap/indexdb 1.30.15 → 1.30.17

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.
@@ -21,6 +21,11 @@ const parseArray = (value) => {
21
21
  }
22
22
  return [];
23
23
  };
24
+ const truncateAddress = (addr, prefix = 6, suffix = 4) => {
25
+ if (!addr) return "";
26
+ if (addr.length <= prefix + suffix + 3) return addr;
27
+ return `${addr.slice(0, prefix)}...${addr.slice(-suffix)}`;
28
+ };
24
29
  const formatBNAmount = (value, decimal, symbol) => {
25
30
  if (!value) return "";
26
31
  let display = value;
@@ -125,41 +130,55 @@ const formatSearchDescription = (type, row) => {
125
130
  const validity = typeof row.valid === "boolean" ? row.valid ? "Valid" : "Invalid" : typeof row.valid === "number" ? row.valid ? "Valid" : "Invalid" : "";
126
131
  const height = getString(row, "height");
127
132
  return compactParts([
128
- sender && receiver ? `${sender} -> ${receiver}` : "",
133
+ sender && receiver ? `${truncateAddress(sender)} ${truncateAddress(receiver)}` : "",
129
134
  validity,
130
135
  height ? `Height ${height}` : ""
131
136
  ]);
132
137
  }
133
138
  case "rollupBlock": {
134
139
  const txs = getArray(row, "txs");
140
+ const rollup = getString(row, "rollup");
141
+ const proposer = getString(row, "proposer");
135
142
  return compactParts([
136
- getString(row, "rollup"),
137
- getString(row, "proposer"),
143
+ rollup ? truncateAddress(rollup) : "",
144
+ proposer ? truncateAddress(proposer) : "",
138
145
  txs.length ? `${txs.length} txs` : ""
139
146
  ]);
140
147
  }
141
148
  case "account": {
142
- const numTxs = getNumber(row, "numTxs");
143
- const numAssets = getNumber(row, "numAssets");
144
- const balances = parseArray(row.tokens).filter((t) => t && typeof t.balance === "string" && t.balance.length > 0 && t.balance !== "0").slice(0, 2).map((t) => formatBNAmount(t.balance, t.decimal, t.symbol)).filter(Boolean);
149
+ const migratedTo = getString(row, "migratedTo");
150
+ const nonZeroTokens = parseArray(row.tokens).filter((t) => t && typeof t.balance === "string" && t.balance.length > 0 && t.balance !== "0");
151
+ const balances = nonZeroTokens.slice(0, 2).map((t) => formatBNAmount(t.balance, t.decimal, t.symbol)).filter(Boolean);
152
+ const moreTokens = nonZeroTokens.length - balances.length;
153
+ return compactParts([
154
+ migratedTo ? `Migrated → ${truncateAddress(migratedTo)}` : "",
155
+ balances.length ? `Balance ${balances.join(", ")}` : "",
156
+ moreTokens > 0 ? `+${moreTokens} more` : ""
157
+ ]);
158
+ }
159
+ case "asset": {
160
+ const owner = getString(row, "owner");
161
+ const parent = getString(row, "parent");
162
+ const consumedTime = getString(row, "consumedTime");
145
163
  return compactParts([
146
- numTxs !== null ? `${numTxs} txs` : "",
147
- numAssets !== null ? `${numAssets} assets` : "",
148
- balances.length ? `Balance ${balances.join(", ")}` : ""
164
+ owner ? `Owner ${truncateAddress(owner)}` : "",
165
+ parent ? `Factory ${truncateAddress(parent)}` : "",
166
+ consumedTime ? `Consumed ${consumedTime.slice(0, 10)}` : ""
149
167
  ]);
150
168
  }
151
- case "asset": return compactParts([getString(row, "owner") ? `Owner ${getString(row, "owner")}` : "", getString(row, "parent") ? `Factory ${getString(row, "parent")}` : ""]);
152
169
  case "token": {
153
170
  const totalSupply = getString(row, "totalSupply");
154
171
  const decimal = getNumber(row, "decimal");
155
172
  const symbol = getString(row, "symbol");
156
- return compactParts([totalSupply ? `Supply ${formatBNAmount(totalSupply, decimal ?? void 0, symbol)}` : "", getString(row, "issuer") ? `Issuer ${getString(row, "issuer")}` : ""]);
173
+ const issuer = getString(row, "issuer");
174
+ return compactParts([totalSupply ? `Supply ${formatBNAmount(totalSupply, decimal ?? void 0, symbol)}` : "", issuer ? `Issuer ${truncateAddress(issuer)}` : ""]);
157
175
  }
158
176
  case "factory": {
177
+ const owner = getString(row, "owner");
159
178
  const minted = getNumber(row, "numMinted");
160
179
  const limit = getNumber(row, "limit", "limit_");
161
180
  return compactParts([
162
- getString(row, "owner") ? `Owner ${getString(row, "owner")}` : "",
181
+ owner ? `Owner ${truncateAddress(owner)}` : "",
163
182
  minted !== null ? `${minted} minted` : "",
164
183
  limit !== null ? `Limit ${limit}` : ""
165
184
  ]);
@@ -179,19 +198,38 @@ const formatSearchDescription = (type, row) => {
179
198
  const sender = getString(row, "sender");
180
199
  const receiver = getString(row, "receiver");
181
200
  const revocable = typeof row.revocable === "boolean" ? row.revocable ? "Revocable" : "Irrevocable" : typeof row.revocable === "number" ? row.revocable ? "Revocable" : "Irrevocable" : "";
182
- return compactParts([sender && receiver ? `${sender} -> ${receiver}` : "", revocable]);
201
+ const nonZero = parseArray(row.tokens).filter((t) => t && typeof t.balance === "string" && t.balance.length > 0 && t.balance !== "0");
202
+ const stakedBalances = nonZero.slice(0, 2).map((t) => formatBNAmount(t.balance, t.decimal, t.symbol)).filter(Boolean);
203
+ const moreStaked = nonZero.length - stakedBalances.length;
204
+ return compactParts([
205
+ sender && receiver ? `${truncateAddress(sender)} → ${truncateAddress(receiver)}` : "",
206
+ stakedBalances.length ? `Staked ${stakedBalances.join(", ")}` : "",
207
+ moreStaked > 0 ? `+${moreStaked} more` : "",
208
+ revocable
209
+ ]);
183
210
  }
184
211
  case "delegation": {
185
212
  const from = getString(row, "from", "from_");
186
213
  const to = getString(row, "to", "to_");
187
- return compactParts([from && to ? `${from} -> ${to}` : "", getString(row, "validUntil") ? `Valid until ${getString(row, "validUntil")}` : ""]);
214
+ const validUntil = getNumber(row, "validUntil");
215
+ let validityText = "";
216
+ if (validUntil !== null) if (validUntil === 0) validityText = "Never expires";
217
+ else {
218
+ const ms = validUntil * 1e3;
219
+ const d = new Date(ms);
220
+ if (Number.isFinite(d.getTime())) validityText = `Valid until ${d.toISOString().slice(0, 10)}`;
221
+ }
222
+ return compactParts([from && to ? `${truncateAddress(from)} → ${truncateAddress(to)}` : "", validityText]);
188
223
  }
189
224
  case "rollup": {
190
225
  const tokenInfo = parseObject(row.tokenInfo) ?? {};
226
+ const tokenAddress = getString(row, "tokenAddress");
191
227
  const deposit = getString(row, "totalDepositAmount");
192
228
  const withdraw = getString(row, "totalWithdrawAmount");
229
+ const paused = row.paused === true || row.paused === 1;
193
230
  return compactParts([
194
- getString(row, "tokenAddress") ? `Token ${getString(row, "tokenAddress")}` : "",
231
+ row.closed === true || row.closed === 1 ? "Closed" : paused ? "Paused" : "",
232
+ tokenInfo.symbol ? `Token ${tokenInfo.symbol}` : tokenAddress ? `Token ${truncateAddress(tokenAddress)}` : "",
195
233
  deposit ? `Deposits ${formatBNAmount(deposit, tokenInfo.decimal, tokenInfo.symbol)}` : "",
196
234
  withdraw ? `Withdrawals ${formatBNAmount(withdraw, tokenInfo.decimal, tokenInfo.symbol)}` : ""
197
235
  ]);
@@ -218,6 +256,9 @@ const formatSearchTags = (type, row) => {
218
256
  const status = getString(row, "status");
219
257
  if (status) tags.add(status);
220
258
  }
259
+ if (type === "rollupBlock") {
260
+ if (row.governance === true || row.governance === 1) tags.add("Governance");
261
+ }
221
262
  return Array.from(tags);
222
263
  };
223
264
  const formatSearchTimestamp = (type, row) => {
@@ -22,6 +22,11 @@ const parseArray = (value) => {
22
22
  }
23
23
  return [];
24
24
  };
25
+ const truncateAddress = (addr, prefix = 6, suffix = 4) => {
26
+ if (!addr) return "";
27
+ if (addr.length <= prefix + suffix + 3) return addr;
28
+ return `${addr.slice(0, prefix)}...${addr.slice(-suffix)}`;
29
+ };
25
30
  const formatBNAmount = (value, decimal, symbol) => {
26
31
  if (!value) return "";
27
32
  let display = value;
@@ -126,41 +131,55 @@ const formatSearchDescription = (type, row) => {
126
131
  const validity = typeof row.valid === "boolean" ? row.valid ? "Valid" : "Invalid" : typeof row.valid === "number" ? row.valid ? "Valid" : "Invalid" : "";
127
132
  const height = getString(row, "height");
128
133
  return compactParts([
129
- sender && receiver ? `${sender} -> ${receiver}` : "",
134
+ sender && receiver ? `${truncateAddress(sender)} ${truncateAddress(receiver)}` : "",
130
135
  validity,
131
136
  height ? `Height ${height}` : ""
132
137
  ]);
133
138
  }
134
139
  case "rollupBlock": {
135
140
  const txs = getArray(row, "txs");
141
+ const rollup = getString(row, "rollup");
142
+ const proposer = getString(row, "proposer");
136
143
  return compactParts([
137
- getString(row, "rollup"),
138
- getString(row, "proposer"),
144
+ rollup ? truncateAddress(rollup) : "",
145
+ proposer ? truncateAddress(proposer) : "",
139
146
  txs.length ? `${txs.length} txs` : ""
140
147
  ]);
141
148
  }
142
149
  case "account": {
143
- const numTxs = getNumber(row, "numTxs");
144
- const numAssets = getNumber(row, "numAssets");
145
- const balances = parseArray(row.tokens).filter((t) => t && typeof t.balance === "string" && t.balance.length > 0 && t.balance !== "0").slice(0, 2).map((t) => formatBNAmount(t.balance, t.decimal, t.symbol)).filter(Boolean);
150
+ const migratedTo = getString(row, "migratedTo");
151
+ const nonZeroTokens = parseArray(row.tokens).filter((t) => t && typeof t.balance === "string" && t.balance.length > 0 && t.balance !== "0");
152
+ const balances = nonZeroTokens.slice(0, 2).map((t) => formatBNAmount(t.balance, t.decimal, t.symbol)).filter(Boolean);
153
+ const moreTokens = nonZeroTokens.length - balances.length;
154
+ return compactParts([
155
+ migratedTo ? `Migrated → ${truncateAddress(migratedTo)}` : "",
156
+ balances.length ? `Balance ${balances.join(", ")}` : "",
157
+ moreTokens > 0 ? `+${moreTokens} more` : ""
158
+ ]);
159
+ }
160
+ case "asset": {
161
+ const owner = getString(row, "owner");
162
+ const parent = getString(row, "parent");
163
+ const consumedTime = getString(row, "consumedTime");
146
164
  return compactParts([
147
- numTxs !== null ? `${numTxs} txs` : "",
148
- numAssets !== null ? `${numAssets} assets` : "",
149
- balances.length ? `Balance ${balances.join(", ")}` : ""
165
+ owner ? `Owner ${truncateAddress(owner)}` : "",
166
+ parent ? `Factory ${truncateAddress(parent)}` : "",
167
+ consumedTime ? `Consumed ${consumedTime.slice(0, 10)}` : ""
150
168
  ]);
151
169
  }
152
- case "asset": return compactParts([getString(row, "owner") ? `Owner ${getString(row, "owner")}` : "", getString(row, "parent") ? `Factory ${getString(row, "parent")}` : ""]);
153
170
  case "token": {
154
171
  const totalSupply = getString(row, "totalSupply");
155
172
  const decimal = getNumber(row, "decimal");
156
173
  const symbol = getString(row, "symbol");
157
- return compactParts([totalSupply ? `Supply ${formatBNAmount(totalSupply, decimal ?? void 0, symbol)}` : "", getString(row, "issuer") ? `Issuer ${getString(row, "issuer")}` : ""]);
174
+ const issuer = getString(row, "issuer");
175
+ return compactParts([totalSupply ? `Supply ${formatBNAmount(totalSupply, decimal ?? void 0, symbol)}` : "", issuer ? `Issuer ${truncateAddress(issuer)}` : ""]);
158
176
  }
159
177
  case "factory": {
178
+ const owner = getString(row, "owner");
160
179
  const minted = getNumber(row, "numMinted");
161
180
  const limit = getNumber(row, "limit", "limit_");
162
181
  return compactParts([
163
- getString(row, "owner") ? `Owner ${getString(row, "owner")}` : "",
182
+ owner ? `Owner ${truncateAddress(owner)}` : "",
164
183
  minted !== null ? `${minted} minted` : "",
165
184
  limit !== null ? `Limit ${limit}` : ""
166
185
  ]);
@@ -180,19 +199,38 @@ const formatSearchDescription = (type, row) => {
180
199
  const sender = getString(row, "sender");
181
200
  const receiver = getString(row, "receiver");
182
201
  const revocable = typeof row.revocable === "boolean" ? row.revocable ? "Revocable" : "Irrevocable" : typeof row.revocable === "number" ? row.revocable ? "Revocable" : "Irrevocable" : "";
183
- return compactParts([sender && receiver ? `${sender} -> ${receiver}` : "", revocable]);
202
+ const nonZero = parseArray(row.tokens).filter((t) => t && typeof t.balance === "string" && t.balance.length > 0 && t.balance !== "0");
203
+ const stakedBalances = nonZero.slice(0, 2).map((t) => formatBNAmount(t.balance, t.decimal, t.symbol)).filter(Boolean);
204
+ const moreStaked = nonZero.length - stakedBalances.length;
205
+ return compactParts([
206
+ sender && receiver ? `${truncateAddress(sender)} → ${truncateAddress(receiver)}` : "",
207
+ stakedBalances.length ? `Staked ${stakedBalances.join(", ")}` : "",
208
+ moreStaked > 0 ? `+${moreStaked} more` : "",
209
+ revocable
210
+ ]);
184
211
  }
185
212
  case "delegation": {
186
213
  const from = getString(row, "from", "from_");
187
214
  const to = getString(row, "to", "to_");
188
- return compactParts([from && to ? `${from} -> ${to}` : "", getString(row, "validUntil") ? `Valid until ${getString(row, "validUntil")}` : ""]);
215
+ const validUntil = getNumber(row, "validUntil");
216
+ let validityText = "";
217
+ if (validUntil !== null) if (validUntil === 0) validityText = "Never expires";
218
+ else {
219
+ const ms = validUntil * 1e3;
220
+ const d = new Date(ms);
221
+ if (Number.isFinite(d.getTime())) validityText = `Valid until ${d.toISOString().slice(0, 10)}`;
222
+ }
223
+ return compactParts([from && to ? `${truncateAddress(from)} → ${truncateAddress(to)}` : "", validityText]);
189
224
  }
190
225
  case "rollup": {
191
226
  const tokenInfo = parseObject(row.tokenInfo) ?? {};
227
+ const tokenAddress = getString(row, "tokenAddress");
192
228
  const deposit = getString(row, "totalDepositAmount");
193
229
  const withdraw = getString(row, "totalWithdrawAmount");
230
+ const paused = row.paused === true || row.paused === 1;
194
231
  return compactParts([
195
- getString(row, "tokenAddress") ? `Token ${getString(row, "tokenAddress")}` : "",
232
+ row.closed === true || row.closed === 1 ? "Closed" : paused ? "Paused" : "",
233
+ tokenInfo.symbol ? `Token ${tokenInfo.symbol}` : tokenAddress ? `Token ${truncateAddress(tokenAddress)}` : "",
196
234
  deposit ? `Deposits ${formatBNAmount(deposit, tokenInfo.decimal, tokenInfo.symbol)}` : "",
197
235
  withdraw ? `Withdrawals ${formatBNAmount(withdraw, tokenInfo.decimal, tokenInfo.symbol)}` : ""
198
236
  ]);
@@ -219,6 +257,9 @@ const formatSearchTags = (type, row) => {
219
257
  const status = getString(row, "status");
220
258
  if (status) tags.add(status);
221
259
  }
260
+ if (type === "rollupBlock") {
261
+ if (row.governance === true || row.governance === 1) tags.add("Governance");
262
+ }
222
263
  return Array.from(tags);
223
264
  };
224
265
  const formatSearchTimestamp = (type, row) => {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.30.15",
6
+ "version": "1.30.17",
7
7
  "type": "module",
8
8
  "description": "Defines the basic interface for OCAP IndexDB",
9
9
  "main": "./lib/main.cjs",
@@ -52,9 +52,9 @@
52
52
  "tsdown": "^0.18.4"
53
53
  },
54
54
  "dependencies": {
55
- "@ocap/state": "1.30.15",
56
- "@ocap/types": "1.30.15",
57
- "@ocap/util": "1.30.15",
55
+ "@ocap/state": "1.30.17",
56
+ "@ocap/types": "1.30.17",
57
+ "@ocap/util": "1.30.17",
58
58
  "kareem": "^2.4.1",
59
59
  "lodash": "^4.17.23"
60
60
  }