@fieldia/core 0.23.0 → 0.25.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.
- package/README.md +211 -3
- package/package.json +1 -1
- package/schema/page.schema.json +1051 -325
- package/src/index.d.mts +9 -2
- package/src/index.d.ts +9 -2
- package/src/index.js +31 -1
- package/src/index.js.map +1 -1
- package/src/index.mjs +12 -2
- package/src/index.mjs.map +1 -1
- package/src/lib/format/actions.d.mts +31 -1
- package/src/lib/format/actions.d.ts +31 -1
- package/src/lib/format/actions.js +1 -0
- package/src/lib/format/actions.js.map +1 -1
- package/src/lib/format/actions.mjs +1 -0
- package/src/lib/format/actions.mjs.map +1 -1
- package/src/lib/format/autofill-group.d.mts +12 -0
- package/src/lib/format/autofill-group.d.ts +12 -0
- package/src/lib/format/autofill-group.js +23 -0
- package/src/lib/format/autofill-group.js.map +1 -0
- package/src/lib/format/autofill-group.mjs +19 -0
- package/src/lib/format/autofill-group.mjs.map +1 -0
- package/src/lib/format/autofill.d.mts +14 -0
- package/src/lib/format/autofill.d.ts +14 -0
- package/src/lib/format/autofill.js +54 -0
- package/src/lib/format/autofill.js.map +1 -0
- package/src/lib/format/autofill.mjs +48 -0
- package/src/lib/format/autofill.mjs.map +1 -0
- package/src/lib/format/bulk-edit.d.mts +18 -0
- package/src/lib/format/bulk-edit.d.ts +18 -0
- package/src/lib/format/bulk-edit.js +26 -0
- package/src/lib/format/bulk-edit.js.map +1 -0
- package/src/lib/format/bulk-edit.mjs +21 -0
- package/src/lib/format/bulk-edit.mjs.map +1 -0
- package/src/lib/format/duplicate-kinds.d.mts +10 -0
- package/src/lib/format/duplicate-kinds.d.ts +10 -0
- package/src/lib/format/duplicate-kinds.js +14 -0
- package/src/lib/format/duplicate-kinds.js.map +1 -0
- package/src/lib/format/duplicate-kinds.mjs +10 -0
- package/src/lib/format/duplicate-kinds.mjs.map +1 -0
- package/src/lib/format/duplicates.d.mts +22 -0
- package/src/lib/format/duplicates.d.ts +22 -0
- package/src/lib/format/duplicates.js +24 -0
- package/src/lib/format/duplicates.js.map +1 -0
- package/src/lib/format/duplicates.mjs +21 -0
- package/src/lib/format/duplicates.mjs.map +1 -0
- package/src/lib/format/field.d.mts +291 -34
- package/src/lib/format/field.d.ts +291 -34
- package/src/lib/format/field.js +19 -4
- package/src/lib/format/field.js.map +1 -1
- package/src/lib/format/field.mjs +17 -2
- package/src/lib/format/field.mjs.map +1 -1
- package/src/lib/format/import-fields.d.mts +18 -0
- package/src/lib/format/import-fields.d.ts +18 -0
- package/src/lib/format/import-fields.js +26 -0
- package/src/lib/format/import-fields.js.map +1 -0
- package/src/lib/format/import-fields.mjs +21 -0
- package/src/lib/format/import-fields.mjs.map +1 -0
- package/src/lib/format/layout.d.mts +7357 -3127
- package/src/lib/format/layout.d.ts +7357 -3127
- package/src/lib/format/layout.js +108 -32
- package/src/lib/format/layout.js.map +1 -1
- package/src/lib/format/layout.mjs +107 -32
- package/src/lib/format/layout.mjs.map +1 -1
- package/src/lib/format/layout.types.d.mts +5 -2
- package/src/lib/format/layout.types.d.ts +5 -2
- package/src/lib/format/page.d.mts +1080 -106
- package/src/lib/format/page.d.ts +1080 -106
- package/src/lib/format/page.js +25 -0
- package/src/lib/format/page.js.map +1 -1
- package/src/lib/format/page.mjs +26 -1
- package/src/lib/format/page.mjs.map +1 -1
- package/src/lib/format/phone.d.mts +27 -0
- package/src/lib/format/phone.d.ts +27 -0
- package/src/lib/format/phone.js +43 -0
- package/src/lib/format/phone.js.map +1 -0
- package/src/lib/format/phone.mjs +39 -0
- package/src/lib/format/phone.mjs.map +1 -0
- package/src/lib/format/references.d.mts +39 -0
- package/src/lib/format/references.d.ts +39 -0
- package/src/lib/format/references.js +263 -20
- package/src/lib/format/references.js.map +1 -1
- package/src/lib/format/references.mjs +263 -20
- package/src/lib/format/references.mjs.map +1 -1
- package/src/lib/format/slots-options.d.mts +26 -0
- package/src/lib/format/slots-options.d.ts +26 -0
- package/src/lib/format/slots-options.js +35 -0
- package/src/lib/format/slots-options.js.map +1 -0
- package/src/lib/format/slots-options.mjs +31 -0
- package/src/lib/format/slots-options.mjs.map +1 -0
- package/src/lib/format/translate.js +8 -4
- package/src/lib/format/translate.js.map +1 -1
- package/src/lib/format/translate.mjs +8 -4
- package/src/lib/format/translate.mjs.map +1 -1
- package/src/lib/format/upgrade.d.mts +8 -3
- package/src/lib/format/upgrade.d.ts +8 -3
- package/src/lib/format/upgrade.js +8 -3
- package/src/lib/format/upgrade.js.map +1 -1
- package/src/lib/format/upgrade.mjs +8 -3
- package/src/lib/format/upgrade.mjs.map +1 -1
- package/src/lib/format/version.d.mts +2 -2
- package/src/lib/format/version.d.ts +2 -2
- package/src/lib/format/version.js +2 -2
- package/src/lib/format/version.js.map +1 -1
- package/src/lib/format/version.mjs +2 -2
- package/src/lib/format/version.mjs.map +1 -1
- package/src/lib/format/zoned.d.mts +8 -0
- package/src/lib/format/zoned.d.ts +8 -0
- package/src/lib/format/zoned.js +36 -0
- package/src/lib/format/zoned.js.map +1 -0
- package/src/lib/format/zoned.mjs +33 -0
- package/src/lib/format/zoned.mjs.map +1 -0
- package/src/lib/record/check.d.mts +6 -1
- package/src/lib/record/check.d.ts +6 -1
- package/src/lib/record/check.js +12 -4
- package/src/lib/record/check.js.map +1 -1
- package/src/lib/record/check.mjs +12 -4
- package/src/lib/record/check.mjs.map +1 -1
- package/src/lib/record/data-source.d.mts +309 -3
- package/src/lib/record/data-source.d.ts +309 -3
- package/src/lib/record/data-source.js +16 -0
- package/src/lib/record/data-source.js.map +1 -1
- package/src/lib/record/data-source.mjs +15 -0
- package/src/lib/record/data-source.mjs.map +1 -1
- package/src/lib/record/form.d.mts +116 -25
- package/src/lib/record/form.d.ts +116 -25
- package/src/lib/record/form.js +457 -78
- package/src/lib/record/form.js.map +1 -1
- package/src/lib/record/form.mjs +457 -78
- package/src/lib/record/form.mjs.map +1 -1
- package/src/lib/record/input-rules.d.mts +51 -9
- package/src/lib/record/input-rules.d.ts +51 -9
- package/src/lib/record/input-rules.js +119 -20
- package/src/lib/record/input-rules.js.map +1 -1
- package/src/lib/record/input-rules.mjs +118 -19
- package/src/lib/record/input-rules.mjs.map +1 -1
- package/src/lib/record/inputs.js +4 -2
- package/src/lib/record/inputs.js.map +1 -1
- package/src/lib/record/inputs.mjs +4 -2
- package/src/lib/record/inputs.mjs.map +1 -1
- package/src/lib/record/limits.d.mts +1 -1
- package/src/lib/record/limits.d.ts +1 -1
- package/src/lib/record/limits.js +4 -2
- package/src/lib/record/limits.js.map +1 -1
- package/src/lib/record/limits.mjs +4 -2
- package/src/lib/record/limits.mjs.map +1 -1
- package/src/lib/record/locales/ar.js +3 -2
- package/src/lib/record/locales/ar.js.map +1 -1
- package/src/lib/record/locales/ar.mjs +3 -2
- package/src/lib/record/locales/ar.mjs.map +1 -1
- package/src/lib/record/locales/de.js +3 -2
- package/src/lib/record/locales/de.js.map +1 -1
- package/src/lib/record/locales/de.mjs +3 -2
- package/src/lib/record/locales/de.mjs.map +1 -1
- package/src/lib/record/locales/fr.js +3 -2
- package/src/lib/record/locales/fr.js.map +1 -1
- package/src/lib/record/locales/fr.mjs +3 -2
- package/src/lib/record/locales/fr.mjs.map +1 -1
- package/src/lib/record/memory-data-source.d.mts +20 -2
- package/src/lib/record/memory-data-source.d.ts +20 -2
- package/src/lib/record/memory-data-source.js +153 -35
- package/src/lib/record/memory-data-source.js.map +1 -1
- package/src/lib/record/memory-data-source.mjs +154 -36
- package/src/lib/record/memory-data-source.mjs.map +1 -1
- package/src/lib/record/memory-duplicates.d.mts +19 -0
- package/src/lib/record/memory-duplicates.d.ts +19 -0
- package/src/lib/record/memory-duplicates.js +78 -0
- package/src/lib/record/memory-duplicates.js.map +1 -0
- package/src/lib/record/memory-duplicates.mjs +74 -0
- package/src/lib/record/memory-duplicates.mjs.map +1 -0
- package/src/lib/record/memory-schedules.d.mts +45 -0
- package/src/lib/record/memory-schedules.d.ts +45 -0
- package/src/lib/record/memory-schedules.js +81 -0
- package/src/lib/record/memory-schedules.js.map +1 -0
- package/src/lib/record/memory-schedules.mjs +78 -0
- package/src/lib/record/memory-schedules.mjs.map +1 -0
- package/src/lib/record/messages.d.mts +3 -1
- package/src/lib/record/messages.d.ts +3 -1
- package/src/lib/record/messages.js +3 -2
- package/src/lib/record/messages.js.map +1 -1
- package/src/lib/record/messages.mjs +3 -2
- package/src/lib/record/messages.mjs.map +1 -1
- package/src/lib/record/periods.d.mts +47 -0
- package/src/lib/record/periods.d.ts +47 -0
- package/src/lib/record/periods.js +86 -0
- package/src/lib/record/periods.js.map +1 -0
- package/src/lib/record/periods.mjs +79 -0
- package/src/lib/record/periods.mjs.map +1 -0
- package/src/lib/record/rules.js +5 -6
- package/src/lib/record/rules.js.map +1 -1
- package/src/lib/record/rules.mjs +5 -6
- package/src/lib/record/rules.mjs.map +1 -1
- package/src/lib/record/run.d.mts +75 -9
- package/src/lib/record/run.d.ts +75 -9
- package/src/lib/record/run.js +169 -26
- package/src/lib/record/run.js.map +1 -1
- package/src/lib/record/run.mjs +170 -27
- package/src/lib/record/run.mjs.map +1 -1
- package/src/lib/record/search.d.mts +13 -3
- package/src/lib/record/search.d.ts +13 -3
- package/src/lib/record/search.js +11 -4
- package/src/lib/record/search.js.map +1 -1
- package/src/lib/record/search.mjs +11 -4
- package/src/lib/record/search.mjs.map +1 -1
- package/src/lib/record/waits.d.mts +32 -0
- package/src/lib/record/waits.d.ts +32 -0
- package/src/lib/record/waits.js +89 -0
- package/src/lib/record/waits.js.map +1 -0
- package/src/lib/record/waits.mjs +85 -0
- package/src/lib/record/waits.mjs.map +1 -0
- package/src/lib/record/zones.d.mts +57 -0
- package/src/lib/record/zones.d.ts +57 -0
- package/src/lib/record/zones.js +147 -0
- package/src/lib/record/zones.js.map +1 -0
- package/src/lib/record/zones.mjs +132 -0
- package/src/lib/record/zones.mjs.map +1 -0
- package/src/runtime.d.mts +19 -9
- package/src/runtime.d.ts +19 -9
- package/src/runtime.js +37 -2
- package/src/runtime.js.map +1 -1
- package/src/runtime.mjs +9 -2
- package/src/runtime.mjs.map +1 -1
package/src/lib/format/page.js
CHANGED
|
@@ -6,6 +6,8 @@ const actions_1 = require("./actions");
|
|
|
6
6
|
const field_1 = require("./field");
|
|
7
7
|
const layout_1 = require("./layout");
|
|
8
8
|
const part_look_1 = require("./part-look");
|
|
9
|
+
const phone_1 = require("./phone");
|
|
10
|
+
const duplicates_1 = require("./duplicates");
|
|
9
11
|
const themes_1 = require("./themes");
|
|
10
12
|
var themes_2 = require("./themes");
|
|
11
13
|
Object.defineProperty(exports, "THEMES", { enumerable: true, get: function () { return themes_2.THEMES; } });
|
|
@@ -64,6 +66,29 @@ exports.PageSchema = z
|
|
|
64
66
|
language: z.string().regex(/^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$/).optional(),
|
|
65
67
|
translations: z.record(z.string().regex(/^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$/), z.record(z.string(), z.string())).optional(),
|
|
66
68
|
on: actions_1.PageEventsSchema.optional(),
|
|
69
|
+
botCheck: z
|
|
70
|
+
.strictObject({
|
|
71
|
+
honeypot: z.boolean().optional(),
|
|
72
|
+
minSeconds: z.number().min(0).max(3600).optional(),
|
|
73
|
+
captcha: z.string().min(1).optional(),
|
|
74
|
+
})
|
|
75
|
+
.meta({ id: 'BotCheck' })
|
|
76
|
+
.optional(),
|
|
77
|
+
phone: phone_1.PagePhoneSchema.optional(),
|
|
78
|
+
timeZone: field_1.TimeZoneSchema.optional(),
|
|
79
|
+
print: z
|
|
80
|
+
.strictObject({
|
|
81
|
+
header: z.string().min(1).max(500).optional(),
|
|
82
|
+
footer: z.string().min(1).max(1000).optional(),
|
|
83
|
+
// An address an image is drawn from: the web's, the app's own (a path), or the picture itself — never a script's.
|
|
84
|
+
logo: z
|
|
85
|
+
.string()
|
|
86
|
+
.regex(/^(https?:\/\/|data:image\/|\/|\.{0,2}\/?[^:\s]+$)/i, { error: 'a logo is an image’s address: https://…, a path, or data:image/…' })
|
|
87
|
+
.optional(),
|
|
88
|
+
})
|
|
89
|
+
.meta({ id: 'PagePrint' })
|
|
90
|
+
.optional(),
|
|
91
|
+
duplicates: duplicates_1.PageDuplicatesSchema.optional(),
|
|
67
92
|
})
|
|
68
93
|
.meta({
|
|
69
94
|
title: 'Fieldia page',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/page.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,uCAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/page.ts"],"names":[],"mappings":"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"}
|
package/src/lib/format/page.mjs
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
2
|
import { PageEventsSchema } from './actions.mjs';
|
|
3
|
-
import { FieldsSchema } from './field.mjs';
|
|
3
|
+
import { FieldsSchema, TimeZoneSchema } from './field.mjs';
|
|
4
4
|
import { HelpShownSchema, RootLayoutSchema } from './layout.mjs';
|
|
5
5
|
import { PART_LOOKS } from './part-look.mjs';
|
|
6
|
+
import { PagePhoneSchema } from './phone.mjs';
|
|
7
|
+
import { PageDuplicatesSchema } from './duplicates.mjs';
|
|
6
8
|
import { THEMES } from './themes.mjs';
|
|
7
9
|
export { THEMES } from './themes.mjs';
|
|
8
10
|
import { SKINS } from './themes.mjs';
|
|
@@ -59,6 +61,29 @@ export const PageSchema = z
|
|
|
59
61
|
language: z.string().regex(/^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$/).optional(),
|
|
60
62
|
translations: z.record(z.string().regex(/^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$/), z.record(z.string(), z.string())).optional(),
|
|
61
63
|
on: PageEventsSchema.optional(),
|
|
64
|
+
botCheck: z
|
|
65
|
+
.strictObject({
|
|
66
|
+
honeypot: z.boolean().optional(),
|
|
67
|
+
minSeconds: z.number().min(0).max(3600).optional(),
|
|
68
|
+
captcha: z.string().min(1).optional(),
|
|
69
|
+
})
|
|
70
|
+
.meta({ id: 'BotCheck' })
|
|
71
|
+
.optional(),
|
|
72
|
+
phone: PagePhoneSchema.optional(),
|
|
73
|
+
timeZone: TimeZoneSchema.optional(),
|
|
74
|
+
print: z
|
|
75
|
+
.strictObject({
|
|
76
|
+
header: z.string().min(1).max(500).optional(),
|
|
77
|
+
footer: z.string().min(1).max(1000).optional(),
|
|
78
|
+
// An address an image is drawn from: the web's, the app's own (a path), or the picture itself — never a script's.
|
|
79
|
+
logo: z
|
|
80
|
+
.string()
|
|
81
|
+
.regex(/^(https?:\/\/|data:image\/|\/|\.{0,2}\/?[^:\s]+$)/i, { error: 'a logo is an image’s address: https://…, a path, or data:image/…' })
|
|
82
|
+
.optional(),
|
|
83
|
+
})
|
|
84
|
+
.meta({ id: 'PagePrint' })
|
|
85
|
+
.optional(),
|
|
86
|
+
duplicates: PageDuplicatesSchema.optional(),
|
|
62
87
|
})
|
|
63
88
|
.meta({
|
|
64
89
|
title: 'Fieldia page',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAmB,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAe,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"page.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/page.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
/** A page's phone numbers: the country a number typed without its + is read in, and how a number is shown at rest. */
|
|
3
|
+
export declare const PagePhoneSchema: z.ZodObject<{
|
|
4
|
+
country: z.ZodOptional<z.ZodString>;
|
|
5
|
+
shown: z.ZodOptional<z.ZodEnum<{
|
|
6
|
+
international: "international";
|
|
7
|
+
national: "national";
|
|
8
|
+
}>>;
|
|
9
|
+
}, z.core.$strict>;
|
|
10
|
+
export type PagePhone = z.infer<typeof PagePhoneSchema>;
|
|
11
|
+
/** A phone field's own: the page's settings, for this field. Its other options stay as they are. */
|
|
12
|
+
export declare const PhoneOptionsSchema: z.ZodObject<{
|
|
13
|
+
country: z.ZodOptional<z.ZodString>;
|
|
14
|
+
shown: z.ZodOptional<z.ZodEnum<{
|
|
15
|
+
international: "international";
|
|
16
|
+
national: "national";
|
|
17
|
+
}>>;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
export type PhoneOptions = z.infer<typeof PhoneOptionsSchema>;
|
|
20
|
+
/** The issues of a phone field's settings, each at its path under `options`. */
|
|
21
|
+
export declare function phoneOptionIssues(node: {
|
|
22
|
+
widget?: string;
|
|
23
|
+
options?: Record<string, unknown>;
|
|
24
|
+
}): {
|
|
25
|
+
message: string;
|
|
26
|
+
path: (string | number)[];
|
|
27
|
+
}[];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
/** A page's phone numbers: the country a number typed without its + is read in, and how a number is shown at rest. */
|
|
3
|
+
export declare const PagePhoneSchema: z.ZodObject<{
|
|
4
|
+
country: z.ZodOptional<z.ZodString>;
|
|
5
|
+
shown: z.ZodOptional<z.ZodEnum<{
|
|
6
|
+
international: "international";
|
|
7
|
+
national: "national";
|
|
8
|
+
}>>;
|
|
9
|
+
}, z.z.core.$strict>;
|
|
10
|
+
export type PagePhone = z.infer<typeof PagePhoneSchema>;
|
|
11
|
+
/** A phone field's own: the page's settings, for this field. Its other options stay as they are. */
|
|
12
|
+
export declare const PhoneOptionsSchema: z.ZodObject<{
|
|
13
|
+
country: z.ZodOptional<z.ZodString>;
|
|
14
|
+
shown: z.ZodOptional<z.ZodEnum<{
|
|
15
|
+
international: "international";
|
|
16
|
+
national: "national";
|
|
17
|
+
}>>;
|
|
18
|
+
}, z.z.core.$strip>;
|
|
19
|
+
export type PhoneOptions = z.infer<typeof PhoneOptionsSchema>;
|
|
20
|
+
/** The issues of a phone field's settings, each at its path under `options`. */
|
|
21
|
+
export declare function phoneOptionIssues(node: {
|
|
22
|
+
widget?: string;
|
|
23
|
+
options?: Record<string, unknown>;
|
|
24
|
+
}): {
|
|
25
|
+
message: string;
|
|
26
|
+
path: (string | number)[];
|
|
27
|
+
}[];
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PhoneOptionsSchema = exports.PagePhoneSchema = void 0;
|
|
4
|
+
exports.phoneOptionIssues = phoneOptionIssues;
|
|
5
|
+
const z = require("zod");
|
|
6
|
+
/**
|
|
7
|
+
* Phone numbers read and kept as one number the world over (`"widget": "phone"` on a char field): typed at home
|
|
8
|
+
* ("010 1234 5678") or abroad ("+20 10 1234 5678"), checked against its country's lengths and starts, kept as E.164
|
|
9
|
+
* ("+201012345678"), and shown at rest as the page chooses, with a call and a WhatsApp link beside it.
|
|
10
|
+
*
|
|
11
|
+
* A page says so for all its phone fields (`phone`), or a field for itself (its node's `options`); a page that says
|
|
12
|
+
* neither keeps its phone fields as text boxes, as before. `country` is the one a number typed without its + is read
|
|
13
|
+
* in, by its ISO code — never assumed: left out, a number is written with its + and country code, or its country
|
|
14
|
+
* picked beside it. `shown` writes a number at rest abroad's way ("+20 10 1234 5678", the default) or at home's
|
|
15
|
+
* ("010 1234 5678") — a number of another country always abroad's.
|
|
16
|
+
*
|
|
17
|
+
* "phone": { "country": "EG", "shown": "national" }
|
|
18
|
+
* { "field": "mobile", "widget": "phone", "options": { "country": "AE" } }
|
|
19
|
+
*/
|
|
20
|
+
const COUNTRY = /^[A-Z]{2}$/;
|
|
21
|
+
const country = z.string().regex(COUNTRY, 'a country is its ISO code in capitals, such as "EG"');
|
|
22
|
+
const shown = z.enum(['international', 'national'], { error: 'shown is "international" (+20 10 1234 5678) or "national" (010 1234 5678)' });
|
|
23
|
+
/** A page's phone numbers: the country a number typed without its + is read in, and how a number is shown at rest. */
|
|
24
|
+
exports.PagePhoneSchema = z
|
|
25
|
+
.strictObject({
|
|
26
|
+
country: country.optional(),
|
|
27
|
+
shown: shown.optional(),
|
|
28
|
+
})
|
|
29
|
+
.meta({ id: 'PagePhone' });
|
|
30
|
+
/** A phone field's own: the page's settings, for this field. Its other options stay as they are. */
|
|
31
|
+
exports.PhoneOptionsSchema = z
|
|
32
|
+
.object({
|
|
33
|
+
country: country.optional(),
|
|
34
|
+
shown: shown.optional(),
|
|
35
|
+
})
|
|
36
|
+
.meta({ id: 'PhoneOptions' });
|
|
37
|
+
/** The issues of a phone field's settings, each at its path under `options`. */
|
|
38
|
+
function phoneOptionIssues(node) {
|
|
39
|
+
if (node.widget !== 'phone')
|
|
40
|
+
return [];
|
|
41
|
+
return (exports.PhoneOptionsSchema.safeParse(node.options ?? {}).error?.issues ?? []).map((issue) => ({ message: issue.message, path: ['options', ...issue.path] }));
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=phone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/phone.ts"],"names":[],"mappings":";;;AA0CA,8CAGC;AA7CD,yBAAyB;AAEzB;;;;;;;;;;;;;GAaG;AAEH,MAAM,OAAO,GAAG,YAAY,CAAC;AAC7B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,qDAAqD,CAAC,CAAC;AACjG,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,2EAA2E,EAAE,CAAC,CAAC;AAE5I,sHAAsH;AACzG,QAAA,eAAe,GAAG,CAAC;KAC7B,YAAY,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;CACxB,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;AAI7B,oGAAoG;AACvF,QAAA,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;CACxB,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;AAIhC,gFAAgF;AAChF,SAAgB,iBAAiB,CAAC,IAA4D;IAC5F,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,CAAC,0BAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,IAAI,CAAwB,EAAE,CAAC,CAAC,CAAC;AACtL,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Phone numbers read and kept as one number the world over (`"widget": "phone"` on a char field): typed at home
|
|
4
|
+
* ("010 1234 5678") or abroad ("+20 10 1234 5678"), checked against its country's lengths and starts, kept as E.164
|
|
5
|
+
* ("+201012345678"), and shown at rest as the page chooses, with a call and a WhatsApp link beside it.
|
|
6
|
+
*
|
|
7
|
+
* A page says so for all its phone fields (`phone`), or a field for itself (its node's `options`); a page that says
|
|
8
|
+
* neither keeps its phone fields as text boxes, as before. `country` is the one a number typed without its + is read
|
|
9
|
+
* in, by its ISO code — never assumed: left out, a number is written with its + and country code, or its country
|
|
10
|
+
* picked beside it. `shown` writes a number at rest abroad's way ("+20 10 1234 5678", the default) or at home's
|
|
11
|
+
* ("010 1234 5678") — a number of another country always abroad's.
|
|
12
|
+
*
|
|
13
|
+
* "phone": { "country": "EG", "shown": "national" }
|
|
14
|
+
* { "field": "mobile", "widget": "phone", "options": { "country": "AE" } }
|
|
15
|
+
*/
|
|
16
|
+
const COUNTRY = /^[A-Z]{2}$/;
|
|
17
|
+
const country = z.string().regex(COUNTRY, 'a country is its ISO code in capitals, such as "EG"');
|
|
18
|
+
const shown = z.enum(['international', 'national'], { error: 'shown is "international" (+20 10 1234 5678) or "national" (010 1234 5678)' });
|
|
19
|
+
/** A page's phone numbers: the country a number typed without its + is read in, and how a number is shown at rest. */
|
|
20
|
+
export const PagePhoneSchema = z
|
|
21
|
+
.strictObject({
|
|
22
|
+
country: country.optional(),
|
|
23
|
+
shown: shown.optional(),
|
|
24
|
+
})
|
|
25
|
+
.meta({ id: 'PagePhone' });
|
|
26
|
+
/** A phone field's own: the page's settings, for this field. Its other options stay as they are. */
|
|
27
|
+
export const PhoneOptionsSchema = z
|
|
28
|
+
.object({
|
|
29
|
+
country: country.optional(),
|
|
30
|
+
shown: shown.optional(),
|
|
31
|
+
})
|
|
32
|
+
.meta({ id: 'PhoneOptions' });
|
|
33
|
+
/** The issues of a phone field's settings, each at its path under `options`. */
|
|
34
|
+
export function phoneOptionIssues(node) {
|
|
35
|
+
if (node.widget !== 'phone')
|
|
36
|
+
return [];
|
|
37
|
+
return (PhoneOptionsSchema.safeParse(node.options ?? {}).error?.issues ?? []).map((issue) => ({ message: issue.message, path: ['options', ...issue.path] }));
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=phone.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/phone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB;;;;;;;;;;;;;GAaG;AAEH,MAAM,OAAO,GAAG,YAAY,CAAC;AAC7B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,qDAAqD,CAAC,CAAC;AACjG,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,2EAA2E,EAAE,CAAC,CAAC;AAE5I,sHAAsH;AACtH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,YAAY,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;CACxB,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;AAI7B,oGAAoG;AACpG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;CACxB,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;AAIhC,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,IAA4D;IAC5F,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,IAAI,CAAwB,EAAE,CAAC,CAAC,CAAC;AACtL,CAAC"}
|
|
@@ -34,8 +34,16 @@ export declare class ReferenceCheck {
|
|
|
34
34
|
/** The ids of the tabs and wizard steps a step can go to, and where each goTo and show names one. */
|
|
35
35
|
private readonly places;
|
|
36
36
|
private readonly goingTo;
|
|
37
|
+
/** The names of the slots the layout places. */
|
|
38
|
+
private readonly slots;
|
|
37
39
|
constructor(page: Page, line?: LineOf | undefined);
|
|
38
40
|
run(): PageIssue[];
|
|
41
|
+
/** A bot check: on a page of responses, its captcha drawn in a slot the page places. */
|
|
42
|
+
private checkBotCheck;
|
|
43
|
+
/** Possible duplicates: asked of a record's own page, by fields records can be compared by, each named once. */
|
|
44
|
+
private checkDuplicates;
|
|
45
|
+
/** A time zone the browser knows, by its IANA name: a page's dates and times are never drawn on a clock it cannot read. */
|
|
46
|
+
private checkZone;
|
|
39
47
|
/** Each step's goTo and show names a tab or a wizard step of this page. */
|
|
40
48
|
private checkGoingTo;
|
|
41
49
|
/** Where the page's own expressions read: its fields — on a line's form, the line's, with its record as parent. */
|
|
@@ -91,6 +99,19 @@ export declare class ReferenceCheck {
|
|
|
91
99
|
private walkFooter;
|
|
92
100
|
private walkRoot;
|
|
93
101
|
private walkList;
|
|
102
|
+
/**
|
|
103
|
+
* A list's cards, gallery, columns people choose and rows' own rules: a
|
|
104
|
+
* card's fields the page's, its picture one that can hold a picture; the
|
|
105
|
+
* optional columns among the columns; a row's tones, bold and buttons
|
|
106
|
+
* reading the list's record (its fields, `id`, `user`); and the list
|
|
107
|
+
* opening on one thing.
|
|
108
|
+
*/
|
|
109
|
+
private checkListRows;
|
|
110
|
+
/**
|
|
111
|
+
* What a list's card shows — a list page's, or a related list's of its own records' fields: its title, subtitle,
|
|
112
|
+
* status and lines each a field, its picture one that can hold a picture.
|
|
113
|
+
*/
|
|
114
|
+
private checkListCard;
|
|
94
115
|
/**
|
|
95
116
|
* A list's calendar: when each record starts (a date, or a date and time)
|
|
96
117
|
* and ends (the same kind), its words, its colour and its columns, each
|
|
@@ -105,6 +126,16 @@ export declare class ReferenceCheck {
|
|
|
105
126
|
* the rows chosen need a box to choose one.
|
|
106
127
|
*/
|
|
107
128
|
private checkListCells;
|
|
129
|
+
/**
|
|
130
|
+
* What a list shows of its records — a list page's, or a related list's of its own records' fields: its columns, its
|
|
131
|
+
* order and the fields its search looks in, each a field; each column's cells for a column of it, a sum, an average,
|
|
132
|
+
* the lowest and the highest of a number column (any column's count), a lead's icon by a field's values.
|
|
133
|
+
*/
|
|
134
|
+
private checkListed;
|
|
135
|
+
/** A list's Edit: each field it names one value can set in many records, and rows to choose to set it on. */
|
|
136
|
+
private checkBulkEdit;
|
|
137
|
+
/** A list's Import: each field it names one a file's cell can fill, and at least one such field on the page. */
|
|
138
|
+
private checkImport;
|
|
108
139
|
/** A list's map: where each record is, and the fields its pin and its card show, each of a type that can. */
|
|
109
140
|
private walkListMap;
|
|
110
141
|
/**
|
|
@@ -122,10 +153,18 @@ export declare class ReferenceCheck {
|
|
|
122
153
|
private walkNode;
|
|
123
154
|
/** A saved form placed here: never this page itself, and its answers under a name no field and no other copy has. */
|
|
124
155
|
private checkFormNode;
|
|
156
|
+
/**
|
|
157
|
+
* A related list: on a record's page, its columns, order, search, cells, card and rows' rules of its own records'
|
|
158
|
+
* fields, its link to this record a link of theirs to this model where its fields name it, and its filter's
|
|
159
|
+
* `valueFrom` this record's.
|
|
160
|
+
*/
|
|
161
|
+
private checkRelated;
|
|
125
162
|
private walkTabs;
|
|
126
163
|
private walkSheet;
|
|
127
164
|
/** An address with suggestions: a char field, its place kept as a place field keeps one, its parts in a json field. */
|
|
128
165
|
private checkAddressSearch;
|
|
166
|
+
/** Booking slots: on a date and time, its end written in another, asked again as the fields it depends on change. */
|
|
167
|
+
private checkSlots;
|
|
129
168
|
/** A picker's own settings, on the kind of field each is for: a path on a link, Fieldia's own list on a choice, a button adding tags, a colour for each state. */
|
|
130
169
|
private checkPicker;
|
|
131
170
|
private checkFieldNode;
|
|
@@ -34,8 +34,16 @@ export declare class ReferenceCheck {
|
|
|
34
34
|
/** The ids of the tabs and wizard steps a step can go to, and where each goTo and show names one. */
|
|
35
35
|
private readonly places;
|
|
36
36
|
private readonly goingTo;
|
|
37
|
+
/** The names of the slots the layout places. */
|
|
38
|
+
private readonly slots;
|
|
37
39
|
constructor(page: Page, line?: LineOf | undefined);
|
|
38
40
|
run(): PageIssue[];
|
|
41
|
+
/** A bot check: on a page of responses, its captcha drawn in a slot the page places. */
|
|
42
|
+
private checkBotCheck;
|
|
43
|
+
/** Possible duplicates: asked of a record's own page, by fields records can be compared by, each named once. */
|
|
44
|
+
private checkDuplicates;
|
|
45
|
+
/** A time zone the browser knows, by its IANA name: a page's dates and times are never drawn on a clock it cannot read. */
|
|
46
|
+
private checkZone;
|
|
39
47
|
/** Each step's goTo and show names a tab or a wizard step of this page. */
|
|
40
48
|
private checkGoingTo;
|
|
41
49
|
/** Where the page's own expressions read: its fields — on a line's form, the line's, with its record as parent. */
|
|
@@ -91,6 +99,19 @@ export declare class ReferenceCheck {
|
|
|
91
99
|
private walkFooter;
|
|
92
100
|
private walkRoot;
|
|
93
101
|
private walkList;
|
|
102
|
+
/**
|
|
103
|
+
* A list's cards, gallery, columns people choose and rows' own rules: a
|
|
104
|
+
* card's fields the page's, its picture one that can hold a picture; the
|
|
105
|
+
* optional columns among the columns; a row's tones, bold and buttons
|
|
106
|
+
* reading the list's record (its fields, `id`, `user`); and the list
|
|
107
|
+
* opening on one thing.
|
|
108
|
+
*/
|
|
109
|
+
private checkListRows;
|
|
110
|
+
/**
|
|
111
|
+
* What a list's card shows — a list page's, or a related list's of its own records' fields: its title, subtitle,
|
|
112
|
+
* status and lines each a field, its picture one that can hold a picture.
|
|
113
|
+
*/
|
|
114
|
+
private checkListCard;
|
|
94
115
|
/**
|
|
95
116
|
* A list's calendar: when each record starts (a date, or a date and time)
|
|
96
117
|
* and ends (the same kind), its words, its colour and its columns, each
|
|
@@ -105,6 +126,16 @@ export declare class ReferenceCheck {
|
|
|
105
126
|
* the rows chosen need a box to choose one.
|
|
106
127
|
*/
|
|
107
128
|
private checkListCells;
|
|
129
|
+
/**
|
|
130
|
+
* What a list shows of its records — a list page's, or a related list's of its own records' fields: its columns, its
|
|
131
|
+
* order and the fields its search looks in, each a field; each column's cells for a column of it, a sum, an average,
|
|
132
|
+
* the lowest and the highest of a number column (any column's count), a lead's icon by a field's values.
|
|
133
|
+
*/
|
|
134
|
+
private checkListed;
|
|
135
|
+
/** A list's Edit: each field it names one value can set in many records, and rows to choose to set it on. */
|
|
136
|
+
private checkBulkEdit;
|
|
137
|
+
/** A list's Import: each field it names one a file's cell can fill, and at least one such field on the page. */
|
|
138
|
+
private checkImport;
|
|
108
139
|
/** A list's map: where each record is, and the fields its pin and its card show, each of a type that can. */
|
|
109
140
|
private walkListMap;
|
|
110
141
|
/**
|
|
@@ -122,10 +153,18 @@ export declare class ReferenceCheck {
|
|
|
122
153
|
private walkNode;
|
|
123
154
|
/** A saved form placed here: never this page itself, and its answers under a name no field and no other copy has. */
|
|
124
155
|
private checkFormNode;
|
|
156
|
+
/**
|
|
157
|
+
* A related list: on a record's page, its columns, order, search, cells, card and rows' rules of its own records'
|
|
158
|
+
* fields, its link to this record a link of theirs to this model where its fields name it, and its filter's
|
|
159
|
+
* `valueFrom` this record's.
|
|
160
|
+
*/
|
|
161
|
+
private checkRelated;
|
|
125
162
|
private walkTabs;
|
|
126
163
|
private walkSheet;
|
|
127
164
|
/** An address with suggestions: a char field, its place kept as a place field keeps one, its parts in a json field. */
|
|
128
165
|
private checkAddressSearch;
|
|
166
|
+
/** Booking slots: on a date and time, its end written in another, asked again as the fields it depends on change. */
|
|
167
|
+
private checkSlots;
|
|
129
168
|
/** A picker's own settings, on the kind of field each is for: a path on a link, Fieldia's own list on a choice, a button adding tags, a colour for each state. */
|
|
130
169
|
private checkPicker;
|
|
131
170
|
private checkFieldNode;
|