@keyneom/sync-kit 0.2.0-rc.0 → 0.2.0-rc.10

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 (68) hide show
  1. package/README.md +15 -11
  2. package/dist/auth/google-web/cache.d.ts +46 -0
  3. package/dist/auth/google-web/cache.d.ts.map +1 -0
  4. package/dist/auth/google-web/cache.js +111 -0
  5. package/dist/auth/google-web/cache.js.map +1 -0
  6. package/dist/sharing/appdata-identity-store.d.ts +36 -0
  7. package/dist/sharing/appdata-identity-store.d.ts.map +1 -0
  8. package/dist/sharing/appdata-identity-store.js +49 -0
  9. package/dist/sharing/appdata-identity-store.js.map +1 -0
  10. package/dist/sharing/change-detector.d.ts +40 -0
  11. package/dist/sharing/change-detector.d.ts.map +1 -0
  12. package/dist/sharing/change-detector.js +96 -0
  13. package/dist/sharing/change-detector.js.map +1 -0
  14. package/dist/sharing/checkpoint.d.ts +32 -0
  15. package/dist/sharing/checkpoint.d.ts.map +1 -0
  16. package/dist/sharing/checkpoint.js +2 -0
  17. package/dist/sharing/checkpoint.js.map +1 -0
  18. package/dist/sharing/controller.d.ts +88 -3
  19. package/dist/sharing/controller.d.ts.map +1 -1
  20. package/dist/sharing/controller.js +453 -110
  21. package/dist/sharing/controller.js.map +1 -1
  22. package/dist/sharing/index.d.ts +5 -1
  23. package/dist/sharing/index.d.ts.map +1 -1
  24. package/dist/sharing/index.js +3 -0
  25. package/dist/sharing/index.js.map +1 -1
  26. package/dist/sharing/join.d.ts +56 -0
  27. package/dist/sharing/join.d.ts.map +1 -0
  28. package/dist/sharing/join.js +153 -0
  29. package/dist/sharing/join.js.map +1 -0
  30. package/dist/sharing/lifecycle.d.ts +20 -0
  31. package/dist/sharing/lifecycle.d.ts.map +1 -0
  32. package/dist/sharing/lifecycle.js +55 -0
  33. package/dist/sharing/lifecycle.js.map +1 -0
  34. package/dist/sharing/link-exchange.d.ts +51 -0
  35. package/dist/sharing/link-exchange.d.ts.map +1 -0
  36. package/dist/sharing/link-exchange.js +131 -0
  37. package/dist/sharing/link-exchange.js.map +1 -0
  38. package/dist/sharing/migrating-identity-store.d.ts +29 -0
  39. package/dist/sharing/migrating-identity-store.d.ts.map +1 -0
  40. package/dist/sharing/migrating-identity-store.js +37 -0
  41. package/dist/sharing/migrating-identity-store.js.map +1 -0
  42. package/dist/sharing/registry-indexeddb.d.ts +21 -0
  43. package/dist/sharing/registry-indexeddb.d.ts.map +1 -0
  44. package/dist/sharing/registry-indexeddb.js +60 -0
  45. package/dist/sharing/registry-indexeddb.js.map +1 -0
  46. package/dist/sharing/transport.d.ts +12 -0
  47. package/dist/sharing/transport.d.ts.map +1 -1
  48. package/dist/stores/google-drive/app-folders.d.ts +19 -0
  49. package/dist/stores/google-drive/app-folders.d.ts.map +1 -0
  50. package/dist/stores/google-drive/app-folders.js +38 -0
  51. package/dist/stores/google-drive/app-folders.js.map +1 -0
  52. package/dist/stores/google-drive/folder-name.d.ts +16 -0
  53. package/dist/stores/google-drive/folder-name.d.ts.map +1 -0
  54. package/dist/stores/google-drive/folder-name.js +37 -0
  55. package/dist/stores/google-drive/folder-name.js.map +1 -0
  56. package/dist/stores/google-drive/index.d.ts +22 -0
  57. package/dist/stores/google-drive/index.d.ts.map +1 -1
  58. package/dist/stores/google-drive/index.js +66 -0
  59. package/dist/stores/google-drive/index.js.map +1 -1
  60. package/dist/stores/google-drive/picker.d.ts +20 -0
  61. package/dist/stores/google-drive/picker.d.ts.map +1 -1
  62. package/dist/stores/google-drive/picker.js +64 -0
  63. package/dist/stores/google-drive/picker.js.map +1 -1
  64. package/dist/stores/google-drive/sharing.d.ts +5 -1
  65. package/dist/stores/google-drive/sharing.d.ts.map +1 -1
  66. package/dist/stores/google-drive/sharing.js +113 -6
  67. package/dist/stores/google-drive/sharing.js.map +1 -1
  68. package/package.json +27 -4
@@ -1,6 +1,8 @@
1
- import { type SharedBackupCodec, type SharingAccountBindingV1, type SharingDatasetGrantV1, type SharingInvitationV1, type SharingRole } from "./index.js";
1
+ import { type SharedBackupCodec, type SharingAccountBindingV1, type SharingDatasetGrantV1, type SharingInvitationV1, type SharingPublicKeyResponseV1, type SharingRole } from "./index.js";
2
+ import type { SharingDatasetFileV1 } from "./link-exchange.js";
2
3
  import type { SharedBackupStorage, SharedBackupTransport, SharedDatasetFile, SharedExchangeFile } from "./transport.js";
3
4
  import { type WebCryptoSharingIdentity } from "./web-crypto.js";
5
+ export { IndexedDbSharedBackupRegistry } from "./registry-indexeddb.js";
4
6
  export type SharedBackupControllerCodec<T> = SharedBackupCodec<T> & {
5
7
  merge(local: T, remote: T): T;
6
8
  fingerprint(value: T): string;
@@ -29,7 +31,7 @@ export type SharedDatasetResult<T> = {
29
31
  fileId: string;
30
32
  revisionId: string;
31
33
  value: T;
32
- outcome: "created" | "loaded" | "updated" | "unchanged";
34
+ outcome: "created" | "adopted" | "loaded" | "updated" | "unchanged";
33
35
  };
34
36
  export type SharingInvitationResult = {
35
37
  invitation: SharingInvitationV1;
@@ -50,6 +52,26 @@ export type RotatedDatasetResult = {
50
52
  revisionId?: string;
51
53
  error?: unknown;
52
54
  };
55
+ export type DrivePermissionReconciliationAction = {
56
+ kind: "granted" | "updated";
57
+ keyId: string;
58
+ permissionId: string;
59
+ role: "reader" | "writer";
60
+ } | {
61
+ kind: "removed";
62
+ permissionId: string;
63
+ } | {
64
+ kind: "unchanged";
65
+ keyId: string;
66
+ } | {
67
+ kind: "skipped";
68
+ keyId: string;
69
+ reason: string;
70
+ };
71
+ export type DrivePermissionReconciliationResult = {
72
+ datasetId: string;
73
+ actions: DrivePermissionReconciliationAction[];
74
+ };
53
75
  export type SharedBackupControllerOptions<T> = {
54
76
  appId: string;
55
77
  codec: SharedBackupControllerCodec<T>;
@@ -92,6 +114,19 @@ export declare class SharedBackupController<T> {
92
114
  ensureStorage(): Promise<SharedBackupStorage>;
93
115
  listDatasets(): Promise<SharedDatasetFile[]>;
94
116
  createDataset(datasetId: string, value: T): Promise<SharedDatasetResult<T>>;
117
+ /**
118
+ * Reconnect to an existing dataset this identity can already decrypt —
119
+ * e.g. after a reinstall, or when an interrupted setup left the remote
120
+ * file without a local registry record. The owner key is pinned from the
121
+ * envelope itself (trust-on-first-use), so callers recovering their own
122
+ * dataset should pass `requireOwned` to insist this identity is the
123
+ * dataset's owner.
124
+ */
125
+ adoptDataset(datasetId: string, options?: {
126
+ requireOwned?: boolean;
127
+ }): Promise<SharedDatasetResult<T>>;
128
+ /** Delete a dataset file from the transport and forget its local record. */
129
+ deleteDataset(datasetId: string): Promise<void>;
95
130
  loadDataset(datasetId: string): Promise<SharedDatasetResult<T>>;
96
131
  syncDataset(datasetId: string, localValue: T): Promise<SharedDatasetResult<T>>;
97
132
  inviteParticipant(input: {
@@ -100,6 +135,11 @@ export declare class SharedBackupController<T> {
100
135
  expiresAt?: string;
101
136
  sendNotificationEmail?: boolean;
102
137
  emailMessage?: string;
138
+ /** Consumer landing URL; folder ID is appended before the Drive notification. */
139
+ joinLandingUrl?: string;
140
+ /** Fully built join URL; must already include the app folder ID when used. */
141
+ joinUrl?: string;
142
+ appDisplayName?: string;
103
143
  }): Promise<SharingInvitationResult>;
104
144
  listExchanges(options?: {
105
145
  exchangeId?: string;
@@ -114,6 +154,46 @@ export declare class SharedBackupController<T> {
114
154
  responseFileId: string;
115
155
  recipientEmailAddress: string;
116
156
  }): Promise<AcceptedDatasetResult[]>;
157
+ /**
158
+ * Applies verified acceptance grants to each dataset: add the participant,
159
+ * re-encrypt, write, and per-email-share the dataset file. Shared by the
160
+ * Drive-file accept path and the link-payload accept path.
161
+ */
162
+ private applyAcceptedGrants;
163
+ /**
164
+ * Owner side of the link-carried exchange. Shares each granted dataset file
165
+ * with the recipient's email (so it lands in their Picker) and returns the
166
+ * signed invitation plus the file list to embed in the join link. Unlike
167
+ * {@link inviteParticipant} it writes no Drive `exchanges/` invitation file.
168
+ */
169
+ inviteParticipantForLink(input: {
170
+ emailAddress: string;
171
+ requestedGrants: SharingDatasetGrantV1[];
172
+ expiresAt?: string;
173
+ }): Promise<{
174
+ invitation: SharingInvitationV1;
175
+ files: SharingDatasetFileV1[];
176
+ }>;
177
+ /**
178
+ * Recipient side of the link-carried exchange. Verifies the invitation carried
179
+ * in the join link, registers the granted datasets with their file ids (so
180
+ * later reads/writes resolve without listing the owner's folder), and returns
181
+ * a signed key response to send back to the owner. Reads/writes no Drive
182
+ * `exchanges/` file.
183
+ */
184
+ submitKeyResponseFromInvitation(invitation: SharingInvitationV1, datasetFiles: SharingDatasetFileV1[]): Promise<SharingPublicKeyResponseV1>;
185
+ /**
186
+ * Owner side. Accepts a key response carried in a response link (no Drive
187
+ * `exchanges/` read), adds the recipient to each granted dataset, and
188
+ * per-email shares the dataset files (re-affirming the invite-time share).
189
+ * The invitation must be supplied by the caller (persisted at invite time,
190
+ * keyed by exchange id).
191
+ */
192
+ acceptKeyResponseFromPayload(input: {
193
+ invitation: SharingInvitationV1;
194
+ response: SharingPublicKeyResponseV1;
195
+ recipientEmailAddress: string;
196
+ }): Promise<AcceptedDatasetResult[]>;
117
197
  setDatasetRole(input: {
118
198
  datasetId: string;
119
199
  keyId: string;
@@ -123,9 +203,14 @@ export declare class SharedBackupController<T> {
123
203
  revokeDatasetKey(input: {
124
204
  datasetId: string;
125
205
  keyId: string;
206
+ emailAddress?: string;
126
207
  }): Promise<SharedDatasetResult<T>>;
208
+ private findDirectDatasetPermission;
127
209
  rotateLocalKey(replacementIdentity: WebCryptoSharingIdentity, datasetIds: string[]): Promise<RotatedDatasetResult[]>;
128
- private changeParticipants;
210
+ reconcileDrivePermissions(input: {
211
+ datasetId: string;
212
+ participantEmails: Record<string, string>;
213
+ }): Promise<DrivePermissionReconciliationResult>;
129
214
  private readDatasetById;
130
215
  private requiredRegistry;
131
216
  private verifyHead;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/sharing/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/sharing/controller.ts"],"names":[],"mappings":"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"}