@adminiumjs/manifest 0.3.16 → 0.3.18-rc.0

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.
Files changed (90) hide show
  1. package/dist/adjust.d.ts +322 -0
  2. package/dist/adjust.d.ts.map +1 -0
  3. package/dist/adjust.js +512 -0
  4. package/dist/adjust.js.map +1 -0
  5. package/dist/automations.d.ts +2309 -0
  6. package/dist/automations.d.ts.map +1 -0
  7. package/dist/automations.js +384 -0
  8. package/dist/automations.js.map +1 -0
  9. package/dist/compose.d.ts.map +1 -1
  10. package/dist/compose.js +1 -0
  11. package/dist/compose.js.map +1 -1
  12. package/dist/documents.d.ts +82 -1
  13. package/dist/documents.d.ts.map +1 -1
  14. package/dist/documents.js +36 -6
  15. package/dist/documents.js.map +1 -1
  16. package/dist/index.d.ts +15 -6
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +15 -6
  19. package/dist/index.js.map +1 -1
  20. package/dist/key-bytes.d.ts +27 -0
  21. package/dist/key-bytes.d.ts.map +1 -0
  22. package/dist/key-bytes.js +48 -0
  23. package/dist/key-bytes.js.map +1 -0
  24. package/dist/ledger-indexes.d.ts +19 -0
  25. package/dist/ledger-indexes.d.ts.map +1 -0
  26. package/dist/ledger-indexes.js +74 -0
  27. package/dist/ledger-indexes.js.map +1 -0
  28. package/dist/ledgers.d.ts +691 -0
  29. package/dist/ledgers.d.ts.map +1 -0
  30. package/dist/ledgers.js +778 -0
  31. package/dist/ledgers.js.map +1 -0
  32. package/dist/look-up.d.ts +73 -0
  33. package/dist/look-up.d.ts.map +1 -0
  34. package/dist/look-up.js +140 -0
  35. package/dist/look-up.js.map +1 -0
  36. package/dist/marketplace-wire.d.ts +2 -2
  37. package/dist/outbox.d.ts +29 -3
  38. package/dist/outbox.d.ts.map +1 -1
  39. package/dist/outbox.js +94 -15
  40. package/dist/outbox.js.map +1 -1
  41. package/dist/page-config.d.ts +99 -0
  42. package/dist/page-config.d.ts.map +1 -0
  43. package/dist/page-config.js +197 -0
  44. package/dist/page-config.js.map +1 -0
  45. package/dist/plan-context.d.ts +8 -18
  46. package/dist/plan-context.d.ts.map +1 -1
  47. package/dist/plan-context.js +53 -51
  48. package/dist/plan-context.js.map +1 -1
  49. package/dist/plan-model.d.ts +8 -1
  50. package/dist/plan-model.d.ts.map +1 -1
  51. package/dist/plan.d.ts +1 -1
  52. package/dist/plan.d.ts.map +1 -1
  53. package/dist/plan.js +6 -3
  54. package/dist/plan.js.map +1 -1
  55. package/dist/public-access.d.ts +33 -5
  56. package/dist/public-access.d.ts.map +1 -1
  57. package/dist/public-access.js +82 -4
  58. package/dist/public-access.js.map +1 -1
  59. package/dist/refs.d.ts +2 -0
  60. package/dist/refs.d.ts.map +1 -1
  61. package/dist/refs.js +5 -0
  62. package/dist/refs.js.map +1 -1
  63. package/dist/roles.d.ts +46 -0
  64. package/dist/roles.d.ts.map +1 -1
  65. package/dist/roles.js +50 -0
  66. package/dist/roles.js.map +1 -1
  67. package/dist/sample.d.ts +70 -1
  68. package/dist/sample.d.ts.map +1 -1
  69. package/dist/sample.js +208 -5
  70. package/dist/sample.js.map +1 -1
  71. package/dist/schema.d.ts +9657 -2440
  72. package/dist/schema.d.ts.map +1 -1
  73. package/dist/schema.js +751 -52
  74. package/dist/schema.js.map +1 -1
  75. package/dist/state-actions.d.ts +185 -0
  76. package/dist/state-actions.d.ts.map +1 -0
  77. package/dist/state-actions.js +223 -0
  78. package/dist/state-actions.js.map +1 -0
  79. package/dist/states.d.ts +66 -0
  80. package/dist/states.d.ts.map +1 -1
  81. package/dist/states.js +31 -0
  82. package/dist/states.js.map +1 -1
  83. package/dist/validate.d.ts.map +1 -1
  84. package/dist/validate.js +22 -6
  85. package/dist/validate.js.map +1 -1
  86. package/dist/words.d.ts +33 -0
  87. package/dist/words.d.ts.map +1 -0
  88. package/dist/words.js +208 -0
  89. package/dist/words.js.map +1 -0
  90. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledgers.js","sourceRoot":"","sources":["../src/ledgers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * LOOK-UP — what an add-on lets a typed code find: `addOn.lookUp`.
3
+ *
4
+ * A desk types or scans a code; Adminium, not the add-on's code, reads the
5
+ * row. The add-on says which of its tables hold codes (`kinds`, tried in
6
+ * order), which columns of the found row the answer may carry (`show`), one
7
+ * table of history per kind (`rows`), and, when a customer's address can stand
8
+ * in for a code, where addresses are kept (`address`).
9
+ *
10
+ * The answer never carries the code itself, a secret, or a code staff never
11
+ * see: the page shows what was typed.
12
+ *
13
+ * Typed loosely in the contracts package (it cannot see the manifest's
14
+ * tables); parsed and checked in full here.
15
+ */
16
+ import { z } from 'zod';
17
+ import { type ColumnShape, type ReferenceIssue } from './refs.js';
18
+ export declare const lookUpKindSchema: z.ZodObject<{
19
+ id: z.ZodString;
20
+ table: z.ZodString;
21
+ code: z.ZodString;
22
+ prefix: z.ZodOptional<z.ZodString>;
23
+ where: z.ZodOptional<z.ZodArray<z.ZodObject<{
24
+ column: z.ZodString;
25
+ eq: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
26
+ in: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
27
+ }, z.core.$strict>>>;
28
+ show: z.ZodArray<z.ZodString>;
29
+ rows: z.ZodOptional<z.ZodObject<{
30
+ table: z.ZodString;
31
+ via: z.ZodString;
32
+ columns: z.ZodArray<z.ZodString>;
33
+ }, z.core.$strict>>;
34
+ }, z.core.$strict>;
35
+ export type LookUpKind = z.infer<typeof lookUpKindSchema>;
36
+ export declare const lookUpSchema: z.ZodObject<{
37
+ kinds: z.ZodArray<z.ZodObject<{
38
+ id: z.ZodString;
39
+ table: z.ZodString;
40
+ code: z.ZodString;
41
+ prefix: z.ZodOptional<z.ZodString>;
42
+ where: z.ZodOptional<z.ZodArray<z.ZodObject<{
43
+ column: z.ZodString;
44
+ eq: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
45
+ in: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
46
+ }, z.core.$strict>>>;
47
+ show: z.ZodArray<z.ZodString>;
48
+ rows: z.ZodOptional<z.ZodObject<{
49
+ table: z.ZodString;
50
+ via: z.ZodString;
51
+ columns: z.ZodArray<z.ZodString>;
52
+ }, z.core.$strict>>;
53
+ }, z.core.$strict>>;
54
+ address: z.ZodOptional<z.ZodObject<{
55
+ table: z.ZodString;
56
+ column: z.ZodString;
57
+ show: z.ZodArray<z.ZodString>;
58
+ }, z.core.$strict>>;
59
+ }, z.core.$strict>;
60
+ export type LookUp = z.infer<typeof lookUpSchema>;
61
+ interface LookUpColumn extends ColumnShape {
62
+ unique?: true | undefined;
63
+ secret?: boolean | undefined;
64
+ rules?: Readonly<Record<string, unknown>> | undefined;
65
+ }
66
+ export interface LookUpTable {
67
+ ref: string;
68
+ columns: readonly LookUpColumn[];
69
+ }
70
+ /** Everything wrong with a look-up, against the add-on's own tables. */
71
+ export declare function lookUpIssues(lookUp: LookUp, tables: readonly LookUpTable[]): ReferenceIssue[];
72
+ export {};
73
+ //# sourceMappingURL=look-up.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"look-up.d.ts","sourceRoot":"","sources":["../src/look-up.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAsC,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAOtG,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;kBAalB,CAAC;AACZ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;kBAKd,CAAC;AACZ,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,UAAU,YAAa,SAAQ,WAAW;IACxC,MAAM,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;CACvD;AACD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAClC;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,cAAc,EAAE,CAmF7F"}
@@ -0,0 +1,140 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ /**
3
+ * LOOK-UP — what an add-on lets a typed code find: `addOn.lookUp`.
4
+ *
5
+ * A desk types or scans a code; Adminium, not the add-on's code, reads the
6
+ * row. The add-on says which of its tables hold codes (`kinds`, tried in
7
+ * order), which columns of the found row the answer may carry (`show`), one
8
+ * table of history per kind (`rows`), and, when a customer's address can stand
9
+ * in for a code, where addresses are kept (`address`).
10
+ *
11
+ * The answer never carries the code itself, a secret, or a code staff never
12
+ * see: the page shows what was typed.
13
+ *
14
+ * Typed loosely in the contracts package (it cannot see the manifest's
15
+ * tables); parsed and checked in full here.
16
+ */
17
+ import { z } from 'zod';
18
+ import { keptFromStaff } from './page-config.js';
19
+ import { refSchema, scalarSchema, valueFits } from './refs.js';
20
+ const lookUpWhereSchema = z
21
+ .object({ column: refSchema, eq: scalarSchema.optional(), in: z.array(scalarSchema).min(1).max(16).optional() })
22
+ .strict()
23
+ .refine((where) => (where.eq === undefined) !== (where.in === undefined), { message: 'a condition compares with one value (eq) or a list (in)' });
24
+ export const lookUpKindSchema = z
25
+ .object({
26
+ id: z.string().regex(/^[a-z][a-z0-9-]{0,39}$/, 'a kind id is kebab-case'),
27
+ table: refSchema,
28
+ /** The column the typed value is compared with. */
29
+ code: refSchema,
30
+ /** A typed value starting so is this kind's and no other's. */
31
+ prefix: z.string().regex(/^[A-Z]{2}-$/, 'two capitals and a dash, as "GC-"').optional(),
32
+ where: z.array(lookUpWhereSchema).min(1).max(2).optional(),
33
+ show: z.array(refSchema).min(1).max(16),
34
+ /** One table of history, newest first. */
35
+ rows: z.object({ table: refSchema, via: refSchema, columns: z.array(refSchema).min(1).max(8) }).strict().optional(),
36
+ })
37
+ .strict();
38
+ export const lookUpSchema = z
39
+ .object({
40
+ kinds: z.array(lookUpKindSchema).min(1).max(6),
41
+ address: z.object({ table: refSchema, column: refSchema, show: z.array(refSchema).min(1).max(16) }).strict().optional(),
42
+ })
43
+ .strict();
44
+ /** Everything wrong with a look-up, against the add-on's own tables. */
45
+ export function lookUpIssues(lookUp, tables) {
46
+ const out = [];
47
+ const byRef = new Map(tables.map((table) => [table.ref, table]));
48
+ const column = (table, ref) => table.columns.find((candidate) => candidate.ref === ref);
49
+ /** The columns an answer carries: each exists, once, and none is kept from staff. */
50
+ const shown = (table, refs, path, codes) => {
51
+ const seen = new Set();
52
+ refs.forEach((ref, i) => {
53
+ if (column(table, ref) === undefined)
54
+ out.push({ path: [...path, i], message: `"${table.ref}" has no column "${ref}"` });
55
+ else if (codes.includes(ref))
56
+ out.push({ path: [...path, i], message: `"${table.ref}.${ref}" is the code itself: the answer never carries it (the page shows what was typed)` });
57
+ else {
58
+ const kept = keptFromStaff(table, ref);
59
+ if (kept !== null)
60
+ out.push({ path: [...path, i], message: `"${table.ref}.${ref}" is ${kept}: a look-up never answers it` });
61
+ }
62
+ if (seen.has(ref))
63
+ out.push({ path: [...path, i], message: `"${ref}" is listed twice` });
64
+ seen.add(ref);
65
+ });
66
+ };
67
+ const ids = new Set();
68
+ const prefixes = new Set();
69
+ /** The code columns the kinds name, per table: none of them is ever shown. */
70
+ const codesOf = (table) => lookUp.kinds.filter((kind) => kind.table === table).map((kind) => kind.code);
71
+ lookUp.kinds.forEach((kind, k) => {
72
+ const at = (...rest) => ['addOn', 'lookUp', 'kinds', k, ...rest];
73
+ if (ids.has(kind.id))
74
+ out.push({ path: at('id'), message: `two kinds are called "${kind.id}"` });
75
+ ids.add(kind.id);
76
+ if (kind.prefix !== undefined) {
77
+ if (prefixes.has(kind.prefix))
78
+ out.push({ path: at('prefix'), message: `two kinds claim the prefix "${kind.prefix}": a typed value is one kind's and no other's` });
79
+ prefixes.add(kind.prefix);
80
+ }
81
+ const table = byRef.get(kind.table);
82
+ if (table === undefined) {
83
+ out.push({ path: at('table'), message: `"${kind.table}" is not a table of this add-on` });
84
+ return;
85
+ }
86
+ const code = column(table, kind.code);
87
+ if (code === undefined)
88
+ out.push({ path: at('code'), message: `"${kind.table}" has no column "${kind.code}"` });
89
+ else if (code.rules?.['code']?.hiddenFromStaff === true)
90
+ out.push({ path: at('code'), message: `"${kind.table}.${kind.code}" is a code staff never see: no desk looks it up` });
91
+ else if (code.type !== 'text' || (code.rules?.['code'] === undefined && code.unique !== true))
92
+ out.push({ path: at('code'), message: `"${kind.table}.${kind.code}" is compared with what was typed: it is a text column with a code rule, or a unique one` });
93
+ (kind.where ?? []).forEach((where, w) => {
94
+ const found = column(table, where.column);
95
+ if (found === undefined) {
96
+ out.push({ path: at('where', w, 'column'), message: `"${kind.table}" has no column "${where.column}"` });
97
+ return;
98
+ }
99
+ for (const value of where.in ?? [where.eq]) {
100
+ if (!valueFits(found, value))
101
+ out.push({ path: at('where', w), message: `${JSON.stringify(value)} is not a value "${kind.table}.${where.column}" takes` });
102
+ }
103
+ });
104
+ // Two kinds on one table are told apart by what they ask of the row.
105
+ lookUp.kinds.slice(0, k).forEach((other) => {
106
+ if (other.table === kind.table && JSON.stringify(other.where ?? null) === JSON.stringify(kind.where ?? null)) {
107
+ out.push({ path: at('where'), message: `"${kind.id}" and "${other.id}" both read "${kind.table}" and ask the same of its rows: give them a "where" that differs` });
108
+ }
109
+ });
110
+ shown(table, kind.show, at('show'), codesOf(kind.table));
111
+ if (kind.rows !== undefined) {
112
+ const history = byRef.get(kind.rows.table);
113
+ if (history === undefined) {
114
+ out.push({ path: at('rows', 'table'), message: `"${kind.rows.table}" is not a table of this add-on` });
115
+ return;
116
+ }
117
+ const via = column(history, kind.rows.via);
118
+ if (via === undefined || via.type !== 'fk' || via.references !== kind.table)
119
+ out.push({ path: at('rows', 'via'), message: `"${kind.rows.table}.${kind.rows.via}" is not a foreign key to "${kind.table}"` });
120
+ shown(history, kind.rows.columns, at('rows', 'columns'), codesOf(kind.rows.table));
121
+ }
122
+ });
123
+ if (lookUp.address !== undefined) {
124
+ const { address } = lookUp;
125
+ const at = (...rest) => ['addOn', 'lookUp', 'address', ...rest];
126
+ const table = byRef.get(address.table);
127
+ if (table === undefined) {
128
+ out.push({ path: at('table'), message: `"${address.table}" is not a table of this add-on` });
129
+ return out;
130
+ }
131
+ const found = column(table, address.column);
132
+ if (found === undefined)
133
+ out.push({ path: at('column'), message: `"${address.table}" has no column "${address.column}"` });
134
+ else if (found.rules?.['normalize'] !== 'email')
135
+ out.push({ path: at('column'), message: `"${address.table}.${address.column}" is compared as an address: give it normalize "email"` });
136
+ shown(table, address.show, at('show'), codesOf(address.table));
137
+ }
138
+ return out;
139
+ }
140
+ //# sourceMappingURL=look-up.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"look-up.js","sourceRoot":"","sources":["../src/look-up.ts"],"names":[],"mappings":"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"}
@@ -69,8 +69,8 @@ export declare const appReleaseWireSchema: z.ZodObject<{
69
69
  capabilities: z.ZodArray<z.ZodString>;
70
70
  publisher: z.ZodString;
71
71
  sides: z.ZodArray<z.ZodEnum<{
72
- customer: "customer";
73
72
  staff: "staff";
73
+ customer: "customer";
74
74
  }>>;
75
75
  minAdminiumVersion: z.ZodString;
76
76
  addOns: z.ZodObject<{
@@ -155,8 +155,8 @@ export declare const appItemWireSchema: z.ZodObject<{
155
155
  capabilities: z.ZodArray<z.ZodString>;
156
156
  publisher: z.ZodString;
157
157
  sides: z.ZodArray<z.ZodEnum<{
158
- customer: "customer";
159
158
  staff: "staff";
159
+ customer: "customer";
160
160
  }>>;
161
161
  minAdminiumVersion: z.ZodString;
162
162
  addOns: z.ZodObject<{
package/dist/outbox.d.ts CHANGED
@@ -357,6 +357,7 @@ export declare const outboxSchema: z.ZodObject<{
357
357
  pages: z.ZodOptional<z.ZodObject<{
358
358
  manage: z.ZodOptional<z.ZodString>;
359
359
  booking: z.ZodOptional<z.ZodString>;
360
+ app: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
360
361
  }, z.core.$strict>>;
361
362
  kinds: z.ZodRecord<z.ZodString, z.ZodString>;
362
363
  producers: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
@@ -666,6 +667,9 @@ export declare const REPEAT_KEY_LENGTH = 43;
666
667
  export declare const WAS_MIN_LENGTH = 1000;
667
668
  /** The mark on a template's block that is sent only with the document the template carries (`attach.optional`). */
668
669
  export declare const WITH_ATTACHMENT = "withAttachment";
670
+ /** The marks on a block that is sent only when a variable is filled (`onlyWith`), or only when it is empty (`onlyWithout`). */
671
+ export declare const ONLY_WITH = "onlyWith";
672
+ export declare const ONLY_WITHOUT = "onlyWithout";
669
673
  /** What the outbox writes, and which rules each refuses: everything, but a check of the address a person types. */
670
674
  export declare const OUTBOX_WRITTEN: {
671
675
  readonly status: readonly ["copy", "default", "sequence", "format", "code", "rollup", "formula", "stamp", "perNight", "options", "validation", "required", "requiredWhen", "notAfter", "notBefore"];
@@ -698,6 +702,8 @@ export declare function outboxIssues(m: {
698
702
  outbox?: Outbox | undefined;
699
703
  emailTemplates?: readonly EmailTemplate[] | undefined;
700
704
  addOns?: AddOnNeeds | undefined;
705
+ /** `add-on` when the outbox is an add-on's own: it links into its apps' pages, and has no guest side of its own. */
706
+ kind?: string | undefined;
701
707
  } & Parameters<typeof unlistedColumn>[0], index: TableIndex): ReferenceIssue[];
702
708
  /**
703
709
  * `email.rows`: the rows of a child table that link to the row an outbox link
@@ -712,7 +718,7 @@ export declare function outboxIssues(m: {
712
718
  * is left out.
713
719
  */
714
720
  export declare const emailRowsDataSchema: z.ZodObject<{
715
- from: z.ZodObject<{
721
+ from: z.ZodUnion<readonly [z.ZodObject<{
716
722
  link: z.ZodString;
717
723
  table: z.ZodString;
718
724
  via: z.ZodString;
@@ -723,7 +729,22 @@ export declare const emailRowsDataSchema: z.ZodObject<{
723
729
  }, z.core.$strict>>;
724
730
  unless: z.ZodOptional<z.ZodString>;
725
731
  limit: z.ZodOptional<z.ZodNumber>;
726
- }, z.core.$strict>;
732
+ }, z.core.$strict>, z.ZodObject<{
733
+ link: z.ZodString;
734
+ addOn: z.ZodString;
735
+ table: z.ZodString;
736
+ match: z.ZodObject<{
737
+ table: z.ZodString;
738
+ row: z.ZodString;
739
+ }, z.core.$strict>;
740
+ orderBy: z.ZodOptional<z.ZodString>;
741
+ where: z.ZodOptional<z.ZodObject<{
742
+ column: z.ZodString;
743
+ in: z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
744
+ }, z.core.$strict>>;
745
+ unless: z.ZodOptional<z.ZodString>;
746
+ limit: z.ZodOptional<z.ZodNumber>;
747
+ }, z.core.$strict>]>;
727
748
  joins: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
728
749
  table: z.ZodString;
729
750
  via: z.ZodString;
@@ -764,8 +785,13 @@ export declare const GROUPED_FORM = "grouped";
764
785
  * A code in groups of four joined by `-` (`K7QXM2PD` → `K7QX-M2PD`), the way
765
786
  * a person reads it out; separators already in it are dropped first. Empty
766
787
  * stays empty.
788
+ *
789
+ * A code kept with a prefix keeps it whole (`GC-7K2M9QXA41TR` with `GC-` →
790
+ * `GC-7K2M-9QXA-41TR`): the prefix is what tells a card from a voucher, and
791
+ * cut into the first group of four it reads as part of the code. A value
792
+ * that does not start with the prefix is grouped as any other.
767
793
  */
768
- export declare function groupedCode(value: unknown): string;
794
+ export declare function groupedCode(value: unknown, prefix?: string): string;
769
795
  /** Whether a column holds a code Adminium makes: a text column with a `code` rule. */
770
796
  export declare function isCodeColumn(column: {
771
797
  type: string;
@@ -1 +1 @@
1
- {"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../src/outbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../src/outbox.ts"],"names":[],"mappings":"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"}
package/dist/outbox.js CHANGED
@@ -315,6 +315,16 @@ export const outboxSchema = z
315
315
  .object({
316
316
  manage: z.string().regex(/^\/[A-Za-z0-9/_-]{0,119}$/, 'a path on the guest side, e.g. /my-visits').optional(),
317
317
  booking: z.string().regex(/^\/[A-Za-z0-9/_-]{0,119}$/, 'a path on the guest side, e.g. /').optional(),
318
+ /**
319
+ * An add-on's links into the customer side of whichever app it serves:
320
+ * a name of its own → the key of a route that app declares. A template
321
+ * reads it as `{{app_url.<name>}}`; it is empty when no app of the
322
+ * add-on's has that route.
323
+ */
324
+ app: z
325
+ .record(z.string().regex(/^[a-z][a-z0-9-]{0,39}$/, 'a kebab-case name'), z.string().regex(/^[A-Za-z][A-Za-z0-9]{0,39}$/, 'a route key'))
326
+ .refine((names) => Object.keys(names).length >= 1 && Object.keys(names).length <= 6, { message: 'one to six links into an app' })
327
+ .optional(),
318
328
  })
319
329
  .strict()
320
330
  .optional(),
@@ -400,6 +410,9 @@ export const REPEAT_KEY_LENGTH = 43;
400
410
  export const WAS_MIN_LENGTH = 1000;
401
411
  /** The mark on a template's block that is sent only with the document the template carries (`attach.optional`). */
402
412
  export const WITH_ATTACHMENT = 'withAttachment';
413
+ /** The marks on a block that is sent only when a variable is filled (`onlyWith`), or only when it is empty (`onlyWithout`). */
414
+ export const ONLY_WITH = 'onlyWith';
415
+ export const ONLY_WITHOUT = 'onlyWithout';
403
416
  /** What the outbox writes, and which rules each refuses: everything, but a check of the address a person types. */
404
417
  export const OUTBOX_WRITTEN = {
405
418
  status: [...DECIDING_RULES, ...REFUSING_RULES],
@@ -452,6 +465,23 @@ export function outboxIssues(m, index) {
452
465
  // A block sent only with the document: marked `true`, and only where the document may be left out.
453
466
  for (const [locale, content] of Object.entries(template.locales)) {
454
467
  content.blocks.forEach((block, b) => {
468
+ // A block sent only when a variable is filled, or only when it is empty: one name, without braces.
469
+ const marks = [ONLY_WITH, ONLY_WITHOUT].filter((name) => block.data?.[name] !== undefined);
470
+ if (marks.length === 2)
471
+ out.push({ path: ['emailTemplates', i, 'locales', locale, 'blocks', b, 'data'], message: `a block is sent ${ONLY_WITH} a variable or ${ONLY_WITHOUT} one, not both` });
472
+ for (const name of marks) {
473
+ const variable = block.data?.[name];
474
+ const path = ['emailTemplates', i, 'locales', locale, 'blocks', b, 'data', name];
475
+ if (typeof variable !== 'string' || !/^[A-Za-z_][A-Za-z0-9_.-]{0,119}$/.test(variable)) {
476
+ out.push({ path, message: `${name} names one variable, without braces (card.sender_name)` });
477
+ }
478
+ else if (variable.startsWith('app_url.') && m.outbox?.pages?.app?.[variable.slice('app_url.'.length)] === undefined) {
479
+ out.push({ path, message: `"${variable}" is not a link the outbox declares (outbox.pages.app)` });
480
+ }
481
+ else if (variable.startsWith('row.')) {
482
+ out.push({ path, message: 'a row\'s own value is read inside an email.rows block, which is sent with its rows or not at all' });
483
+ }
484
+ }
455
485
  const mark = block.data?.[WITH_ATTACHMENT];
456
486
  if (mark === undefined)
457
487
  return;
@@ -476,6 +506,16 @@ export function outboxIssues(m, index) {
476
506
  return out;
477
507
  }
478
508
  const at = (...rest) => ['outbox', ...rest];
509
+ // Whose pages a link leads to: an app's own guest side, or — for an add-on — a page of the app it serves.
510
+ if (m.kind === 'add-on') {
511
+ for (const own of ['manage', 'booking']) {
512
+ if (box.pages?.[own] !== undefined)
513
+ out.push({ path: at('pages', own), message: `an add-on has no guest side of its own: link into its app's pages by name (outbox.pages.app)` });
514
+ }
515
+ }
516
+ else if (box.pages?.app !== undefined) {
517
+ out.push({ path: at('pages', 'app'), message: 'an app links to its own guest side (pages.manage, pages.booking): "app" is how an add-on links into an app' });
518
+ }
479
519
  if (index.table(box.table) === undefined) {
480
520
  out.push({ path: at('table'), message: `"${box.table}" is not a table of this app` });
481
521
  return out;
@@ -870,7 +910,8 @@ export function outboxIssues(m, index) {
870
910
  }
871
911
  }
872
912
  });
873
- out.push(...emailBlockIssues(m.emailTemplates ?? [], box, index, (table, column) => unlistedColumn(m, table, column)));
913
+ const named = new Set([...(m.kind === 'add-on' ? [m.key] : []), ...(m.addOns?.requires ?? []), ...(m.addOns?.suggests ?? [])].map((need) => (typeof need === 'string' ? need : need.key)));
914
+ out.push(...emailBlockIssues(m.emailTemplates ?? [], box, index, (table, column) => unlistedColumn(m, table, column), named));
874
915
  return out;
875
916
  }
876
917
  // ── blocks that list rows, and QR codes ──────────────────────────────────────
@@ -888,17 +929,36 @@ export function outboxIssues(m, index) {
888
929
  */
889
930
  export const emailRowsDataSchema = z
890
931
  .object({
891
- from: z
892
- .object({
893
- link: z.string().regex(/^[a-z][a-z_]*$/, 'a link name is snake_case'),
894
- table: refSchema,
895
- via: refSchema,
896
- orderBy: refSchema.optional(),
897
- where: z.object({ column: refSchema, in: z.array(scalarSchema).min(1).max(32) }).strict().optional(),
898
- unless: refSchema.optional(),
899
- limit: z.number().int().min(1).max(50).optional(),
900
- })
901
- .strict(),
932
+ from: z.union([
933
+ z
934
+ .object({
935
+ link: z.string().regex(/^[a-z][a-z_]*$/, 'a link name is snake_case'),
936
+ table: refSchema,
937
+ via: refSchema,
938
+ orderBy: refSchema.optional(),
939
+ where: z.object({ column: refSchema, in: z.array(scalarSchema).min(1).max(32) }).strict().optional(),
940
+ unless: refSchema.optional(),
941
+ limit: z.number().int().min(1).max(50).optional(),
942
+ })
943
+ .strict(),
944
+ /**
945
+ * Rows of an add-on's table that belong to the row a link names, found
946
+ * by the table-and-row pair the add-on keeps (what was applied to an
947
+ * order). `table` and `match` are the add-on's own short names.
948
+ */
949
+ z
950
+ .object({
951
+ link: z.string().regex(/^[a-z][a-z_]*$/, 'a link name is snake_case'),
952
+ addOn: z.string().regex(/^[a-z][a-z0-9-]{1,79}$/, 'an add-on key'),
953
+ table: refSchema,
954
+ match: z.object({ table: refSchema, row: refSchema }).strict(),
955
+ orderBy: refSchema.optional(),
956
+ where: z.object({ column: refSchema, in: z.array(scalarSchema).min(1).max(32) }).strict().optional(),
957
+ unless: refSchema.optional(),
958
+ limit: z.number().int().min(1).max(50).optional(),
959
+ })
960
+ .strict(),
961
+ ]),
902
962
  joins: z
903
963
  .record(refSchema, z
904
964
  .object({ table: refSchema, via: refSchema, column: refSchema, orderBy: refSchema.optional(), separator: z.string().min(1).max(8).optional() })
@@ -937,7 +997,9 @@ function stringsIn(value, path, out = []) {
937
997
  * can fill; the same rows in every language; and a QR code only as a whole
938
998
  * image value, of a code column.
939
999
  */
940
- function emailBlockIssues(templates, box, index, unlisted) {
1000
+ function emailBlockIssues(templates, box, index, unlisted,
1001
+ /** The add-ons whose rows a block may list: the ones the manifest names, and itself when it is one. */
1002
+ named = new Set()) {
941
1003
  const out = [];
942
1004
  const links = box.links ?? {};
943
1005
  /** The table a link names. */
@@ -1023,6 +1085,14 @@ function emailBlockIssues(templates, box, index, unlisted) {
1023
1085
  const parent = linkTable(from.link);
1024
1086
  if (links[from.link] === undefined)
1025
1087
  out.push({ path: at('data', 'from', 'link'), message: `"${from.link}" is not one of the outbox's links` });
1088
+ if ('addOn' in from) {
1089
+ // An add-on's rows: its table and columns are checked where its manifest is at hand, at install.
1090
+ if (!named.has(from.addOn))
1091
+ out.push({ path: at('data', 'from', 'addOn'), message: `"${from.addOn}" is not an add-on this manifest names: add it to addOns.requires or addOns.suggests` });
1092
+ if (data.joins !== undefined)
1093
+ out.push({ path: at('data', 'joins'), message: 'rows of an add-on\'s table join no list of this manifest\'s' });
1094
+ return;
1095
+ }
1026
1096
  if (index.table(from.table) === undefined) {
1027
1097
  out.push({ path: at('data', 'from', 'table'), message: `"${from.table}" is not a table of this app` });
1028
1098
  return;
@@ -1164,12 +1234,21 @@ export const GROUPED_FORM = 'grouped';
1164
1234
  * A code in groups of four joined by `-` (`K7QXM2PD` → `K7QX-M2PD`), the way
1165
1235
  * a person reads it out; separators already in it are dropped first. Empty
1166
1236
  * stays empty.
1237
+ *
1238
+ * A code kept with a prefix keeps it whole (`GC-7K2M9QXA41TR` with `GC-` →
1239
+ * `GC-7K2M-9QXA-41TR`): the prefix is what tells a card from a voucher, and
1240
+ * cut into the first group of four it reads as part of the code. A value
1241
+ * that does not start with the prefix is grouped as any other.
1167
1242
  */
1168
- export function groupedCode(value) {
1243
+ export function groupedCode(value, prefix = '') {
1169
1244
  if (value === null || value === undefined)
1170
1245
  return '';
1246
+ const fours = (text) => (text.match(/.{1,4}/g) ?? []).join('-');
1171
1247
  const bare = String(value).replace(/[\s-]+/g, '');
1172
- return (bare.match(/.{1,4}/g) ?? []).join('-');
1248
+ const head = prefix.replace(/[^0-9A-Za-z]/g, '');
1249
+ if (head !== '' && bare.length > head.length && bare.toUpperCase().startsWith(head.toUpperCase()))
1250
+ return prefix + fours(bare.slice(head.length));
1251
+ return fours(bare);
1173
1252
  }
1174
1253
  /** Whether a column holds a code Adminium makes: a text column with a `code` rule. */
1175
1254
  export function isCodeColumn(column) {