@wrenautomation/aerie 0.4.1 → 0.4.3
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/dist/bin.js +73 -73
- package/dist/bin.js.map +4 -4
- package/dist/core/address.d.ts +21 -0
- package/dist/core/address.js +101 -0
- package/dist/core/address.js.map +1 -0
- package/dist/core/fields.d.ts +7 -7
- package/dist/core/fields.js.map +1 -1
- package/dist/core/filter.d.ts +4 -2
- package/dist/core/filter.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/task.d.ts +5 -0
- package/dist/core/task.js +45 -0
- package/dist/core/task.js.map +1 -1
- package/dist/http.d.ts +49 -3
- package/dist/http.js +18 -11
- package/dist/http.js.map +1 -1
- package/dist/peers-coord.js +90 -80
- package/dist/peers-coord.js.map +4 -4
- package/drizzle/0007_live_notify.sql +40 -0
- package/drizzle/meta/0007_snapshot.json +1520 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +1 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type Filter, type Sort } from "./filter.js";
|
|
2
|
+
export declare const VIEW_LAYOUTS: readonly ["list", "board", "columns"];
|
|
3
|
+
export type ViewLayout = (typeof VIEW_LAYOUTS)[number];
|
|
4
|
+
/** what the page shows; `text` goes to the search route, never to `matches` (a list row has no long text) */
|
|
5
|
+
export interface AddressView {
|
|
6
|
+
filter: Filter;
|
|
7
|
+
sort: Sort[];
|
|
8
|
+
group?: string;
|
|
9
|
+
layout: ViewLayout;
|
|
10
|
+
text?: string;
|
|
11
|
+
}
|
|
12
|
+
/** the address keys a view owns; the page's own keys (`task`) stay outside */
|
|
13
|
+
export declare const VIEW_KEYS: readonly ["area", "sub", "status", "priority", "type", "milestone", "label", "assignee", "holder", "who", "role", "parent", "open", "q", "sort", "group", "layout"];
|
|
14
|
+
interface Query {
|
|
15
|
+
get(k: string): string | null;
|
|
16
|
+
getAll(k: string): string[];
|
|
17
|
+
}
|
|
18
|
+
export declare function viewOfAddress(q: Query): AddressView;
|
|
19
|
+
/** the view as address pairs, in `VIEW_KEYS` order; defaults (list layout, subtree on) leave no key */
|
|
20
|
+
export declare function addressOfView(v: AddressView): [string, string][];
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { GROUP_KEYS } from "./fields.js";
|
|
2
|
+
import { SORT_FIELDS } from "./filter.js";
|
|
3
|
+
export const VIEW_LAYOUTS = ["list", "board", "columns"];
|
|
4
|
+
const ROLES = ["owner", "manager", "doer", "watcher"];
|
|
5
|
+
/** the address keys a view owns; the page's own keys (`task`) stay outside */
|
|
6
|
+
export const VIEW_KEYS = [
|
|
7
|
+
"area",
|
|
8
|
+
"sub",
|
|
9
|
+
"status",
|
|
10
|
+
"priority",
|
|
11
|
+
"type",
|
|
12
|
+
"milestone",
|
|
13
|
+
"label",
|
|
14
|
+
"assignee",
|
|
15
|
+
"holder",
|
|
16
|
+
"who",
|
|
17
|
+
"role",
|
|
18
|
+
"parent",
|
|
19
|
+
"open",
|
|
20
|
+
"q",
|
|
21
|
+
"sort",
|
|
22
|
+
"group",
|
|
23
|
+
"layout",
|
|
24
|
+
];
|
|
25
|
+
const list = (q, k) => q.getAll(k).filter(Boolean);
|
|
26
|
+
export function viewOfAddress(q) {
|
|
27
|
+
const f = {};
|
|
28
|
+
for (const k of ["area", "status", "priority", "type", "milestone", "label"]) {
|
|
29
|
+
const v = list(q, k);
|
|
30
|
+
if (v.length)
|
|
31
|
+
f[k] = v;
|
|
32
|
+
}
|
|
33
|
+
if (f.area && q.get("sub") === "0")
|
|
34
|
+
f.subtree = false;
|
|
35
|
+
for (const k of ["assignee", "holder", "parent"]) {
|
|
36
|
+
const v = q.get(k);
|
|
37
|
+
if (v)
|
|
38
|
+
f[k] = v;
|
|
39
|
+
}
|
|
40
|
+
const who = q.get("who");
|
|
41
|
+
if (who) {
|
|
42
|
+
const roles = list(q, "role").filter((r) => ROLES.includes(r));
|
|
43
|
+
f.role = roles.length ? { actor: who, roles } : { actor: who };
|
|
44
|
+
}
|
|
45
|
+
if (q.get("open") === "1")
|
|
46
|
+
f.openChecks = true;
|
|
47
|
+
const sort = (q.get("sort") ?? "")
|
|
48
|
+
.split(",")
|
|
49
|
+
.map((s) => s.split(":"))
|
|
50
|
+
.filter(([field]) => SORT_FIELDS.includes(field))
|
|
51
|
+
.map(([field, dir]) => ({ field: field, dir: dir === "desc" ? "desc" : "asc" }));
|
|
52
|
+
const group = q.get("group");
|
|
53
|
+
const layout = q.get("layout");
|
|
54
|
+
const text = q.get("q")?.trim();
|
|
55
|
+
return {
|
|
56
|
+
filter: f,
|
|
57
|
+
sort,
|
|
58
|
+
...(group && GROUP_KEYS.includes(group) ? { group } : {}),
|
|
59
|
+
layout: VIEW_LAYOUTS.includes(layout) ? layout : "list",
|
|
60
|
+
...(text ? { text } : {}),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/** the view as address pairs, in `VIEW_KEYS` order; defaults (list layout, subtree on) leave no key */
|
|
64
|
+
export function addressOfView(v) {
|
|
65
|
+
const f = v.filter;
|
|
66
|
+
const out = [];
|
|
67
|
+
const many = (k, vs) => {
|
|
68
|
+
for (const x of vs ?? [])
|
|
69
|
+
out.push([k, x]);
|
|
70
|
+
};
|
|
71
|
+
many("area", f.area);
|
|
72
|
+
if (f.area?.length && f.subtree === false)
|
|
73
|
+
out.push(["sub", "0"]);
|
|
74
|
+
many("status", f.status);
|
|
75
|
+
many("priority", f.priority);
|
|
76
|
+
many("type", f.type);
|
|
77
|
+
many("milestone", f.milestone);
|
|
78
|
+
many("label", f.label);
|
|
79
|
+
if (f.assignee)
|
|
80
|
+
out.push(["assignee", f.assignee]);
|
|
81
|
+
if (f.holder)
|
|
82
|
+
out.push(["holder", f.holder]);
|
|
83
|
+
if (f.role) {
|
|
84
|
+
out.push(["who", f.role.actor]);
|
|
85
|
+
many("role", f.role.roles);
|
|
86
|
+
}
|
|
87
|
+
if (f.parent)
|
|
88
|
+
out.push(["parent", f.parent]);
|
|
89
|
+
if (f.openChecks)
|
|
90
|
+
out.push(["open", "1"]);
|
|
91
|
+
if (v.text)
|
|
92
|
+
out.push(["q", v.text]);
|
|
93
|
+
if (v.sort.length)
|
|
94
|
+
out.push(["sort", v.sort.map((s) => `${s.field}:${s.dir}`).join(",")]);
|
|
95
|
+
if (v.group)
|
|
96
|
+
out.push(["group", v.group]);
|
|
97
|
+
if (v.layout !== "list")
|
|
98
|
+
out.push(["layout", v.layout]);
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../src/core/address.ts"],"names":[],"mappings":"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"}
|
package/dist/core/fields.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type SortField, type TaskRecord } from "./filter.js";
|
|
1
|
+
import { type SortField, type TaskRecord, type TaskView } from "./filter.js";
|
|
2
2
|
/** how a portal draws the value */
|
|
3
3
|
export type FieldKind = "id" | "text" | "status" | "priority" | "area" | "people" | "labels" | "date" | "number" | "progress";
|
|
4
4
|
export interface Field {
|
|
@@ -6,7 +6,7 @@ export interface Field {
|
|
|
6
6
|
label: string;
|
|
7
7
|
kind: FieldKind;
|
|
8
8
|
/** the cell's values; [] = empty. A task with several values sits in several groups. */
|
|
9
|
-
values(t:
|
|
9
|
+
values(t: TaskView): string[];
|
|
10
10
|
/** the store's sort key, when sortable */
|
|
11
11
|
sort?: SortField;
|
|
12
12
|
/** group by this field */
|
|
@@ -17,17 +17,17 @@ export interface Field {
|
|
|
17
17
|
export declare const FIELDS: readonly Field[];
|
|
18
18
|
export declare const fieldOf: (key: string) => Field | undefined;
|
|
19
19
|
export declare const GROUP_KEYS: string[];
|
|
20
|
-
export interface Group {
|
|
20
|
+
export interface Group<T extends TaskView = TaskRecord> {
|
|
21
21
|
/** null: the task has no value for this field */
|
|
22
22
|
key: string | null;
|
|
23
|
-
tasks:
|
|
23
|
+
tasks: T[];
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
26
|
* Tasks into groups, in the field's order (known values first, then by name, empty last). `all`: also the
|
|
27
27
|
* known values with no task (a Board shows every status column).
|
|
28
28
|
*/
|
|
29
|
-
export declare function groupTasks(ts:
|
|
29
|
+
export declare function groupTasks<T extends TaskView>(ts: T[], by: string, o?: {
|
|
30
30
|
all?: boolean;
|
|
31
|
-
}): Group[];
|
|
31
|
+
}): Group<T>[];
|
|
32
32
|
/** Area counts for the rail: each area with the tasks under it (subtree), aliases included. */
|
|
33
|
-
export declare function areaCounts(ts:
|
|
33
|
+
export declare function areaCounts(ts: TaskView[]): Map<string, number>;
|
package/dist/core/fields.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/core/fields.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/core/fields.ts"],"names":[],"mappings":"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"}
|
package/dist/core/filter.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export interface TaskRecord extends Task {
|
|
|
8
8
|
place: Where;
|
|
9
9
|
version: number;
|
|
10
10
|
}
|
|
11
|
+
/** What a view reads of a task: a list row is one (the long fields and comments stay on the server). */
|
|
12
|
+
export type TaskView = Omit<TaskRecord, "comments" | "extra" | "stray">;
|
|
11
13
|
export declare const MARK = "@peers:";
|
|
12
14
|
export declare const holdersOf: (t: Pick<Task, "assignees">) => string[];
|
|
13
15
|
export interface Filter {
|
|
@@ -51,8 +53,8 @@ export interface Sort {
|
|
|
51
53
|
field: SortField;
|
|
52
54
|
dir: "asc" | "desc";
|
|
53
55
|
}
|
|
54
|
-
export declare function matches(t:
|
|
56
|
+
export declare function matches(t: TaskView, f: Filter, ctx?: FilterContext): boolean;
|
|
55
57
|
/** Natural id order: WA-9 before WA-10, WA-1364 before WA-1364.1. */
|
|
56
58
|
export declare function compareIds(a: string, b: string): number;
|
|
57
59
|
/** Default: Backlog.md's board order (ordinal, then priority, then id). */
|
|
58
|
-
export declare function compare(sorts?: Sort[]): (a:
|
|
60
|
+
export declare function compare(sorts?: Sort[]): (a: TaskView, b: TaskView) => number;
|
package/dist/core/filter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/core/filter.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAC1H,OAAO,EAAiC,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/core/filter.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.d.ts
CHANGED
package/dist/core/index.js
CHANGED
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
|
package/dist/core/task.d.ts
CHANGED
|
@@ -46,5 +46,10 @@ export declare const STATUSES: readonly ["To Do", "In Progress", "Needs Human In
|
|
|
46
46
|
export declare const PRIORITIES: readonly ["high", "medium", "low"];
|
|
47
47
|
/** Instant to ISO, second precision; `YYYY-MM-DD HH:MM` (old Backlog.md) reads as UTC. */
|
|
48
48
|
export declare function instant(v: unknown): string | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* The description's first sentence, whole: what a list row and a board card show under the title (no clamp).
|
|
51
|
+
* Skips headings and blank lines; a list's first item counts; markdown emphasis and code ticks drop.
|
|
52
|
+
*/
|
|
53
|
+
export declare function summaryOf(description: string | undefined): string | undefined;
|
|
49
54
|
/** Two tasks mean the same: what the mirror compares before it writes. */
|
|
50
55
|
export declare function sameTask(a: Task, b: Task): boolean;
|
package/dist/core/task.js
CHANGED
|
@@ -21,6 +21,51 @@ export function instant(v) {
|
|
|
21
21
|
throw new Error(`not a date: ${s}`);
|
|
22
22
|
return d.toISOString().replace(/\.\d{3}Z$/, "Z");
|
|
23
23
|
}
|
|
24
|
+
const SHORT = 40;
|
|
25
|
+
/** words whose period never ends a sentence */
|
|
26
|
+
const ABBREV = /(?:^|[\s(])(?:e\.g|i\.e|etc|vs|cf|approx|no|incl|Mr|Ms|Dr|St)\.$/i;
|
|
27
|
+
/**
|
|
28
|
+
* The description's first sentence, whole: what a list row and a board card show under the title (no clamp).
|
|
29
|
+
* Skips headings and blank lines; a list's first item counts; markdown emphasis and code ticks drop.
|
|
30
|
+
*/
|
|
31
|
+
export function summaryOf(description) {
|
|
32
|
+
if (!description)
|
|
33
|
+
return undefined;
|
|
34
|
+
const para = [];
|
|
35
|
+
for (const raw of description.split("\n")) {
|
|
36
|
+
const line = raw.trim();
|
|
37
|
+
if (!line || /^#{1,6}\s/.test(line) || /^(```|<!--|---$|\|)/.test(line)) {
|
|
38
|
+
if (para.length)
|
|
39
|
+
break;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const item = /^(?:[-*+]|\d+[.)])\s+(?:\[[ xX]\]\s+)?(.*)$/.exec(line);
|
|
43
|
+
if (item) {
|
|
44
|
+
if (para.length)
|
|
45
|
+
break;
|
|
46
|
+
para.push(item[1] ?? "");
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
para.push(line);
|
|
50
|
+
}
|
|
51
|
+
const text = para
|
|
52
|
+
.join(" ")
|
|
53
|
+
.replace(/\*\*|__|`/g, "")
|
|
54
|
+
.replace(/\[([^\]]*)\]\([^)]*\)/g, "$1")
|
|
55
|
+
.replace(/\s+/g, " ")
|
|
56
|
+
.trim();
|
|
57
|
+
if (!text)
|
|
58
|
+
return undefined;
|
|
59
|
+
// a sentence ends at . ! ? before a space and a capital, a digit or an opening mark
|
|
60
|
+
const end = /[.!?](?=\s+["'([A-Z0-9])/g;
|
|
61
|
+
for (let m = end.exec(text); m; m = end.exec(text)) {
|
|
62
|
+
const head = text.slice(0, m.index + 1);
|
|
63
|
+
// "William 11-04." says nothing alone: a summary runs to a sentence end past SHORT
|
|
64
|
+
if (head.length >= SHORT && !ABBREV.test(head))
|
|
65
|
+
return head;
|
|
66
|
+
}
|
|
67
|
+
return text;
|
|
68
|
+
}
|
|
24
69
|
/** Two tasks mean the same: what the mirror compares before it writes. */
|
|
25
70
|
export function sameTask(a, b) {
|
|
26
71
|
return canonical(a) === canonical(b);
|
package/dist/core/task.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/core/task.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAiD9G,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO;IACP,aAAa;IACb,mBAAmB;IACnB,SAAS;IACT,QAAQ;IACR,MAAM;CACE,CAAC;AACX,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAE7D,0FAA0F;AAC1F,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,CAAC,YAAY,IAAI;QAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,CAAC,GAAG,0DAA0D,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACpF,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,QAAQ,CAAC,CAAO,EAAE,CAAO;IACvC,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,mFAAmF;AACnF,SAAS,SAAS,CAAC,CAAO;IACxB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,CAAC,CAAU,EAAW,EAAE,CACrC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QACf,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAC1B,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;iBACd,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;iBAClC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACnC;YACH,CAAC,CAAC,CAAC,CAAC;IACV,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC"}
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/core/task.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
CHANGED
|
@@ -6,13 +6,15 @@
|
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import type { TaskRecord } from "./core/index.js";
|
|
8
8
|
import { type AerieRoute } from "./routes.js";
|
|
9
|
-
import type { AerieStore } from "./store.js";
|
|
9
|
+
import type { AerieStore, SavedView } from "./store.js";
|
|
10
10
|
export * from "./routes.js";
|
|
11
11
|
/** A task as the board and list show it: the long text fields stay on the server (`task` reads them). */
|
|
12
12
|
export type TaskRow = Omit<TaskRecord, "description" | "plan" | "notes" | "finalSummary" | "comments" | "extra" | "stray"> & {
|
|
13
13
|
comments: number;
|
|
14
|
+
/** the description's first sentence, whole (`summaryOf`): the row's second line */
|
|
15
|
+
summary?: string;
|
|
14
16
|
};
|
|
15
|
-
export declare const rowOf: ({ description
|
|
17
|
+
export declare const rowOf: ({ description, plan: _p, notes: _n, finalSummary: _f, extra: _e, stray: _s, comments, ...t }: TaskRecord) => TaskRow;
|
|
16
18
|
/** Every route's input shape; a host merges its own fields (viewer, signature) beside them. */
|
|
17
19
|
export declare const AERIE_INPUTS: {
|
|
18
20
|
readonly board: {};
|
|
@@ -265,8 +267,8 @@ export declare const AERIE_INPUTS: {
|
|
|
265
267
|
}, z.core.$strict>>;
|
|
266
268
|
readonly groupBy: z.ZodOptional<z.ZodString>;
|
|
267
269
|
readonly layout: z.ZodEnum<{
|
|
268
|
-
board: "board";
|
|
269
270
|
list: "list";
|
|
271
|
+
board: "board";
|
|
270
272
|
columns: "columns";
|
|
271
273
|
}>;
|
|
272
274
|
readonly columns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
@@ -280,6 +282,50 @@ export declare const AERIE_INPUTS: {
|
|
|
280
282
|
readonly why: z.ZodOptional<z.ZodString>;
|
|
281
283
|
};
|
|
282
284
|
};
|
|
285
|
+
/** parsed input; zod leaves an absent key absent, so the casts to the store's exact-optional types hold */
|
|
286
|
+
type In<K extends AerieRoute> = z.infer<z.ZodObject<(typeof AERIE_INPUTS)[K]>>;
|
|
287
|
+
/** each route's run, input already valid; its return type is the route's answer */
|
|
288
|
+
declare function aerieRuns(store: AerieStore): {
|
|
289
|
+
board: (_: In<"board">, by: string) => Promise<{
|
|
290
|
+
me: string;
|
|
291
|
+
areas: import("./store.js").AreaInfo[];
|
|
292
|
+
grants: import("./core/area.js").RoleGrant[];
|
|
293
|
+
milestones: {
|
|
294
|
+
total: number;
|
|
295
|
+
done: number;
|
|
296
|
+
id: string;
|
|
297
|
+
title: string;
|
|
298
|
+
description: string | null;
|
|
299
|
+
}[];
|
|
300
|
+
actors: import("./store.js").Actor[];
|
|
301
|
+
views: SavedView[];
|
|
302
|
+
writes: boolean;
|
|
303
|
+
}>;
|
|
304
|
+
tasks: (i: In<"tasks">) => Promise<TaskRow[]>;
|
|
305
|
+
task: (i: In<"task">) => Promise<{
|
|
306
|
+
task: TaskRecord;
|
|
307
|
+
events: {
|
|
308
|
+
seq: number;
|
|
309
|
+
taskId: string;
|
|
310
|
+
at: string;
|
|
311
|
+
by: string;
|
|
312
|
+
kind: string;
|
|
313
|
+
why: string | null;
|
|
314
|
+
body: unknown;
|
|
315
|
+
}[];
|
|
316
|
+
}>;
|
|
317
|
+
search: (i: In<"search">) => Promise<string[]>;
|
|
318
|
+
decisions: (i: In<"decisions">) => Promise<import("./store.js").Decision[]>;
|
|
319
|
+
edit: (i: In<"edit">, by: string) => Promise<TaskRow>;
|
|
320
|
+
create: (i: In<"create">, by: string) => Promise<TaskRow>;
|
|
321
|
+
saveView: (i: In<"saveView">, by: string) => Promise<SavedView>;
|
|
322
|
+
deleteView: (i: In<"deleteView">, by: string) => Promise<boolean>;
|
|
323
|
+
decide: (i: In<"decide">, by: string) => Promise<import("./store.js").Decision>;
|
|
324
|
+
};
|
|
325
|
+
/** every route as the API a client sees: input → answer (a mock types its answers with it) */
|
|
326
|
+
export type AerieApi = ReturnType<typeof aerieRuns>;
|
|
327
|
+
/** what route `K` answers */
|
|
328
|
+
export type AerieAnswer<K extends AerieRoute> = Awaited<ReturnType<AerieApi[K]>>;
|
|
283
329
|
export declare function aerieRoutes(store: AerieStore): {
|
|
284
330
|
/** the viewer's sign-in email → actor id; an unknown email is refused (`aerie actor set <id> --email`) */
|
|
285
331
|
viewer(email: string): Promise<string>;
|
package/dist/http.js
CHANGED
|
@@ -4,13 +4,16 @@
|
|
|
4
4
|
* Validation happens here once; the host never repeats it.
|
|
5
5
|
*/
|
|
6
6
|
import { z } from "zod";
|
|
7
|
-
import { STATUSES } from "./core/index.js";
|
|
7
|
+
import { STATUSES, summaryOf } from "./core/index.js";
|
|
8
8
|
import { AerieError } from "./db.js";
|
|
9
9
|
import { TASK_WRITES } from "./routes.js";
|
|
10
10
|
import { AREA_ROLES, LAYOUTS } from "./schema.js";
|
|
11
11
|
import { rank } from "./search.js";
|
|
12
12
|
export * from "./routes.js";
|
|
13
|
-
export const rowOf = ({ description
|
|
13
|
+
export const rowOf = ({ description, plan: _p, notes: _n, finalSummary: _f, extra: _e, stray: _s, comments, ...t }) => {
|
|
14
|
+
const summary = summaryOf(description);
|
|
15
|
+
return { ...t, comments: comments.length, ...(summary ? { summary } : {}) };
|
|
16
|
+
};
|
|
14
17
|
const ID = z.string().trim().min(1).max(64);
|
|
15
18
|
const TEXT = z.string().max(20_000);
|
|
16
19
|
const LIST = z.array(z.string().max(200)).max(200);
|
|
@@ -122,13 +125,10 @@ export const AERIE_INPUTS = {
|
|
|
122
125
|
why: z.string().max(2000).optional(),
|
|
123
126
|
},
|
|
124
127
|
};
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
throw new AerieError("task writes from the web are off until the switch (setting web_writes)", 403);
|
|
130
|
-
};
|
|
131
|
-
const runs = {
|
|
128
|
+
const writesOn = async (store) => (await store.getSetting("web_writes")) === "on";
|
|
129
|
+
/** each route's run, input already valid; its return type is the route's answer */
|
|
130
|
+
function aerieRuns(store) {
|
|
131
|
+
return {
|
|
132
132
|
board: async (_, by) => {
|
|
133
133
|
const [areas, grants, milestones, actors, views, writes] = await Promise.all([
|
|
134
134
|
store.areas(),
|
|
@@ -136,7 +136,7 @@ export function aerieRoutes(store) {
|
|
|
136
136
|
store.milestones(),
|
|
137
137
|
store.actors(),
|
|
138
138
|
store.views(by),
|
|
139
|
-
writesOn(),
|
|
139
|
+
writesOn(store),
|
|
140
140
|
]);
|
|
141
141
|
return { me: by, areas, grants, milestones, actors, views, writes };
|
|
142
142
|
},
|
|
@@ -159,11 +159,18 @@ export function aerieRoutes(store) {
|
|
|
159
159
|
decide: async (i, by) => {
|
|
160
160
|
// an answer edits the tasks it blocks (status, notes): a task write
|
|
161
161
|
const [d] = await store.decisions({ ids: [i.id] });
|
|
162
|
-
if (d?.blocks.length && !(await writesOn()))
|
|
162
|
+
if (d?.blocks.length && !(await writesOn(store)))
|
|
163
163
|
throw new AerieError(`decision ${i.id} blocks ${d.blocks.join(", ")}: answer it in the CLI until the switch (setting web_writes)`, 403);
|
|
164
164
|
return store.decide(i.id, i.answer, by, i.why);
|
|
165
165
|
},
|
|
166
166
|
};
|
|
167
|
+
}
|
|
168
|
+
export function aerieRoutes(store) {
|
|
169
|
+
const runs = aerieRuns(store);
|
|
170
|
+
const gate = async (k) => {
|
|
171
|
+
if (TASK_WRITES.includes(k) && !(await writesOn(store)))
|
|
172
|
+
throw new AerieError("task writes from the web are off until the switch (setting web_writes)", 403);
|
|
173
|
+
};
|
|
167
174
|
return {
|
|
168
175
|
/** the viewer's sign-in email → actor id; an unknown email is refused (`aerie actor set <id> --email`) */
|
|
169
176
|
async viewer(email) {
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|