@anodb/core 0.8.0 → 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.
- package/PROTOCOL.md +30 -7
- package/README.md +57 -42
- package/dist/anodb.d.ts +1 -27
- package/dist/anodb.js +2 -151
- package/dist/anodb.js.map +1 -1
- package/dist/cli/init.js +5 -3
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/main.js +0 -0
- package/dist/crypto.d.ts +2 -2
- package/dist/crypto.js +2 -2
- package/dist/crypto.js.map +1 -1
- package/dist/db.d.ts +9 -10
- package/dist/db.js +22 -31
- package/dist/db.js.map +1 -1
- package/dist/defaults.d.ts +3 -2
- package/dist/defaults.js +7 -5
- package/dist/defaults.js.map +1 -1
- package/dist/drivers/browser.d.ts +2 -1
- package/dist/drivers/browser.js +4 -1
- package/dist/drivers/browser.js.map +1 -1
- package/dist/index.d.ts +4 -7
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/kysely.d.ts +4 -0
- package/dist/kysely.js.map +1 -1
- package/dist/links.d.ts +8 -0
- package/dist/links.js +16 -0
- package/dist/links.js.map +1 -0
- package/dist/policy.d.ts +16 -0
- package/dist/policy.js +29 -0
- package/dist/policy.js.map +1 -0
- package/dist/react.d.ts +2 -2
- package/dist/react.js +1 -1
- package/dist/react.js.map +1 -1
- package/dist/schema.d.ts +12 -1
- package/dist/schema.js +28 -5
- package/dist/schema.js.map +1 -1
- package/dist/sharing.d.ts +18 -23
- package/dist/sharing.js +56 -99
- package/dist/sharing.js.map +1 -1
- package/dist/store.d.ts +8 -30
- package/dist/store.js +35 -86
- package/dist/store.js.map +1 -1
- package/dist/ui.d.ts +14 -44
- package/dist/ui.js +45 -86
- package/dist/ui.js.map +1 -1
- package/docs/DECISIONS.md +4 -0
- package/docs/DESIGN.md +4 -18
- package/package.json +1 -1
package/dist/store.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { decodeHlc } from './hlc.js';
|
|
2
|
-
import {
|
|
3
|
-
import { SYS_CREATED, SYS_DELETED, createTableSql, quoteIdent, tableFingerprint, toSql } from './schema.js';
|
|
2
|
+
import { SYS_CREATED, SYS_DELETED, createTableSql, ownerOfRow, quoteIdent, tableFingerprint, toSql } from './schema.js';
|
|
4
3
|
const INTERNAL_SCHEMA = `
|
|
5
4
|
CREATE TABLE IF NOT EXISTS anodb_meta (key TEXT PRIMARY KEY, value TEXT NOT NULL);
|
|
6
5
|
CREATE TABLE IF NOT EXISTS anodb_spaces (
|
|
@@ -21,11 +20,9 @@ CREATE TABLE IF NOT EXISTS anodb_prune (event_id TEXT PRIMARY KEY, salt TEXT NOT
|
|
|
21
20
|
CREATE TABLE IF NOT EXISTS anodb_devices (
|
|
22
21
|
device TEXT PRIMARY KEY, identity TEXT NOT NULL, delegation TEXT NOT NULL, name TEXT NOT NULL, revoked INTEGER NOT NULL DEFAULT 0
|
|
23
22
|
);
|
|
24
|
-
|
|
23
|
+
DROP TABLE IF EXISTS anodb_invites_out;
|
|
25
24
|
CREATE TABLE IF NOT EXISTS anodb_invites_in (space TEXT PRIMARY KEY, sender TEXT NOT NULL, role TEXT NOT NULL, name TEXT NOT NULL, payload TEXT NOT NULL, status TEXT NOT NULL, received_at INTEGER NOT NULL);
|
|
26
|
-
|
|
27
|
-
id TEXT PRIMARY KEY, secret TEXT NOT NULL, identity TEXT NOT NULL, payload TEXT NOT NULL, status TEXT NOT NULL, received_at INTEGER NOT NULL
|
|
28
|
-
);
|
|
25
|
+
DROP TABLE IF EXISTS anodb_join_requests;
|
|
29
26
|
CREATE TABLE IF NOT EXISTS anodb_cells (
|
|
30
27
|
space TEXT NOT NULL, tbl TEXT NOT NULL, row_id TEXT NOT NULL, col TEXT NOT NULL, value TEXT NOT NULL, hlc TEXT NOT NULL,
|
|
31
28
|
PRIMARY KEY (space, tbl, row_id, col)
|
|
@@ -38,10 +35,7 @@ CREATE TABLE IF NOT EXISTS anodb_acks (
|
|
|
38
35
|
PRIMARY KEY (event_id, relay)
|
|
39
36
|
) WITHOUT ROWID;
|
|
40
37
|
CREATE TABLE IF NOT EXISTS anodb_cursors (relay TEXT NOT NULL, tag TEXT NOT NULL, since INTEGER NOT NULL, PRIMARY KEY (relay, tag)) WITHOUT ROWID;
|
|
41
|
-
|
|
42
|
-
pubkey TEXT NOT NULL, kind INTEGER NOT NULL, event TEXT NOT NULL, created_at INTEGER NOT NULL, fetched_at INTEGER NOT NULL,
|
|
43
|
-
PRIMARY KEY (pubkey, kind)
|
|
44
|
-
) WITHOUT ROWID;
|
|
38
|
+
DROP TABLE IF EXISTS anodb_public;
|
|
45
39
|
`;
|
|
46
40
|
/**
|
|
47
41
|
* Local persistence. `anodb_cells` holds one LWW register per (space, table, row, column);
|
|
@@ -77,6 +71,8 @@ export class Store {
|
|
|
77
71
|
this.#ensureColumn('anodb_raw', 'relay', 'INTEGER NOT NULL DEFAULT 1');
|
|
78
72
|
this.#ensureColumn('anodb_outbox', 'hold_until', 'INTEGER NOT NULL DEFAULT 0');
|
|
79
73
|
this.#ensureColumn('anodb_messages', 'inner', "TEXT NOT NULL DEFAULT ''");
|
|
74
|
+
// identity whose signed change set the cell (null for cells from older versions)
|
|
75
|
+
this.#ensureColumn('anodb_cells', 'by', 'TEXT');
|
|
80
76
|
}
|
|
81
77
|
/** Add a column created by a newer version (CREATE TABLE IF NOT EXISTS does not alter tables). */
|
|
82
78
|
#ensureColumn(table, column, ddl) {
|
|
@@ -128,18 +124,16 @@ export class Store {
|
|
|
128
124
|
return n;
|
|
129
125
|
}
|
|
130
126
|
// ---- schema / projections ------------------------------------------------
|
|
131
|
-
applySchema(schema, defaultSpace) {
|
|
127
|
+
applySchema(schema, defaultSpace, owner) {
|
|
132
128
|
this.#schema = schema;
|
|
133
129
|
this.transaction(() => {
|
|
134
130
|
for (const [table, def] of Object.entries(schema)) {
|
|
135
|
-
const
|
|
136
|
-
const space = preset ? PUBLIC_SPACE : defaultSpace;
|
|
137
|
-
const fp = `${tableFingerprint(def)}|${space}|${preset ? preset.kind : ''}`;
|
|
131
|
+
const fp = `${tableFingerprint(def)}|${defaultSpace}|${owner ?? ''}`;
|
|
138
132
|
const key = `schema:${table}`;
|
|
139
133
|
if (this.getMeta(key) === fp)
|
|
140
134
|
continue;
|
|
141
135
|
this.#db.exec(`DROP TABLE IF EXISTS ${quoteIdent(table)}`);
|
|
142
|
-
this.#db.exec(createTableSql(table, def,
|
|
136
|
+
this.#db.exec(createTableSql(table, def, defaultSpace, owner));
|
|
143
137
|
const rows = this.#db.all('SELECT DISTINCT space, row_id FROM anodb_cells WHERE tbl = ?', [table]);
|
|
144
138
|
for (const r of rows)
|
|
145
139
|
this.#project(r.space, table, r.row_id);
|
|
@@ -147,15 +141,21 @@ export class Store {
|
|
|
147
141
|
}
|
|
148
142
|
});
|
|
149
143
|
}
|
|
150
|
-
/**
|
|
151
|
-
|
|
144
|
+
/**
|
|
145
|
+
* LWW merge. `by` is the identity that signed the changes (a snapshot cell may carry its own as a
|
|
146
|
+
* 6th element). Returns tables whose visible state may have changed. Run inside `transaction`.
|
|
147
|
+
*/
|
|
148
|
+
applyChanges(space, changes, by) {
|
|
152
149
|
const dirty = new Map();
|
|
153
|
-
for (const
|
|
150
|
+
for (const c of changes) {
|
|
151
|
+
const [table, rowId, column, value, hlc] = c;
|
|
152
|
+
const cellBy = c[5];
|
|
153
|
+
const writer = typeof cellBy === 'string' && /^[0-9a-f]{64}$/.test(cellBy) ? cellBy : (by ?? null);
|
|
154
154
|
const current = this.#db.all('SELECT hlc FROM anodb_cells WHERE space = ? AND tbl = ? AND row_id = ? AND col = ?', [space, table, rowId, column])[0];
|
|
155
155
|
if (current && current.hlc >= hlc)
|
|
156
156
|
continue;
|
|
157
|
-
this.#db.run(`INSERT INTO anodb_cells (space, tbl, row_id, col, value, hlc) VALUES (?, ?, ?, ?, ?, ?)
|
|
158
|
-
ON CONFLICT(space, tbl, row_id, col) DO UPDATE SET value = excluded.value, hlc = excluded.hlc`, [space, table, rowId, column, JSON.stringify(value ?? null), hlc]);
|
|
157
|
+
this.#db.run(`INSERT INTO anodb_cells (space, tbl, row_id, col, value, hlc, by) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
158
|
+
ON CONFLICT(space, tbl, row_id, col) DO UPDATE SET value = excluded.value, hlc = excluded.hlc, by = excluded.by`, [space, table, rowId, column, JSON.stringify(value ?? null), hlc, writer]);
|
|
159
159
|
let rows = dirty.get(table);
|
|
160
160
|
if (!rows)
|
|
161
161
|
dirty.set(table, (rows = new Set()));
|
|
@@ -167,11 +167,11 @@ export class Store {
|
|
|
167
167
|
}
|
|
168
168
|
return new Set(dirty.keys());
|
|
169
169
|
}
|
|
170
|
-
/** All current cells of a space (for snapshots). */
|
|
170
|
+
/** All current cells of a space (for snapshots), with the signing identity as a 6th element when known. */
|
|
171
171
|
cells(space) {
|
|
172
172
|
return this.#db
|
|
173
|
-
.all('SELECT tbl, row_id, col, value, hlc FROM anodb_cells WHERE space = ? ORDER BY tbl, row_id, col', [space])
|
|
174
|
-
.map((c) => [c.tbl, c.row_id, c.col, JSON.parse(c.value), c.hlc]);
|
|
173
|
+
.all('SELECT tbl, row_id, col, value, hlc, by FROM anodb_cells WHERE space = ? ORDER BY tbl, row_id, col', [space])
|
|
174
|
+
.map((c) => (c.by ? [c.tbl, c.row_id, c.col, JSON.parse(c.value), c.hlc, c.by] : [c.tbl, c.row_id, c.col, JSON.parse(c.value), c.hlc]));
|
|
175
175
|
}
|
|
176
176
|
/** Drop all cells of a space and its projected rows. Run inside `transaction`. */
|
|
177
177
|
clearSpace(space) {
|
|
@@ -186,15 +186,21 @@ export class Store {
|
|
|
186
186
|
const def = this.#schema[table];
|
|
187
187
|
if (!def)
|
|
188
188
|
return; // kept in cells; projected once the schema knows the table
|
|
189
|
-
const cells = this.#db.all('SELECT col, value, hlc FROM anodb_cells WHERE space = ? AND tbl = ? AND row_id = ?', [space, table, rowId]);
|
|
189
|
+
const cells = this.#db.all('SELECT col, value, hlc, by FROM anodb_cells WHERE space = ? AND tbl = ? AND row_id = ?', [space, table, rowId]);
|
|
190
190
|
const values = new Map();
|
|
191
191
|
let maxHlc = '';
|
|
192
|
+
let updatedBy = null;
|
|
192
193
|
for (const c of cells) {
|
|
193
194
|
values.set(c.col, JSON.parse(c.value));
|
|
194
|
-
if (c.hlc > maxHlc)
|
|
195
|
+
if (c.hlc > maxHlc) {
|
|
195
196
|
maxHlc = c.hlc;
|
|
197
|
+
updatedBy = c.by;
|
|
198
|
+
}
|
|
196
199
|
}
|
|
197
|
-
|
|
200
|
+
// A row whose id names its creator exists only once that creator created it (others may not
|
|
201
|
+
// write its $createdAt), so edits to a plain table cannot conjure a row in someone else's name.
|
|
202
|
+
const unborn = ownerOfRow(rowId) !== null && !values.has(SYS_CREATED);
|
|
203
|
+
if (values.get(SYS_DELETED) === true || cells.length === 0 || unborn) {
|
|
198
204
|
this.#db.run(`DELETE FROM ${quoteIdent(table)} WHERE space = ? AND id = ?`, [space, rowId]);
|
|
199
205
|
return;
|
|
200
206
|
}
|
|
@@ -206,8 +212,10 @@ export class Store {
|
|
|
206
212
|
...cols.map((c) => toSql(def[c], values.get(c))),
|
|
207
213
|
typeof created === 'number' ? created : null,
|
|
208
214
|
decodeHlc(maxHlc).millis,
|
|
215
|
+
ownerOfRow(rowId),
|
|
216
|
+
updatedBy,
|
|
209
217
|
];
|
|
210
|
-
const names = ['space', 'id', ...cols, 'createdAt', 'updatedAt'].map(quoteIdent).join(', ');
|
|
218
|
+
const names = ['space', 'id', ...cols, 'createdAt', 'updatedAt', 'createdBy', 'updatedBy'].map(quoteIdent).join(', ');
|
|
211
219
|
this.#db.run(`INSERT OR REPLACE INTO ${quoteIdent(table)} (${names}) VALUES (${params.map(() => '?').join(', ')})`, params);
|
|
212
220
|
}
|
|
213
221
|
// ---- spaces & keys -----------------------------------------------------------
|
|
@@ -281,17 +289,6 @@ export class Store {
|
|
|
281
289
|
forgetPrunable(eventId) {
|
|
282
290
|
this.#db.run('DELETE FROM anodb_prune WHERE event_id = ?', [eventId]);
|
|
283
291
|
}
|
|
284
|
-
// ---- public table rows ---------------------------------------------------------
|
|
285
|
-
publicRows(table, where, params) {
|
|
286
|
-
return this.#db.all(`SELECT * FROM ${quoteIdent(table)} WHERE space = '${PUBLIC_SPACE}' AND ${where}`, params);
|
|
287
|
-
}
|
|
288
|
-
putPublicRow(table, row) {
|
|
289
|
-
const cols = Object.keys(row);
|
|
290
|
-
this.#db.run(`INSERT OR REPLACE INTO ${quoteIdent(table)} (space, ${cols.map(quoteIdent).join(', ')}) VALUES ('${PUBLIC_SPACE}', ${cols.map(() => '?').join(', ')})`, cols.map((c) => row[c] ?? null));
|
|
291
|
-
}
|
|
292
|
-
deletePublicRows(table, where, params) {
|
|
293
|
-
this.#db.run(`DELETE FROM ${quoteIdent(table)} WHERE space = '${PUBLIC_SPACE}' AND ${where}`, params);
|
|
294
|
-
}
|
|
295
292
|
// ---- devices -------------------------------------------------------------------
|
|
296
293
|
putDevice(device, identity, delegation, name) {
|
|
297
294
|
this.#db.run('INSERT OR IGNORE INTO anodb_devices (device, identity, delegation, name) VALUES (?, ?, ?, ?)', [device, identity, delegation, name]);
|
|
@@ -305,17 +302,6 @@ export class Store {
|
|
|
305
302
|
.map((r) => ({ ...r, revoked: r.revoked === 1 }));
|
|
306
303
|
}
|
|
307
304
|
// ---- invitations ---------------------------------------------------------------
|
|
308
|
-
putInviteOut(secret, space, role, expires) {
|
|
309
|
-
this.#db.run('INSERT INTO anodb_invites_out (secret, space, role, expires) VALUES (?, ?, ?, ?)', [secret, space, role, expires]);
|
|
310
|
-
}
|
|
311
|
-
invitesOut() {
|
|
312
|
-
return this.#db
|
|
313
|
-
.all('SELECT secret, space, role, expires, used FROM anodb_invites_out')
|
|
314
|
-
.map((r) => ({ ...r, used: r.used === 1 }));
|
|
315
|
-
}
|
|
316
|
-
markInviteUsed(secret) {
|
|
317
|
-
this.#db.run('UPDATE anodb_invites_out SET used = 1 WHERE secret = ?', [secret]);
|
|
318
|
-
}
|
|
319
305
|
putInviteIn(space, sender, role, name, payload) {
|
|
320
306
|
this.#db.run(`INSERT INTO anodb_invites_in (space, sender, role, name, payload, status, received_at) VALUES (?, ?, ?, ?, ?, 'pending', ?)
|
|
321
307
|
ON CONFLICT(space) DO UPDATE SET sender = excluded.sender, role = excluded.role, name = excluded.name, payload = excluded.payload,
|
|
@@ -327,21 +313,6 @@ export class Store {
|
|
|
327
313
|
setInviteInStatus(space, status) {
|
|
328
314
|
this.#db.run('UPDATE anodb_invites_in SET status = ? WHERE space = ?', [status, space]);
|
|
329
315
|
}
|
|
330
|
-
putJoinRequest(id, secret, identity, payload) {
|
|
331
|
-
this.#db.run("INSERT OR IGNORE INTO anodb_join_requests (id, secret, identity, payload, status, received_at) VALUES (?, ?, ?, ?, 'pending', ?)", [
|
|
332
|
-
id,
|
|
333
|
-
secret,
|
|
334
|
-
identity,
|
|
335
|
-
payload,
|
|
336
|
-
Date.now(),
|
|
337
|
-
]);
|
|
338
|
-
}
|
|
339
|
-
joinRequests(status = 'pending') {
|
|
340
|
-
return this.#db.all('SELECT id, secret, identity, payload FROM anodb_join_requests WHERE status = ? ORDER BY received_at', [status]);
|
|
341
|
-
}
|
|
342
|
-
setJoinRequestStatus(id, status) {
|
|
343
|
-
this.#db.run('UPDATE anodb_join_requests SET status = ? WHERE id = ?', [status, id]);
|
|
344
|
-
}
|
|
345
316
|
/** Forget all spaces and data (device pairing adopts another identity). Keeps node id and clock. */
|
|
346
317
|
wipe() {
|
|
347
318
|
this.transaction(() => {
|
|
@@ -355,9 +326,7 @@ export class Store {
|
|
|
355
326
|
'anodb_acks',
|
|
356
327
|
'anodb_cursors',
|
|
357
328
|
'anodb_devices',
|
|
358
|
-
'anodb_invites_out',
|
|
359
329
|
'anodb_invites_in',
|
|
360
|
-
'anodb_join_requests',
|
|
361
330
|
]) {
|
|
362
331
|
this.#db.run(`DELETE FROM ${t}`);
|
|
363
332
|
}
|
|
@@ -457,25 +426,5 @@ export class Store {
|
|
|
457
426
|
resetCursors() {
|
|
458
427
|
this.#db.run('DELETE FROM anodb_cursors');
|
|
459
428
|
}
|
|
460
|
-
// ---- public (replaceable) event cache ---------------------------------
|
|
461
|
-
getPublic(pubkey, kind) {
|
|
462
|
-
const row = this.#db.all('SELECT event, fetched_at FROM anodb_public WHERE pubkey = ? AND kind = ?', [
|
|
463
|
-
pubkey,
|
|
464
|
-
kind,
|
|
465
|
-
])[0];
|
|
466
|
-
return row && { event: JSON.parse(row.event), fetchedAt: row.fetched_at };
|
|
467
|
-
}
|
|
468
|
-
putPublic(event, pubkey, kind, fetchedAt) {
|
|
469
|
-
const existing = this.getPublic(pubkey, kind);
|
|
470
|
-
const newer = event &&
|
|
471
|
-
(!existing || event.created_at > existing.event.created_at || (event.created_at === existing.event.created_at && event.id < existing.event.id));
|
|
472
|
-
if (newer) {
|
|
473
|
-
this.#db.run(`INSERT INTO anodb_public (pubkey, kind, event, created_at, fetched_at) VALUES (?, ?, ?, ?, ?)
|
|
474
|
-
ON CONFLICT(pubkey, kind) DO UPDATE SET event = excluded.event, created_at = excluded.created_at, fetched_at = excluded.fetched_at`, [pubkey, kind, JSON.stringify(event), event.created_at, fetchedAt]);
|
|
475
|
-
}
|
|
476
|
-
else if (existing) {
|
|
477
|
-
this.#db.run('UPDATE anodb_public SET fetched_at = ? WHERE pubkey = ? AND kind = ?', [fetchedAt, pubkey, kind]);
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
429
|
}
|
|
481
430
|
//# sourceMappingURL=store.js.map
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAGvH,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCvB,CAAA;AAaD;;;;GAIG;AACH,MAAM,OAAO,KAAK;IACP,GAAG,CAAc;IAC1B,OAAO,GAAqB,EAAE,CAAA;IAC9B,MAAM,GAAG,CAAC,CAAA;IAEV,OAAO,GAAG,KAAK,CAAA;IAEf,YAAY,EAAgB;QAC1B,4FAA4F;QAC5F,2EAA2E;QAC3E,IAAI,CAAC,GAAG,GAAG;YACT,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,OAAO;oBAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACjC,CAAC;YACD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,OAAO;oBAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YACxC,CAAC;YACD,GAAG,EAAE,CAAI,GAAW,EAAE,MAA4B,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAI,GAAG,EAAE,MAAM,CAAC,CAAC;YACnG,KAAK,EAAE,GAAG,EAAE;gBACV,IAAI,IAAI,CAAC,OAAO;oBAAE,OAAM;gBACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;gBACnB,EAAE,CAAC,KAAK,EAAE,CAAA;YACZ,CAAC;SACF,CAAA;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC9B,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,4BAA4B,CAAC,CAAA;QACtE,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,YAAY,EAAE,4BAA4B,CAAC,CAAA;QAC9E,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAA;QACzE,iFAAiF;QACjF,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,kGAAkG;IAClG,aAAa,CAAC,KAAa,EAAE,MAAc,EAAE,GAAW;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAmB,qBAAqB,KAAK,GAAG,CAAC,CAAA;QAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,eAAe,MAAM,IAAI,GAAG,EAAE,CAAC,CAAA;IAC7G,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,WAAW,CAAI,EAAW;QACxB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,EAAE,CAAA;QAChC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAChC,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,EAAE,CAAA;YACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACvB,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACzB,MAAM,CAAC,CAAA;QACT,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,MAAM,EAAE,CAAA;QACf,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAoB,4CAA4C,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAA;IACvG,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,KAAa;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,yGAAyG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;IACvI,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,sCAAsC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED,4CAA4C;IAC5C,OAAO,CAAC,KAAa;QACnB,MAAM,GAAG,GAAG,OAAO,KAAK,EAAE,CAAA;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,6EAA6E;IAE7E,WAAW,CAAC,MAAwB,EAAE,YAAoB,EAAE,KAAc;QACxE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;YACpB,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClD,MAAM,EAAE,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,YAAY,IAAI,KAAK,IAAI,EAAE,EAAE,CAAA;gBACpE,MAAM,GAAG,GAAG,UAAU,KAAK,EAAE,CAAA;gBAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE;oBAAE,SAAQ;gBACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBAC1D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAoC,8DAA8D,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;gBACrI,KAAK,MAAM,CAAC,IAAI,IAAI;oBAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;gBAC7D,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YACvB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,KAAa,EAAE,OAA0B,EAAE,EAAW;QACjE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAA;QAC5C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;YAC5C,MAAM,MAAM,GAAI,CAAwB,CAAC,CAAC,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAA;YAClG,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAC1B,oFAAoF,EACpF,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAC9B,CAAC,CAAC,CAAC,CAAA;YACJ,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG;gBAAE,SAAQ;YAC3C,IAAI,CAAC,GAAG,CAAC,GAAG,CACV;yHACiH,EACjH,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAC1E,CAAA;YACD,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC3B,IAAI,CAAC,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAA;YAC/C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC;QACD,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;YAClC,KAAK,MAAM,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QAC9D,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED,2GAA2G;IAC3G,KAAK,CAAC,KAAa;QACjB,OAAO,IAAI,CAAC,GAAG;aACZ,GAAG,CACF,oGAAoG,EACpG,CAAC,KAAK,CAAC,CACR;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAsB,CAAC,CAAA;IAChK,CAAC;IAED,kFAAkF;IAClF,UAAU,CAAC,KAAa;QACtB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAkB,sDAAsD,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACxI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,yCAAyC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QAChE,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,UAAU,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QACpH,OAAO,MAAM,CAAA;IACf,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,KAAa,EAAE,KAAa;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC/B,IAAI,CAAC,GAAG;YAAE,OAAM,CAAC,2DAA2D;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CACxB,wFAAwF,EACxF,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CACtB,CAAA;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAA;QACzC,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,SAAS,GAAkB,IAAI,CAAA;QACnC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;YACtC,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC;gBACnB,MAAM,GAAG,CAAC,CAAC,GAAG,CAAA;gBACd,SAAS,GAAG,CAAC,CAAC,EAAE,CAAA;YAClB,CAAC;QACH,CAAC;QACD,4FAA4F;QAC5F,gGAAgG;QAChG,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACrE,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,UAAU,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;YAC3F,OAAM;QACR,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACvC,MAAM,MAAM,GAAe;YACzB,KAAK;YACL,KAAK;YACL,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YAC5C,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM;YACxB,UAAU,CAAC,KAAK,CAAC;YACjB,SAAS;SACV,CAAA;QACD,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,0BAA0B,UAAU,CAAC,KAAK,CAAC,KAAK,KAAK,aAAa,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC7H,CAAC;IAED,iFAAiF;IAEjF,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG;aACZ,GAAG,CAAiE,6EAA6E,CAAC;aAClJ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,WAAW,CAAC,EAAU,EAAE,IAAY,EAAE,QAAiB,EAAE,MAAM,GAAG,QAAQ;QACxE,IAAI,CAAC,GAAG,CAAC,GAAG,CACV;oFAC8E,EAC9E,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CACjD,CAAA;IACH,CAAC;IAED,cAAc,CAAC,EAAU,EAAE,MAAc;QACvC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iDAAiD,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;IAC/E,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,KAAa,EAAE,GAAW,EAAE,MAAkB;QAClE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kGAAkG,EAAE;YAC/G,KAAK;YACL,KAAK;YACL,GAAG;YACH,MAAM;YACN,IAAI,CAAC,GAAG,EAAE;SACX,CAAC,CAAA;IACJ,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,GAAG;aACZ,GAAG,CACF,+DAA+D,CAChE;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IAC7H,CAAC;IAED,mFAAmF;IAEnF,UAAU,CAAC,KAAa,EAAE,MAAc,EAAE,GAAW;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,yEAAyE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IACjI,CAAC;IAED,UAAU,CAAC,CAAgB,EAAE,KAAa,EAAE,KAAa;QACvD,IAAI,CAAC,GAAG,CAAC,GAAG,CACV,mJAAmJ,EACnJ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CACpF,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,MAAM,CAAC,KAAa,EAAE,IAAY;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAoB,4FAA4F,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACzK,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CACjB,+FAA+F,EAC/F,CAAC,KAAK,CAAC,CACR,CAAA;IACH,CAAC;IAED,gFAAgF;IAChF,aAAa,CAAC,KAAa,EAAE,QAAiB,EAAE,MAAe;QAC7D,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,CAAA;QAC3B,MAAM,MAAM,GAAe,CAAC,KAAK,CAAC,CAAA;QAClC,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YAC1B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvB,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACxB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAgC,0DAA0D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;QACjK,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED,aAAa,CAAC,KAAa,EAAE,IAAY,EAAE,aAAa,GAAG,CAAC;QAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAgB,2FAA2F,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IAC1K,CAAC;IAED,oFAAoF;IAEpF,WAAW,CAAC,OAAe,EAAE,IAAY,EAAE,GAAW,EAAE,SAAiB;QACvE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,yFAAyF,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;IAC1I,CAAC;IAED,QAAQ,CAAC,IAAuB,EAAE,MAAc;QAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CACjB,sFAAsF,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EACtH,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAClB,CAAA;IACH,CAAC;IAED,cAAc,CAAC,OAAe;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,4CAA4C,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IACvE,CAAC;IAED,mFAAmF;IAEnF,SAAS,CAAC,MAAc,EAAE,QAAgB,EAAE,UAAkB,EAAE,IAAY;QAC1E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,8FAA8F,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;IACpJ,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,uDAAuD,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IACjF,CAAC;IAED,OAAO,CAAC,QAAiB;QACvB,OAAO,IAAI,CAAC,GAAG;aACZ,GAAG,CACF,wEAAwE,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAC/H,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAC3B;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,mFAAmF;IAEnF,WAAW,CAAC,KAAa,EAAE,MAAc,EAAE,IAAY,EAAE,IAAY,EAAE,OAAe;QACpF,IAAI,CAAC,GAAG,CAAC,GAAG,CACV;;oGAE8F,EAC9F,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CACjD,CAAA;IACH,CAAC;IAED,SAAS,CAAC,MAAe;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CACjB,0EAA0E,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAClI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CACvB,CAAA;IACH,CAAC;IAED,iBAAiB,CAAC,KAAa,EAAE,MAAc;QAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,wDAAwD,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IACzF,CAAC;IAED,oGAAoG;IACpG,IAAI;QACF,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;YACpB,KAAK,MAAM,CAAC,IAAI;gBACd,cAAc;gBACd,YAAY;gBACZ,gBAAgB;gBAChB,aAAa;gBACb,WAAW;gBACX,cAAc;gBACd,YAAY;gBACZ,eAAe;gBACf,eAAe;gBACf,kBAAkB;aACnB,EAAE,CAAC;gBACF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,2FAA2F,CAAC,CAAA;YACzG,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACzF,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,IAAa;QACnC,MAAM,GAAG,GAAG,yFAAyF,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,uBAAuB,CAAA;QACvJ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAgB,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IACzE,CAAC;IAED,8EAA8E;IAC9E,SAAS,CAAC,KAAa;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CACjB,0GAA0G,EAC1G,CAAC,KAAK,CAAC,CACR,CAAA;IACH,CAAC;IAED,mFAAmF;IAEnF,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,sCAAsC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IAC9E,CAAC;IAED,mGAAmG;IACnG,MAAM,CAAC,KAAiB,EAAE,GAAW,EAAE,QAAQ,GAAG,IAAI;QACpD,IAAI,CAAC,GAAG,CAAC,GAAG,CACV;wEACkE,EAClE,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3E,CAAA;IACH,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,6CAA6C,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,QAAQ,CAAC,IAAuB;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CACjB,oEAAoE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EACpG,IAAI,CACL,CAAA;IACH,CAAC;IAED,MAAM,CAAC,EAAU;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAoB,0CAA0C,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9F,OAAO,CAAC,IAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAgB,CAAA;IACjD,CAAC;IAED,mFAAmF;IAEnF,OAAO,CAAC,KAAiB,EAAE,MAAe,EAAE,SAAS,GAAG,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,sGAAsG,EAAE;YACnH,KAAK,CAAC,EAAE;YACR,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,GAAG,EAAE;YACV,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACd,SAAS;SACV,CAAC,CAAA;IACJ,CAAC;IAED,wEAAwE;IACxE,aAAa,CAAC,OAAe;QAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,qDAAqD,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAChF,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CACvB,+EAA+E,CAChF,CAAA;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAyD,gDAAgD,CAAC,CAAA;QACnI,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAA;QACzD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YAC/B,IAAI,CAAC,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAA;YAChD,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,OAAO,EAAE,CAAC,CAAC,EAAE;YACb,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAe;YACxC,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC;YACtB,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,EAAE;SACrC,CAAC,CAAC,CAAA;IACL,CAAC;IAED,kBAAkB,CAAC,OAAe,EAAE,KAAiB;QACnD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gDAAgD,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IAClG,CAAC;IAED,eAAe;QACb,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;IAClE,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAgB,wCAAwC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IACzF,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,KAAa,EAAE,MAAiB,EAAE,OAAe;QAC1E,IAAI,CAAC,GAAG,CAAC,GAAG,CACV;uGACiG,EACjG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAClC,CAAA;IACH,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;YACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,uCAAuC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;YAChE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,2CAA2C,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;QACtE,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,mFAAmF;IAEnF,SAAS,CAAC,KAAa,EAAE,GAAW;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAoB,6DAA6D,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAA;IAC/H,CAAC;IAED,aAAa,CAAC,KAAa,EAAE,GAAW,EAAE,SAAiB;QACzD,IAAI,CAAC,GAAG,CAAC,GAAG,CACV;gFAC0E,EAC1E,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CACxB,CAAA;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;IAC3C,CAAC;CACF"}
|
package/dist/ui.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import type { Role } from './membership.js';
|
|
3
|
-
import type { Device, Invitation,
|
|
3
|
+
import type { Device, Invitation, Member } from './sharing.js';
|
|
4
4
|
import type { SpaceInfo } from './db.js';
|
|
5
5
|
/** The parts of AnoDB these components use. */
|
|
6
6
|
export interface SharingDB {
|
|
@@ -12,14 +12,7 @@ export interface SharingDB {
|
|
|
12
12
|
roleIn(space: string): Role | undefined;
|
|
13
13
|
setRole(space: string, who: string, role: Exclude<Role, 'owner'>): Promise<void>;
|
|
14
14
|
removeMember(space: string, who: string): Promise<void>;
|
|
15
|
-
|
|
16
|
-
role?: Exclude<Role, 'owner'>;
|
|
17
|
-
expiresInMs?: number;
|
|
18
|
-
}): Promise<string>;
|
|
19
|
-
requestJoin(link: string, name?: string): Promise<void>;
|
|
20
|
-
joinRequests(): JoinRequest[];
|
|
21
|
-
approveJoinRequest(id: string): Promise<void>;
|
|
22
|
-
rejectJoinRequest(id: string): void;
|
|
15
|
+
addMember(space: string, who: string, role: Exclude<Role, 'owner'>): Promise<void>;
|
|
23
16
|
invitations(): Invitation[];
|
|
24
17
|
acceptInvitation(space: string): Promise<void>;
|
|
25
18
|
declineInvitation(space: string): void;
|
|
@@ -60,20 +53,10 @@ declare const en: {
|
|
|
60
53
|
revoked: string;
|
|
61
54
|
revoke: string;
|
|
62
55
|
confirmRevoke: string;
|
|
63
|
-
invite: string;
|
|
64
56
|
role: string;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
none: string;
|
|
69
|
-
approveRequest: string;
|
|
70
|
-
reject: string;
|
|
71
|
-
cannotInvite: string;
|
|
72
|
-
join: string;
|
|
73
|
-
inviteLink: string;
|
|
74
|
-
yourName: string;
|
|
75
|
-
requestJoin: string;
|
|
76
|
-
requested: string;
|
|
57
|
+
addMember: string;
|
|
58
|
+
add: string;
|
|
59
|
+
added: string;
|
|
77
60
|
joined: string;
|
|
78
61
|
invitations: string;
|
|
79
62
|
accept: string;
|
|
@@ -102,7 +85,7 @@ export declare function toAppLink(uri: string, base?: string): string;
|
|
|
102
85
|
/** Accepts an `anodb://…` link or an app link (`…#anodb=…`) and returns the `anodb://` link. */
|
|
103
86
|
export declare function parseAppLink(text: string): string | null;
|
|
104
87
|
/** An `anodb://<kind>` link this page was opened with (`#anodb=…`), and a way to clear it. */
|
|
105
|
-
export declare function useIncomingLink(kind: 'pair'
|
|
88
|
+
export declare function useIncomingLink(kind: 'pair'): [string | null, () => void];
|
|
106
89
|
/** QR code as SVG (dark modules use `currentColor`). */
|
|
107
90
|
export declare function QRCode(props: {
|
|
108
91
|
value: string;
|
|
@@ -125,29 +108,16 @@ export interface PairDeviceProps extends CommonProps {
|
|
|
125
108
|
export declare function PairDevice(props: PairDeviceProps): import("react").JSX.Element;
|
|
126
109
|
/** Your devices, with a revoke button for each other device. */
|
|
127
110
|
export declare function DeviceList(props: CommonProps): import("react").JSX.Element;
|
|
128
|
-
export interface
|
|
111
|
+
export interface AddMemberProps extends CommonProps {
|
|
129
112
|
space: string;
|
|
130
|
-
/** Link lifetime. Default 24 h. */
|
|
131
|
-
expiresInMs?: number;
|
|
132
|
-
/** Show join requests below the link. Default true. */
|
|
133
|
-
showRequests?: boolean;
|
|
134
|
-
linkBase?: string;
|
|
135
|
-
}
|
|
136
|
-
/** One-time invite link (with QR code) for a space, and the join requests waiting for approval. */
|
|
137
|
-
export declare function InviteLink(props: InviteLinkProps): import("react").JSX.Element;
|
|
138
|
-
/** Join requests for one space (or all spaces) with approve / reject. */
|
|
139
|
-
export declare function JoinRequests(props: CommonProps & {
|
|
140
|
-
space?: string;
|
|
141
|
-
}): import("react").JSX.Element;
|
|
142
|
-
export interface JoinSpaceProps extends CommonProps {
|
|
143
|
-
/** Called with the space id once you are a member. */
|
|
144
|
-
onJoined?: (space: string) => void;
|
|
145
|
-
/** Pre-filled name shown to the admin. */
|
|
146
|
-
defaultName?: string;
|
|
147
113
|
}
|
|
148
|
-
/**
|
|
149
|
-
|
|
150
|
-
|
|
114
|
+
/**
|
|
115
|
+
* Add someone to a space by npub (owners / admins). They must have published a key package
|
|
116
|
+
* (`db.publishKeyPackage()`); they then see an invitation to accept. Deciding *who* may join —
|
|
117
|
+
* links, approval, sign-in with an external provider — is left to the app or anoAuth.
|
|
118
|
+
*/
|
|
119
|
+
export declare function AddMember(props: AddMemberProps): import("react").JSX.Element | null;
|
|
120
|
+
/** Invitations sent to your npub (`db.addMember(space, npub, role)`), with accept / decline. */
|
|
151
121
|
export declare function Invitations(props: CommonProps & {
|
|
152
122
|
onJoined?: (space: string) => void;
|
|
153
123
|
}): import("react").JSX.Element | null;
|
package/dist/ui.js
CHANGED
|
@@ -6,8 +6,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
*
|
|
7
7
|
* <PairDevice /> add a device to your identity (QR code + safety code)
|
|
8
8
|
* <DeviceList /> your devices, with revoke
|
|
9
|
-
* <
|
|
10
|
-
* <
|
|
9
|
+
* <AddMember space={id} /> add someone by npub (owners / admins)
|
|
10
|
+
* <Invitations /> spaces you were added to, with accept / decline
|
|
11
11
|
* <Members space={id} /> members with roles (owners / admins can change them)
|
|
12
12
|
*
|
|
13
13
|
* Links and QR codes are ordinary `https://your-app/#anodb=…` URLs: scanning one with a phone's
|
|
@@ -16,6 +16,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
16
16
|
*/
|
|
17
17
|
import qrcode from 'qrcode-generator';
|
|
18
18
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
19
|
+
import { LINK_CHANNEL } from './links.js';
|
|
19
20
|
import { useAnoDB } from './react.js';
|
|
20
21
|
const en = {
|
|
21
22
|
addDevice: 'Add a device',
|
|
@@ -39,20 +40,10 @@ const en = {
|
|
|
39
40
|
revoked: 'revoked',
|
|
40
41
|
revoke: 'Revoke',
|
|
41
42
|
confirmRevoke: 'Revoke for good?',
|
|
42
|
-
invite: 'Invite',
|
|
43
43
|
role: 'Role',
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
none: 'None',
|
|
48
|
-
approveRequest: 'Approve',
|
|
49
|
-
reject: 'Reject',
|
|
50
|
-
cannotInvite: 'Only owners and admins can invite.',
|
|
51
|
-
join: 'Join with a link',
|
|
52
|
-
inviteLink: 'Invite link',
|
|
53
|
-
yourName: 'Your name (shown to the admin)',
|
|
54
|
-
requestJoin: 'Request to join',
|
|
55
|
-
requested: 'Request sent. You join as soon as an admin approves it.',
|
|
44
|
+
addMember: 'Add a member',
|
|
45
|
+
add: 'Add',
|
|
46
|
+
added: 'Added. They see an invitation the next time they open the app.',
|
|
56
47
|
joined: 'Joined',
|
|
57
48
|
invitations: 'Invitations',
|
|
58
49
|
accept: 'Accept',
|
|
@@ -85,20 +76,10 @@ const ja = {
|
|
|
85
76
|
revoked: '失効済み',
|
|
86
77
|
revoke: '失効',
|
|
87
78
|
confirmRevoke: '本当に失効させますか?',
|
|
88
|
-
invite: '招待',
|
|
89
79
|
role: '役割',
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
none: 'なし',
|
|
94
|
-
approveRequest: '承認',
|
|
95
|
-
reject: '拒否',
|
|
96
|
-
cannotInvite: '招待できるのはオーナーと管理者だけです。',
|
|
97
|
-
join: 'リンクで参加',
|
|
98
|
-
inviteLink: '招待リンク',
|
|
99
|
-
yourName: 'あなたの名前(管理者に表示されます)',
|
|
100
|
-
requestJoin: '参加をリクエスト',
|
|
101
|
-
requested: 'リクエストを送りました。管理者が承認すると参加できます。',
|
|
80
|
+
addMember: 'メンバーを追加',
|
|
81
|
+
add: '追加',
|
|
82
|
+
added: '追加しました。相手が次にアプリを開くと招待が表示されます。',
|
|
102
83
|
joined: '参加しました',
|
|
103
84
|
invitations: '招待',
|
|
104
85
|
accept: '参加する',
|
|
@@ -179,7 +160,21 @@ export function useIncomingLink(kind) {
|
|
|
179
160
|
};
|
|
180
161
|
read();
|
|
181
162
|
window.addEventListener('hashchange', read);
|
|
182
|
-
|
|
163
|
+
// A link opened in another tab while this one holds the database (see browserDriver).
|
|
164
|
+
const ch = typeof BroadcastChannel !== 'undefined' ? new BroadcastChannel(LINK_CHANNEL) : null;
|
|
165
|
+
if (ch)
|
|
166
|
+
ch.onmessage = (e) => {
|
|
167
|
+
const l = typeof e.data?.href === 'string' ? parseAppLink(e.data.href) : null;
|
|
168
|
+
if (!l || parseAppLink(location.href) === l)
|
|
169
|
+
return;
|
|
170
|
+
// Put it in this page's URL so every useIncomingLink (including ones mounted later) sees it.
|
|
171
|
+
history.replaceState(null, '', `${location.pathname}${location.search}#anodb=${encodeURIComponent(l)}`);
|
|
172
|
+
window.dispatchEvent(new HashChangeEvent('hashchange'));
|
|
173
|
+
};
|
|
174
|
+
return () => {
|
|
175
|
+
window.removeEventListener('hashchange', read);
|
|
176
|
+
ch?.close();
|
|
177
|
+
};
|
|
183
178
|
}, [kind]);
|
|
184
179
|
const clear = useCallback(() => {
|
|
185
180
|
setLink(null);
|
|
@@ -315,70 +310,34 @@ export function DeviceList(props) {
|
|
|
315
310
|
}
|
|
316
311
|
// ---- sharing ---------------------------------------------------------------------------------
|
|
317
312
|
const MANAGER = { owner: true, admin: true };
|
|
318
|
-
/**
|
|
319
|
-
|
|
313
|
+
/**
|
|
314
|
+
* Add someone to a space by npub (owners / admins). They must have published a key package
|
|
315
|
+
* (`db.publishKeyPackage()`); they then see an invitation to accept. Deciding *who* may join —
|
|
316
|
+
* links, approval, sign-in with an external provider — is left to the app or anoAuth.
|
|
317
|
+
*/
|
|
318
|
+
export function AddMember(props) {
|
|
320
319
|
const l = useLabels(props);
|
|
321
320
|
const db = useSharingDB();
|
|
322
321
|
const me = useLive((d) => d.roleIn(props.space), [props.space]);
|
|
323
322
|
const roles = me === 'owner' ? ['writer', 'reader', 'admin'] : ['writer', 'reader'];
|
|
324
323
|
const [role, setRole] = useState('writer');
|
|
325
|
-
const [
|
|
326
|
-
const
|
|
327
|
-
const expires = props.expiresInMs ?? 24 * 3600_000;
|
|
328
|
-
useEffect(() => setLink(null), [props.space]);
|
|
329
|
-
if (!me || !MANAGER[me]) {
|
|
330
|
-
return (_jsx("p", { className: props.className ?? 'anodb-invite', style: { margin: 0 }, children: l.cannotInvite }));
|
|
331
|
-
}
|
|
332
|
-
return (_jsxs("section", { className: props.className ?? 'anodb-invite', style: col, children: [_jsx("h3", { style: { margin: 0 }, children: l.invite }), _jsxs("div", { style: row, children: [_jsx("select", { className: "anodb-select", "aria-label": l.role, value: role, onChange: (e) => setRole(e.target.value), children: roles.map((r) => (_jsx("option", { value: r, children: r }, r))) }), _jsx("button", { className: "anodb-button", onClick: () => void run(db.createInviteLink(props.space, { role, expiresInMs: expires })).then((u) => u && setLink(toAppLink(u, props.linkBase))), children: l.createLink })] }), link && (_jsxs("div", { style: col, children: [_jsx(QRCode, { value: link, title: l.inviteLink }), _jsx("span", { style: mono, children: link }), _jsx("div", { style: row, children: _jsx(CopyButton, { text: link, l: l }) }), _jsx("span", { className: "anodb-hint", children: l.linkHint.replace('{hours}', String(Math.round(expires / 3600_000))) })] })), _jsx(ErrorText, { error: error }), props.showRequests !== false && _jsx(JoinRequests, { space: props.space, ...(props.lang ? { lang: props.lang } : {}), ...(props.labels ? { labels: props.labels } : {}) })] }));
|
|
333
|
-
}
|
|
334
|
-
/** Join requests for one space (or all spaces) with approve / reject. */
|
|
335
|
-
export function JoinRequests(props) {
|
|
336
|
-
const l = useLabels(props);
|
|
337
|
-
const db = useSharingDB();
|
|
338
|
-
const requests = useLive((d) => d.joinRequests().filter((r) => !props.space || r.space === props.space), [props.space]);
|
|
324
|
+
const [npub, setNpub] = useState('');
|
|
325
|
+
const [done, setDone] = useState(false);
|
|
339
326
|
const { error, run } = useErr();
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
const before = useRef(null);
|
|
353
|
-
const onJoined = props.onJoined;
|
|
354
|
-
useEffect(() => {
|
|
355
|
-
if (incoming)
|
|
356
|
-
setText(incoming);
|
|
357
|
-
}, [incoming]);
|
|
358
|
-
useEffect(() => {
|
|
359
|
-
if (!before.current)
|
|
360
|
-
return;
|
|
361
|
-
const added = spaces.find((s) => !before.current.has(s));
|
|
362
|
-
if (added) {
|
|
363
|
-
before.current = null;
|
|
364
|
-
setSent(false);
|
|
365
|
-
onJoined?.(added);
|
|
366
|
-
}
|
|
367
|
-
}, [spaces, onJoined]);
|
|
368
|
-
return (_jsxs("section", { className: props.className ?? 'anodb-join', style: col, children: [_jsx("h3", { style: { margin: 0 }, children: l.join }), _jsxs("form", { style: col, onSubmit: (e) => {
|
|
369
|
-
e.preventDefault();
|
|
370
|
-
const uri = parseAppLink(text);
|
|
371
|
-
if (!uri?.startsWith('anodb://join'))
|
|
372
|
-
return setError(l.invalidLink);
|
|
373
|
-
before.current = new Set(spaces);
|
|
374
|
-
void run(db.requestJoin(uri, name.trim())).then(() => {
|
|
375
|
-
setSent(true);
|
|
376
|
-
setText('');
|
|
377
|
-
clearIncoming();
|
|
378
|
-
});
|
|
379
|
-
}, children: [_jsx("input", { className: "anodb-input", "aria-label": l.inviteLink, placeholder: l.inviteLink, value: text, onChange: (e) => setText(e.target.value) }), _jsxs("div", { style: row, children: [_jsx("input", { className: "anodb-input", "aria-label": l.yourName, placeholder: l.yourName, value: name, onChange: (e) => setName(e.target.value), style: { flex: 1, minWidth: 0 } }), _jsx("button", { className: "anodb-button", children: l.requestJoin })] })] }), sent && _jsx("span", { className: "anodb-hint", children: l.requested }), _jsx(ErrorText, { error: error }), _jsx(Invitations, { ...props })] }));
|
|
327
|
+
if (!me || !MANAGER[me])
|
|
328
|
+
return null;
|
|
329
|
+
return (_jsxs("form", { className: props.className ?? 'anodb-add-member', style: col, onSubmit: (e) => {
|
|
330
|
+
e.preventDefault();
|
|
331
|
+
setDone(false);
|
|
332
|
+
void run(db.addMember(props.space, npub.trim(), role).then(() => true)).then((ok) => {
|
|
333
|
+
if (!ok)
|
|
334
|
+
return;
|
|
335
|
+
setNpub('');
|
|
336
|
+
setDone(true);
|
|
337
|
+
});
|
|
338
|
+
}, children: [_jsx("h3", { style: { margin: 0 }, children: l.addMember }), _jsx("input", { className: "anodb-input", "aria-label": "npub", placeholder: "npub1\u2026", value: npub, onChange: (e) => setNpub(e.target.value) }), _jsxs("div", { style: row, children: [_jsx("select", { className: "anodb-select", "aria-label": l.role, value: role, onChange: (e) => setRole(e.target.value), children: roles.map((r) => (_jsx("option", { value: r, children: r }, r))) }), _jsx("button", { className: "anodb-button", disabled: !npub.trim(), children: l.add })] }), done && (_jsx("span", { className: "anodb-hint", role: "status", children: l.added })), _jsx(ErrorText, { error: error })] }));
|
|
380
339
|
}
|
|
381
|
-
/** Invitations sent to your npub (`db.
|
|
340
|
+
/** Invitations sent to your npub (`db.addMember(space, npub, role)`), with accept / decline. */
|
|
382
341
|
export function Invitations(props) {
|
|
383
342
|
const l = useLabels(props);
|
|
384
343
|
const db = useSharingDB();
|