@keyneom/sync-kit 0.1.1 → 0.2.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +103 -8
  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/auth/google-web/identity.d.ts +49 -0
  7. package/dist/auth/google-web/identity.d.ts.map +1 -0
  8. package/dist/auth/google-web/identity.js +102 -0
  9. package/dist/auth/google-web/identity.js.map +1 -0
  10. package/dist/auth/google-web/index.d.ts +1 -0
  11. package/dist/auth/google-web/index.d.ts.map +1 -1
  12. package/dist/auth/google-web/index.js +1 -0
  13. package/dist/auth/google-web/index.js.map +1 -1
  14. package/dist/core/errors.d.ts +1 -1
  15. package/dist/core/errors.d.ts.map +1 -1
  16. package/dist/core/errors.js +22 -1
  17. package/dist/core/errors.js.map +1 -1
  18. package/dist/crypto/canonical.d.ts +5 -0
  19. package/dist/crypto/canonical.d.ts.map +1 -1
  20. package/dist/crypto/canonical.js +8 -1
  21. package/dist/crypto/canonical.js.map +1 -1
  22. package/dist/crypto/envelope.d.ts.map +1 -1
  23. package/dist/crypto/envelope.js +1 -0
  24. package/dist/crypto/envelope.js.map +1 -1
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/keys/web-passkey/index.d.ts +8 -2
  30. package/dist/keys/web-passkey/index.d.ts.map +1 -1
  31. package/dist/keys/web-passkey/index.js +32 -10
  32. package/dist/keys/web-passkey/index.js.map +1 -1
  33. package/dist/sharing/account-binding.d.ts +57 -0
  34. package/dist/sharing/account-binding.d.ts.map +1 -0
  35. package/dist/sharing/account-binding.js +305 -0
  36. package/dist/sharing/account-binding.js.map +1 -0
  37. package/dist/sharing/change-detector.d.ts +40 -0
  38. package/dist/sharing/change-detector.d.ts.map +1 -0
  39. package/dist/sharing/change-detector.js +96 -0
  40. package/dist/sharing/change-detector.js.map +1 -0
  41. package/dist/sharing/checkpoint.d.ts +32 -0
  42. package/dist/sharing/checkpoint.d.ts.map +1 -0
  43. package/dist/sharing/checkpoint.js +2 -0
  44. package/dist/sharing/checkpoint.js.map +1 -0
  45. package/dist/sharing/controller.d.ts +169 -0
  46. package/dist/sharing/controller.d.ts.map +1 -0
  47. package/dist/sharing/controller.js +693 -0
  48. package/dist/sharing/controller.js.map +1 -0
  49. package/dist/sharing/index.d.ts +122 -0
  50. package/dist/sharing/index.d.ts.map +1 -0
  51. package/dist/sharing/index.js +362 -0
  52. package/dist/sharing/index.js.map +1 -0
  53. package/dist/sharing/join.d.ts +56 -0
  54. package/dist/sharing/join.d.ts.map +1 -0
  55. package/dist/sharing/join.js +153 -0
  56. package/dist/sharing/join.js.map +1 -0
  57. package/dist/sharing/lifecycle.d.ts +20 -0
  58. package/dist/sharing/lifecycle.d.ts.map +1 -0
  59. package/dist/sharing/lifecycle.js +55 -0
  60. package/dist/sharing/lifecycle.js.map +1 -0
  61. package/dist/sharing/registry-indexeddb.d.ts +21 -0
  62. package/dist/sharing/registry-indexeddb.d.ts.map +1 -0
  63. package/dist/sharing/registry-indexeddb.js +60 -0
  64. package/dist/sharing/registry-indexeddb.js.map +1 -0
  65. package/dist/sharing/transport.d.ts +75 -0
  66. package/dist/sharing/transport.d.ts.map +1 -0
  67. package/dist/sharing/transport.js +2 -0
  68. package/dist/sharing/transport.js.map +1 -0
  69. package/dist/sharing/web-crypto.d.ts +68 -0
  70. package/dist/sharing/web-crypto.d.ts.map +1 -0
  71. package/dist/sharing/web-crypto.js +645 -0
  72. package/dist/sharing/web-crypto.js.map +1 -0
  73. package/dist/sharing/web-passkey.d.ts +68 -0
  74. package/dist/sharing/web-passkey.d.ts.map +1 -0
  75. package/dist/sharing/web-passkey.js +303 -0
  76. package/dist/sharing/web-passkey.js.map +1 -0
  77. package/dist/snapshot/controller.d.ts.map +1 -1
  78. package/dist/snapshot/controller.js +4 -8
  79. package/dist/snapshot/controller.js.map +1 -1
  80. package/dist/stores/google-drive/app-folders.d.ts +19 -0
  81. package/dist/stores/google-drive/app-folders.d.ts.map +1 -0
  82. package/dist/stores/google-drive/app-folders.js +38 -0
  83. package/dist/stores/google-drive/app-folders.js.map +1 -0
  84. package/dist/stores/google-drive/folder-name.d.ts +16 -0
  85. package/dist/stores/google-drive/folder-name.d.ts.map +1 -0
  86. package/dist/stores/google-drive/folder-name.js +37 -0
  87. package/dist/stores/google-drive/folder-name.js.map +1 -0
  88. package/dist/stores/google-drive/index.d.ts +149 -1
  89. package/dist/stores/google-drive/index.d.ts.map +1 -1
  90. package/dist/stores/google-drive/index.js +399 -0
  91. package/dist/stores/google-drive/index.js.map +1 -1
  92. package/dist/stores/google-drive/picker.d.ts +89 -0
  93. package/dist/stores/google-drive/picker.d.ts.map +1 -0
  94. package/dist/stores/google-drive/picker.js +179 -0
  95. package/dist/stores/google-drive/picker.js.map +1 -0
  96. package/dist/stores/google-drive/sharing.d.ts +57 -0
  97. package/dist/stores/google-drive/sharing.d.ts.map +1 -0
  98. package/dist/stores/google-drive/sharing.js +325 -0
  99. package/dist/stores/google-drive/sharing.js.map +1 -0
  100. package/package.json +78 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/sharing/controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ export declare const SHARING_KEY_KIND: "sync-kit-public-key";
2
+ export declare const SHARING_INVITATION_KIND: "sync-kit-share-invitation";
3
+ export declare const SHARED_BACKUP_KIND: "sync-kit-shared-backup";
4
+ export declare const SHARING_ENCRYPTION_ALGORITHM: "ECDH-P256";
5
+ export declare const SHARING_SIGNATURE_ALGORITHM: "ECDSA-P256-SHA256-P1363";
6
+ export declare const SHARING_CONTENT_ALGORITHM: "AES-256-GCM+ECDH-P256+HKDF-SHA256";
7
+ export declare const SHARED_BACKUP_MAX_REVISION_ANCESTORS = 256;
8
+ export type SharingRole = "owner" | "admin" | "writer" | "viewer";
9
+ export type SharingPublicKeyV1 = {
10
+ keyId: string;
11
+ encryptionAlgorithm: typeof SHARING_ENCRYPTION_ALGORITHM;
12
+ encryptionPublicKey: string;
13
+ signatureAlgorithm: typeof SHARING_SIGNATURE_ALGORITHM;
14
+ signingPublicKey: string;
15
+ };
16
+ export type SharingPasskeyAssertionV1 = {
17
+ credentialId: string;
18
+ credentialPublicKey: JsonWebKey;
19
+ authenticatorData: string;
20
+ clientDataJSON: string;
21
+ signature: string;
22
+ };
23
+ export type SharingAccountBindingV1 = {
24
+ schemaVersion: 1;
25
+ kind: "sync-kit-sharing-account-binding";
26
+ challenge: string;
27
+ googleIdToken: string;
28
+ passkey: SharingPasskeyAssertionV1;
29
+ };
30
+ export type SharingPublicKeyResponseV1 = SharingPublicKeyV1 & {
31
+ schemaVersion: 1;
32
+ kind: typeof SHARING_KEY_KIND;
33
+ appId: string;
34
+ exchangeId: string;
35
+ createdAt: string;
36
+ accountBinding?: SharingAccountBindingV1;
37
+ proof: string;
38
+ };
39
+ export type SharingDatasetGrantV1 = {
40
+ datasetId: string;
41
+ role: Exclude<SharingRole, "owner">;
42
+ };
43
+ export type SharingInvitationV1 = {
44
+ schemaVersion: 1;
45
+ kind: typeof SHARING_INVITATION_KIND;
46
+ appId: string;
47
+ appFolderId: string;
48
+ exchangeId: string;
49
+ recipientDrivePermissionId: string;
50
+ requestedGrants: SharingDatasetGrantV1[];
51
+ trustedOwnerKeyId: string;
52
+ createdAt: string;
53
+ expiresAt?: string;
54
+ owner: SharingPublicKeyV1;
55
+ signature: string;
56
+ };
57
+ export type SharingAcceptanceProvenanceV1 = {
58
+ exchangeId: string;
59
+ drivePermissionId: string;
60
+ acceptedAt: string;
61
+ acceptedByKeyId: string;
62
+ googleSubject?: string;
63
+ };
64
+ export type SharedBackupParticipantV1 = SharingPublicKeyV1 & {
65
+ role: SharingRole;
66
+ accepted?: SharingAcceptanceProvenanceV1;
67
+ };
68
+ export type SharedBackupAccessV1 = {
69
+ sequence: number;
70
+ appId?: string;
71
+ backupId?: string;
72
+ previousHash?: string;
73
+ authorKeyId: string;
74
+ participants: SharedBackupParticipantV1[];
75
+ keyRotation?: {
76
+ fromKeyId: string;
77
+ toKeyId: string;
78
+ newKeyProof: string;
79
+ };
80
+ signature: string;
81
+ };
82
+ export type SharedBackupKeyGrantV1 = {
83
+ recipientKeyId: string;
84
+ ephemeralPublicKey: string;
85
+ kdfSalt: string;
86
+ nonce: string;
87
+ wrappedContentKey: string;
88
+ };
89
+ export type SharedBackupEnvelopeV1 = {
90
+ schemaVersion: 1;
91
+ kind: typeof SHARED_BACKUP_KIND;
92
+ algorithm: typeof SHARING_CONTENT_ALGORITHM;
93
+ appId: string;
94
+ backupId: string;
95
+ revisionId: string;
96
+ parentRevisionId?: string;
97
+ revisionAncestors?: string[];
98
+ createdAt: string;
99
+ authorKeyId: string;
100
+ accessControl: SharedBackupAccessV1[];
101
+ keyGrants: SharedBackupKeyGrantV1[];
102
+ payloadNonce: string;
103
+ ciphertext: string;
104
+ signature: string;
105
+ };
106
+ export type SharedBackupCodec<T> = {
107
+ serialize(value: T): unknown;
108
+ parse(value: unknown): T;
109
+ };
110
+ export declare function canReadSharedBackup(role: SharingRole): boolean;
111
+ export declare function canWriteSharedBackup(role: SharingRole): boolean;
112
+ export declare function canAdministerSharedBackup(role: SharingRole): boolean;
113
+ export declare function parseSharingPublicKeyResponseV1(value: unknown): SharingPublicKeyResponseV1;
114
+ export declare function parseSharingInvitationV1(value: unknown): SharingInvitationV1;
115
+ export declare function parseSharedBackupEnvelopeV1(value: unknown): SharedBackupEnvelopeV1;
116
+ export declare function sharedBackupParticipants(envelope: SharedBackupEnvelopeV1): SharedBackupParticipantV1[];
117
+ export declare function sharedBackupParticipant(envelope: SharedBackupEnvelopeV1, keyId: string): SharedBackupParticipantV1 | null;
118
+ export type { SharedDatasetHead, SharingChangeDetectionResult, SharingNotificationEvent, SharingSyncCheckpoint, } from "./checkpoint.js";
119
+ export { SharingChangeDetector, createSharingChangeDetectorFromTransport, detectSharingChanges, } from "./change-detector.js";
120
+ export type { SharedBackupStorage, SharedBackupTransport, SharedDatasetFile, SharedDatasetDrivePermission, SharedDatasetPermission, SharedExchangeFile, SharedKeyResponseFile, VersionedSharedDataset, } from "./transport.js";
121
+ export { appendSharingJoinParams, buildSharingJoinSearchParams, findSharingJoinInvitation, formatSharingInviteEmailMessage, parseSharingJoinParams, resolveSharingJoinInvitation, SHARING_JOIN_EXCHANGE_PARAM, SHARING_JOIN_FOLDER_PARAM, SHARING_JOIN_MARKER_PARAM, SHARING_JOIN_SHORT_EXCHANGE_PARAM, SHARING_JOIN_SHORT_FOLDER_PARAM, SHARING_JOIN_SHORT_MARKER_PARAM, SHARING_JOIN_SHORT_MARKER_VALUE, type SharingJoinInvitationMatch, type SharingJoinParamStyle, type SharingJoinParams, } from "./join.js";
122
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sharing/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,362 @@
1
+ import { SyncKitError } from "../core/errors.js";
2
+ import { base64UrlToBytes } from "../crypto/base64url.js";
3
+ export const SHARING_KEY_KIND = "sync-kit-public-key";
4
+ export const SHARING_INVITATION_KIND = "sync-kit-share-invitation";
5
+ export const SHARED_BACKUP_KIND = "sync-kit-shared-backup";
6
+ export const SHARING_ENCRYPTION_ALGORITHM = "ECDH-P256";
7
+ export const SHARING_SIGNATURE_ALGORITHM = "ECDSA-P256-SHA256-P1363";
8
+ export const SHARING_CONTENT_ALGORITHM = "AES-256-GCM+ECDH-P256+HKDF-SHA256";
9
+ export const SHARED_BACKUP_MAX_REVISION_ANCESTORS = 256;
10
+ export function canReadSharedBackup(role) {
11
+ return role === "owner" || role === "admin" || role === "writer" || role === "viewer";
12
+ }
13
+ export function canWriteSharedBackup(role) {
14
+ return role === "owner" || role === "admin" || role === "writer";
15
+ }
16
+ export function canAdministerSharedBackup(role) {
17
+ return role === "owner" || role === "admin";
18
+ }
19
+ export function parseSharingPublicKeyResponseV1(value) {
20
+ const parsed = parseObject(value, "public-key response");
21
+ assertExact(parsed.schemaVersion, 1, "schemaVersion");
22
+ assertExact(parsed.kind, SHARING_KEY_KIND, "kind");
23
+ assertNonEmptyStrings(parsed, [
24
+ "appId",
25
+ "exchangeId",
26
+ "createdAt",
27
+ "keyId",
28
+ "encryptionPublicKey",
29
+ "signingPublicKey",
30
+ "proof",
31
+ ]);
32
+ assertExact(parsed.encryptionAlgorithm, SHARING_ENCRYPTION_ALGORITHM, "encryptionAlgorithm");
33
+ assertExact(parsed.signatureAlgorithm, SHARING_SIGNATURE_ALGORITHM, "signatureAlgorithm");
34
+ validatePublicKey(parsed.encryptionPublicKey, "encryptionPublicKey");
35
+ validatePublicKey(parsed.signingPublicKey, "signingPublicKey");
36
+ validateBytes(parsed.keyId, 32, "keyId");
37
+ validateBytes(parsed.proof, 64, "proof");
38
+ validateTimestamp(parsed.createdAt, "createdAt");
39
+ if (parsed.accountBinding !== undefined) {
40
+ parseSharingAccountBinding(parsed.accountBinding);
41
+ }
42
+ return parsed;
43
+ }
44
+ export function parseSharingInvitationV1(value) {
45
+ const parsed = parseObject(value, "sharing invitation");
46
+ assertExact(parsed.schemaVersion, 1, "schemaVersion");
47
+ assertExact(parsed.kind, SHARING_INVITATION_KIND, "kind");
48
+ assertNonEmptyStrings(parsed, [
49
+ "appId",
50
+ "appFolderId",
51
+ "exchangeId",
52
+ "recipientDrivePermissionId",
53
+ "trustedOwnerKeyId",
54
+ "createdAt",
55
+ "signature",
56
+ ]);
57
+ validateBytes(parsed.trustedOwnerKeyId, 32, "trustedOwnerKeyId");
58
+ if (parsed.expiresAt !== undefined && !nonEmpty(parsed.expiresAt)) {
59
+ throw compatibility("expiresAt must be a non-empty string.");
60
+ }
61
+ if (!Array.isArray(parsed.requestedGrants) ||
62
+ parsed.requestedGrants.length === 0) {
63
+ throw compatibility("requestedGrants must not be empty.");
64
+ }
65
+ const datasetIds = new Set();
66
+ for (const input of parsed.requestedGrants) {
67
+ const grant = parseObject(input, "requested dataset grant");
68
+ assertNonEmptyStrings(grant, ["datasetId", "role"]);
69
+ if (!isRole(grant.role) || grant.role === "owner") {
70
+ throw compatibility("An invitation has an unsupported requested role.");
71
+ }
72
+ const datasetId = grant.datasetId;
73
+ if (datasetIds.has(datasetId)) {
74
+ throw compatibility(`Duplicate requested dataset ${datasetId}.`);
75
+ }
76
+ datasetIds.add(datasetId);
77
+ }
78
+ const owner = parseObject(parsed.owner, "invitation owner");
79
+ assertNonEmptyStrings(owner, [
80
+ "keyId",
81
+ "encryptionPublicKey",
82
+ "signingPublicKey",
83
+ ]);
84
+ assertExact(owner.encryptionAlgorithm, SHARING_ENCRYPTION_ALGORITHM, "encryptionAlgorithm");
85
+ assertExact(owner.signatureAlgorithm, SHARING_SIGNATURE_ALGORITHM, "signatureAlgorithm");
86
+ validatePublicKey(owner.encryptionPublicKey, "encryptionPublicKey");
87
+ validatePublicKey(owner.signingPublicKey, "signingPublicKey");
88
+ validateBytes(owner.keyId, 32, "owner keyId");
89
+ validateBytes(parsed.signature, 64, "signature");
90
+ validateTimestamp(parsed.createdAt, "createdAt");
91
+ if (parsed.expiresAt) {
92
+ validateTimestamp(parsed.expiresAt, "expiresAt");
93
+ }
94
+ return parsed;
95
+ }
96
+ export function parseSharedBackupEnvelopeV1(value) {
97
+ const parsed = parseObject(value, "shared-backup envelope");
98
+ assertExact(parsed.schemaVersion, 1, "schemaVersion");
99
+ assertExact(parsed.kind, SHARED_BACKUP_KIND, "kind");
100
+ assertExact(parsed.algorithm, SHARING_CONTENT_ALGORITHM, "algorithm");
101
+ assertNonEmptyStrings(parsed, [
102
+ "appId",
103
+ "backupId",
104
+ "revisionId",
105
+ "createdAt",
106
+ "authorKeyId",
107
+ "payloadNonce",
108
+ "ciphertext",
109
+ "signature",
110
+ ]);
111
+ if (parsed.parentRevisionId !== undefined &&
112
+ !nonEmpty(parsed.parentRevisionId)) {
113
+ throw compatibility("parentRevisionId must be a non-empty string.");
114
+ }
115
+ if (parsed.revisionAncestors !== undefined) {
116
+ if (!Array.isArray(parsed.revisionAncestors) ||
117
+ !parsed.revisionAncestors.every(nonEmpty)) {
118
+ throw compatibility("revisionAncestors must contain revision IDs.");
119
+ }
120
+ const ancestors = parsed.revisionAncestors;
121
+ if (ancestors.length > SHARED_BACKUP_MAX_REVISION_ANCESTORS) {
122
+ throw compatibility(`revisionAncestors must contain at most ${SHARED_BACKUP_MAX_REVISION_ANCESTORS} revision IDs.`);
123
+ }
124
+ if (new Set(ancestors).size !== ancestors.length ||
125
+ ancestors.includes(parsed.revisionId)) {
126
+ throw compatibility("revisionAncestors contains a duplicate or cycle.");
127
+ }
128
+ if (parsed.parentRevisionId &&
129
+ ancestors.at(-1) !== parsed.parentRevisionId) {
130
+ throw compatibility("parentRevisionId must be the last revision ancestor.");
131
+ }
132
+ if (!parsed.parentRevisionId && ancestors.length > 0) {
133
+ throw compatibility("A genesis revision cannot have ancestors.");
134
+ }
135
+ }
136
+ if (!Array.isArray(parsed.accessControl) || parsed.accessControl.length === 0) {
137
+ throw compatibility("accessControl must not be empty.");
138
+ }
139
+ if (!Array.isArray(parsed.keyGrants) || parsed.keyGrants.length === 0) {
140
+ throw compatibility("keyGrants must not be empty.");
141
+ }
142
+ for (const [index, input] of parsed.accessControl.entries()) {
143
+ parseAccessEntry(input, index);
144
+ }
145
+ const accessControl = parsed.accessControl;
146
+ const participants = accessControl.at(-1)?.participants;
147
+ if (!participants)
148
+ throw compatibility("accessControl must not be empty.");
149
+ const participantIds = new Set(participants.map((participant) => participant.keyId));
150
+ if (!participantIds.has(parsed.authorKeyId)) {
151
+ throw compatibility("The revision author is not a participant.");
152
+ }
153
+ const grantIds = new Set();
154
+ for (const input of parsed.keyGrants) {
155
+ const grant = parseObject(input, "key grant");
156
+ assertNonEmptyStrings(grant, [
157
+ "recipientKeyId",
158
+ "ephemeralPublicKey",
159
+ "kdfSalt",
160
+ "nonce",
161
+ "wrappedContentKey",
162
+ ]);
163
+ const recipientKeyId = grant.recipientKeyId;
164
+ if (!participantIds.has(recipientKeyId)) {
165
+ throw compatibility("A key grant references a non-participant.");
166
+ }
167
+ if (grantIds.has(recipientKeyId)) {
168
+ throw compatibility(`Duplicate key grant for ${recipientKeyId}.`);
169
+ }
170
+ grantIds.add(recipientKeyId);
171
+ validatePublicKey(grant.ephemeralPublicKey, "ephemeralPublicKey");
172
+ validateBytes(grant.kdfSalt, 32, "kdfSalt");
173
+ validateBytes(grant.nonce, 12, "key-grant nonce");
174
+ base64UrlToBytes(grant.wrappedContentKey);
175
+ }
176
+ if (grantIds.size !== participantIds.size) {
177
+ throw compatibility("Every participant must have exactly one key grant.");
178
+ }
179
+ validateBytes(parsed.payloadNonce, 12, "payload nonce");
180
+ base64UrlToBytes(parsed.ciphertext);
181
+ validateBytes(parsed.signature, 64, "signature");
182
+ validateTimestamp(parsed.createdAt, "createdAt");
183
+ return parsed;
184
+ }
185
+ export function sharedBackupParticipants(envelope) {
186
+ const participants = envelope.accessControl.at(-1)?.participants;
187
+ if (!participants) {
188
+ throw compatibility("accessControl must not be empty.");
189
+ }
190
+ return participants;
191
+ }
192
+ export function sharedBackupParticipant(envelope, keyId) {
193
+ return sharedBackupParticipants(envelope).find((participant) => participant.keyId === keyId) ?? null;
194
+ }
195
+ function parseAccessEntry(input, index) {
196
+ const entry = parseObject(input, "access-control entry");
197
+ if (!Number.isSafeInteger(entry.sequence) || entry.sequence !== index) {
198
+ throw compatibility("Access-control sequence is invalid.");
199
+ }
200
+ assertNonEmptyStrings(entry, ["authorKeyId", "signature"]);
201
+ if (entry.appId !== undefined || entry.backupId !== undefined) {
202
+ assertNonEmptyStrings(entry, ["appId", "backupId"]);
203
+ }
204
+ validateBytes(entry.authorKeyId, 32, "access author keyId");
205
+ validateBytes(entry.signature, 64, "access signature");
206
+ if (index === 0) {
207
+ if (entry.previousHash !== undefined) {
208
+ throw compatibility("The first access-control entry cannot have a previousHash.");
209
+ }
210
+ }
211
+ else {
212
+ if (!nonEmpty(entry.previousHash)) {
213
+ throw compatibility("An access-control entry is missing previousHash.");
214
+ }
215
+ validateBytes(entry.previousHash, 32, "access previousHash");
216
+ }
217
+ if (!Array.isArray(entry.participants) || entry.participants.length === 0) {
218
+ throw compatibility("Access-control participants must not be empty.");
219
+ }
220
+ const participantIds = new Set();
221
+ let ownerCount = 0;
222
+ for (const inputParticipant of entry.participants) {
223
+ const participant = parseObject(inputParticipant, "participant");
224
+ assertNonEmptyStrings(participant, [
225
+ "keyId",
226
+ "encryptionPublicKey",
227
+ "signingPublicKey",
228
+ "role",
229
+ ]);
230
+ assertExact(participant.encryptionAlgorithm, SHARING_ENCRYPTION_ALGORITHM, "encryptionAlgorithm");
231
+ assertExact(participant.signatureAlgorithm, SHARING_SIGNATURE_ALGORITHM, "signatureAlgorithm");
232
+ if (!isRole(participant.role)) {
233
+ throw compatibility("A participant has an unsupported role.");
234
+ }
235
+ if (participant.accepted !== undefined) {
236
+ parseAcceptanceProvenance(participant.accepted);
237
+ }
238
+ validatePublicKey(participant.encryptionPublicKey, "encryptionPublicKey");
239
+ validatePublicKey(participant.signingPublicKey, "signingPublicKey");
240
+ const keyId = participant.keyId;
241
+ validateBytes(keyId, 32, "participant keyId");
242
+ if (participantIds.has(keyId)) {
243
+ throw compatibility(`Duplicate participant ${keyId}.`);
244
+ }
245
+ participantIds.add(keyId);
246
+ if (participant.role === "owner")
247
+ ownerCount += 1;
248
+ }
249
+ if (ownerCount !== 1) {
250
+ throw compatibility("An access-control entry must have exactly one owner.");
251
+ }
252
+ if (entry.keyRotation !== undefined) {
253
+ const rotation = parseObject(entry.keyRotation, "key rotation");
254
+ assertNonEmptyStrings(rotation, [
255
+ "fromKeyId",
256
+ "toKeyId",
257
+ "newKeyProof",
258
+ ]);
259
+ validateBytes(rotation.fromKeyId, 32, "rotation fromKeyId");
260
+ validateBytes(rotation.toKeyId, 32, "rotation toKeyId");
261
+ validateBytes(rotation.newKeyProof, 64, "rotation proof");
262
+ if (rotation.fromKeyId === rotation.toKeyId) {
263
+ throw compatibility("A key rotation must change the key ID.");
264
+ }
265
+ }
266
+ }
267
+ function parseAcceptanceProvenance(input) {
268
+ const accepted = parseObject(input, "participant acceptance provenance");
269
+ assertNonEmptyStrings(accepted, [
270
+ "exchangeId",
271
+ "drivePermissionId",
272
+ "acceptedAt",
273
+ "acceptedByKeyId",
274
+ ]);
275
+ if (accepted.googleSubject !== undefined &&
276
+ !nonEmpty(accepted.googleSubject)) {
277
+ throw compatibility("googleSubject must be a non-empty string.");
278
+ }
279
+ validateBytes(accepted.acceptedByKeyId, 32, "acceptedByKeyId");
280
+ validateTimestamp(accepted.acceptedAt, "acceptedAt");
281
+ }
282
+ function parseSharingAccountBinding(input) {
283
+ const binding = parseObject(input, "sharing account binding");
284
+ assertExact(binding.schemaVersion, 1, "account binding schemaVersion");
285
+ assertExact(binding.kind, "sync-kit-sharing-account-binding", "account binding kind");
286
+ assertNonEmptyStrings(binding, ["challenge", "googleIdToken"]);
287
+ validateBytes(binding.challenge, 32, "account binding challenge");
288
+ const passkey = parseObject(binding.passkey, "passkey assertion");
289
+ assertNonEmptyStrings(passkey, [
290
+ "credentialId",
291
+ "authenticatorData",
292
+ "clientDataJSON",
293
+ "signature",
294
+ ]);
295
+ base64UrlToBytes(passkey.credentialId);
296
+ base64UrlToBytes(passkey.authenticatorData);
297
+ base64UrlToBytes(passkey.clientDataJSON);
298
+ base64UrlToBytes(passkey.signature);
299
+ if (!passkey.credentialPublicKey ||
300
+ typeof passkey.credentialPublicKey !== "object" ||
301
+ Array.isArray(passkey.credentialPublicKey)) {
302
+ throw compatibility("credentialPublicKey must be a JWK object.");
303
+ }
304
+ }
305
+ function parseObject(value, label) {
306
+ let parsed = value;
307
+ if (typeof value === "string") {
308
+ try {
309
+ parsed = JSON.parse(value);
310
+ }
311
+ catch (error) {
312
+ throw new SyncKitError("compatibility", `The ${label} is not valid JSON.`, { cause: error });
313
+ }
314
+ }
315
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
316
+ throw compatibility(`The ${label} must be an object.`);
317
+ }
318
+ return parsed;
319
+ }
320
+ function assertNonEmptyStrings(value, fields) {
321
+ for (const field of fields) {
322
+ if (!nonEmpty(value[field])) {
323
+ throw compatibility(`${field} must be a non-empty string.`);
324
+ }
325
+ }
326
+ }
327
+ function assertExact(value, expected, field) {
328
+ if (value !== expected) {
329
+ throw compatibility(`${field} is not supported.`);
330
+ }
331
+ }
332
+ function validatePublicKey(value, field) {
333
+ validateBytes(value, 65, field);
334
+ if (base64UrlToBytes(value)[0] !== 4) {
335
+ throw compatibility(`${field} is not an uncompressed P-256 public key.`);
336
+ }
337
+ }
338
+ function validateBytes(value, length, field) {
339
+ if (base64UrlToBytes(value).length !== length) {
340
+ throw compatibility(`${field} has an invalid length.`);
341
+ }
342
+ }
343
+ function validateTimestamp(value, field) {
344
+ if (!Number.isFinite(Date.parse(value))) {
345
+ throw compatibility(`${field} is not a valid timestamp.`);
346
+ }
347
+ }
348
+ function isRole(value) {
349
+ return (value === "owner" ||
350
+ value === "admin" ||
351
+ value === "writer" ||
352
+ value === "viewer");
353
+ }
354
+ function nonEmpty(value) {
355
+ return typeof value === "string" && value.length > 0;
356
+ }
357
+ function compatibility(message) {
358
+ return new SyncKitError("compatibility", message);
359
+ }
360
+ export { SharingChangeDetector, createSharingChangeDetectorFromTransport, detectSharingChanges, } from "./change-detector.js";
361
+ export { appendSharingJoinParams, buildSharingJoinSearchParams, findSharingJoinInvitation, formatSharingInviteEmailMessage, parseSharingJoinParams, resolveSharingJoinInvitation, SHARING_JOIN_EXCHANGE_PARAM, SHARING_JOIN_FOLDER_PARAM, SHARING_JOIN_MARKER_PARAM, SHARING_JOIN_SHORT_EXCHANGE_PARAM, SHARING_JOIN_SHORT_FOLDER_PARAM, SHARING_JOIN_SHORT_MARKER_PARAM, SHARING_JOIN_SHORT_MARKER_VALUE, } from "./join.js";
362
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sharing/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { SharingInvitationV1 } from "./index.js";
2
+ import type { SharedBackupTransport } from "./transport.js";
3
+ export declare const SHARING_JOIN_MARKER_PARAM = "sync-kit-join";
4
+ export declare const SHARING_JOIN_EXCHANGE_PARAM = "sync-kit-exchange";
5
+ export declare const SHARING_JOIN_FOLDER_PARAM = "sync-kit-folder";
6
+ /** Common consumer alias: `?sync=join&folder=…` with optional `exchange=…` */
7
+ export declare const SHARING_JOIN_SHORT_MARKER_PARAM = "sync";
8
+ export declare const SHARING_JOIN_SHORT_MARKER_VALUE = "join";
9
+ export declare const SHARING_JOIN_SHORT_EXCHANGE_PARAM = "exchange";
10
+ export declare const SHARING_JOIN_SHORT_FOLDER_PARAM = "folder";
11
+ export type SharingJoinParams = {
12
+ appFolderId: string;
13
+ /** Optional when only one pending invitation exists in the app folder. */
14
+ exchangeId?: string;
15
+ };
16
+ export type SharingJoinParamStyle = "sync-kit" | "short";
17
+ export type SharingJoinInvitationMatch = {
18
+ invitationFileId: string;
19
+ invitation: SharingInvitationV1;
20
+ };
21
+ /**
22
+ * Parses a join URL or query string. Returns null when the input is not a
23
+ * recognized sharing join link. The app folder ID is required; exchange ID is
24
+ * optional and only needed to disambiguate multiple pending invitations.
25
+ */
26
+ export declare function parseSharingJoinParams(input: string | URLSearchParams): SharingJoinParams | null;
27
+ /**
28
+ * Builds join query params for appending to a consumer landing URL.
29
+ */
30
+ export declare function buildSharingJoinSearchParams(params: SharingJoinParams, style?: SharingJoinParamStyle): URLSearchParams;
31
+ /**
32
+ * Appends join params to a consumer landing URL. The landing origin and path
33
+ * remain application-owned.
34
+ */
35
+ export declare function appendSharingJoinParams(landingUrl: string, params: SharingJoinParams, style?: SharingJoinParamStyle): string;
36
+ /**
37
+ * Formats a Drive sharing notification body that points recipients to the app
38
+ * join flow instead of relying on Google's folder-only notification.
39
+ */
40
+ export declare function formatSharingInviteEmailMessage(options: {
41
+ joinUrl: string;
42
+ appDisplayName: string;
43
+ intro?: string;
44
+ }): string;
45
+ /**
46
+ * Finds a pending invitation file for a join exchange ID inside the transport's
47
+ * current app folder.
48
+ */
49
+ export declare function findSharingJoinInvitation(transport: SharedBackupTransport, exchangeId: string): Promise<SharingJoinInvitationMatch | null>;
50
+ /**
51
+ * Resolves join params against a transport whose app folder already matches
52
+ * `params.appFolderId` (typically via `selectedAppFolderId`). When exchange ID
53
+ * is omitted, the sole pending invitation in the folder is used.
54
+ */
55
+ export declare function resolveSharingJoinInvitation(transport: SharedBackupTransport, params: SharingJoinParams): Promise<SharingJoinInvitationMatch>;
56
+ //# sourceMappingURL=join.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/sharing/join.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,yBAAyB,kBAAkB,CAAC;AACzD,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAC/D,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAE3D,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B,SAAS,CAAC;AACtD,eAAO,MAAM,+BAA+B,SAAS,CAAC;AACtD,eAAO,MAAM,iCAAiC,aAAa,CAAC;AAC5D,eAAO,MAAM,+BAA+B,WAAW,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,OAAO,CAAC;AAEzD,MAAM,MAAM,0BAA0B,GAAG;IACvC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,mBAAmB,CAAC;CACjC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,GAAG,eAAe,GAC9B,iBAAiB,GAAG,IAAI,CAe1B;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,iBAAiB,EACzB,KAAK,GAAE,qBAAkC,GACxC,eAAe,CAmBjB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,iBAAiB,EACzB,KAAK,GAAE,qBAAkC,GACxC,MAAM,CAOR;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAWT;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,qBAAqB,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAU5C;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,qBAAqB,EAChC,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,0BAA0B,CAAC,CAwCrC"}