web3ql-client 1.2.0 → 1.2.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.
|
@@ -152,5 +152,25 @@ export declare class EncryptedTableClient {
|
|
|
152
152
|
listOwnerRecords(addr: string, start?: bigint, limit?: bigint): Promise<string[]>;
|
|
153
153
|
/** Total number of records written by `addr` (including deleted). */
|
|
154
154
|
ownerRecordCount(addr: string): Promise<bigint>;
|
|
155
|
+
/**
|
|
156
|
+
* Add an address to this table's writer allowlist.
|
|
157
|
+
* Only takes effect when restrictedWrites = true.
|
|
158
|
+
* Only the table owner can call this.
|
|
159
|
+
*/
|
|
160
|
+
addTableWriter(writer: string): Promise<ethers.TransactionReceipt>;
|
|
161
|
+
/**
|
|
162
|
+
* Remove an address from this table's writer allowlist.
|
|
163
|
+
*/
|
|
164
|
+
removeTableWriter(writer: string): Promise<ethers.TransactionReceipt>;
|
|
165
|
+
/**
|
|
166
|
+
* Toggle restricted write mode.
|
|
167
|
+
* false (default) — open/public table, anyone can write.
|
|
168
|
+
* true — only allowlisted writers can write.
|
|
169
|
+
*/
|
|
170
|
+
setRestrictedWrites(restricted: boolean): Promise<ethers.TransactionReceipt>;
|
|
171
|
+
/** Check whether an address is in the writer allowlist. */
|
|
172
|
+
isTableWriter(writer: string): Promise<boolean>;
|
|
173
|
+
/** Check whether this table has restricted writes enabled. */
|
|
174
|
+
isRestrictedWrites(): Promise<boolean>;
|
|
155
175
|
}
|
|
156
176
|
//# sourceMappingURL=table-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-client.d.ts","sourceRoot":"","sources":["../../src/table-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAoC,QAAQ,CAAC;AAC9D,OAAO,EACL,iBAAiB,EAQlB,MAAoD,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAc,eAAe,CAAC;AAMrE,oBAAY,IAAI;IACd,MAAM,IAAI;IACV,MAAM,IAAI;CACX;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAG,UAAU,CAAC;IACxB,OAAO,EAAM,OAAO,CAAC;IACrB,OAAO,EAAM,MAAM,CAAC;IACpB,SAAS,EAAI,MAAM,CAAC;IACpB,KAAK,EAAQ,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"table-client.d.ts","sourceRoot":"","sources":["../../src/table-client.ts"],"names":[],"mappings":"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"}
|
package/dist/src/table-client.js
CHANGED
|
@@ -61,6 +61,12 @@ const TABLE_ABI = [
|
|
|
61
61
|
'function getActiveOwnerRecords(address addr, uint256 start, uint256 limit) external view returns (bytes32[] memory)',
|
|
62
62
|
// table metadata
|
|
63
63
|
'function tableName() external view returns (string memory)',
|
|
64
|
+
// table-level write access control
|
|
65
|
+
'function addTableWriter(address writer) external',
|
|
66
|
+
'function removeTableWriter(address writer) external',
|
|
67
|
+
'function setRestrictedWrites(bool restricted) external',
|
|
68
|
+
'function tableWriters(address writer) external view returns (bool)',
|
|
69
|
+
'function restrictedWrites() external view returns (bool)',
|
|
64
70
|
];
|
|
65
71
|
// ─────────────────────────────────────────────────────────────
|
|
66
72
|
// EncryptedTableClient
|
|
@@ -275,6 +281,40 @@ export class EncryptedTableClient {
|
|
|
275
281
|
async ownerRecordCount(addr) {
|
|
276
282
|
return this.c.ownerRecordCount(addr);
|
|
277
283
|
}
|
|
284
|
+
// ── Table-level write access control ───────────────────────
|
|
285
|
+
/**
|
|
286
|
+
* Add an address to this table's writer allowlist.
|
|
287
|
+
* Only takes effect when restrictedWrites = true.
|
|
288
|
+
* Only the table owner can call this.
|
|
289
|
+
*/
|
|
290
|
+
async addTableWriter(writer) {
|
|
291
|
+
const tx = await this.c.addTableWriter(writer);
|
|
292
|
+
return tx.wait();
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Remove an address from this table's writer allowlist.
|
|
296
|
+
*/
|
|
297
|
+
async removeTableWriter(writer) {
|
|
298
|
+
const tx = await this.c.removeTableWriter(writer);
|
|
299
|
+
return tx.wait();
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Toggle restricted write mode.
|
|
303
|
+
* false (default) — open/public table, anyone can write.
|
|
304
|
+
* true — only allowlisted writers can write.
|
|
305
|
+
*/
|
|
306
|
+
async setRestrictedWrites(restricted) {
|
|
307
|
+
const tx = await this.c.setRestrictedWrites(restricted);
|
|
308
|
+
return tx.wait();
|
|
309
|
+
}
|
|
310
|
+
/** Check whether an address is in the writer allowlist. */
|
|
311
|
+
async isTableWriter(writer) {
|
|
312
|
+
return this.c.tableWriters(writer);
|
|
313
|
+
}
|
|
314
|
+
/** Check whether this table has restricted writes enabled. */
|
|
315
|
+
async isRestrictedWrites() {
|
|
316
|
+
return this.c.restrictedWrites();
|
|
317
|
+
}
|
|
278
318
|
}
|
|
279
319
|
// ─────────────────────────────────────────────────────────────
|
|
280
320
|
// Helpers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-client.js","sourceRoot":"","sources":["../../src/table-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAoC,QAAQ,CAAC;AAC9D,OAAO,EAEL,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAoD,aAAa,CAAC;AAGnE,gEAAgE;AAChE,SAAS;AACT,gEAAgE;AAEhE,MAAM,CAAN,IAAY,IAGX;AAHD,WAAY,IAAI;IACd,mCAAU,CAAA;IACV,mCAAU,CAAA;AACZ,CAAC,EAHW,IAAI,KAAJ,IAAI,QAGf;AAUD,gEAAgE;AAChE,gEAAgE;AAChE,gEAAgE;AAEhE,MAAM,SAAS,GAAG;IAChB,OAAO;IACP,8FAA8F;IAC9F,6IAA6I;IAC7I,+FAA+F;IAC/F,6CAA6C;IAC7C,iBAAiB;IACjB,8EAA8E;IAC9E,iBAAiB;IACjB,0GAA0G;IAC1G,2DAA2D;IAC3D,QAAQ;IACR,iEAAiE;IACjE,mEAAmE;IACnE,uEAAuE;IACvE,iFAAiF;IACjF,gFAAgF;IAChF,2BAA2B;IAC3B,yEAAyE;IACzE,+GAA+G;IAC/G,qHAAqH;IACrH,iBAAiB;IACjB,4DAA4D;
|
|
1
|
+
{"version":3,"file":"table-client.js","sourceRoot":"","sources":["../../src/table-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,36 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "web3ql-client",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Web3QL client SDK — end-to-end encrypted SQL-like storage on Celo. NaCl encryption, UUPS proxy contracts, full TypeScript. Includes CLI.",
|
|
5
|
-
"keywords": [
|
|
5
|
+
"keywords": [
|
|
6
|
+
"web3",
|
|
7
|
+
"sql",
|
|
8
|
+
"encrypted-storage",
|
|
9
|
+
"celo",
|
|
10
|
+
"nacl",
|
|
11
|
+
"e2e-encryption",
|
|
12
|
+
"cli"
|
|
13
|
+
],
|
|
6
14
|
"license": "MIT",
|
|
7
15
|
"type": "module",
|
|
8
|
-
"main":
|
|
9
|
-
"types":
|
|
16
|
+
"main": "./dist/src/index.js",
|
|
17
|
+
"types": "./dist/src/index.d.ts",
|
|
10
18
|
"exports": {
|
|
11
19
|
".": {
|
|
12
20
|
"import": "./dist/src/index.js",
|
|
13
|
-
"types":
|
|
21
|
+
"types": "./dist/src/index.d.ts"
|
|
14
22
|
}
|
|
15
23
|
},
|
|
16
24
|
"bin": {
|
|
17
25
|
"web3ql": "./dist/src/cli.js"
|
|
18
26
|
},
|
|
19
27
|
"scripts": {
|
|
20
|
-
"build":
|
|
21
|
-
"dev":
|
|
22
|
-
"clean":
|
|
23
|
-
"cli":
|
|
28
|
+
"build": "tsc",
|
|
29
|
+
"dev": "tsc --watch",
|
|
30
|
+
"clean": "rm -rf dist",
|
|
31
|
+
"cli": "node ./dist/src/cli.js"
|
|
24
32
|
},
|
|
25
33
|
"dependencies": {
|
|
26
|
-
"@noble/hashes":
|
|
34
|
+
"@noble/hashes": "^1.4.0",
|
|
27
35
|
"@dotenvx/dotenvx": "^1.0.0",
|
|
28
|
-
"ethers":
|
|
29
|
-
"tweetnacl":
|
|
36
|
+
"ethers": "^6.13.1",
|
|
37
|
+
"tweetnacl": "^1.0.3"
|
|
30
38
|
},
|
|
31
39
|
"devDependencies": {
|
|
32
|
-
"@types/node":
|
|
33
|
-
"typescript":
|
|
40
|
+
"@types/node": "^20.14.10",
|
|
41
|
+
"typescript": "^5.5.3"
|
|
34
42
|
},
|
|
35
43
|
"engines": {
|
|
36
44
|
"node": ">=20.0.0"
|
package/src/table-client.ts
CHANGED
|
@@ -83,6 +83,12 @@ const TABLE_ABI = [
|
|
|
83
83
|
'function getActiveOwnerRecords(address addr, uint256 start, uint256 limit) external view returns (bytes32[] memory)',
|
|
84
84
|
// table metadata
|
|
85
85
|
'function tableName() external view returns (string memory)',
|
|
86
|
+
// table-level write access control
|
|
87
|
+
'function addTableWriter(address writer) external',
|
|
88
|
+
'function removeTableWriter(address writer) external',
|
|
89
|
+
'function setRestrictedWrites(bool restricted) external',
|
|
90
|
+
'function tableWriters(address writer) external view returns (bool)',
|
|
91
|
+
'function restrictedWrites() external view returns (bool)',
|
|
86
92
|
] as const;
|
|
87
93
|
|
|
88
94
|
// ─────────────────────────────────────────────────────────────
|
|
@@ -376,6 +382,46 @@ export class EncryptedTableClient {
|
|
|
376
382
|
async ownerRecordCount(addr: string): Promise<bigint> {
|
|
377
383
|
return this.c.ownerRecordCount(addr) as Promise<bigint>;
|
|
378
384
|
}
|
|
385
|
+
|
|
386
|
+
// ── Table-level write access control ───────────────────────
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* Add an address to this table's writer allowlist.
|
|
390
|
+
* Only takes effect when restrictedWrites = true.
|
|
391
|
+
* Only the table owner can call this.
|
|
392
|
+
*/
|
|
393
|
+
async addTableWriter(writer: string): Promise<ethers.TransactionReceipt> {
|
|
394
|
+
const tx = await this.c.addTableWriter(writer);
|
|
395
|
+
return tx.wait();
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* Remove an address from this table's writer allowlist.
|
|
400
|
+
*/
|
|
401
|
+
async removeTableWriter(writer: string): Promise<ethers.TransactionReceipt> {
|
|
402
|
+
const tx = await this.c.removeTableWriter(writer);
|
|
403
|
+
return tx.wait();
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Toggle restricted write mode.
|
|
408
|
+
* false (default) — open/public table, anyone can write.
|
|
409
|
+
* true — only allowlisted writers can write.
|
|
410
|
+
*/
|
|
411
|
+
async setRestrictedWrites(restricted: boolean): Promise<ethers.TransactionReceipt> {
|
|
412
|
+
const tx = await this.c.setRestrictedWrites(restricted);
|
|
413
|
+
return tx.wait();
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/** Check whether an address is in the writer allowlist. */
|
|
417
|
+
async isTableWriter(writer: string): Promise<boolean> {
|
|
418
|
+
return this.c.tableWriters(writer) as Promise<boolean>;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/** Check whether this table has restricted writes enabled. */
|
|
422
|
+
async isRestrictedWrites(): Promise<boolean> {
|
|
423
|
+
return this.c.restrictedWrites() as Promise<boolean>;
|
|
424
|
+
}
|
|
379
425
|
}
|
|
380
426
|
|
|
381
427
|
// ─────────────────────────────────────────────────────────────
|