@graview/core 0.1.60 → 0.1.62
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 +23 -1
- package/dist/app-places.d.ts.map +1 -1
- package/dist/app-places.js +2 -2
- package/dist/app-places.js.map +1 -1
- package/dist/app.d.ts +10 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js.map +1 -1
- package/dist/arrangement.d.ts +2 -0
- package/dist/arrangement.d.ts.map +1 -1
- package/dist/arrangement.js +14 -0
- package/dist/arrangement.js.map +1 -1
- package/dist/capabilities.js +1 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +2 -1
- package/dist/catalog.js.map +1 -1
- package/dist/cli/check/context.d.ts +5 -0
- package/dist/cli/check/context.d.ts.map +1 -1
- package/dist/cli/check/context.js.map +1 -1
- package/dist/cli/check/face.d.ts +14 -0
- package/dist/cli/check/face.d.ts.map +1 -0
- package/dist/cli/check/face.js +161 -0
- package/dist/cli/check/face.js.map +1 -0
- package/dist/cli/check/hidden-reads.d.ts.map +1 -1
- package/dist/cli/check/hidden-reads.js +26 -0
- package/dist/cli/check/hidden-reads.js.map +1 -1
- package/dist/cli/check/index.d.ts +1 -0
- package/dist/cli/check/index.d.ts.map +1 -1
- package/dist/cli/check/index.js +1 -0
- package/dist/cli/check/index.js.map +1 -1
- package/dist/cli/check/tidying.d.ts +14 -0
- package/dist/cli/check/tidying.d.ts.map +1 -0
- package/dist/cli/check/tidying.js +24 -0
- package/dist/cli/check/tidying.js.map +1 -0
- package/dist/cli/check.d.ts.map +1 -1
- package/dist/cli/check.js +4 -4
- package/dist/cli/check.js.map +1 -1
- package/dist/cli/describe.d.ts.map +1 -1
- package/dist/cli/describe.js +14 -1
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/docs.d.ts.map +1 -1
- package/dist/cli/docs.js +5 -3
- package/dist/cli/docs.js.map +1 -1
- package/dist/cli/document-schema.d.ts.map +1 -1
- package/dist/cli/document-schema.js +8 -2
- package/dist/cli/document-schema.js.map +1 -1
- package/dist/cli/index.d.ts +2 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +15 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js +2 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/compose.d.ts +14 -0
- package/dist/compose.d.ts.map +1 -1
- package/dist/compose.js +16 -1
- package/dist/compose.js.map +1 -1
- package/dist/css/sanitize.d.ts +125 -0
- package/dist/css/sanitize.d.ts.map +1 -0
- package/dist/css/sanitize.js +989 -0
- package/dist/css/sanitize.js.map +1 -0
- package/dist/css/tables.d.ts +55 -0
- package/dist/css/tables.d.ts.map +1 -0
- package/dist/css/tables.js +137 -0
- package/dist/css/tables.js.map +1 -0
- package/dist/css.d.ts +20 -0
- package/dist/css.d.ts.map +1 -0
- package/dist/css.js +19 -0
- package/dist/css.js.map +1 -0
- package/dist/days.d.ts +15 -0
- package/dist/days.d.ts.map +1 -1
- package/dist/days.js +21 -0
- package/dist/days.js.map +1 -1
- package/dist/describe.d.ts +1 -1
- package/dist/describe.d.ts.map +1 -1
- package/dist/document/act-findings.d.ts.map +1 -1
- package/dist/document/act-findings.js +80 -1
- package/dist/document/act-findings.js.map +1 -1
- package/dist/document/blocks.d.ts.map +1 -1
- package/dist/document/blocks.js +2 -1
- package/dist/document/blocks.js.map +1 -1
- package/dist/document/brand-check.d.ts +15 -1
- package/dist/document/brand-check.d.ts.map +1 -1
- package/dist/document/brand-check.js +80 -0
- package/dist/document/brand-check.js.map +1 -1
- package/dist/document/brand.d.ts.map +1 -1
- package/dist/document/brand.js +2 -0
- package/dist/document/brand.js.map +1 -1
- package/dist/document/compile-checked.d.ts.map +1 -1
- package/dist/document/compile-checked.js +4 -3
- package/dist/document/compile-checked.js.map +1 -1
- package/dist/document/compile.d.ts.map +1 -1
- package/dist/document/compile.js +54 -9
- package/dist/document/compile.js.map +1 -1
- package/dist/document/compiled.d.ts +18 -3
- package/dist/document/compiled.d.ts.map +1 -1
- package/dist/document/compiled.js +91 -10
- package/dist/document/compiled.js.map +1 -1
- package/dist/document/connection-findings.d.ts.map +1 -1
- package/dist/document/connection-findings.js +219 -19
- package/dist/document/connection-findings.js.map +1 -1
- package/dist/document/connection-spec.d.ts +7 -0
- package/dist/document/connection-spec.d.ts.map +1 -1
- package/dist/document/connection-spec.js +26 -2
- package/dist/document/connection-spec.js.map +1 -1
- package/dist/document/covers.d.ts +48 -0
- package/dist/document/covers.d.ts.map +1 -0
- package/dist/document/covers.js +90 -0
- package/dist/document/covers.js.map +1 -0
- package/dist/document/describe-place.d.ts +3 -0
- package/dist/document/describe-place.d.ts.map +1 -1
- package/dist/document/describe-place.js +11 -0
- package/dist/document/describe-place.js.map +1 -1
- package/dist/document/described.d.ts +28 -0
- package/dist/document/described.d.ts.map +1 -1
- package/dist/document/diff.js +10 -1
- package/dist/document/diff.js.map +1 -1
- package/dist/document/edit.d.ts +1 -1
- package/dist/document/edit.d.ts.map +1 -1
- package/dist/document/edit.js +186 -18
- package/dist/document/edit.js.map +1 -1
- package/dist/document/expr/evaluate.d.ts +10 -1
- package/dist/document/expr/evaluate.d.ts.map +1 -1
- package/dist/document/expr/evaluate.js +110 -2
- package/dist/document/expr/evaluate.js.map +1 -1
- package/dist/document/expr/index.d.ts +1 -0
- package/dist/document/expr/index.d.ts.map +1 -1
- package/dist/document/expr/index.js +2 -0
- package/dist/document/expr/index.js.map +1 -1
- package/dist/document/expr/typing.d.ts +24 -0
- package/dist/document/expr/typing.d.ts.map +1 -0
- package/dist/document/expr/typing.js +219 -0
- package/dist/document/expr/typing.js.map +1 -0
- package/dist/document/expr/when.d.ts +52 -0
- package/dist/document/expr/when.d.ts.map +1 -0
- package/dist/document/expr/when.js +215 -0
- package/dist/document/expr/when.js.map +1 -0
- package/dist/document/expr-type-findings.d.ts +5 -0
- package/dist/document/expr-type-findings.d.ts.map +1 -0
- package/dist/document/expr-type-findings.js +90 -0
- package/dist/document/expr-type-findings.js.map +1 -0
- package/dist/document/field-spec.d.ts.map +1 -1
- package/dist/document/field-spec.js +5 -0
- package/dist/document/field-spec.js.map +1 -1
- package/dist/document/findings.d.ts +33 -2
- package/dist/document/findings.d.ts.map +1 -1
- package/dist/document/findings.js +14 -17
- package/dist/document/findings.js.map +1 -1
- package/dist/document/index.d.ts +6 -3
- package/dist/document/index.d.ts.map +1 -1
- package/dist/document/index.js +5 -2
- package/dist/document/index.js.map +1 -1
- package/dist/document/linked-findings.js +1 -1
- package/dist/document/linked-findings.js.map +1 -1
- package/dist/document/migrate.d.ts.map +1 -1
- package/dist/document/migrate.js +10 -4
- package/dist/document/migrate.js.map +1 -1
- package/dist/document/rule-line.d.ts +7 -3
- package/dist/document/rule-line.d.ts.map +1 -1
- package/dist/document/rule-line.js +17 -2
- package/dist/document/rule-line.js.map +1 -1
- package/dist/document/rule-reads.d.ts.map +1 -1
- package/dist/document/rule-reads.js +3 -1
- package/dist/document/rule-reads.js.map +1 -1
- package/dist/document/rules.d.ts +30 -0
- package/dist/document/rules.d.ts.map +1 -1
- package/dist/document/rules.js +74 -0
- package/dist/document/rules.js.map +1 -1
- package/dist/document/schema.d.ts +80 -2
- package/dist/document/schema.d.ts.map +1 -1
- package/dist/document/schema.js +90 -4
- package/dist/document/schema.js.map +1 -1
- package/dist/document/to-document.d.ts.map +1 -1
- package/dist/document/to-document.js +3 -1
- package/dist/document/to-document.js.map +1 -1
- package/dist/document.schema.json +304 -5
- package/dist/formats.d.ts +21 -13
- package/dist/formats.d.ts.map +1 -1
- package/dist/formats.js +21 -13
- package/dist/formats.js.map +1 -1
- package/dist/import/coerce.d.ts.map +1 -1
- package/dist/import/coerce.js +16 -4
- package/dist/import/coerce.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/invariants/types.d.ts +7 -2
- package/dist/invariants/types.d.ts.map +1 -1
- package/dist/kind-list.d.ts +1 -0
- package/dist/kind-list.d.ts.map +1 -1
- package/dist/kind-list.js +2 -1
- package/dist/kind-list.js.map +1 -1
- package/dist/lines.d.ts.map +1 -1
- package/dist/lines.js +6 -2
- package/dist/lines.js.map +1 -1
- package/dist/mutations/form.d.ts +2 -0
- package/dist/mutations/form.d.ts.map +1 -1
- package/dist/mutations/form.js +6 -3
- package/dist/mutations/form.js.map +1 -1
- package/dist/mutations/types.d.ts +9 -0
- package/dist/mutations/types.d.ts.map +1 -1
- package/dist/mutations/vote-suggestion.d.ts +67 -0
- package/dist/mutations/vote-suggestion.d.ts.map +1 -0
- package/dist/mutations/vote-suggestion.js +36 -0
- package/dist/mutations/vote-suggestion.js.map +1 -0
- package/dist/navigate.d.ts +7 -3
- package/dist/navigate.d.ts.map +1 -1
- package/dist/navigate.js +7 -3
- package/dist/navigate.js.map +1 -1
- package/dist/ops/lineage.d.ts +11 -1
- package/dist/ops/lineage.d.ts.map +1 -1
- package/dist/ops/lineage.js +6 -2
- package/dist/ops/lineage.js.map +1 -1
- package/dist/ops/suggestions.d.ts +33 -1
- package/dist/ops/suggestions.d.ts.map +1 -1
- package/dist/ops/suggestions.js +44 -2
- package/dist/ops/suggestions.js.map +1 -1
- package/dist/ops/types.d.ts +13 -0
- package/dist/ops/types.d.ts.map +1 -1
- package/dist/ops/types.js.map +1 -1
- package/dist/place-names.d.ts +42 -0
- package/dist/place-names.d.ts.map +1 -0
- package/dist/place-names.js +43 -0
- package/dist/place-names.js.map +1 -0
- package/dist/places.d.ts +2 -0
- package/dist/places.d.ts.map +1 -1
- package/dist/places.js +2 -0
- package/dist/places.js.map +1 -1
- package/dist/scaffold/agents.d.ts +9 -1
- package/dist/scaffold/agents.d.ts.map +1 -1
- package/dist/scaffold/agents.js +33 -2
- package/dist/scaffold/agents.js.map +1 -1
- package/dist/scaffold/project.js +1 -1
- package/dist/schema/choice-words.d.ts.map +1 -1
- package/dist/schema/choice-words.js +3 -0
- package/dist/schema/choice-words.js.map +1 -1
- package/dist/starting-document.d.ts +73 -0
- package/dist/starting-document.d.ts.map +1 -0
- package/dist/starting-document.js +645 -0
- package/dist/starting-document.js.map +1 -0
- package/dist/store.d.ts +50 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +167 -27
- package/dist/store.js.map +1 -1
- package/dist/sync/connection.d.ts +20 -1
- package/dist/sync/connection.d.ts.map +1 -1
- package/dist/sync/connection.js +198 -34
- package/dist/sync/connection.js.map +1 -1
- package/dist/sync/engine.d.ts +13 -4
- package/dist/sync/engine.d.ts.map +1 -1
- package/dist/sync/engine.js +10 -6
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync/google-calendar.d.ts +8 -0
- package/dist/sync/google-calendar.d.ts.map +1 -1
- package/dist/sync/google-calendar.js +16 -4
- package/dist/sync/google-calendar.js.map +1 -1
- package/dist/sync/guests.d.ts +44 -0
- package/dist/sync/guests.d.ts.map +1 -0
- package/dist/sync/guests.js +57 -0
- package/dist/sync/guests.js.map +1 -0
- package/dist/sync/notion-types.d.ts +7 -0
- package/dist/sync/notion-types.d.ts.map +1 -1
- package/dist/sync/notion-types.js +6 -1
- package/dist/sync/notion-types.js.map +1 -1
- package/dist/sync/recurrence.d.ts +41 -0
- package/dist/sync/recurrence.d.ts.map +1 -0
- package/dist/sync/recurrence.js +192 -0
- package/dist/sync/recurrence.js.map +1 -0
- package/dist/sync/types.d.ts +9 -0
- package/dist/sync/types.d.ts.map +1 -1
- package/dist/sync/types.js.map +1 -1
- package/dist/testing.js +1 -1
- package/dist/testing.js.map +1 -1
- package/dist/theme/contrast.d.ts +2 -0
- package/dist/theme/contrast.d.ts.map +1 -1
- package/dist/theme/contrast.js +4 -0
- package/dist/theme/contrast.js.map +1 -1
- package/dist/theme/ground.d.ts +1 -2
- package/dist/theme/ground.d.ts.map +1 -1
- package/dist/theme/ground.js +2 -5
- package/dist/theme/ground.js.map +1 -1
- package/dist/theme/marks.d.ts +14 -2
- package/dist/theme/marks.d.ts.map +1 -1
- package/dist/theme/marks.js +20 -3
- package/dist/theme/marks.js.map +1 -1
- package/dist/theme/types.d.ts +22 -0
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/theme/types.js.map +1 -1
- package/dist/tidying.d.ts +30 -4
- package/dist/tidying.d.ts.map +1 -1
- package/dist/tidying.js +110 -5
- package/dist/tidying.js.map +1 -1
- package/dist/trait-vocabulary.d.ts +17 -0
- package/dist/trait-vocabulary.d.ts.map +1 -0
- package/dist/trait-vocabulary.js +16 -0
- package/dist/trait-vocabulary.js.map +1 -0
- package/dist/traits.d.ts +79 -0
- package/dist/traits.d.ts.map +1 -0
- package/dist/traits.js +468 -0
- package/dist/traits.js.map +1 -0
- package/dist/typed.d.ts +4 -0
- package/dist/typed.d.ts.map +1 -1
- package/dist/typed.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +11 -1
package/dist/sync/connection.js
CHANGED
|
@@ -4,8 +4,13 @@ import { relationActName } from "../mutations/derived-names.js";
|
|
|
4
4
|
import { creatingActFor } from "./creating-act.js";
|
|
5
5
|
import { SyncEngine } from "./engine.js";
|
|
6
6
|
import { googleCalendar } from "./google-calendar.js";
|
|
7
|
+
import { addressesOf, addressesOfAttendees, attendeesOf, guestBook } from "./guests.js";
|
|
8
|
+
import { instantIn, timeZoneFor, wallIn } from "../days.js";
|
|
9
|
+
import { isRepeat, isRepeatField, repeatKey } from "../repeat.js";
|
|
10
|
+
import { addDays } from "../wall-time.js";
|
|
11
|
+
import { firstWeekday, hhmm, instantOfMoment, isoInstant, minutesOf, momentOfInstant, recurrenceOf, repeatOf, wallOfMoment, weekdayOf, weekdaysOf, weeklyRule } from "./recurrence.js";
|
|
7
12
|
import { notion, notionKey } from "./notion.js";
|
|
8
|
-
import { NOTION_EDGE, NOTION_INFERABLE } from "./notion-types.js";
|
|
13
|
+
import { NOTION_EDGE, NOTION_INFERABLE, notionFieldType } from "./notion-types.js";
|
|
9
14
|
/**
|
|
10
15
|
* A DECLARED CONNECTION, RUN.
|
|
11
16
|
*
|
|
@@ -24,6 +29,14 @@ import { NOTION_EDGE, NOTION_INFERABLE } from "./notion-types.js";
|
|
|
24
29
|
* outside it is not news, and one that leaves it is gone here. An event
|
|
25
30
|
* made here is given what the filter needs (the color; the tag in its
|
|
26
31
|
* title) so it stays in it, and a private extended property naming the app.
|
|
32
|
+
* - AN EVENT'S GUESTS (Roadmap f-calendar-guests-mapping) are `guests`: a
|
|
33
|
+
* field of addresses kept as the attendees, or `{ via }`, a relation to
|
|
34
|
+
* the people the event is about, kept as an EDGE the engine compares,
|
|
35
|
+
* holds and links as it does a Notion relation — a person's remote id
|
|
36
|
+
* being their guest key (`guests.ts`), given to the engine as its `links`.
|
|
37
|
+
* A person without an address or with Invite me off is no guest either
|
|
38
|
+
* way; an attendee matching nobody is held and sent back unchanged. Quiet
|
|
39
|
+
* by default: Google mails the guests only with `notify: true`.
|
|
27
40
|
* - A NOTION DATABASE's properties are the fields the declaration maps, or,
|
|
28
41
|
* when it maps none, every field whose name a property has, the kind's name
|
|
29
42
|
* field being the database's title. A `date` field holds a date property's
|
|
@@ -75,19 +88,98 @@ export function isDayField(app, kind, field) {
|
|
|
75
88
|
return fieldSpecs(app, kind)[field]?.type === "date";
|
|
76
89
|
}
|
|
77
90
|
/** The mapping a declaration says. */
|
|
78
|
-
export function connectionMapping(app, declaration) {
|
|
79
|
-
return declaration.system === "notion" ? notionConnectionMapping(app, declaration).mapping :
|
|
91
|
+
export function connectionMapping(app, declaration, options = {}) {
|
|
92
|
+
return declaration.system === "notion" ? notionConnectionMapping(app, declaration).mapping : googleMapping(app, declaration, options).mapping;
|
|
80
93
|
}
|
|
81
|
-
/**
|
|
82
|
-
|
|
94
|
+
/** The zone a Google mapping says its times in: the app's (`brand.timeZone`), else the runtime's. */
|
|
95
|
+
export const connectionZone = (app, zone) => zone ?? app.brand?.timeZone ?? timeZoneFor(app.name);
|
|
96
|
+
/**
|
|
97
|
+
* A Google connection's mapping: field types decide the paths, the filter's
|
|
98
|
+
* tag is kept or stripped. A record that recurs (FR-230) is one event with
|
|
99
|
+
* a rule: with `days` mapped, the weekdays and the two times of day are the
|
|
100
|
+
* rule and the first week's instants in the app's zone; a start that
|
|
101
|
+
* repeats carries its repeat as the rule and its exceptions. The guests
|
|
102
|
+
* (Roadmap f-calendar-guests-mapping) are a field of addresses, or the
|
|
103
|
+
* relation `via` kept as an edge whose remote ids are guest keys, with the
|
|
104
|
+
* guest book the engine resolves that edge through.
|
|
105
|
+
*/
|
|
106
|
+
function googleMapping(app, declaration, options = {}) {
|
|
83
107
|
const { kind, fields } = declaration;
|
|
108
|
+
const zone = connectionZone(app, options.zone);
|
|
109
|
+
const now = options.now ?? (() => new Date());
|
|
110
|
+
const specs = fieldSpecs(app, kind);
|
|
111
|
+
const shape = (app.schema.tryDefinition(kind)?.fields?.shape ?? {});
|
|
84
112
|
const day = isDayField(app, kind, fields.start);
|
|
85
113
|
const when = day ? "date" : "dateTime";
|
|
86
114
|
const tag = declaration.filter?.tag;
|
|
87
115
|
const keep = declaration.filter?.keep === true;
|
|
88
116
|
const encode = {};
|
|
89
117
|
const decode = {};
|
|
90
|
-
|
|
118
|
+
const recurring = {};
|
|
119
|
+
const repeated = repeatKey(fields.start);
|
|
120
|
+
if (fields.days) {
|
|
121
|
+
/*
|
|
122
|
+
* WEEKDAYS AND TIMES OF DAY. The first occurrence is the first of the
|
|
123
|
+
* record's weekdays from the week the event is sent in, at its time on
|
|
124
|
+
* the app's wall; the end the same day (the next, past midnight). Both
|
|
125
|
+
* are encoded from the record whole, so they always agree. Read back,
|
|
126
|
+
* the rule is the weekdays — an enum's option, a list's codes — and the
|
|
127
|
+
* instants are times of day there.
|
|
128
|
+
*/
|
|
129
|
+
const days = fields.days;
|
|
130
|
+
const options = specs[days]?.type === "enum" ? (specs[days]?.options ?? []) : undefined;
|
|
131
|
+
const anchor = (node) => firstWeekday(wallIn(now().getTime(), zone).day, weekdaysOf(node[days]));
|
|
132
|
+
const at = (node, value, after) => {
|
|
133
|
+
const first = anchor(node);
|
|
134
|
+
const minutes = minutesOf(value);
|
|
135
|
+
if (!first || minutes === undefined)
|
|
136
|
+
return undefined;
|
|
137
|
+
return isoInstant(instantIn(after !== undefined && minutes <= after ? addDays(first, 1) : first, minutes, zone));
|
|
138
|
+
};
|
|
139
|
+
recurring[days] = "recurrence";
|
|
140
|
+
encode[days] = (value) => {
|
|
141
|
+
const named = weekdaysOf(value);
|
|
142
|
+
return named.length > 0 ? [weeklyRule(named)] : undefined;
|
|
143
|
+
};
|
|
144
|
+
encode[fields.start] = (value, node) => at(node, value);
|
|
145
|
+
encode[fields.end] = (value, node) => at(node, value, minutesOf(node[fields.start]));
|
|
146
|
+
decode[days] = (value) => {
|
|
147
|
+
const rule = repeatOf(value, zone);
|
|
148
|
+
const named = rule?.every === "week" && rule.on ? rule.on : [];
|
|
149
|
+
if (named.length === 0)
|
|
150
|
+
return null;
|
|
151
|
+
return options ? (options.find((option) => weekdayOf(option) === named[0]) ?? null) : named;
|
|
152
|
+
};
|
|
153
|
+
const timeOfDay = (value) => (typeof value === "string" ? hhmm(wallIn(Date.parse(value), zone).minutes) : value);
|
|
154
|
+
decode[fields.start] = timeOfDay;
|
|
155
|
+
decode[fields.end] = timeOfDay;
|
|
156
|
+
}
|
|
157
|
+
else if (isRepeatField(shape[repeated])) {
|
|
158
|
+
/*
|
|
159
|
+
* A DATE THAT REPEATS. The first occurrence is the event's start — a
|
|
160
|
+
* wall time in the app's zone, as a repeating moment is kept — and the
|
|
161
|
+
* repeat beside it is the rule, each day set apart an EXDATE at the
|
|
162
|
+
* series' time; a series that no longer repeats sends no rule.
|
|
163
|
+
*/
|
|
164
|
+
recurring[repeated] = "recurrence";
|
|
165
|
+
encode[repeated] = (value, node) => {
|
|
166
|
+
const start = wallOfMoment(node[fields.start], zone);
|
|
167
|
+
return isRepeat(value) && start ? recurrenceOf(value, start, zone) : undefined;
|
|
168
|
+
};
|
|
169
|
+
decode[repeated] = (value) => repeatOf(value, zone) ?? null;
|
|
170
|
+
if (day) {
|
|
171
|
+
encode[fields.start] = (value) => value;
|
|
172
|
+
encode[fields.end] = (value) => shiftDay(value, 1);
|
|
173
|
+
decode[fields.end] = (value) => shiftDay(value, -1);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
encode[fields.start] = (value) => instantOfMoment(value, zone);
|
|
177
|
+
encode[fields.end] = (value) => instantOfMoment(value, zone);
|
|
178
|
+
decode[fields.start] = (value) => momentOfInstant(value, zone);
|
|
179
|
+
decode[fields.end] = (value) => momentOfInstant(value, zone);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else if (day) {
|
|
91
183
|
encode[fields.start] = (value) => value;
|
|
92
184
|
encode[fields.end] = (value) => shiftDay(value, 1);
|
|
93
185
|
decode[fields.end] = (value) => shiftDay(value, -1);
|
|
@@ -106,23 +198,71 @@ function googleConnectionMapping(app, declaration) {
|
|
|
106
198
|
if (!keep)
|
|
107
199
|
decode[fields.summary] = (value) => (typeof value === "string" ? value.replace(pattern, "$1").replace(/\s{2,}/g, " ").trim() : value);
|
|
108
200
|
}
|
|
201
|
+
const guestsField = {};
|
|
202
|
+
const normalize = {};
|
|
203
|
+
let edges;
|
|
204
|
+
let guests;
|
|
205
|
+
if (typeof fields.guests === "string") {
|
|
206
|
+
/*
|
|
207
|
+
* THE GUESTS IN A FIELD: a list of addresses, or one email, kept as the
|
|
208
|
+
* attendees. Read back as the sorted addresses (the first alone for an
|
|
209
|
+
* email field), so an address added in the calendar lands in the field
|
|
210
|
+
* and nothing is dropped.
|
|
211
|
+
*/
|
|
212
|
+
const field = fields.guests;
|
|
213
|
+
const single = specs[field]?.type === "email";
|
|
214
|
+
guestsField[field] = "attendees";
|
|
215
|
+
encode[field] = (value) => attendeesOf(value);
|
|
216
|
+
decode[field] = (value) => {
|
|
217
|
+
const found = addressesOfAttendees(value);
|
|
218
|
+
return single ? (found[0] ?? null) : found;
|
|
219
|
+
};
|
|
220
|
+
// What people type ("Ben@Example.com ") is compared as the calendar keeps it, or the record would be sent on every pass.
|
|
221
|
+
normalize[field] = (value) => {
|
|
222
|
+
const found = addressesOf(value);
|
|
223
|
+
return single ? (found[0] ?? null) : found;
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
else if (fields.guests) {
|
|
227
|
+
/*
|
|
228
|
+
* THE GUESTS THROUGH A RELATION: the edge's remote ids are guest keys.
|
|
229
|
+
* Read back, each attendee is the key of the person with Invite me who
|
|
230
|
+
* holds its address, else the address itself, which the engine holds
|
|
231
|
+
* as part of the relation's value until a person matches it. Sent, the
|
|
232
|
+
* keys are split back into addresses, once each.
|
|
233
|
+
*/
|
|
234
|
+
const { via, emails = "emails", invite = "inviteMe" } = fields.guests;
|
|
235
|
+
const reaches = edgeSpecs(app, kind)[via]?.to;
|
|
236
|
+
const book = guestBook({ ...(options.graph ? { graph: options.graph } : {}), kinds: reaches === undefined || reaches === "*" ? [] : reaches, emails, invite });
|
|
237
|
+
guests = book;
|
|
238
|
+
edges = { [via]: "attendees" };
|
|
239
|
+
decode[via] = (value) => addressesOfAttendees(value).map((one) => {
|
|
240
|
+
const person = book.localId(one);
|
|
241
|
+
return (person === undefined ? undefined : book.remoteId(person)) ?? one;
|
|
242
|
+
});
|
|
243
|
+
encode[via] = (value) => attendeesOf(value);
|
|
244
|
+
}
|
|
109
245
|
const resource = {
|
|
110
246
|
kind,
|
|
111
247
|
resource: "events",
|
|
112
248
|
fields: {
|
|
113
249
|
[fields.summary]: "summary",
|
|
114
|
-
[fields.start]: `start.${when}`,
|
|
115
|
-
[fields.end]: `end.${when}`,
|
|
250
|
+
[fields.start]: `start.${fields.days ? "dateTime" : when}`,
|
|
251
|
+
[fields.end]: `end.${fields.days ? "dateTime" : when}`,
|
|
252
|
+
...recurring,
|
|
116
253
|
...(fields.location ? { [fields.location]: "location" } : {}),
|
|
117
254
|
...(fields.description ? { [fields.description]: "description" } : {}),
|
|
255
|
+
...guestsField,
|
|
118
256
|
},
|
|
257
|
+
...(edges ? { edges } : {}),
|
|
119
258
|
encode,
|
|
120
259
|
decode,
|
|
260
|
+
...(Object.keys(normalize).length > 0 ? { normalize } : {}),
|
|
121
261
|
...(declaration.direction === "read"
|
|
122
262
|
? { readonly: true, because: `Each ${kind} comes from a Google calendar this app only reads: change it there.` }
|
|
123
263
|
: {}),
|
|
124
264
|
};
|
|
125
|
-
return { system: "google-calendar", resources: [resource] };
|
|
265
|
+
return { mapping: { system: "google-calendar", resources: [resource] }, ...(guests ? { guests } : {}) };
|
|
126
266
|
}
|
|
127
267
|
/** Words compared loosely: "In progress", "in-progress" and "inProgress" are one. */
|
|
128
268
|
const loose = (word) => word.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
@@ -158,15 +298,15 @@ export function notionConnectionMapping(app, declaration, say) {
|
|
|
158
298
|
continue;
|
|
159
299
|
}
|
|
160
300
|
fields[field] = ref;
|
|
161
|
-
refs[ref] = specs[field]
|
|
301
|
+
refs[ref] = specs[field] ? notionFieldType(specs[field]) : undefined;
|
|
162
302
|
}
|
|
163
303
|
}
|
|
164
304
|
else {
|
|
165
305
|
for (const [field, spec] of Object.entries(specs)) {
|
|
166
|
-
if (!NOTION_INFERABLE.has(spec
|
|
306
|
+
if (!NOTION_INFERABLE.has(notionFieldType(spec)))
|
|
167
307
|
continue;
|
|
168
308
|
fields[field] = field;
|
|
169
|
-
refs[field] = spec
|
|
309
|
+
refs[field] = notionFieldType(spec);
|
|
170
310
|
}
|
|
171
311
|
titleRef = nameField(specs);
|
|
172
312
|
// 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.
|
|
@@ -194,7 +334,9 @@ export function notionConnectionMapping(app, declaration, say) {
|
|
|
194
334
|
break;
|
|
195
335
|
case "enum": {
|
|
196
336
|
const options = spec.options ?? [];
|
|
197
|
-
|
|
337
|
+
const option = (value) => (typeof value === "string" ? (options.find((one) => one === value) ?? options.find((one) => loose(one) === loose(value)) ?? value) : value);
|
|
338
|
+
// A choice that takes several (FR-233) arrives as a multi-select's names, each read as the option it is.
|
|
339
|
+
decode[field] = spec.multiple ? (value) => (Array.isArray(value) ? value.map(option) : value === undefined || value === null ? value : [option(value)]) : option;
|
|
198
340
|
break;
|
|
199
341
|
}
|
|
200
342
|
case "list":
|
|
@@ -242,6 +384,28 @@ export function notionConnectionMapping(app, declaration, say) {
|
|
|
242
384
|
export function creatingAct(app, kind, mapped) {
|
|
243
385
|
return creatingActFor((app.mutations ?? []), kind, mapped).act;
|
|
244
386
|
}
|
|
387
|
+
/**
|
|
388
|
+
* THE ACTS A RELATION'S LINK LANDS THROUGH, for a link the other system
|
|
389
|
+
* made or took away: its derived pair, `connect-<kind>-<relation>` and
|
|
390
|
+
* `disconnect-<kind>-<relation>`, when the app has them (the checker says
|
|
391
|
+
* when it has not); absent, the link is left as it is.
|
|
392
|
+
*/
|
|
393
|
+
function relationActs(store, kind) {
|
|
394
|
+
const has = (name) => {
|
|
395
|
+
try {
|
|
396
|
+
store.mutation(name);
|
|
397
|
+
return true;
|
|
398
|
+
}
|
|
399
|
+
catch {
|
|
400
|
+
return false;
|
|
401
|
+
}
|
|
402
|
+
};
|
|
403
|
+
const act = (which) => ({ localId, edge, to }) => {
|
|
404
|
+
const name = relationActName(which, kind, edge);
|
|
405
|
+
return has(name) ? { name, args: { id: localId, to } } : null;
|
|
406
|
+
};
|
|
407
|
+
return { connectInbound: act("connect"), disconnectInbound: act("disconnect") };
|
|
408
|
+
}
|
|
245
409
|
/** Our fields from a remote record's, decoded: what a record made from it holds. */
|
|
246
410
|
function decodedBy(resource) {
|
|
247
411
|
return (fields) => {
|
|
@@ -264,18 +428,26 @@ function googleConnection(run, declaration) {
|
|
|
264
428
|
const { app, store } = run;
|
|
265
429
|
if (!run.calendarId)
|
|
266
430
|
throw new Error(`connection ${run.name}: a Google connection needs its calendar's id`);
|
|
267
|
-
const
|
|
431
|
+
const zone = connectionZone(app, store.timeZone);
|
|
432
|
+
const { mapping, guests } = googleMapping(app, declaration, { zone, graph: store.graph, ...(run.now ? { now: run.now } : {}) });
|
|
268
433
|
const resource = mapping.resources[0];
|
|
434
|
+
// A record that recurs is one event with a rule (FR-230): the series alone is kept, never one week's exception, and Google expands a timed rule in a named zone.
|
|
435
|
+
const recurring = Object.values(resource.fields).includes("recurrence");
|
|
436
|
+
const repeated = repeatKey(declaration.fields.start);
|
|
437
|
+
const timed = resource.fields[declaration.fields.start] === "start.dateTime";
|
|
269
438
|
const color = declaration.filter?.color ? GOOGLE_COLORS[declaration.filter.color] : undefined;
|
|
270
439
|
const remote = googleCalendar({
|
|
271
440
|
calendarId: run.calendarId,
|
|
272
441
|
token: run.token,
|
|
273
442
|
...(run.fetch ? { fetch: run.fetch } : {}),
|
|
274
|
-
keep: (item) => inConnectionFilter(declaration, item),
|
|
443
|
+
keep: (item) => inConnectionFilter(declaration, item) && !(recurring && item["recurringEventId"] !== undefined),
|
|
275
444
|
madeHere: {
|
|
276
445
|
...(color ? { colorId: color } : {}),
|
|
446
|
+
...(recurring && timed ? { start: { timeZone: zone }, end: { timeZone: zone } } : {}),
|
|
277
447
|
extendedProperties: { private: { [MADE_BY_GRAVIEW]: app.name } },
|
|
278
448
|
},
|
|
449
|
+
// Google mails the guests only when the declaration asks (`guests.notify`); every write says so either way.
|
|
450
|
+
notify: typeof declaration.fields.guests === "object" && declaration.fields.guests.notify === true,
|
|
279
451
|
});
|
|
280
452
|
const creates = creatingAct(app, declaration.kind, Object.keys(resource.fields));
|
|
281
453
|
const decoded = decodedBy(resource);
|
|
@@ -284,16 +456,23 @@ function googleConnection(run, declaration) {
|
|
|
284
456
|
store,
|
|
285
457
|
mapping,
|
|
286
458
|
remote,
|
|
459
|
+
// The guests' relation resolves through the guest book: a person's remote id is their guest key.
|
|
460
|
+
...(guests ? { links: guests, ...relationActs(store, declaration.kind) } : {}),
|
|
287
461
|
conflicts: declaration.conflicts ?? "report",
|
|
288
462
|
applyInbound: ({ localId, fields }) => ({ name: `edit-${declaration.kind}`, args: { id: localId, ...fields } }),
|
|
289
463
|
removeInbound: ({ localId }) => ({ name: `remove-${declaration.kind}`, args: { id: localId } }),
|
|
290
464
|
createInbound: ({ id, fields }) => {
|
|
291
465
|
const values = decoded(fields);
|
|
292
|
-
// An event of the other sort (all-day for a timed kind, or timed for a day) has no value here to keep.
|
|
293
|
-
if (!creates || values[declaration.fields.start] === undefined)
|
|
466
|
+
// An event of the other sort (all-day for a timed kind, or timed for a day) has no value here to keep; nor has a one-off in a weekly kind, which keeps no date.
|
|
467
|
+
if (!creates || values[declaration.fields.start] === undefined || (declaration.fields.days && !values[declaration.fields.days]))
|
|
294
468
|
return null;
|
|
295
469
|
made += 1;
|
|
296
|
-
|
|
470
|
+
const madeAs = `${declaration.kind}:${run.name}-${id.slice(0, 16)}-${made}`;
|
|
471
|
+
// A date's repeat is given to the record once it is there, through its edit: the act that makes one does not take it.
|
|
472
|
+
const { [repeated]: repeat, ...rest } = values;
|
|
473
|
+
// An empty part (no guest in an email field) is no value for a record being made.
|
|
474
|
+
const given = Object.fromEntries(Object.entries(repeated in values ? rest : values).filter(([, value]) => value !== null && value !== undefined));
|
|
475
|
+
return { name: creates, args: { id: madeAs, ...given }, ...(repeat ? { then: [{ name: `edit-${declaration.kind}`, args: { id: madeAs, [repeated]: repeat } }] } : {}) };
|
|
297
476
|
},
|
|
298
477
|
}, run.state);
|
|
299
478
|
const unguard = declaration.direction === "read" ? engine.guard() : undefined;
|
|
@@ -321,27 +500,12 @@ function notionConnection(run, declaration) {
|
|
|
321
500
|
});
|
|
322
501
|
const creates = creatingAct(app, declaration.kind, Object.keys(resource.fields));
|
|
323
502
|
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
503
|
engine = new SyncEngine({
|
|
339
504
|
store,
|
|
340
505
|
mapping,
|
|
341
506
|
remote,
|
|
342
507
|
...(run.links ? { links: run.links } : {}),
|
|
343
|
-
|
|
344
|
-
disconnectInbound: relationAct("disconnect"),
|
|
508
|
+
...relationActs(store, declaration.kind),
|
|
345
509
|
conflicts: declaration.conflicts ?? "report",
|
|
346
510
|
applyInbound: ({ localId, fields }) => ({ name: `edit-${declaration.kind}`, args: { id: localId, ...fields } }),
|
|
347
511
|
removeInbound: ({ localId }) => ({ name: `remove-${declaration.kind}`, args: { id: localId } }),
|
|
@@ -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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"}
|
package/dist/sync/engine.d.ts
CHANGED
|
@@ -115,10 +115,7 @@ export interface SyncOptions<S extends AnySchema> {
|
|
|
115
115
|
readonly resource: string;
|
|
116
116
|
readonly id: string;
|
|
117
117
|
readonly fields: Readonly<Record<string, unknown>>;
|
|
118
|
-
}):
|
|
119
|
-
readonly name: string;
|
|
120
|
-
readonly args: Record<string, unknown>;
|
|
121
|
-
} | null;
|
|
118
|
+
}): Made | null;
|
|
122
119
|
/**
|
|
123
120
|
* WHERE A RECORD A RELATION REACHES IS FOUND, by either id: every engine
|
|
124
121
|
* of the app when its relations reach records another engine keeps
|
|
@@ -140,6 +137,18 @@ export interface SyncOptions<S extends AnySchema> {
|
|
|
140
137
|
readonly to: string;
|
|
141
138
|
}): MutationCall | null;
|
|
142
139
|
}
|
|
140
|
+
/** What one change coming in is, as the acts it lands through: a record made or its fields, and its links. */
|
|
141
|
+
/**
|
|
142
|
+
* A RECORD MADE FROM THE REMOTE'S: the act that makes it, with its id among
|
|
143
|
+
* the arguments where the connection minted one, and the acts that follow
|
|
144
|
+
* it in the same batch (`then`) — what the making act does not take, as a
|
|
145
|
+
* date's repeat, given to the record once it is there (FR-230).
|
|
146
|
+
*/
|
|
147
|
+
export interface Made {
|
|
148
|
+
readonly name: string;
|
|
149
|
+
readonly args: Record<string, unknown>;
|
|
150
|
+
readonly then?: readonly MutationCall[];
|
|
151
|
+
}
|
|
143
152
|
/**
|
|
144
153
|
* ONE PLACE TO FIND A RECORD BY EITHER ID, over every engine added to it:
|
|
145
154
|
* what an app's engines share when their relations reach each other's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,aAAa,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAyB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIjF,OAAO,EAIL,KAAK,cAAc,EAEnB,KAAK,YAAY,EAGjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAEhB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AAEpB,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,yHAAyH;IACzH,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,iHAAiH;AACjH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAGvD;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/sync/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/engine.js
CHANGED
|
@@ -10,11 +10,13 @@ export function edgeValue(ids) {
|
|
|
10
10
|
const list = Array.isArray(ids) ? [...new Set(ids.filter((id) => typeof id === "string" && id !== ""))].sort() : typeof ids === "string" && ids !== "" ? [ids] : [];
|
|
11
11
|
return list.length > 0 ? list : null;
|
|
12
12
|
}
|
|
13
|
-
/** Reads a node's mapped values, in OUR field names. */
|
|
13
|
+
/** Reads a node's mapped values, in OUR field names — each as both sides compare it, where the mapping says what people type is looser (`normalize`). */
|
|
14
14
|
function mappedValues(node, mapping) {
|
|
15
15
|
const values = {};
|
|
16
|
-
for (const ours of Object.keys(mapping.fields))
|
|
17
|
-
|
|
16
|
+
for (const ours of Object.keys(mapping.fields)) {
|
|
17
|
+
const normalize = mapping.normalize?.[ours];
|
|
18
|
+
values[ours] = normalize ? normalize(node[ours]) : node[ours];
|
|
19
|
+
}
|
|
18
20
|
return values;
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
@@ -51,6 +53,8 @@ const same = (a, b) => JSON.stringify(a ?? null) === JSON.stringify(b ?? null);
|
|
|
51
53
|
/** Where a conflict is held: by node and field, and a record deleted here by node alone. */
|
|
52
54
|
const heldKey = (localId, field = "") => `${localId}\u0000${field}`;
|
|
53
55
|
const keyOf = (conflict) => heldKey(conflict.localId, conflict.field);
|
|
56
|
+
/** The calls a record is made with: the making act, then what follows it. */
|
|
57
|
+
const madeCalls = (made) => [{ name: made.name, args: made.args }, ...(made.then ?? [])];
|
|
54
58
|
const hyphenated = (id) => {
|
|
55
59
|
const hex = id.replace(/-/g, "").toLowerCase();
|
|
56
60
|
return /^[0-9a-f]{32}$/.test(hex) ? `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}` : undefined;
|
|
@@ -184,7 +188,7 @@ export class SyncEngine {
|
|
|
184
188
|
const fields = Object.fromEntries(Object.entries(values).filter(([key]) => !(key in edges)));
|
|
185
189
|
const calls = [];
|
|
186
190
|
if (create)
|
|
187
|
-
calls.push(create);
|
|
191
|
+
calls.push(...madeCalls(create));
|
|
188
192
|
else if (Object.keys(fields).length > 0)
|
|
189
193
|
calls.push(this.options.applyInbound({ localId, kind: mapping.kind, fields }));
|
|
190
194
|
const held = {};
|
|
@@ -595,7 +599,7 @@ export class SyncEngine {
|
|
|
595
599
|
// Its links are made in the same batch, which needs the id it is made with; without one, they wait for the next pass.
|
|
596
600
|
const landed = madeAs
|
|
597
601
|
? this.landInbound({ localId: madeAs, mapping, values, create: created }, `${this.options.mapping.system}: new ${change.resource}`, { localId: madeAs, resource: change.resource, id: change.id }, refused)?.result
|
|
598
|
-
: this.land(created, `${this.options.mapping.system}: new ${change.resource}`, { localId: "", resource: change.resource, id: change.id }, refused);
|
|
602
|
+
: this.land(madeCalls(created), `${this.options.mapping.system}: new ${change.resource}`, { localId: "", resource: change.resource, id: change.id }, refused);
|
|
599
603
|
if (!landed) {
|
|
600
604
|
skipped[remoteKey] = change.version;
|
|
601
605
|
continue;
|
|
@@ -888,7 +892,7 @@ export class SyncEngine {
|
|
|
888
892
|
const madeAs = String(created.args["id"] ?? "");
|
|
889
893
|
const about = { localId, resource: link.resource, id: link.id };
|
|
890
894
|
const intent = `${this.options.mapping.system}: restored ${link.resource}`;
|
|
891
|
-
const result = madeAs ? this.landInbound({ localId: madeAs, mapping, values: record, create: created }, intent, about, refused)?.result : this.land(created, intent, about, refused);
|
|
895
|
+
const result = madeAs ? this.landInbound({ localId: madeAs, mapping, values: record, create: created }, intent, about, refused)?.result : this.land(madeCalls(created), intent, about, refused);
|
|
892
896
|
if (!result)
|
|
893
897
|
return { links };
|
|
894
898
|
const id = String(created.args["id"] ?? result.writes[0] ?? "");
|