@syncular/core 0.0.1 → 0.0.2-126
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/README.md +24 -0
- package/dist/blobs.d.ts +9 -4
- package/dist/blobs.d.ts.map +1 -1
- package/dist/blobs.js +0 -12
- package/dist/blobs.js.map +1 -1
- package/dist/column-codecs.d.ts +55 -0
- package/dist/column-codecs.d.ts.map +1 -0
- package/dist/column-codecs.js +124 -0
- package/dist/column-codecs.js.map +1 -0
- package/dist/index.d.ts +11 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -7
- package/dist/index.js.map +1 -1
- package/dist/kysely-serialize.d.ts +1 -1
- package/dist/kysely-serialize.d.ts.map +1 -1
- package/dist/logger.d.ts +7 -32
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +6 -40
- package/dist/logger.js.map +1 -1
- package/dist/proxy/types.d.ts +0 -9
- package/dist/proxy/types.d.ts.map +1 -1
- package/dist/schemas/index.js +3 -3
- package/dist/schemas/sync.d.ts +120 -6
- package/dist/schemas/sync.d.ts.map +1 -1
- package/dist/schemas/sync.js +17 -3
- package/dist/schemas/sync.js.map +1 -1
- package/dist/scopes/index.d.ts +39 -64
- package/dist/scopes/index.d.ts.map +1 -1
- package/dist/scopes/index.js +9 -154
- package/dist/scopes/index.js.map +1 -1
- package/dist/snapshot-chunks.d.ts +26 -0
- package/dist/snapshot-chunks.d.ts.map +1 -0
- package/dist/snapshot-chunks.js +89 -0
- package/dist/snapshot-chunks.js.map +1 -0
- package/dist/telemetry.d.ts +114 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +113 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/types.d.ts +12 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/id.d.ts +2 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +8 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/object.d.ts +2 -0
- package/dist/utils/object.d.ts.map +1 -0
- package/dist/utils/object.js +4 -0
- package/dist/utils/object.js.map +1 -0
- package/package.json +28 -8
- package/src/__tests__/telemetry.test.ts +170 -0
- package/src/__tests__/utils.test.ts +27 -0
- package/src/blobs.ts +15 -14
- package/src/column-codecs.ts +228 -0
- package/src/index.ts +15 -41
- package/src/kysely-serialize.ts +1 -1
- package/src/logger.ts +10 -68
- package/src/proxy/types.ts +0 -10
- package/src/schemas/sync.ts +27 -3
- package/src/scopes/index.ts +72 -200
- package/src/snapshot-chunks.ts +112 -0
- package/src/telemetry.ts +238 -0
- package/src/types.ts +14 -18
- package/src/utils/id.ts +7 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/object.ts +3 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# @syncular/core
|
|
2
|
+
|
|
3
|
+
Core protocol types, schemas, and shared utilities for Syncular (scopes, commit-log types, telemetry, blob types, etc.).
|
|
4
|
+
|
|
5
|
+
Most apps won't depend on this directly. It is the shared foundation used by `@syncular/client`, `@syncular/server`, and the transports.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @syncular/core
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Documentation
|
|
14
|
+
|
|
15
|
+
- Overview: https://syncular.dev/docs/introduction/what-is-syncular
|
|
16
|
+
- Architecture (commit log, push/pull, snapshots): https://syncular.dev/docs/introduction/architecture
|
|
17
|
+
|
|
18
|
+
## Links
|
|
19
|
+
|
|
20
|
+
- GitHub: https://github.com/syncular/syncular
|
|
21
|
+
- Issues: https://github.com/syncular/syncular/issues
|
|
22
|
+
|
|
23
|
+
> Status: Alpha. APIs and storage layouts may change between releases.
|
|
24
|
+
|
package/dist/blobs.d.ts
CHANGED
|
@@ -110,10 +110,19 @@ export interface BlobStorageAdapter {
|
|
|
110
110
|
* Used for snapshot chunks and other internal data.
|
|
111
111
|
*/
|
|
112
112
|
put?(hash: string, data: Uint8Array, metadata?: Record<string, unknown>): Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* Store blob data directly from a stream.
|
|
115
|
+
* Preferred for large payloads to avoid full buffering in memory.
|
|
116
|
+
*/
|
|
117
|
+
putStream?(hash: string, stream: ReadableStream<Uint8Array>, metadata?: Record<string, unknown>): Promise<void>;
|
|
113
118
|
/**
|
|
114
119
|
* Get blob data directly (for adapters that support direct retrieval).
|
|
115
120
|
*/
|
|
116
121
|
get?(hash: string): Promise<Uint8Array | null>;
|
|
122
|
+
/**
|
|
123
|
+
* Get blob data directly as a stream (for adapters that support stream retrieval).
|
|
124
|
+
*/
|
|
125
|
+
getStream?(hash: string): Promise<ReadableStream<Uint8Array> | null>;
|
|
117
126
|
}
|
|
118
127
|
/**
|
|
119
128
|
* Create a BlobRef from upload metadata.
|
|
@@ -134,8 +143,4 @@ export declare function parseBlobHash(hash: string): string | null;
|
|
|
134
143
|
* Create a blob hash string from hex.
|
|
135
144
|
*/
|
|
136
145
|
export declare function createBlobHash(hexHash: string): string;
|
|
137
|
-
/**
|
|
138
|
-
* Check if a value looks like a BlobRef.
|
|
139
|
-
*/
|
|
140
|
-
export declare function isBlobRef(value: unknown): value is BlobRef;
|
|
141
146
|
//# sourceMappingURL=blobs.d.ts.map
|
package/dist/blobs.d.ts.map
CHANGED
|
@@ -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;;OAEG;IACH,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"blobs.d.ts","sourceRoot":"","sources":["../src/blobs.ts"],"names":[],"mappings":"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"}
|
package/dist/blobs.js
CHANGED
|
@@ -44,16 +44,4 @@ export function parseBlobHash(hash) {
|
|
|
44
44
|
export function createBlobHash(hexHash) {
|
|
45
45
|
return `sha256:${hexHash.toLowerCase()}`;
|
|
46
46
|
}
|
|
47
|
-
/**
|
|
48
|
-
* Check if a value looks like a BlobRef.
|
|
49
|
-
*/
|
|
50
|
-
export function isBlobRef(value) {
|
|
51
|
-
if (typeof value !== 'object' || value === null)
|
|
52
|
-
return false;
|
|
53
|
-
const obj = value;
|
|
54
|
-
return (typeof obj.hash === 'string' &&
|
|
55
|
-
obj.hash.startsWith('sha256:') &&
|
|
56
|
-
typeof obj.size === 'number' &&
|
|
57
|
-
typeof obj.mimeType === 'string');
|
|
58
|
-
}
|
|
59
47
|
//# sourceMappingURL=blobs.js.map
|
package/dist/blobs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobs.js","sourceRoot":"","sources":["../src/blobs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export type ColumnCodecDialect = 'sqlite' | 'postgres';
|
|
2
|
+
export interface ColumnCodecTypeImport {
|
|
3
|
+
name: string;
|
|
4
|
+
from: string;
|
|
5
|
+
}
|
|
6
|
+
export type ColumnCodecType = string | {
|
|
7
|
+
type: string;
|
|
8
|
+
import?: ColumnCodecTypeImport;
|
|
9
|
+
};
|
|
10
|
+
export interface ColumnCodec<App, Db> {
|
|
11
|
+
ts: ColumnCodecType;
|
|
12
|
+
toDb(value: App): Db;
|
|
13
|
+
fromDb(value: Db): App;
|
|
14
|
+
dialects?: Partial<Record<ColumnCodecDialect, {
|
|
15
|
+
toDb?(value: App): Db;
|
|
16
|
+
fromDb?(value: Db): App;
|
|
17
|
+
}>>;
|
|
18
|
+
}
|
|
19
|
+
export type AnyColumnCodec = ColumnCodec<unknown, unknown>;
|
|
20
|
+
export interface ColumnCodecColumn {
|
|
21
|
+
table: string;
|
|
22
|
+
column: string;
|
|
23
|
+
sqlType?: string;
|
|
24
|
+
nullable?: boolean;
|
|
25
|
+
isPrimaryKey?: boolean;
|
|
26
|
+
hasDefault?: boolean;
|
|
27
|
+
dialect?: ColumnCodecDialect;
|
|
28
|
+
}
|
|
29
|
+
export type TableColumnCodecs = Record<string, AnyColumnCodec>;
|
|
30
|
+
export type ColumnCodecSource = (column: ColumnCodecColumn) => AnyColumnCodec | undefined;
|
|
31
|
+
export declare function toTableColumnCodecs(table: string, codecSource: ColumnCodecSource | undefined, columns: Iterable<string>, options?: {
|
|
32
|
+
dialect?: ColumnCodecDialect;
|
|
33
|
+
sqlTypes?: Record<string, string | undefined>;
|
|
34
|
+
}): TableColumnCodecs;
|
|
35
|
+
export declare function applyCodecToDbValue(codec: AnyColumnCodec, value: unknown, dialect?: ColumnCodecDialect): unknown;
|
|
36
|
+
export declare function applyCodecFromDbValue(codec: AnyColumnCodec, value: unknown, dialect?: ColumnCodecDialect): unknown;
|
|
37
|
+
export declare function applyCodecsToDbRow(row: Record<string, unknown>, tableCodecs: TableColumnCodecs, dialect?: ColumnCodecDialect): Record<string, unknown>;
|
|
38
|
+
export declare function applyCodecsFromDbRow(row: Record<string, unknown>, tableCodecs: TableColumnCodecs, dialect?: ColumnCodecDialect): Record<string, unknown>;
|
|
39
|
+
export declare function numberBoolean(): ColumnCodec<boolean, number | boolean | string>;
|
|
40
|
+
export interface StringJsonCodecOptions<T> {
|
|
41
|
+
ts?: ColumnCodecType;
|
|
42
|
+
import?: ColumnCodecTypeImport;
|
|
43
|
+
stringify?: (value: T) => string;
|
|
44
|
+
parse?: (value: string) => T;
|
|
45
|
+
}
|
|
46
|
+
export declare function stringJson<T = unknown>(options?: StringJsonCodecOptions<T>): ColumnCodec<T, string | T>;
|
|
47
|
+
export declare function timestampDate(): ColumnCodec<Date, string | Date>;
|
|
48
|
+
export declare function dateString(): ColumnCodec<string, string | Date>;
|
|
49
|
+
export declare const codecs: {
|
|
50
|
+
numberBoolean: typeof numberBoolean;
|
|
51
|
+
stringJson: typeof stringJson;
|
|
52
|
+
timestampDate: typeof timestampDate;
|
|
53
|
+
dateString: typeof dateString;
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=column-codecs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-codecs.d.ts","sourceRoot":"","sources":["../src/column-codecs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
function hasCodecs(tableCodecs) {
|
|
2
|
+
return Object.keys(tableCodecs).length > 0;
|
|
3
|
+
}
|
|
4
|
+
function resolveCodecToDb(codec, dialect) {
|
|
5
|
+
return codec.dialects?.[dialect]?.toDb ?? codec.toDb;
|
|
6
|
+
}
|
|
7
|
+
function resolveCodecFromDb(codec, dialect) {
|
|
8
|
+
return codec.dialects?.[dialect]?.fromDb ?? codec.fromDb;
|
|
9
|
+
}
|
|
10
|
+
export function toTableColumnCodecs(table, codecSource, columns, options = {}) {
|
|
11
|
+
if (!codecSource)
|
|
12
|
+
return {};
|
|
13
|
+
const out = {};
|
|
14
|
+
for (const column of columns) {
|
|
15
|
+
if (column.length === 0)
|
|
16
|
+
continue;
|
|
17
|
+
const codec = codecSource({
|
|
18
|
+
table,
|
|
19
|
+
column,
|
|
20
|
+
sqlType: options.sqlTypes?.[column],
|
|
21
|
+
dialect: options.dialect,
|
|
22
|
+
});
|
|
23
|
+
if (codec)
|
|
24
|
+
out[column] = codec;
|
|
25
|
+
}
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
28
|
+
export function applyCodecToDbValue(codec, value, dialect = 'sqlite') {
|
|
29
|
+
if (value === null || value === undefined)
|
|
30
|
+
return value;
|
|
31
|
+
const transform = resolveCodecToDb(codec, dialect);
|
|
32
|
+
return transform(value);
|
|
33
|
+
}
|
|
34
|
+
export function applyCodecFromDbValue(codec, value, dialect = 'sqlite') {
|
|
35
|
+
if (value === null || value === undefined)
|
|
36
|
+
return value;
|
|
37
|
+
const transform = resolveCodecFromDb(codec, dialect);
|
|
38
|
+
return transform(value);
|
|
39
|
+
}
|
|
40
|
+
export function applyCodecsToDbRow(row, tableCodecs, dialect = 'sqlite') {
|
|
41
|
+
if (!hasCodecs(tableCodecs))
|
|
42
|
+
return { ...row };
|
|
43
|
+
const transformed = { ...row };
|
|
44
|
+
for (const [column, codec] of Object.entries(tableCodecs)) {
|
|
45
|
+
if (!(column in transformed))
|
|
46
|
+
continue;
|
|
47
|
+
transformed[column] = applyCodecToDbValue(codec, transformed[column], dialect);
|
|
48
|
+
}
|
|
49
|
+
return transformed;
|
|
50
|
+
}
|
|
51
|
+
export function applyCodecsFromDbRow(row, tableCodecs, dialect = 'sqlite') {
|
|
52
|
+
if (!hasCodecs(tableCodecs))
|
|
53
|
+
return { ...row };
|
|
54
|
+
const transformed = { ...row };
|
|
55
|
+
for (const [column, codec] of Object.entries(tableCodecs)) {
|
|
56
|
+
if (!(column in transformed))
|
|
57
|
+
continue;
|
|
58
|
+
transformed[column] = applyCodecFromDbValue(codec, transformed[column], dialect);
|
|
59
|
+
}
|
|
60
|
+
return transformed;
|
|
61
|
+
}
|
|
62
|
+
function parseBooleanValue(value) {
|
|
63
|
+
if (typeof value === 'boolean')
|
|
64
|
+
return value;
|
|
65
|
+
if (typeof value === 'number')
|
|
66
|
+
return value === 1;
|
|
67
|
+
if (typeof value === 'string') {
|
|
68
|
+
const normalized = value.trim().toLowerCase();
|
|
69
|
+
return normalized === '1' || normalized === 'true';
|
|
70
|
+
}
|
|
71
|
+
return Boolean(value);
|
|
72
|
+
}
|
|
73
|
+
export function numberBoolean() {
|
|
74
|
+
return {
|
|
75
|
+
ts: 'boolean',
|
|
76
|
+
toDb: (value) => (value ? 1 : 0),
|
|
77
|
+
fromDb: (value) => parseBooleanValue(value),
|
|
78
|
+
dialects: {
|
|
79
|
+
postgres: {
|
|
80
|
+
toDb: (value) => value,
|
|
81
|
+
fromDb: (value) => parseBooleanValue(value),
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export function stringJson(options = {}) {
|
|
87
|
+
const stringify = options.stringify ?? ((value) => JSON.stringify(value));
|
|
88
|
+
const parse = options.parse ?? ((value) => JSON.parse(value));
|
|
89
|
+
const ts = options.ts ??
|
|
90
|
+
(options.import
|
|
91
|
+
? { type: options.import.name, import: options.import }
|
|
92
|
+
: 'unknown');
|
|
93
|
+
return {
|
|
94
|
+
ts,
|
|
95
|
+
toDb: (value) => stringify(value),
|
|
96
|
+
fromDb: (value) => {
|
|
97
|
+
if (typeof value === 'string') {
|
|
98
|
+
return parse(value);
|
|
99
|
+
}
|
|
100
|
+
return value;
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export function timestampDate() {
|
|
105
|
+
return {
|
|
106
|
+
ts: 'Date',
|
|
107
|
+
toDb: (value) => value.toISOString(),
|
|
108
|
+
fromDb: (value) => value instanceof Date ? value : new Date(String(value)),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export function dateString() {
|
|
112
|
+
return {
|
|
113
|
+
ts: 'string',
|
|
114
|
+
toDb: (value) => value,
|
|
115
|
+
fromDb: (value) => value instanceof Date ? value.toISOString().slice(0, 10) : String(value),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
export const codecs = {
|
|
119
|
+
numberBoolean,
|
|
120
|
+
stringJson,
|
|
121
|
+
timestampDate,
|
|
122
|
+
dateString,
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=column-codecs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-codecs.js","sourceRoot":"","sources":["../src/column-codecs.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,15 +9,17 @@
|
|
|
9
9
|
* - Blob types for media/binary handling
|
|
10
10
|
* - Zod schemas for runtime validation and OpenAPI
|
|
11
11
|
*/
|
|
12
|
-
export
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export
|
|
12
|
+
export * from './blobs';
|
|
13
|
+
export * from './column-codecs';
|
|
14
|
+
export * from './conflict';
|
|
15
|
+
export * from './kysely-serialize';
|
|
16
|
+
export * from './logger';
|
|
17
|
+
export * from './proxy';
|
|
17
18
|
export * from './schemas';
|
|
18
|
-
export
|
|
19
|
-
export
|
|
19
|
+
export * from './scopes';
|
|
20
|
+
export * from './snapshot-chunks';
|
|
21
|
+
export * from './telemetry';
|
|
20
22
|
export * from './transforms';
|
|
21
|
-
export
|
|
22
|
-
export
|
|
23
|
+
export * from './types';
|
|
24
|
+
export * from './utils';
|
|
23
25
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,cAAc,SAAS,CAAC;AAExB,cAAc,iBAAiB,CAAC;AAEhC,cAAc,YAAY,CAAC;AAE3B,cAAc,oBAAoB,CAAC;AAEnC,cAAc,UAAU,CAAC;AAEzB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAE1B,cAAc,UAAU,CAAC;AAEzB,cAAc,mBAAmB,CAAC;AAElC,cAAc,aAAa,CAAC;AAE5B,cAAc,cAAc,CAAC;AAE7B,cAAc,SAAS,CAAC;AAExB,cAAc,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,16 +9,30 @@
|
|
|
9
9
|
* - Blob types for media/binary handling
|
|
10
10
|
* - Zod schemas for runtime validation and OpenAPI
|
|
11
11
|
*/
|
|
12
|
-
|
|
12
|
+
// Blob transport/storage types and utilities (protocol types come from ./schemas)
|
|
13
|
+
export * from './blobs.js';
|
|
14
|
+
// Column-level codecs shared by typegen and runtime paths
|
|
15
|
+
export * from './column-codecs.js';
|
|
13
16
|
// Conflict detection utilities
|
|
17
|
+
export * from './conflict.js';
|
|
14
18
|
// Kysely plugin utilities
|
|
15
|
-
export
|
|
19
|
+
export * from './kysely-serialize.js';
|
|
16
20
|
// Logging utilities
|
|
17
|
-
export
|
|
21
|
+
export * from './logger.js';
|
|
22
|
+
// Proxy protocol types
|
|
23
|
+
export * from './proxy/index.js';
|
|
18
24
|
// Schemas (Zod)
|
|
19
|
-
export * from './schemas';
|
|
20
|
-
|
|
25
|
+
export * from './schemas/index.js';
|
|
26
|
+
// Scope types, patterns, and utilities
|
|
27
|
+
export * from './scopes/index.js';
|
|
28
|
+
// Snapshot chunk encoding helpers
|
|
29
|
+
export * from './snapshot-chunks.js';
|
|
30
|
+
// Telemetry abstraction
|
|
31
|
+
export * from './telemetry.js';
|
|
21
32
|
// Data transformation hooks
|
|
22
|
-
export * from './transforms';
|
|
23
|
-
|
|
33
|
+
export * from './transforms.js';
|
|
34
|
+
// Transport and conflict types (protocol types come from ./schemas)
|
|
35
|
+
export * from './types.js';
|
|
36
|
+
// Shared runtime utilities
|
|
37
|
+
export * from './utils/index.js';
|
|
24
38
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,kFAAkF;AAClF,cAAc,SAAS,CAAC;AACxB,0DAA0D;AAC1D,cAAc,iBAAiB,CAAC;AAChC,+BAA+B;AAC/B,cAAc,YAAY,CAAC;AAC3B,0BAA0B;AAC1B,cAAc,oBAAoB,CAAC;AACnC,oBAAoB;AACpB,cAAc,UAAU,CAAC;AACzB,uBAAuB;AACvB,cAAc,SAAS,CAAC;AACxB,gBAAgB;AAChB,cAAc,WAAW,CAAC;AAC1B,uCAAuC;AACvC,cAAc,UAAU,CAAC;AACzB,kCAAkC;AAClC,cAAc,mBAAmB,CAAC;AAClC,wBAAwB;AACxB,cAAc,aAAa,CAAC;AAC5B,4BAA4B;AAC5B,cAAc,cAAc,CAAC;AAC7B,oEAAoE;AACpE,cAAc,SAAS,CAAC;AACxB,2BAA2B;AAC3B,cAAc,SAAS,CAAC"}
|
|
@@ -10,7 +10,7 @@ declare class BaseSerializePlugin implements KyselyPlugin {
|
|
|
10
10
|
transformQuery({ node, queryId }: PluginTransformQueryArgs): RootOperationNode;
|
|
11
11
|
transformResult({ result, queryId }: PluginTransformResultArgs): Promise<QueryResult<UnknownRow>>;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
interface SerializePluginOptions {
|
|
14
14
|
serializer?: Serializer;
|
|
15
15
|
deserializer?: Deserializer;
|
|
16
16
|
skipNodeKind?: Array<RootOperationNode['kind']>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kysely-serialize.d.ts","sourceRoot":"","sources":["../src/kysely-serialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE9B,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAEhB,MAAM,QAAQ,CAAC;AAEhB,KAAK,UAAU,GAAG,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC;AAClD,KAAK,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC;AA4HpD,cAAM,mBAAoB,YAAW,YAAY;;IAM/C;;OAEG;IACH,YACE,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAW/C;IAED,cAAc,CAAC,EACb,IAAI,EACJ,OAAO,EACR,EAAE,wBAAwB,GAAG,iBAAiB,CAM9C;IAEK,eAAe,CAAC,EACpB,MAAM,EACN,OAAO,EACR,EAAE,yBAAyB,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAK9D;CAcF;AAED,
|
|
1
|
+
{"version":3,"file":"kysely-serialize.d.ts","sourceRoot":"","sources":["../src/kysely-serialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE9B,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAEhB,MAAM,QAAQ,CAAC;AAEhB,KAAK,UAAU,GAAG,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC;AAClD,KAAK,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC;AA4HpD,cAAM,mBAAoB,YAAW,YAAY;;IAM/C;;OAEG;IACH,YACE,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAW/C;IAED,cAAc,CAAC,EACb,IAAI,EACJ,OAAO,EACR,EAAE,wBAAwB,GAAG,iBAAiB,CAM9C;IAEK,eAAe,CAAC,EACpB,MAAM,EACN,OAAO,EACR,EAAE,yBAAyB,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAK9D;CAcF;AAED,UAAU,sBAAsB;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;CACjD;AAED,qBAAa,eAAgB,SAAQ,mBAAmB;IACtD,YAAY,OAAO,GAAE,sBAA2B,EAO/C;CACF"}
|
package/dist/logger.d.ts
CHANGED
|
@@ -1,35 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @syncular/core - Structured logging utilities for sync operations
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* Each log event includes a timestamp and event type.
|
|
4
|
+
* Uses the active telemetry backend configured via `configureSyncTelemetry()`.
|
|
6
5
|
*/
|
|
6
|
+
import { type SyncTelemetryEvent } from './telemetry';
|
|
7
7
|
/**
|
|
8
|
-
* Sync log event structure
|
|
8
|
+
* Sync log event structure.
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
/** Event type identifier */
|
|
12
|
-
event: string;
|
|
13
|
-
/** User ID (optional) */
|
|
14
|
-
userId?: string;
|
|
15
|
-
/** Operation duration in milliseconds (optional) */
|
|
16
|
-
durationMs?: number;
|
|
17
|
-
/** Number of rows affected (optional) */
|
|
18
|
-
rowCount?: number;
|
|
19
|
-
/** Whether a full reset was required (optional) */
|
|
20
|
-
resetRequired?: boolean;
|
|
21
|
-
/** Error message if operation failed (optional) */
|
|
22
|
-
error?: string;
|
|
23
|
-
/** Additional arbitrary properties */
|
|
24
|
-
[key: string]: unknown;
|
|
25
|
-
}
|
|
10
|
+
export type SyncLogEvent = SyncTelemetryEvent;
|
|
26
11
|
/**
|
|
27
|
-
* Logger function type
|
|
12
|
+
* Logger function type.
|
|
28
13
|
*/
|
|
29
|
-
type SyncLogger = (event: SyncLogEvent) => void;
|
|
14
|
+
export type SyncLogger = (event: SyncLogEvent) => void;
|
|
30
15
|
/**
|
|
31
|
-
* Log a sync event using the
|
|
32
|
-
* For custom logging, create your own logger with createDefaultLogger pattern.
|
|
16
|
+
* Log a sync event using the currently configured telemetry backend.
|
|
33
17
|
*/
|
|
34
18
|
export declare const logSyncEvent: SyncLogger;
|
|
35
19
|
/**
|
|
@@ -42,13 +26,4 @@ export declare const logSyncEvent: SyncLogger;
|
|
|
42
26
|
* logSyncEvent({ event: 'work_complete', durationMs: elapsed() });
|
|
43
27
|
*/
|
|
44
28
|
export declare function createSyncTimer(): () => number;
|
|
45
|
-
/**
|
|
46
|
-
* Create a scoped logger that automatically adds context to all events.
|
|
47
|
-
*
|
|
48
|
-
* @example
|
|
49
|
-
* const log = createScopedLogger({ userId: 'user123', shape: 'teams' });
|
|
50
|
-
* log({ event: 'pull_start' }); // Includes userId and shape
|
|
51
|
-
*/
|
|
52
|
-
export declare function createScopedLogger(context: Record<string, unknown>, baseLogger?: SyncLogger): SyncLogger;
|
|
53
|
-
export {};
|
|
54
29
|
//# sourceMappingURL=logger.d.ts.map
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,UAE1B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,IAAI,MAAM,MAAM,CAG9C"}
|
package/dist/logger.js
CHANGED
|
@@ -1,37 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @syncular/core - Structured logging utilities for sync operations
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* Each log event includes a timestamp and event type.
|
|
4
|
+
* Uses the active telemetry backend configured via `configureSyncTelemetry()`.
|
|
6
5
|
*/
|
|
6
|
+
import { getSyncTelemetry } from './telemetry.js';
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
* Non-blocking - defers logging to avoid blocking the event loop.
|
|
10
|
-
*
|
|
11
|
-
* On server (Node.js), uses setImmediate.
|
|
12
|
-
* On client (browser), uses setTimeout(0).
|
|
8
|
+
* Log a sync event using the currently configured telemetry backend.
|
|
13
9
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
typeof globalThis.setImmediate === 'function';
|
|
18
|
-
const defer = isNode
|
|
19
|
-
? (fn) => globalThis.setImmediate(fn)
|
|
20
|
-
: (fn) => setTimeout(fn, 0);
|
|
21
|
-
return (event) => {
|
|
22
|
-
defer(() => {
|
|
23
|
-
console.log(JSON.stringify({
|
|
24
|
-
timestamp: new Date().toISOString(),
|
|
25
|
-
...event,
|
|
26
|
-
}));
|
|
27
|
-
});
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Log a sync event using the default logger.
|
|
32
|
-
* For custom logging, create your own logger with createDefaultLogger pattern.
|
|
33
|
-
*/
|
|
34
|
-
export const logSyncEvent = createDefaultLogger();
|
|
10
|
+
export const logSyncEvent = (event) => {
|
|
11
|
+
getSyncTelemetry().log(event);
|
|
12
|
+
};
|
|
35
13
|
/**
|
|
36
14
|
* Create a timer for measuring operation duration.
|
|
37
15
|
* Returns the elapsed time in milliseconds when called.
|
|
@@ -45,16 +23,4 @@ export function createSyncTimer() {
|
|
|
45
23
|
const start = performance.now();
|
|
46
24
|
return () => Math.round(performance.now() - start);
|
|
47
25
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Create a scoped logger that automatically adds context to all events.
|
|
50
|
-
*
|
|
51
|
-
* @example
|
|
52
|
-
* const log = createScopedLogger({ userId: 'user123', shape: 'teams' });
|
|
53
|
-
* log({ event: 'pull_start' }); // Includes userId and shape
|
|
54
|
-
*/
|
|
55
|
-
export function createScopedLogger(context, baseLogger = logSyncEvent) {
|
|
56
|
-
return (event) => {
|
|
57
|
-
baseLogger({ ...context, ...event });
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
26
|
//# sourceMappingURL=logger.js.map
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAA2B,MAAM,aAAa,CAAC;AAYxE;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAe,CAAC,KAAK,EAAE,EAAE,CAAC;IACjD,gBAAgB,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAAA,CAC/B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,GAAiB;IAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;AAAA,CACpD"}
|
package/dist/proxy/types.d.ts
CHANGED
|
@@ -31,15 +31,6 @@ export interface ProxyResponse {
|
|
|
31
31
|
/** Error message (for 'error' type) */
|
|
32
32
|
error?: string;
|
|
33
33
|
}
|
|
34
|
-
/**
|
|
35
|
-
* Options for establishing a proxy connection.
|
|
36
|
-
*/
|
|
37
|
-
export interface ProxyConnectOptions {
|
|
38
|
-
/** Actor ID for oplog tracking */
|
|
39
|
-
actorId: string;
|
|
40
|
-
/** Client ID for oplog tracking */
|
|
41
|
-
clientId: string;
|
|
42
|
-
}
|
|
43
34
|
/**
|
|
44
35
|
* Handshake message sent when connection is established.
|
|
45
36
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/proxy/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IAChD,mCAAmC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/proxy/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IAChD,mCAAmC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,eAAe,CAAC;IACtB,uCAAuC;IACvC,EAAE,EAAE,OAAO,CAAC;IACZ,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
package/dist/schemas/index.js
CHANGED