@graview/core 0.1.30 → 0.1.32
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 +11 -1
- package/dist/app.d.ts +8 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js.map +1 -1
- package/dist/catalog.d.ts +312 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +459 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cli/document-schema.d.ts.map +1 -1
- package/dist/cli/document-schema.js +9 -0
- package/dist/cli/document-schema.js.map +1 -1
- package/dist/days.d.ts +7 -1
- package/dist/days.d.ts.map +1 -1
- package/dist/days.js +10 -4
- package/dist/days.js.map +1 -1
- package/dist/document/compile-checked.d.ts.map +1 -1
- package/dist/document/compile-checked.js +3 -2
- package/dist/document/compile-checked.js.map +1 -1
- package/dist/document/compiled.d.ts.map +1 -1
- package/dist/document/compiled.js +2 -0
- package/dist/document/compiled.js.map +1 -1
- package/dist/document/connection-findings.d.ts +6 -0
- package/dist/document/connection-findings.d.ts.map +1 -0
- package/dist/document/connection-findings.js +110 -0
- package/dist/document/connection-findings.js.map +1 -0
- package/dist/document/connection-spec.d.ts +38 -0
- package/dist/document/connection-spec.d.ts.map +1 -0
- package/dist/document/connection-spec.js +43 -0
- package/dist/document/connection-spec.js.map +1 -0
- package/dist/document/schema.d.ts +6 -5
- package/dist/document/schema.d.ts.map +1 -1
- package/dist/document/schema.js +7 -0
- package/dist/document/schema.js.map +1 -1
- package/dist/document/to-document.d.ts.map +1 -1
- package/dist/document/to-document.js +1 -0
- package/dist/document/to-document.js.map +1 -1
- package/dist/document.schema.json +149 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/installation.d.ts +1 -1
- package/dist/mutations/arg-shape.d.ts +2 -0
- package/dist/mutations/arg-shape.d.ts.map +1 -1
- package/dist/mutations/arg-shape.js +4 -0
- package/dist/mutations/arg-shape.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 +1 -1
- package/dist/mutations/form.js.map +1 -1
- package/dist/ops/lineage.d.ts +7 -0
- package/dist/ops/lineage.d.ts.map +1 -1
- package/dist/ops/lineage.js +5 -4
- package/dist/ops/lineage.js.map +1 -1
- package/dist/scaffold/project.d.ts.map +1 -1
- package/dist/scaffold/project.js +3 -0
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/ui.d.ts.map +1 -1
- package/dist/scaffold/ui.js +3 -0
- package/dist/scaffold/ui.js.map +1 -1
- package/dist/subscription-shape.d.ts +135 -0
- package/dist/subscription-shape.d.ts.map +1 -0
- package/dist/subscription-shape.js +55 -0
- package/dist/subscription-shape.js.map +1 -0
- package/dist/subscriptions.d.ts +68 -0
- package/dist/subscriptions.d.ts.map +1 -0
- package/dist/subscriptions.js +425 -0
- package/dist/subscriptions.js.map +1 -0
- package/dist/sync/connection-filter.d.ts +12 -0
- package/dist/sync/connection-filter.d.ts.map +1 -0
- package/dist/sync/connection-filter.js +34 -0
- package/dist/sync/connection-filter.js.map +1 -0
- package/dist/sync/connection.d.ts +65 -0
- package/dist/sync/connection.d.ts.map +1 -0
- package/dist/sync/connection.js +148 -0
- package/dist/sync/connection.js.map +1 -0
- package/dist/sync/engine.d.ts.map +1 -1
- package/dist/sync/engine.js +4 -0
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync/google-calendar.d.ts +27 -2
- package/dist/sync/google-calendar.d.ts.map +1 -1
- package/dist/sync/google-calendar.js +55 -14
- package/dist/sync/google-calendar.js.map +1 -1
- package/dist/sync/index.d.ts +3 -1
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +1 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/wall-time.d.ts +60 -0
- package/dist/wall-time.d.ts.map +1 -0
- package/dist/wall-time.js +111 -0
- package/dist/wall-time.js.map +1 -0
- package/dist/when-typed.d.ts +15 -0
- package/dist/when-typed.d.ts.map +1 -0
- package/dist/when-typed.js +158 -0
- package/dist/when-typed.js.map +1 -0
- package/dist/words.d.ts +6 -1
- package/dist/words.d.ts.map +1 -1
- package/dist/words.js +6 -1
- package/dist/words.js.map +1 -1
- package/package.json +9 -1
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/** A day and, where it has one, a time of day in minutes after midnight, on the reader's wall. */
|
|
2
|
+
export interface WallTime {
|
|
3
|
+
/** `YYYY-MM-DD`. */
|
|
4
|
+
readonly day: string;
|
|
5
|
+
readonly minutes?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare const DAY_MS = 86400000;
|
|
8
|
+
export declare const pad: (n: number) => string;
|
|
9
|
+
export declare const dayOfUtc: (stamp: number) => string;
|
|
10
|
+
export declare const utcOf: (day: string) => number;
|
|
11
|
+
export declare const addDays: (day: string, days: number) => string;
|
|
12
|
+
export declare const weekdayOf: (day: string) => number;
|
|
13
|
+
/** A real day of the calendar, or undefined: "2026-02-31" is none. */
|
|
14
|
+
export declare function dayFrom(year: number, month: number, date: number): string | undefined;
|
|
15
|
+
/** The reader's wall time now: today, and the minutes since midnight. */
|
|
16
|
+
export declare function wallNow(at?: Date): WallTime & {
|
|
17
|
+
readonly minutes: number;
|
|
18
|
+
};
|
|
19
|
+
/** Whether a stored moment names an instant: it carries a `Z` or an offset after its time. */
|
|
20
|
+
export declare const namesInstant: (value: string) => boolean;
|
|
21
|
+
/**
|
|
22
|
+
* A stored day or moment as a wall time: an instant on the reader's clock, a
|
|
23
|
+
* wall time as it was written, a day as a day. Undefined for anything that
|
|
24
|
+
* is not a date.
|
|
25
|
+
*/
|
|
26
|
+
export declare function wallOfStored(value: unknown): WallTime | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* A wall time as the field keeps it: a day as `YYYY-MM-DD`; a moment as an
|
|
29
|
+
* instant in UTC (`2026-10-17T19:00:00Z`) where the field keeps instants, or
|
|
30
|
+
* as the wall time written (`2026-10-17T15:00`) where it takes no zone.
|
|
31
|
+
*/
|
|
32
|
+
export declare function storedOfWall(wall: WallTime, options: {
|
|
33
|
+
readonly time: boolean;
|
|
34
|
+
readonly instant: boolean;
|
|
35
|
+
}): string;
|
|
36
|
+
/** The reader's time zone, by name and as it is said short: "America/New_York", "EDT". */
|
|
37
|
+
export declare function zoneSaid(locale?: string, at?: Date): {
|
|
38
|
+
readonly zone: string;
|
|
39
|
+
readonly short: string;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Where an end goes when its start moves: as far as the start moved, so a
|
|
43
|
+
* meeting keeps its length. A start given for the first time puts an empty
|
|
44
|
+
* end an hour after it, where the two hold times; a day's end is left for
|
|
45
|
+
* the person to say. An end already given, with no start before, is kept.
|
|
46
|
+
*/
|
|
47
|
+
export declare function endAfterStartMoved(before: string | undefined, after: string, end: string | undefined, options: {
|
|
48
|
+
readonly time: boolean;
|
|
49
|
+
readonly instant: boolean;
|
|
50
|
+
}): string | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* Which of a kind's (or an act's) date fields is a start and which its end:
|
|
53
|
+
* its `start` and `end` roles where it declares them, else the fields named
|
|
54
|
+
* for them. Undefined unless both are there.
|
|
55
|
+
*/
|
|
56
|
+
export declare function startAndEndOf(fields: readonly string[], roles?: Readonly<Record<string, string | undefined>>): {
|
|
57
|
+
readonly start: string;
|
|
58
|
+
readonly end: string;
|
|
59
|
+
} | undefined;
|
|
60
|
+
//# sourceMappingURL=wall-time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wall-time.d.ts","sourceRoot":"","sources":["../src/wall-time.ts"],"names":[],"mappings":"AAWA,kGAAkG;AAClG,MAAM,WAAW,QAAQ;IACvB,oBAAoB;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,MAAM,WAAa,CAAC;AAGjC,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,KAAG,MAAoC,CAAC;AACrE,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,KAAG,MAAoD,CAAC;AAC9F,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,KAAG,MAA6E,CAAC;AAClH,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,EAAE,MAAM,MAAM,KAAG,MAA8C,CAAC;AACnG,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,KAAG,MAA0C,CAAC;AAEnF,sEAAsE;AACtE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIrF;AAED,yEAAyE;AACzE,wBAAgB,OAAO,CAAC,EAAE,GAAE,IAAiB,GAAG,QAAQ,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAEtF;AAED,8FAA8F;AAC9F,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,OAAgE,CAAC;AAE9G;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAUjE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAOnH;AAED,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,GAAE,IAAiB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CASlH;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC7D,MAAM,GAAG,SAAS,CAapB;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAM,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAI/K"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A DAY AND A TIME ON THE READER'S WALL, AND AS A FIELD KEEPS THEM (Roadmap
|
|
3
|
+
* f-date-inputs): an instant read back on the reader's clock, a wall time
|
|
4
|
+
* kept as an instant in UTC or as written, the zone it is read in, and an
|
|
5
|
+
* end that moves with its start. Apart from the reading of what is typed
|
|
6
|
+
* (`when-typed.ts`), which only a date's editor needs, so that what a
|
|
7
|
+
* record's value and the calendar draw with carries none of it.
|
|
8
|
+
*/
|
|
9
|
+
import { DEFAULT_LOCALE } from "./days.js";
|
|
10
|
+
export const DAY_MS = 86_400_000;
|
|
11
|
+
const ISO_DAY_AT_START = /^(\d{4})-(\d{2})-(\d{2})/;
|
|
12
|
+
export const pad = (n) => String(n).padStart(2, "0");
|
|
13
|
+
export const dayOfUtc = (stamp) => new Date(stamp).toISOString().slice(0, 10);
|
|
14
|
+
export const utcOf = (day) => Date.UTC(+day.slice(0, 4), +day.slice(5, 7) - 1, +day.slice(8, 10));
|
|
15
|
+
export const addDays = (day, days) => dayOfUtc(utcOf(day) + days * DAY_MS);
|
|
16
|
+
export const weekdayOf = (day) => new Date(utcOf(day)).getUTCDay();
|
|
17
|
+
/** A real day of the calendar, or undefined: "2026-02-31" is none. */
|
|
18
|
+
export function dayFrom(year, month, date) {
|
|
19
|
+
if (!(month >= 1 && month <= 12 && date >= 1 && date <= 31))
|
|
20
|
+
return undefined;
|
|
21
|
+
const day = `${String(year).padStart(4, "0")}-${pad(month)}-${pad(date)}`;
|
|
22
|
+
return dayOfUtc(utcOf(day)) === day ? day : undefined;
|
|
23
|
+
}
|
|
24
|
+
/** The reader's wall time now: today, and the minutes since midnight. */
|
|
25
|
+
export function wallNow(at = new Date()) {
|
|
26
|
+
return { day: `${at.getFullYear()}-${pad(at.getMonth() + 1)}-${pad(at.getDate())}`, minutes: at.getHours() * 60 + at.getMinutes() };
|
|
27
|
+
}
|
|
28
|
+
/** Whether a stored moment names an instant: it carries a `Z` or an offset after its time. */
|
|
29
|
+
export const namesInstant = (value) => /T\d\d:\d\d(:[\d.]+)?(Z|[+-]\d\d:?\d\d)$/.test(value);
|
|
30
|
+
/**
|
|
31
|
+
* A stored day or moment as a wall time: an instant on the reader's clock, a
|
|
32
|
+
* wall time as it was written, a day as a day. Undefined for anything that
|
|
33
|
+
* is not a date.
|
|
34
|
+
*/
|
|
35
|
+
export function wallOfStored(value) {
|
|
36
|
+
if (typeof value !== "string")
|
|
37
|
+
return undefined;
|
|
38
|
+
if (namesInstant(value)) {
|
|
39
|
+
const at = new Date(value);
|
|
40
|
+
return Number.isNaN(at.getTime()) ? undefined : wallNow(at);
|
|
41
|
+
}
|
|
42
|
+
const match = /^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2}))?/.exec(value);
|
|
43
|
+
if (!match || !dayFrom(Number(match[1]), Number(match[2]), Number(match[3])))
|
|
44
|
+
return undefined;
|
|
45
|
+
const day = value.slice(0, 10);
|
|
46
|
+
return match[4] === undefined ? { day } : { day, minutes: Number(match[4]) * 60 + Number(match[5]) };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* A wall time as the field keeps it: a day as `YYYY-MM-DD`; a moment as an
|
|
50
|
+
* instant in UTC (`2026-10-17T19:00:00Z`) where the field keeps instants, or
|
|
51
|
+
* as the wall time written (`2026-10-17T15:00`) where it takes no zone.
|
|
52
|
+
*/
|
|
53
|
+
export function storedOfWall(wall, options) {
|
|
54
|
+
if (!options.time)
|
|
55
|
+
return wall.day;
|
|
56
|
+
const minutes = wall.minutes ?? 9 * 60;
|
|
57
|
+
if (!options.instant)
|
|
58
|
+
return `${wall.day}T${pad(Math.floor(minutes / 60))}:${pad(minutes % 60)}`;
|
|
59
|
+
const [, year, month, date] = ISO_DAY_AT_START.exec(wall.day);
|
|
60
|
+
const at = new Date(Number(year), Number(month) - 1, Number(date), Math.floor(minutes / 60), minutes % 60);
|
|
61
|
+
return at.toISOString().replace(/\.\d{3}Z$/, "Z");
|
|
62
|
+
}
|
|
63
|
+
/** The reader's time zone, by name and as it is said short: "America/New_York", "EDT". */
|
|
64
|
+
export function zoneSaid(locale, at = new Date()) {
|
|
65
|
+
const zone = Intl.DateTimeFormat().resolvedOptions().timeZone ?? "UTC";
|
|
66
|
+
let short = zone;
|
|
67
|
+
try {
|
|
68
|
+
short = new Intl.DateTimeFormat(locale ?? DEFAULT_LOCALE, { timeZoneName: "short" }).formatToParts(at).find((part) => part.type === "timeZoneName")?.value ?? zone;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
short = zone;
|
|
72
|
+
}
|
|
73
|
+
return { zone, short };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Where an end goes when its start moves: as far as the start moved, so a
|
|
77
|
+
* meeting keeps its length. A start given for the first time puts an empty
|
|
78
|
+
* end an hour after it, where the two hold times; a day's end is left for
|
|
79
|
+
* the person to say. An end already given, with no start before, is kept.
|
|
80
|
+
*/
|
|
81
|
+
export function endAfterStartMoved(before, after, end, options) {
|
|
82
|
+
const moved = wallOfStored(after);
|
|
83
|
+
if (!moved)
|
|
84
|
+
return end;
|
|
85
|
+
const was = before === undefined ? undefined : wallOfStored(before);
|
|
86
|
+
const ending = end === undefined ? undefined : wallOfStored(end);
|
|
87
|
+
const at = (wall) => utcOf(wall.day) + (wall.minutes ?? 0) * 60_000;
|
|
88
|
+
const shifted = (from, by) => {
|
|
89
|
+
const stamp = at(from) + by;
|
|
90
|
+
return { day: dayOfUtc(stamp), ...(options.time ? { minutes: Math.round((stamp % DAY_MS) / 60_000) } : {}) };
|
|
91
|
+
};
|
|
92
|
+
if (was && ending)
|
|
93
|
+
return storedOfWall(shifted(ending, at(moved) - at(was)), options);
|
|
94
|
+
if (ending && at(ending) >= at(moved))
|
|
95
|
+
return end;
|
|
96
|
+
return options.time ? storedOfWall(shifted(moved, 3_600_000), options) : end;
|
|
97
|
+
}
|
|
98
|
+
/** A field that says when something starts, and one that says when it ends. */
|
|
99
|
+
const STARTS = /^(start|starts|startsAt|startsOn|startAt|begins|from|opens|checkIn)$/i;
|
|
100
|
+
const ENDS = /^(end|ends|endsAt|endsOn|endAt|until|to|finish|finishes|closes|through|checkOut)$/i;
|
|
101
|
+
/**
|
|
102
|
+
* Which of a kind's (or an act's) date fields is a start and which its end:
|
|
103
|
+
* its `start` and `end` roles where it declares them, else the fields named
|
|
104
|
+
* for them. Undefined unless both are there.
|
|
105
|
+
*/
|
|
106
|
+
export function startAndEndOf(fields, roles = {}) {
|
|
107
|
+
const start = (roles["start"] && fields.includes(roles["start"]) ? roles["start"] : undefined) ?? fields.find((field) => STARTS.test(field));
|
|
108
|
+
const end = (roles["end"] && fields.includes(roles["end"]) ? roles["end"] : undefined) ?? fields.find((field) => field !== start && ENDS.test(field));
|
|
109
|
+
return start && end ? { start, end } : undefined;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=wall-time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wall-time.js","sourceRoot":"","sources":["../src/wall-time.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type WallTime } from "./wall-time.js";
|
|
2
|
+
/**
|
|
3
|
+
* What a person typed, read as a day and — for a field with a time — a time
|
|
4
|
+
* of day on their wall. `today` is the reader's today; `base` is what the
|
|
5
|
+
* field held, so a time typed alone keeps its day and a day typed alone keeps
|
|
6
|
+
* its time (else 9 in the morning). A time typed for a field that holds only
|
|
7
|
+
* a day is let go. Undefined when the words name no day this can read.
|
|
8
|
+
*/
|
|
9
|
+
export declare function readWhenTyped(text: string, options: {
|
|
10
|
+
readonly today: string;
|
|
11
|
+
readonly time: boolean;
|
|
12
|
+
readonly base?: WallTime;
|
|
13
|
+
readonly locale?: string;
|
|
14
|
+
}): WallTime | undefined;
|
|
15
|
+
//# sourceMappingURL=when-typed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when-typed.d.ts","sourceRoot":"","sources":["../src/when-typed.ts"],"names":[],"mappings":"AAmBA,OAAO,EAA8C,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAwG3F;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9G,QAAQ,GAAG,SAAS,CAYtB"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A DAY OR A MOMENT, TYPED AS PEOPLE SAY IT (Roadmap f-date-inputs).
|
|
3
|
+
*
|
|
4
|
+
* "tomorrow 3pm", "Fri 10:30", "17 Oct", "in 2 weeks", "10/17": every
|
|
5
|
+
* surface that asks for a date — a record's value changed in place, a
|
|
6
|
+
* card's, an act's form on either face — reads what was typed here, so the
|
|
7
|
+
* same words mean the same day everywhere. What cannot be read is refused,
|
|
8
|
+
* never guessed: "sometime soon" is no day, and "31 Feb" is none either.
|
|
9
|
+
*
|
|
10
|
+
* WALL TIME AND INSTANTS. What is typed is a time on the reader's wall
|
|
11
|
+
* (`WallTime`: a day and, with a time, minutes after midnight). A field that
|
|
12
|
+
* keeps an instant — a document's `datetime` — stores it in UTC with its
|
|
13
|
+
* `Z`, so a meeting set in New York is the same moment read in London; a
|
|
14
|
+
* field whose own pattern takes a bare `YYYY-MM-DDTHH:MM` keeps the wall
|
|
15
|
+
* time as written. Reading back (`wallOfStored`) puts an instant on the
|
|
16
|
+
* reader's clock and a wall time where it was written.
|
|
17
|
+
*/
|
|
18
|
+
import { DEFAULT_LOCALE } from "./days.js";
|
|
19
|
+
import { addDays, dayFrom, utcOf, weekdayOf, DAY_MS } from "./wall-time.js";
|
|
20
|
+
const MONTHS = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
|
|
21
|
+
const WEEKDAYS = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"];
|
|
22
|
+
const MONTH_WORD = "(jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|june?|july?|aug(?:ust)?|sept?(?:ember)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?)";
|
|
23
|
+
const WEEKDAY_WORD = "(sun(?:day)?|mon(?:day)?|tue(?:s|sday)?|wed(?:nesday)?|thu(?:r|rs|rsday)?|fri(?:day)?|sat(?:urday)?)";
|
|
24
|
+
const monthOf = (word) => MONTHS.indexOf(word.slice(0, 3)) + 1;
|
|
25
|
+
const fullYear = (year) => (year === undefined ? undefined : year.length === 2 ? 2000 + Number(year) : Number(year));
|
|
26
|
+
/** Whether a locale writes the month before the day in digits: 10/17 in the US, 17/10 nearly everywhere else. */
|
|
27
|
+
function monthFirst(locale) {
|
|
28
|
+
try {
|
|
29
|
+
const parts = new Intl.DateTimeFormat(locale, { month: "numeric", day: "numeric" }).formatToParts(0).map((part) => part.type);
|
|
30
|
+
return parts.indexOf("month") < parts.indexOf("day");
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/*
|
|
37
|
+
* A time of day, taken out of the words: "3pm", "3:30 p.m.", "15:30", "noon",
|
|
38
|
+
* "at 3". What is left is the day. An hour past what a clock shows is no
|
|
39
|
+
* time ("25pm"), and the whole reading fails rather than dropping it.
|
|
40
|
+
*/
|
|
41
|
+
function timeIn(text) {
|
|
42
|
+
const take = (match, minutes) => ({ minutes, rest: `${text.slice(0, match.index)} ${text.slice(match.index + match[0].length)}` });
|
|
43
|
+
let match = /\b(noon|midday)\b/.exec(text);
|
|
44
|
+
if (match)
|
|
45
|
+
return take(match, 12 * 60);
|
|
46
|
+
match = /\bmidnight\b/.exec(text);
|
|
47
|
+
if (match)
|
|
48
|
+
return take(match, 0);
|
|
49
|
+
match = /\b(\d{1,2})(?::(\d{2}))?\s*([ap])\.?m?\.?(?=\s|$)/.exec(text);
|
|
50
|
+
if (match) {
|
|
51
|
+
const hour = Number(match[1]);
|
|
52
|
+
const minute = Number(match[2] ?? 0);
|
|
53
|
+
if (hour < 1 || hour > 12 || minute > 59)
|
|
54
|
+
return { rest: text, bad: true };
|
|
55
|
+
return take(match, ((hour % 12) + (match[3] === "p" ? 12 : 0)) * 60 + minute);
|
|
56
|
+
}
|
|
57
|
+
match = /\b(\d{1,2}):(\d{2})\b/.exec(text);
|
|
58
|
+
if (match) {
|
|
59
|
+
const hour = Number(match[1]);
|
|
60
|
+
const minute = Number(match[2]);
|
|
61
|
+
if (hour > 23 || minute > 59)
|
|
62
|
+
return { rest: text, bad: true };
|
|
63
|
+
return take(match, hour * 60 + minute);
|
|
64
|
+
}
|
|
65
|
+
// "at 3" is an hour of the working day: 1 to 7 are the afternoon's.
|
|
66
|
+
match = /\bat\s+(\d{1,2})\b/.exec(text);
|
|
67
|
+
if (match) {
|
|
68
|
+
const hour = Number(match[1]);
|
|
69
|
+
if (hour > 23)
|
|
70
|
+
return { rest: text, bad: true };
|
|
71
|
+
return take(match, (hour >= 1 && hour <= 7 ? hour + 12 : hour) * 60);
|
|
72
|
+
}
|
|
73
|
+
const part = /\b(morning|afternoon|evening|tonight)\b/.exec(text);
|
|
74
|
+
if (part) {
|
|
75
|
+
const minutes = { morning: 9, afternoon: 15, evening: 18, tonight: 20 }[part[1]] * 60;
|
|
76
|
+
// "tonight" is a day as well as a time: today's.
|
|
77
|
+
return { minutes, rest: part[1] === "tonight" ? `${text.slice(0, part.index)} today ${text.slice(part.index + part[0].length)}` : `${text.slice(0, part.index)} ${text.slice(part.index + part[0].length)}` };
|
|
78
|
+
}
|
|
79
|
+
return { rest: text };
|
|
80
|
+
}
|
|
81
|
+
/** The day the rest of the words name, from `today`; undefined when they name none, or name it in words not read here. */
|
|
82
|
+
function dayIn(text, today, locale) {
|
|
83
|
+
const words = text.replace(/\b(on|at|the|of|this)\b/g, " ").replace(/\s+/g, " ").trim();
|
|
84
|
+
if (words === "")
|
|
85
|
+
return null;
|
|
86
|
+
if (words === "today" || words === "now")
|
|
87
|
+
return today;
|
|
88
|
+
if (words === "tomorrow" || words === "tmrw" || words === "tmr")
|
|
89
|
+
return addDays(today, 1);
|
|
90
|
+
if (words === "yesterday")
|
|
91
|
+
return addDays(today, -1);
|
|
92
|
+
if (words === "next week")
|
|
93
|
+
return addDays(today, 7);
|
|
94
|
+
let match = /^in (\d{1,3}) (day|days|week|weeks)$/.exec(words);
|
|
95
|
+
if (match)
|
|
96
|
+
return addDays(today, Number(match[1]) * (match[2].startsWith("week") ? 7 : 1));
|
|
97
|
+
match = new RegExp(`^(next )?${WEEKDAY_WORD}$`).exec(words);
|
|
98
|
+
if (match) {
|
|
99
|
+
const wanted = WEEKDAYS.indexOf(match[2].slice(0, 3));
|
|
100
|
+
const ahead = (wanted - weekdayOf(today) + 7) % 7;
|
|
101
|
+
return addDays(today, match[1] && ahead === 0 ? 7 : ahead);
|
|
102
|
+
}
|
|
103
|
+
match = /^(\d{4})-(\d{1,2})-(\d{1,2})$/.exec(words);
|
|
104
|
+
if (match)
|
|
105
|
+
return dayFrom(Number(match[1]), Number(match[2]), Number(match[3]));
|
|
106
|
+
// A month said in words: "17 Oct", "Oct 17", "October 17th 2027", with or without its weekday.
|
|
107
|
+
const bare = words.replace(new RegExp(`^${WEEKDAY_WORD} `), "");
|
|
108
|
+
match = new RegExp(`^(\\d{1,2})(?:st|nd|rd|th)? ${MONTH_WORD}(?: (\\d{4}))?$`).exec(bare);
|
|
109
|
+
const said = match ? { date: match[1], month: match[2], year: match[3] } : undefined;
|
|
110
|
+
match = new RegExp(`^${MONTH_WORD} (\\d{1,2})(?:st|nd|rd|th)?(?: (\\d{4}))?$`).exec(bare);
|
|
111
|
+
const named = said ?? (match ? { date: match[2], month: match[1], year: match[3] } : undefined);
|
|
112
|
+
if (named)
|
|
113
|
+
return near(today, fullYear(named.year), monthOf(named.month), Number(named.date));
|
|
114
|
+
// Digits in the reader's order: 10/17 in the US, 17/10 in Britain.
|
|
115
|
+
match = /^(\d{1,2})[/.-](\d{1,2})(?:[/.-](\d{2}|\d{4}))?$/.exec(bare);
|
|
116
|
+
if (match) {
|
|
117
|
+
const [first, second] = [Number(match[1]), Number(match[2])];
|
|
118
|
+
const [month, date] = monthFirst(locale) ? [first, second] : [second, first];
|
|
119
|
+
return near(today, fullYear(match[3]), month, date);
|
|
120
|
+
}
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
/** A day of a month: in the year said, else this year — unless that is more than half a year gone, when it is next year's. */
|
|
124
|
+
function near(today, year, month, date) {
|
|
125
|
+
if (year !== undefined)
|
|
126
|
+
return dayFrom(year, month, date);
|
|
127
|
+
const thisYear = Number(today.slice(0, 4));
|
|
128
|
+
const day = dayFrom(thisYear, month, date);
|
|
129
|
+
if (day === undefined)
|
|
130
|
+
return dayFrom(thisYear + 1, month, date);
|
|
131
|
+
return utcOf(today) - utcOf(day) > 183 * DAY_MS ? dayFrom(thisYear + 1, month, date) : day;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* What a person typed, read as a day and — for a field with a time — a time
|
|
135
|
+
* of day on their wall. `today` is the reader's today; `base` is what the
|
|
136
|
+
* field held, so a time typed alone keeps its day and a day typed alone keeps
|
|
137
|
+
* its time (else 9 in the morning). A time typed for a field that holds only
|
|
138
|
+
* a day is let go. Undefined when the words name no day this can read.
|
|
139
|
+
*/
|
|
140
|
+
export function readWhenTyped(text, options) {
|
|
141
|
+
// A moment as a record keeps one, pasted or typed: "2026-10-17T15:00" is a day and a time.
|
|
142
|
+
const typed = text.toLowerCase().replace(/,/g, " ").replace(/(\d{4}-\d{2}-\d{2})t(?=\d)/, "$1 ").replace(/\s+/g, " ").trim();
|
|
143
|
+
if (typed === "")
|
|
144
|
+
return undefined;
|
|
145
|
+
const time = timeIn(typed);
|
|
146
|
+
if (time.bad)
|
|
147
|
+
return undefined;
|
|
148
|
+
const day = dayIn(time.rest, options.today, options.locale ?? DEFAULT_LOCALE);
|
|
149
|
+
if (day === undefined)
|
|
150
|
+
return undefined;
|
|
151
|
+
if (day === null && time.minutes === undefined)
|
|
152
|
+
return undefined;
|
|
153
|
+
const on = day ?? options.base?.day ?? options.today;
|
|
154
|
+
if (!options.time)
|
|
155
|
+
return { day: on };
|
|
156
|
+
return { day: on, minutes: time.minutes ?? options.base?.minutes ?? 9 * 60 };
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=when-typed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when-typed.js","sourceRoot":"","sources":["../src/when-typed.ts"],"names":[],"mappings":"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"}
|
package/dist/words.d.ts
CHANGED
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* `failureWords`), the channel a change came through (`viaSaid`), a
|
|
9
9
|
* field's value and a relation in the declaration's words (`valueWords`,
|
|
10
10
|
* `edgeWords`), and an amount asked for as it is said (`amountBox`,
|
|
11
|
-
* `amountInBox`, `readAmount`)
|
|
11
|
+
* `amountInBox`, `readAmount`), and a date typed as
|
|
12
|
+
* people say it (`readWhenTyped`, `storedOfWall`, `wallOfStored`, `zoneSaid`,
|
|
13
|
+
* `endAfterStartMoved`, `startAndEndOf`).
|
|
12
14
|
*
|
|
13
15
|
* Apart from `@graview/core` because a bundler places a whole file in a
|
|
14
16
|
* page's first chunk when the first chunk can reach it and any chunk uses
|
|
@@ -30,4 +32,7 @@ export { fieldSays, mapsHref, parseDuration, sayDuration, sayPhone, telHref, typ
|
|
|
30
32
|
export { typedFieldOf } from "./schema/typed-field-of.js";
|
|
31
33
|
export { amountBox, amountInBox, readAmount } from "./amount-input.js";
|
|
32
34
|
export type { AmountBox } from "./amount-input.js";
|
|
35
|
+
export { readWhenTyped } from "./when-typed.js";
|
|
36
|
+
export { endAfterStartMoved, namesInstant, startAndEndOf, storedOfWall, wallNow, wallOfStored, zoneSaid } from "./wall-time.js";
|
|
37
|
+
export type { WallTime } from "./wall-time.js";
|
|
33
38
|
//# sourceMappingURL=words.d.ts.map
|
package/dist/words.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../src/words.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../src/words.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACpI,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACvE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAChI,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/words.js
CHANGED
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* `failureWords`), the channel a change came through (`viaSaid`), a
|
|
9
9
|
* field's value and a relation in the declaration's words (`valueWords`,
|
|
10
10
|
* `edgeWords`), and an amount asked for as it is said (`amountBox`,
|
|
11
|
-
* `amountInBox`, `readAmount`)
|
|
11
|
+
* `amountInBox`, `readAmount`), and a date typed as
|
|
12
|
+
* people say it (`readWhenTyped`, `storedOfWall`, `wallOfStored`, `zoneSaid`,
|
|
13
|
+
* `endAfterStartMoved`, `startAndEndOf`).
|
|
12
14
|
*
|
|
13
15
|
* Apart from `@graview/core` because a bundler places a whole file in a
|
|
14
16
|
* page's first chunk when the first chunk can reach it and any chunk uses
|
|
@@ -33,4 +35,7 @@ export { isMarkdownField } from "./schema/markdown.js";
|
|
|
33
35
|
export { fieldSays, mapsHref, parseDuration, sayDuration, sayPhone, telHref, typedHref, typedWords } from "./schema/field-words.js";
|
|
34
36
|
export { typedFieldOf } from "./schema/typed-field-of.js";
|
|
35
37
|
export { amountBox, amountInBox, readAmount } from "./amount-input.js";
|
|
38
|
+
// A day or a moment typed as people say it — "tomorrow 3pm", "Fri 10:30", "17 Oct" — kept as the field keeps it (Roadmap f-date-inputs).
|
|
39
|
+
export { readWhenTyped } from "./when-typed.js";
|
|
40
|
+
export { endAfterStartMoved, namesInstant, startAndEndOf, storedOfWall, wallNow, wallOfStored, zoneSaid } from "./wall-time.js";
|
|
36
41
|
//# sourceMappingURL=words.js.map
|
package/dist/words.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"words.js","sourceRoot":"","sources":["../src/words.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"words.js","sourceRoot":"","sources":["../src/words.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChE,+DAA+D;AAC/D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACtE,uIAAuI;AACvI,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,wEAAwE;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,+EAA+E;AAC/E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACpI,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEvE,yIAAyI;AACzI,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graview/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.32",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -73,6 +73,14 @@
|
|
|
73
73
|
"types": "./dist/tidying.d.ts",
|
|
74
74
|
"default": "./dist/tidying.js"
|
|
75
75
|
},
|
|
76
|
+
"./catalog": {
|
|
77
|
+
"types": "./dist/catalog.d.ts",
|
|
78
|
+
"default": "./dist/catalog.js"
|
|
79
|
+
},
|
|
80
|
+
"./subscriptions": {
|
|
81
|
+
"types": "./dist/subscriptions.d.ts",
|
|
82
|
+
"default": "./dist/subscriptions.js"
|
|
83
|
+
},
|
|
76
84
|
"./markdown": {
|
|
77
85
|
"types": "./dist/markdown.d.ts",
|
|
78
86
|
"default": "./dist/markdown.js"
|