@wrenautomation/aerie 0.4.3 → 0.4.4

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.
@@ -16,6 +16,6 @@ interface Query {
16
16
  getAll(k: string): string[];
17
17
  }
18
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 */
19
+ /** the view as address pairs, in `VIEW_KEYS` order; defaults (list layout, subtree on) leave no key; the first sort only */
20
20
  export declare function addressOfView(v: AddressView): [string, string][];
21
21
  export {};
@@ -44,11 +44,12 @@ export function viewOfAddress(q) {
44
44
  }
45
45
  if (q.get("open") === "1")
46
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" }));
47
+ // one field, `-` = desc: wren's router keeps `sort` only as `^-?[\w.]+$`
48
+ const raw = q.get("sort") ?? "";
49
+ const field = raw.replace(/^-/, "");
50
+ const sort = SORT_FIELDS.includes(field)
51
+ ? [{ field: field, dir: raw.startsWith("-") ? "desc" : "asc" }]
52
+ : [];
52
53
  const group = q.get("group");
53
54
  const layout = q.get("layout");
54
55
  const text = q.get("q")?.trim();
@@ -60,7 +61,7 @@ export function viewOfAddress(q) {
60
61
  ...(text ? { text } : {}),
61
62
  };
62
63
  }
63
- /** the view as address pairs, in `VIEW_KEYS` order; defaults (list layout, subtree on) leave no key */
64
+ /** the view as address pairs, in `VIEW_KEYS` order; defaults (list layout, subtree on) leave no key; the first sort only */
64
65
  export function addressOfView(v) {
65
66
  const f = v.filter;
66
67
  const out = [];
@@ -90,8 +91,9 @@ export function addressOfView(v) {
90
91
  out.push(["open", "1"]);
91
92
  if (v.text)
92
93
  out.push(["q", v.text]);
93
- if (v.sort.length)
94
- out.push(["sort", v.sort.map((s) => `${s.field}:${s.dir}`).join(",")]);
94
+ const first = v.sort[0];
95
+ if (first)
96
+ out.push(["sort", `${first.dir === "desc" ? "-" : ""}${first.field}`]);
95
97
  if (v.group)
96
98
  out.push(["group", v.group]);
97
99
  if (v.layout !== "list")
@@ -1 +1 @@
1
- {"version":3,"file":"address.js","sourceRoot":"","sources":["../../src/core/address.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../src/core/address.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,5 @@ export * from "./area.js";
4
4
  export * from "./edit.js";
5
5
  export * from "./fields.js";
6
6
  export * from "./filter.js";
7
+ export * from "./rows.js";
7
8
  export * from "./task.js";
@@ -4,5 +4,6 @@ export * from "./area.js";
4
4
  export * from "./edit.js";
5
5
  export * from "./fields.js";
6
6
  export * from "./filter.js";
7
+ export * from "./rows.js";
7
8
  export * from "./task.js";
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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"}
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;AAC1B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Live rows (D16): a host loads every row once and filters in memory (`matches`); a push reads only the rows
3
+ * written since the newest one it holds, then merges them by id. `updatedAt` is the writer's clock (CLI, Lambda),
4
+ * so the read reaches back `SKEW_MS` past it; the merge is idempotent.
5
+ */
6
+ import type { TaskView } from "./filter.js";
7
+ export declare const SKEW_MS = 60000;
8
+ /** `updatedAfter` for the next read; undefined: read all */
9
+ export declare function changedSince(rows: readonly Pick<TaskView, "updatedAt" | "createdAt">[], skewMs?: number): string | undefined;
10
+ /** `delta` over `before` by id; `changed`: ids new or at a newer version (a row's wash) */
11
+ export declare function mergeRows<T extends {
12
+ id: string;
13
+ version: number;
14
+ }>(before: readonly T[], delta: readonly T[]): {
15
+ rows: T[];
16
+ changed: string[];
17
+ };
@@ -0,0 +1,34 @@
1
+ export const SKEW_MS = 60_000;
2
+ /** `updatedAfter` for the next read; undefined: read all */
3
+ export function changedSince(rows, skewMs = SKEW_MS) {
4
+ let newest = "";
5
+ for (const r of rows) {
6
+ const at = r.updatedAt ?? r.createdAt;
7
+ if (at > newest)
8
+ newest = at;
9
+ }
10
+ if (!newest)
11
+ return undefined;
12
+ const t = Date.parse(newest);
13
+ return Number.isNaN(t) ? undefined : new Date(t - skewMs).toISOString().replace(/\.\d{3}Z$/, "Z");
14
+ }
15
+ /** `delta` over `before` by id; `changed`: ids new or at a newer version (a row's wash) */
16
+ export function mergeRows(before, delta) {
17
+ const at = new Map(before.map((r, i) => [r.id, i]));
18
+ const rows = [...before];
19
+ const changed = [];
20
+ for (const r of delta) {
21
+ const i = at.get(r.id);
22
+ if (i === undefined) {
23
+ at.set(r.id, rows.length);
24
+ rows.push(r);
25
+ changed.push(r.id);
26
+ }
27
+ else if (r.version > rows[i].version) {
28
+ rows[i] = r;
29
+ changed.push(r.id);
30
+ }
31
+ }
32
+ return { rows, changed };
33
+ }
34
+ //# sourceMappingURL=rows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/core/rows.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC;AAE9B,4DAA4D;AAC5D,MAAM,UAAU,YAAY,CAC1B,IAA0D,EAC1D,MAAM,GAAG,OAAO;IAEhB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC;QACtC,IAAI,EAAE,GAAG,MAAM;YAAE,MAAM,GAAG,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACpG,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,SAAS,CACvB,MAAoB,EACpB,KAAmB;IAEnB,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IACzB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,CAAC,OAAO,GAAI,IAAI,CAAC,CAAC,CAAO,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC"}
@@ -9056,6 +9056,13 @@ var init_edit = __esm({
9056
9056
  }
9057
9057
  });
9058
9058
 
9059
+ // src/core/rows.ts
9060
+ var init_rows = __esm({
9061
+ "src/core/rows.ts"() {
9062
+ "use strict";
9063
+ }
9064
+ });
9065
+
9059
9066
  // src/core/index.ts
9060
9067
  var init_core2 = __esm({
9061
9068
  "src/core/index.ts"() {
@@ -9065,6 +9072,7 @@ var init_core2 = __esm({
9065
9072
  init_edit();
9066
9073
  init_fields();
9067
9074
  init_filter();
9075
+ init_rows();
9068
9076
  init_task();
9069
9077
  }
9070
9078
  });