@hraness/oh 0.4.0 → 0.4.2
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/LICENSE +3 -0
- package/README.md +12 -9
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +15590 -1705
- package/dist/index.js +15209 -261
- package/dist/libsql-model.d.ts +75 -0
- package/dist/libsql-model.d.ts.map +1 -0
- package/dist/libsql-platform.d.ts +24 -0
- package/dist/libsql-platform.d.ts.map +1 -0
- package/dist/libsql-program.d.ts +64 -0
- package/dist/libsql-program.d.ts.map +1 -0
- package/dist/libsql-runtime.d.ts +13 -0
- package/dist/libsql-runtime.d.ts.map +1 -0
- package/dist/libsql.d.ts +4 -36
- package/dist/libsql.d.ts.map +1 -1
- package/dist/libsql.js +16583 -1426
- package/dist/memory-authority-platform.d.ts +210 -0
- package/dist/memory-authority-platform.d.ts.map +1 -0
- package/dist/memory-authority-program.d.ts +15 -0
- package/dist/memory-authority-program.d.ts.map +1 -0
- package/dist/memory-authority-runtime.d.ts +4 -0
- package/dist/memory-authority-runtime.d.ts.map +1 -0
- package/dist/memory-core.d.ts +522 -0
- package/dist/memory-core.d.ts.map +1 -0
- package/dist/memory.d.ts +5 -445
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +18232 -4143
- package/dist/sdk.js +15266 -318
- package/dist/semantic-cloud.js +1 -260
- package/dist/semantic-model.d.ts +75 -0
- package/dist/semantic-model.d.ts.map +1 -0
- package/dist/semantic-platform.d.ts +32 -0
- package/dist/semantic-platform.d.ts.map +1 -0
- package/dist/semantic-program.d.ts +18 -0
- package/dist/semantic-program.d.ts.map +1 -0
- package/dist/semantic-runtime.d.ts +6 -0
- package/dist/semantic-runtime.d.ts.map +1 -0
- package/dist/semantic.d.ts +6 -57
- package/dist/semantic.d.ts.map +1 -1
- package/dist/semantic.js +15541 -514
- package/dist/sqlite/index.js +1148 -1378
- package/dist/sqlite/port.d.ts +1 -1
- package/dist/sqlite/port.d.ts.map +1 -1
- package/dist/sync-libsql-program.d.ts +5 -0
- package/dist/sync-libsql-program.d.ts.map +1 -0
- package/dist/sync-model.d.ts +60 -0
- package/dist/sync-model.d.ts.map +1 -0
- package/dist/sync-platform.d.ts +41 -0
- package/dist/sync-platform.d.ts.map +1 -0
- package/dist/sync-program.d.ts +11 -0
- package/dist/sync-program.d.ts.map +1 -0
- package/dist/sync-runtime.d.ts +6 -0
- package/dist/sync-runtime.d.ts.map +1 -0
- package/dist/sync.d.ts +5 -55
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +15174 -226
- package/package.json +7 -5
- package/skills/oh/SKILL.md +3 -2
- package/spec/v1/store.md +14 -0
- package/src/cli.test.ts +35 -0
- package/src/cli.ts +4 -3
- package/src/cloudflare-embedding.ts +1 -1
- package/src/libsql-lifecycle.test.ts +76 -0
- package/src/libsql-model.ts +350 -0
- package/src/libsql-platform.ts +51 -0
- package/src/libsql-program.ts +1583 -0
- package/src/libsql-runtime.ts +89 -0
- package/src/libsql-semantic-v2.ts +1 -1
- package/src/libsql-semantic.ts +1 -1
- package/src/libsql.test.ts +245 -0
- package/src/libsql.ts +26 -1698
- package/src/memory-authority-platform.ts +133 -0
- package/src/memory-authority-program.ts +309 -0
- package/src/memory-authority-runtime.ts +40 -0
- package/src/memory-core.ts +2401 -0
- package/src/memory.test.ts +55 -0
- package/src/memory.ts +68 -2759
- package/src/semantic-model.ts +142 -0
- package/src/semantic-platform.ts +130 -0
- package/src/semantic-program.ts +113 -0
- package/src/semantic-runtime.ts +53 -0
- package/src/semantic.test.ts +115 -1
- package/src/semantic.ts +14 -324
- package/src/sqlite/port.ts +1 -1
- package/src/sync-libsql-program.ts +170 -0
- package/src/sync-lifecycle.test.ts +110 -0
- package/src/sync-model.ts +530 -0
- package/src/sync-platform.ts +87 -0
- package/src/sync-program.ts +117 -0
- package/src/sync-runtime.ts +33 -0
- package/src/sync.ts +10 -765
package/dist/sqlite/port.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type OhChangesPageV1, type OhCommitInputV1, type OhDependencyClosureV1, type OhHeadRefV1, type OhHeadV1, type OhSnapshotV1, type OhStoreBindingV1, type OhStoreHostControlV1, type OhStoreProfileV1, type OhStoreV1, type OhStoreVerificationV1 } from "../store";
|
|
2
2
|
import type { OhOperationV1 } from "../operation";
|
|
3
|
-
import { type OhSyncBundleV1 } from "../sync";
|
|
3
|
+
import { type OhSyncBundleV1 } from "../sync-model";
|
|
4
4
|
import type { OhSqliteDatabase } from "./driver";
|
|
5
5
|
import { OhSqliteStore, type OhOperationImportResultV1 } from "./store";
|
|
6
6
|
export type OhSqliteStoreAuthorityOptionsV1 = Readonly<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/sqlite/port.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,YAAY,EAEjB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC3B,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,
|
|
1
|
+
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/sqlite/port.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { LibSqlSyncClient, type SyncTransportService } from "./sync-platform";
|
|
3
|
+
/** A shared initialization attempt retains its result for every admitted waiter. */
|
|
4
|
+
export declare const makeLibSqlSyncTransport: Effect.Effect<SyncTransportService, never, LibSqlSyncClient>;
|
|
5
|
+
//# sourceMappingURL=sync-libsql-program.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-libsql-program.d.ts","sourceRoot":"","sources":["../src/sync-libsql-program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAqB,MAAM,QAAQ,CAAC;AAM7D,OAAO,EAAE,gBAAgB,EAAiC,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAc7G,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,gBAAgB,CAoJ/F,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type Sha256Hex } from "./canonical";
|
|
2
|
+
import { type OhContractManifestV1 } from "./contract";
|
|
3
|
+
import { type OhOperationV1 } from "./operation";
|
|
4
|
+
import type { OhHeadRefV1 } from "./store";
|
|
5
|
+
export declare const OH_SYNC_PROTOCOL_V1: "oh.sync.v1";
|
|
6
|
+
export type OhSyncHeadV1 = Readonly<{
|
|
7
|
+
operationSha256: Sha256Hex | null;
|
|
8
|
+
sequence: number;
|
|
9
|
+
v: 1;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const OH_SYNC_BUNDLE_MAX_OPERATIONS_V1 = 1000;
|
|
12
|
+
export declare const OH_SYNC_BUNDLE_MAX_BYTES_V1: number;
|
|
13
|
+
type SyncIngressBudgetV1 = {
|
|
14
|
+
bytes: number;
|
|
15
|
+
maximumBytes: number;
|
|
16
|
+
maximumNodes: number;
|
|
17
|
+
nodes: number;
|
|
18
|
+
};
|
|
19
|
+
export declare function syncIngressBundleBudgetV1(spaceId: string): SyncIngressBudgetV1;
|
|
20
|
+
export declare function parseOhSyncHeadRefV1(value: unknown): OhHeadRefV1 | null;
|
|
21
|
+
export declare function parseOhSyncHeadV1(value: unknown): OhSyncHeadV1 | null;
|
|
22
|
+
export type OhSyncBundleV1 = Readonly<{
|
|
23
|
+
bundleSha256: Sha256Hex;
|
|
24
|
+
contractSha256: Sha256Hex;
|
|
25
|
+
operations: readonly OhOperationV1[];
|
|
26
|
+
protocol: typeof OH_SYNC_PROTOCOL_V1;
|
|
27
|
+
spaceId: string;
|
|
28
|
+
v: 1;
|
|
29
|
+
}>;
|
|
30
|
+
export declare function createOhSyncBundleV1(spaceId: string, operations: readonly OhOperationV1[], options?: Readonly<{
|
|
31
|
+
largestFittingPrefix?: boolean;
|
|
32
|
+
}>): OhSyncBundleV1;
|
|
33
|
+
export declare function parseOhSyncBundleV1(value: unknown): OhSyncBundleV1 | null;
|
|
34
|
+
export interface OhOperationSyncTransportV1 {
|
|
35
|
+
handshake(manifest: OhContractManifestV1): Promise<void>;
|
|
36
|
+
head(spaceId: string): Promise<OhSyncHeadV1>;
|
|
37
|
+
pull(spaceId: string, afterSequence: number, limit: number): Promise<OhSyncBundleV1>;
|
|
38
|
+
push(bundle: OhSyncBundleV1): Promise<OhSyncHeadV1>;
|
|
39
|
+
}
|
|
40
|
+
export type OhSyncResultV1 = Readonly<{
|
|
41
|
+
head: OhSyncHeadV1;
|
|
42
|
+
pulled: number;
|
|
43
|
+
pushed: number;
|
|
44
|
+
rounds: number;
|
|
45
|
+
v: 1;
|
|
46
|
+
}>;
|
|
47
|
+
export type LibSqlValueV1 = ArrayBuffer | Date | Uint8Array | bigint | boolean | null | number | string;
|
|
48
|
+
export type LibSqlStatementV1 = {
|
|
49
|
+
args?: LibSqlValueV1[];
|
|
50
|
+
sql: string;
|
|
51
|
+
};
|
|
52
|
+
export type LibSqlResultV1 = Readonly<{
|
|
53
|
+
rows: readonly (Readonly<Record<string, unknown>> | readonly unknown[])[];
|
|
54
|
+
}>;
|
|
55
|
+
export interface LibSqlClientV1 {
|
|
56
|
+
execute(statement: LibSqlStatementV1 | string): Promise<LibSqlResultV1>;
|
|
57
|
+
batch(statements: LibSqlStatementV1[], mode?: "deferred" | "read" | "write"): Promise<readonly LibSqlResultV1[]>;
|
|
58
|
+
}
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=sync-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-model.d.ts","sourceRoot":"","sources":["../src/sync-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Context, Effect, Layer } from "effect";
|
|
2
|
+
import type { OhSqliteStore } from "./sqlite/store";
|
|
3
|
+
import type { LibSqlClientV1, LibSqlResultV1, LibSqlStatementV1, OhOperationSyncTransportV1, OhSyncBundleV1, OhSyncHeadV1 } from "./sync-model";
|
|
4
|
+
import type { OhContractManifestV1 } from "./contract";
|
|
5
|
+
export type SyncFailure = Readonly<{
|
|
6
|
+
_tag: "StoreFailure" | "TransportFailure" | "ValidationFailure" | "SyncConflict" | "RoundLimit";
|
|
7
|
+
/** Original rejection identity is retained only at the public boundary. */
|
|
8
|
+
cause: unknown;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function syncInvalid(cause: unknown): SyncFailure;
|
|
11
|
+
export interface SyncTransportService {
|
|
12
|
+
handshake(manifest: OhContractManifestV1): Effect.Effect<void, SyncFailure>;
|
|
13
|
+
head(spaceId: string): Effect.Effect<OhSyncHeadV1, SyncFailure>;
|
|
14
|
+
pull(spaceId: string, afterSequence: number, limit: number): Effect.Effect<OhSyncBundleV1, SyncFailure>;
|
|
15
|
+
push(bundle: OhSyncBundleV1): Effect.Effect<OhSyncHeadV1, SyncFailure>;
|
|
16
|
+
}
|
|
17
|
+
declare const SyncTransport_base: Context.TagClass<SyncTransport, "@hraness/oh/SyncTransport", SyncTransportService>;
|
|
18
|
+
export declare class SyncTransport extends SyncTransport_base {
|
|
19
|
+
}
|
|
20
|
+
export interface SyncStoreService {
|
|
21
|
+
readonly spaceId: string;
|
|
22
|
+
readonly head: Effect.Effect<ReturnType<OhSqliteStore["head"]>, SyncFailure>;
|
|
23
|
+
importOperations(input: Parameters<OhSqliteStore["importOperations"]>[0]): Effect.Effect<ReturnType<OhSqliteStore["importOperations"]>, SyncFailure>;
|
|
24
|
+
changesSince(head: Parameters<OhSqliteStore["changesSince"]>[0], options: Parameters<OhSqliteStore["changesSince"]>[1]): Effect.Effect<ReturnType<OhSqliteStore["changesSince"]>, SyncFailure>;
|
|
25
|
+
updateSyncState(remoteId: string, state: Parameters<OhSqliteStore["updateSyncState"]>[1]): Effect.Effect<void, SyncFailure>;
|
|
26
|
+
}
|
|
27
|
+
declare const SyncStore_base: Context.TagClass<SyncStore, "@hraness/oh/SyncStore", SyncStoreService>;
|
|
28
|
+
export declare class SyncStore extends SyncStore_base {
|
|
29
|
+
}
|
|
30
|
+
export declare function syncStoreLive(store: OhSqliteStore): Layer.Layer<SyncStore>;
|
|
31
|
+
export declare function syncTransportLive(transport: OhOperationSyncTransportV1): Layer.Layer<SyncTransport>;
|
|
32
|
+
export interface LibSqlSyncClientService {
|
|
33
|
+
execute(statement: LibSqlStatementV1 | string): Effect.Effect<LibSqlResultV1, SyncFailure>;
|
|
34
|
+
batch(statements: LibSqlStatementV1[], mode: "deferred" | "read" | "write"): Effect.Effect<readonly LibSqlResultV1[], SyncFailure>;
|
|
35
|
+
}
|
|
36
|
+
declare const LibSqlSyncClient_base: Context.TagClass<LibSqlSyncClient, "@hraness/oh/LibSqlSyncClient", LibSqlSyncClientService>;
|
|
37
|
+
export declare class LibSqlSyncClient extends LibSqlSyncClient_base {
|
|
38
|
+
}
|
|
39
|
+
export declare function libSqlSyncClientLive(client: LibSqlClientV1): Layer.Layer<LibSqlSyncClient>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=sync-platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-platform.d.ts","sourceRoot":"","sources":["../src/sync-platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
import { type OhSyncResultV1 } from "./sync-model";
|
|
3
|
+
import { SyncStore, SyncTransport, type SyncFailure } from "./sync-platform";
|
|
4
|
+
export type SyncOptions = Readonly<{
|
|
5
|
+
batchSize?: number;
|
|
6
|
+
maximumRounds?: number;
|
|
7
|
+
remoteId?: string;
|
|
8
|
+
}>;
|
|
9
|
+
/** Only the store adapter can enter the synchronous SQLite transaction. */
|
|
10
|
+
export declare function synchronize(options?: SyncOptions): Effect.Effect<OhSyncResultV1, SyncFailure, SyncStore | SyncTransport>;
|
|
11
|
+
//# sourceMappingURL=sync-program.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-program.d.ts","sourceRoot":"","sources":["../src/sync-program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EACc,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE7E,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEtG,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,OAAO,GAAE,WAAgB,GACnD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,EAAE,SAAS,GAAG,aAAa,CAAC,CAyGtE"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { OhSqliteStore } from "./sqlite/store";
|
|
2
|
+
import type { LibSqlClientV1, OhOperationSyncTransportV1, OhSyncResultV1 } from "./sync-model";
|
|
3
|
+
import { type SyncOptions } from "./sync-program";
|
|
4
|
+
export declare function runSyncBoundary(store: OhSqliteStore, transport: OhOperationSyncTransportV1, options: SyncOptions): Promise<OhSyncResultV1>;
|
|
5
|
+
export declare function makeLibSqlSyncBoundary(client: LibSqlClientV1): OhOperationSyncTransportV1;
|
|
6
|
+
//# sourceMappingURL=sync-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-runtime.d.ts","sourceRoot":"","sources":["../src/sync-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG/F,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAW/D,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,0BAA0B,EACzF,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAK/C;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,0BAA0B,CAQzF"}
|
package/dist/sync.d.ts
CHANGED
|
@@ -1,63 +1,13 @@
|
|
|
1
|
-
import { type Sha256Hex } from "./canonical";
|
|
2
|
-
import { type OhContractManifestV1 } from "./contract";
|
|
3
|
-
import { type OhOperationV1 } from "./operation";
|
|
4
1
|
import type { OhSqliteStore } from "./sqlite/store";
|
|
5
|
-
import type {
|
|
6
|
-
export
|
|
7
|
-
export type OhSyncHeadV1
|
|
8
|
-
|
|
9
|
-
sequence: number;
|
|
10
|
-
v: 1;
|
|
11
|
-
}>;
|
|
12
|
-
export declare const OH_SYNC_BUNDLE_MAX_BYTES_V1: number;
|
|
13
|
-
export declare function parseOhSyncHeadRefV1(value: unknown): OhHeadRefV1 | null;
|
|
14
|
-
export declare function parseOhSyncHeadV1(value: unknown): OhSyncHeadV1 | null;
|
|
15
|
-
export type OhSyncBundleV1 = Readonly<{
|
|
16
|
-
bundleSha256: Sha256Hex;
|
|
17
|
-
contractSha256: Sha256Hex;
|
|
18
|
-
operations: readonly OhOperationV1[];
|
|
19
|
-
protocol: typeof OH_SYNC_PROTOCOL_V1;
|
|
20
|
-
spaceId: string;
|
|
21
|
-
v: 1;
|
|
22
|
-
}>;
|
|
23
|
-
export declare function createOhSyncBundleV1(spaceId: string, operations: readonly OhOperationV1[], options?: Readonly<{
|
|
24
|
-
largestFittingPrefix?: boolean;
|
|
25
|
-
}>): OhSyncBundleV1;
|
|
26
|
-
export declare function parseOhSyncBundleV1(value: unknown): OhSyncBundleV1 | null;
|
|
27
|
-
export interface OhOperationSyncTransportV1 {
|
|
28
|
-
handshake(manifest: OhContractManifestV1): Promise<void>;
|
|
29
|
-
head(spaceId: string): Promise<OhSyncHeadV1>;
|
|
30
|
-
pull(spaceId: string, afterSequence: number, limit: number): Promise<OhSyncBundleV1>;
|
|
31
|
-
push(bundle: OhSyncBundleV1): Promise<OhSyncHeadV1>;
|
|
32
|
-
}
|
|
33
|
-
export type OhSyncResultV1 = Readonly<{
|
|
34
|
-
head: OhSyncHeadV1;
|
|
35
|
-
pulled: number;
|
|
36
|
-
pushed: number;
|
|
37
|
-
rounds: number;
|
|
38
|
-
v: 1;
|
|
39
|
-
}>;
|
|
40
|
-
/**
|
|
41
|
-
* Reconciles only fast-forward histories. Concurrent heads fail closed and leave
|
|
42
|
-
* both logs intact for an explicit merge operation.
|
|
43
|
-
*/
|
|
2
|
+
import type { LibSqlClientV1, OhOperationSyncTransportV1, OhSyncResultV1 } from "./sync-model";
|
|
3
|
+
export { OH_SYNC_PROTOCOL_V1, OH_SYNC_BUNDLE_MAX_BYTES_V1, createOhSyncBundleV1, parseOhSyncHeadRefV1, parseOhSyncHeadV1, parseOhSyncBundleV1 } from "./sync-model";
|
|
4
|
+
export type { OhSyncHeadV1, OhSyncBundleV1, OhOperationSyncTransportV1, OhSyncResultV1, LibSqlValueV1, LibSqlStatementV1, LibSqlResultV1, LibSqlClientV1 } from "./sync-model";
|
|
5
|
+
/** Reconciles only fast-forward histories and preserves the original Promise boundary. */
|
|
44
6
|
export declare function synchronizeOhStoreV1(store: OhSqliteStore, transport: OhOperationSyncTransportV1, options?: Readonly<{
|
|
45
7
|
batchSize?: number;
|
|
46
8
|
maximumRounds?: number;
|
|
47
9
|
remoteId?: string;
|
|
48
10
|
}>): Promise<OhSyncResultV1>;
|
|
49
|
-
|
|
50
|
-
export type LibSqlStatementV1 = {
|
|
51
|
-
args?: LibSqlValueV1[];
|
|
52
|
-
sql: string;
|
|
53
|
-
};
|
|
54
|
-
export type LibSqlResultV1 = Readonly<{
|
|
55
|
-
rows: readonly (Readonly<Record<string, unknown>> | readonly unknown[])[];
|
|
56
|
-
}>;
|
|
57
|
-
export interface LibSqlClientV1 {
|
|
58
|
-
execute(statement: LibSqlStatementV1 | string): Promise<LibSqlResultV1>;
|
|
59
|
-
batch(statements: LibSqlStatementV1[], mode?: "deferred" | "read" | "write"): Promise<readonly LibSqlResultV1[]>;
|
|
60
|
-
}
|
|
61
|
-
/** A zero-dependency adapter for clients implementing @libsql/client's execute/batch shape. */
|
|
11
|
+
/** Bundled-runtime adapter for clients implementing @libsql/client's execute/batch shape. */
|
|
62
12
|
export declare function createLibSqlOperationSyncTransportV1(client: LibSqlClientV1): OhOperationSyncTransportV1;
|
|
63
13
|
//# sourceMappingURL=sync.d.ts.map
|
package/dist/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG/F,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,oBAAoB,EAC7E,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACrF,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,0BAA0B,EAAE,cAAc,EACpF,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEzF,0FAA0F;AAC1F,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,0BAA0B,EACrC,OAAO,GAAE,QAAQ,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAM,GACxF,OAAO,CAAC,cAAc,CAAC,CAEzB;AAED,6FAA6F;AAC7F,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,cAAc,GAAG,0BAA0B,CAEvG"}
|