@graview/core 0.1.57 → 0.1.59
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 +12 -4
- package/dist/archived-seen.d.ts.map +1 -1
- package/dist/archived-seen.js +7 -3
- package/dist/archived-seen.js.map +1 -1
- package/dist/catalog.js +1 -1
- package/dist/catalog.js.map +1 -1
- package/dist/cli/check/field-sight.d.ts.map +1 -1
- package/dist/cli/check/field-sight.js +3 -1
- package/dist/cli/check/field-sight.js.map +1 -1
- package/dist/cli/document-schema.js +1 -1
- package/dist/cli/document-schema.js.map +1 -1
- package/dist/document/brand.js +3 -3
- package/dist/document/brand.js.map +1 -1
- package/dist/document/compile.d.ts.map +1 -1
- package/dist/document/compile.js +4 -0
- package/dist/document/compile.js.map +1 -1
- package/dist/document/compiled.d.ts +2 -0
- package/dist/document/compiled.d.ts.map +1 -1
- package/dist/document/compiled.js +22 -1
- package/dist/document/compiled.js.map +1 -1
- package/dist/document/connection-findings.d.ts.map +1 -1
- package/dist/document/connection-findings.js +189 -25
- package/dist/document/connection-findings.js.map +1 -1
- package/dist/document/connection-spec.d.ts +42 -2
- package/dist/document/connection-spec.d.ts.map +1 -1
- package/dist/document/connection-spec.js +64 -19
- package/dist/document/connection-spec.js.map +1 -1
- package/dist/document/kept-in-step.d.ts +7 -0
- package/dist/document/kept-in-step.d.ts.map +1 -0
- package/dist/document/kept-in-step.js +28 -0
- package/dist/document/kept-in-step.js.map +1 -0
- package/dist/document/schema.d.ts +5 -5
- package/dist/document.schema.json +243 -98
- package/dist/field-sight.js +4 -2
- package/dist/field-sight.js.map +1 -1
- package/dist/fresh.d.ts +26 -0
- package/dist/fresh.d.ts.map +1 -0
- package/dist/fresh.js +33 -0
- package/dist/fresh.js.map +1 -0
- package/dist/friction.d.ts +7 -0
- package/dist/friction.d.ts.map +1 -1
- package/dist/friction.js +2 -1
- package/dist/friction.js.map +1 -1
- package/dist/import/rows.d.ts.map +1 -1
- package/dist/import/rows.js +20 -10
- package/dist/import/rows.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/linked.d.ts.map +1 -1
- package/dist/linked.js +7 -1
- package/dist/linked.js.map +1 -1
- package/dist/mutations/define-mutation.d.ts +14 -0
- package/dist/mutations/define-mutation.d.ts.map +1 -1
- package/dist/mutations/define-mutation.js +9 -4
- package/dist/mutations/define-mutation.js.map +1 -1
- package/dist/mutations/derive-edits.d.ts +4 -2
- package/dist/mutations/derive-edits.d.ts.map +1 -1
- package/dist/mutations/derive-edits.js +17 -5
- package/dist/mutations/derive-edits.js.map +1 -1
- package/dist/mutations/derive-repeats.d.ts +8 -0
- package/dist/mutations/derive-repeats.d.ts.map +1 -1
- package/dist/mutations/derive-repeats.js +29 -4
- package/dist/mutations/derive-repeats.js.map +1 -1
- package/dist/mutations/type-text.d.ts +6 -1
- package/dist/mutations/type-text.d.ts.map +1 -1
- package/dist/mutations/type-text.js +8 -1
- package/dist/mutations/type-text.js.map +1 -1
- package/dist/mutations/types.d.ts +10 -0
- package/dist/mutations/types.d.ts.map +1 -1
- package/dist/ops/lineage.d.ts +12 -1
- package/dist/ops/lineage.d.ts.map +1 -1
- package/dist/ops/lineage.js +9 -2
- package/dist/ops/lineage.js.map +1 -1
- package/dist/ops/log.d.ts +23 -0
- package/dist/ops/log.d.ts.map +1 -1
- package/dist/ops/log.js +7 -0
- package/dist/ops/log.js.map +1 -1
- package/dist/ops/undo.d.ts.map +1 -1
- package/dist/ops/undo.js +9 -0
- package/dist/ops/undo.js.map +1 -1
- package/dist/permissions/sight.d.ts +8 -0
- package/dist/permissions/sight.d.ts.map +1 -1
- package/dist/permissions/sight.js +8 -0
- package/dist/permissions/sight.js.map +1 -1
- package/dist/publish.d.ts +7 -2
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js.map +1 -1
- package/dist/publishing.d.ts +4 -1
- package/dist/publishing.d.ts.map +1 -1
- package/dist/publishing.js +59 -14
- package/dist/publishing.js.map +1 -1
- package/dist/scaffold/from-template.d.ts.map +1 -1
- package/dist/scaffold/from-template.js +4 -3
- package/dist/scaffold/from-template.js.map +1 -1
- package/dist/scaffold/names.d.ts +10 -0
- package/dist/scaffold/names.d.ts.map +1 -1
- package/dist/scaffold/names.js +20 -1
- package/dist/scaffold/names.js.map +1 -1
- package/dist/scaffold/ui.d.ts.map +1 -1
- package/dist/scaffold/ui.js +9 -8
- package/dist/scaffold/ui.js.map +1 -1
- package/dist/schema/figures.d.ts +9 -2
- package/dist/schema/figures.d.ts.map +1 -1
- package/dist/schema/figures.js +38 -9
- package/dist/schema/figures.js.map +1 -1
- package/dist/schema/linked.d.ts +7 -1
- package/dist/schema/linked.d.ts.map +1 -1
- package/dist/schema/linked.js.map +1 -1
- package/dist/schema/types.d.ts +10 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/seen.d.ts.map +1 -1
- package/dist/seen.js +21 -2
- package/dist/seen.js.map +1 -1
- package/dist/store.d.ts +29 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +158 -31
- package/dist/store.js.map +1 -1
- package/dist/subscriptions.d.ts +12 -0
- package/dist/subscriptions.d.ts.map +1 -1
- package/dist/subscriptions.js +10 -1
- package/dist/subscriptions.js.map +1 -1
- package/dist/sync/connection-filter.d.ts +2 -2
- package/dist/sync/connection-filter.d.ts.map +1 -1
- package/dist/sync/connection-filter.js.map +1 -1
- package/dist/sync/connection.d.ts +72 -28
- package/dist/sync/connection.d.ts.map +1 -1
- package/dist/sync/connection.js +255 -43
- package/dist/sync/connection.js.map +1 -1
- package/dist/sync/creating-act.d.ts +20 -0
- package/dist/sync/creating-act.d.ts.map +1 -0
- package/dist/sync/creating-act.js +29 -0
- package/dist/sync/creating-act.js.map +1 -0
- package/dist/sync/engine.d.ts +83 -1
- package/dist/sync/engine.d.ts.map +1 -1
- package/dist/sync/engine.js +269 -32
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync/google-calendar.d.ts +3 -0
- package/dist/sync/google-calendar.d.ts.map +1 -1
- package/dist/sync/index.d.ts +10 -4
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +6 -2
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/mcp.d.ts +8 -0
- package/dist/sync/mcp.d.ts.map +1 -1
- package/dist/sync/mcp.js +2 -0
- package/dist/sync/mcp.js.map +1 -1
- package/dist/sync/notion-stub.d.ts +81 -0
- package/dist/sync/notion-stub.d.ts.map +1 -0
- package/dist/sync/notion-stub.js +467 -0
- package/dist/sync/notion-stub.js.map +1 -0
- package/dist/sync/notion-types.d.ts +23 -0
- package/dist/sync/notion-types.d.ts.map +1 -0
- package/dist/sync/notion-types.js +49 -0
- package/dist/sync/notion-types.js.map +1 -0
- package/dist/sync/notion.d.ts +98 -0
- package/dist/sync/notion.d.ts.map +1 -0
- package/dist/sync/notion.js +477 -0
- package/dist/sync/notion.js.map +1 -0
- package/dist/sync/types.d.ts +38 -0
- package/dist/sync/types.d.ts.map +1 -1
- package/dist/sync/types.js.map +1 -1
- package/dist/text/typing-hook.d.ts +2 -2
- package/dist/text/typing-hook.d.ts.map +1 -1
- package/dist/theme/fonts.d.ts +10 -0
- package/dist/theme/fonts.d.ts.map +1 -1
- package/dist/theme/fonts.js +25 -1
- package/dist/theme/fonts.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/views/kept.d.ts.map +1 -1
- package/dist/views/kept.js +3 -0
- package/dist/views/kept.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,35 +1,49 @@
|
|
|
1
1
|
import type { GraviewApp } from "../app.js";
|
|
2
2
|
import type { AnySchema } from "../schema/schema.js";
|
|
3
3
|
import type { Store } from "../store.js";
|
|
4
|
-
import type { ConnectionSpec } from "../document/connection-spec.js";
|
|
5
|
-
import { SyncEngine } from "./engine.js";
|
|
4
|
+
import type { ConnectionSpec, NotionConnectionSpec } from "../document/connection-spec.js";
|
|
5
|
+
import { SyncEngine, type SharedLinks } from "./engine.js";
|
|
6
6
|
import { type Fetcher, type GoogleTokenRequest } from "./google-calendar.js";
|
|
7
7
|
import type { RemoteSystem, SyncMapping, SyncState } from "./types.js";
|
|
8
8
|
/**
|
|
9
9
|
* A DECLARED CONNECTION, RUN.
|
|
10
10
|
*
|
|
11
|
-
* `connections.<name>` in a declaration says which calendar
|
|
12
|
-
* which
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* `connections.<name>` in a declaration says which calendar or database,
|
|
12
|
+
* which kind, which fields and which way; this turns that into the engine,
|
|
13
|
+
* the mapping and the transport, so a host (`graview serve`, the preview,
|
|
14
|
+
* Graview Cloud) supplies only a token and a place to keep the engine's
|
|
15
|
+
* state. Everything it decides is said here once:
|
|
16
16
|
*
|
|
17
|
-
* - A
|
|
18
|
-
* all-day event's day (`start.date`; the end day is inclusive
|
|
19
|
-
* exclusive at Google, so it is moved by one each way), a
|
|
20
|
-
* field a timed event's instant (`start.dateTime`, read back as
|
|
21
|
-
* instant however Google says it).
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
17
|
+
* - A GOOGLE CALENDAR's field types say what kind of event it is: a `date`
|
|
18
|
+
* field is an all-day event's day (`start.date`; the end day is inclusive
|
|
19
|
+
* here and exclusive at Google, so it is moved by one each way), a
|
|
20
|
+
* `datetime` field a timed event's instant (`start.dateTime`, read back as
|
|
21
|
+
* one UTC instant however Google says it). A FILTER is applied as events
|
|
22
|
+
* arrive, because Google refuses a sync token beside a search: an event
|
|
23
|
+
* outside it is not news, and one that leaves it is gone here. An event
|
|
24
|
+
* made here is given what the filter needs (the color; the tag in its
|
|
25
|
+
* title) so it stays in it, and a private extended property naming the app.
|
|
26
|
+
* - A NOTION DATABASE's properties are the fields the declaration maps, or,
|
|
27
|
+
* when it maps none, every field whose name a property has, the kind's name
|
|
28
|
+
* field being the database's title. A `date` field holds a date property's
|
|
29
|
+
* day, a `datetime` field its instant; an `enum` field a select or status,
|
|
30
|
+
* matched to its options ignoring case and punctuation.
|
|
31
|
+
* - A NOTION RELATION is one of the kind's relations, when `properties`
|
|
32
|
+
* maps it (or, matched by name, when a relation property has its name and
|
|
33
|
+
* every kind it reaches is kept by a Notion connection of the app): a link
|
|
34
|
+
* in Notion is a link here, made and taken away through
|
|
35
|
+
* `connect-<kind>-<relation>` and `disconnect-<kind>-<relation>`. The page
|
|
36
|
+
* it reaches is found through `links`, shared by every connection of the
|
|
37
|
+
* app (`sharedLinks()`), so it may be another connection's record; one
|
|
38
|
+
* not linked yet is held until it is. A relation of one takes the first
|
|
39
|
+
* page Notion lists, and says the rest once.
|
|
40
|
+
* - READ means the other system owns the kind: an act here that would change
|
|
41
|
+
* a record of it is refused with a sentence saying so (`SyncEngine.guard`),
|
|
29
42
|
* rather than accepted and never sent.
|
|
30
|
-
* - Inbound changes land through the app's own acts —
|
|
31
|
-
* the
|
|
32
|
-
* `
|
|
43
|
+
* - Inbound changes land through the app's own acts — one that creates the
|
|
44
|
+
* kind from the fields mapped alone (`creatingAct`), `edit-<kind>` and
|
|
45
|
+
* `remove-<kind>` — authored by the system
|
|
46
|
+
* (`google-calendar`, `notion`), so Activity credits it and undo works.
|
|
33
47
|
*/
|
|
34
48
|
export { CONNECTION_TAG, GOOGLE_COLORS, MADE_BY_GRAVIEW, inConnectionFilter } from "./connection-filter.js";
|
|
35
49
|
export type ConnectionDeclaration = ConnectionSpec;
|
|
@@ -39,13 +53,30 @@ export interface ConnectionRun<S extends AnySchema> {
|
|
|
39
53
|
readonly declaration: ConnectionDeclaration;
|
|
40
54
|
readonly app: GraviewApp<S>;
|
|
41
55
|
readonly store: Store<S>;
|
|
42
|
-
/**
|
|
43
|
-
readonly calendarId
|
|
44
|
-
/**
|
|
56
|
+
/** A Google connection's calendar id, resolved from the declaration (its `env`, when it names one). */
|
|
57
|
+
readonly calendarId?: string;
|
|
58
|
+
/** A Notion connection's database id, resolved likewise. */
|
|
59
|
+
readonly databaseId?: string;
|
|
60
|
+
/**
|
|
61
|
+
* An access token for Google, asked again with `{ refresh: true }` when
|
|
62
|
+
* Google refuses the last one; for Notion, the internal integration's
|
|
63
|
+
* secret.
|
|
64
|
+
*/
|
|
45
65
|
token(request?: GoogleTokenRequest): Promise<string> | string;
|
|
66
|
+
/** What the secret is called where the host keeps it (`NOTION_TOKEN`), for the sentence a refusal says. Never its value. */
|
|
67
|
+
readonly secretName?: string;
|
|
46
68
|
readonly fetch?: Fetcher;
|
|
47
69
|
/** What the engine kept from the last run: its cursor, its links. */
|
|
48
70
|
readonly state?: SyncState;
|
|
71
|
+
/** A note the transport says once: a property it found no field for, one it leaves alone. */
|
|
72
|
+
say?(line: string): void;
|
|
73
|
+
/**
|
|
74
|
+
* THE APP'S LINKS, shared by every connection it runs (`sharedLinks()`):
|
|
75
|
+
* where a relation finds the record a Notion page is, whichever
|
|
76
|
+
* connection linked it. This connection's engine is added to it. Absent:
|
|
77
|
+
* the connection's own links alone.
|
|
78
|
+
*/
|
|
79
|
+
readonly links?: SharedLinks;
|
|
49
80
|
}
|
|
50
81
|
export interface Connection<S extends AnySchema> {
|
|
51
82
|
readonly engine: SyncEngine<S>;
|
|
@@ -56,10 +87,23 @@ export interface Connection<S extends AnySchema> {
|
|
|
56
87
|
}
|
|
57
88
|
/** Whether a field of the kind is a `date` (an all-day event's day) rather than a `datetime`. */
|
|
58
89
|
export declare function isDayField(app: GraviewApp, kind: string, field: string): boolean;
|
|
59
|
-
/** The mapping a declaration says
|
|
90
|
+
/** The mapping a declaration says. */
|
|
60
91
|
export declare function connectionMapping(app: GraviewApp, declaration: ConnectionDeclaration): SyncMapping;
|
|
61
|
-
/**
|
|
62
|
-
export declare function
|
|
92
|
+
/** What a Notion connection maps: the engine's mapping, the property names the transport resolves with their field types, the name that is the title, and the relations matched by name that need not be there. */
|
|
93
|
+
export declare function notionConnectionMapping(app: GraviewApp, declaration: NotionConnectionSpec, say?: (line: string) => void): {
|
|
94
|
+
readonly mapping: SyncMapping;
|
|
95
|
+
readonly refs: Readonly<Record<string, string | undefined>>;
|
|
96
|
+
readonly titleRef?: string;
|
|
97
|
+
readonly quiet: readonly string[];
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* The act a record of the kind from another system is made through: one
|
|
101
|
+
* that creates it, takes no subject and asks for nothing the connection
|
|
102
|
+
* does not map (`mapped`, our field names) — `add-<kind>` when it fits, else
|
|
103
|
+
* the first declared act that does (`creatingActFor`). Undefined when none
|
|
104
|
+
* fits, which `graview check` says at `connections.<name>`.
|
|
105
|
+
*/
|
|
106
|
+
export declare function creatingAct(app: GraviewApp, kind: string, mapped: readonly string[]): string | undefined;
|
|
63
107
|
/** The engine, the mapping and the transport for one declared connection. */
|
|
64
108
|
export declare function connection<S extends AnySchema>(run: ConnectionRun<S>): Connection<S>;
|
|
65
109
|
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/sync/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/sync/connection.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/connection.js
CHANGED
|
@@ -1,39 +1,57 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fieldSpecOf } from "../document/field-spec.js";
|
|
2
2
|
import { GOOGLE_COLORS, MADE_BY_GRAVIEW, inConnectionFilter, tagPattern } from "./connection-filter.js";
|
|
3
|
+
import { relationActName } from "../mutations/derived-names.js";
|
|
4
|
+
import { creatingActFor } from "./creating-act.js";
|
|
3
5
|
import { SyncEngine } from "./engine.js";
|
|
4
6
|
import { googleCalendar } from "./google-calendar.js";
|
|
7
|
+
import { notion, notionKey } from "./notion.js";
|
|
8
|
+
import { NOTION_EDGE, NOTION_INFERABLE } from "./notion-types.js";
|
|
5
9
|
/**
|
|
6
10
|
* A DECLARED CONNECTION, RUN.
|
|
7
11
|
*
|
|
8
|
-
* `connections.<name>` in a declaration says which calendar
|
|
9
|
-
* which
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
12
|
+
* `connections.<name>` in a declaration says which calendar or database,
|
|
13
|
+
* which kind, which fields and which way; this turns that into the engine,
|
|
14
|
+
* the mapping and the transport, so a host (`graview serve`, the preview,
|
|
15
|
+
* Graview Cloud) supplies only a token and a place to keep the engine's
|
|
16
|
+
* state. Everything it decides is said here once:
|
|
13
17
|
*
|
|
14
|
-
* - A
|
|
15
|
-
* all-day event's day (`start.date`; the end day is inclusive
|
|
16
|
-
* exclusive at Google, so it is moved by one each way), a
|
|
17
|
-
* field a timed event's instant (`start.dateTime`, read back as
|
|
18
|
-
* instant however Google says it).
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
18
|
+
* - A GOOGLE CALENDAR's field types say what kind of event it is: a `date`
|
|
19
|
+
* field is an all-day event's day (`start.date`; the end day is inclusive
|
|
20
|
+
* here and exclusive at Google, so it is moved by one each way), a
|
|
21
|
+
* `datetime` field a timed event's instant (`start.dateTime`, read back as
|
|
22
|
+
* one UTC instant however Google says it). A FILTER is applied as events
|
|
23
|
+
* arrive, because Google refuses a sync token beside a search: an event
|
|
24
|
+
* outside it is not news, and one that leaves it is gone here. An event
|
|
25
|
+
* made here is given what the filter needs (the color; the tag in its
|
|
26
|
+
* title) so it stays in it, and a private extended property naming the app.
|
|
27
|
+
* - A NOTION DATABASE's properties are the fields the declaration maps, or,
|
|
28
|
+
* when it maps none, every field whose name a property has, the kind's name
|
|
29
|
+
* field being the database's title. A `date` field holds a date property's
|
|
30
|
+
* day, a `datetime` field its instant; an `enum` field a select or status,
|
|
31
|
+
* matched to its options ignoring case and punctuation.
|
|
32
|
+
* - A NOTION RELATION is one of the kind's relations, when `properties`
|
|
33
|
+
* maps it (or, matched by name, when a relation property has its name and
|
|
34
|
+
* every kind it reaches is kept by a Notion connection of the app): a link
|
|
35
|
+
* in Notion is a link here, made and taken away through
|
|
36
|
+
* `connect-<kind>-<relation>` and `disconnect-<kind>-<relation>`. The page
|
|
37
|
+
* it reaches is found through `links`, shared by every connection of the
|
|
38
|
+
* app (`sharedLinks()`), so it may be another connection's record; one
|
|
39
|
+
* not linked yet is held until it is. A relation of one takes the first
|
|
40
|
+
* page Notion lists, and says the rest once.
|
|
41
|
+
* - READ means the other system owns the kind: an act here that would change
|
|
42
|
+
* a record of it is refused with a sentence saying so (`SyncEngine.guard`),
|
|
26
43
|
* rather than accepted and never sent.
|
|
27
|
-
* - Inbound changes land through the app's own acts —
|
|
28
|
-
* the
|
|
29
|
-
* `
|
|
44
|
+
* - Inbound changes land through the app's own acts — one that creates the
|
|
45
|
+
* kind from the fields mapped alone (`creatingAct`), `edit-<kind>` and
|
|
46
|
+
* `remove-<kind>` — authored by the system
|
|
47
|
+
* (`google-calendar`, `notion`), so Activity credits it and undo works.
|
|
30
48
|
*/
|
|
31
49
|
export { CONNECTION_TAG, GOOGLE_COLORS, MADE_BY_GRAVIEW, inConnectionFilter } from "./connection-filter.js";
|
|
32
50
|
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
33
51
|
const instant = (value) => {
|
|
34
52
|
if (typeof value !== "string" || !value)
|
|
35
53
|
return value;
|
|
36
|
-
const time = Date.parse(value);
|
|
54
|
+
const time = Date.parse(/^\d{4}-\d{2}-\d{2}$/.test(value) ? `${value}T00:00:00Z` : value);
|
|
37
55
|
return Number.isNaN(time) ? value : new Date(time).toISOString().replace(/\.000Z$/, "Z");
|
|
38
56
|
};
|
|
39
57
|
const shiftDay = (value, days) => {
|
|
@@ -41,14 +59,27 @@ const shiftDay = (value, days) => {
|
|
|
41
59
|
return value;
|
|
42
60
|
return new Date(Date.parse(`${value}T00:00:00Z`) + days * DAY_MS).toISOString().slice(0, 10);
|
|
43
61
|
};
|
|
62
|
+
/** A kind's fields as a document says them, by name. */
|
|
63
|
+
function fieldSpecs(app, kind) {
|
|
64
|
+
const shape = app.schema.tryDefinition(kind)?.fields?.shape ?? {};
|
|
65
|
+
const out = {};
|
|
66
|
+
for (const [field, schema] of Object.entries(shape)) {
|
|
67
|
+
const spec = fieldSpecOf(schema);
|
|
68
|
+
if (spec)
|
|
69
|
+
out[field] = spec;
|
|
70
|
+
}
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
44
73
|
/** Whether a field of the kind is a `date` (an all-day event's day) rather than a `datetime`. */
|
|
45
74
|
export function isDayField(app, kind, field) {
|
|
46
|
-
|
|
47
|
-
const read = shape?.[field] === undefined ? undefined : fieldOf(shape[field]);
|
|
48
|
-
return read !== undefined && "spec" in read && read.spec.type === "date";
|
|
75
|
+
return fieldSpecs(app, kind)[field]?.type === "date";
|
|
49
76
|
}
|
|
50
|
-
/** The mapping a declaration says
|
|
77
|
+
/** The mapping a declaration says. */
|
|
51
78
|
export function connectionMapping(app, declaration) {
|
|
79
|
+
return declaration.system === "notion" ? notionConnectionMapping(app, declaration).mapping : googleConnectionMapping(app, declaration);
|
|
80
|
+
}
|
|
81
|
+
/** A Google connection's mapping: field types decide the paths, the filter's tag is kept or stripped. */
|
|
82
|
+
function googleConnectionMapping(app, declaration) {
|
|
52
83
|
const { kind, fields } = declaration;
|
|
53
84
|
const day = isDayField(app, kind, fields.start);
|
|
54
85
|
const when = day ? "date" : "dateTime";
|
|
@@ -93,15 +124,147 @@ export function connectionMapping(app, declaration) {
|
|
|
93
124
|
};
|
|
94
125
|
return { system: "google-calendar", resources: [resource] };
|
|
95
126
|
}
|
|
96
|
-
/**
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
127
|
+
/** Words compared loosely: "In progress", "in-progress" and "inProgress" are one. */
|
|
128
|
+
const loose = (word) => word.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
129
|
+
/** The field a kind is named by: one called name or title, else its first required words, else its first words. */
|
|
130
|
+
function nameField(specs) {
|
|
131
|
+
const words = Object.entries(specs).filter(([, spec]) => spec.type === "string" || spec.type === "text");
|
|
132
|
+
return (words.find(([field]) => field === "name" || field === "title") ?? words.find(([, spec]) => spec.required) ?? words[0])?.[0];
|
|
133
|
+
}
|
|
134
|
+
/** A kind's relations as its definition declares them, by name. */
|
|
135
|
+
function edgeSpecs(app, kind) {
|
|
136
|
+
return (app.schema.tryDefinition(kind)?.edges ?? {});
|
|
137
|
+
}
|
|
138
|
+
/** The kinds a Notion connection of the app keeps. */
|
|
139
|
+
function notionKinds(app) {
|
|
140
|
+
return new Set(Object.values(app.connections ?? {}).flatMap((declared) => (declared.system === "notion" ? [declared.kind] : [])));
|
|
141
|
+
}
|
|
142
|
+
/** What a Notion connection maps: the engine's mapping, the property names the transport resolves with their field types, the name that is the title, and the relations matched by name that need not be there. */
|
|
143
|
+
export function notionConnectionMapping(app, declaration, say) {
|
|
144
|
+
const { kind } = declaration;
|
|
145
|
+
const specs = fieldSpecs(app, kind);
|
|
146
|
+
const relations = edgeSpecs(app, kind);
|
|
147
|
+
const fields = {};
|
|
148
|
+
const edges = {};
|
|
149
|
+
const refs = {};
|
|
150
|
+
const quiet = [];
|
|
151
|
+
let titleRef;
|
|
152
|
+
if (declaration.properties) {
|
|
153
|
+
for (const [field, property] of Object.entries(declaration.properties)) {
|
|
154
|
+
const ref = typeof property === "string" ? property : property.name;
|
|
155
|
+
if (!specs[field] && relations[field]) {
|
|
156
|
+
edges[field] = ref;
|
|
157
|
+
refs[ref] = NOTION_EDGE;
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
fields[field] = ref;
|
|
161
|
+
refs[ref] = specs[field]?.type;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
for (const [field, spec] of Object.entries(specs)) {
|
|
166
|
+
if (!NOTION_INFERABLE.has(spec.type))
|
|
167
|
+
continue;
|
|
168
|
+
fields[field] = field;
|
|
169
|
+
refs[field] = spec.type;
|
|
170
|
+
}
|
|
171
|
+
titleRef = nameField(specs);
|
|
172
|
+
// A relation is kept by name only when every kind it reaches is another Notion connection's: a relation property of its name may not be there.
|
|
173
|
+
const kept = notionKinds(app);
|
|
174
|
+
for (const [edge, spec] of Object.entries(relations)) {
|
|
175
|
+
if (spec.to === "*" || spec.to.length === 0 || !spec.to.every((target) => kept.has(target)))
|
|
176
|
+
continue;
|
|
177
|
+
edges[edge] = edge;
|
|
178
|
+
refs[edge] = NOTION_EDGE;
|
|
179
|
+
quiet.push(edge);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
const encode = {};
|
|
183
|
+
const decode = {};
|
|
184
|
+
for (const field of Object.keys(fields)) {
|
|
185
|
+
const spec = specs[field];
|
|
186
|
+
switch (spec?.type) {
|
|
187
|
+
case "date":
|
|
188
|
+
encode[field] = (value) => (typeof value === "string" ? value.slice(0, 10) : value);
|
|
189
|
+
decode[field] = (value) => (typeof value === "string" ? value.slice(0, 10) : value);
|
|
190
|
+
break;
|
|
191
|
+
case "datetime":
|
|
192
|
+
encode[field] = instant;
|
|
193
|
+
decode[field] = instant;
|
|
194
|
+
break;
|
|
195
|
+
case "enum": {
|
|
196
|
+
const options = spec.options ?? [];
|
|
197
|
+
decode[field] = (value) => (typeof value === "string" ? (options.find((option) => option === value) ?? options.find((option) => loose(option) === loose(value)) ?? value) : value);
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
case "list":
|
|
201
|
+
decode[field] = (value) => (typeof value === "string" ? [value] : value);
|
|
202
|
+
break;
|
|
203
|
+
case "string":
|
|
204
|
+
case "text":
|
|
205
|
+
case "url":
|
|
206
|
+
case "email":
|
|
207
|
+
case "phone":
|
|
208
|
+
// People arrive as a list of names.
|
|
209
|
+
decode[field] = (value) => (Array.isArray(value) ? value.join(", ") : value);
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
for (const edge of Object.keys(edges)) {
|
|
214
|
+
if (relations[edge]?.cardinality !== "one")
|
|
215
|
+
continue;
|
|
216
|
+
// A relation of one holds the first page Notion lists; the rest are said once and left there.
|
|
217
|
+
decode[edge] = (value) => {
|
|
218
|
+
if (!Array.isArray(value) || value.length <= 1)
|
|
219
|
+
return value;
|
|
220
|
+
say?.(`${edge}: each ${kind} links one page, and a page in Notion links ${value.length}, so the first is kept here and the rest are left in Notion`);
|
|
221
|
+
return [value[0]];
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
const resource = {
|
|
225
|
+
kind,
|
|
226
|
+
resource: "pages",
|
|
227
|
+
fields,
|
|
228
|
+
...(Object.keys(edges).length > 0 ? { edges } : {}),
|
|
229
|
+
encode,
|
|
230
|
+
decode,
|
|
231
|
+
...(declaration.direction === "read" ? { readonly: true, because: `Each ${kind} comes from a Notion database this app only reads: change it there.` } : {}),
|
|
232
|
+
};
|
|
233
|
+
return { mapping: { system: "notion", resources: [resource] }, refs, ...(titleRef ? { titleRef } : {}), quiet };
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* The act a record of the kind from another system is made through: one
|
|
237
|
+
* that creates it, takes no subject and asks for nothing the connection
|
|
238
|
+
* does not map (`mapped`, our field names) — `add-<kind>` when it fits, else
|
|
239
|
+
* the first declared act that does (`creatingActFor`). Undefined when none
|
|
240
|
+
* fits, which `graview check` says at `connections.<name>`.
|
|
241
|
+
*/
|
|
242
|
+
export function creatingAct(app, kind, mapped) {
|
|
243
|
+
return creatingActFor((app.mutations ?? []), kind, mapped).act;
|
|
244
|
+
}
|
|
245
|
+
/** Our fields from a remote record's, decoded: what a record made from it holds. */
|
|
246
|
+
function decodedBy(resource) {
|
|
247
|
+
return (fields) => {
|
|
248
|
+
const out = {};
|
|
249
|
+
for (const [ours, theirs] of Object.entries(resource.fields)) {
|
|
250
|
+
if (!(theirs in fields))
|
|
251
|
+
continue;
|
|
252
|
+
const decode = resource.decode?.[ours];
|
|
253
|
+
out[ours] = decode ? decode(fields[theirs]) : fields[theirs];
|
|
254
|
+
}
|
|
255
|
+
return out;
|
|
256
|
+
};
|
|
100
257
|
}
|
|
101
258
|
/** The engine, the mapping and the transport for one declared connection. */
|
|
102
259
|
export function connection(run) {
|
|
103
|
-
const { declaration
|
|
104
|
-
|
|
260
|
+
const { declaration } = run;
|
|
261
|
+
return declaration.system === "notion" ? notionConnection(run, declaration) : googleConnection(run, declaration);
|
|
262
|
+
}
|
|
263
|
+
function googleConnection(run, declaration) {
|
|
264
|
+
const { app, store } = run;
|
|
265
|
+
if (!run.calendarId)
|
|
266
|
+
throw new Error(`connection ${run.name}: a Google connection needs its calendar's id`);
|
|
267
|
+
const mapping = googleConnectionMapping(app, declaration);
|
|
105
268
|
const resource = mapping.resources[0];
|
|
106
269
|
const color = declaration.filter?.color ? GOOGLE_COLORS[declaration.filter.color] : undefined;
|
|
107
270
|
const remote = googleCalendar({
|
|
@@ -114,17 +277,8 @@ export function connection(run) {
|
|
|
114
277
|
extendedProperties: { private: { [MADE_BY_GRAVIEW]: app.name } },
|
|
115
278
|
},
|
|
116
279
|
});
|
|
117
|
-
const creates = creatingAct(app, declaration.kind);
|
|
118
|
-
const decoded = (
|
|
119
|
-
const out = {};
|
|
120
|
-
for (const [ours, theirs] of Object.entries(resource.fields)) {
|
|
121
|
-
if (!(theirs in fields))
|
|
122
|
-
continue;
|
|
123
|
-
const decode = resource.decode?.[ours];
|
|
124
|
-
out[ours] = decode ? decode(fields[theirs]) : fields[theirs];
|
|
125
|
-
}
|
|
126
|
-
return out;
|
|
127
|
-
};
|
|
280
|
+
const creates = creatingAct(app, declaration.kind, Object.keys(resource.fields));
|
|
281
|
+
const decoded = decodedBy(resource);
|
|
128
282
|
let made = 0;
|
|
129
283
|
const engine = new SyncEngine({
|
|
130
284
|
store,
|
|
@@ -145,4 +299,62 @@ export function connection(run) {
|
|
|
145
299
|
const unguard = declaration.direction === "read" ? engine.guard() : undefined;
|
|
146
300
|
return { engine, mapping, remote, ...(unguard ? { unguard } : {}) };
|
|
147
301
|
}
|
|
302
|
+
function notionConnection(run, declaration) {
|
|
303
|
+
const { app, store } = run;
|
|
304
|
+
if (!run.databaseId)
|
|
305
|
+
throw new Error(`connection ${run.name}: a Notion connection needs its database's id`);
|
|
306
|
+
const { mapping, refs, titleRef, quiet } = notionConnectionMapping(app, declaration, run.say);
|
|
307
|
+
const resource = mapping.resources[0];
|
|
308
|
+
let engine;
|
|
309
|
+
const remote = notion({
|
|
310
|
+
databaseId: run.databaseId,
|
|
311
|
+
...(declaration.source ? { source: declaration.source } : {}),
|
|
312
|
+
token: () => run.token(),
|
|
313
|
+
...(run.secretName ? { secretName: run.secretName } : {}),
|
|
314
|
+
...(run.fetch ? { fetch: run.fetch } : {}),
|
|
315
|
+
refs,
|
|
316
|
+
...(titleRef ? { titleRef } : {}),
|
|
317
|
+
...(quiet.length > 0 ? { quiet } : {}),
|
|
318
|
+
// The pages linked when the pass began: a whole read that no longer lists one finds out whether it is gone.
|
|
319
|
+
known: () => Object.values(engine?.snapshot.links ?? {}).map((link) => link.id),
|
|
320
|
+
...(run.say ? { say: run.say } : {}),
|
|
321
|
+
});
|
|
322
|
+
const creates = creatingAct(app, declaration.kind, Object.keys(resource.fields));
|
|
323
|
+
const decoded = decodedBy(resource);
|
|
324
|
+
// A relation's link lands through its derived pair, when the app has it (the checker says when it has not).
|
|
325
|
+
const has = (name) => {
|
|
326
|
+
try {
|
|
327
|
+
store.mutation(name);
|
|
328
|
+
return true;
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
return false;
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
const relationAct = (act) => ({ localId, edge, to }) => {
|
|
335
|
+
const name = relationActName(act, declaration.kind, edge);
|
|
336
|
+
return has(name) ? { name, args: { id: localId, to } } : null;
|
|
337
|
+
};
|
|
338
|
+
engine = new SyncEngine({
|
|
339
|
+
store,
|
|
340
|
+
mapping,
|
|
341
|
+
remote,
|
|
342
|
+
...(run.links ? { links: run.links } : {}),
|
|
343
|
+
connectInbound: relationAct("connect"),
|
|
344
|
+
disconnectInbound: relationAct("disconnect"),
|
|
345
|
+
conflicts: declaration.conflicts ?? "report",
|
|
346
|
+
applyInbound: ({ localId, fields }) => ({ name: `edit-${declaration.kind}`, args: { id: localId, ...fields } }),
|
|
347
|
+
removeInbound: ({ localId }) => ({ name: `remove-${declaration.kind}`, args: { id: localId } }),
|
|
348
|
+
createInbound: ({ id, fields }) => {
|
|
349
|
+
if (!creates)
|
|
350
|
+
return null;
|
|
351
|
+
// An empty property is no value for a record being made; the page's own id names it, so a full read makes it once.
|
|
352
|
+
const values = Object.fromEntries(Object.entries(decoded(fields)).filter(([, value]) => value !== null && value !== undefined));
|
|
353
|
+
return { name: creates, args: { id: `${declaration.kind}:${run.name}-${notionKey(id)}`, ...values } };
|
|
354
|
+
},
|
|
355
|
+
}, run.state);
|
|
356
|
+
run.links?.add(engine);
|
|
357
|
+
const unguard = declaration.direction === "read" ? engine.guard() : undefined;
|
|
358
|
+
return { engine, mapping, remote, ...(unguard ? { unguard } : {}) };
|
|
359
|
+
}
|
|
148
360
|
//# sourceMappingURL=connection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/sync/connection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/sync/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AnyMutationDefinition } from "../mutations/types.js";
|
|
2
|
+
/** Why an act that creates the kind cannot make a record from another system's fields alone. */
|
|
3
|
+
export interface UnfitCreatingAct {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
/** The kinds it acts on, when it takes a subject. */
|
|
6
|
+
readonly on?: readonly string[];
|
|
7
|
+
/** The arguments it requires that the connection does not map. */
|
|
8
|
+
readonly asks?: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
export interface CreatingActChoice {
|
|
11
|
+
/** The act a record is made through, when one fits. */
|
|
12
|
+
readonly act?: string;
|
|
13
|
+
/** Every act that creates the kind and does not fit, and why. Empty when none creates it. */
|
|
14
|
+
readonly unfit: readonly UnfitCreatingAct[];
|
|
15
|
+
/** Whether any declared act creates the kind at all. */
|
|
16
|
+
readonly creates: boolean;
|
|
17
|
+
}
|
|
18
|
+
/** The act a record of `kind` from another system is made through, given the fields the connection maps. */
|
|
19
|
+
export declare function creatingActFor(mutations: readonly AnyMutationDefinition[], kind: string, mapped: readonly string[]): CreatingActChoice;
|
|
20
|
+
//# sourceMappingURL=creating-act.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creating-act.d.ts","sourceRoot":"","sources":["../../src/sync/creating-act.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAiBnE,gGAAgG;AAChG,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC5C,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AASD,4GAA4G;AAC5G,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,qBAAqB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CAiBtI"}
|
|
@@ -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"}
|