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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +137 -11
  2. package/dist/auth/google-web/identity.d.ts +49 -0
  3. package/dist/auth/google-web/identity.d.ts.map +1 -0
  4. package/dist/auth/google-web/identity.js +102 -0
  5. package/dist/auth/google-web/identity.js.map +1 -0
  6. package/dist/auth/google-web/index.d.ts +1 -0
  7. package/dist/auth/google-web/index.d.ts.map +1 -1
  8. package/dist/auth/google-web/index.js +1 -0
  9. package/dist/auth/google-web/index.js.map +1 -1
  10. package/dist/core/errors.d.ts +1 -1
  11. package/dist/core/errors.d.ts.map +1 -1
  12. package/dist/core/errors.js +22 -1
  13. package/dist/core/errors.js.map +1 -1
  14. package/dist/crypto/canonical.d.ts +5 -0
  15. package/dist/crypto/canonical.d.ts.map +1 -1
  16. package/dist/crypto/canonical.js +8 -1
  17. package/dist/crypto/canonical.js.map +1 -1
  18. package/dist/crypto/envelope.d.ts.map +1 -1
  19. package/dist/crypto/envelope.js +1 -0
  20. package/dist/crypto/envelope.js.map +1 -1
  21. package/dist/crypto/profiles.d.ts +6 -46
  22. package/dist/crypto/profiles.d.ts.map +1 -1
  23. package/dist/crypto/profiles.js +33 -46
  24. package/dist/crypto/profiles.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/controller.d.ts +139 -0
  38. package/dist/sharing/controller.d.ts.map +1 -0
  39. package/dist/sharing/controller.js +549 -0
  40. package/dist/sharing/controller.js.map +1 -0
  41. package/dist/sharing/index.d.ts +119 -0
  42. package/dist/sharing/index.d.ts.map +1 -0
  43. package/dist/sharing/index.js +360 -0
  44. package/dist/sharing/index.js.map +1 -0
  45. package/dist/sharing/transport.d.ts +65 -0
  46. package/dist/sharing/transport.d.ts.map +1 -0
  47. package/dist/sharing/transport.js +2 -0
  48. package/dist/sharing/transport.js.map +1 -0
  49. package/dist/sharing/web-crypto.d.ts +68 -0
  50. package/dist/sharing/web-crypto.d.ts.map +1 -0
  51. package/dist/sharing/web-crypto.js +645 -0
  52. package/dist/sharing/web-crypto.js.map +1 -0
  53. package/dist/sharing/web-passkey.d.ts +68 -0
  54. package/dist/sharing/web-passkey.d.ts.map +1 -0
  55. package/dist/sharing/web-passkey.js +303 -0
  56. package/dist/sharing/web-passkey.js.map +1 -0
  57. package/dist/snapshot/controller.d.ts.map +1 -1
  58. package/dist/snapshot/controller.js +4 -8
  59. package/dist/snapshot/controller.js.map +1 -1
  60. package/dist/stores/google-drive/index.d.ts +147 -1
  61. package/dist/stores/google-drive/index.d.ts.map +1 -1
  62. package/dist/stores/google-drive/index.js +397 -0
  63. package/dist/stores/google-drive/index.js.map +1 -1
  64. package/dist/stores/google-drive/picker.d.ts +89 -0
  65. package/dist/stores/google-drive/picker.d.ts.map +1 -0
  66. package/dist/stores/google-drive/picker.js +179 -0
  67. package/dist/stores/google-drive/picker.js.map +1 -0
  68. package/dist/stores/google-drive/sharing.d.ts +55 -0
  69. package/dist/stores/google-drive/sharing.d.ts.map +1 -0
  70. package/dist/stores/google-drive/sharing.js +295 -0
  71. package/dist/stores/google-drive/sharing.js.map +1 -0
  72. package/package.json +67 -12
  73. package/fixtures/v1/easybc-web-android-gzip.json +0 -41
  74. package/fixtures/v1/easybc-web-uncompressed.json +0 -35
  75. package/fixtures/v1/failures.json +0 -42
  76. package/fixtures/v1/family-chores-web-uncompressed.json +0 -73
  77. package/fixtures/v1/profiles.json +0 -51
package/README.md CHANGED
@@ -7,9 +7,38 @@ The package extracts the behavior already implemented by EasyBC and Family
7
7
  Chores. It does not own application schemas, merge policy, persistence, UI, or
8
8
  lifecycle policy.
9
9
 
10
+ ## Backend-independent by design
11
+
12
+ A primary package objective is to let a static frontend provide encrypted sync
13
+ and multi-user sharing without an application-owned trusted backend. The
14
+ complete interactive flow must be implementable with browser cryptography and
15
+ passkeys, Google Identity Services, and Google Drive:
16
+
17
+ - no server-held client secret or refresh token;
18
+ - no application database, certificate signer, or authorization service;
19
+ - no server required to encrypt, decrypt, invite, accept, reconcile access, or
20
+ publish a signed revision.
21
+
22
+ Google remains the OAuth, identity, and storage provider. Participant keys,
23
+ signed access-control history, and the pinned owner key remain the
24
+ cryptographic authority. An optional backend adapter may add unattended jobs,
25
+ notifications, or operational automation, but package correctness and
26
+ interoperability must never depend on one.
27
+
28
+ Backendless browser deployments operate while the app is open and may need
29
+ user interaction when OAuth access expires or a passkey ceremony is required.
30
+ That limitation must not be hidden by broad Drive scopes or by making a
31
+ backend mandatory.
32
+
10
33
  ## Status
11
34
 
12
- Version `0.1.0` is implemented and configured as a public MIT-licensed package.
35
+ Version `0.1.1` was published to npm on 2026-06-30. It removes the
36
+ application-specific runtime presets from `0.1.0` and keeps compatibility
37
+ profiles consumer-owned.
38
+
39
+ The current worktree is the unpublished `0.2.0-rc.0` sharing release
40
+ candidate. Publication remains gated on live Google validation and one
41
+ external consumer integration.
13
42
 
14
43
  The tests in this repository cover frozen compatibility vectors, mocked
15
44
  browser providers, package orchestration, and installation/imports from the
@@ -33,8 +62,9 @@ The package has no runtime dependencies and is ESM-only.
33
62
 
34
63
  ```ts
35
64
  import {
36
- easyBcV1Profile,
37
- familyChoresV1Profile,
65
+ createV1EnvelopeCrypto,
66
+ createWebCryptoBackend,
67
+ defineV1CompatibilityProfile,
38
68
  } from "@keyneom/sync-kit/crypto";
39
69
  import { createSnapshotSync } from "@keyneom/sync-kit/snapshot";
40
70
  import { createWebPasskeyProvider } from "@keyneom/sync-kit/keys/web-passkey";
@@ -45,6 +75,38 @@ import {
45
75
  } from "@keyneom/sync-kit/stores/google-drive";
46
76
  ```
47
77
 
78
+ Applications define their own profile:
79
+
80
+ ```ts
81
+ const profile = defineV1CompatibilityProfile({
82
+ appId: "my-notes",
83
+ filename: "my-notes-sync-v1.json",
84
+ aad: "my-notes-sync-envelope-v1",
85
+ hkdfInfo: "my-notes-content-key-v1",
86
+ compression: "gzip-if-smaller",
87
+ passkey: {
88
+ rpName: "My Notes",
89
+ userName: "encrypted-sync",
90
+ userDisplayName: "My Notes encrypted sync",
91
+ algorithm: -7,
92
+ residentKey: "required",
93
+ userVerification: "required",
94
+ timeoutMs: 60_000,
95
+ },
96
+ });
97
+
98
+ const envelopeCrypto = createV1EnvelopeCrypto(
99
+ profile,
100
+ appCodec,
101
+ createWebCryptoBackend(),
102
+ );
103
+ ```
104
+
105
+ The package does not export profiles for EasyBC, Family Chores, or any other
106
+ consumer. Profile values are application configuration. Application data
107
+ models, parsing, migration, merge, and fingerprints remain in `appCodec`, so a
108
+ model change does not require a `sync-kit` release.
109
+
48
110
  Available exports:
49
111
 
50
112
  - `/core` — provider contracts and standardized errors
@@ -52,12 +114,28 @@ Available exports:
52
114
  optional gzip, and canonical JSON/AAD helpers
53
115
  - `/snapshot` — serialized snapshot synchronization
54
116
  - `/snapshot/lifecycle` — opt-in browser lifecycle binding
117
+ - `/sharing` — browser-independent shared-backup protocol types, validation,
118
+ roles, invitations, and signed multi-recipient envelopes
119
+ - `/sharing/web-crypto` — P-256 identities, ECDH key grants, signed revisions,
120
+ invitation/key-response proofs, and decryption
121
+ - `/sharing/controller` — headless multi-dataset orchestration, owner pinning,
122
+ serialized writes, exchange processing, roles, and revocation
123
+ - `/sharing/web-passkey` — passkey-encrypted sharing identities with
124
+ non-extractable runtime keys and optional IndexedDB ciphertext storage
125
+ - `/sharing/account-binding` — backendless Google ID-token and WebAuthn
126
+ challenge binding, signature verification, and account provenance
55
127
  - `/keys/web-passkey` — WebAuthn PRF keys with exact credential selection,
56
128
  unlock coalescing, raw-secret zeroing, and explicit cache clearing
57
129
  - `/auth/google-web` — Google Identity Services with memory-only token reuse,
58
130
  expiry skew, request coalescing, and explicit invalidation
59
- - `/stores/google-drive` — low-level `appDataFolder` objects plus a typed
60
- snapshot wrapper
131
+ - `/auth/google-web/identity` — uncached nonce-bound Google ID tokens for
132
+ account-binding exchanges
133
+ - `/stores/google-drive` — low-level `appDataFolder` objects, a typed snapshot
134
+ wrapper, and normal-Drive folder/per-file stores
135
+ - `/stores/google-drive/sharing` — managed app/exchange folders, conditional
136
+ dataset writes, provenance checks, and per-dataset permissions
137
+ - `/stores/google-drive/picker` — explicit folder Picker and Drive Open-with
138
+ state parsing
61
139
 
62
140
  The root, `/core`, `/crypto`, and `/snapshot` expose no browser adapter.
63
141
  Browser globals and script loading are used only after an explicit browser
@@ -101,12 +179,14 @@ matches the remote value.
101
179
  The wire protocol is the native compatibility boundary; the browser adapter is
102
180
  not.
103
181
 
104
- - EasyBC Android's Kotlin implementation reads the same v1 AES-GCM/HKDF/gzip
105
- fixtures as this package.
182
+ - **Android:** `com.keyneom:sync-kit-android` (module `android/synckit`) provides
183
+ private v1 snapshot crypto, `SnapshotSyncController`, Drive `appDataFolder`
184
+ storage, and Credential Manager passkey PRF — the same contracts as the npm
185
+ `/crypto`, `/snapshot`, and appData store paths. See
186
+ [android-library.md](docs/android-library.md).
187
+ - Shared backups (`/sharing`) are TypeScript-only for now.
106
188
  - React Native and other JavaScript-native runtimes can inject a
107
189
  `CryptoBackend<K>` backed by platform crypto.
108
- - Kotlin and Swift applications implement the small key, authorization, store,
109
- and crypto contracts natively while consuming the shared fixtures.
110
190
  - Tauri applications can use `/core`, `/crypto`, and the low-level Google Drive
111
191
  object store, but should perform OAuth in the system browser through
112
192
  Authorization Code + PKCE.
@@ -114,10 +194,56 @@ not.
114
194
  See [native consumer guidance](docs/native-consumers.md) and the exact
115
195
  [v1 compatibility contract](docs/compatibility-v1.md).
116
196
 
197
+ ## Shared encrypted backups
198
+
199
+ The experimental sharing surface encrypts each revision with a fresh content
200
+ key, wraps that key to every participant's ECDH public key, and accepts writes
201
+ only when an owner/admin/writer signs the complete revision. Viewers receive a
202
+ decryption grant but are not authorized revision signers.
203
+
204
+ Sharing follows the package-wide backend-independent objective above. A static
205
+ frontend can execute the protocol directly against Google Drive; an
206
+ application-owned server is neither a trust root nor a deployment requirement.
207
+
208
+ Shared files use normal Google Drive storage with the per-file `drive.file`
209
+ scope. A recipient can select the shared app folder once through Google Picker,
210
+ after which the app reuses its ID for app-created children; broad access to
211
+ Drive is not required. `appDataFolder` files cannot be shared.
212
+
213
+ New integrations can use `GoogleDriveFileSnapshotStore`, which defaults to an
214
+ app-owned top-level folder:
215
+
216
+ ```text
217
+ Sync Kit - <appId>/
218
+ <consumer filename>
219
+ ```
220
+
221
+ The folder name can be overridden. A selected parent folder is optional rather
222
+ than part of the default flow. Existing v1 consumers continue using
223
+ `GoogleDriveSnapshotStore` and `appDataFolder` until they explicitly migrate.
224
+
225
+ For shared data, the default policy makes the app folder readable to all app
226
+ participants, makes its `exchanges/` child writable, and upgrades selected
227
+ participants to writer on individual dataset files. This exposes filenames,
228
+ metadata, and ciphertext to app participants while cryptographic grants control
229
+ decryption. Applications needing metadata isolation can instead use direct file
230
+ sharing or limited-access subfolders.
231
+
232
+ See the [protocol and threat model](docs/shared-backups.md) and
233
+ [authoritative implementation handoff](docs/sharing-implementation-handoff.md).
234
+ The phased gates remain in the
235
+ [sharing execution plan](docs/sharing-execution-plan.md). The crypto and
236
+ per-file transport, Picker, protected identity, account binding, signed
237
+ ancestry/fork policy, key rotation, and controller primitives are implemented.
238
+ The same sharing fixture is consumed by Java, and the packed package completes
239
+ an exchange/decryption smoke test. Live Google OAuth/Picker, Drive
240
+ conditional-write/permission validation, and adoption in an external consumer
241
+ remain release gates.
242
+
117
243
  ## Compatibility and isolation
118
244
 
119
- The explicit profiles preserve both applications' v1 filenames, AAD, HKDF
120
- labels, compression behavior, and passkey names. V1 readers remain separate
245
+ Each application owns the profile that preserves its filename, AAD, HKDF
246
+ label, compression behavior, and passkey names. V1 readers remain separate
121
247
  because their cryptographic contexts are intentionally incompatible.
122
248
 
123
249
  The Drive snapshot wrapper rejects the wrong `appId` before making a request.
@@ -0,0 +1,49 @@
1
+ type GoogleCredentialResponse = {
2
+ credential?: string;
3
+ };
4
+ type PromptMomentNotification = {
5
+ isNotDisplayed(): boolean;
6
+ isSkippedMoment(): boolean;
7
+ getNotDisplayedReason?(): string;
8
+ getSkippedReason?(): string;
9
+ };
10
+ type GoogleIdentityWindow = Window & {
11
+ google?: {
12
+ accounts?: {
13
+ id?: {
14
+ initialize(options: {
15
+ client_id: string;
16
+ nonce: string;
17
+ callback(response: GoogleCredentialResponse): void;
18
+ auto_select?: boolean;
19
+ cancel_on_tap_outside?: boolean;
20
+ use_fedcm_for_prompt?: boolean;
21
+ }): void;
22
+ prompt(callback?: (notification: PromptMomentNotification) => void): void;
23
+ cancel(): void;
24
+ };
25
+ };
26
+ };
27
+ };
28
+ export type GoogleWebIdentityOptions = {
29
+ clientId: string;
30
+ window?: GoogleIdentityWindow;
31
+ document?: Document;
32
+ useFedCm?: boolean;
33
+ };
34
+ /**
35
+ * Requests a Google-signed ID token whose nonce is the sharing-account
36
+ * binding challenge. The token is returned to the caller and is not cached.
37
+ */
38
+ export declare class GoogleWebIdentityProvider {
39
+ private readonly options;
40
+ private scriptPromise;
41
+ constructor(options: GoogleWebIdentityOptions);
42
+ requestIdToken(nonce: string): Promise<string>;
43
+ cancel(): void;
44
+ private loadScript;
45
+ private browserWindow;
46
+ private browserDocument;
47
+ }
48
+ export {};
49
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../src/auth/google-web/identity.ts"],"names":[],"mappings":"AAEA,KAAK,wBAAwB,GAAG;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,cAAc,IAAI,OAAO,CAAC;IAC1B,eAAe,IAAI,OAAO,CAAC;IAC3B,qBAAqB,CAAC,IAAI,MAAM,CAAC;IACjC,gBAAgB,CAAC,IAAI,MAAM,CAAC;CAC7B,CAAC;AAEF,KAAK,oBAAoB,GAAG,MAAM,GAAG;IACnC,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE;YACT,EAAE,CAAC,EAAE;gBACH,UAAU,CAAC,OAAO,EAAE;oBAClB,SAAS,EAAE,MAAM,CAAC;oBAClB,KAAK,EAAE,MAAM,CAAC;oBACd,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,CAAC;oBACnD,WAAW,CAAC,EAAE,OAAO,CAAC;oBACtB,qBAAqB,CAAC,EAAE,OAAO,CAAC;oBAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;iBAChC,GAAG,IAAI,CAAC;gBACT,MAAM,CACJ,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,wBAAwB,KAAK,IAAI,GAC1D,IAAI,CAAC;gBACR,MAAM,IAAI,IAAI,CAAC;aAChB,CAAC;SACH,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,qBAAa,yBAAyB;IAGxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,aAAa,CAA8B;gBAEtB,OAAO,EAAE,wBAAwB;IAMxD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiDpD,MAAM,IAAI,IAAI;IAId,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,eAAe;CAYxB"}
@@ -0,0 +1,102 @@
1
+ import { SyncKitError } from "../../core/errors.js";
2
+ /**
3
+ * Requests a Google-signed ID token whose nonce is the sharing-account
4
+ * binding challenge. The token is returned to the caller and is not cached.
5
+ */
6
+ export class GoogleWebIdentityProvider {
7
+ options;
8
+ scriptPromise = null;
9
+ constructor(options) {
10
+ this.options = options;
11
+ if (!options.clientId.trim()) {
12
+ throw new TypeError("clientId must not be empty.");
13
+ }
14
+ }
15
+ async requestIdToken(nonce) {
16
+ if (!nonce.trim())
17
+ throw new TypeError("nonce must not be empty.");
18
+ await this.loadScript();
19
+ const identity = this.browserWindow().google?.accounts?.id;
20
+ if (!identity) {
21
+ throw new SyncKitError("authorization", "Google identity services are unavailable.");
22
+ }
23
+ return new Promise((resolve, reject) => {
24
+ let settled = false;
25
+ const fail = (message) => {
26
+ if (settled)
27
+ return;
28
+ settled = true;
29
+ reject(new SyncKitError("authorization", message));
30
+ };
31
+ identity.initialize({
32
+ client_id: this.options.clientId,
33
+ nonce,
34
+ auto_select: false,
35
+ cancel_on_tap_outside: true,
36
+ use_fedcm_for_prompt: this.options.useFedCm ?? true,
37
+ callback: (response) => {
38
+ if (settled)
39
+ return;
40
+ if (!response.credential) {
41
+ fail("Google did not return an identity token.");
42
+ return;
43
+ }
44
+ settled = true;
45
+ resolve(response.credential);
46
+ },
47
+ });
48
+ identity.prompt((notification) => {
49
+ if (notification.isNotDisplayed()) {
50
+ fail(notification.getNotDisplayedReason?.() ??
51
+ "Google sign-in could not be displayed.");
52
+ }
53
+ else if (notification.isSkippedMoment()) {
54
+ fail(notification.getSkippedReason?.() ??
55
+ "Google sign-in was skipped.");
56
+ }
57
+ });
58
+ });
59
+ }
60
+ cancel() {
61
+ this.browserWindow().google?.accounts?.id?.cancel();
62
+ }
63
+ loadScript() {
64
+ if (this.browserWindow().google?.accounts?.id) {
65
+ return Promise.resolve();
66
+ }
67
+ if (this.scriptPromise)
68
+ return this.scriptPromise;
69
+ this.scriptPromise = new Promise((resolve, reject) => {
70
+ const script = this.browserDocument().createElement("script");
71
+ script.src = "https://accounts.google.com/gsi/client";
72
+ script.async = true;
73
+ script.defer = true;
74
+ script.onload = () => resolve();
75
+ script.onerror = () => {
76
+ this.scriptPromise = null;
77
+ reject(new SyncKitError("authorization", "Google identity services could not be loaded."));
78
+ };
79
+ this.browserDocument().head.append(script);
80
+ });
81
+ return this.scriptPromise;
82
+ }
83
+ browserWindow() {
84
+ const value = this.options.window ??
85
+ (typeof window === "undefined"
86
+ ? undefined
87
+ : window);
88
+ if (!value) {
89
+ throw new SyncKitError("configuration", "Google identity requires a browser window.");
90
+ }
91
+ return value;
92
+ }
93
+ browserDocument() {
94
+ const value = this.options.document ??
95
+ (typeof document === "undefined" ? undefined : document);
96
+ if (!value) {
97
+ throw new SyncKitError("configuration", "Google identity requires a browser document.");
98
+ }
99
+ return value;
100
+ }
101
+ }
102
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/auth/google-web/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAyCpD;;;GAGG;AACH,MAAM,OAAO,yBAAyB;IAGP;IAFrB,aAAa,GAAyB,IAAI,CAAC;IAEnD,YAA6B,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;QAC5D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7B,MAAM,IAAI,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAa;QAChC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,2CAA2C,CAC5C,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,IAAI,GAAG,CAAC,OAAe,EAAQ,EAAE;gBACrC,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,CAAC,IAAI,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;YACrD,CAAC,CAAC;YACF,QAAQ,CAAC,UAAU,CAAC;gBAClB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAChC,KAAK;gBACL,WAAW,EAAE,KAAK;gBAClB,qBAAqB,EAAE,IAAI;gBAC3B,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI;gBACnD,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACrB,IAAI,OAAO;wBAAE,OAAO;oBACpB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;wBACzB,IAAI,CAAC,0CAA0C,CAAC,CAAC;wBACjD,OAAO;oBACT,CAAC;oBACD,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC/B,CAAC;aACF,CAAC,CAAC;YACH,QAAQ,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;gBAC/B,IAAI,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC;oBAClC,IAAI,CACF,YAAY,CAAC,qBAAqB,EAAE,EAAE;wBACpC,wCAAwC,CAC3C,CAAC;gBACJ,CAAC;qBAAM,IAAI,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC;oBAC1C,IAAI,CACF,YAAY,CAAC,gBAAgB,EAAE,EAAE;wBAC/B,6BAA6B,CAChC,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IACtD,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,CAAC,GAAG,GAAG,wCAAwC,CAAC;YACtD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;gBACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,MAAM,CACJ,IAAI,YAAY,CACd,eAAe,EACf,+CAA+C,CAChD,CACF,CAAC;YACJ,CAAC,CAAC;YACF,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEO,aAAa;QACnB,MAAM,KAAK,GACT,IAAI,CAAC,OAAO,CAAC,MAAM;YACnB,CAAC,OAAO,MAAM,KAAK,WAAW;gBAC5B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,4CAA4C,CAC7C,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,eAAe;QACrB,MAAM,KAAK,GACT,IAAI,CAAC,OAAO,CAAC,QAAQ;YACrB,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,8CAA8C,CAC/C,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -1,5 +1,6 @@
1
1
  import type { Authorization, AuthorizationProvider } from "../../core/types.js";
2
2
  export declare const GOOGLE_DRIVE_APPDATA_SCOPE = "https://www.googleapis.com/auth/drive.appdata";
3
+ export declare const GOOGLE_DRIVE_FILE_SCOPE = "https://www.googleapis.com/auth/drive.file";
3
4
  type TokenResponse = {
4
5
  access_token?: string;
5
6
  expires_in?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/google-web/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,0BAA0B,kDACU,CAAC;AAElD,KAAK,aAAa,GAAG;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACzD,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,eAAe,CAAC,MAAM,EAAE;gBACtB,SAAS,EAAE,MAAM,CAAC;gBAClB,KAAK,EAAE,MAAM,CAAC;gBACd,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;gBACxC,cAAc,CAAC,CAAC,KAAK,EAAE;oBAAE,IAAI,CAAC,EAAE,MAAM,CAAA;iBAAE,GAAG,IAAI,CAAC;aACjD,GAAG,WAAW,CAAC;SACjB,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,CAAC,EAAE,cAAc,CAAA;KAAE,CAAC;IAC9C,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,qBAAa,8BACX,YAAW,qBAAqB,CAAC,aAAa,CAAC;IAOnC,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,MAAM,CAAuD;IACrE,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,UAAU,CAAK;gBAEM,OAAO,EAAE,6BAA6B;IAE7D,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAwBzC,KAAK,IAAI,IAAI;YAMC,YAAY;IAyD1B,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,QAAQ;CAYjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/google-web/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,0BAA0B,kDACU,CAAC;AAClD,eAAO,MAAM,uBAAuB,+CACU,CAAC;AAE/C,KAAK,aAAa,GAAG;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACzD,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,eAAe,CAAC,MAAM,EAAE;gBACtB,SAAS,EAAE,MAAM,CAAC;gBAClB,KAAK,EAAE,MAAM,CAAC;gBACd,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;gBACxC,cAAc,CAAC,CAAC,KAAK,EAAE;oBAAE,IAAI,CAAC,EAAE,MAAM,CAAA;iBAAE,GAAG,IAAI,CAAC;aACjD,GAAG,WAAW,CAAC;SACjB,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,CAAC,EAAE,cAAc,CAAA;KAAE,CAAC;IAC9C,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,qBAAa,8BACX,YAAW,qBAAqB,CAAC,aAAa,CAAC;IAOnC,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,MAAM,CAAuD;IACrE,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,UAAU,CAAK;gBAEM,OAAO,EAAE,6BAA6B;IAE7D,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAwBzC,KAAK,IAAI,IAAI;YAMC,YAAY;IAyD1B,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,QAAQ;CAYjB"}
@@ -1,5 +1,6 @@
1
1
  import { SyncKitError } from "../../core/errors.js";
2
2
  export const GOOGLE_DRIVE_APPDATA_SCOPE = "https://www.googleapis.com/auth/drive.appdata";
3
+ export const GOOGLE_DRIVE_FILE_SCOPE = "https://www.googleapis.com/auth/drive.file";
3
4
  export class GoogleWebAuthorizationProvider {
4
5
  options;
5
6
  scriptPromise = null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/google-web/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/google-web/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type SyncErrorCode = "authorization" | "compatibility" | "configuration" | "crypto" | "decompression" | "key" | "not-found" | "provider" | "serialization" | "state";
1
+ export type SyncErrorCode = "authorization" | "compatibility" | "configuration" | "conflict" | "crypto" | "decompression" | "key" | "not-found" | "provider" | "serialization" | "state";
2
2
  export declare class SyncKitError extends Error {
3
3
  readonly code: SyncErrorCode;
4
4
  readonly status: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,eAAe,GACf,eAAe,GACf,QAAQ,GACR,eAAe,GACf,KAAK,GACL,WAAW,GACX,UAAU,GACV,eAAe,GACf,OAAO,CAAC;AAEZ,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGlC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAY,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;CAOnD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,GACd,YAAY,CAId"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,eAAe,GACf,eAAe,GACf,UAAU,GACV,QAAQ,GACR,eAAe,GACf,KAAK,GACL,WAAW,GACX,UAAU,GACV,eAAe,GACf,OAAO,CAAC;AAgBZ,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGlC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAY,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;CAOnD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAUpE;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,GACd,YAAY,CAId"}
@@ -1,3 +1,16 @@
1
+ const SYNC_ERROR_CODES = new Set([
2
+ "authorization",
3
+ "compatibility",
4
+ "configuration",
5
+ "conflict",
6
+ "crypto",
7
+ "decompression",
8
+ "key",
9
+ "not-found",
10
+ "provider",
11
+ "serialization",
12
+ "state",
13
+ ]);
1
14
  export class SyncKitError extends Error {
2
15
  code;
3
16
  status;
@@ -9,7 +22,15 @@ export class SyncKitError extends Error {
9
22
  }
10
23
  }
11
24
  export function isSyncKitError(value) {
12
- return value instanceof SyncKitError;
25
+ if (value instanceof SyncKitError)
26
+ return true;
27
+ if (typeof value !== "object" || value === null)
28
+ return false;
29
+ const candidate = value;
30
+ return (candidate.name === "SyncKitError" &&
31
+ typeof candidate.message === "string" &&
32
+ typeof candidate.code === "string" &&
33
+ SYNC_ERROR_CODES.has(candidate.code));
13
34
  }
14
35
  export function asSyncKitError(value, code, message) {
15
36
  return isSyncKitError(value)
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAgB;IACpB,MAAM,CAAqB;IAEpC,YACE,IAAmB,EACnB,OAAe,EACf,UAA8C,EAAE;QAEhD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,KAAK,YAAY,YAAY,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAc,EACd,IAAmB,EACnB,OAAe;IAEf,OAAO,cAAc,CAAC,KAAK,CAAC;QAC1B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAaA,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAgB;IAC9C,eAAe;IACf,eAAe;IACf,eAAe;IACf,UAAU;IACV,QAAQ;IACR,eAAe;IACf,KAAK;IACL,WAAW;IACX,UAAU;IACV,eAAe;IACf,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAgB;IACpB,MAAM,CAAqB;IAEpC,YACE,IAAmB,EACnB,OAAe,EACf,UAA8C,EAAE;QAEhD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,SAAS,GAAG,KAA8D,CAAC;IACjF,OAAO,CACL,SAAS,CAAC,IAAI,KAAK,cAAc;QACjC,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ;QACrC,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;QAClC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAqB,CAAC,CACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAc,EACd,IAAmB,EACnB,OAAe;IAEf,OAAO,cAAc,CAAC,KAAK,CAAC;QAC1B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,CAAC"}
@@ -1,3 +1,8 @@
1
1
  export declare function canonicalJson(value: unknown): string;
2
2
  export declare function canonicalAad(value: unknown): Uint8Array;
3
+ /**
4
+ * Compares strings by UTF-16 code units so canonicalization is independent of
5
+ * the host locale and matches Java String.compareTo.
6
+ */
7
+ export declare function compareUtf16CodeUnits(left: string, right: string): number;
3
8
  //# sourceMappingURL=canonical.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../src/crypto/canonical.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAEvD"}
1
+ {"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../src/crypto/canonical.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAEvD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE"}
@@ -5,6 +5,13 @@ export function canonicalJson(value) {
5
5
  export function canonicalAad(value) {
6
6
  return new TextEncoder().encode(canonicalJson(value));
7
7
  }
8
+ /**
9
+ * Compares strings by UTF-16 code units so canonicalization is independent of
10
+ * the host locale and matches Java String.compareTo.
11
+ */
12
+ export function compareUtf16CodeUnits(left, right) {
13
+ return left < right ? -1 : left > right ? 1 : 0;
14
+ }
8
15
  function canonicalValue(value) {
9
16
  if (value === null ||
10
17
  typeof value === "string" ||
@@ -22,7 +29,7 @@ function canonicalValue(value) {
22
29
  if (typeof value === "object") {
23
30
  return Object.fromEntries(Object.entries(value)
24
31
  .filter(([, child]) => child !== undefined)
25
- .sort(([left], [right]) => left.localeCompare(right))
32
+ .sort(([left], [right]) => compareUtf16CodeUnits(left, right))
26
33
  .map(([key, child]) => [key, canonicalValue(child)]));
27
34
  }
28
35
  throw new SyncKitError("serialization", `Canonical JSON does not support ${typeof value}.`);
@@ -1 +1 @@
1
- {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/crypto/canonical.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IACE,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS,EAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,qDAAqD,CACtD,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;aAC1C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CACvD,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,mCAAmC,OAAO,KAAK,GAAG,CACnD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/crypto/canonical.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,KAAa;IAC/D,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IACE,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS,EAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,qDAAqD,CACtD,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;aAC1C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC7D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CACvD,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,mCAAmC,OAAO,KAAK,GAAG,CACnD,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/crypto/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK7C,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,OAAO,YAAY,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,sBAAsB,GAC9B,cAAc,CAmChB;AAED,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,OAAO,EAAE,sBAAsB,EAC/B,gBAAgB,EAAE,UAAU,EAC5B,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAC9C,KAAK,EAAE,CAAC,EACR,GAAG,EAAE,CAAC,EACN,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,EACpD,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CAAO,GACrD,OAAO,CAAC,cAAc,CAAC,CA2CzB;AAED,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAC9C,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAClC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EACzC,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,cAAc,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,CAAC,CAarD"}
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/crypto/envelope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK7C,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,SAAS,EAAE,OAAO,YAAY,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,sBAAsB,GAC9B,cAAc,CAoChB;AAED,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,OAAO,EAAE,sBAAsB,EAC/B,gBAAgB,EAAE,UAAU,EAC5B,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,CAAC,CAAC,CAMZ;AAED,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAC9C,KAAK,EAAE,CAAC,EACR,GAAG,EAAE,CAAC,EACN,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,EACpD,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CAAO,GACrD,OAAO,CAAC,cAAc,CAAC,CA2CzB;AAED,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAC9C,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAClC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EACzC,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,cAAc,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,CAAC,CAarD"}
@@ -29,6 +29,7 @@ export function parseSyncEnvelopeV1(value, profile) {
29
29
  }
30
30
  validateEncodedLength(parsed.nonce, profile.nonceBytes, "nonce");
31
31
  validateEncodedLength(parsed.kdfSalt, profile.kdfSaltBytes, "KDF salt");
32
+ validateEncodedLength(parsed.prfInput, profile.prfInputBytes, "PRF input");
32
33
  return parsed;
33
34
  }
34
35
  export async function deriveContentKey(profile, inputKeyMaterial, salt, backend) {
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/crypto/envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/crypto/envelope.ts"],"names":[],"mappings":"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"}
@@ -24,50 +24,10 @@ export type V1CompatibilityProfile = {
24
24
  tagBits: 128;
25
25
  passkey: PasskeyProfile;
26
26
  };
27
- export declare const easyBcV1Profile: {
28
- readonly appId: "easy-bc";
29
- readonly filename: "easybc-sync-v1.json";
30
- readonly aad: "easy-bc-sync-envelope-v1";
31
- readonly hkdfInfo: "easy-bc-cloud-content-key-v1";
32
- readonly algorithm: "AES-256-GCM+HKDF-SHA-256";
33
- readonly readVersions: readonly [1];
34
- readonly writeVersion: 1;
35
- readonly compression: "gzip-if-smaller";
36
- readonly nonceBytes: 12;
37
- readonly kdfSaltBytes: 32;
38
- readonly prfInputBytes: 32;
39
- readonly tagBits: 128;
40
- readonly passkey: {
41
- readonly rpName: "EasyBC";
42
- readonly userName: "encrypted-sync";
43
- readonly userDisplayName: "EasyBC encrypted sync";
44
- readonly algorithm: -7;
45
- readonly residentKey: "required";
46
- readonly userVerification: "required";
47
- readonly timeoutMs: 60000;
48
- };
49
- };
50
- export declare const familyChoresV1Profile: {
51
- readonly appId: "family-chores";
52
- readonly filename: "family-chores-sync-v1.json";
53
- readonly aad: "family-chores-sync-envelope-v1";
54
- readonly hkdfInfo: "family-chores-cloud-content-key-v1";
55
- readonly algorithm: "AES-256-GCM+HKDF-SHA-256";
56
- readonly readVersions: readonly [1];
57
- readonly writeVersion: 1;
58
- readonly compression: "none";
59
- readonly nonceBytes: 12;
60
- readonly kdfSaltBytes: 32;
61
- readonly prfInputBytes: 32;
62
- readonly tagBits: 128;
63
- readonly passkey: {
64
- readonly rpName: "Family Chores";
65
- readonly userName: "encrypted-sync";
66
- readonly userDisplayName: "Family Chores encrypted sync";
67
- readonly algorithm: -7;
68
- readonly residentKey: "required";
69
- readonly userVerification: "required";
70
- readonly timeoutMs: 60000;
71
- };
72
- };
27
+ export type V1CompatibilityProfileInput = Pick<V1CompatibilityProfile, "appId" | "filename" | "aad" | "hkdfInfo" | "compression" | "passkey">;
28
+ /**
29
+ * Creates a consumer-owned v1 profile while fixing protocol-level constants.
30
+ * Application profiles are configuration, not package presets.
31
+ */
32
+ export declare function defineV1CompatibilityProfile(input: V1CompatibilityProfileInput): Readonly<V1CompatibilityProfile>;
73
33
  //# sourceMappingURL=profiles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/crypto/profiles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,EAAG,0BAAmC,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,iBAAiB,CAAC;AAEvD,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,CAAC,CAAC,CAAC;IACd,WAAW,EAAE,UAAU,CAAC;IACxB,gBAAgB,EAAE,UAAU,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,YAAY,CAAC;IAC/B,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,YAAY,EAAE,CAAC,CAAC;IAChB,WAAW,EAAE,aAAa,CAAC;IAC3B,UAAU,EAAE,EAAE,CAAC;IACf,YAAY,EAAE,EAAE,CAAC;IACjB,aAAa,EAAE,EAAE,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;CAsBe,CAAC;AAE5C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;CAsBS,CAAC"}
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/crypto/profiles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,EAAG,0BAAmC,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,iBAAiB,CAAC;AAEvD,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,CAAC,CAAC,CAAC;IACd,WAAW,EAAE,UAAU,CAAC;IACxB,gBAAgB,EAAE,UAAU,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,YAAY,CAAC;IAC/B,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,YAAY,EAAE,CAAC,CAAC;IAChB,WAAW,EAAE,aAAa,CAAC;IAC3B,UAAU,EAAE,EAAE,CAAC;IACf,YAAY,EAAE,EAAE,CAAC;IACjB,aAAa,EAAE,EAAE,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC5C,sBAAsB,EACtB,OAAO,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CACtE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,2BAA2B,GACjC,QAAQ,CAAC,sBAAsB,CAAC,CA6BlC"}