@doync/client 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +1 -17
  2. package/dist/adapter.cjs +1 -1
  3. package/dist/adapter.d.cts +1 -1
  4. package/dist/adapter.d.ts +1 -1
  5. package/dist/adapter.js +1 -1
  6. package/dist/adapter.js.map +1 -1
  7. package/dist/client-Bv6QMenB.cjs +15 -0
  8. package/dist/client-Db0Jfwuy.js +16 -0
  9. package/dist/client-Db0Jfwuy.js.map +1 -0
  10. package/dist/{client-CNyLMCw0.d.ts → client-OAVaC3pt.d.ts} +79 -91
  11. package/dist/client-OAVaC3pt.d.ts.map +1 -0
  12. package/dist/{client-DHXO0dbf.d.cts → client-OPt8Axyp.d.cts} +79 -91
  13. package/dist/client-OPt8Axyp.d.cts.map +1 -0
  14. package/dist/index.d.cts +3 -2
  15. package/dist/index.d.ts +3 -2
  16. package/dist/internal.cjs +1 -1
  17. package/dist/internal.d.cts +3 -12
  18. package/dist/internal.d.cts.map +1 -1
  19. package/dist/internal.d.ts +3 -12
  20. package/dist/internal.d.ts.map +1 -1
  21. package/dist/internal.js +1 -1
  22. package/package.json +3 -3
  23. package/src/client.ts +82 -32
  24. package/src/engine.ts +188 -134
  25. package/src/index.ts +1 -6
  26. package/src/internal.ts +4 -4
  27. package/src/migrate.ts +1 -1
  28. package/src/replica/db/0002_prefs_table.sql +9 -0
  29. package/src/replica/db/meta/0002_snapshot.json +191 -0
  30. package/src/replica/db/meta/_journal.json +7 -0
  31. package/src/replica/db/schema.ts +12 -3
  32. package/src/replica/index.ts +5 -4
  33. package/src/replica/meta.ts +23 -0
  34. package/src/replica/track.ts +20 -39
  35. package/src/socket-reconnect.ts +29 -5
  36. package/dist/client-C6jAdhbe.cjs +0 -15
  37. package/dist/client-CNyLMCw0.d.ts.map +0 -1
  38. package/dist/client-ClV8ce6X.js +0 -16
  39. package/dist/client-ClV8ce6X.js.map +0 -1
  40. package/dist/client-DHXO0dbf.d.cts.map +0 -1
  41. package/src/client-mutation-registry.ts +0 -31
  42. package/src/mutations.ts +0 -96
@@ -1 +0,0 @@
1
- {"version":3,"file":"client-DHXO0dbf.d.cts","names":["Input","Output","StandardTypedV1","Props","version","vendor","types","Types","input","output","InferInput","Schema","NonNullable","InferOutput","StandardSchemaV1","validate","value","Options","options","Result","Promise","SuccessResult","FailureResult","issues","libraryOptions","Record","ReadonlyArray","Issue","message","path","PropertyKey","PathSegment","key","StandardJSONSchemaV1","jsonSchema","Converter","Target","target"],"sources":["../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../src/port.ts","../src/mutations.ts","../src/socket.ts","../src/replica/meta.ts","../src/replica/stamps.ts","../src/replica/index.ts","../src/engine.ts","../src/client.ts"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Flatten a shared MutationTree to the engine's name-keyed client mutation
3
- * registry (ADR-0019/0021, #167). Internal helper for {@link createClient} and
4
- * `@doync/web` `createWorker` — consumers pass a MutationTree; the lib
5
- * flattens.
6
- */
7
-
8
- import type { MutationTree } from '@doync/core'
9
-
10
- import { flattenMutations } from '@doync/core/internal'
11
-
12
- import type { ClientMutation, ClientMutationRegistry } from './mutations'
13
-
14
- /**
15
- * Flat `dottedName → {args, handler}` registry the client engine resolves
16
- * optimistic bodies against (ADR-0019). Feed the SHARED tree so no `.server.ts`
17
- * override enters the client bundle. Handler may return a promise (exclusive
18
- * chain awaits); engine validates args at `mutate()` via carried schema.
19
- */
20
- export function toClientMutationRegistry(
21
- tree: MutationTree,
22
- ): ClientMutationRegistry {
23
- const out: Record<string, ClientMutation> = {}
24
- for (const [name, def] of Object.entries(flattenMutations(tree))) {
25
- out[name] = {
26
- args: def.args,
27
- handler: (args, ctx, sql) => def.body(args, ctx, sql),
28
- }
29
- }
30
- return out
31
- }
package/src/mutations.ts DELETED
@@ -1,96 +0,0 @@
1
- import type { SqlValue } from '@doync/core'
2
- import type { StandardSchemaV1 } from '@standard-schema/spec'
3
-
4
- import {
5
- assertWireRepresentable,
6
- canonicalizeArgsBinary,
7
- } from '@doync/core/internal'
8
-
9
- import type { LocalRow } from './port'
10
-
11
- /**
12
- * Write surface a client mutation body runs against: one parameterized
13
- * statement at a time inside the mutation's savepoint, returning its rows. Same
14
- * shape the Origin uses, so a shared body runs identically on device and
15
- * server.
16
- */
17
- export interface ClientMutationTx {
18
- exec<T extends LocalRow = LocalRow>(query: string, ...params: SqlValue[]): T[]
19
- }
20
-
21
- /**
22
- * Client mutation body `(args, ctx, sql)`. Must be deterministic and DB-only
23
- * (may still be async for local work). Generate ids on the client and pass them
24
- * in `args` — the body is replayed on rebase. External I/O belongs in a server
25
- * override, not the client bundle.
26
- */
27
- export type ClientMutationHandler = (
28
- args: unknown,
29
- ctx: Record<string, unknown>,
30
- sql: ClientMutationTx,
31
- ) => void | Promise<void>
32
-
33
- /**
34
- * A registered client mutation: body plus optional standard-schema args
35
- * validator applied at `mutate()` time. A bare handler is also accepted.
36
- */
37
- export interface ClientMutation {
38
- readonly args?: StandardSchemaV1
39
- readonly handler: ClientMutationHandler
40
- }
41
-
42
- /**
43
- * Name-keyed client mutation registry. Keys match the server's dotted names so
44
- * a push reaches the matching authoritative body.
45
- */
46
- export type ClientMutationRegistry = Readonly<
47
- Record<string, ClientMutation | ClientMutationHandler>
48
- >
49
-
50
- /**
51
- * Normalize a registry entry (bare handler or `{args, handler}`) to the object
52
- * form.
53
- */
54
- export function asClientMutation(
55
- entry: ClientMutation | ClientMutationHandler,
56
- ): ClientMutation {
57
- return typeof entry === 'function' ? { handler: entry } : entry
58
- }
59
-
60
- /**
61
- * Validate `args` through a standard-schema synchronously (mirrors
62
- * `@doync/core` query-args). Async validators refuse loudly — the body is
63
- * deterministic on both ends. Returns validated value or throws.
64
- */
65
- export function validateMutationArgs(
66
- schema: StandardSchemaV1,
67
- args: unknown,
68
- ): unknown {
69
- // Unrepresentable leaves before schema (ADR-0031 / #231/#232). Binary
70
- // allowed here; bare handlers skip this path so engine.mutate still guards
71
- // every mutation. Double-run of guard+canonicalize on schema paths is
72
- // intentional and cheap.
73
- assertWireRepresentable(args, 'mutation args', { allowBinary: true })
74
- // TypedArray/DataView → ArrayBuffer before standard-schema (ADR-0031 / #231).
75
- const canonical = canonicalizeArgsBinary(args)
76
- const result = schema['~standard'].validate(canonical)
77
- if (result instanceof Promise) {
78
- throw new Error(
79
- 'doync: async standard-schema validation is not supported for mutation args — use a synchronous validator',
80
- )
81
- }
82
- if (result.issues !== undefined) {
83
- const detail = result.issues
84
- .map((issue) => {
85
- const path = (issue.path ?? [])
86
- .map((segment) =>
87
- typeof segment === 'object' ? String(segment.key) : String(segment),
88
- )
89
- .join('.')
90
- return path === '' ? issue.message : `${path}: ${issue.message}`
91
- })
92
- .join('; ')
93
- throw new Error(`doync: mutation args failed validation — ${detail}`)
94
- }
95
- return result.value
96
- }