@agentunion/fastaun-browser 0.5.1 → 0.5.3

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 (88) hide show
  1. package/CHANGELOG.md +570 -504
  2. package/_packed_docs/CHANGELOG-validators.md +134 -131
  3. package/_packed_docs/CHANGELOG.md +570 -504
  4. package/_packed_docs/INDEX.md +65 -52
  5. package/_packed_docs/KITE_DOCS_GUIDE.md +23 -18
  6. package/_packed_docs/agent.md//350/277/234/347/250/213agent.md/347/274/223/345/255/230/344/270/216etag/351/200/217/344/274/240/346/226/271/346/241/210.md +169 -116
  7. package/_packed_docs/aun-perf-audit-critical-bugs.md +315 -0
  8. package/_packed_docs/cli/AUN-CLI/350/256/276/350/256/241/346/226/207/346/241/243.md +263 -261
  9. package/_packed_docs/cli/CLI/346/211/213/345/206/214.md +328 -328
  10. package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +2 -2
  11. package/_packed_docs/protocol/00A-/350/256/276/350/256/241/345/216/237/345/210/231-/344/270/272Agent/350/200/214/347/224/237.md +1 -1
  12. package/_packed_docs/protocol/01-/350/272/253/344/273/275/344/270/216/345/207/255/350/257/201/345/215/217/350/256/256-auth.md +39 -16
  13. package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +8 -5
  14. package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +18 -19
  15. package/_packed_docs/protocol/07-/351/224/231/350/257/257/347/240/201/344/270/216/347/212/266/346/200/201/346/234/272.md +1 -1
  16. package/_packed_docs/protocol/08-AUN-E2EE-Group.md +293 -294
  17. package/_packed_docs/protocol/08-AUN-E2EE.md +12 -10
  18. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +183 -60
  19. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +4 -4
  20. package/_packed_docs/protocol/15-/347/246/273/347/272/277/346/216/250/351/200/201/351/200/232/347/237/245/345/215/217/350/256/256.md +1 -1
  21. package/_packed_docs/protocol/16-/347/263/273/347/273/237/347/233/256/345/275/225/344/277/235/346/212/244/346/226/271/346/241/210.md +177 -177
  22. package/_packed_docs/protocol/README.md +7 -6
  23. package/_packed_docs/protocol/aun-docs-guide.md +5 -4
  24. package/_packed_docs/protocol/index.md +9 -8
  25. package/_packed_docs/protocol//350/215/211/346/241/210-/346/213/222/347/273/235/344/277/241/345/217/267/345/215/217/350/256/256.md +1 -1
  26. package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +13 -13
  27. package/_packed_docs/protocol//351/231/204/345/275/225L-E2EE/345/256/236/347/216/260/346/214/207/345/215/227.md +9 -9
  28. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +15 -13
  29. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +20 -1
  30. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +26 -18
  31. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +33 -34
  32. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +274 -4
  33. package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +41 -13
  34. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +28 -12
  35. package/_packed_docs/sdk/09-group-rpc-manual.md +237 -142
  36. package/_packed_docs/sdk/09-message-rpc-manual.md +50 -28
  37. package/_packed_docs/sdk/09-payload-reference.md +3 -3
  38. package/_packed_docs/sdk/09-storage-rpc-manual.md +1 -1
  39. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +12 -9
  40. package/_packed_docs/sdk/E2EE_V2/346/266/210/346/201/257/351/200/232/344/277/241/346/227/266/345/272/217/345/233/276.md +3 -2
  41. package/_packed_docs/sdk/INDEX.md +29 -28
  42. package/_packed_docs/sdk/Notify/351/200/232/347/237/245/346/226/271/346/241/210.md +6 -2
  43. package/dist/agent-md.d.ts.map +1 -1
  44. package/dist/agent-md.js +18 -9
  45. package/dist/agent-md.js.map +1 -1
  46. package/dist/bundle.js +1084 -272
  47. package/dist/client/delivery.d.ts +4 -0
  48. package/dist/client/delivery.d.ts.map +1 -1
  49. package/dist/client/delivery.js +174 -7
  50. package/dist/client/delivery.js.map +1 -1
  51. package/dist/client/v2-e2ee.d.ts.map +1 -1
  52. package/dist/client/v2-e2ee.js +79 -8
  53. package/dist/client/v2-e2ee.js.map +1 -1
  54. package/dist/client.d.ts +27 -1
  55. package/dist/client.d.ts.map +1 -1
  56. package/dist/client.js +118 -12
  57. package/dist/client.js.map +1 -1
  58. package/dist/facades.d.ts +6 -0
  59. package/dist/facades.d.ts.map +1 -1
  60. package/dist/facades.js +213 -33
  61. package/dist/facades.js.map +1 -1
  62. package/dist/group-index.d.ts +105 -0
  63. package/dist/group-index.d.ts.map +1 -0
  64. package/dist/group-index.js +252 -0
  65. package/dist/group-index.js.map +1 -0
  66. package/dist/index.d.ts +1 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +1 -0
  69. package/dist/index.js.map +1 -1
  70. package/dist/keystore/index.d.ts +15 -0
  71. package/dist/keystore/index.d.ts.map +1 -1
  72. package/dist/keystore/indexeddb-shared.d.ts +7 -1
  73. package/dist/keystore/indexeddb-shared.d.ts.map +1 -1
  74. package/dist/keystore/indexeddb-shared.js +63 -2
  75. package/dist/keystore/indexeddb-shared.js.map +1 -1
  76. package/dist/keystore/indexeddb-token-store.d.ts +3 -1
  77. package/dist/keystore/indexeddb-token-store.d.ts.map +1 -1
  78. package/dist/keystore/indexeddb-token-store.js +22 -1
  79. package/dist/keystore/indexeddb-token-store.js.map +1 -1
  80. package/dist/tools/cross-sdk-agent.js +3 -1
  81. package/dist/tools/cross-sdk-agent.js.map +1 -1
  82. package/dist/transport.d.ts +2 -1
  83. package/dist/transport.d.ts.map +1 -1
  84. package/dist/transport.js +17 -31
  85. package/dist/transport.js.map +1 -1
  86. package/dist/version.d.ts +1 -1
  87. package/dist/version.js +1 -1
  88. package/package.json +1 -1
package/dist/facades.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { GroupFSVFS } from './group-fs.js';
2
+ import { GROUP_INDEX_KEY, parseGroupIndex, prepareGroupSettingsWithIndex, verifyGroupIndex } from './group-index.js';
2
3
  import { validateGroupIDFormat } from './validators.js';
3
4
  export { GroupFSVFS, isGroupRemotePath } from './group-fs.js';
4
5
  function stripNil(params) {
@@ -24,6 +25,14 @@ function settingsToMap(result) {
24
25
  }
25
26
  return settings;
26
27
  }
28
+ function indexUpdateParams(groupId, settings, merged) {
29
+ const out = { group_id: groupId, settings };
30
+ for (const key of ['signer', 'last_modified', 'max_attempts']) {
31
+ if (key in merged)
32
+ out[key] = merged[key];
33
+ }
34
+ return out;
35
+ }
27
36
  class RpcFacade {
28
37
  client;
29
38
  constructor(client) {
@@ -193,6 +202,198 @@ export class GroupFacade extends RpcFacade {
193
202
  getSettings(params) {
194
203
  return this.call('group.get_settings', params);
195
204
  }
205
+ async checkGroupIndex(params) {
206
+ const merged = stripNil(params);
207
+ const groupAid = String(merged.group_aid ?? merged.group_id ?? '').trim();
208
+ if (!groupAid)
209
+ throw new Error('group_aid is required');
210
+ const clientAny = this.client;
211
+ const stale = typeof clientAny.isGroupIndexStale === 'function'
212
+ ? Boolean(clientAny.isGroupIndexStale(groupAid))
213
+ : false;
214
+ const remoteMeta = typeof clientAny.getGroupIndexRemoteMeta === 'function'
215
+ ? clientAny.getGroupIndexRemoteMeta(groupAid) ?? {}
216
+ : {};
217
+ const localEtag = typeof clientAny.getGroupIndexLocalEtag === 'function'
218
+ ? String(clientAny.getGroupIndexLocalEtag(groupAid) ?? '')
219
+ : '';
220
+ const remoteEtag = String(remoteMeta?.etag ?? '');
221
+ const localFound = Boolean(localEtag);
222
+ const remoteFound = Boolean(remoteEtag);
223
+ const inSync = localFound && remoteFound && localEtag === remoteEtag;
224
+ return {
225
+ group_aid: groupAid,
226
+ local_found: localFound,
227
+ remote_found: remoteFound,
228
+ local_etag: localEtag,
229
+ remote_etag: remoteEtag,
230
+ in_sync: inSync,
231
+ needs_update: Boolean(stale || (remoteFound && !inSync)),
232
+ last_modified: remoteMeta?.last_modified,
233
+ status: remoteFound ? 200 : 404,
234
+ cached: true,
235
+ };
236
+ }
237
+ async getGroupIndex(params) {
238
+ const merged = stripNil(params);
239
+ const groupId = String(merged.group_id ?? '').trim();
240
+ if (!groupId)
241
+ throw new Error('group_id is required');
242
+ const result = await this.getSettings({ group_id: groupId, keys: [GROUP_INDEX_KEY] });
243
+ const groupAid = String(result.group_aid ?? groupId);
244
+ let groupIndex = null;
245
+ for (const item of result.settings ?? []) {
246
+ if (item?.key !== GROUP_INDEX_KEY)
247
+ continue;
248
+ groupIndex = item.value;
249
+ break;
250
+ }
251
+ if (!groupIndex) {
252
+ return { group_id: result.group_id, group_aid: groupAid, group_index: null, meta: {}, entries: [] };
253
+ }
254
+ const parsed = parseGroupIndex(groupIndex);
255
+ await this.verifyPulledGroupIndex(groupIndex, parsed);
256
+ const etag = String(parsed.meta.etag ?? '');
257
+ const settings = await this.hydrateGroupIndexSettings(groupId, groupAid, parsed.entries, etag, groupIndex);
258
+ const clientAny = this.client;
259
+ if (etag && typeof clientAny.markGroupIndexFresh === 'function') {
260
+ clientAny.markGroupIndexFresh(groupAid, { etag });
261
+ }
262
+ return {
263
+ group_id: result.group_id,
264
+ group_aid: groupAid,
265
+ group_index: groupIndex,
266
+ meta: parsed.meta,
267
+ entries: parsed.entries,
268
+ settings: settings,
269
+ };
270
+ }
271
+ async verifyPulledGroupIndex(groupIndex, parsed) {
272
+ const signedBy = String(parsed.meta?.signed_by ?? '').trim();
273
+ if (!signedBy)
274
+ throw new Error('group.index signed_by is required');
275
+ const clientAny = this.client;
276
+ let signer = clientAny.currentAid?.aid === signedBy ? clientAny.currentAid : null;
277
+ if (!signer && typeof clientAny.lookupPeer === 'function') {
278
+ signer = await clientAny.lookupPeer(signedBy);
279
+ }
280
+ if (!signer)
281
+ throw new Error(`group.index signer is unavailable: ${signedBy}`);
282
+ const verified = await verifyGroupIndex(groupIndex, signer);
283
+ if (!verified.ok)
284
+ throw new Error(verified.error.message || 'group.index verification failed');
285
+ if (!verified.data.valid)
286
+ throw new Error(`group.index verification failed: ${verified.data.reason || 'invalid signature'}`);
287
+ }
288
+ async updateGroupIndex(params) {
289
+ const merged = stripNil(params);
290
+ const groupId = String(merged.group_id ?? '').trim();
291
+ const settings = merged.settings;
292
+ if (!groupId)
293
+ throw new Error('group_id is required');
294
+ if (!settings || typeof settings !== 'object' || Array.isArray(settings) || Object.keys(settings).length === 0) {
295
+ throw new Error('settings must be a non-empty object');
296
+ }
297
+ const signer = merged.signer ?? this.client.currentAid;
298
+ if (!signer)
299
+ throw new Error('signer is required');
300
+ const lastModified = Math.trunc(Number(merged.last_modified ?? Date.now()));
301
+ const maxAttempts = Math.max(1, Math.trunc(Number(merged.max_attempts ?? 2)));
302
+ let lastError = null;
303
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
304
+ const current = await this.getSettings({ group_id: groupId, keys: [GROUP_INDEX_KEY] });
305
+ const groupAid = String(current.group_aid ?? groupId);
306
+ let currentIndex = null;
307
+ let expectedEtag = '';
308
+ for (const item of current.settings ?? []) {
309
+ if (item?.key !== GROUP_INDEX_KEY)
310
+ continue;
311
+ currentIndex = item.value;
312
+ if (currentIndex)
313
+ expectedEtag = String(parseGroupIndex(currentIndex).meta.etag ?? '');
314
+ break;
315
+ }
316
+ const signedSettings = await prepareGroupSettingsWithIndex({
317
+ groupAid,
318
+ settings: settings,
319
+ signer: signer,
320
+ lastModified,
321
+ baseIndex: currentIndex,
322
+ });
323
+ try {
324
+ const result = await this.setSettings({
325
+ group_id: groupId,
326
+ settings: signedSettings,
327
+ expected_index_etag: expectedEtag,
328
+ });
329
+ const pushedEtag = String(parseGroupIndex(signedSettings[GROUP_INDEX_KEY]).meta.etag ?? '');
330
+ const clientAny = this.client;
331
+ if (pushedEtag && typeof clientAny.markGroupIndexFresh === 'function') {
332
+ clientAny.markGroupIndexFresh(groupAid, { etag: pushedEtag });
333
+ }
334
+ if (typeof clientAny.cacheGroupIndexSettings === 'function') {
335
+ const parsed = parseGroupIndex(signedSettings[GROUP_INDEX_KEY]);
336
+ await clientAny.cacheGroupIndexSettings(groupAid, settings, {
337
+ entries: parsed.entries,
338
+ etag: pushedEtag,
339
+ groupIndex: signedSettings[GROUP_INDEX_KEY],
340
+ });
341
+ }
342
+ return result;
343
+ }
344
+ catch (exc) {
345
+ if (!String(exc?.message ?? exc).includes('etag conflict'))
346
+ throw exc;
347
+ lastError = exc;
348
+ }
349
+ }
350
+ if (lastError)
351
+ throw lastError;
352
+ throw new Error('updateGroupIndex failed');
353
+ }
354
+ async getIndexedSettings(groupId, keys) {
355
+ const clientAny = this.client;
356
+ if (typeof clientAny.getGroupIndexCachedSettings === 'function') {
357
+ const cached = await clientAny.getGroupIndexCachedSettings(groupId, keys);
358
+ if (cached && typeof cached === 'object')
359
+ return { groupId, settings: cached };
360
+ }
361
+ const result = await this.getSettings({ group_id: groupId, keys });
362
+ const resultMap = result;
363
+ const settings = settingsToMap(result);
364
+ if (typeof clientAny.cacheGroupIndexSettings === 'function') {
365
+ const groupAid = String(resultMap.group_aid ?? groupId);
366
+ await clientAny.cacheGroupIndexSettings(groupAid, settings);
367
+ if (groupAid !== groupId) {
368
+ await clientAny.cacheGroupIndexSettings(groupId, settings);
369
+ }
370
+ }
371
+ return { groupId: String(resultMap.group_id ?? groupId), settings };
372
+ }
373
+ async hydrateGroupIndexSettings(groupId, groupAid, entries, etag, groupIndex) {
374
+ const keys = entries
375
+ .filter((item) => String(item.source ?? 'db') === 'db' && String(item.key ?? ''))
376
+ .map((item) => String(item.key));
377
+ if (keys.length === 0)
378
+ return {};
379
+ const clientAny = this.client;
380
+ let cached = {};
381
+ let missing = [...keys];
382
+ if (typeof clientAny.getGroupIndexCachedSettingsByEntries === 'function') {
383
+ const value = await clientAny.getGroupIndexCachedSettingsByEntries(groupAid, keys, entries);
384
+ cached = { ...(value?.cached ?? {}) };
385
+ missing = [...(value?.missing ?? [])].map((item) => String(item));
386
+ }
387
+ let fetched = {};
388
+ if (missing.length > 0) {
389
+ fetched = settingsToMap(await this.getSettings({ group_id: groupId, keys: missing }));
390
+ }
391
+ const settings = { ...cached, ...fetched };
392
+ if (typeof clientAny.cacheGroupIndexSettings === 'function') {
393
+ await clientAny.cacheGroupIndexSettings(groupAid, settings, { entries, etag, groupIndex });
394
+ }
395
+ return settings;
396
+ }
196
397
  send(params) {
197
398
  validateGroupIDFormat(params?.group_id, 'group_id');
198
399
  return this.call('group.send', params);
@@ -219,15 +420,11 @@ export class GroupFacade extends RpcFacade {
219
420
  const groupId = merged.group_id;
220
421
  if (!groupId)
221
422
  throw new Error('group_id is required');
222
- const result = await this.getSettings({
223
- group_id: groupId,
224
- keys: ['announcement.content', 'announcement.attachments']
225
- });
226
- const settings = settingsToMap(result);
423
+ const { groupId: resultGroupId, settings } = await this.getIndexedSettings(String(groupId), ['announcement.content', 'announcement.attachments']);
227
424
  return {
228
- group_id: result.group_id,
425
+ group_id: resultGroupId,
229
426
  announcement: {
230
- group_id: result.group_id,
427
+ group_id: resultGroupId,
231
428
  content: settings['announcement.content'] || '',
232
429
  attachments: settings['announcement.attachments'] || [],
233
430
  updated_by: settings['announcement.content.updated_by'] || '',
@@ -249,10 +446,7 @@ export class GroupFacade extends RpcFacade {
249
446
  if (attachments !== undefined) {
250
447
  settingsUpdate['announcement.attachments'] = attachments;
251
448
  }
252
- const result = await this.setSettings({
253
- group_id: groupId,
254
- settings: settingsUpdate
255
- });
449
+ const result = await this.updateGroupIndex(indexUpdateParams(groupId, settingsUpdate, merged));
256
450
  return {
257
451
  group_id: result.group_id,
258
452
  announcement: {
@@ -268,15 +462,11 @@ export class GroupFacade extends RpcFacade {
268
462
  const groupId = merged.group_id;
269
463
  if (!groupId)
270
464
  throw new Error('group_id is required');
271
- const result = await this.getSettings({
272
- group_id: groupId,
273
- keys: ['rules.content', 'rules.attachments']
274
- });
275
- const settings = settingsToMap(result);
465
+ const { groupId: resultGroupId, settings } = await this.getIndexedSettings(String(groupId), ['rules.content', 'rules.attachments']);
276
466
  return {
277
- group_id: result.group_id,
467
+ group_id: resultGroupId,
278
468
  rules: {
279
- group_id: result.group_id,
469
+ group_id: resultGroupId,
280
470
  content: settings['rules.content'] || '',
281
471
  attachments: settings['rules.attachments'] || [],
282
472
  updated_by: settings['rules.content.updated_by'] || '',
@@ -298,10 +488,7 @@ export class GroupFacade extends RpcFacade {
298
488
  if (attachments !== undefined) {
299
489
  settingsUpdate['rules.attachments'] = attachments;
300
490
  }
301
- const result = await this.setSettings({
302
- group_id: groupId,
303
- settings: settingsUpdate
304
- });
491
+ const result = await this.updateGroupIndex(indexUpdateParams(groupId, settingsUpdate, merged));
305
492
  return {
306
493
  group_id: result.group_id,
307
494
  rules: {
@@ -317,15 +504,11 @@ export class GroupFacade extends RpcFacade {
317
504
  const groupId = merged.group_id;
318
505
  if (!groupId)
319
506
  throw new Error('group_id is required');
320
- const result = await this.getSettings({
321
- group_id: groupId,
322
- keys: ['join.mode', 'join.question', 'join.auto_approve_patterns', 'join.max_pending']
323
- });
324
- const settings = settingsToMap(result);
507
+ const { groupId: resultGroupId, settings } = await this.getIndexedSettings(String(groupId), ['join.mode', 'join.question', 'join.auto_approve_patterns', 'join.max_pending']);
325
508
  return {
326
- group_id: result.group_id,
509
+ group_id: resultGroupId,
327
510
  join_requirements: {
328
- group_id: result.group_id,
511
+ group_id: resultGroupId,
329
512
  mode: settings['join.mode'] || 'open',
330
513
  question: settings['join.question'] || '',
331
514
  auto_approve_patterns: settings['join.auto_approve_patterns'] || [],
@@ -353,10 +536,7 @@ export class GroupFacade extends RpcFacade {
353
536
  if (Object.keys(settingsUpdate).length === 0) {
354
537
  throw new Error('at least one field to update is required');
355
538
  }
356
- const result = await this.setSettings({
357
- group_id: groupId,
358
- settings: settingsUpdate
359
- });
539
+ const result = await this.updateGroupIndex(indexUpdateParams(groupId, settingsUpdate, merged));
360
540
  return {
361
541
  group_id: result.group_id,
362
542
  join_requirements: {
@@ -1 +1 @@
1
- {"version":3,"file":"facades.js","sourceRoot":"","sources":["../src/facades.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"facades.js","sourceRoot":"","sources":["../src/facades.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { type Result } from './result.js';
2
+ export declare const GROUP_INDEX_SCHEMA = "aun.group.index.v1";
3
+ export declare const GROUP_INDEX_KEY = "group.index";
4
+ export declare const GROUP_INDEX_SIG_ALG = "ECDSA-P256-SHA256";
5
+ export interface GroupIndexEntry {
6
+ key: string;
7
+ source: string;
8
+ etag: string;
9
+ last_modified: number;
10
+ [key: string]: unknown;
11
+ }
12
+ export interface GroupIndexMeta {
13
+ type: 'index_meta';
14
+ group_aid: string;
15
+ etag: string;
16
+ last_modified: number;
17
+ schema: string;
18
+ body_hash: string;
19
+ signed_by: string;
20
+ sig_alg: string;
21
+ signature?: string;
22
+ [key: string]: unknown;
23
+ }
24
+ export interface SignedGroupIndex {
25
+ body: string;
26
+ meta: GroupIndexMeta;
27
+ entries: GroupIndexEntry[];
28
+ }
29
+ export interface GroupIndexSigner {
30
+ aid: string;
31
+ sign(payload: Uint8Array | string): Promise<Result<{
32
+ signature: string;
33
+ }>>;
34
+ verify(payload: Uint8Array | string, signature: string): Promise<Result<{
35
+ valid: boolean;
36
+ }>>;
37
+ }
38
+ export declare class GroupIndexMetaCache {
39
+ private readonly remote;
40
+ private readonly localEtags;
41
+ private readonly stale;
42
+ private readonly settings;
43
+ private readonly entryEtags;
44
+ observeRpcMeta(meta: Record<string, unknown>, options: {
45
+ localAid: string;
46
+ }): void;
47
+ markFresh(localAid: string, groupAid: string, options: {
48
+ etag: string;
49
+ }): void;
50
+ isStale(localAid: string, groupAid: string): boolean;
51
+ remoteMeta(localAid: string, groupAid: string): Record<string, unknown> | null;
52
+ localEtag(localAid: string, groupAid: string): string;
53
+ cachedSettings(localAid: string, groupAid: string, keys: string[]): Record<string, unknown> | null;
54
+ cachedSettingsByEntries(localAid: string, groupAid: string, keys: string[], entries: GroupIndexEntry[]): {
55
+ cached: Record<string, unknown>;
56
+ missing: string[];
57
+ };
58
+ cacheSettings(localAid: string, groupAid: string, settings: Record<string, unknown>, options?: {
59
+ entries?: GroupIndexEntry[];
60
+ etag?: string;
61
+ }): void;
62
+ restore(localAid: string, groupAid: string, record: {
63
+ remote_meta?: Record<string, unknown>;
64
+ local_etag?: string;
65
+ settings?: Record<string, unknown>;
66
+ entry_etags?: Record<string, unknown>;
67
+ }): void;
68
+ private key;
69
+ }
70
+ export declare function computeGroupIndexBodyHash(entries: GroupIndexEntry[]): Promise<string>;
71
+ export declare function groupIndexEtag(entries: GroupIndexEntry[]): Promise<string>;
72
+ export declare function groupIndexSigningPayload(meta: Record<string, unknown>, entries: GroupIndexEntry[]): Uint8Array;
73
+ export declare function buildSignedGroupIndex(options: {
74
+ groupAid: string;
75
+ entries: GroupIndexEntry[];
76
+ signer: GroupIndexSigner;
77
+ lastModified: number;
78
+ schema?: string;
79
+ }): Promise<SignedGroupIndex>;
80
+ export declare function parseGroupIndex(body: string | {
81
+ body?: unknown;
82
+ }): {
83
+ meta: GroupIndexMeta;
84
+ entries: GroupIndexEntry[];
85
+ };
86
+ export declare function verifyGroupIndex(body: string | {
87
+ body?: unknown;
88
+ }, signer: GroupIndexSigner): Promise<Result<{
89
+ valid: false;
90
+ reason: string;
91
+ } | {
92
+ valid: true;
93
+ meta: GroupIndexMeta;
94
+ entries: GroupIndexEntry[];
95
+ }>>;
96
+ export declare function prepareGroupSettingsWithIndex(options: {
97
+ groupAid: string;
98
+ settings: Record<string, unknown>;
99
+ signer: GroupIndexSigner;
100
+ lastModified: number;
101
+ baseIndex?: string | {
102
+ body?: unknown;
103
+ } | null;
104
+ }): Promise<Record<string, unknown>>;
105
+ //# sourceMappingURL=group-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-index.d.ts","sourceRoot":"","sources":["../src/group-index.ts"],"names":[],"mappings":"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"}