@syncular/core 0.0.1 → 0.0.2-127

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 (70) hide show
  1. package/README.md +24 -0
  2. package/dist/blobs.d.ts +9 -4
  3. package/dist/blobs.d.ts.map +1 -1
  4. package/dist/blobs.js +0 -12
  5. package/dist/blobs.js.map +1 -1
  6. package/dist/column-codecs.d.ts +55 -0
  7. package/dist/column-codecs.d.ts.map +1 -0
  8. package/dist/column-codecs.js +124 -0
  9. package/dist/column-codecs.js.map +1 -0
  10. package/dist/index.d.ts +11 -9
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +21 -7
  13. package/dist/index.js.map +1 -1
  14. package/dist/kysely-serialize.d.ts +1 -1
  15. package/dist/kysely-serialize.d.ts.map +1 -1
  16. package/dist/logger.d.ts +7 -32
  17. package/dist/logger.d.ts.map +1 -1
  18. package/dist/logger.js +6 -40
  19. package/dist/logger.js.map +1 -1
  20. package/dist/proxy/types.d.ts +0 -9
  21. package/dist/proxy/types.d.ts.map +1 -1
  22. package/dist/schemas/index.js +3 -3
  23. package/dist/schemas/sync.d.ts +120 -6
  24. package/dist/schemas/sync.d.ts.map +1 -1
  25. package/dist/schemas/sync.js +17 -3
  26. package/dist/schemas/sync.js.map +1 -1
  27. package/dist/scopes/index.d.ts +39 -64
  28. package/dist/scopes/index.d.ts.map +1 -1
  29. package/dist/scopes/index.js +9 -154
  30. package/dist/scopes/index.js.map +1 -1
  31. package/dist/snapshot-chunks.d.ts +26 -0
  32. package/dist/snapshot-chunks.d.ts.map +1 -0
  33. package/dist/snapshot-chunks.js +89 -0
  34. package/dist/snapshot-chunks.js.map +1 -0
  35. package/dist/telemetry.d.ts +114 -0
  36. package/dist/telemetry.d.ts.map +1 -0
  37. package/dist/telemetry.js +113 -0
  38. package/dist/telemetry.js.map +1 -0
  39. package/dist/types.d.ts +12 -9
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/types.js.map +1 -1
  42. package/dist/utils/id.d.ts +2 -0
  43. package/dist/utils/id.d.ts.map +1 -0
  44. package/dist/utils/id.js +8 -0
  45. package/dist/utils/id.js.map +1 -0
  46. package/dist/utils/index.d.ts +3 -0
  47. package/dist/utils/index.d.ts.map +1 -0
  48. package/dist/utils/index.js +3 -0
  49. package/dist/utils/index.js.map +1 -0
  50. package/dist/utils/object.d.ts +2 -0
  51. package/dist/utils/object.d.ts.map +1 -0
  52. package/dist/utils/object.js +4 -0
  53. package/dist/utils/object.js.map +1 -0
  54. package/package.json +28 -8
  55. package/src/__tests__/telemetry.test.ts +170 -0
  56. package/src/__tests__/utils.test.ts +27 -0
  57. package/src/blobs.ts +15 -14
  58. package/src/column-codecs.ts +228 -0
  59. package/src/index.ts +15 -41
  60. package/src/kysely-serialize.ts +1 -1
  61. package/src/logger.ts +10 -68
  62. package/src/proxy/types.ts +0 -10
  63. package/src/schemas/sync.ts +27 -3
  64. package/src/scopes/index.ts +72 -200
  65. package/src/snapshot-chunks.ts +112 -0
  66. package/src/telemetry.ts +238 -0
  67. package/src/types.ts +14 -18
  68. package/src/utils/id.ts +7 -0
  69. package/src/utils/index.ts +2 -0
  70. package/src/utils/object.ts +3 -0
@@ -95,7 +95,7 @@ export declare const SyncBootstrapStateSchema: z.ZodObject<{
95
95
  export type SyncBootstrapState = z.infer<typeof SyncBootstrapStateSchema>;
96
96
  export declare const SyncSubscriptionRequestSchema: z.ZodObject<{
97
97
  id: z.ZodString;
98
- shape: z.ZodString;
98
+ table: z.ZodString;
99
99
  scopes: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
100
100
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
101
101
  cursor: z.ZodNumber;
@@ -115,7 +115,7 @@ export declare const SyncPullRequestSchema: z.ZodObject<{
115
115
  dedupeRows: z.ZodOptional<z.ZodBoolean>;
116
116
  subscriptions: z.ZodArray<z.ZodObject<{
117
117
  id: z.ZodString;
118
- shape: z.ZodString;
118
+ table: z.ZodString;
119
119
  scopes: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
120
120
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
121
121
  cursor: z.ZodNumber;
@@ -161,7 +161,7 @@ export declare const SyncSnapshotChunkRefSchema: z.ZodObject<{
161
161
  id: z.ZodString;
162
162
  byteLength: z.ZodNumber;
163
163
  sha256: z.ZodString;
164
- encoding: z.ZodLiteral<"ndjson">;
164
+ encoding: z.ZodLiteral<"json-row-frame-v1">;
165
165
  compression: z.ZodLiteral<"gzip">;
166
166
  }, z.core.$strip>;
167
167
  export type SyncSnapshotChunkRef = z.infer<typeof SyncSnapshotChunkRefSchema>;
@@ -172,7 +172,7 @@ export declare const SyncSnapshotSchema: z.ZodObject<{
172
172
  id: z.ZodString;
173
173
  byteLength: z.ZodNumber;
174
174
  sha256: z.ZodString;
175
- encoding: z.ZodLiteral<"ndjson">;
175
+ encoding: z.ZodLiteral<"json-row-frame-v1">;
176
176
  compression: z.ZodLiteral<"gzip">;
177
177
  }, z.core.$strip>>>;
178
178
  isFirstPage: z.ZodBoolean;
@@ -217,7 +217,7 @@ export declare const SyncPullSubscriptionResponseSchema: z.ZodObject<{
217
217
  id: z.ZodString;
218
218
  byteLength: z.ZodNumber;
219
219
  sha256: z.ZodString;
220
- encoding: z.ZodLiteral<"ndjson">;
220
+ encoding: z.ZodLiteral<"json-row-frame-v1">;
221
221
  compression: z.ZodLiteral<"gzip">;
222
222
  }, z.core.$strip>>>;
223
223
  isFirstPage: z.ZodBoolean;
@@ -265,7 +265,7 @@ export declare const SyncPullResponseSchema: z.ZodObject<{
265
265
  id: z.ZodString;
266
266
  byteLength: z.ZodNumber;
267
267
  sha256: z.ZodString;
268
- encoding: z.ZodLiteral<"ndjson">;
268
+ encoding: z.ZodLiteral<"json-row-frame-v1">;
269
269
  compression: z.ZodLiteral<"gzip">;
270
270
  }, z.core.$strip>>>;
271
271
  isFirstPage: z.ZodBoolean;
@@ -274,4 +274,118 @@ export declare const SyncPullResponseSchema: z.ZodObject<{
274
274
  }, z.core.$strip>>;
275
275
  }, z.core.$strip>;
276
276
  export type SyncPullResponse = z.infer<typeof SyncPullResponseSchema>;
277
+ export declare const SyncCombinedRequestSchema: z.ZodObject<{
278
+ clientId: z.ZodString;
279
+ push: z.ZodOptional<z.ZodObject<{
280
+ clientCommitId: z.ZodString;
281
+ operations: z.ZodArray<z.ZodObject<{
282
+ table: z.ZodString;
283
+ row_id: z.ZodString;
284
+ op: z.ZodEnum<{
285
+ delete: "delete";
286
+ upsert: "upsert";
287
+ }>;
288
+ payload: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
289
+ base_version: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
290
+ }, z.core.$strip>>;
291
+ schemaVersion: z.ZodNumber;
292
+ }, z.core.$strip>>;
293
+ pull: z.ZodOptional<z.ZodObject<{
294
+ limitCommits: z.ZodNumber;
295
+ limitSnapshotRows: z.ZodOptional<z.ZodNumber>;
296
+ maxSnapshotPages: z.ZodOptional<z.ZodNumber>;
297
+ dedupeRows: z.ZodOptional<z.ZodBoolean>;
298
+ subscriptions: z.ZodArray<z.ZodObject<{
299
+ id: z.ZodString;
300
+ table: z.ZodString;
301
+ scopes: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
302
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
303
+ cursor: z.ZodNumber;
304
+ bootstrapState: z.ZodOptional<z.ZodNullable<z.ZodObject<{
305
+ asOfCommitSeq: z.ZodNumber;
306
+ tables: z.ZodArray<z.ZodString>;
307
+ tableIndex: z.ZodNumber;
308
+ rowCursor: z.ZodNullable<z.ZodString>;
309
+ }, z.core.$strip>>>;
310
+ }, z.core.$strip>>;
311
+ }, z.core.$strip>>;
312
+ }, z.core.$strip>;
313
+ export type SyncCombinedRequest = z.infer<typeof SyncCombinedRequestSchema>;
314
+ export declare const SyncCombinedResponseSchema: z.ZodObject<{
315
+ ok: z.ZodLiteral<true>;
316
+ push: z.ZodOptional<z.ZodObject<{
317
+ ok: z.ZodLiteral<true>;
318
+ status: z.ZodEnum<{
319
+ applied: "applied";
320
+ cached: "cached";
321
+ rejected: "rejected";
322
+ }>;
323
+ commitSeq: z.ZodOptional<z.ZodNumber>;
324
+ results: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
325
+ opIndex: z.ZodNumber;
326
+ status: z.ZodLiteral<"applied">;
327
+ }, z.core.$strip>, z.ZodObject<{
328
+ opIndex: z.ZodNumber;
329
+ status: z.ZodLiteral<"conflict">;
330
+ message: z.ZodString;
331
+ server_version: z.ZodNumber;
332
+ server_row: z.ZodUnknown;
333
+ }, z.core.$strip>, z.ZodObject<{
334
+ opIndex: z.ZodNumber;
335
+ status: z.ZodLiteral<"error">;
336
+ error: z.ZodString;
337
+ code: z.ZodOptional<z.ZodString>;
338
+ retriable: z.ZodOptional<z.ZodBoolean>;
339
+ }, z.core.$strip>]>>;
340
+ }, z.core.$strip>>;
341
+ pull: z.ZodOptional<z.ZodObject<{
342
+ ok: z.ZodLiteral<true>;
343
+ subscriptions: z.ZodArray<z.ZodObject<{
344
+ id: z.ZodString;
345
+ status: z.ZodEnum<{
346
+ active: "active";
347
+ revoked: "revoked";
348
+ }>;
349
+ scopes: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
350
+ bootstrap: z.ZodBoolean;
351
+ bootstrapState: z.ZodOptional<z.ZodNullable<z.ZodObject<{
352
+ asOfCommitSeq: z.ZodNumber;
353
+ tables: z.ZodArray<z.ZodString>;
354
+ tableIndex: z.ZodNumber;
355
+ rowCursor: z.ZodNullable<z.ZodString>;
356
+ }, z.core.$strip>>>;
357
+ nextCursor: z.ZodNumber;
358
+ commits: z.ZodArray<z.ZodObject<{
359
+ commitSeq: z.ZodNumber;
360
+ createdAt: z.ZodString;
361
+ actorId: z.ZodString;
362
+ changes: z.ZodArray<z.ZodObject<{
363
+ table: z.ZodString;
364
+ row_id: z.ZodString;
365
+ op: z.ZodEnum<{
366
+ delete: "delete";
367
+ upsert: "upsert";
368
+ }>;
369
+ row_json: z.ZodNullable<z.ZodUnknown>;
370
+ row_version: z.ZodNullable<z.ZodNumber>;
371
+ scopes: z.ZodRecord<z.ZodString, z.ZodString>;
372
+ }, z.core.$strip>>;
373
+ }, z.core.$strip>>;
374
+ snapshots: z.ZodOptional<z.ZodArray<z.ZodObject<{
375
+ table: z.ZodString;
376
+ rows: z.ZodArray<z.ZodUnknown>;
377
+ chunks: z.ZodOptional<z.ZodArray<z.ZodObject<{
378
+ id: z.ZodString;
379
+ byteLength: z.ZodNumber;
380
+ sha256: z.ZodString;
381
+ encoding: z.ZodLiteral<"json-row-frame-v1">;
382
+ compression: z.ZodLiteral<"gzip">;
383
+ }, z.core.$strip>>>;
384
+ isFirstPage: z.ZodBoolean;
385
+ isLastPage: z.ZodBoolean;
386
+ }, z.core.$strip>>>;
387
+ }, z.core.$strip>>;
388
+ }, z.core.$strip>>;
389
+ }, z.core.$strip>;
390
+ export type SyncCombinedResponse = z.infer<typeof SyncCombinedResponseSchema>;
277
391
  //# sourceMappingURL=sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/schemas/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,YAAY;;;EAA+B,CAAC;AACzD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAWlD;;GAEG;AACH,eAAO,MAAM,iBAAiB,uFAG7B,CAAC;AAMF,eAAO,MAAM,mBAAmB;;;;;;;;;iBAM9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMhE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBAKhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAuBpE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;mBAIpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;iBAKjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAMtE,eAAO,MAAM,wBAAwB;;;;;iBAKnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAM1E,eAAO,MAAM,6BAA6B;;;;;;;;;;;;iBAOxC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,6BAA6B,CACrC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;iBAOhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,gBAAgB;;;;;;;;;;iBAO3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;iBAK3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,0BAA0B;;;;;;iBAMrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;iBAM7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS7C,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAChD,OAAO,kCAAkC,CAC1C,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/schemas/sync.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  * - Type inference
8
8
  */
9
9
  import { z } from 'zod';
10
+ import { SYNC_SNAPSHOT_CHUNK_COMPRESSION, SYNC_SNAPSHOT_CHUNK_ENCODING, } from '../snapshot-chunks.js';
10
11
  // ============================================================================
11
12
  // Operation Types
12
13
  // ============================================================================
@@ -84,7 +85,7 @@ export const SyncBootstrapStateSchema = z.object({
84
85
  // ============================================================================
85
86
  export const SyncSubscriptionRequestSchema = z.object({
86
87
  id: z.string().min(1),
87
- shape: z.string().min(1),
88
+ table: z.string().min(1),
88
89
  scopes: ScopeValuesSchema,
89
90
  params: z.record(z.string(), z.unknown()).optional(),
90
91
  cursor: z.number().int(),
@@ -116,8 +117,8 @@ export const SyncSnapshotChunkRefSchema = z.object({
116
117
  id: z.string(),
117
118
  byteLength: z.number().int(),
118
119
  sha256: z.string(),
119
- encoding: z.literal('ndjson'),
120
- compression: z.literal('gzip'),
120
+ encoding: z.literal(SYNC_SNAPSHOT_CHUNK_ENCODING),
121
+ compression: z.literal(SYNC_SNAPSHOT_CHUNK_COMPRESSION),
121
122
  });
122
123
  export const SyncSnapshotSchema = z.object({
123
124
  table: z.string(),
@@ -140,4 +141,17 @@ export const SyncPullResponseSchema = z.object({
140
141
  ok: z.literal(true),
141
142
  subscriptions: z.array(SyncPullSubscriptionResponseSchema),
142
143
  });
144
+ // ============================================================================
145
+ // Combined Sync Request/Response Schemas
146
+ // ============================================================================
147
+ export const SyncCombinedRequestSchema = z.object({
148
+ clientId: z.string().min(1),
149
+ push: SyncPushRequestSchema.omit({ clientId: true }).optional(),
150
+ pull: SyncPullRequestSchema.omit({ clientId: true }).optional(),
151
+ });
152
+ export const SyncCombinedResponseSchema = z.object({
153
+ ok: z.literal(true),
154
+ push: SyncPushResponseSchema.optional(),
155
+ pull: SyncPullResponseSchema.optional(),
156
+ });
143
157
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/schemas/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/schemas/sync.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,10 @@
9
9
  * Scope pattern string, e.g., 'user:{user_id}', 'project:{project_id}'
10
10
  */
11
11
  export type ScopePattern = string;
12
+ /**
13
+ * Scope value for a single scope key.
14
+ */
15
+ export type ScopeValue = string | string[];
12
16
  /**
13
17
  * Scope values - the actual values for scope variables.
14
18
  * Values can be single strings or arrays (for multi-value subscriptions).
@@ -18,7 +22,7 @@ export type ScopePattern = string;
18
22
  * { project_id: ['P1', 'P2'] }
19
23
  * { year: '2025', month: '03' }
20
24
  */
21
- export type ScopeValues = Record<string, string | string[]>;
25
+ export type ScopeValues = Record<string, ScopeValue>;
22
26
  /**
23
27
  * Stored scopes on a change - always single values (not arrays).
24
28
  * This is what gets stored in the JSONB column.
@@ -28,17 +32,37 @@ export type ScopeValues = Record<string, string | string[]>;
28
32
  */
29
33
  export type StoredScopes = Record<string, string>;
30
34
  /**
31
- * Definition of shared scopes across server and client.
32
- * Maps scope patterns to their variable types.
35
+ * Extract scope keys from a scope pattern at the type level.
33
36
  *
34
37
  * @example
35
- * type SharedScopes = {
36
- * 'user:{user_id}': { user_id: string };
37
- * 'project:{project_id}': { project_id: string };
38
- * 'event_date:{year}:{month}': { year: string; month: string };
39
- * };
38
+ * ScopeKeysFromPattern<'user:{user_id}'> // 'user_id'
39
+ * ScopeKeysFromPattern<'event:{year}:{month}'> // 'year' | 'month'
40
+ */
41
+ export type ScopeKeysFromPattern<Pattern extends ScopePattern> = string extends Pattern ? string : Pattern extends `${string}{${infer Key}}${infer Rest}` ? Key | ScopeKeysFromPattern<Rest> : never;
42
+ /**
43
+ * Resolve the pattern string from a scope definition.
44
+ */
45
+ export type ScopePatternFromDefinition<Definition extends ScopeDefinition> = Definition extends ScopePattern ? Definition : Definition extends {
46
+ pattern: infer Pattern extends ScopePattern;
47
+ } ? Pattern : never;
48
+ /**
49
+ * Extract scope keys from a list of scope definitions.
50
+ */
51
+ export type ScopeKeysFromDefinitions<Definitions extends readonly ScopeDefinition[]> = ScopeKeysFromPattern<ScopePatternFromDefinition<Definitions[number]>>;
52
+ /**
53
+ * Scope values constrained to known scope keys.
54
+ *
55
+ * Unknown keys are rejected at compile-time when literals are used.
40
56
  */
41
- export type SharedScopesDefinition = Record<ScopePattern, Record<string, string>>;
57
+ export type ScopeValuesForKeys<ScopeKeys extends string> = Partial<Record<ScopeKeys, ScopeValue>>;
58
+ /**
59
+ * Scope values inferred from scope definitions.
60
+ */
61
+ export type ScopeValuesFromPatterns<Definitions extends readonly ScopeDefinition[]> = ScopeValuesForKeys<ScopeKeysFromDefinitions<Definitions>>;
62
+ /**
63
+ * Stored scopes constrained to known scope keys.
64
+ */
65
+ export type StoredScopesForKeys<ScopeKeys extends string> = Partial<Record<ScopeKeys, string>>;
42
66
  /**
43
67
  * Simplified scope definition.
44
68
  * Can be a simple pattern string or an object with explicit column mapping.
@@ -54,21 +78,17 @@ export type SharedScopesDefinition = Record<ScopePattern, Record<string, string>
54
78
  * ]
55
79
  * ```
56
80
  */
57
- export type ScopeDefinition = string | {
58
- pattern: string;
81
+ export type ScopeDefinition = ScopePattern | {
82
+ pattern: ScopePattern;
59
83
  column: string;
60
84
  };
61
85
  /**
62
- * Build a scope string from a pattern and value.
86
+ * Keep scope definitions as a typed tuple for downstream inference.
63
87
  *
64
88
  * @example
65
- * buildScopeKey('user:{user_id}', '123') // 'user:123'
89
+ * const scopes = defineScopePatterns(['user:{user_id}'] as const);
66
90
  */
67
- export declare function buildScopeKey(pattern: string, value: string): string;
68
- /**
69
- * Check if a scope string matches a pattern.
70
- */
71
- export declare function scopeKeyMatchesPattern(pattern: string, scopeKey: string): boolean;
91
+ export declare function defineScopePatterns<const Definitions extends readonly ScopeDefinition[]>(scopes: Definitions): Definitions;
72
92
  /**
73
93
  * Normalize scope definitions to a pattern-to-column map.
74
94
  *
@@ -76,15 +96,7 @@ export declare function scopeKeyMatchesPattern(pattern: string, scopeKey: string
76
96
  * normalizeScopes(['user:{user_id}'])
77
97
  * // → { 'user:{user_id}': 'user_id' }
78
98
  */
79
- export declare function normalizeScopes(scopes: ScopeDefinition[]): Record<string, string>;
80
- /**
81
- * Find the matching pattern and extract value from a scope string.
82
- */
83
- export declare function findMatchingPattern(patterns: Record<string, string>, scopeKey: string): {
84
- pattern: string;
85
- column: string;
86
- value: string;
87
- } | null;
99
+ export declare function normalizeScopes(scopes: readonly ScopeDefinition[]): Record<ScopePattern, string>;
88
100
  /**
89
101
  * Extract variable names from a scope pattern.
90
102
  *
@@ -93,41 +105,4 @@ export declare function findMatchingPattern(patterns: Record<string, string>, sc
93
105
  * extractScopeVars('event_date:{year}:{month}') // ['year', 'month']
94
106
  */
95
107
  export declare function extractScopeVars(pattern: ScopePattern): string[];
96
- /**
97
- * Build scope values from a row based on a scope pattern.
98
- * Uses the pattern's variable names to extract values from the row.
99
- *
100
- * @example
101
- * buildScopeValuesFromRow('project:{project_id}', { id: '1', project_id: 'P1' })
102
- * // { project_id: 'P1' }
103
- */
104
- export declare function buildScopeValuesFromRow(pattern: ScopePattern, row: Record<string, unknown>): StoredScopes;
105
- /**
106
- * Merge multiple scope value objects into one.
107
- * Later values override earlier ones.
108
- */
109
- export declare function mergeScopeValues(...sources: StoredScopes[]): StoredScopes;
110
- /**
111
- * Check if two stored scopes are equal.
112
- */
113
- export declare function scopesEqual(a: StoredScopes, b: StoredScopes): boolean;
114
- /**
115
- * Check if stored scopes match a subscription's scope values.
116
- * Handles array values in subscription (OR semantics).
117
- * Missing keys in subscription are treated as wildcards (match any).
118
- *
119
- * @example
120
- * scopesMatchSubscription({ project_id: 'P1' }, { project_id: 'P1' }) // true
121
- * scopesMatchSubscription({ project_id: 'P1' }, { project_id: ['P1', 'P2'] }) // true
122
- * scopesMatchSubscription({ project_id: 'P1' }, { project_id: 'P2' }) // false
123
- */
124
- export declare function scopesMatchSubscription(stored: StoredScopes, subscription: ScopeValues): boolean;
125
- /**
126
- * Normalize scope values to always use arrays (for consistent handling).
127
- */
128
- export declare function normalizeScopeValues(values: ScopeValues): Record<string, string[]>;
129
- /**
130
- * Get all scope variable names from a set of patterns.
131
- */
132
- export declare function getAllScopeVars(patterns: ScopePattern[]): string[];
133
108
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scopes/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,CACzC,YAAY,EACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AA+D3E;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOpE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAET;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,eAAe,EAAE,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQ3D;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,CAIhE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,YAAY,EACrB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,YAAY,CAcd;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,CAQzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO,CAYrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,WAAW,GACxB,OAAO,CAaT;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAM1B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAQlE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scopes/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAE3C;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,YAAY,IAC3D,MAAM,SAAS,OAAO,GAClB,MAAM,GACN,OAAO,SAAS,GAAG,MAAM,IAAI,MAAM,GAAG,IAAI,MAAM,IAAI,EAAE,GACpD,GAAG,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAChC,KAAK,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,0BAA0B,CAAC,UAAU,SAAS,eAAe,IACvE,UAAU,SAAS,YAAY,GAC3B,UAAU,GACV,UAAU,SAAS;IAAE,OAAO,EAAE,MAAM,OAAO,SAAS,YAAY,CAAA;CAAE,GAChE,OAAO,GACP,KAAK,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,wBAAwB,CAClC,WAAW,SAAS,SAAS,eAAe,EAAE,IAC5C,oBAAoB,CAAC,0BAA0B,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,SAAS,SAAS,MAAM,IAAI,OAAO,CAChE,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,CACjC,WAAW,SAAS,SAAS,eAAe,EAAE,IAC5C,kBAAkB,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,SAAS,SAAS,MAAM,IAAI,OAAO,CACjE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAC1B,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,CAAC,WAAW,SAAS,SAAS,eAAe,EAAE,EACpD,MAAM,EAAE,WAAW,GAAG,WAAW,CAElC;AA+BD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,eAAe,EAAE,GACjC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAgB9B;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,CAIhE"}
@@ -5,6 +5,15 @@
5
5
  * Scopes are stored as JSONB on changes for flexible filtering.
6
6
  * Patterns use `{placeholder}` syntax to extract or inject values.
7
7
  */
8
+ /**
9
+ * Keep scope definitions as a typed tuple for downstream inference.
10
+ *
11
+ * @example
12
+ * const scopes = defineScopePatterns(['user:{user_id}'] as const);
13
+ */
14
+ export function defineScopePatterns(scopes) {
15
+ return scopes;
16
+ }
8
17
  // ── Pattern parsing (internal helpers) ───────────────────────────────
9
18
  /**
10
19
  * Extract the placeholder name from a pattern.
@@ -20,29 +29,6 @@ function extractPlaceholder(pattern) {
20
29
  suffix: match[3],
21
30
  };
22
31
  }
23
- /**
24
- * Match a scope string against a pattern and extract the value.
25
- */
26
- function matchScopePattern(pattern, scopeKey) {
27
- const parsed = extractPlaceholder(pattern);
28
- if (!parsed) {
29
- // No placeholder - exact match
30
- return pattern === scopeKey ? '' : null;
31
- }
32
- const { prefix, suffix } = parsed;
33
- if (!scopeKey.startsWith(prefix)) {
34
- return null;
35
- }
36
- if (suffix && !scopeKey.endsWith(suffix)) {
37
- return null;
38
- }
39
- const valueStart = prefix.length;
40
- const valueEnd = suffix ? scopeKey.length - suffix.length : scopeKey.length;
41
- if (valueStart >= valueEnd) {
42
- return null;
43
- }
44
- return scopeKey.slice(valueStart, valueEnd);
45
- }
46
32
  /**
47
33
  * Extract the placeholder name from a pattern.
48
34
  */
@@ -50,26 +36,6 @@ function getPlaceholderName(pattern) {
50
36
  const parsed = extractPlaceholder(pattern);
51
37
  return parsed?.placeholder ?? null;
52
38
  }
53
- // ── Pattern operations (public) ──────────────────────────────────────
54
- /**
55
- * Build a scope string from a pattern and value.
56
- *
57
- * @example
58
- * buildScopeKey('user:{user_id}', '123') // 'user:123'
59
- */
60
- export function buildScopeKey(pattern, value) {
61
- const parsed = extractPlaceholder(pattern);
62
- if (!parsed) {
63
- return pattern;
64
- }
65
- return `${parsed.prefix}${value}${parsed.suffix}`;
66
- }
67
- /**
68
- * Check if a scope string matches a pattern.
69
- */
70
- export function scopeKeyMatchesPattern(pattern, scopeKey) {
71
- return matchScopePattern(pattern, scopeKey) !== null;
72
- }
73
39
  /**
74
40
  * Normalize scope definitions to a pattern-to-column map.
75
41
  *
@@ -93,18 +59,6 @@ export function normalizeScopes(scopes) {
93
59
  }
94
60
  return result;
95
61
  }
96
- /**
97
- * Find the matching pattern and extract value from a scope string.
98
- */
99
- export function findMatchingPattern(patterns, scopeKey) {
100
- for (const [pattern, column] of Object.entries(patterns)) {
101
- const value = matchScopePattern(pattern, scopeKey);
102
- if (value !== null) {
103
- return { pattern, column, value };
104
- }
105
- }
106
- return null;
107
- }
108
62
  // ── Value operations (public) ────────────────────────────────────────
109
63
  /**
110
64
  * Extract variable names from a scope pattern.
@@ -119,103 +73,4 @@ export function extractScopeVars(pattern) {
119
73
  return [];
120
74
  return matches.map((m) => m.slice(1, -1));
121
75
  }
122
- /**
123
- * Build scope values from a row based on a scope pattern.
124
- * Uses the pattern's variable names to extract values from the row.
125
- *
126
- * @example
127
- * buildScopeValuesFromRow('project:{project_id}', { id: '1', project_id: 'P1' })
128
- * // { project_id: 'P1' }
129
- */
130
- export function buildScopeValuesFromRow(pattern, row) {
131
- const vars = extractScopeVars(pattern);
132
- const result = {};
133
- for (const varName of vars) {
134
- const value = row[varName];
135
- if (value === null || value === undefined) {
136
- result[varName] = '';
137
- }
138
- else {
139
- result[varName] = String(value);
140
- }
141
- }
142
- return result;
143
- }
144
- /**
145
- * Merge multiple scope value objects into one.
146
- * Later values override earlier ones.
147
- */
148
- export function mergeScopeValues(...sources) {
149
- const result = {};
150
- for (const source of sources) {
151
- for (const [key, value] of Object.entries(source)) {
152
- result[key] = value;
153
- }
154
- }
155
- return result;
156
- }
157
- /**
158
- * Check if two stored scopes are equal.
159
- */
160
- export function scopesEqual(a, b) {
161
- const keysA = Object.keys(a).sort();
162
- const keysB = Object.keys(b).sort();
163
- if (keysA.length !== keysB.length)
164
- return false;
165
- for (let i = 0; i < keysA.length; i++) {
166
- if (keysA[i] !== keysB[i])
167
- return false;
168
- if (a[keysA[i]] !== b[keysB[i]])
169
- return false;
170
- }
171
- return true;
172
- }
173
- /**
174
- * Check if stored scopes match a subscription's scope values.
175
- * Handles array values in subscription (OR semantics).
176
- * Missing keys in subscription are treated as wildcards (match any).
177
- *
178
- * @example
179
- * scopesMatchSubscription({ project_id: 'P1' }, { project_id: 'P1' }) // true
180
- * scopesMatchSubscription({ project_id: 'P1' }, { project_id: ['P1', 'P2'] }) // true
181
- * scopesMatchSubscription({ project_id: 'P1' }, { project_id: 'P2' }) // false
182
- */
183
- export function scopesMatchSubscription(stored, subscription) {
184
- for (const [key, subValue] of Object.entries(subscription)) {
185
- const storedValue = stored[key];
186
- if (storedValue === undefined)
187
- return false;
188
- if (Array.isArray(subValue)) {
189
- if (!subValue.includes(storedValue))
190
- return false;
191
- }
192
- else {
193
- if (storedValue !== subValue)
194
- return false;
195
- }
196
- }
197
- return true;
198
- }
199
- /**
200
- * Normalize scope values to always use arrays (for consistent handling).
201
- */
202
- export function normalizeScopeValues(values) {
203
- const result = {};
204
- for (const [key, value] of Object.entries(values)) {
205
- result[key] = Array.isArray(value) ? value : [value];
206
- }
207
- return result;
208
- }
209
- /**
210
- * Get all scope variable names from a set of patterns.
211
- */
212
- export function getAllScopeVars(patterns) {
213
- const vars = new Set();
214
- for (const pattern of patterns) {
215
- for (const v of extractScopeVars(pattern)) {
216
- vars.add(v);
217
- }
218
- }
219
- return Array.from(vars);
220
- }
221
76
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scopes/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scopes/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2GH;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAEjC,MAAmB,EAAe;IAClC,OAAO,MAAM,CAAC;AAAA,CACf;AAED,0IAAwE;AAExE;;;GAGG;AACH,SAAS,kBAAkB,CAAC,OAAe,EAIlC;IACP,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,CAAC,CAAE;QACjB,WAAW,EAAE,KAAK,CAAC,CAAC,CAAE;QACtB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAE;KAClB,CAAC;AAAA,CACH;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAe,EAAiB;IAC1D,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,MAAM,EAAE,WAAW,IAAI,IAAI,CAAC;AAAA,CACpC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAkC,EACJ;IAC9B,MAAM,MAAM,GAAiC,EAAE,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CACb,kBAAkB,KAAK,iDAAiD,CACzE,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAAA,CACf;AAED,4JAAwE;AAExE;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAqB,EAAY;IAChE,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,CAC3C"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @syncular/core - Snapshot chunk encoding helpers
3
+ */
4
+ export declare const SYNC_SNAPSHOT_CHUNK_ENCODING = "json-row-frame-v1";
5
+ export type SyncSnapshotChunkEncoding = typeof SYNC_SNAPSHOT_CHUNK_ENCODING;
6
+ export declare const SYNC_SNAPSHOT_CHUNK_COMPRESSION = "gzip";
7
+ export type SyncSnapshotChunkCompression = typeof SYNC_SNAPSHOT_CHUNK_COMPRESSION;
8
+ /**
9
+ * Encode rows as framed JSON bytes without the format header.
10
+ */
11
+ export declare function encodeSnapshotRowFrames(rows: readonly unknown[]): Uint8Array;
12
+ /**
13
+ * Encode rows as framed JSON bytes with a format header.
14
+ *
15
+ * Format:
16
+ * - 4-byte magic header ("SRF1")
17
+ * - repeated frames of:
18
+ * - 4-byte big-endian payload byte length
19
+ * - UTF-8 JSON payload
20
+ */
21
+ export declare function encodeSnapshotRows(rows: readonly unknown[]): Uint8Array;
22
+ /**
23
+ * Decode framed JSON bytes into rows.
24
+ */
25
+ export declare function decodeSnapshotRows(bytes: Uint8Array): unknown[];
26
+ //# sourceMappingURL=snapshot-chunks.d.ts.map