@adminiumjs/add-on-contracts 0.3.39 → 0.3.41
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/add-on-block.d.ts +47 -2
- package/dist/add-on-block.d.ts.map +1 -1
- package/dist/add-on-block.js +18 -2
- package/dist/add-on-block.js.map +1 -1
- package/dist/forms/check.d.ts +82 -0
- package/dist/forms/check.d.ts.map +1 -0
- package/dist/forms/check.js +298 -0
- package/dist/forms/check.js.map +1 -0
- package/dist/forms/definition.d.ts +1462 -0
- package/dist/forms/definition.d.ts.map +1 -0
- package/dist/forms/definition.js +451 -0
- package/dist/forms/definition.js.map +1 -0
- package/dist/forms/index.d.ts +18 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +19 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/forms/parse.d.ts +30 -0
- package/dist/forms/parse.d.ts.map +1 -0
- package/dist/forms/parse.js +93 -0
- package/dist/forms/parse.js.map +1 -0
- package/dist/forms/scales.d.ts +34 -0
- package/dist/forms/scales.d.ts.map +1 -0
- package/dist/forms/scales.js +17 -0
- package/dist/forms/scales.js.map +1 -0
- package/dist/forms/settings.d.ts +77 -0
- package/dist/forms/settings.d.ts.map +1 -0
- package/dist/forms/settings.js +68 -0
- package/dist/forms/settings.js.map +1 -0
- package/dist/forms/slug.d.ts +23 -0
- package/dist/forms/slug.d.ts.map +1 -0
- package/dist/forms/slug.js +26 -0
- package/dist/forms/slug.js.map +1 -0
- package/dist/forms/summary.d.ts +60 -0
- package/dist/forms/summary.d.ts.map +1 -0
- package/dist/forms/summary.js +91 -0
- package/dist/forms/summary.js.map +1 -0
- package/dist/forms/websites.d.ts +54 -0
- package/dist/forms/websites.d.ts.map +1 -0
- package/dist/forms/websites.js +97 -0
- package/dist/forms/websites.js.map +1 -0
- package/dist/forms/words.d.ts +49 -0
- package/dist/forms/words.d.ts.map +1 -0
- package/dist/forms/words.js +31 -0
- package/dist/forms/words.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/data-types.d.ts +55 -0
- package/dist/runtime/data-types.d.ts.map +1 -1
- package/dist/runtime/data.d.ts +2 -0
- package/dist/runtime/data.d.ts.map +1 -1
- package/dist/runtime/data.js +2 -0
- package/dist/runtime/data.js.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +2 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/steps.d.ts +150 -5
- package/dist/steps.d.ts.map +1 -1
- package/dist/steps.js +59 -8
- package/dist/steps.js.map +1 -1
- package/package.json +13 -1
package/dist/add-on-block.d.ts
CHANGED
|
@@ -13,15 +13,18 @@ import { type BuiltinNavGroupKey } from './nav-groups.js';
|
|
|
13
13
|
* Add-ons get their OWN closed category vocabulary, because an add-on is
|
|
14
14
|
* not a vertical and forcing it into the app facet set would make a carrier a
|
|
15
15
|
* "commerce" product. Wave 4 uses two of the five; the other three exist so a
|
|
16
|
-
* second add-on wave does not have to reopen the vocabulary.
|
|
16
|
+
* second add-on wave does not have to reopen the vocabulary. `marketing` is
|
|
17
|
+
* for the add-ons that reach people outside the business: forms and surveys,
|
|
18
|
+
* landing pages, chat, social posts, prospecting.
|
|
17
19
|
*/
|
|
18
|
-
export declare const ADD_ON_CATEGORIES: readonly ["artwork", "delivery", "payments", "email", "data"];
|
|
20
|
+
export declare const ADD_ON_CATEGORIES: readonly ["artwork", "delivery", "payments", "email", "data", "marketing"];
|
|
19
21
|
export declare const addOnCategorySchema: z.ZodEnum<{
|
|
20
22
|
email: "email";
|
|
21
23
|
artwork: "artwork";
|
|
22
24
|
delivery: "delivery";
|
|
23
25
|
payments: "payments";
|
|
24
26
|
data: "data";
|
|
27
|
+
marketing: "marketing";
|
|
25
28
|
}>;
|
|
26
29
|
export type AddOnCategory = (typeof ADD_ON_CATEGORIES)[number];
|
|
27
30
|
/** How the shop supplies credentials, if at all. */
|
|
@@ -372,6 +375,10 @@ export declare const addOnBlockSchema: z.ZodObject<{
|
|
|
372
375
|
}, z.core.$strict>>>;
|
|
373
376
|
}, z.core.$strict>>>;
|
|
374
377
|
lookUp: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
378
|
+
forms: z.ZodOptional<z.ZodObject<{
|
|
379
|
+
forms: z.ZodString;
|
|
380
|
+
answers: z.ZodString;
|
|
381
|
+
}, z.core.$loose>>;
|
|
375
382
|
steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
376
383
|
key: z.ZodString;
|
|
377
384
|
name: z.ZodObject<{
|
|
@@ -412,8 +419,19 @@ export declare const addOnBlockSchema: z.ZodObject<{
|
|
|
412
419
|
text: "text";
|
|
413
420
|
email: "email";
|
|
414
421
|
choice: "choice";
|
|
422
|
+
person: "person";
|
|
415
423
|
}>;
|
|
416
424
|
required: z.ZodOptional<z.ZodBoolean>;
|
|
425
|
+
help: z.ZodOptional<z.ZodObject<{
|
|
426
|
+
"ar-EG": z.ZodString;
|
|
427
|
+
"cs-CZ": z.ZodString;
|
|
428
|
+
"da-DK": z.ZodString;
|
|
429
|
+
"de-DE": z.ZodString;
|
|
430
|
+
"en-US": z.ZodString;
|
|
431
|
+
"fr-FR": z.ZodString;
|
|
432
|
+
"zh-CN": z.ZodString;
|
|
433
|
+
"zh-TW": z.ZodString;
|
|
434
|
+
}, z.core.$strict>>;
|
|
417
435
|
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
418
436
|
value: z.ZodString;
|
|
419
437
|
label: z.ZodObject<{
|
|
@@ -426,8 +444,23 @@ export declare const addOnBlockSchema: z.ZodObject<{
|
|
|
426
444
|
"zh-CN": z.ZodString;
|
|
427
445
|
"zh-TW": z.ZodString;
|
|
428
446
|
}, z.core.$strict>;
|
|
447
|
+
help: z.ZodOptional<z.ZodObject<{
|
|
448
|
+
"ar-EG": z.ZodString;
|
|
449
|
+
"cs-CZ": z.ZodString;
|
|
450
|
+
"da-DK": z.ZodString;
|
|
451
|
+
"de-DE": z.ZodString;
|
|
452
|
+
"en-US": z.ZodString;
|
|
453
|
+
"fr-FR": z.ZodString;
|
|
454
|
+
"zh-CN": z.ZodString;
|
|
455
|
+
"zh-TW": z.ZodString;
|
|
456
|
+
}, z.core.$strict>>;
|
|
429
457
|
}, z.core.$strict>>>;
|
|
430
458
|
table: z.ZodOptional<z.ZodString>;
|
|
459
|
+
by: z.ZodOptional<z.ZodString>;
|
|
460
|
+
where: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
461
|
+
column: z.ZodString;
|
|
462
|
+
eq: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
|
|
463
|
+
}, z.core.$strict>>>;
|
|
431
464
|
}, z.core.$strict>>;
|
|
432
465
|
writes: z.ZodObject<{
|
|
433
466
|
table: z.ZodString;
|
|
@@ -440,6 +473,18 @@ export declare const addOnBlockSchema: z.ZodObject<{
|
|
|
440
473
|
now: "now";
|
|
441
474
|
ruleName: "ruleName";
|
|
442
475
|
recordLabel: "recordLabel";
|
|
476
|
+
recordTable: "recordTable";
|
|
477
|
+
recordKey: "recordKey";
|
|
478
|
+
}>;
|
|
479
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
480
|
+
person: z.ZodString;
|
|
481
|
+
field: z.ZodEnum<{
|
|
482
|
+
key: "key";
|
|
483
|
+
table: "table";
|
|
484
|
+
email: "email";
|
|
485
|
+
name: "name";
|
|
486
|
+
language: "language";
|
|
487
|
+
company: "company";
|
|
443
488
|
}>;
|
|
444
489
|
}, z.core.$strict>]>>;
|
|
445
490
|
}, z.core.$strict>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-on-block.d.ts","sourceRoot":"","sources":["../src/add-on-block.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAElF
|
|
1
|
+
{"version":3,"file":"add-on-block.d.ts","sourceRoot":"","sources":["../src/add-on-block.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAElF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,4EAA6E,CAAC;AAC5G,eAAO,MAAM,mBAAmB;;;;;;;EAA4B,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,oDAAoD;AACpD,eAAO,MAAM,aAAa,wCAAyC,CAAC;AACpE,eAAO,MAAM,iBAAiB;;;;EAAwB,CAAC;AACvD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAKzD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOpD;AAWD,eAAO,MAAM,kBAAkB;;;;kBAQpB,CAAC;AAEZ,eAAO,MAAM,cAAc;;;;;;;;;;;;kBAMhB,CAAC;AAEZ,eAAO,MAAM,cAAc;;;;;;;;;;;kBAKhB,CAAC;AAEZ,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;kBAMhB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;kBAKlB,CAAC;AAEZ,eAAO,MAAM,kBAAkB;;;;;;;;;kBAOpB,CAAC;AAEZ,eAAO,MAAM,kBAAkB;;kBAIpB,CAAC;AAIZ;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAE/G;;;;;;GAMG;AACH,OAAO,EAAE,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAElF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,EAAE,kBAA8B,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,aAE2D,CAAC;AAE1F;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,yDAAwC,CAAC;AAC1E,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;kBAOpB,CAAC;AAEZ;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;kBAcjB,CAAC;AACZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;kBASrB,CAAC;AACZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAgM1B,CAAC;AAEJ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,uCAAuC;AACvC,eAAO,MAAM,kBAAkB,wLAgBrB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
package/dist/add-on-block.js
CHANGED
|
@@ -20,9 +20,11 @@ import { BUILTIN_NAV_GROUP_KEYS } from './nav-groups.js';
|
|
|
20
20
|
* Add-ons get their OWN closed category vocabulary, because an add-on is
|
|
21
21
|
* not a vertical and forcing it into the app facet set would make a carrier a
|
|
22
22
|
* "commerce" product. Wave 4 uses two of the five; the other three exist so a
|
|
23
|
-
* second add-on wave does not have to reopen the vocabulary.
|
|
23
|
+
* second add-on wave does not have to reopen the vocabulary. `marketing` is
|
|
24
|
+
* for the add-ons that reach people outside the business: forms and surveys,
|
|
25
|
+
* landing pages, chat, social posts, prospecting.
|
|
24
26
|
*/
|
|
25
|
-
export const ADD_ON_CATEGORIES = ['artwork', 'delivery', 'payments', 'email', 'data'];
|
|
27
|
+
export const ADD_ON_CATEGORIES = ['artwork', 'delivery', 'payments', 'email', 'data', 'marketing'];
|
|
26
28
|
export const addOnCategorySchema = z.enum(ADD_ON_CATEGORIES);
|
|
27
29
|
/** How the shop supplies credentials, if at all. */
|
|
28
30
|
export const CONNECT_KINDS = ['none', 'api-key', 'oauth2'];
|
|
@@ -297,6 +299,20 @@ export const addOnBlockSchema = z
|
|
|
297
299
|
* manifest's own tables, so `@adminium/manifest` checks the whole of it.
|
|
298
300
|
*/
|
|
299
301
|
lookUp: z.record(z.string(), z.unknown()).optional(),
|
|
302
|
+
/**
|
|
303
|
+
* Forms: which of the add-on's own tables hold the forms, the answers,
|
|
304
|
+
* and (optional) the survey invitations and the strangers' files. The
|
|
305
|
+
* engine reads, draws and writes them for a stranger; no add-on code
|
|
306
|
+
* runs for one. Only the two tables every forms add-on has are typed
|
|
307
|
+
* here: the columns each must have are the manifest's own vocabulary,
|
|
308
|
+
* so `@adminium/manifest` checks the whole of it.
|
|
309
|
+
*/
|
|
310
|
+
forms: z
|
|
311
|
+
.looseObject({
|
|
312
|
+
forms: z.string().regex(/^[a-z][a-z0-9_]*$/, 'a table ref'),
|
|
313
|
+
answers: z.string().regex(/^[a-z][a-z0-9_]*$/, 'a table ref'),
|
|
314
|
+
})
|
|
315
|
+
.optional(),
|
|
300
316
|
/**
|
|
301
317
|
* Steps the add-on gives to Automations: each a named write of one row of
|
|
302
318
|
* one of its own tables (see `steps.ts`). Which table and columns they are
|
package/dist/add-on-block.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-on-block.js","sourceRoot":"","sources":["../src/add-on-block.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add-on-block.js","sourceRoot":"","sources":["../src/add-on-block.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AN ANSWER, CHECKED: what a visitor sent, held to the form it answers.
|
|
3
|
+
*
|
|
4
|
+
* The browser's own checks are for the visitor's comfort; this is the check.
|
|
5
|
+
* The engine runs it on every answer before anything is written, and the
|
|
6
|
+
* builder's preview runs the same one, so what the page lets through and what
|
|
7
|
+
* the server takes never differ.
|
|
8
|
+
*
|
|
9
|
+
* What it holds an answer to:
|
|
10
|
+
* - only the form's own questions, and none hidden by "show if" (a value
|
|
11
|
+
* there is refused, not dropped: the page must not send it);
|
|
12
|
+
* - each kind's own shape and bounds: required, choices and picks, a date's
|
|
13
|
+
* earliest day in the business's time zone, a number's bounds and
|
|
14
|
+
* wholeness, an e-mail address, a phone number, a text's length;
|
|
15
|
+
* - a hidden field filled from the page address's query alone;
|
|
16
|
+
* - a file answer as the upload ids the file door handed out (what they
|
|
17
|
+
* are is the file door's to say);
|
|
18
|
+
* - a tick as `true`, or nothing.
|
|
19
|
+
* Every text is NFC-normalised, and every control character is taken out
|
|
20
|
+
* (a long answer keeps its line breaks).
|
|
21
|
+
*
|
|
22
|
+
* Its own entry too (`@adminium/add-on-contracts/forms/check`), which
|
|
23
|
+
* reaches no schema: a stranger's page checks answers with it and carries
|
|
24
|
+
* none of the schemas' weight.
|
|
25
|
+
*
|
|
26
|
+
* Pure: no I/O.
|
|
27
|
+
*/
|
|
28
|
+
import type { FormQuestion } from './definition.js';
|
|
29
|
+
import type { Form } from './parse.js';
|
|
30
|
+
/** What an answer to one question is, once checked. */
|
|
31
|
+
export type FormAnswerValue = string | string[] | number | true;
|
|
32
|
+
/** A whole answer: question id to value, for the questions answered. */
|
|
33
|
+
export type FormAnswerValues = Record<string, FormAnswerValue>;
|
|
34
|
+
/** Why one answer was refused (one per question), or `*` for the answer as a whole. */
|
|
35
|
+
export declare const FORM_ANSWER_CODES: readonly ["shape", "language", "unknown-question", "not-shown", "from-query", "required", "text", "too-long", "email", "phone", "choice", "too-few", "too-many", "date", "too-early", "number", "whole", "too-small", "too-large", "score", "stars", "file", "tick"];
|
|
36
|
+
export type FormAnswerCode = (typeof FORM_ANSWER_CODES)[number];
|
|
37
|
+
/** The key of a refusal that is about the answer as a whole. */
|
|
38
|
+
export declare const WHOLE_ANSWER = "*";
|
|
39
|
+
export type CheckedAnswer = {
|
|
40
|
+
ok: true;
|
|
41
|
+
values: FormAnswerValues;
|
|
42
|
+
/** The first e-mail question's answer, trimmed and in lower case; null when there is none, or the survey keeps no names. */
|
|
43
|
+
email: string | null;
|
|
44
|
+
/** The first name question's answer; null likewise. */
|
|
45
|
+
name: string | null;
|
|
46
|
+
} | {
|
|
47
|
+
ok: false;
|
|
48
|
+
errors: Record<string, FormAnswerCode>;
|
|
49
|
+
};
|
|
50
|
+
/** The longest a hidden field's value is kept. */
|
|
51
|
+
export declare const HIDDEN_VALUE_MAX = 200;
|
|
52
|
+
/** The longest e-mail address taken (the address the mail system carries). */
|
|
53
|
+
export declare const EMAIL_MAX = 254;
|
|
54
|
+
/** The longest a name is kept on the answer. */
|
|
55
|
+
export declare const ANSWER_NAME_MAX = 200;
|
|
56
|
+
/** An upload id the file door hands out. */
|
|
57
|
+
export declare const UPLOAD_ID: RegExp;
|
|
58
|
+
/** A text as it is kept: well formed, NFC, without control characters (a long answer keeps its line breaks), trimmed. */
|
|
59
|
+
export declare function cleanText(text: string, keepLineBreaks?: boolean): string;
|
|
60
|
+
/**
|
|
61
|
+
* The questions a visitor is shown, in order, given the answers so far. A
|
|
62
|
+
* hidden field is never among them.
|
|
63
|
+
*/
|
|
64
|
+
export declare function visibleQuestions(form: Pick<Form, 'definition'>, values: Readonly<Record<string, unknown>>): FormQuestion[];
|
|
65
|
+
/** Whether a text is an e-mail address this vocabulary takes. */
|
|
66
|
+
export declare function isEmailAddress(text: string): boolean;
|
|
67
|
+
/** Whether a text is a phone number this vocabulary takes. */
|
|
68
|
+
export declare function isPhoneNumber(text: string): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* An answer to a form, checked: the values kept, the person's e-mail address
|
|
71
|
+
* and name when the form keeps them — or every refusal, one per question.
|
|
72
|
+
*
|
|
73
|
+
* `today` is the business's own date (`yyyy-mm-dd` in its time zone), which a
|
|
74
|
+
* date question's earliest day counts from. `query` is the page address's
|
|
75
|
+
* query, the one place a hidden field is filled from.
|
|
76
|
+
*/
|
|
77
|
+
export declare function checkAnswer(form: Form, raw: unknown, context: {
|
|
78
|
+
language: string;
|
|
79
|
+
today: string;
|
|
80
|
+
query?: Readonly<Record<string, string | readonly string[] | undefined>> | undefined;
|
|
81
|
+
}): CheckedAnswer;
|
|
82
|
+
//# sourceMappingURL=check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/forms/check.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,YAAY,EAAU,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,uDAAuD;AACvD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;AAChE,wEAAwE;AACxE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE/D,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,sQA+BpB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,gEAAgE;AAChE,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC,MAAM,MAAM,aAAa,GACrB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,gBAAgB,CAAC;IACzB,4HAA4H;IAC5H,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,uDAAuD;IACvD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;CAAE,CAAC;AAE1D,kDAAkD;AAClD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,8EAA8E;AAC9E,eAAO,MAAM,SAAS,MAAM,CAAC;AAC7B,gDAAgD;AAChD,eAAO,MAAM,eAAe,MAAM,CAAC;AACnC,4CAA4C;AAC5C,eAAO,MAAM,SAAS,QAA2B,CAAC;AAsBlD,yHAAyH;AACzH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,UAAQ,GAAG,MAAM,CAKtE;AAgCD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,YAAY,EAAE,CAS1H;AA2BD,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnD;AA4DD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAA;CAAE,GACjI,aAAa,CAuDf"}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import { FORM_FILES_MAX, keepsNames, SCALE_OF } from './scales.js';
|
|
2
|
+
/** Why one answer was refused (one per question), or `*` for the answer as a whole. */
|
|
3
|
+
export const FORM_ANSWER_CODES = [
|
|
4
|
+
/** The answer is not an object of question ids, or names a language the form does not speak. */
|
|
5
|
+
'shape',
|
|
6
|
+
'language',
|
|
7
|
+
/** No question of the form has this id. */
|
|
8
|
+
'unknown-question',
|
|
9
|
+
/** The question is hidden by its "show if", so it takes no answer. */
|
|
10
|
+
'not-shown',
|
|
11
|
+
/** A hidden field is filled from the page address only. */
|
|
12
|
+
'from-query',
|
|
13
|
+
'required',
|
|
14
|
+
/** Not text, or text with nothing left in it. */
|
|
15
|
+
'text',
|
|
16
|
+
'too-long',
|
|
17
|
+
'email',
|
|
18
|
+
'phone',
|
|
19
|
+
/** Not one of the question's choices, or a choice named twice. */
|
|
20
|
+
'choice',
|
|
21
|
+
'too-few',
|
|
22
|
+
'too-many',
|
|
23
|
+
/** Not a day (yyyy-mm-dd), or before the earliest the question takes. */
|
|
24
|
+
'date',
|
|
25
|
+
'too-early',
|
|
26
|
+
'number',
|
|
27
|
+
'whole',
|
|
28
|
+
'too-small',
|
|
29
|
+
'too-large',
|
|
30
|
+
'score',
|
|
31
|
+
'stars',
|
|
32
|
+
'file',
|
|
33
|
+
'tick',
|
|
34
|
+
];
|
|
35
|
+
/** The key of a refusal that is about the answer as a whole. */
|
|
36
|
+
export const WHOLE_ANSWER = '*';
|
|
37
|
+
/** The longest a hidden field's value is kept. */
|
|
38
|
+
export const HIDDEN_VALUE_MAX = 200;
|
|
39
|
+
/** The longest e-mail address taken (the address the mail system carries). */
|
|
40
|
+
export const EMAIL_MAX = 254;
|
|
41
|
+
/** The longest a name is kept on the answer. */
|
|
42
|
+
export const ANSWER_NAME_MAX = 200;
|
|
43
|
+
/** An upload id the file door hands out. */
|
|
44
|
+
export const UPLOAD_ID = /^[A-Za-z0-9_-]{16,64}$/;
|
|
45
|
+
/**
|
|
46
|
+
* An e-mail address: a local part of 1 to 64 characters with no space, `@`,
|
|
47
|
+
* angle bracket, quote, comma or semicolon, and a domain of dot-separated
|
|
48
|
+
* labels ending in one of letters. Stricter than the engine's column rule
|
|
49
|
+
* (`something@something.something`), which lives in the server: no package
|
|
50
|
+
* both import holds an address rule.
|
|
51
|
+
*/
|
|
52
|
+
const EMAIL = /^[^\s@<>()[\]\\,;:"]{1,64}@(?:[\p{L}\p{N}](?:[\p{L}\p{N}-]{0,61}[\p{L}\p{N}])?\.)+\p{L}[\p{L}-]{0,62}$/u;
|
|
53
|
+
/** A phone number as people write one: an optional +, digits, spaces and ( ) . - , with 6 to 15 digits. */
|
|
54
|
+
const PHONE = /^\+?\(?[0-9][0-9\s().-]*$/;
|
|
55
|
+
const PHONE_DIGITS = { min: 6, max: 15 };
|
|
56
|
+
/** A number written as text: at most 16 characters, digits with an optional sign and point. */
|
|
57
|
+
const NUMBER_TEXT = /^-?\d+(\.\d+)?$/;
|
|
58
|
+
const NUMBER_TEXT_MAX = 16;
|
|
59
|
+
const NUMBER_MAGNITUDE = 1e12;
|
|
60
|
+
const DAY = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
61
|
+
/** Lone surrogate halves: what no text holds, and what a database may refuse. */
|
|
62
|
+
const LONE_SURROGATE = /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g;
|
|
63
|
+
/** A text as it is kept: well formed, NFC, without control characters (a long answer keeps its line breaks), trimmed. */
|
|
64
|
+
export function cleanText(text, keepLineBreaks = false) {
|
|
65
|
+
let out = text.replace(LONE_SURROGATE, '').normalize('NFC');
|
|
66
|
+
if (keepLineBreaks)
|
|
67
|
+
out = out.replace(/\r\n?/g, '\n');
|
|
68
|
+
out = out.replace(/\p{Cc}/gu, (character) => (keepLineBreaks && character === '\n' ? character : ''));
|
|
69
|
+
return out.trim();
|
|
70
|
+
}
|
|
71
|
+
/** How many characters a text is, counted as a database counts them. */
|
|
72
|
+
const lengthOf = (text) => [...text].length;
|
|
73
|
+
/** Whether a value is one no answer was given in: nothing, a text with nothing to keep in it, no picks. */
|
|
74
|
+
const empty = (value) => value === undefined || value === null || (typeof value === 'string' && cleanText(value) === '') || (Array.isArray(value) && value.length === 0);
|
|
75
|
+
/** Whether a "show if" holds for an answer given. */
|
|
76
|
+
function holds(showIf, value) {
|
|
77
|
+
if (value === undefined)
|
|
78
|
+
return false;
|
|
79
|
+
if (showIf.includes !== undefined)
|
|
80
|
+
return Array.isArray(value) && value.includes(showIf.includes);
|
|
81
|
+
if (showIf.is !== undefined)
|
|
82
|
+
return value === showIf.is;
|
|
83
|
+
if (typeof value !== 'number')
|
|
84
|
+
return false;
|
|
85
|
+
if (showIf.atLeast !== undefined)
|
|
86
|
+
return value >= showIf.atLeast;
|
|
87
|
+
if (showIf.atMost !== undefined)
|
|
88
|
+
return value <= showIf.atMost;
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Whether a question is shown, given the answers so far and which earlier
|
|
93
|
+
* questions are: one whose "show if" names a question not shown is not shown
|
|
94
|
+
* either, so no chain ever runs through a hidden question.
|
|
95
|
+
*/
|
|
96
|
+
function shown(question, values, visible) {
|
|
97
|
+
if (question.kind === 'hidden')
|
|
98
|
+
return false;
|
|
99
|
+
const showIf = question.showIf;
|
|
100
|
+
if (showIf === undefined)
|
|
101
|
+
return true;
|
|
102
|
+
return visible.has(showIf.question) && holds(showIf, values[showIf.question]);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* The questions a visitor is shown, in order, given the answers so far. A
|
|
106
|
+
* hidden field is never among them.
|
|
107
|
+
*/
|
|
108
|
+
export function visibleQuestions(form, values) {
|
|
109
|
+
const visible = new Set();
|
|
110
|
+
const out = [];
|
|
111
|
+
for (const question of form.definition.questions) {
|
|
112
|
+
if (!shown(question, values, visible))
|
|
113
|
+
continue;
|
|
114
|
+
visible.add(question.id);
|
|
115
|
+
out.push(question);
|
|
116
|
+
}
|
|
117
|
+
return out;
|
|
118
|
+
}
|
|
119
|
+
/** A number as an answer gives one: a finite number, or a short decimal written as text. */
|
|
120
|
+
function numberOf(value) {
|
|
121
|
+
if (typeof value === 'number')
|
|
122
|
+
return Number.isFinite(value) && Math.abs(value) <= NUMBER_MAGNITUDE ? value : null;
|
|
123
|
+
if (typeof value !== 'string')
|
|
124
|
+
return null;
|
|
125
|
+
const text = value.trim();
|
|
126
|
+
if (text.length > NUMBER_TEXT_MAX || !NUMBER_TEXT.test(text))
|
|
127
|
+
return null;
|
|
128
|
+
const n = Number(text);
|
|
129
|
+
return Math.abs(n) <= NUMBER_MAGNITUDE ? n : null;
|
|
130
|
+
}
|
|
131
|
+
/** Whether a text is a real calendar day, `yyyy-mm-dd`. */
|
|
132
|
+
function isDay(text) {
|
|
133
|
+
const match = DAY.exec(text);
|
|
134
|
+
if (match === null)
|
|
135
|
+
return false;
|
|
136
|
+
const [year, month, day] = [Number(match[1]), Number(match[2]), Number(match[3])];
|
|
137
|
+
const date = new Date(Date.UTC(year, month - 1, day));
|
|
138
|
+
return date.getUTCFullYear() === year && date.getUTCMonth() === month - 1 && date.getUTCDate() === day;
|
|
139
|
+
}
|
|
140
|
+
/** The day after a `yyyy-mm-dd`. */
|
|
141
|
+
function nextDay(day) {
|
|
142
|
+
const [year, month, date] = day.split('-').map(Number);
|
|
143
|
+
return new Date(Date.UTC(year, month - 1, date + 1)).toISOString().slice(0, 10);
|
|
144
|
+
}
|
|
145
|
+
/** Whether a text is an e-mail address this vocabulary takes. */
|
|
146
|
+
export function isEmailAddress(text) {
|
|
147
|
+
return text.length <= EMAIL_MAX && EMAIL.test(text);
|
|
148
|
+
}
|
|
149
|
+
/** Whether a text is a phone number this vocabulary takes. */
|
|
150
|
+
export function isPhoneNumber(text) {
|
|
151
|
+
const digits = text.replace(/\D/g, '').length;
|
|
152
|
+
return PHONE.test(text) && digits >= PHONE_DIGITS.min && digits <= PHONE_DIGITS.max;
|
|
153
|
+
}
|
|
154
|
+
/** One answer to one shown question, judged by its kind. `raw` is not empty. */
|
|
155
|
+
function judge(question, raw, today) {
|
|
156
|
+
switch (question.kind) {
|
|
157
|
+
case 'short':
|
|
158
|
+
case 'long': {
|
|
159
|
+
if (typeof raw !== 'string')
|
|
160
|
+
return { code: 'text' };
|
|
161
|
+
const text = cleanText(raw, question.kind === 'long');
|
|
162
|
+
if (text === '')
|
|
163
|
+
return { code: 'text' };
|
|
164
|
+
if (lengthOf(text) > question.maxLength)
|
|
165
|
+
return { code: 'too-long' };
|
|
166
|
+
if (question.kind === 'short' && question.check === 'email' && !isEmailAddress(text))
|
|
167
|
+
return { code: 'email' };
|
|
168
|
+
if (question.kind === 'short' && question.check === 'phone' && !isPhoneNumber(text))
|
|
169
|
+
return { code: 'phone' };
|
|
170
|
+
return { value: text };
|
|
171
|
+
}
|
|
172
|
+
case 'one':
|
|
173
|
+
return typeof raw === 'string' && question.choices.some((choice) => choice.id === raw) ? { value: raw } : { code: 'choice' };
|
|
174
|
+
case 'several': {
|
|
175
|
+
if (!Array.isArray(raw) || !raw.every((pick) => typeof pick === 'string' && question.choices.some((choice) => choice.id === pick)))
|
|
176
|
+
return { code: 'choice' };
|
|
177
|
+
const picks = raw;
|
|
178
|
+
if (new Set(picks).size !== picks.length)
|
|
179
|
+
return { code: 'choice' };
|
|
180
|
+
if (question.min !== undefined && picks.length < question.min)
|
|
181
|
+
return { code: 'too-few' };
|
|
182
|
+
if (question.max !== undefined && picks.length > question.max)
|
|
183
|
+
return { code: 'too-many' };
|
|
184
|
+
return { value: [...picks] };
|
|
185
|
+
}
|
|
186
|
+
case 'date': {
|
|
187
|
+
if (typeof raw !== 'string' || !isDay(raw))
|
|
188
|
+
return { code: 'date' };
|
|
189
|
+
const earliest = question.from === 'today' ? today : question.from === 'tomorrow' ? nextDay(today) : null;
|
|
190
|
+
return earliest !== null && raw < earliest ? { code: 'too-early' } : { value: raw };
|
|
191
|
+
}
|
|
192
|
+
case 'number': {
|
|
193
|
+
const n = numberOf(raw);
|
|
194
|
+
if (n === null)
|
|
195
|
+
return { code: 'number' };
|
|
196
|
+
if (question.whole === true && !Number.isInteger(n))
|
|
197
|
+
return { code: 'whole' };
|
|
198
|
+
if (question.min !== undefined && n < question.min)
|
|
199
|
+
return { code: 'too-small' };
|
|
200
|
+
if (question.max !== undefined && n > question.max)
|
|
201
|
+
return { code: 'too-large' };
|
|
202
|
+
return { value: n };
|
|
203
|
+
}
|
|
204
|
+
case 'score':
|
|
205
|
+
case 'stars': {
|
|
206
|
+
const n = numberOf(raw);
|
|
207
|
+
const scale = SCALE_OF[question.kind];
|
|
208
|
+
return n !== null && Number.isInteger(n) && n >= scale.min && n <= scale.max ? { value: n } : { code: question.kind };
|
|
209
|
+
}
|
|
210
|
+
case 'file': {
|
|
211
|
+
const ids = typeof raw === 'string' ? [raw] : raw;
|
|
212
|
+
if (!Array.isArray(ids) || ids.length > (question.many === true ? FORM_FILES_MAX : 1))
|
|
213
|
+
return { code: 'file' };
|
|
214
|
+
if (!ids.every((id) => typeof id === 'string' && UPLOAD_ID.test(id)) || new Set(ids).size !== ids.length)
|
|
215
|
+
return { code: 'file' };
|
|
216
|
+
return { value: [...ids] };
|
|
217
|
+
}
|
|
218
|
+
case 'tick':
|
|
219
|
+
return raw === true ? { value: true } : { code: 'tick' };
|
|
220
|
+
case 'hidden':
|
|
221
|
+
// Never reached: a hidden field is filled from the query, never from the answer.
|
|
222
|
+
return { code: 'from-query' };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* An answer to a form, checked: the values kept, the person's e-mail address
|
|
227
|
+
* and name when the form keeps them — or every refusal, one per question.
|
|
228
|
+
*
|
|
229
|
+
* `today` is the business's own date (`yyyy-mm-dd` in its time zone), which a
|
|
230
|
+
* date question's earliest day counts from. `query` is the page address's
|
|
231
|
+
* query, the one place a hidden field is filled from.
|
|
232
|
+
*/
|
|
233
|
+
export function checkAnswer(form, raw, context) {
|
|
234
|
+
const errors = {};
|
|
235
|
+
const { definition } = form;
|
|
236
|
+
if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
|
|
237
|
+
return { ok: false, errors: { [WHOLE_ANSWER]: 'shape' } };
|
|
238
|
+
if (!definition.languages.includes(context.language))
|
|
239
|
+
errors[WHOLE_ANSWER] = 'language';
|
|
240
|
+
const given = raw;
|
|
241
|
+
const byId = new Map(definition.questions.map((question) => [question.id, question]));
|
|
242
|
+
for (const key of Object.keys(given)) {
|
|
243
|
+
const question = byId.get(key);
|
|
244
|
+
if (question === undefined)
|
|
245
|
+
errors[/^q[a-z0-9]{1,15}$/.test(key) ? key : WHOLE_ANSWER] = 'unknown-question';
|
|
246
|
+
else if (question.kind === 'hidden' && !empty(given[key]))
|
|
247
|
+
errors[key] = 'from-query';
|
|
248
|
+
}
|
|
249
|
+
const values = {};
|
|
250
|
+
const visible = new Set();
|
|
251
|
+
for (const question of definition.questions) {
|
|
252
|
+
if (question.kind === 'hidden') {
|
|
253
|
+
const found = context.query?.[question.param];
|
|
254
|
+
const first = typeof found === 'string' ? found : Array.isArray(found) ? found[0] : undefined;
|
|
255
|
+
const text = first === undefined ? '' : [...cleanText(first)].slice(0, HIDDEN_VALUE_MAX).join('').trim();
|
|
256
|
+
if (text !== '')
|
|
257
|
+
values[question.id] = text;
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
const value = given[question.id];
|
|
261
|
+
// A question shown by an answer that was itself refused is not judged: whether it is asked waits for that answer.
|
|
262
|
+
if (question.showIf !== undefined && question.showIf.question in errors)
|
|
263
|
+
continue;
|
|
264
|
+
if (!shown(question, values, visible)) {
|
|
265
|
+
if (!empty(value))
|
|
266
|
+
errors[question.id] = 'not-shown';
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
visible.add(question.id);
|
|
270
|
+
if (empty(value)) {
|
|
271
|
+
if (question.required)
|
|
272
|
+
errors[question.id] = 'required';
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
const judged = judge(question, value, context.today);
|
|
276
|
+
if ('code' in judged)
|
|
277
|
+
errors[question.id] ??= judged.code;
|
|
278
|
+
else
|
|
279
|
+
values[question.id] = judged.value;
|
|
280
|
+
}
|
|
281
|
+
if (Object.keys(errors).length > 0)
|
|
282
|
+
return { ok: false, errors };
|
|
283
|
+
// The person: kept only where the form keeps who answered.
|
|
284
|
+
const keeps = keepsNames(form.settings);
|
|
285
|
+
const firstOf = (test) => {
|
|
286
|
+
const question = definition.questions.find((candidate) => test(candidate) && typeof values[candidate.id] === 'string');
|
|
287
|
+
return question === undefined ? null : values[question.id];
|
|
288
|
+
};
|
|
289
|
+
const email = keeps ? firstOf((question) => question.kind === 'short' && question.check === 'email') : null;
|
|
290
|
+
const name = keeps ? firstOf((question) => question.kind === 'short' && question.role === 'name') : null;
|
|
291
|
+
return {
|
|
292
|
+
ok: true,
|
|
293
|
+
values,
|
|
294
|
+
email: email === null ? null : email.toLowerCase(),
|
|
295
|
+
name: name === null ? null : [...name].slice(0, ANSWER_NAME_MAX).join(''),
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/forms/check.ts"],"names":[],"mappings":"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"}
|