@ocap/indexdb 1.30.16 → 1.30.18

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;
@@ -123,43 +128,52 @@ const formatSearchDescription = (type, row) => {
123
128
  const sender = getString(row, "sender");
124
129
  const receiver = getString(row, "receiver");
125
130
  const validity = typeof row.valid === "boolean" ? row.valid ? "Valid" : "Invalid" : typeof row.valid === "number" ? row.valid ? "Valid" : "Invalid" : "";
126
- const height = getString(row, "height");
127
- return compactParts([
128
- sender && receiver ? `${sender} -> ${receiver}` : "",
129
- validity,
130
- height ? `Height ${height}` : ""
131
- ]);
131
+ return compactParts([sender && receiver ? `${truncateAddress(sender)} → ${truncateAddress(receiver)}` : "", validity]);
132
132
  }
133
133
  case "rollupBlock": {
134
134
  const txs = getArray(row, "txs");
135
+ const rollup = getString(row, "rollup");
136
+ const proposer = getString(row, "proposer");
135
137
  return compactParts([
136
- getString(row, "rollup"),
137
- getString(row, "proposer"),
138
+ rollup ? truncateAddress(rollup) : "",
139
+ proposer ? truncateAddress(proposer) : "",
138
140
  txs.length ? `${txs.length} txs` : ""
139
141
  ]);
140
142
  }
141
143
  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);
144
+ const migratedTo = getString(row, "migratedTo");
145
+ const nonZeroTokens = parseArray(row.tokens).filter((t) => t && typeof t.balance === "string" && t.balance.length > 0 && t.balance !== "0");
146
+ const balances = nonZeroTokens.slice(0, 2).map((t) => formatBNAmount(t.balance, t.decimal, t.symbol)).filter(Boolean);
147
+ const moreTokens = nonZeroTokens.length - balances.length;
148
+ return compactParts([
149
+ migratedTo ? `Migrated → ${truncateAddress(migratedTo)}` : "",
150
+ balances.length ? `Balance ${balances.join(", ")}` : "",
151
+ moreTokens > 0 ? `+${moreTokens} more` : ""
152
+ ]);
153
+ }
154
+ case "asset": {
155
+ const owner = getString(row, "owner");
156
+ const parent = getString(row, "parent");
157
+ const consumedTime = getString(row, "consumedTime");
145
158
  return compactParts([
146
- numTxs !== null ? `${numTxs} txs` : "",
147
- numAssets !== null ? `${numAssets} assets` : "",
148
- balances.length ? `Balance ${balances.join(", ")}` : ""
159
+ owner ? `Owner ${truncateAddress(owner)}` : "",
160
+ parent ? `Factory ${truncateAddress(parent)}` : "",
161
+ consumedTime ? `Consumed ${consumedTime.slice(0, 10)}` : ""
149
162
  ]);
150
163
  }
151
- case "asset": return compactParts([getString(row, "owner") ? `Owner ${getString(row, "owner")}` : "", getString(row, "parent") ? `Factory ${getString(row, "parent")}` : ""]);
152
164
  case "token": {
153
165
  const totalSupply = getString(row, "totalSupply");
154
166
  const decimal = getNumber(row, "decimal");
155
167
  const symbol = getString(row, "symbol");
156
- return compactParts([totalSupply ? `Supply ${formatBNAmount(totalSupply, decimal ?? void 0, symbol)}` : "", getString(row, "issuer") ? `Issuer ${getString(row, "issuer")}` : ""]);
168
+ const issuer = getString(row, "issuer");
169
+ return compactParts([totalSupply ? `Supply ${formatBNAmount(totalSupply, decimal ?? void 0, symbol)}` : "", issuer ? `Issuer ${truncateAddress(issuer)}` : ""]);
157
170
  }
158
171
  case "factory": {
172
+ const owner = getString(row, "owner");
159
173
  const minted = getNumber(row, "numMinted");
160
174
  const limit = getNumber(row, "limit", "limit_");
161
175
  return compactParts([
162
- getString(row, "owner") ? `Owner ${getString(row, "owner")}` : "",
176
+ owner ? `Owner ${truncateAddress(owner)}` : "",
163
177
  minted !== null ? `${minted} minted` : "",
164
178
  limit !== null ? `Limit ${limit}` : ""
165
179
  ]);
@@ -179,19 +193,38 @@ const formatSearchDescription = (type, row) => {
179
193
  const sender = getString(row, "sender");
180
194
  const receiver = getString(row, "receiver");
181
195
  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]);
196
+ const nonZero = parseArray(row.tokens).filter((t) => t && typeof t.balance === "string" && t.balance.length > 0 && t.balance !== "0");
197
+ const stakedBalances = nonZero.slice(0, 2).map((t) => formatBNAmount(t.balance, t.decimal, t.symbol)).filter(Boolean);
198
+ const moreStaked = nonZero.length - stakedBalances.length;
199
+ return compactParts([
200
+ sender && receiver ? `${truncateAddress(sender)} → ${truncateAddress(receiver)}` : "",
201
+ stakedBalances.length ? `Staked ${stakedBalances.join(", ")}` : "",
202
+ moreStaked > 0 ? `+${moreStaked} more` : "",
203
+ revocable
204
+ ]);
183
205
  }
184
206
  case "delegation": {
185
207
  const from = getString(row, "from", "from_");
186
208
  const to = getString(row, "to", "to_");
187
- return compactParts([from && to ? `${from} -> ${to}` : "", getString(row, "validUntil") ? `Valid until ${getString(row, "validUntil")}` : ""]);
209
+ const validUntil = getNumber(row, "validUntil");
210
+ let validityText = "";
211
+ if (validUntil !== null) if (validUntil === 0) validityText = "Never expires";
212
+ else {
213
+ const ms = validUntil * 1e3;
214
+ const d = new Date(ms);
215
+ if (Number.isFinite(d.getTime())) validityText = `Valid until ${d.toISOString().slice(0, 10)}`;
216
+ }
217
+ return compactParts([from && to ? `${truncateAddress(from)} → ${truncateAddress(to)}` : "", validityText]);
188
218
  }
189
219
  case "rollup": {
190
220
  const tokenInfo = parseObject(row.tokenInfo) ?? {};
221
+ const tokenAddress = getString(row, "tokenAddress");
191
222
  const deposit = getString(row, "totalDepositAmount");
192
223
  const withdraw = getString(row, "totalWithdrawAmount");
224
+ const paused = row.paused === true || row.paused === 1;
193
225
  return compactParts([
194
- getString(row, "tokenAddress") ? `Token ${getString(row, "tokenAddress")}` : "",
226
+ row.closed === true || row.closed === 1 ? "Closed" : paused ? "Paused" : "",
227
+ tokenInfo.symbol ? `Token ${tokenInfo.symbol}` : tokenAddress ? `Token ${truncateAddress(tokenAddress)}` : "",
195
228
  deposit ? `Deposits ${formatBNAmount(deposit, tokenInfo.decimal, tokenInfo.symbol)}` : "",
196
229
  withdraw ? `Withdrawals ${formatBNAmount(withdraw, tokenInfo.decimal, tokenInfo.symbol)}` : ""
197
230
  ]);
@@ -218,6 +251,9 @@ const formatSearchTags = (type, row) => {
218
251
  const status = getString(row, "status");
219
252
  if (status) tags.add(status);
220
253
  }
254
+ if (type === "rollupBlock") {
255
+ if (row.governance === true || row.governance === 1) tags.add("Governance");
256
+ }
221
257
  return Array.from(tags);
222
258
  };
223
259
  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;
@@ -124,43 +129,52 @@ const formatSearchDescription = (type, row) => {
124
129
  const sender = getString(row, "sender");
125
130
  const receiver = getString(row, "receiver");
126
131
  const validity = typeof row.valid === "boolean" ? row.valid ? "Valid" : "Invalid" : typeof row.valid === "number" ? row.valid ? "Valid" : "Invalid" : "";
127
- const height = getString(row, "height");
128
- return compactParts([
129
- sender && receiver ? `${sender} -> ${receiver}` : "",
130
- validity,
131
- height ? `Height ${height}` : ""
132
- ]);
132
+ return compactParts([sender && receiver ? `${truncateAddress(sender)} → ${truncateAddress(receiver)}` : "", validity]);
133
133
  }
134
134
  case "rollupBlock": {
135
135
  const txs = getArray(row, "txs");
136
+ const rollup = getString(row, "rollup");
137
+ const proposer = getString(row, "proposer");
136
138
  return compactParts([
137
- getString(row, "rollup"),
138
- getString(row, "proposer"),
139
+ rollup ? truncateAddress(rollup) : "",
140
+ proposer ? truncateAddress(proposer) : "",
139
141
  txs.length ? `${txs.length} txs` : ""
140
142
  ]);
141
143
  }
142
144
  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);
145
+ const migratedTo = getString(row, "migratedTo");
146
+ const nonZeroTokens = parseArray(row.tokens).filter((t) => t && typeof t.balance === "string" && t.balance.length > 0 && t.balance !== "0");
147
+ const balances = nonZeroTokens.slice(0, 2).map((t) => formatBNAmount(t.balance, t.decimal, t.symbol)).filter(Boolean);
148
+ const moreTokens = nonZeroTokens.length - balances.length;
149
+ return compactParts([
150
+ migratedTo ? `Migrated → ${truncateAddress(migratedTo)}` : "",
151
+ balances.length ? `Balance ${balances.join(", ")}` : "",
152
+ moreTokens > 0 ? `+${moreTokens} more` : ""
153
+ ]);
154
+ }
155
+ case "asset": {
156
+ const owner = getString(row, "owner");
157
+ const parent = getString(row, "parent");
158
+ const consumedTime = getString(row, "consumedTime");
146
159
  return compactParts([
147
- numTxs !== null ? `${numTxs} txs` : "",
148
- numAssets !== null ? `${numAssets} assets` : "",
149
- balances.length ? `Balance ${balances.join(", ")}` : ""
160
+ owner ? `Owner ${truncateAddress(owner)}` : "",
161
+ parent ? `Factory ${truncateAddress(parent)}` : "",
162
+ consumedTime ? `Consumed ${consumedTime.slice(0, 10)}` : ""
150
163
  ]);
151
164
  }
152
- case "asset": return compactParts([getString(row, "owner") ? `Owner ${getString(row, "owner")}` : "", getString(row, "parent") ? `Factory ${getString(row, "parent")}` : ""]);
153
165
  case "token": {
154
166
  const totalSupply = getString(row, "totalSupply");
155
167
  const decimal = getNumber(row, "decimal");
156
168
  const symbol = getString(row, "symbol");
157
- return compactParts([totalSupply ? `Supply ${formatBNAmount(totalSupply, decimal ?? void 0, symbol)}` : "", getString(row, "issuer") ? `Issuer ${getString(row, "issuer")}` : ""]);
169
+ const issuer = getString(row, "issuer");
170
+ return compactParts([totalSupply ? `Supply ${formatBNAmount(totalSupply, decimal ?? void 0, symbol)}` : "", issuer ? `Issuer ${truncateAddress(issuer)}` : ""]);
158
171
  }
159
172
  case "factory": {
173
+ const owner = getString(row, "owner");
160
174
  const minted = getNumber(row, "numMinted");
161
175
  const limit = getNumber(row, "limit", "limit_");
162
176
  return compactParts([
163
- getString(row, "owner") ? `Owner ${getString(row, "owner")}` : "",
177
+ owner ? `Owner ${truncateAddress(owner)}` : "",
164
178
  minted !== null ? `${minted} minted` : "",
165
179
  limit !== null ? `Limit ${limit}` : ""
166
180
  ]);
@@ -180,19 +194,38 @@ const formatSearchDescription = (type, row) => {
180
194
  const sender = getString(row, "sender");
181
195
  const receiver = getString(row, "receiver");
182
196
  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]);
197
+ const nonZero = parseArray(row.tokens).filter((t) => t && typeof t.balance === "string" && t.balance.length > 0 && t.balance !== "0");
198
+ const stakedBalances = nonZero.slice(0, 2).map((t) => formatBNAmount(t.balance, t.decimal, t.symbol)).filter(Boolean);
199
+ const moreStaked = nonZero.length - stakedBalances.length;
200
+ return compactParts([
201
+ sender && receiver ? `${truncateAddress(sender)} → ${truncateAddress(receiver)}` : "",
202
+ stakedBalances.length ? `Staked ${stakedBalances.join(", ")}` : "",
203
+ moreStaked > 0 ? `+${moreStaked} more` : "",
204
+ revocable
205
+ ]);
184
206
  }
185
207
  case "delegation": {
186
208
  const from = getString(row, "from", "from_");
187
209
  const to = getString(row, "to", "to_");
188
- return compactParts([from && to ? `${from} -> ${to}` : "", getString(row, "validUntil") ? `Valid until ${getString(row, "validUntil")}` : ""]);
210
+ const validUntil = getNumber(row, "validUntil");
211
+ let validityText = "";
212
+ if (validUntil !== null) if (validUntil === 0) validityText = "Never expires";
213
+ else {
214
+ const ms = validUntil * 1e3;
215
+ const d = new Date(ms);
216
+ if (Number.isFinite(d.getTime())) validityText = `Valid until ${d.toISOString().slice(0, 10)}`;
217
+ }
218
+ return compactParts([from && to ? `${truncateAddress(from)} → ${truncateAddress(to)}` : "", validityText]);
189
219
  }
190
220
  case "rollup": {
191
221
  const tokenInfo = parseObject(row.tokenInfo) ?? {};
222
+ const tokenAddress = getString(row, "tokenAddress");
192
223
  const deposit = getString(row, "totalDepositAmount");
193
224
  const withdraw = getString(row, "totalWithdrawAmount");
225
+ const paused = row.paused === true || row.paused === 1;
194
226
  return compactParts([
195
- getString(row, "tokenAddress") ? `Token ${getString(row, "tokenAddress")}` : "",
227
+ row.closed === true || row.closed === 1 ? "Closed" : paused ? "Paused" : "",
228
+ tokenInfo.symbol ? `Token ${tokenInfo.symbol}` : tokenAddress ? `Token ${truncateAddress(tokenAddress)}` : "",
196
229
  deposit ? `Deposits ${formatBNAmount(deposit, tokenInfo.decimal, tokenInfo.symbol)}` : "",
197
230
  withdraw ? `Withdrawals ${formatBNAmount(withdraw, tokenInfo.decimal, tokenInfo.symbol)}` : ""
198
231
  ]);
@@ -219,6 +252,9 @@ const formatSearchTags = (type, row) => {
219
252
  const status = getString(row, "status");
220
253
  if (status) tags.add(status);
221
254
  }
255
+ if (type === "rollupBlock") {
256
+ if (row.governance === true || row.governance === 1) tags.add("Governance");
257
+ }
222
258
  return Array.from(tags);
223
259
  };
224
260
  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.16",
6
+ "version": "1.30.18",
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.16",
56
- "@ocap/types": "1.30.16",
57
- "@ocap/util": "1.30.16",
55
+ "@ocap/state": "1.30.18",
56
+ "@ocap/types": "1.30.18",
57
+ "@ocap/util": "1.30.18",
58
58
  "kareem": "^2.4.1",
59
59
  "lodash": "^4.17.23"
60
60
  }