@fieldia/core 0.9.2 → 0.10.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/package.json +1 -1
- package/schema/page.schema.json +1128 -89
- package/src/lib/expression/evaluator.d.mts +6 -5
- package/src/lib/expression/evaluator.d.ts +6 -5
- package/src/lib/expression/evaluator.js +37 -22
- package/src/lib/expression/evaluator.js.map +1 -1
- package/src/lib/expression/evaluator.mjs +32 -18
- package/src/lib/expression/evaluator.mjs.map +1 -1
- package/src/lib/expression/expression.d.mts +21 -0
- package/src/lib/expression/expression.d.ts +21 -0
- package/src/lib/expression/expression.js +29 -0
- package/src/lib/expression/expression.js.map +1 -0
- package/src/lib/expression/expression.mjs +26 -0
- package/src/lib/expression/expression.mjs.map +1 -0
- package/src/lib/expression/extractFieldNames.js +6 -1
- package/src/lib/expression/extractFieldNames.js.map +1 -1
- package/src/lib/expression/extractFieldNames.mjs +6 -1
- package/src/lib/expression/extractFieldNames.mjs.map +1 -1
- package/src/lib/expression/functions.d.mts +35 -0
- package/src/lib/expression/functions.d.ts +35 -0
- package/src/lib/expression/functions.js +129 -0
- package/src/lib/expression/functions.js.map +1 -0
- package/src/lib/expression/functions.mjs +124 -0
- package/src/lib/expression/functions.mjs.map +1 -0
- package/src/lib/expression/modifier.d.mts +3 -1
- package/src/lib/expression/modifier.d.ts +3 -1
- package/src/lib/expression/modifier.js +4 -27
- package/src/lib/expression/modifier.js.map +1 -1
- package/src/lib/expression/modifier.mjs +3 -26
- package/src/lib/expression/modifier.mjs.map +1 -1
- package/src/lib/expression/operations.d.mts +25 -0
- package/src/lib/expression/operations.d.ts +25 -0
- package/src/lib/expression/operations.js +81 -0
- package/src/lib/expression/operations.js.map +1 -0
- package/src/lib/expression/operations.mjs +72 -0
- package/src/lib/expression/operations.mjs.map +1 -0
- package/src/lib/expression/order.d.mts +11 -0
- package/src/lib/expression/order.d.ts +11 -0
- package/src/lib/expression/order.js +36 -0
- package/src/lib/expression/order.js.map +1 -0
- package/src/lib/expression/order.mjs +33 -0
- package/src/lib/expression/order.mjs.map +1 -0
- package/src/lib/expression/parser.d.mts +34 -4
- package/src/lib/expression/parser.d.ts +34 -4
- package/src/lib/expression/parser.js +72 -6
- package/src/lib/expression/parser.js.map +1 -1
- package/src/lib/expression/parser.mjs +72 -6
- package/src/lib/expression/parser.mjs.map +1 -1
- package/src/lib/expression/reads.d.mts +8 -0
- package/src/lib/expression/reads.d.ts +8 -0
- package/src/lib/expression/reads.js +48 -0
- package/src/lib/expression/reads.js.map +1 -0
- package/src/lib/expression/reads.mjs +44 -0
- package/src/lib/expression/reads.mjs.map +1 -0
- package/src/lib/expression/tokenizer.d.mts +7 -6
- package/src/lib/expression/tokenizer.d.ts +7 -6
- package/src/lib/expression/tokenizer.js +28 -18
- package/src/lib/expression/tokenizer.js.map +1 -1
- package/src/lib/expression/tokenizer.mjs +28 -18
- package/src/lib/expression/tokenizer.mjs.map +1 -1
- package/src/lib/format/field.d.mts +686 -5
- package/src/lib/format/field.d.ts +686 -5
- package/src/lib/format/field.js +115 -13
- package/src/lib/format/field.js.map +1 -1
- package/src/lib/format/field.mjs +114 -12
- package/src/lib/format/field.mjs.map +1 -1
- package/src/lib/format/layout.d.mts +388 -10
- package/src/lib/format/layout.d.ts +388 -10
- package/src/lib/format/layout.js +50 -3
- package/src/lib/format/layout.js.map +1 -1
- package/src/lib/format/layout.mjs +49 -2
- package/src/lib/format/layout.mjs.map +1 -1
- package/src/lib/format/names.d.mts +1 -1
- package/src/lib/format/names.d.ts +1 -1
- package/src/lib/format/names.js +1 -0
- package/src/lib/format/names.js.map +1 -1
- package/src/lib/format/names.mjs +1 -0
- package/src/lib/format/names.mjs.map +1 -1
- package/src/lib/format/page.d.mts +391 -4
- package/src/lib/format/page.d.ts +391 -4
- package/src/lib/format/page.js +13 -0
- package/src/lib/format/page.js.map +1 -1
- package/src/lib/format/page.mjs +13 -0
- package/src/lib/format/page.mjs.map +1 -1
- package/src/lib/format/references.d.mts +14 -1
- package/src/lib/format/references.d.ts +14 -1
- package/src/lib/format/references.js +96 -8
- package/src/lib/format/references.js.map +1 -1
- package/src/lib/format/references.mjs +96 -8
- package/src/lib/format/references.mjs.map +1 -1
- package/src/lib/format/translate.d.mts +20 -0
- package/src/lib/format/translate.d.ts +20 -0
- package/src/lib/format/translate.js +79 -21
- package/src/lib/format/translate.js.map +1 -1
- package/src/lib/format/translate.mjs +76 -21
- package/src/lib/format/translate.mjs.map +1 -1
- package/src/lib/record/check.d.mts +19 -1
- package/src/lib/record/check.d.ts +19 -1
- package/src/lib/record/check.js +84 -21
- package/src/lib/record/check.js.map +1 -1
- package/src/lib/record/check.mjs +82 -21
- package/src/lib/record/check.mjs.map +1 -1
- package/src/lib/record/compute.d.mts +24 -0
- package/src/lib/record/compute.d.ts +24 -0
- package/src/lib/record/compute.js +107 -0
- package/src/lib/record/compute.js.map +1 -0
- package/src/lib/record/compute.mjs +103 -0
- package/src/lib/record/compute.mjs.map +1 -0
- package/src/lib/record/data-source.d.mts +9 -1
- package/src/lib/record/data-source.d.ts +9 -1
- package/src/lib/record/data-source.js.map +1 -1
- package/src/lib/record/data-source.mjs.map +1 -1
- package/src/lib/record/env.d.mts +9 -0
- package/src/lib/record/env.d.ts +9 -0
- package/src/lib/record/env.js +28 -0
- package/src/lib/record/env.js.map +1 -0
- package/src/lib/record/env.mjs +25 -0
- package/src/lib/record/env.mjs.map +1 -0
- package/src/lib/record/form.d.mts +24 -0
- package/src/lib/record/form.d.ts +24 -0
- package/src/lib/record/form.js +160 -32
- package/src/lib/record/form.js.map +1 -1
- package/src/lib/record/form.mjs +160 -32
- package/src/lib/record/form.mjs.map +1 -1
- package/src/lib/record/inputs.d.mts +5 -0
- package/src/lib/record/inputs.d.ts +5 -0
- package/src/lib/record/inputs.js +47 -0
- package/src/lib/record/inputs.js.map +1 -0
- package/src/lib/record/inputs.mjs +44 -0
- package/src/lib/record/inputs.mjs.map +1 -0
- package/src/lib/record/limits.d.mts +13 -0
- package/src/lib/record/limits.d.ts +13 -0
- package/src/lib/record/limits.js +45 -0
- package/src/lib/record/limits.js.map +1 -0
- package/src/lib/record/limits.mjs +41 -0
- package/src/lib/record/limits.mjs.map +1 -0
- package/src/lib/record/locales/all.d.mts +7 -0
- package/src/lib/record/locales/all.d.ts +7 -0
- package/src/lib/record/locales/all.js +13 -0
- package/src/lib/record/locales/all.js.map +1 -0
- package/src/lib/record/locales/all.mjs +10 -0
- package/src/lib/record/locales/all.mjs.map +1 -0
- package/src/lib/record/locales/ar.d.mts +3 -0
- package/src/lib/record/locales/ar.d.ts +3 -0
- package/src/lib/record/locales/ar.js +55 -0
- package/src/lib/record/locales/ar.js.map +1 -0
- package/src/lib/record/locales/ar.mjs +52 -0
- package/src/lib/record/locales/ar.mjs.map +1 -0
- package/src/lib/record/locales/de.d.mts +3 -0
- package/src/lib/record/locales/de.d.ts +3 -0
- package/src/lib/record/locales/de.js +55 -0
- package/src/lib/record/locales/de.js.map +1 -0
- package/src/lib/record/locales/de.mjs +52 -0
- package/src/lib/record/locales/de.mjs.map +1 -0
- package/src/lib/record/locales/fr.d.mts +3 -0
- package/src/lib/record/locales/fr.d.ts +3 -0
- package/src/lib/record/locales/fr.js +55 -0
- package/src/lib/record/locales/fr.js.map +1 -0
- package/src/lib/record/locales/fr.mjs +52 -0
- package/src/lib/record/locales/fr.mjs.map +1 -0
- package/src/lib/record/memory-data-source.d.mts +3 -0
- package/src/lib/record/memory-data-source.d.ts +3 -0
- package/src/lib/record/memory-data-source.js +8 -0
- package/src/lib/record/memory-data-source.js.map +1 -1
- package/src/lib/record/memory-data-source.mjs +8 -0
- package/src/lib/record/memory-data-source.mjs.map +1 -1
- package/src/lib/record/messages.d.mts +46 -0
- package/src/lib/record/messages.d.ts +46 -0
- package/src/lib/record/messages.js +58 -101
- package/src/lib/record/messages.js.map +1 -1
- package/src/lib/record/messages.mjs +58 -101
- package/src/lib/record/messages.mjs.map +1 -1
- package/src/lib/record/rules.d.mts +33 -0
- package/src/lib/record/rules.d.ts +33 -0
- package/src/lib/record/rules.js +83 -0
- package/src/lib/record/rules.js.map +1 -0
- package/src/lib/record/rules.mjs +79 -0
- package/src/lib/record/rules.mjs.map +1 -0
- package/src/lib/record/score.d.mts +16 -0
- package/src/lib/record/score.d.ts +16 -0
- package/src/lib/record/score.js +35 -0
- package/src/lib/record/score.js.map +1 -0
- package/src/lib/record/score.mjs +32 -0
- package/src/lib/record/score.mjs.map +1 -0
- package/src/lib/record/set-when.d.mts +24 -0
- package/src/lib/record/set-when.d.ts +24 -0
- package/src/lib/record/set-when.js +68 -0
- package/src/lib/record/set-when.js.map +1 -0
- package/src/lib/record/set-when.mjs +65 -0
- package/src/lib/record/set-when.mjs.map +1 -0
- package/src/lib/record/structures.d.mts +14 -0
- package/src/lib/record/structures.d.ts +14 -0
- package/src/lib/record/structures.js +32 -0
- package/src/lib/record/structures.js.map +1 -0
- package/src/lib/record/structures.mjs +28 -0
- package/src/lib/record/structures.mjs.map +1 -0
- package/src/lib/record/values.d.mts +10 -5
- package/src/lib/record/values.d.ts +10 -5
- package/src/lib/record/values.js +20 -6
- package/src/lib/record/values.js.map +1 -1
- package/src/lib/record/values.mjs +19 -6
- package/src/lib/record/values.mjs.map +1 -1
- package/src/runtime.d.mts +10 -7
- package/src/runtime.d.ts +10 -7
- package/src/runtime.js +12 -1
- package/src/runtime.js.map +1 -1
- package/src/runtime.mjs +5 -2
- package/src/runtime.mjs.map +1 -1
|
@@ -1,14 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.translatePage = translatePage;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
exports.pageWords = pageWords;
|
|
5
|
+
exports.localizePage = localizePage;
|
|
6
|
+
exports.isRightToLeft = isRightToLeft;
|
|
7
|
+
/**
|
|
8
|
+
* Keys whose text a person reads: titles, labels, help, prompts and messages.
|
|
9
|
+
* Any key ending in `Label` is read too — a wizard's `nextLabel`, and in a
|
|
10
|
+
* widget's settings the words at a scale's ends.
|
|
11
|
+
*/
|
|
12
|
+
const TEXT_KEYS = new Set(['title', 'description', 'label', 'help', 'placeholder', 'message', 'text', 'confirm', 'alt', 'caption']);
|
|
6
13
|
/**
|
|
7
14
|
* Parts that hold names or data, never words to translate: which line fields
|
|
8
|
-
* mark sections and notes, a link's filter, a default value,
|
|
9
|
-
* and
|
|
15
|
+
* mark sections and notes, a link's filter, a default value, what the page's
|
|
16
|
+
* data is, and the page's translations themselves.
|
|
10
17
|
*/
|
|
11
|
-
const NOT_TEXT = new Set(['lineKinds', 'filter', 'default', 'data']);
|
|
18
|
+
const NOT_TEXT = new Set(['lineKinds', 'filter', 'default', 'data', 'translations']);
|
|
19
|
+
/**
|
|
20
|
+
* Every word a person reads in `value` passed through `text`, the rest copied
|
|
21
|
+
* as it is. `enter` sees each object before its parts. In a widget's settings
|
|
22
|
+
* (`widget`) only the keys ending in `Label` are words.
|
|
23
|
+
*/
|
|
24
|
+
function walk(value, key, text, enter, widget = false) {
|
|
25
|
+
if (typeof value === 'string')
|
|
26
|
+
return key !== null && (key.endsWith('Label') || (!widget && TEXT_KEYS.has(key))) ? text(value) : value;
|
|
27
|
+
if (Array.isArray(value))
|
|
28
|
+
return value.map((item) => walk(item, null, text, enter, widget));
|
|
29
|
+
if (value === null || typeof value !== 'object')
|
|
30
|
+
return value;
|
|
31
|
+
enter?.(value);
|
|
32
|
+
const out = {};
|
|
33
|
+
for (const [name, inner] of Object.entries(value)) {
|
|
34
|
+
// A field node's `options` are its widget's settings, not a list of choices.
|
|
35
|
+
out[name] = NOT_TEXT.has(name) ? inner : walk(inner, name, text, enter, widget || (name === 'options' && !Array.isArray(inner)));
|
|
36
|
+
}
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
12
39
|
/**
|
|
13
40
|
* The page with every word a person reads passed through the app's own
|
|
14
41
|
* translator, for apps that keep their translations by text or by key. Ids,
|
|
@@ -16,21 +43,52 @@ const NOT_TEXT = new Set(['lineKinds', 'filter', 'default', 'data']);
|
|
|
16
43
|
* given is left alone.
|
|
17
44
|
*/
|
|
18
45
|
function translatePage(page, translate) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
46
|
+
return walk(page, null, translate);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Every word of the page a person reads, once each, in the order they read
|
|
50
|
+
* it: the title and description, then each part of the layout — a field where
|
|
51
|
+
* it stands, with its label, the words in its box, its help, its choices and
|
|
52
|
+
* its messages — a wizard's buttons under its pages, and last the words of
|
|
53
|
+
* fields no part shows. The same words `translatePage` translates: the list a
|
|
54
|
+
* translator works through.
|
|
55
|
+
*/
|
|
56
|
+
function pageWords(page) {
|
|
57
|
+
const words = new Set();
|
|
58
|
+
const fields = page.fields;
|
|
59
|
+
const visit = (value, key = null) => walk(value, key, (text) => (text.trim() && words.add(text), text), (node) => {
|
|
60
|
+
// A wizard's pages before its buttons.
|
|
61
|
+
if (node['type'] === 'wizard')
|
|
62
|
+
visit(node['children']);
|
|
63
|
+
const def = node['type'] === 'field' ? fields[node['field']] : undefined;
|
|
64
|
+
if (!def)
|
|
65
|
+
return;
|
|
66
|
+
for (const [part, name] of [[node, 'label'], [def, 'label'], [node, 'placeholder'], [node, 'help'], [def, 'help']])
|
|
67
|
+
visit(part[name], name);
|
|
68
|
+
visit(def);
|
|
69
|
+
});
|
|
70
|
+
visit({ title: page.title, description: page.description, layout: page.layout });
|
|
71
|
+
visit(page);
|
|
72
|
+
return [...words];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The page in one of the languages it keeps in `translations`: every word a
|
|
76
|
+
* person reads that has a translation there, translated; the rest as written.
|
|
77
|
+
* A language the page does not keep gives the page as it is.
|
|
78
|
+
*/
|
|
79
|
+
function localizePage(page, locale) {
|
|
80
|
+
const words = page.translations?.[locale] ?? page.translations?.[locale.split('-')[0]];
|
|
81
|
+
if (!words)
|
|
82
|
+
return page;
|
|
83
|
+
return translatePage(page, (text) => words[text] ?? text);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Whether a language is written right to left, by its tag: the script it
|
|
87
|
+
* names (`az-Arab`), or else its language (`ar`, `he`, `fa-IR`).
|
|
88
|
+
*/
|
|
89
|
+
function isRightToLeft(tag) {
|
|
90
|
+
const [language, ...rest] = tag.toLowerCase().split('-');
|
|
91
|
+
const script = rest.find((part) => part.length === 4 && !/\d/.test(part));
|
|
92
|
+
return script ? /^(arab|hebr|syrc|thaa|nkoo|adlm|rohg)$/.test(script) : /^(ar|he|iw|fa|ur|ps|sd|yi|dv|ckb|ug|ks|syr|prs|pnb|azb)$/.test(language);
|
|
35
93
|
}
|
|
36
94
|
//# sourceMappingURL=translate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/translate.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/translate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,35 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Keys whose text a person reads: titles, labels, help, prompts and messages.
|
|
3
|
+
* Any key ending in `Label` is read too — a wizard's `nextLabel`, and in a
|
|
4
|
+
* widget's settings the words at a scale's ends.
|
|
5
|
+
*/
|
|
6
|
+
const TEXT_KEYS = new Set(['title', 'description', 'label', 'help', 'placeholder', 'message', 'text', 'confirm', 'alt', 'caption']);
|
|
3
7
|
/**
|
|
4
8
|
* Parts that hold names or data, never words to translate: which line fields
|
|
5
|
-
* mark sections and notes, a link's filter, a default value,
|
|
6
|
-
* and
|
|
9
|
+
* mark sections and notes, a link's filter, a default value, what the page's
|
|
10
|
+
* data is, and the page's translations themselves.
|
|
7
11
|
*/
|
|
8
|
-
const NOT_TEXT = new Set(['lineKinds', 'filter', 'default', 'data']);
|
|
12
|
+
const NOT_TEXT = new Set(['lineKinds', 'filter', 'default', 'data', 'translations']);
|
|
13
|
+
/**
|
|
14
|
+
* Every word a person reads in `value` passed through `text`, the rest copied
|
|
15
|
+
* as it is. `enter` sees each object before its parts. In a widget's settings
|
|
16
|
+
* (`widget`) only the keys ending in `Label` are words.
|
|
17
|
+
*/
|
|
18
|
+
function walk(value, key, text, enter, widget = false) {
|
|
19
|
+
if (typeof value === 'string')
|
|
20
|
+
return key !== null && (key.endsWith('Label') || (!widget && TEXT_KEYS.has(key))) ? text(value) : value;
|
|
21
|
+
if (Array.isArray(value))
|
|
22
|
+
return value.map((item) => walk(item, null, text, enter, widget));
|
|
23
|
+
if (value === null || typeof value !== 'object')
|
|
24
|
+
return value;
|
|
25
|
+
enter?.(value);
|
|
26
|
+
const out = {};
|
|
27
|
+
for (const [name, inner] of Object.entries(value)) {
|
|
28
|
+
// A field node's `options` are its widget's settings, not a list of choices.
|
|
29
|
+
out[name] = NOT_TEXT.has(name) ? inner : walk(inner, name, text, enter, widget || (name === 'options' && !Array.isArray(inner)));
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
9
33
|
/**
|
|
10
34
|
* The page with every word a person reads passed through the app's own
|
|
11
35
|
* translator, for apps that keep their translations by text or by key. Ids,
|
|
@@ -13,21 +37,52 @@ const NOT_TEXT = new Set(['lineKinds', 'filter', 'default', 'data']);
|
|
|
13
37
|
* given is left alone.
|
|
14
38
|
*/
|
|
15
39
|
export function translatePage(page, translate) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
40
|
+
return walk(page, null, translate);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Every word of the page a person reads, once each, in the order they read
|
|
44
|
+
* it: the title and description, then each part of the layout — a field where
|
|
45
|
+
* it stands, with its label, the words in its box, its help, its choices and
|
|
46
|
+
* its messages — a wizard's buttons under its pages, and last the words of
|
|
47
|
+
* fields no part shows. The same words `translatePage` translates: the list a
|
|
48
|
+
* translator works through.
|
|
49
|
+
*/
|
|
50
|
+
export function pageWords(page) {
|
|
51
|
+
const words = new Set();
|
|
52
|
+
const fields = page.fields;
|
|
53
|
+
const visit = (value, key = null) => walk(value, key, (text) => (text.trim() && words.add(text), text), (node) => {
|
|
54
|
+
// A wizard's pages before its buttons.
|
|
55
|
+
if (node['type'] === 'wizard')
|
|
56
|
+
visit(node['children']);
|
|
57
|
+
const def = node['type'] === 'field' ? fields[node['field']] : undefined;
|
|
58
|
+
if (!def)
|
|
59
|
+
return;
|
|
60
|
+
for (const [part, name] of [[node, 'label'], [def, 'label'], [node, 'placeholder'], [node, 'help'], [def, 'help']])
|
|
61
|
+
visit(part[name], name);
|
|
62
|
+
visit(def);
|
|
63
|
+
});
|
|
64
|
+
visit({ title: page.title, description: page.description, layout: page.layout });
|
|
65
|
+
visit(page);
|
|
66
|
+
return [...words];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The page in one of the languages it keeps in `translations`: every word a
|
|
70
|
+
* person reads that has a translation there, translated; the rest as written.
|
|
71
|
+
* A language the page does not keep gives the page as it is.
|
|
72
|
+
*/
|
|
73
|
+
export function localizePage(page, locale) {
|
|
74
|
+
const words = page.translations?.[locale] ?? page.translations?.[locale.split('-')[0]];
|
|
75
|
+
if (!words)
|
|
76
|
+
return page;
|
|
77
|
+
return translatePage(page, (text) => words[text] ?? text);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Whether a language is written right to left, by its tag: the script it
|
|
81
|
+
* names (`az-Arab`), or else its language (`ar`, `he`, `fa-IR`).
|
|
82
|
+
*/
|
|
83
|
+
export function isRightToLeft(tag) {
|
|
84
|
+
const [language, ...rest] = tag.toLowerCase().split('-');
|
|
85
|
+
const script = rest.find((part) => part.length === 4 && !/\d/.test(part));
|
|
86
|
+
return script ? /^(arab|hebr|syrc|thaa|nkoo|adlm|rohg)$/.test(script) : /^(ar|he|iw|fa|ur|ps|sd|yi|dv|ckb|ug|ks|syr|prs|pnb|azb)$/.test(language);
|
|
32
87
|
}
|
|
33
88
|
//# sourceMappingURL=translate.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/translate.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"translate.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/translate.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,24 @@ import { type Value } from './values.mjs';
|
|
|
9
9
|
* An empty optional value passes everything: a pattern or a minimum applies
|
|
10
10
|
* to what someone typed, not to a field they left alone.
|
|
11
11
|
*/
|
|
12
|
-
export declare function checkValue(field: Field | LineField, value: Value | undefined, required: boolean, messages?: Messages
|
|
12
|
+
export declare function checkValue(field: Field | LineField, value: Value | undefined, required: boolean, messages?: Messages,
|
|
13
|
+
/** The day it is, for a date's limits counted from today. The computer's own when left out. */
|
|
14
|
+
today?: string): string | undefined;
|
|
15
|
+
type FileField = Extract<Field | LineField, {
|
|
16
|
+
type: 'binary' | 'image';
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* What is wrong with one file for a file or image field — too large, or not a
|
|
20
|
+
* kind it takes — said with the limit and named by the file's own name; undefined
|
|
21
|
+
* when nothing is. A widget asks before it adds a file, as the check does after.
|
|
22
|
+
*/
|
|
23
|
+
export declare function fileProblem(field: FileField, file: {
|
|
24
|
+
name: string;
|
|
25
|
+
type: string;
|
|
26
|
+
size: number;
|
|
27
|
+
}, messages?: Messages, label?: string): string | undefined;
|
|
28
|
+
/** The kinds a file field takes, as people say them, each once: "PDF or image", "DOC, DOCX or ODT". */
|
|
29
|
+
export declare function describeTypes(patterns: readonly string[], or: string): string;
|
|
13
30
|
/** 1048576 -> "1 MB". */
|
|
14
31
|
export declare function formatBytes(bytes: number): string;
|
|
32
|
+
export {};
|
|
@@ -9,6 +9,24 @@ import { type Value } from './values';
|
|
|
9
9
|
* An empty optional value passes everything: a pattern or a minimum applies
|
|
10
10
|
* to what someone typed, not to a field they left alone.
|
|
11
11
|
*/
|
|
12
|
-
export declare function checkValue(field: Field | LineField, value: Value | undefined, required: boolean, messages?: Messages
|
|
12
|
+
export declare function checkValue(field: Field | LineField, value: Value | undefined, required: boolean, messages?: Messages,
|
|
13
|
+
/** The day it is, for a date's limits counted from today. The computer's own when left out. */
|
|
14
|
+
today?: string): string | undefined;
|
|
15
|
+
type FileField = Extract<Field | LineField, {
|
|
16
|
+
type: 'binary' | 'image';
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* What is wrong with one file for a file or image field — too large, or not a
|
|
20
|
+
* kind it takes — said with the limit and named by the file's own name; undefined
|
|
21
|
+
* when nothing is. A widget asks before it adds a file, as the check does after.
|
|
22
|
+
*/
|
|
23
|
+
export declare function fileProblem(field: FileField, file: {
|
|
24
|
+
name: string;
|
|
25
|
+
type: string;
|
|
26
|
+
size: number;
|
|
27
|
+
}, messages?: Messages, label?: string): string | undefined;
|
|
28
|
+
/** The kinds a file field takes, as people say them, each once: "PDF or image", "DOC, DOCX or ODT". */
|
|
29
|
+
export declare function describeTypes(patterns: readonly string[], or: string): string;
|
|
13
30
|
/** 1048576 -> "1 MB". */
|
|
14
31
|
export declare function formatBytes(bytes: number): string;
|
|
32
|
+
export {};
|
package/src/lib/record/check.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.checkValue = checkValue;
|
|
4
|
+
exports.fileProblem = fileProblem;
|
|
5
|
+
exports.describeTypes = describeTypes;
|
|
4
6
|
exports.formatBytes = formatBytes;
|
|
7
|
+
const limits_1 = require("./limits");
|
|
5
8
|
const messages_1 = require("./messages");
|
|
6
9
|
const values_1 = require("./values");
|
|
7
10
|
/**
|
|
@@ -12,11 +15,15 @@ const values_1 = require("./values");
|
|
|
12
15
|
* An empty optional value passes everything: a pattern or a minimum applies
|
|
13
16
|
* to what someone typed, not to a field they left alone.
|
|
14
17
|
*/
|
|
15
|
-
function checkValue(field, value, required, messages = messages_1.MESSAGES.en
|
|
18
|
+
function checkValue(field, value, required, messages = messages_1.MESSAGES.en,
|
|
19
|
+
/** The day it is, for a date's limits counted from today. The computer's own when left out. */
|
|
20
|
+
today) {
|
|
16
21
|
const label = field.label || 'This field';
|
|
17
22
|
const say = (key, values = {}) => (0, messages_1.fill)(messages[key], { label, ...values });
|
|
18
23
|
if ((0, values_1.isEmpty)(field, value))
|
|
19
24
|
return required ? say('required') : undefined;
|
|
25
|
+
if (field.type === 'matrix')
|
|
26
|
+
return checkMatrix(field, value, required, say);
|
|
20
27
|
switch (field.type) {
|
|
21
28
|
case 'char':
|
|
22
29
|
case 'text':
|
|
@@ -50,18 +57,25 @@ function checkValue(field, value, required, messages = messages_1.MESSAGES.en) {
|
|
|
50
57
|
case 'boolean':
|
|
51
58
|
return typeof value === 'boolean' ? undefined : say('boolean');
|
|
52
59
|
case 'date':
|
|
53
|
-
return checkDate(value, say);
|
|
60
|
+
return checkDate(value, say) ?? (0, limits_1.checkDay)(field, value, today, messages);
|
|
54
61
|
case 'datetime':
|
|
55
|
-
return checkDateTime(value, say);
|
|
62
|
+
return checkDateTime(value, say) ?? (0, limits_1.checkDay)(field, value, today, messages);
|
|
56
63
|
case 'selection': {
|
|
64
|
+
// The app's list, not loaded: nothing to say a choice is not one of it.
|
|
65
|
+
if (field.optionsFrom)
|
|
66
|
+
return undefined;
|
|
57
67
|
const allowed = new Set(field.options.map((o) => o.value));
|
|
58
|
-
const listing = say('choice', { options: field.options.map((o) => o.label).join(', ') });
|
|
68
|
+
const listing = say(field.other ? 'choiceOrOther' : 'choice', { options: field.options.map((o) => o.label).join(', ') });
|
|
69
|
+
// An answer of one's own, where there is an "Other": words, never blank.
|
|
70
|
+
const own = (v) => (field.other === true || field.ownAnswers === true) && typeof v === 'string' && v.trim() !== '' && !allowed.has(v);
|
|
59
71
|
if (field.multiple) {
|
|
60
72
|
if (!Array.isArray(value))
|
|
61
73
|
return say('choices');
|
|
62
|
-
|
|
74
|
+
const owned = value.filter((v) => !allowed.has(v)).length;
|
|
75
|
+
// Answers of one's own: one "Other", or as many as people add.
|
|
76
|
+
return (owned <= 1 || field.ownAnswers) && value.every((v) => allowed.has(v) || own(v)) ? undefined : listing;
|
|
63
77
|
}
|
|
64
|
-
return allowed.has(value) ? undefined : listing;
|
|
78
|
+
return allowed.has(value) || own(value) ? undefined : listing;
|
|
65
79
|
}
|
|
66
80
|
case 'many2one':
|
|
67
81
|
return isRecord(value) ? undefined : say('record');
|
|
@@ -79,11 +93,35 @@ function checkValue(field, value, required, messages = messages_1.MESSAGES.en) {
|
|
|
79
93
|
}
|
|
80
94
|
case 'binary':
|
|
81
95
|
case 'image':
|
|
82
|
-
return
|
|
96
|
+
return checkFiles(field, value, say, messages);
|
|
83
97
|
default:
|
|
84
98
|
return undefined;
|
|
85
99
|
}
|
|
86
100
|
}
|
|
101
|
+
/** A matrix: an answer per row, each from the columns; every row answered when required. */
|
|
102
|
+
function checkMatrix(field, value, required, say) {
|
|
103
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
104
|
+
return say('matrix');
|
|
105
|
+
const rows = new Set(field.rows.map((r) => String(r.value)));
|
|
106
|
+
const columns = new Set(field.columns.map((c) => c.value));
|
|
107
|
+
const listing = say('choice', { options: field.columns.map((c) => c.label).join(', ') });
|
|
108
|
+
for (const [row, answer] of Object.entries(value)) {
|
|
109
|
+
if (!rows.has(row))
|
|
110
|
+
return say('matrixRow', { rows: field.rows.map((r) => r.label).join(', ') });
|
|
111
|
+
const picked = field.multiple && Array.isArray(answer) ? answer : [answer];
|
|
112
|
+
if (!field.multiple && Array.isArray(answer))
|
|
113
|
+
return listing;
|
|
114
|
+
if (picked.some((a) => a !== null && a !== undefined && !columns.has(a)))
|
|
115
|
+
return listing;
|
|
116
|
+
}
|
|
117
|
+
const answered = (row) => {
|
|
118
|
+
const a = value[row];
|
|
119
|
+
return a !== null && a !== undefined && !(Array.isArray(a) && !a.length);
|
|
120
|
+
};
|
|
121
|
+
if (required && field.rows.some((r) => !answered(String(r.value))))
|
|
122
|
+
return say('matrixRows');
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
87
125
|
function decimals(value) {
|
|
88
126
|
const text = String(value);
|
|
89
127
|
if (text.includes('e-'))
|
|
@@ -118,16 +156,35 @@ function realDay(year, month, day) {
|
|
|
118
156
|
const lengths = [31, year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
119
157
|
return day <= lengths[month - 1];
|
|
120
158
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if (
|
|
126
|
-
return say('
|
|
159
|
+
/** A file, or several: as few and as many as the field says, then each against the kinds it takes and its largest size — named by its own name when there are several. */
|
|
160
|
+
function checkFiles(field, value, say, messages) {
|
|
161
|
+
// A lone file where several are taken is a list of one, as a backend may send it.
|
|
162
|
+
const files = field.multiple ? (Array.isArray(value) ? value : [value]) : [value];
|
|
163
|
+
if (field.multiple && field.minFiles !== undefined && files.length < field.minFiles)
|
|
164
|
+
return say('minFiles', { min: field.minFiles });
|
|
165
|
+
if (field.multiple && field.maxFiles !== undefined && files.length > field.maxFiles)
|
|
166
|
+
return say('maxFiles', { max: field.maxFiles });
|
|
167
|
+
for (const file of files) {
|
|
168
|
+
if (!isFile(file))
|
|
169
|
+
return say('file');
|
|
170
|
+
const problem = fileProblem(field, file, messages, field.multiple ? file.name : field.label || 'This field');
|
|
171
|
+
if (problem)
|
|
172
|
+
return problem;
|
|
127
173
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* What is wrong with one file for a file or image field — too large, or not a
|
|
178
|
+
* kind it takes — said with the limit and named by the file's own name; undefined
|
|
179
|
+
* when nothing is. A widget asks before it adds a file, as the check does after.
|
|
180
|
+
*/
|
|
181
|
+
function fileProblem(field, file, messages = messages_1.MESSAGES.en, label = file.name) {
|
|
182
|
+
if (field.maxSize !== undefined && file.size > field.maxSize)
|
|
183
|
+
return (0, messages_1.fill)(messages.fileSize, { label, size: formatBytes(field.maxSize) });
|
|
184
|
+
const accept = field.type === 'image' ? ['image/*'] : field.accept;
|
|
185
|
+
if (accept && !accepts(accept, file.type)) {
|
|
186
|
+
const types = describeTypes(accept, messages.or);
|
|
187
|
+
return (0, messages_1.fill)(messages.fileType, { label, types, aTypes: article(types) });
|
|
131
188
|
}
|
|
132
189
|
return undefined;
|
|
133
190
|
}
|
|
@@ -135,15 +192,21 @@ function isFile(value) {
|
|
|
135
192
|
const file = value;
|
|
136
193
|
return value !== null && typeof value === 'object' && typeof file.name === 'string' && typeof file.size === 'number';
|
|
137
194
|
}
|
|
138
|
-
|
|
139
|
-
|
|
195
|
+
/** Whether a file of this media type is one of these kinds, such as "application/pdf" or "image/*". */
|
|
196
|
+
function accepts(patterns, type) {
|
|
197
|
+
return patterns.some((pattern) => (pattern.endsWith('/*') ? type.startsWith(pattern.slice(0, -1)) : pattern === type));
|
|
140
198
|
}
|
|
199
|
+
/** Office kinds by the extension people know them by, from a word in their media type. */
|
|
200
|
+
const EXTENSIONS = 'pdf PDF,msword DOC,wordprocessingml DOCX,opendocument.text ODT,plain TXT,ms-excel XLS,spreadsheetml XLSX,opendocument.spreadsheet ODS,csv CSV,ms-powerpoint PPT,presentationml PPTX,opendocument.presentation ODP'.split(',').map((pair) => pair.split(' '));
|
|
141
201
|
function describeType(pattern) {
|
|
142
202
|
if (pattern.endsWith('/*'))
|
|
143
203
|
return pattern.slice(0, -2);
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
204
|
+
const sub = pattern.split('/')[1] ?? pattern;
|
|
205
|
+
return EXTENSIONS.find(([word]) => sub.includes(word))?.[1] ?? sub.toUpperCase();
|
|
206
|
+
}
|
|
207
|
+
/** The kinds a file field takes, as people say them, each once: "PDF or image", "DOC, DOCX or ODT". */
|
|
208
|
+
function describeTypes(patterns, or) {
|
|
209
|
+
return listOr([...new Set(patterns.map(describeType))], or);
|
|
147
210
|
}
|
|
148
211
|
function listOr(items, or) {
|
|
149
212
|
if (items.length <= 1)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/check.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/check.ts"],"names":[],"mappings":"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"}
|