@graview/core 0.1.57 → 0.1.58

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 (71) hide show
  1. package/README.md +12 -4
  2. package/dist/cli/document-schema.js +1 -1
  3. package/dist/cli/document-schema.js.map +1 -1
  4. package/dist/document/compile.d.ts.map +1 -1
  5. package/dist/document/compile.js +4 -0
  6. package/dist/document/compile.js.map +1 -1
  7. package/dist/document/compiled.d.ts +2 -0
  8. package/dist/document/compiled.d.ts.map +1 -1
  9. package/dist/document/compiled.js +2 -0
  10. package/dist/document/compiled.js.map +1 -1
  11. package/dist/document/connection-findings.d.ts.map +1 -1
  12. package/dist/document/connection-findings.js +189 -25
  13. package/dist/document/connection-findings.js.map +1 -1
  14. package/dist/document/connection-spec.d.ts +42 -2
  15. package/dist/document/connection-spec.d.ts.map +1 -1
  16. package/dist/document/connection-spec.js +64 -19
  17. package/dist/document/connection-spec.js.map +1 -1
  18. package/dist/document/kept-in-step.d.ts +7 -0
  19. package/dist/document/kept-in-step.d.ts.map +1 -0
  20. package/dist/document/kept-in-step.js +28 -0
  21. package/dist/document/kept-in-step.js.map +1 -0
  22. package/dist/document/schema.d.ts +5 -5
  23. package/dist/document.schema.json +243 -98
  24. package/dist/mutations/derive-edits.d.ts +4 -2
  25. package/dist/mutations/derive-edits.d.ts.map +1 -1
  26. package/dist/mutations/derive-edits.js +13 -4
  27. package/dist/mutations/derive-edits.js.map +1 -1
  28. package/dist/scaffold/from-template.d.ts.map +1 -1
  29. package/dist/scaffold/from-template.js +2 -1
  30. package/dist/scaffold/from-template.js.map +1 -1
  31. package/dist/schema/types.d.ts +10 -0
  32. package/dist/schema/types.d.ts.map +1 -1
  33. package/dist/sync/connection-filter.d.ts +2 -2
  34. package/dist/sync/connection-filter.d.ts.map +1 -1
  35. package/dist/sync/connection-filter.js.map +1 -1
  36. package/dist/sync/connection.d.ts +72 -28
  37. package/dist/sync/connection.d.ts.map +1 -1
  38. package/dist/sync/connection.js +255 -43
  39. package/dist/sync/connection.js.map +1 -1
  40. package/dist/sync/creating-act.d.ts +20 -0
  41. package/dist/sync/creating-act.d.ts.map +1 -0
  42. package/dist/sync/creating-act.js +29 -0
  43. package/dist/sync/creating-act.js.map +1 -0
  44. package/dist/sync/engine.d.ts +83 -1
  45. package/dist/sync/engine.d.ts.map +1 -1
  46. package/dist/sync/engine.js +269 -32
  47. package/dist/sync/engine.js.map +1 -1
  48. package/dist/sync/google-calendar.d.ts +3 -0
  49. package/dist/sync/google-calendar.d.ts.map +1 -1
  50. package/dist/sync/index.d.ts +10 -4
  51. package/dist/sync/index.d.ts.map +1 -1
  52. package/dist/sync/index.js +6 -2
  53. package/dist/sync/index.js.map +1 -1
  54. package/dist/sync/notion-stub.d.ts +81 -0
  55. package/dist/sync/notion-stub.d.ts.map +1 -0
  56. package/dist/sync/notion-stub.js +467 -0
  57. package/dist/sync/notion-stub.js.map +1 -0
  58. package/dist/sync/notion-types.d.ts +23 -0
  59. package/dist/sync/notion-types.d.ts.map +1 -0
  60. package/dist/sync/notion-types.js +49 -0
  61. package/dist/sync/notion-types.js.map +1 -0
  62. package/dist/sync/notion.d.ts +98 -0
  63. package/dist/sync/notion.d.ts.map +1 -0
  64. package/dist/sync/notion.js +477 -0
  65. package/dist/sync/notion.js.map +1 -0
  66. package/dist/sync/types.d.ts +38 -0
  67. package/dist/sync/types.d.ts.map +1 -1
  68. package/dist/sync/types.js.map +1 -1
  69. package/dist/version.d.ts +1 -1
  70. package/dist/version.js +1 -1
  71. package/package.json +1 -1
@@ -0,0 +1,29 @@
1
+ /** The arguments an act's input requires, when its input is an object whose shape can be read. */
2
+ function requiredArgs(input) {
3
+ const shape = input?._zod?.def?.shape;
4
+ if (!shape)
5
+ return undefined;
6
+ return Object.keys(shape).filter((arg) => shape[arg]?._zod?.optin !== "optional");
7
+ }
8
+ /** The act a record of `kind` from another system is made through, given the fields the connection maps. */
9
+ export function creatingActFor(mutations, kind, mapped) {
10
+ const creating = mutations.filter((mutation) => (mutation.creates ?? []).includes(kind));
11
+ const given = new Set([...mapped, "id"]);
12
+ const fitting = [];
13
+ const unfit = [];
14
+ for (const mutation of creating) {
15
+ const subject = mutation.subject;
16
+ if (subject) {
17
+ unfit.push({ name: mutation.name, on: subject.kinds === "*" ? [] : subject.kinds });
18
+ continue;
19
+ }
20
+ const asks = (requiredArgs(mutation.input) ?? []).filter((arg) => !given.has(arg));
21
+ if (asks.length > 0)
22
+ unfit.push({ name: mutation.name, asks });
23
+ else
24
+ fitting.push(mutation.name);
25
+ }
26
+ const act = fitting.find((name) => name === `add-${kind}`) ?? fitting[0];
27
+ return { ...(act ? { act } : {}), unfit, creates: creating.length > 0 };
28
+ }
29
+ //# sourceMappingURL=creating-act.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creating-act.js","sourceRoot":"","sources":["../../src/sync/creating-act.ts"],"names":[],"mappings":"AAmCA,kGAAkG;AAClG,SAAS,YAAY,CAAC,KAAc;IAClC,MAAM,KAAK,GAAI,KAAoG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;IACtI,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,UAAU,CAAC,CAAC;AACpF,CAAC;AAED,4GAA4G;AAC5G,MAAM,UAAU,cAAc,CAAC,SAA2C,EAAE,IAAY,EAAE,MAAyB;IACjH,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACzC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAuB,EAAE,CAAC;IACrC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACpF,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACnF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;;YAC1D,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AAC1E,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { PlannedChange, Store } from "../store.js";
2
2
  import type { AnySchema } from "../schema/schema.js";
3
- import { type ConflictPolicy, type RemoteSystem, type RemoteWrite, type SyncConflict, type SyncMapping, type SyncState } from "./types.js";
3
+ import type { MutationCall } from "../mutations/types.js";
4
+ import { type ConflictPolicy, type LinkResolver, type RemoteSystem, type RemoteWrite, type SyncConflict, type SyncMapping, type SyncState } from "./types.js";
4
5
  /** A conflict the engine's policy settled, and the side it took. */
5
6
  export type SettledConflict = SyncConflict & {
6
7
  readonly took: "ours" | "theirs";
@@ -41,6 +42,12 @@ export interface SyncReport {
41
42
  /** Records the remote deleted: removed here through `removeInbound`, or, without one, kept here and no longer synced. */
42
43
  readonly gone: readonly string[];
43
44
  readonly offline: boolean;
45
+ /**
46
+ * What the remote said when it could not be reached, in its transport's
47
+ * words — a secret it refused, a database not shared — so a host says
48
+ * why rather than only that. Absent when the run reached it.
49
+ */
50
+ readonly problem?: string;
44
51
  readonly state: SyncState;
45
52
  }
46
53
  /**
@@ -58,6 +65,8 @@ export interface SyncRefusal {
58
65
  readonly id?: string;
59
66
  }
60
67
  export type { SyncConflict } from "./types.js";
68
+ /** A relation's value as both sides compare it: the remote ids it reaches, once each, sorted; none is `null`. */
69
+ export declare function edgeValue(ids: unknown): string[] | null;
61
70
  export interface SyncOptions<S extends AnySchema> {
62
71
  readonly store: Store<S>;
63
72
  readonly mapping: SyncMapping;
@@ -110,7 +119,43 @@ export interface SyncOptions<S extends AnySchema> {
110
119
  readonly name: string;
111
120
  readonly args: Record<string, unknown>;
112
121
  } | null;
122
+ /**
123
+ * WHERE A RECORD A RELATION REACHES IS FOUND, by either id: every engine
124
+ * of the app when its relations reach records another engine keeps
125
+ * (`syncLinks`). Absent: this engine's own links.
126
+ */
127
+ readonly links?: LinkResolver;
128
+ /** The act that links a record to another, for a relation the remote linked (`connect-<kind>-<edge>`). Required for a mapping with `edges`. */
129
+ connectInbound?(call: {
130
+ readonly localId: string;
131
+ readonly kind: string;
132
+ readonly edge: string;
133
+ readonly to: string;
134
+ }): MutationCall | null;
135
+ /** The act that unlinks them, for a link the remote took away (`disconnect-<kind>-<edge>`). Absent: the link stays here. */
136
+ disconnectInbound?(call: {
137
+ readonly localId: string;
138
+ readonly kind: string;
139
+ readonly edge: string;
140
+ readonly to: string;
141
+ }): MutationCall | null;
113
142
  }
143
+ /**
144
+ * ONE PLACE TO FIND A RECORD BY EITHER ID, over every engine added to it:
145
+ * what an app's engines share when their relations reach each other's
146
+ * records (one Notion connection per table, each table's relations to
147
+ * another's pages). Read live, so a record another engine linked a moment
148
+ * ago is found; an id is matched as written, then as Notion writes one
149
+ * (hyphenated, lower case).
150
+ */
151
+ export interface SharedLinks extends LinkResolver {
152
+ /** Adds an engine whose links are looked in. */
153
+ add(engine: {
154
+ linkOf(localId: string): string | undefined;
155
+ linkedTo(id: string): string | undefined;
156
+ }): void;
157
+ }
158
+ export declare function sharedLinks(): SharedLinks;
114
159
  /**
115
160
  * Two-way sync, on top of the op log rather than beside it.
116
161
  *
@@ -131,6 +176,8 @@ export interface SyncOptions<S extends AnySchema> {
131
176
  export declare class SyncEngine<S extends AnySchema> {
132
177
  private state;
133
178
  private readonly options;
179
+ private readonly resolver;
180
+ private reverse?;
134
181
  constructor(options: SyncOptions<S>, state?: SyncState);
135
182
  get snapshot(): SyncState;
136
183
  private get policy();
@@ -143,6 +190,41 @@ export declare class SyncEngine<S extends AnySchema> {
143
190
  * an act is even offered.
144
191
  */
145
192
  refuses(kind: string): string | undefined;
193
+ /** The remote's id of a record this engine linked. */
194
+ linkOf(localId: string): string | undefined;
195
+ /** Our id of the remote's record, if this engine linked it. */
196
+ linkedTo(id: string): string | undefined;
197
+ /**
198
+ * A NODE'S VALUES AS THE REMOTE IS COMPARED WITH: its mapped fields, and
199
+ * each mapped relation as the remote ids of the records it reaches — those
200
+ * linked, and those held until they are — sorted. A record it reaches that
201
+ * no engine has linked yet (made here, not sent) is not in it until it is.
202
+ */
203
+ private valuesOf;
204
+ /**
205
+ * THE ACTS ONE CHANGE COMING IN LANDS THROUGH, in one batch: the record
206
+ * made (`create`) or its fields edited (`applyInbound`), then each of its
207
+ * relations brought to what the remote says — links it lost taken away
208
+ * first, so a relation of one is never refused for holding two — and the
209
+ * remote ids no engine has linked yet, to hold.
210
+ */
211
+ private inboundCalls;
212
+ /** Keeps what a landed change left to link, by our id and edge. */
213
+ private hold;
214
+ /**
215
+ * LANDS ONE CHANGE COMING IN through its acts, authored by the remote's
216
+ * system, and holds the links it could not make yet. Undefined when this
217
+ * store refused it (said in `refused`, or thrown without it).
218
+ */
219
+ private landInbound;
220
+ /**
221
+ * LINKS WHAT WAS HELD, now that its records are linked — by this engine
222
+ * or another of the app's. Nothing is sent for it: the relation's value
223
+ * already held those ids. A host running several engines calls this on
224
+ * each after a pass, so the order they ran in does not matter; `run`
225
+ * calls it too. Returns the records it linked.
226
+ */
227
+ resolveHeld(refused?: SyncRefusal[]): string[];
146
228
  /** Every node that participates in the sync, by our id. */
147
229
  private participants;
148
230
  /** A link for every participant whose mapping names its version field and that carries one. */
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"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"}