@anodb/core 0.7.1 → 0.10.0

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.
Files changed (57) hide show
  1. package/PROTOCOL.md +30 -7
  2. package/README.md +82 -40
  3. package/dist/anodb.d.ts +1 -27
  4. package/dist/anodb.js +2 -151
  5. package/dist/anodb.js.map +1 -1
  6. package/dist/blob.d.ts +3 -3
  7. package/dist/blob.js +1 -1
  8. package/dist/blob.js.map +1 -1
  9. package/dist/cli/init.js +5 -2
  10. package/dist/cli/init.js.map +1 -1
  11. package/dist/cli/main.js +0 -0
  12. package/dist/crypto.d.ts +2 -2
  13. package/dist/crypto.js +2 -2
  14. package/dist/crypto.js.map +1 -1
  15. package/dist/db.d.ts +9 -10
  16. package/dist/db.js +28 -33
  17. package/dist/db.js.map +1 -1
  18. package/dist/defaults.d.ts +3 -2
  19. package/dist/defaults.js +7 -5
  20. package/dist/defaults.js.map +1 -1
  21. package/dist/drivers/browser.d.ts +2 -1
  22. package/dist/drivers/browser.js +4 -1
  23. package/dist/drivers/browser.js.map +1 -1
  24. package/dist/index.d.ts +4 -7
  25. package/dist/index.js +2 -3
  26. package/dist/index.js.map +1 -1
  27. package/dist/kysely.d.ts +10 -5
  28. package/dist/kysely.js +3 -2
  29. package/dist/kysely.js.map +1 -1
  30. package/dist/links.d.ts +8 -0
  31. package/dist/links.js +16 -0
  32. package/dist/links.js.map +1 -0
  33. package/dist/policy.d.ts +16 -0
  34. package/dist/policy.js +29 -0
  35. package/dist/policy.js.map +1 -0
  36. package/dist/react.d.ts +3 -2
  37. package/dist/react.js +3 -1
  38. package/dist/react.js.map +1 -1
  39. package/dist/result-types.d.ts +13 -0
  40. package/dist/result-types.js +157 -0
  41. package/dist/result-types.js.map +1 -0
  42. package/dist/schema.d.ts +19 -2
  43. package/dist/schema.js +36 -5
  44. package/dist/schema.js.map +1 -1
  45. package/dist/sharing.d.ts +18 -23
  46. package/dist/sharing.js +56 -99
  47. package/dist/sharing.js.map +1 -1
  48. package/dist/store.d.ts +8 -30
  49. package/dist/store.js +35 -86
  50. package/dist/store.js.map +1 -1
  51. package/dist/types.d.ts +6 -0
  52. package/dist/ui.d.ts +131 -0
  53. package/dist/ui.js +361 -0
  54. package/dist/ui.js.map +1 -0
  55. package/docs/DECISIONS.md +5 -0
  56. package/docs/DESIGN.md +4 -18
  57. package/package.json +3 -2
package/PROTOCOL.md CHANGED
@@ -37,7 +37,7 @@ on their own; they travel inside encrypted messages (and in key packages, §6).
37
37
  |---|---|---|
38
38
  | space stream | `hex(sha256("anodb/v2/space/" + hex(epochKey)))[0:32]` | the epoch key itself |
39
39
  | device inbox | `hex(sha256("anodb/v2/inbox/" + devicePubkey))[0:32]` | ECDH(envelope key, device key) |
40
- | invite / pairing secret | `hex(sha256("anodb/v2/secret-tag/" + secret))[0:32]` | `sha256("anodb/v2/secret-key/" + secret)` |
40
+ | pairing secret | `hex(sha256("anodb/v2/secret-tag/" + secret))[0:32]` | `sha256("anodb/v2/secret-key/" + secret)` |
41
41
 
42
42
  `keyId(epochKey) = hex(sha256("anodb/v2/key-id/" + hex(epochKey)))[0:16]`.
43
43
 
@@ -69,6 +69,24 @@ System columns: `$deleted` (`true` = tombstone), `$createdAt` (ms). Changes are
69
69
  signing identity is authorized (§5) for that device and sequence number; unauthorized messages are
70
70
  kept and re-evaluated whenever membership changes.
71
71
 
72
+ ### 4.1 Row creators and owned tables
73
+
74
+ A row id of the form `<identity hex>` or `<identity hex>-<1–63 of [A-Za-z0-9_]>` names its
75
+ **creator**. Every device applies this rule to each change, using the identity that signed it:
76
+
77
+ | change by | creator = signer | creator = someone else, plain table | … `owned` table | no creator in id |
78
+ |---|---|---|---|---|
79
+ | `$createdAt` | ✓ | ✗ | ✗ | ✓ |
80
+ | data cell | ✓ | ✓ | ✗ | ✓ |
81
+ | `$deleted` | ✓ | ✓ | owner / admin only | ✓ |
82
+
83
+ Tables are plain by default (any writer may change any row, like SQL without row-level security);
84
+ the app marks tables `owned`. A row whose id names a creator is visible only once its `$createdAt`
85
+ cell exists, so nobody can make a row appear in someone else's name. Refused changes are ignored,
86
+ not stored as state. Implementations create ids as `<own identity>-<16 hex random>` by default,
87
+ expose the creator as `createdBy` and the signer of the newest cell as `updatedBy`. Tables unknown to
88
+ an implementation follow the owned rule.
89
+
72
90
  ## 5. Spaces and membership
73
91
 
74
92
  Every row belongs to a space; a user's personal data is a space whose only member is the user.
@@ -115,21 +133,26 @@ epoch.
115
133
  | `t` | fields | accepted when |
116
134
  |---|---|---|
117
135
  | `key` | `sp, name, personal, num, key, ops[]` | sender is admin+ of `sp` (or the same identity) under the carried + known ops, and the receiver is a member |
118
- | `invite` | as `key` + `role`, optional `req` | as above; stored until the user accepts (`req = sha256(link secret)` → auto-accept for own join requests) |
136
+ | `invite` | as `key` + `role` | as above; stored until the user accepts |
119
137
 
120
138
  `ops` are complete signed inner op events, verifiable without the old epoch keys.
121
139
 
122
140
  ### 5.4 Snapshots (`t: "snap"`)
123
141
 
124
142
  Parts `i/n` with `body: { ops?: [inner…], cells?: [change…] }`. Rows that are deleted carry only their
125
- `$deleted` cell. A complete snapshot from an authorized writer is merged like ordinary changes.
143
+ `$deleted` cell. A cell may carry the identity that signed it as a 6th element. A snapshot restates
144
+ other members' rows, so a complete snapshot is merged only if its author is the **owner or an
145
+ admin** of the space (or the receiving identity itself, for its own new devices); cells that name a
146
+ signer must still pass §4.1 for that signer.
126
147
  New members and newly paired devices receive keys for the **new** epoch only and catch up from
127
148
  snapshots.
128
149
 
129
- ### 5.5 Invite links and pairing (secret routing)
150
+ ### 5.5 Pairing (secret routing)
151
+
152
+ Membership is by identity only: an admin adds an identity with an `add` op and delivers keys to the
153
+ devices its delegations name. How the admin learns the identity (links, approval, external sign-in)
154
+ is outside this protocol.
130
155
 
131
- - Invite link: `anodb://join?app=<appId>&s=<secret>`. The requester sends `{ t: "joinreq", devices: [delegations], name }`
132
- to the secret tag. An admin must approve; the link is single-use and expires.
133
156
  - Pairing: `anodb://pair?app=<appId>&d=<new device pubkey>&s=<secret>`; both devices display
134
157
  `sha256("anodb/v2/pair-code/" + d + "/" + s)` as a 6-digit code. The approving device sends
135
158
  `{ t: "pair", delegation, spaces: [grant…] }` to the secret tag. The identity key is never sent.
@@ -137,7 +160,7 @@ snapshots.
137
160
  ### 5.6 Key package (kind 10304, public, replaceable)
138
161
 
139
162
  `content = {"v":2,"delegations":[…]}` signed by the identity, listing current device delegations so
140
- others can invite by npub.
163
+ others can add it by npub.
141
164
 
142
165
  ## 6. Sync (informative)
143
166
 
package/README.md CHANGED
@@ -14,22 +14,23 @@
14
14
 
15
15
  anoDB is a decentralized, local-first database SDK that treats on-device SQLite as the source of truth and distributes changes as **end-to-end encrypted Nostr events** through existing public relays.
16
16
 
17
- True to its name, it requires **absolutely no developer-operated server**: no API server, no database server, and no project setup. Offline reads and writes, multi-device sync, sharing with other people, and reading/writing public Nostr data are available through a single type-safe, SQL-like API.
17
+ True to its name, it requires **absolutely no developer-operated server**: no API server, no database server, and no project setup. Offline reads and writes, multi-device sync and sharing with other people are available through a single type-safe, SQL-like API.
18
18
 
19
- > **Status: v0.7 / experimental.** The protocol ([PROTOCOL.md](PROTOCOL.md), v2) may change incompatibly. See [docs/DESIGN.md](docs/DESIGN.md) for design details and limitations, and [docs/DECISIONS.md](docs/DECISIONS.md) for the decision log.
19
+ > **Status: v0.10 / experimental.** The protocol ([PROTOCOL.md](PROTOCOL.md), v2) may change incompatibly. See [docs/DESIGN.md](docs/DESIGN.md) for design details and limitations, and [docs/DECISIONS.md](docs/DECISIONS.md) for the decision log.
20
20
 
21
21
  ## Features
22
22
 
23
23
  - 📴 **Offline-first** — Writes commit immediately to local SQLite. The network catches up later.
24
24
  - 🧾 **Type-safe SQL** — A [Kysely](https://kysely.dev) query builder with JOINs, plus raw SQL writes (`UPDATE … LIKE`, `INSERT … SELECT`, upserts) that are captured and synced.
25
- - 👥 **Sharing** — Spaces with owner / admin / writer / reader roles, invitations by npub or one-time links, removal with cut-offs, key rotation.
26
- - 🔐 **Secure by default** — Writes are signed by per-device keys, keys are stored encrypted, relays see only throwaway pubkeys and rotating tags, and new members never see deleted history.
25
+ - 🗃️ **A plain database by default** — your data, on all your devices, with no invites and no rules to set up.
26
+ - 👥 **Sharing when you want it** — spaces with owner / admin / writer / reader roles, members added by public key, removal with cut-offs, key rotation. *How* people get invited (links, approval, sign-in with Google or your company's SSO) is left to your app or [anoAuth](#who-may-join-is-up-to-you).
27
+ - 🔐 **Signed and encrypted** — Writes are signed by per-device keys, keys are stored encrypted, relays see only throwaway pubkeys and rotating tags, and new members of a space never see deleted history.
27
28
  - 🔀 **Deterministic merging** — Cell-level Last-Writer-Wins with Hybrid Logical Clocks; tolerant of out-of-order delivery, duplicates and retries.
28
29
  - ⚡ **Direct device-to-device sync** — Your devices connect over WebRTC ([nostr-p2p](https://github.com/sho-ritz/nostr-p2p)) and exchange changes in tens of milliseconds; relays remain the store for offline devices.
29
30
  - 🔁 **4-layer sync** — NIP-77 Negentropy, time-based fallback, sequence-gap detection, snapshots. A durable outbox retries until `minAcks` relays acknowledge.
30
- - 🌐 **Nostr tables** — Profiles, notes, follows, reactions and long-form articles as SQL tables, readable and writable by any Nostr client.
31
31
  - 📎 **Encrypted files** — Large files go to [Blossom](https://github.com/hzrd149/blossom) servers, encrypted on the device; only a reference is stored in the database.
32
- - ⚛️ **React hooks** — `useQuery`, `useSyncStatus`.
32
+ - 🔏 **Opt-in row rules** — `createdBy` / `updatedBy` come from signatures and can’t be forged; mark a table `owned()` so only a row’s creator can edit it (checked on every device).
33
+ - ⚛️ **React** — `useQuery`, `useSyncStatus`, and ready-made `<PairDevice />`, `<AddMember />`, `<Invitations />`, `<Members />` components.
33
34
 
34
35
  ## Get started
35
36
 
@@ -118,8 +119,8 @@ await db.transaction().execute(async (tx) => {
118
119
  const stop = db.subscribe(db.selectFrom('todo').selectAll(), (rows) => render(rows))
119
120
  ```
120
121
 
121
- - Every table gets `id`, `space`, `createdAt` and `updatedAt` (`space` defaults to your personal space).
122
- - Following SQLite semantics, `boolean` reads as `0 | 1` and `json` reads as JSON text.
122
+ - Every table gets `id`, `space`, `createdAt`, `updatedAt`, `createdBy` and `updatedBy` (`space` defaults to your personal space, see below).
123
+ - `boolean` columns read as `true / false` and `json` columns as parsed values (also through JOINs, aliases and live queries). Raw SQL strings (`db.execute`) return plain SQLite values.
123
124
 
124
125
  ### Keys (most secure defaults)
125
126
 
@@ -134,21 +135,50 @@ const stop = db.subscribe(db.selectFrom('todo').selectAll(), (rows) => render(ro
134
135
  - External signers: `signer: nip07Signer() | nip46Signer(uri) | nip55Signer(bridge)`.
135
136
  - Relays see only throwaway pubkeys, per-epoch tags, times and sizes (`metadataProtection: 'none'` turns this off for allow-listed relays).
136
137
 
138
+ ## Where data lives
139
+
140
+ | Space | Who can read and write | Use it for |
141
+ |---|---|---|
142
+ | **Personal space** (default, `db.personalSpace`) | your own devices | everything that is yours: no invites, no rules — just a database that follows you across devices |
143
+ | **Shared spaces** (`db.createSpace`) | the members you add (owner / admin / writer / reader) | a family list, a team, a chat room |
144
+
145
+ Everything is end-to-end encrypted. Without a server, *who can read* means *who holds the key*, so
146
+ sharing always means handing the key to someone — that is what an invitation does.
147
+
148
+ ### Owned tables (opt-in row rule)
149
+
150
+ In a shared space, by default any writer may change or delete any row (like a table without row-level security). In an `owned(...)` table only the member who
151
+ created a row can change it; deleting is also allowed for admins and the owner of a shared space
152
+ (moderation), but they can't edit it. Every device enforces this when it applies a change, so a
153
+ modified client gets nowhere.
154
+
155
+ ```ts
156
+ import { defineSchema, owned } from '@anodb/core'
157
+ defineSchema({
158
+ todo: { title: 'text', done: 'boolean' }, // anyone can tick items
159
+ messages: owned({ text: 'text' }), // only the author can edit / delete
160
+ profiles: owned({ name: 'text' }),
161
+ })
162
+ // "one row per member": use your identity as the id — in an owned table only you can write it
163
+ await db.insertInto('profiles').values({ id: db.pubkey, name: 'Taro' }).execute()
164
+ ```
165
+
166
+ In every table, `createdBy` / `updatedBy` are taken from signatures (read-only), and nobody can
167
+ create a row whose id names someone else.
168
+
137
169
  ## Sharing (spaces)
138
170
 
139
171
  ```ts
140
172
  const family = await db.createSpace('Family')
141
173
  await db.insertInto('todo').values({ title: 'Milk', space: family }).execute()
142
174
 
143
- // Invite by npub (the invitee publishes a key package first: db.publishKeyPackage())
144
- await db.invite(family, 'npub1alice…', 'writer') // owner / admin / writer / reader
145
- // Invitee: nothing syncs until they accept
175
+ // Add by public key (owners / admins): the space key is delivered to their devices.
176
+ // Their devices come from the key package they published (alice.publishKeyPackage()),
177
+ // or are handed over directly: { devices: alice.deviceDelegations() }
178
+ await db.addMember(family, 'npub1alice…', 'writer') // admin / writer / reader
179
+ // The new member: nothing syncs until they accept
146
180
  alice.onInvitation((i) => …); await alice.acceptInvitation(i.space)
147
181
 
148
- // One-time, expiring invite link; an admin must approve each request
149
- const link = await db.createInviteLink(family, { role: 'reader', expiresInMs: 86_400_000 })
150
- db.onJoinRequest((req) => db.approveJoinRequest(req.id))
151
-
152
182
  await db.setRole(family, who, 'reader')
153
183
  await db.removeMember(family, who)
154
184
  ```
@@ -157,6 +187,13 @@ await db.removeMember(family, who)
157
187
  - Group keys rotate on member removal, device revocation, member addition and every 30 days.
158
188
  - After removal, writes beyond each device's sequence-number cut-off are rejected (backdating does not help).
159
189
 
190
+ ### Who may join is up to you
191
+
192
+ anoDB only knows public keys: it adds and removes members and delivers keys to them. Deciding
193
+ *who* may join — invite links, approval by an admin, "anyone who signs in with Google as
194
+ @company.com", a company SSO — is a separate concern, planned as **anoAuth**, which runs on an
195
+ admin's device and calls `addMember` when someone qualifies.
196
+
160
197
  ### Adding and revoking devices
161
198
 
162
199
  ```ts
@@ -171,28 +208,6 @@ await db.revokeDevice(lostDevicePubkey) // lost or stolen device
171
208
 
172
209
  > ⚠ Group keys are delivered to device keys only. **If you lose every device, your personal space cannot be recovered** (shared spaces can be restored by other members). Register at least two devices.
173
210
 
174
- ## Public Nostr data (tables)
175
-
176
- ```ts
177
- import { defineSchema, publicTable } from '@anodb/core'
178
-
179
- const schema = defineSchema({
180
- todo: { title: 'text' }, // private (encrypted in a space)
181
- posts: publicTable('note'), // kind 1
182
- profiles: publicTable('profile'), // kind 0
183
- follows: publicTable('follows'), // kind 3
184
- reactions: publicTable('reaction'), // kind 7
185
- articles: publicTable('longForm'), // kind 30023
186
- })
187
-
188
- await db.insertInto('posts').values({ content: 'hello nostr', tags: [['t', 'anodb']] }).execute() // signed & published
189
- await db.syncPublic('posts', { authors: [alice] }, { live: true }) // fetch & follow
190
- await db.selectFrom('posts').innerJoin('profiles', 'profiles.author', 'posts.author')
191
- .select(['posts.content', 'profiles.name']).execute() // JOIN
192
- ```
193
-
194
- Public tables are **not encrypted**. Notes and reactions cannot be edited (deleting publishes a NIP-09 request); profiles, follow lists and articles are replaceable.
195
-
196
211
  ## Direct sync over WebRTC
197
212
 
198
213
  Where WebRTC is available (browsers, or Node with `node-datachannel`), **your own devices connect
@@ -251,10 +266,31 @@ On NIP-77 relays, reconciliation is exact and lost envelopes are re-uploaded aut
251
266
  import { AnoDBProvider, useQuery, useSyncStatus } from '@anodb/core/react'
252
267
 
253
268
  <AnoDBProvider db={db}><App /></AnoDBProvider>
254
- const todos = useQuery((db) => db.selectFrom('todo').selectAll().where('done', '=', 0), [])
269
+ const todos = useQuery((db) => db.selectFrom('todo').selectAll().where('done', '=', false), [])
255
270
  const status = useSyncStatus()
256
271
  ```
257
272
 
273
+ ### Ready-made components
274
+
275
+ Sharing and multi-device are anoDB's core features, so their UI ships with it:
276
+
277
+ ```tsx
278
+ import { AddMember, DeviceList, Invitations, Members, PairDevice } from '@anodb/core/react'
279
+
280
+ <PairDevice /> {/* add a device: QR code + a code to compare on both devices */}
281
+ <DeviceList /> {/* your devices, revoke with a confirming second click */}
282
+ <AddMember space={id} /> {/* add someone by npub (owners / admins) */}
283
+ <Invitations onJoined={setSpace} /> {/* spaces you were added to: accept / decline */}
284
+ <Members space={id} /> {/* roles and removal for owners / admins */}
285
+ ```
286
+
287
+ - Plain HTML with `anodb-*` class names and only layout styles — style them like the rest of your app.
288
+ - English and Japanese built in (`lang="ja"`, default: the browser's language); override any text with `labels`.
289
+ - Pairing links and QR codes are ordinary `https://your-app/#anodb=…` URLs. Scanning one with a phone
290
+ camera opens your app with the request filled in — nothing is approved without a click, and pairing
291
+ always shows a code to compare.
292
+ - Building your own? `useLive((db) => db.members(id))`, `toAppLink()`, `parseAppLink()` and `<QRCode />` are exported too.
293
+
258
294
  ## Column types
259
295
 
260
296
  | Type | Write (TS) | Read (TS) | SQLite |
@@ -262,8 +298,14 @@ const status = useSyncStatus()
262
298
  | `text` | `string` | `string` | TEXT |
263
299
  | `integer` | `number` (safe integer) | `number` | INTEGER |
264
300
  | `real` | `number` | `number` | REAL |
265
- | `boolean` | `boolean \| 0 \| 1` | `0 \| 1` | INTEGER |
266
- | `json` | any JSON value | `string` (JSON text) | TEXT |
301
+ | `boolean` | `boolean` | `boolean` | INTEGER (0 / 1) |
302
+ | `json` | any JSON value | `unknown` | TEXT |
303
+ | `json<T>()` | `T` | `T` | TEXT |
304
+
305
+ ```ts
306
+ import { defineSchema, json } from '@anodb/core'
307
+ const schema = defineSchema({ note: { title: 'text', meta: json<{ tags: string[] }>() } })
308
+ ```
267
309
 
268
310
  All columns are nullable.
269
311
 
package/dist/anodb.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import type { CapturedCell } from './capture.js';
2
1
  import { type AnoDBOptions } from './db.js';
3
2
  import { type P2PMode, type PeerInfo, P2PSync } from './p2p.js';
4
3
  import { AnoDBSharing } from './sharing.js';
@@ -9,16 +8,7 @@ export interface SyncGap {
9
8
  /** Missing sequence numbers (at most 100 listed). */
10
9
  missing: number[];
11
10
  }
12
- export interface PublicSyncFilter {
13
- authors?: string[];
14
- ids?: string[];
15
- since?: number;
16
- until?: number;
17
- limit?: number;
18
- /** Tag filters without the `#`, e.g. `{ t: ['anodb'] }`. */
19
- tags?: Record<string, string[]>;
20
- }
21
- /** anoDB database handle: SQL-like API, spaces & sharing, NIP-77 sync, public Nostr tables. */
11
+ /** anoDB database handle: SQL-like API, spaces & sharing, NIP-77 sync. */
22
12
  export declare class AnoDB<S extends SchemaDefinition> extends AnoDBSharing<S> {
23
13
  #private;
24
14
  protected afterInit(): Promise<void>;
@@ -48,22 +38,6 @@ export declare class AnoDB<S extends SchemaDefinition> extends AnoDBSharing<S> {
48
38
  protected wrap(innerJson: string, tag: string, convKey: Uint8Array, signerSk?: Uint8Array): NostrEvent;
49
39
  protected resignEnvelope(e: NostrEvent): NostrEvent;
50
40
  protected afterSnapshot(space: string, before: number): void;
51
- /** Insert/update/delete on a public table → signed standard Nostr events (identity key). */
52
- protected commitPublic(cells: CapturedCell[]): Promise<void>;
53
- /** Project a verified event into a public table (replaceable semantics per preset). */
54
- protected applyPublicEvent(table: string, e: NostrEvent): boolean;
55
- /**
56
- * Fetch standard events into a public table (verified, cached for offline use). With `live`,
57
- * keeps a subscription open; call the returned `stop()` to end it.
58
- */
59
- syncPublic<T extends Extract<keyof S, string>>(table: T, filter?: PublicSyncFilter, opts?: {
60
- live?: boolean;
61
- relays?: readonly string[];
62
- timeoutMs?: number;
63
- }): Promise<{
64
- received: number;
65
- stop: () => void;
66
- }>;
67
41
  close(): Promise<void>;
68
42
  }
69
43
  export declare function createAnoDB<const S extends SchemaDefinition>(opts: AnoDBOptions<S>): Promise<AnoDB<S>>;
package/dist/anodb.js CHANGED
@@ -1,12 +1,10 @@
1
- import { fromCaptured } from './capture.js';
2
- import { bytesToHex, hexToBytes, randomHex, sha256Hex, signWith, verifySignedEvent } from './crypto.js';
1
+ import { bytesToHex, hexToBytes, randomHex, sha256Hex, signWith } from './crypto.js';
3
2
  import { prepare } from './db.js';
4
3
  import { TAG, WRAP_KIND } from './protocol.js';
5
4
  import { P2PSync } from './p2p.js';
6
- import { presetOf } from './public-tables.js';
7
5
  import { AnoDBSharing } from './sharing.js';
8
6
  const BACKFILL_PAGE = 500;
9
- /** anoDB database handle: SQL-like API, spaces & sharing, NIP-77 sync, public Nostr tables. */
7
+ /** anoDB database handle: SQL-like API, spaces & sharing, NIP-77 sync. */
10
8
  export class AnoDB extends AnoDBSharing {
11
9
  #negUnsupported = new Set();
12
10
  #reconcileTimer = null;
@@ -231,153 +229,6 @@ export class AnoDB extends AnoDBSharing {
231
229
  void this.sync.flush();
232
230
  }
233
231
  // ---- public tables ----------------------------------------------------------------------
234
- /** Insert/update/delete on a public table → signed standard Nostr events (identity key). */
235
- async commitPublic(cells) {
236
- const signer = this.requireIdentitySigner();
237
- const groups = new Map();
238
- for (const c of cells) {
239
- const k = `${c.table}\u0000${c.rowId}`;
240
- groups.set(k, [...(groups.get(k) ?? []), c]);
241
- }
242
- const touched = new Set();
243
- for (const group of groups.values()) {
244
- const table = group[0].table;
245
- const def = this.schema[table];
246
- const preset = presetOf(def);
247
- const inserted = group.some((c) => c.op === 'i');
248
- const deleted = group.some((c) => c.op === 'd');
249
- if (inserted && deleted)
250
- continue;
251
- let current = inserted ? undefined : this.store.publicRows(table, 'id = ?', [group[0].rowId])[0];
252
- if (!inserted && !current)
253
- continue;
254
- if (current && current.author !== this.pubkey)
255
- throw new Error("anoDB: you can only change your own public events");
256
- if (!inserted && !deleted && preset.replace === 'none')
257
- throw new Error(`anoDB: kind ${preset.kind} events cannot be edited; delete and insert instead`);
258
- if (inserted && preset.replace === 'author' && preset.kind === 0)
259
- current = this.store.publicRows(table, 'id = ?', [this.pubkey])[0];
260
- const row = { ...(current ?? {}) };
261
- for (const c of group) {
262
- if (c.column.startsWith('$') || c.column === 'author')
263
- continue;
264
- fromCaptured(table, c.column, def[c.column], c.value); // type check
265
- row[c.column] = c.value;
266
- }
267
- row.author = this.pubkey;
268
- if (preset.kind === 3 && typeof row.target === 'string')
269
- row.id = `${this.pubkey}:${row.target}`;
270
- else if (preset.replace === 'address')
271
- row.id = `${this.pubkey}:${row.d ?? ''}`;
272
- else if (current)
273
- row.id = current.id;
274
- const mine = this.store.publicRows(table, 'author = ?', [this.pubkey]).filter((r) => r.id !== row.id);
275
- if (!deleted)
276
- mine.push(row);
277
- const templates = preset.build(row, mine, deleted);
278
- for (const t of templates) {
279
- // Replaceable versions must be strictly newer than what we have (relays keep the newest;
280
- // equal timestamps fall back to "lowest id wins").
281
- if (preset.replace !== 'none' && t.kind !== 5) {
282
- const prev = this.store.publicRows(table, preset.replace === 'author' ? 'author = ?' : 'id = ?', [preset.replace === 'author' ? this.pubkey : String(row.id)]);
283
- const last = Math.max(0, ...prev.map((p) => (typeof p.createdAt === 'number' ? Math.floor(p.createdAt / 1000) : 0)));
284
- if (t.created_at <= last)
285
- t.created_at = last + 1;
286
- }
287
- const ev = await signer.signEvent(t);
288
- await this.gate.idle();
289
- if (ev.kind === 5)
290
- this.store.deletePublicRows(table, 'id = ?', [String(row.id)]);
291
- else
292
- this.applyPublicEvent(table, ev);
293
- this.enqueuePlain(ev);
294
- }
295
- if (deleted && preset.kind === 3)
296
- this.store.deletePublicRows(table, 'id = ?', [String(row.id)]);
297
- touched.add(table);
298
- }
299
- this.notify(touched, 'local');
300
- }
301
- /** Project a verified event into a public table (replaceable semantics per preset). */
302
- applyPublicEvent(table, e) {
303
- const preset = presetOf(this.schema[table]);
304
- if (!preset || e.kind !== preset.kind)
305
- return false;
306
- const ms = e.created_at * 1000;
307
- const rows = preset.rows(e);
308
- if (preset.replace === 'author') {
309
- const existing = this.store.publicRows(table, 'author = ?', [e.pubkey]);
310
- if (existing.some((r) => typeof r.createdAt === 'number' && r.createdAt > ms))
311
- return false;
312
- this.store.deletePublicRows(table, 'author = ?', [e.pubkey]);
313
- }
314
- else {
315
- for (const r of rows) {
316
- const old = this.store.publicRows(table, 'id = ?', [r.id])[0];
317
- if (old && typeof old.createdAt === 'number' && old.createdAt >= ms && preset.replace === 'address')
318
- return false;
319
- if (old && preset.replace === 'none')
320
- return false;
321
- }
322
- }
323
- for (const r of rows)
324
- this.store.putPublicRow(table, { ...r, createdAt: ms, updatedAt: ms });
325
- return true;
326
- }
327
- /**
328
- * Fetch standard events into a public table (verified, cached for offline use). With `live`,
329
- * keeps a subscription open; call the returned `stop()` to end it.
330
- */
331
- async syncPublic(table, filter = {}, opts = {}) {
332
- const preset = presetOf(this.schema[table]);
333
- if (!preset)
334
- throw new Error(`anoDB: ${table} is not a public table`);
335
- const f = { kinds: [preset.kind] };
336
- if (filter.authors)
337
- f.authors = filter.authors;
338
- if (filter.ids)
339
- f.ids = filter.ids;
340
- if (filter.since !== undefined)
341
- f.since = filter.since;
342
- if (filter.until !== undefined)
343
- f.until = filter.until;
344
- if (filter.limit !== undefined)
345
- f.limit = filter.limit;
346
- for (const [k, v] of Object.entries(filter.tags ?? {}))
347
- f[`#${k}`] = v;
348
- let relays = [...(opts.relays ?? [])];
349
- if (filter.authors && filter.authors.length <= 20) {
350
- for (const a of filter.authors) {
351
- const list = await this.nostr.getRelayList(a, opts.timeoutMs !== undefined ? { timeoutMs: opts.timeoutMs } : {});
352
- relays.push(...(list.value?.write ?? []));
353
- }
354
- }
355
- relays = [...new Set([...(this.sync?.pool.relays ?? []), ...(this.opts.discoveryRelays ?? []), ...relays])];
356
- const events = await this.nostr.fetch([f], { relays, timeoutMs: opts.timeoutMs });
357
- let received = 0;
358
- await this.gate.idle();
359
- this.store.transaction(() => {
360
- for (const e of events)
361
- if (this.applyPublicEvent(table, e))
362
- received++;
363
- });
364
- if (received)
365
- this.notify(new Set([table]), 'remote');
366
- let stop = () => { };
367
- if (opts.live && this.sync) {
368
- const live = { ...f, since: Math.floor(this.now() / 1000) };
369
- delete live.limit;
370
- stop = this.sync.pool.subscribe(() => [live], {
371
- onEvent: (_r, e) => {
372
- if (!verifySignedEvent(e) || this.gate.busy || this.closed)
373
- return;
374
- if (this.store.transaction(() => this.applyPublicEvent(table, e)))
375
- this.notify(new Set([table]), 'remote');
376
- },
377
- });
378
- }
379
- return { received, stop };
380
- }
381
232
  async close() {
382
233
  if (this.#reconcileTimer)
383
234
  clearInterval(this.#reconcileTimer);
package/dist/anodb.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"anodb.js","sourceRoot":"","sources":["../src/anodb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anodb.js","sourceRoot":"","sources":["../src/anodb.ts"],"names":[],"mappings":"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"}
package/dist/blob.d.ts CHANGED
@@ -62,15 +62,15 @@ export declare class BlobStore {
62
62
  /** Encrypt and upload. Returns a reference to store in a `json` column. */
63
63
  put(data: Uint8Array | ArrayBuffer | Blob | string, opts?: BlobPutOptions): Promise<BlobRef>;
64
64
  /** Download, verify the hash and decrypt. Tries the reference's servers, then the configured ones. */
65
- get(refOrJson: BlobRef | string): Promise<{
65
+ get(refOrJson: unknown): Promise<{
66
66
  data: Uint8Array;
67
67
  type: string;
68
68
  name?: string;
69
69
  }>;
70
70
  /** Download as a browser `Blob` (handy for `URL.createObjectURL`). */
71
- getBlob(ref: BlobRef | string): Promise<Blob>;
71
+ getBlob(ref: unknown): Promise<Blob>;
72
72
  /** Ask the servers to delete the blob. Only works from the device that uploaded it. */
73
- delete(refOrJson: BlobRef | string): Promise<BlobUploadReport[]>;
73
+ delete(refOrJson: unknown): Promise<BlobUploadReport[]>;
74
74
  }
75
75
  export declare function isBlobRef(r: unknown): r is BlobRef;
76
76
  export {};
package/dist/blob.js CHANGED
@@ -209,7 +209,7 @@ export function isBlobRef(r) {
209
209
  Array.isArray(o.servers) &&
210
210
  o.servers.every((s) => typeof s === 'string'));
211
211
  }
212
- /** Accepts the object or the JSON text read back from a `json` column. */
212
+ /** Accepts a BlobRef, the value read back from a `json` column, or its JSON text. */
213
213
  function parseRef(r) {
214
214
  let ref = r;
215
215
  if (typeof r === 'string') {
package/dist/blob.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"blob.js","sourceRoot":"","sources":["../src/blob.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blob.js","sourceRoot":"","sources":["../src/blob.ts"],"names":[],"mappings":"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"}