@ai-matrx/records 0.72.6 → 0.72.10

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/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # Changelog — @ai-matrx/records
2
2
 
3
+ ## 0.72.10
4
+
5
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
6
+ `git diff npm/records/v0.72.7..npm/records/v0.72.10 -- apps/shared/records`).
7
+ No source changes intended and no consumer action required.
8
+
9
+ ## 0.72.9
10
+
11
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
12
+ `git diff npm/records/v0.72.7..npm/records/v0.72.9 -- apps/shared/records`).
13
+ No source changes intended and no consumer action required.
14
+
15
+ ## 0.72.8
16
+
17
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
18
+ `git diff npm/records/v0.72.7..npm/records/v0.72.8 -- apps/shared/records`).
19
+ No source changes intended and no consumer action required.
20
+
21
+ ## 0.72.7
22
+
23
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
24
+ `git diff npm/records/v0.72.6..npm/records/v0.72.7 -- apps/shared/records`).
25
+ No source changes intended and no consumer action required.
26
+
3
27
  ## 0.72.6
4
28
 
5
29
  Automatic changed-only republish (docs/metadata drift since the last tag — see
@@ -3604,6 +3604,15 @@ function validateTemplate(raw, options = {}) {
3604
3604
  const tz = raw.business?.timezone || "UTC";
3605
3605
  const tablesRaw = allTables(raw);
3606
3606
  const ISO_DAY = /\b\d{4}-\d{2}-\d{2}\b/;
3607
+ const EMAIL_SHAPE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
3608
+ for (const table of tablesRaw) {
3609
+ for (const f of table.fields.filter((x) => x.parityType === "email" || x.format === "email")) {
3610
+ table.rows?.forEach((row) => {
3611
+ const v = unwrap(row.values?.[f.key]);
3612
+ if (typeof v === "string" && v !== "" && !EMAIL_SHAPE.test(v)) say(`tables (${table.token}).rows (${row.key}).${f.key}`, `"${v}" is not an email address the store will take (no spaces, one @, a dotted domain).`);
3613
+ });
3614
+ }
3615
+ }
3607
3616
  for (const table of tablesRaw) {
3608
3617
  const tf = table.fields.find((f) => f.key === table.titleField);
3609
3618
  if (tf && tf.default !== void 0) say(`tables (${table.token}).fields (${tf.key})`, `"${tf.label}" names each ${table.labelSingular.toLowerCase()}, so it takes no default; ask it on the form instead.`);
@@ -5684,7 +5693,7 @@ ${e.body}`.matchAll(MERGE_TOKEN)].map((m) => m[1]));
5684
5693
  }
5685
5694
  }
5686
5695
  }
5687
- if (/report_due|reporting_due/.test(f.key)) {
5696
+ if (/report_due|reporting_due/.test(f.key) && /grant|award|funder|funding/i.test(`${t.token} ${t.name} ${t.labelSingular}`)) {
5688
5697
  const st = t.fields.find((x) => isChoice(x) && /status|stage/.test(x.key));
5689
5698
  if (!st) continue;
5690
5699
  for (const r of t.rows) {
@@ -6191,7 +6200,8 @@ function compileInstallPlan(written) {
6191
6200
  const documentRefs = Object.fromEntries(
6192
6201
  spec.extras.filter((e) => e.kind === "document").map((e) => [e.token, ref(`documents.${e.token}`)])
6193
6202
  );
6194
- for (const e of spec.extras) {
6203
+ const extrasInOrder = [...spec.extras.filter((e) => e.kind === "document"), ...spec.extras.filter((e) => e.kind !== "document")];
6204
+ for (const e of extrasInOrder) {
6195
6205
  switch (e.kind) {
6196
6206
  case "booking":
6197
6207
  steps.push({