@syncular/core 0.0.6-159 → 0.0.6-165

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.
package/dist/blobs.d.ts CHANGED
@@ -46,6 +46,8 @@ export interface BlobTransport {
46
46
  export interface BlobSignUploadOptions {
47
47
  /** SHA-256 hash (for naming and checksum validation) */
48
48
  hash: string;
49
+ /** Optional tenant/partition namespace for storage lookups */
50
+ partitionId?: string;
49
51
  /** Content size in bytes */
50
52
  size: number;
51
53
  /** MIME type */
@@ -70,9 +72,14 @@ export interface BlobSignedUpload {
70
72
  export interface BlobSignDownloadOptions {
71
73
  /** SHA-256 hash */
72
74
  hash: string;
75
+ /** Optional tenant/partition namespace for storage lookups */
76
+ partitionId?: string;
73
77
  /** URL expiration in seconds */
74
78
  expiresIn: number;
75
79
  }
80
+ export interface BlobStoragePartitionOptions {
81
+ partitionId?: string;
82
+ }
76
83
  /**
77
84
  * Adapter for blob storage backends (S3, R2, custom).
78
85
  * Implementations handle actual storage; the sync server orchestrates.
@@ -92,16 +99,16 @@ export interface BlobStorageAdapter {
92
99
  /**
93
100
  * Check if a blob exists in storage.
94
101
  */
95
- exists(hash: string): Promise<boolean>;
102
+ exists(hash: string, options?: BlobStoragePartitionOptions): Promise<boolean>;
96
103
  /**
97
104
  * Delete a blob (for garbage collection).
98
105
  */
99
- delete(hash: string): Promise<void>;
106
+ delete(hash: string, options?: BlobStoragePartitionOptions): Promise<void>;
100
107
  /**
101
108
  * Get blob metadata from storage (optional).
102
109
  * Used to verify uploads completed successfully.
103
110
  */
104
- getMetadata?(hash: string): Promise<{
111
+ getMetadata?(hash: string, options?: BlobStoragePartitionOptions): Promise<{
105
112
  size: number;
106
113
  mimeType?: string;
107
114
  } | null>;
@@ -109,20 +116,20 @@ export interface BlobStorageAdapter {
109
116
  * Store blob data directly (for adapters that support direct storage).
110
117
  * Used for snapshot chunks and other internal data.
111
118
  */
112
- put?(hash: string, data: Uint8Array, metadata?: Record<string, unknown>): Promise<void>;
119
+ put?(hash: string, data: Uint8Array, metadata?: Record<string, unknown>, options?: BlobStoragePartitionOptions): Promise<void>;
113
120
  /**
114
121
  * Store blob data directly from a stream.
115
122
  * Preferred for large payloads to avoid full buffering in memory.
116
123
  */
117
- putStream?(hash: string, stream: ReadableStream<Uint8Array>, metadata?: Record<string, unknown>): Promise<void>;
124
+ putStream?(hash: string, stream: ReadableStream<Uint8Array>, metadata?: Record<string, unknown>, options?: BlobStoragePartitionOptions): Promise<void>;
118
125
  /**
119
126
  * Get blob data directly (for adapters that support direct retrieval).
120
127
  */
121
- get?(hash: string): Promise<Uint8Array | null>;
128
+ get?(hash: string, options?: BlobStoragePartitionOptions): Promise<Uint8Array | null>;
122
129
  /**
123
130
  * Get blob data directly as a stream (for adapters that support stream retrieval).
124
131
  */
125
- getStream?(hash: string): Promise<ReadableStream<Uint8Array> | null>;
132
+ getStream?(hash: string, options?: BlobStoragePartitionOptions): Promise<ReadableStream<Uint8Array> | null>;
126
133
  }
127
134
  /**
128
135
  * Create a BlobRef from upload metadata.
@@ -1 +1 @@
1
- {"version":3,"file":"blobs.d.ts","sourceRoot":"","sources":["../src/blobs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAM/C;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC;QACV,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;QAC9B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC,CAAC,CAAC;IAEH;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEvE;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACpC,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAMD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB;IAClB,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEtE;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhE;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC;;;OAGG;IACH,WAAW,CAAC,CACV,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAEvD;;;OAGG;IACH,GAAG,CAAC,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;OAGG;IACH,SAAS,CAAC,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;OAEG;IACH,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAE/C;;OAEG;IACH,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;CACtE;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAaV;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD"}
1
+ {"version":3,"file":"blobs.d.ts","sourceRoot":"","sources":["../src/blobs.ts"],"names":[],"mappings":"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"}
package/dist/blobs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"blobs.js","sourceRoot":"","sources":["../src/blobs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuJH,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAM7B,EAAW;IACV,MAAM,GAAG,GAAY;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC;IACF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AAAA,CACZ;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAiB;IACzD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAAA,CAC1B;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAU;IACtD,OAAO,UAAU,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;AAAA,CAC1C"}
1
+ {"version":3,"file":"blobs.js","sourceRoot":"","sources":["../src/blobs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwKH,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAM7B,EAAW;IACV,MAAM,GAAG,GAAY;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC;IACF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AAAA,CACZ;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAiB;IACzD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAAA,CAC1B;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAU;IACtD,OAAO,UAAU,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;AAAA,CAC1C"}
@@ -33,6 +33,9 @@ export declare function toTableColumnCodecs(table: string, codecSource: ColumnCo
33
33
  dialect?: ColumnCodecDialect;
34
34
  sqlTypes?: Record<string, string | undefined>;
35
35
  }): TableColumnCodecs;
36
+ export declare function createTableColumnCodecsResolver(codecSource: ColumnCodecSource | undefined, options?: {
37
+ dialect?: ColumnCodecDialect;
38
+ }): (table: string, row: Record<string, unknown>) => TableColumnCodecs;
36
39
  export declare function applyCodecToDbValue(codec: AnyColumnCodec, value: unknown, dialect?: ColumnCodecDialect): unknown;
37
40
  export declare function applyCodecFromDbValue(codec: AnyColumnCodec, value: unknown, dialect?: ColumnCodecDialect): unknown;
38
41
  export declare function applyCodecsToDbRow(row: Record<string, unknown>, tableCodecs: TableColumnCodecs, dialect?: ColumnCodecDialect): Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"column-codecs.d.ts","sourceRoot":"","sources":["../src/column-codecs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column-codecs.d.ts","sourceRoot":"","sources":["../src/column-codecs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,eAAe,GACvB,MAAM,GACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAErD,MAAM,WAAW,WAAW,CAAC,GAAG,EAAE,EAAE;IAClC,EAAE,EAAE,eAAe,CAAC;IACpB,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC;IACrB,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAChB,MAAM,CACJ,kBAAkB,EAClB;QACE,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC;QACtB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;KACzB,CACF,CACF,CAAC;CACH;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE/D,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,iBAAiB,KACtB,cAAc,GAAG,SAAS,CAAC;AAoBhC,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,iBAAiB,GAAG,SAAS,EAC1C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EACzB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C,GACL,iBAAiB,CAgBnB;AAED,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,iBAAiB,GAAG,SAAS,EAC1C,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,kBAAkB,CAAA;CAAO,GAC7C,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,iBAAiB,CAwBpE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,kBAA6B,GACrC,OAAO,CAIT;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,kBAA6B,GACrC,OAAO,CAIT;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,WAAW,EAAE,iBAAiB,EAC9B,OAAO,GAAE,kBAA6B,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,WAAW,EAAE,iBAAiB,EAC9B,OAAO,GAAE,kBAA6B,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAgBD,wBAAgB,aAAa,IAAI,WAAW,CAC1C,OAAO,EACP,MAAM,GAAG,OAAO,GAAG,MAAM,CAC1B,CAYA;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,EAAE,CAAC,EAAE,eAAe,CAAC;IACrB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IACjC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC;CAC9B;AAED,wBAAgB,UAAU,CAAC,CAAC,GAAG,OAAO,EACpC,OAAO,GAAE,sBAAsB,CAAC,CAAC,CAAM,GACtC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAoB5B;AAED,wBAAgB,aAAa,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,CAOhE;AAED,wBAAgB,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAO/D;AAED,eAAO,MAAM,MAAM;;;;;CAKlB,CAAC"}
@@ -25,6 +25,30 @@ export function toTableColumnCodecs(table, codecSource, columns, options = {}) {
25
25
  }
26
26
  return out;
27
27
  }
28
+ export function createTableColumnCodecsResolver(codecSource, options = {}) {
29
+ const tableCaches = new Map();
30
+ return (table, row) => {
31
+ if (!codecSource)
32
+ return {};
33
+ const columns = Object.keys(row);
34
+ if (columns.length === 0)
35
+ return {};
36
+ const cacheKey = columns.slice().sort().join('\u0000');
37
+ let perTableCache = tableCaches.get(table);
38
+ if (!perTableCache) {
39
+ perTableCache = new Map();
40
+ tableCaches.set(table, perTableCache);
41
+ }
42
+ const cached = perTableCache.get(cacheKey);
43
+ if (cached)
44
+ return cached;
45
+ const resolved = toTableColumnCodecs(table, codecSource, columns, {
46
+ dialect: options.dialect,
47
+ });
48
+ perTableCache.set(cacheKey, resolved);
49
+ return resolved;
50
+ };
51
+ }
28
52
  export function applyCodecToDbValue(codec, value, dialect = 'sqlite') {
29
53
  if (value === null || value === undefined)
30
54
  return value;
@@ -1 +1 @@
1
- {"version":3,"file":"column-codecs.js","sourceRoot":"","sources":["../src/column-codecs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column-codecs.js","sourceRoot":"","sources":["../src/column-codecs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"kysely-column-codecs.d.ts","sourceRoot":"","sources":["../src/kysely-column-codecs.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,YAAY,EAGjB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE9B,KAAK,WAAW,EAEhB,KAAK,iBAAiB,EAItB,KAAK,UAAU,EAIhB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAGvB,MAAM,iBAAiB,CAAC;AAEzB,UAAU,wBAAwB;IAChC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AA8bD,qBAAa,kBAAmB,YAAW,YAAY;;IAOrD,YAAY,OAAO,EAAE,wBAAwB,EAI5C;IAED,cAAc,CAAC,EACb,IAAI,EACJ,OAAO,EACR,EAAE,wBAAwB,GAAG,iBAAiB,CAO9C;IAEK,eAAe,CAAC,EACpB,MAAM,EACN,OAAO,EACR,EAAE,yBAAyB,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAU9D;CA8DF;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,wBAAwB,GAChC,kBAAkB,CAEpB"}
1
+ {"version":3,"file":"kysely-column-codecs.d.ts","sourceRoot":"","sources":["../src/kysely-column-codecs.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,YAAY,EAGjB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE9B,KAAK,WAAW,EAEhB,KAAK,iBAAiB,EAItB,KAAK,UAAU,EAIhB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAGvB,MAAM,iBAAiB,CAAC;AAEzB,UAAU,wBAAwB;IAChC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAkbD,qBAAa,kBAAmB,YAAW,YAAY;;IASrD,YAAY,OAAO,EAAE,wBAAwB,EAM5C;IAED,cAAc,CAAC,EACb,IAAI,EACJ,OAAO,EACR,EAAE,wBAAwB,GAAG,iBAAiB,CAO9C;IAEK,eAAe,CAAC,EACpB,MAAM,EACN,OAAO,EACR,EAAE,yBAAyB,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAU9D;CAiDF;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,wBAAwB,GAChC,kBAAkB,CAEpB"}
@@ -1,5 +1,5 @@
1
1
  import { OperationNodeTransformer, } from 'kysely';
2
- import { applyCodecFromDbValue, applyCodecToDbValue, toTableColumnCodecs, } from './column-codecs.js';
2
+ import { applyCodecFromDbValue, applyCodecToDbValue, createTableColumnCodecsResolver, } from './column-codecs.js';
3
3
  function isIdentifierNode(node) {
4
4
  return node?.kind === 'IdentifierNode';
5
5
  }
@@ -264,30 +264,16 @@ function buildResultPlan(node) {
264
264
  return planForDelete(node);
265
265
  return null;
266
266
  }
267
- function cacheKey(table, columns) {
268
- const sorted = [...columns].sort().join('\u0000');
269
- return `${table}\u0001${sorted}`;
270
- }
271
267
  class ColumnCodecsTransformer extends OperationNodeTransformer {
272
- #codecs;
273
268
  #dialect;
274
- #tableCodecsCache = new Map();
269
+ #resolveTableCodecs;
275
270
  #currentUpdateTable = null;
276
271
  constructor(options) {
277
272
  super();
278
- this.#codecs = options.codecs;
279
273
  this.#dialect = options.dialect ?? 'sqlite';
280
- }
281
- resolveTableCodecs(table, columns) {
282
- const key = cacheKey(table, columns);
283
- const cached = this.#tableCodecsCache.get(key);
284
- if (cached)
285
- return cached;
286
- const resolved = toTableColumnCodecs(table, this.#codecs, columns, {
274
+ this.#resolveTableCodecs = createTableColumnCodecsResolver(options.codecs, {
287
275
  dialect: this.#dialect,
288
276
  });
289
- this.#tableCodecsCache.set(key, resolved);
290
- return resolved;
291
277
  }
292
278
  transformInsertQuery(node) {
293
279
  const transformed = super.transformInsertQuery(node);
@@ -305,7 +291,7 @@ class ColumnCodecsTransformer extends OperationNodeTransformer {
305
291
  .filter((columnName) => Boolean(columnName));
306
292
  if (columns.length === 0)
307
293
  return transformed;
308
- const tableCodecs = this.resolveTableCodecs(tableName, columns);
294
+ const tableCodecs = this.#resolveTableCodecs(tableName, Object.fromEntries(columns.map((column) => [column, null])));
309
295
  let didChange = false;
310
296
  const nextValueRows = transformed.values.values.map((valueNode) => {
311
297
  if (!isPrimitiveValueListNode(valueNode))
@@ -360,9 +346,9 @@ class ColumnCodecsTransformer extends OperationNodeTransformer {
360
346
  const columnName = getColumnName(transformed.column);
361
347
  if (!columnName)
362
348
  return transformed;
363
- const tableCodecs = this.resolveTableCodecs(this.#currentUpdateTable, [
364
- columnName,
365
- ]);
349
+ const tableCodecs = this.#resolveTableCodecs(this.#currentUpdateTable, {
350
+ [columnName]: null,
351
+ });
366
352
  const codec = tableCodecs[columnName];
367
353
  if (!codec)
368
354
  return transformed;
@@ -384,11 +370,12 @@ export class ColumnCodecsPlugin {
384
370
  #dialect;
385
371
  #transformer;
386
372
  #resultPlans = new WeakMap();
387
- #codecs;
388
- #resultCodecCache = new Map();
373
+ #resolveTableCodecs;
389
374
  constructor(options) {
390
375
  this.#dialect = options.dialect ?? 'sqlite';
391
- this.#codecs = options.codecs;
376
+ this.#resolveTableCodecs = createTableColumnCodecsResolver(options.codecs, {
377
+ dialect: this.#dialect,
378
+ });
392
379
  this.#transformer = new ColumnCodecsTransformer(options);
393
380
  }
394
381
  transformQuery({ node, queryId, }) {
@@ -411,26 +398,14 @@ export class ColumnCodecsPlugin {
411
398
  rows,
412
399
  };
413
400
  }
414
- #resolveTableCodecs(table, columns) {
415
- const key = cacheKey(table, columns);
416
- const cached = this.#resultCodecCache.get(key);
417
- if (cached)
418
- return cached;
419
- const resolved = toTableColumnCodecs(table, this.#codecs, columns, {
420
- dialect: this.#dialect,
421
- });
422
- this.#resultCodecCache.set(key, resolved);
423
- return resolved;
424
- }
425
401
  #transformRow(row, plan) {
426
402
  const source = row;
427
403
  const target = { ...source };
428
- const rowColumns = Object.keys(source);
429
404
  if (plan.selectAllTables.length > 0) {
430
405
  const codecCandidates = new Map();
431
406
  const ambiguousColumns = new Set();
432
407
  for (const table of plan.selectAllTables) {
433
- const tableCodecs = this.#resolveTableCodecs(table, rowColumns);
408
+ const tableCodecs = this.#resolveTableCodecs(table, source);
434
409
  for (const [column, codec] of Object.entries(tableCodecs)) {
435
410
  if (!(column in source))
436
411
  continue;
@@ -451,7 +426,9 @@ export class ColumnCodecsPlugin {
451
426
  for (const ref of plan.explicit) {
452
427
  if (!(ref.outputKey in source))
453
428
  continue;
454
- const tableCodecs = this.#resolveTableCodecs(ref.table, [ref.column]);
429
+ const tableCodecs = this.#resolveTableCodecs(ref.table, {
430
+ [ref.column]: source[ref.outputKey],
431
+ });
455
432
  const codec = tableCodecs[ref.column];
456
433
  if (!codec)
457
434
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"kysely-column-codecs.js","sourceRoot":"","sources":["../src/kysely-column-codecs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kysely-column-codecs.js","sourceRoot":"","sources":["../src/kysely-column-codecs.ts"],"names":[],"mappings":"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"}
@@ -97,6 +97,10 @@ export declare function defineScopePatterns<const Definitions extends readonly S
97
97
  * // → { 'user:{user_id}': 'user_id' }
98
98
  */
99
99
  export declare function normalizeScopes(scopes: readonly ScopeDefinition[]): Record<ScopePattern, string>;
100
+ export declare function createSingleVariableScopeMetadata(scopes: readonly ScopeDefinition[]): {
101
+ scopePatterns: ScopePattern[];
102
+ scopeColumnsByVariable: Record<string, string>;
103
+ };
100
104
  /**
101
105
  * Extract variable names from a scope pattern.
102
106
  *
@@ -105,4 +109,5 @@ export declare function normalizeScopes(scopes: readonly ScopeDefinition[]): Rec
105
109
  * extractScopeVars('event_date:{year}:{month}') // ['year', 'month']
106
110
  */
107
111
  export declare function extractScopeVars(pattern: ScopePattern): string[];
112
+ export declare function collectScopeVars(scopePatterns: readonly ScopePattern[]): Set<string>;
108
113
  //# 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;;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"}
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;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,SAAS,eAAe,EAAE,GACjC;IACD,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD,CAuBA;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,CAIhE;AAED,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,SAAS,YAAY,EAAE,GACrC,GAAG,CAAC,MAAM,CAAC,CAQb"}
@@ -59,6 +59,24 @@ export function normalizeScopes(scopes) {
59
59
  }
60
60
  return result;
61
61
  }
62
+ export function createSingleVariableScopeMetadata(scopes) {
63
+ const scopeColumnMap = normalizeScopes(scopes);
64
+ const scopePatterns = Object.keys(scopeColumnMap);
65
+ const scopeColumnsByVariable = {};
66
+ for (const [pattern, columnName] of Object.entries(scopeColumnMap)) {
67
+ const vars = extractScopeVars(pattern);
68
+ if (vars.length !== 1) {
69
+ throw new Error(`Scope pattern "${pattern}" must contain exactly one placeholder (got ${vars.length}).`);
70
+ }
71
+ const variableName = vars[0];
72
+ const existingColumn = scopeColumnsByVariable[variableName];
73
+ if (existingColumn && existingColumn !== columnName) {
74
+ throw new Error(`Scope variable "${variableName}" is mapped to multiple columns: "${existingColumn}" and "${columnName}".`);
75
+ }
76
+ scopeColumnsByVariable[variableName] = columnName;
77
+ }
78
+ return { scopePatterns, scopeColumnsByVariable };
79
+ }
62
80
  // ── Value operations (public) ────────────────────────────────────────
63
81
  /**
64
82
  * Extract variable names from a scope pattern.
@@ -73,4 +91,13 @@ export function extractScopeVars(pattern) {
73
91
  return [];
74
92
  return matches.map((m) => m.slice(1, -1));
75
93
  }
94
+ export function collectScopeVars(scopePatterns) {
95
+ const keys = new Set();
96
+ for (const pattern of scopePatterns) {
97
+ for (const key of extractScopeVars(pattern)) {
98
+ keys.add(key);
99
+ }
100
+ }
101
+ return keys;
102
+ }
76
103
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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,wEAAwE;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,wEAAwE;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"}
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,wEAAwE;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,MAAM,UAAU,iCAAiC,CAC/C,MAAkC,EAIlC;IACA,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAmB,CAAC;IACpE,MAAM,sBAAsB,GAA2B,EAAE,CAAC;IAE1D,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,kBAAkB,OAAO,+CAA+C,IAAI,CAAC,MAAM,IAAI,CACxF,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QAC9B,MAAM,cAAc,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,cAAc,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,mBAAmB,YAAY,qCAAqC,cAAc,UAAU,UAAU,IAAI,CAC3G,CAAC;QACJ,CAAC;QACD,sBAAsB,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,CAAC;AAAA,CAClD;AAED,wEAAwE;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;AAED,MAAM,UAAU,gBAAgB,CAC9B,aAAsC,EACzB;IACb,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACb"}
package/dist/types.d.ts CHANGED
@@ -141,6 +141,7 @@ export interface SyncTransport {
141
141
  */
142
142
  fetchSnapshotChunk(request: {
143
143
  chunkId: string;
144
+ scopeValues?: Record<string, string | string[]>;
144
145
  }, options?: SyncTransportOptions): Promise<Uint8Array>;
145
146
  /**
146
147
  * Optional streaming snapshot chunk download.
@@ -150,6 +151,7 @@ export interface SyncTransport {
150
151
  */
151
152
  fetchSnapshotChunkStream?(request: {
152
153
  chunkId: string;
154
+ scopeValues?: Record<string, string | string[]>;
153
155
  }, options?: SyncTransportOptions): Promise<ReadableStream<Uint8Array>>;
154
156
  /**
155
157
  * Optional blob operations.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkMH;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGzB,MAAM;IACN,IAAI;IAHtB,YACE,OAAe,EACC,MAAe,EACf,IAAa,EAC7B;QACA,KAAK,CAAC,OAAO,CAAC,CAAC;sBAHC,MAAM;oBACN,IAAI;QAGpB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IAAA,CAClC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwMH;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGzB,MAAM;IACN,IAAI;IAHtB,YACE,OAAe,EACC,MAAe,EACf,IAAa,EAC7B;QACA,KAAK,CAAC,OAAO,CAAC,CAAC;sBAHC,MAAM;oBACN,IAAI;QAGpB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IAAA,CAClC;CACF"}
@@ -3,4 +3,6 @@ export * from './crypto';
3
3
  export * from './id';
4
4
  export * from './object';
5
5
  export * from './realtime-connection-registry';
6
+ export * from './table-registry';
7
+ export * from './url';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC"}
@@ -3,4 +3,6 @@ export * from './crypto.js';
3
3
  export * from './id.js';
4
4
  export * from './object.js';
5
5
  export * from './realtime-connection-registry.js';
6
+ export * from './table-registry.js';
7
+ export * from './url.js';
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC"}
@@ -0,0 +1,10 @@
1
+ type TableEntry = {
2
+ table: string;
3
+ dependsOn?: readonly string[];
4
+ };
5
+ export declare function registerTableOrThrow(registeredTables: Set<string>, table: string, duplicateTableError: (table: string) => string): void;
6
+ export declare function createTableLookup<T extends TableEntry>(handlers: readonly T[], duplicateTableError: (table: string) => string): ReadonlyMap<string, T>;
7
+ export declare function assertKnownTableDependencies<T extends TableEntry>(handlers: readonly T[], byTable: ReadonlyMap<string, T>, unknownDependencyError: (table: string, dependency: string) => string): void;
8
+ export declare function topologicallySortTablesByDependencies<T extends TableEntry>(byTable: ReadonlyMap<string, T>, targetTable?: string): T[];
9
+ export {};
10
+ //# sourceMappingURL=table-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-registry.d.ts","sourceRoot":"","sources":["../../src/utils/table-registry.ts"],"names":[],"mappings":"AAAA,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B,CAAC;AACF,wBAAgB,oBAAoB,CAClC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC7B,KAAK,EAAE,MAAM,EACb,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAC7C,IAAI,CAGN;AACD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EACpD,QAAQ,EAAE,SAAS,CAAC,EAAE,EACtB,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAC7C,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CASxB;AACD,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,UAAU,EAC/D,QAAQ,EAAE,SAAS,CAAC,EAAE,EACtB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAC/B,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,GACpE,IAAI,CAQN;AACD,wBAAgB,qCAAqC,CAAC,CAAC,SAAS,UAAU,EACxE,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAC/B,WAAW,CAAC,EAAE,MAAM,GACnB,CAAC,EAAE,CAyBL"}
@@ -0,0 +1,54 @@
1
+ export function registerTableOrThrow(registeredTables, table, duplicateTableError) {
2
+ if (registeredTables.has(table))
3
+ throw new Error(duplicateTableError(table));
4
+ registeredTables.add(table);
5
+ }
6
+ export function createTableLookup(handlers, duplicateTableError) {
7
+ const byTable = new Map();
8
+ for (const handler of handlers) {
9
+ if (byTable.has(handler.table)) {
10
+ throw new Error(duplicateTableError(handler.table));
11
+ }
12
+ byTable.set(handler.table, handler);
13
+ }
14
+ return byTable;
15
+ }
16
+ export function assertKnownTableDependencies(handlers, byTable, unknownDependencyError) {
17
+ for (const handler of handlers) {
18
+ for (const dependency of handler.dependsOn ?? []) {
19
+ if (!byTable.has(dependency)) {
20
+ throw new Error(unknownDependencyError(handler.table, dependency));
21
+ }
22
+ }
23
+ }
24
+ }
25
+ export function topologicallySortTablesByDependencies(byTable, targetTable) {
26
+ const visited = new Set();
27
+ const visiting = new Set();
28
+ const sorted = [];
29
+ const visit = (table) => {
30
+ if (visited.has(table))
31
+ return;
32
+ if (visiting.has(table)) {
33
+ throw new Error(`Circular dependency detected involving table "${table}"`);
34
+ }
35
+ const handler = byTable.get(table);
36
+ if (!handler)
37
+ throw new Error(`Unknown table: ${table}`);
38
+ visiting.add(table);
39
+ for (const dependency of handler.dependsOn ?? [])
40
+ visit(dependency);
41
+ visiting.delete(table);
42
+ visited.add(table);
43
+ sorted.push(handler);
44
+ };
45
+ if (targetTable) {
46
+ visit(targetTable);
47
+ }
48
+ else {
49
+ for (const table of byTable.keys())
50
+ visit(table);
51
+ }
52
+ return sorted;
53
+ }
54
+ //# sourceMappingURL=table-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-registry.js","sourceRoot":"","sources":["../../src/utils/table-registry.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,oBAAoB,CAClC,gBAA6B,EAC7B,KAAa,EACb,mBAA8C,EACxC;IACN,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAAA,CAC7B;AACD,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,mBAA8C,EACtB;IACxB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAa,CAAC;IACrC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,OAAO,CAAC;AAAA,CAChB;AACD,MAAM,UAAU,4BAA4B,CAC1C,QAAsB,EACtB,OAA+B,EAC/B,sBAAqE,EAC/D;IACN,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;AAAA,CACF;AACD,MAAM,UAAU,qCAAqC,CACnD,OAA+B,EAC/B,WAAoB,EACf;IACL,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO;QAC/B,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,iDAAiD,KAAK,GAAG,CAC1D,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;QACzD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE;YAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACpE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAAA,CACtB,CAAC;IACF,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,WAAW,CAAC,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE;YAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAAA,CACf"}
@@ -0,0 +1,3 @@
1
+ export declare function normalizeSyncBaseUrl(url: string): string;
2
+ export declare function resolveUrlFromBase(baseUrl: string, path: string, origin?: string): string;
3
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/utils/url.ts"],"names":[],"mappings":"AAKA,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKxD;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAYR"}
@@ -0,0 +1,20 @@
1
+ const ABSOLUTE_URL_SCHEME_REGEX = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;
2
+ const trimTrailingSlashes = (value) => value.replace(/\/+$/, '');
3
+ export function normalizeSyncBaseUrl(url) {
4
+ const trimmed = trimTrailingSlashes(url.trim());
5
+ if (!trimmed.endsWith('/sync'))
6
+ return trimmed;
7
+ const baseUrl = trimmed.slice(0, -'/sync'.length);
8
+ return baseUrl.length > 0 ? baseUrl : '/';
9
+ }
10
+ export function resolveUrlFromBase(baseUrl, path, origin) {
11
+ const normalizedPath = path.replace(/^\/+/, '');
12
+ const normalizedBaseUrl = trimTrailingSlashes(baseUrl);
13
+ if (ABSOLUTE_URL_SCHEME_REGEX.test(baseUrl)) {
14
+ return new URL(normalizedPath, baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`).toString();
15
+ }
16
+ if (origin)
17
+ return new URL(`${normalizedBaseUrl}/${normalizedPath}`, origin).toString();
18
+ return `${normalizedBaseUrl}/${normalizedPath}`;
19
+ }
20
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/utils/url.ts"],"names":[],"mappings":"AAAA,MAAM,yBAAyB,GAAG,2BAA2B,CAAC;AAE9D,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAU,EAAE,CACpD,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAE5B,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAU;IACxD,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAAA,CAC3C;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,IAAY,EACZ,MAAe,EACP;IACR,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,GAAG,CACZ,cAAc,EACd,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAChD,CAAC,QAAQ,EAAE,CAAC;IACf,CAAC;IACD,IAAI,MAAM;QACR,OAAO,IAAI,GAAG,CAAC,GAAG,iBAAiB,IAAI,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9E,OAAO,GAAG,iBAAiB,IAAI,cAAc,EAAE,CAAC;AAAA,CACjD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syncular/core",
3
- "version": "0.0.6-159",
3
+ "version": "0.0.6-165",
4
4
  "description": "Core protocol types and shared utilities for the Syncular sync framework",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Benjamin Kniffler",
package/src/blobs.ts CHANGED
@@ -56,6 +56,8 @@ export interface BlobTransport {
56
56
  export interface BlobSignUploadOptions {
57
57
  /** SHA-256 hash (for naming and checksum validation) */
58
58
  hash: string;
59
+ /** Optional tenant/partition namespace for storage lookups */
60
+ partitionId?: string;
59
61
  /** Content size in bytes */
60
62
  size: number;
61
63
  /** MIME type */
@@ -82,10 +84,16 @@ export interface BlobSignedUpload {
82
84
  export interface BlobSignDownloadOptions {
83
85
  /** SHA-256 hash */
84
86
  hash: string;
87
+ /** Optional tenant/partition namespace for storage lookups */
88
+ partitionId?: string;
85
89
  /** URL expiration in seconds */
86
90
  expiresIn: number;
87
91
  }
88
92
 
93
+ export interface BlobStoragePartitionOptions {
94
+ partitionId?: string;
95
+ }
96
+
89
97
  /**
90
98
  * Adapter for blob storage backends (S3, R2, custom).
91
99
  * Implementations handle actual storage; the sync server orchestrates.
@@ -108,19 +116,20 @@ export interface BlobStorageAdapter {
108
116
  /**
109
117
  * Check if a blob exists in storage.
110
118
  */
111
- exists(hash: string): Promise<boolean>;
119
+ exists(hash: string, options?: BlobStoragePartitionOptions): Promise<boolean>;
112
120
 
113
121
  /**
114
122
  * Delete a blob (for garbage collection).
115
123
  */
116
- delete(hash: string): Promise<void>;
124
+ delete(hash: string, options?: BlobStoragePartitionOptions): Promise<void>;
117
125
 
118
126
  /**
119
127
  * Get blob metadata from storage (optional).
120
128
  * Used to verify uploads completed successfully.
121
129
  */
122
130
  getMetadata?(
123
- hash: string
131
+ hash: string,
132
+ options?: BlobStoragePartitionOptions
124
133
  ): Promise<{ size: number; mimeType?: string } | null>;
125
134
 
126
135
  /**
@@ -130,7 +139,8 @@ export interface BlobStorageAdapter {
130
139
  put?(
131
140
  hash: string,
132
141
  data: Uint8Array,
133
- metadata?: Record<string, unknown>
142
+ metadata?: Record<string, unknown>,
143
+ options?: BlobStoragePartitionOptions
134
144
  ): Promise<void>;
135
145
 
136
146
  /**
@@ -140,18 +150,25 @@ export interface BlobStorageAdapter {
140
150
  putStream?(
141
151
  hash: string,
142
152
  stream: ReadableStream<Uint8Array>,
143
- metadata?: Record<string, unknown>
153
+ metadata?: Record<string, unknown>,
154
+ options?: BlobStoragePartitionOptions
144
155
  ): Promise<void>;
145
156
 
146
157
  /**
147
158
  * Get blob data directly (for adapters that support direct retrieval).
148
159
  */
149
- get?(hash: string): Promise<Uint8Array | null>;
160
+ get?(
161
+ hash: string,
162
+ options?: BlobStoragePartitionOptions
163
+ ): Promise<Uint8Array | null>;
150
164
 
151
165
  /**
152
166
  * Get blob data directly as a stream (for adapters that support stream retrieval).
153
167
  */
154
- getStream?(hash: string): Promise<ReadableStream<Uint8Array> | null>;
168
+ getStream?(
169
+ hash: string,
170
+ options?: BlobStoragePartitionOptions
171
+ ): Promise<ReadableStream<Uint8Array> | null>;
155
172
  }
156
173
 
157
174
  // ============================================================================
@@ -88,6 +88,35 @@ export function toTableColumnCodecs(
88
88
  return out;
89
89
  }
90
90
 
91
+ export function createTableColumnCodecsResolver(
92
+ codecSource: ColumnCodecSource | undefined,
93
+ options: { dialect?: ColumnCodecDialect } = {}
94
+ ): (table: string, row: Record<string, unknown>) => TableColumnCodecs {
95
+ const tableCaches = new Map<string, Map<string, TableColumnCodecs>>();
96
+
97
+ return (table, row) => {
98
+ if (!codecSource) return {};
99
+ const columns = Object.keys(row);
100
+ if (columns.length === 0) return {};
101
+
102
+ const cacheKey = columns.slice().sort().join('\u0000');
103
+ let perTableCache = tableCaches.get(table);
104
+ if (!perTableCache) {
105
+ perTableCache = new Map<string, TableColumnCodecs>();
106
+ tableCaches.set(table, perTableCache);
107
+ }
108
+
109
+ const cached = perTableCache.get(cacheKey);
110
+ if (cached) return cached;
111
+
112
+ const resolved = toTableColumnCodecs(table, codecSource, columns, {
113
+ dialect: options.dialect,
114
+ });
115
+ perTableCache.set(cacheKey, resolved);
116
+ return resolved;
117
+ };
118
+ }
119
+
91
120
  export function applyCodecToDbValue(
92
121
  codec: AnyColumnCodec,
93
122
  value: unknown,
@@ -28,8 +28,8 @@ import {
28
28
  applyCodecToDbValue,
29
29
  type ColumnCodecDialect,
30
30
  type ColumnCodecSource,
31
+ createTableColumnCodecsResolver,
31
32
  type TableColumnCodecs,
32
- toTableColumnCodecs,
33
33
  } from './column-codecs';
34
34
 
35
35
  interface ColumnCodecPluginOptions {
@@ -343,35 +343,20 @@ function buildResultPlan(node: RootOperationNode): QueryResultPlan | null {
343
343
  return null;
344
344
  }
345
345
 
346
- function cacheKey(table: string, columns: readonly string[]): string {
347
- const sorted = [...columns].sort().join('\u0000');
348
- return `${table}\u0001${sorted}`;
349
- }
350
-
351
346
  class ColumnCodecsTransformer extends OperationNodeTransformer {
352
- readonly #codecs: ColumnCodecSource;
353
347
  readonly #dialect: ColumnCodecDialect;
354
- readonly #tableCodecsCache = new Map<string, TableColumnCodecs>();
348
+ readonly #resolveTableCodecs: (
349
+ table: string,
350
+ row: Record<string, unknown>
351
+ ) => TableColumnCodecs;
355
352
  #currentUpdateTable: string | null = null;
356
353
 
357
354
  constructor(options: ColumnCodecPluginOptions) {
358
355
  super();
359
- this.#codecs = options.codecs;
360
356
  this.#dialect = options.dialect ?? 'sqlite';
361
- }
362
-
363
- resolveTableCodecs(
364
- table: string,
365
- columns: readonly string[]
366
- ): TableColumnCodecs {
367
- const key = cacheKey(table, columns);
368
- const cached = this.#tableCodecsCache.get(key);
369
- if (cached) return cached;
370
- const resolved = toTableColumnCodecs(table, this.#codecs, columns, {
357
+ this.#resolveTableCodecs = createTableColumnCodecsResolver(options.codecs, {
371
358
  dialect: this.#dialect,
372
359
  });
373
- this.#tableCodecsCache.set(key, resolved);
374
- return resolved;
375
360
  }
376
361
 
377
362
  protected override transformInsertQuery(
@@ -393,7 +378,10 @@ class ColumnCodecsTransformer extends OperationNodeTransformer {
393
378
  .filter((columnName): columnName is string => Boolean(columnName));
394
379
  if (columns.length === 0) return transformed;
395
380
 
396
- const tableCodecs = this.resolveTableCodecs(tableName, columns);
381
+ const tableCodecs = this.#resolveTableCodecs(
382
+ tableName,
383
+ Object.fromEntries(columns.map((column) => [column, null]))
384
+ );
397
385
 
398
386
  let didChange = false;
399
387
  const nextValueRows = transformed.values.values.map((valueNode) => {
@@ -456,9 +444,9 @@ class ColumnCodecsTransformer extends OperationNodeTransformer {
456
444
  const columnName = getColumnName(transformed.column);
457
445
  if (!columnName) return transformed;
458
446
 
459
- const tableCodecs = this.resolveTableCodecs(this.#currentUpdateTable, [
460
- columnName,
461
- ]);
447
+ const tableCodecs = this.#resolveTableCodecs(this.#currentUpdateTable, {
448
+ [columnName]: null,
449
+ });
462
450
  const codec = tableCodecs[columnName];
463
451
  if (!codec) return transformed;
464
452
 
@@ -485,12 +473,16 @@ export class ColumnCodecsPlugin implements KyselyPlugin {
485
473
  readonly #dialect: ColumnCodecDialect;
486
474
  readonly #transformer: ColumnCodecsTransformer;
487
475
  readonly #resultPlans = new WeakMap<object, QueryResultPlan>();
488
- readonly #codecs: ColumnCodecSource;
489
- readonly #resultCodecCache = new Map<string, TableColumnCodecs>();
476
+ readonly #resolveTableCodecs: (
477
+ table: string,
478
+ row: Record<string, unknown>
479
+ ) => TableColumnCodecs;
490
480
 
491
481
  constructor(options: ColumnCodecPluginOptions) {
492
482
  this.#dialect = options.dialect ?? 'sqlite';
493
- this.#codecs = options.codecs;
483
+ this.#resolveTableCodecs = createTableColumnCodecsResolver(options.codecs, {
484
+ dialect: this.#dialect,
485
+ });
494
486
  this.#transformer = new ColumnCodecsTransformer(options);
495
487
  }
496
488
 
@@ -521,31 +513,16 @@ export class ColumnCodecsPlugin implements KyselyPlugin {
521
513
  };
522
514
  }
523
515
 
524
- #resolveTableCodecs(
525
- table: string,
526
- columns: readonly string[]
527
- ): TableColumnCodecs {
528
- const key = cacheKey(table, columns);
529
- const cached = this.#resultCodecCache.get(key);
530
- if (cached) return cached;
531
- const resolved = toTableColumnCodecs(table, this.#codecs, columns, {
532
- dialect: this.#dialect,
533
- });
534
- this.#resultCodecCache.set(key, resolved);
535
- return resolved;
536
- }
537
-
538
516
  #transformRow(row: UnknownRow, plan: QueryResultPlan): UnknownRow {
539
517
  const source = row as Record<string, unknown>;
540
518
  const target: Record<string, unknown> = { ...source };
541
- const rowColumns = Object.keys(source);
542
519
 
543
520
  if (plan.selectAllTables.length > 0) {
544
521
  const codecCandidates = new Map<string, AnyColumnCodec>();
545
522
  const ambiguousColumns = new Set<string>();
546
523
 
547
524
  for (const table of plan.selectAllTables) {
548
- const tableCodecs = this.#resolveTableCodecs(table, rowColumns);
525
+ const tableCodecs = this.#resolveTableCodecs(table, source);
549
526
  for (const [column, codec] of Object.entries(tableCodecs)) {
550
527
  if (!(column in source)) continue;
551
528
  const existing = codecCandidates.get(column);
@@ -569,7 +546,9 @@ export class ColumnCodecsPlugin implements KyselyPlugin {
569
546
 
570
547
  for (const ref of plan.explicit) {
571
548
  if (!(ref.outputKey in source)) continue;
572
- const tableCodecs = this.#resolveTableCodecs(ref.table, [ref.column]);
549
+ const tableCodecs = this.#resolveTableCodecs(ref.table, {
550
+ [ref.column]: source[ref.outputKey],
551
+ });
573
552
  const codec = tableCodecs[ref.column];
574
553
  if (!codec) continue;
575
554
  target[ref.outputKey] = applyCodecFromDbValue(
@@ -179,6 +179,36 @@ export function normalizeScopes(
179
179
  return result;
180
180
  }
181
181
 
182
+ export function createSingleVariableScopeMetadata(
183
+ scopes: readonly ScopeDefinition[]
184
+ ): {
185
+ scopePatterns: ScopePattern[];
186
+ scopeColumnsByVariable: Record<string, string>;
187
+ } {
188
+ const scopeColumnMap = normalizeScopes(scopes);
189
+ const scopePatterns = Object.keys(scopeColumnMap) as ScopePattern[];
190
+ const scopeColumnsByVariable: Record<string, string> = {};
191
+
192
+ for (const [pattern, columnName] of Object.entries(scopeColumnMap)) {
193
+ const vars = extractScopeVars(pattern);
194
+ if (vars.length !== 1) {
195
+ throw new Error(
196
+ `Scope pattern "${pattern}" must contain exactly one placeholder (got ${vars.length}).`
197
+ );
198
+ }
199
+ const variableName = vars[0]!;
200
+ const existingColumn = scopeColumnsByVariable[variableName];
201
+ if (existingColumn && existingColumn !== columnName) {
202
+ throw new Error(
203
+ `Scope variable "${variableName}" is mapped to multiple columns: "${existingColumn}" and "${columnName}".`
204
+ );
205
+ }
206
+ scopeColumnsByVariable[variableName] = columnName;
207
+ }
208
+
209
+ return { scopePatterns, scopeColumnsByVariable };
210
+ }
211
+
182
212
  // ── Value operations (public) ────────────────────────────────────────
183
213
 
184
214
  /**
@@ -193,3 +223,15 @@ export function extractScopeVars(pattern: ScopePattern): string[] {
193
223
  if (!matches) return [];
194
224
  return matches.map((m) => m.slice(1, -1));
195
225
  }
226
+
227
+ export function collectScopeVars(
228
+ scopePatterns: readonly ScopePattern[]
229
+ ): Set<string> {
230
+ const keys = new Set<string>();
231
+ for (const pattern of scopePatterns) {
232
+ for (const key of extractScopeVars(pattern)) {
233
+ keys.add(key);
234
+ }
235
+ }
236
+ return keys;
237
+ }
package/src/types.ts CHANGED
@@ -175,7 +175,10 @@ export interface SyncTransport {
175
175
  * Download an encoded bootstrap snapshot chunk.
176
176
  */
177
177
  fetchSnapshotChunk(
178
- request: { chunkId: string },
178
+ request: {
179
+ chunkId: string;
180
+ scopeValues?: Record<string, string | string[]>;
181
+ },
179
182
  options?: SyncTransportOptions
180
183
  ): Promise<Uint8Array>;
181
184
 
@@ -186,7 +189,10 @@ export interface SyncTransport {
186
189
  * incrementally without materializing the entire chunk in memory.
187
190
  */
188
191
  fetchSnapshotChunkStream?(
189
- request: { chunkId: string },
192
+ request: {
193
+ chunkId: string;
194
+ scopeValues?: Record<string, string | string[]>;
195
+ },
190
196
  options?: SyncTransportOptions
191
197
  ): Promise<ReadableStream<Uint8Array>>;
192
198
 
@@ -3,3 +3,5 @@ export * from './crypto';
3
3
  export * from './id';
4
4
  export * from './object';
5
5
  export * from './realtime-connection-registry';
6
+ export * from './table-registry';
7
+ export * from './url';
@@ -0,0 +1,67 @@
1
+ type TableEntry = {
2
+ table: string;
3
+ dependsOn?: readonly string[];
4
+ };
5
+ export function registerTableOrThrow(
6
+ registeredTables: Set<string>,
7
+ table: string,
8
+ duplicateTableError: (table: string) => string
9
+ ): void {
10
+ if (registeredTables.has(table)) throw new Error(duplicateTableError(table));
11
+ registeredTables.add(table);
12
+ }
13
+ export function createTableLookup<T extends TableEntry>(
14
+ handlers: readonly T[],
15
+ duplicateTableError: (table: string) => string
16
+ ): ReadonlyMap<string, T> {
17
+ const byTable = new Map<string, T>();
18
+ for (const handler of handlers) {
19
+ if (byTable.has(handler.table)) {
20
+ throw new Error(duplicateTableError(handler.table));
21
+ }
22
+ byTable.set(handler.table, handler);
23
+ }
24
+ return byTable;
25
+ }
26
+ export function assertKnownTableDependencies<T extends TableEntry>(
27
+ handlers: readonly T[],
28
+ byTable: ReadonlyMap<string, T>,
29
+ unknownDependencyError: (table: string, dependency: string) => string
30
+ ): void {
31
+ for (const handler of handlers) {
32
+ for (const dependency of handler.dependsOn ?? []) {
33
+ if (!byTable.has(dependency)) {
34
+ throw new Error(unknownDependencyError(handler.table, dependency));
35
+ }
36
+ }
37
+ }
38
+ }
39
+ export function topologicallySortTablesByDependencies<T extends TableEntry>(
40
+ byTable: ReadonlyMap<string, T>,
41
+ targetTable?: string
42
+ ): T[] {
43
+ const visited = new Set<string>();
44
+ const visiting = new Set<string>();
45
+ const sorted: T[] = [];
46
+ const visit = (table: string) => {
47
+ if (visited.has(table)) return;
48
+ if (visiting.has(table)) {
49
+ throw new Error(
50
+ `Circular dependency detected involving table "${table}"`
51
+ );
52
+ }
53
+ const handler = byTable.get(table);
54
+ if (!handler) throw new Error(`Unknown table: ${table}`);
55
+ visiting.add(table);
56
+ for (const dependency of handler.dependsOn ?? []) visit(dependency);
57
+ visiting.delete(table);
58
+ visited.add(table);
59
+ sorted.push(handler);
60
+ };
61
+ if (targetTable) {
62
+ visit(targetTable);
63
+ } else {
64
+ for (const table of byTable.keys()) visit(table);
65
+ }
66
+ return sorted;
67
+ }
@@ -0,0 +1,29 @@
1
+ const ABSOLUTE_URL_SCHEME_REGEX = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;
2
+
3
+ const trimTrailingSlashes = (value: string): string =>
4
+ value.replace(/\/+$/, '');
5
+
6
+ export function normalizeSyncBaseUrl(url: string): string {
7
+ const trimmed = trimTrailingSlashes(url.trim());
8
+ if (!trimmed.endsWith('/sync')) return trimmed;
9
+ const baseUrl = trimmed.slice(0, -'/sync'.length);
10
+ return baseUrl.length > 0 ? baseUrl : '/';
11
+ }
12
+
13
+ export function resolveUrlFromBase(
14
+ baseUrl: string,
15
+ path: string,
16
+ origin?: string
17
+ ): string {
18
+ const normalizedPath = path.replace(/^\/+/, '');
19
+ const normalizedBaseUrl = trimTrailingSlashes(baseUrl);
20
+ if (ABSOLUTE_URL_SCHEME_REGEX.test(baseUrl)) {
21
+ return new URL(
22
+ normalizedPath,
23
+ baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`
24
+ ).toString();
25
+ }
26
+ if (origin)
27
+ return new URL(`${normalizedBaseUrl}/${normalizedPath}`, origin).toString();
28
+ return `${normalizedBaseUrl}/${normalizedPath}`;
29
+ }