@fieldia/core 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +199 -0
  2. package/package.json +1 -1
  3. package/schema/page.schema.json +829 -125
  4. package/src/index.d.mts +1 -0
  5. package/src/index.d.ts +1 -0
  6. package/src/index.js +4 -1
  7. package/src/index.js.map +1 -1
  8. package/src/index.mjs +1 -0
  9. package/src/index.mjs.map +1 -1
  10. package/src/lib/format/actions.d.mts +692 -0
  11. package/src/lib/format/actions.d.ts +692 -0
  12. package/src/lib/format/actions.js +53 -0
  13. package/src/lib/format/actions.js.map +1 -0
  14. package/src/lib/format/actions.mjs +50 -0
  15. package/src/lib/format/actions.mjs.map +1 -0
  16. package/src/lib/format/field.js +4 -2
  17. package/src/lib/format/field.js.map +1 -1
  18. package/src/lib/format/field.mjs +4 -2
  19. package/src/lib/format/field.mjs.map +1 -1
  20. package/src/lib/format/layout.d.mts +745 -15
  21. package/src/lib/format/layout.d.ts +745 -15
  22. package/src/lib/format/layout.js +18 -3
  23. package/src/lib/format/layout.js.map +1 -1
  24. package/src/lib/format/layout.mjs +17 -2
  25. package/src/lib/format/layout.mjs.map +1 -1
  26. package/src/lib/format/layout.types.d.mts +2 -1
  27. package/src/lib/format/layout.types.d.ts +2 -1
  28. package/src/lib/format/page.d.mts +616 -3
  29. package/src/lib/format/page.d.ts +616 -3
  30. package/src/lib/format/page.js +17 -2
  31. package/src/lib/format/page.js.map +1 -1
  32. package/src/lib/format/page.mjs +17 -2
  33. package/src/lib/format/page.mjs.map +1 -1
  34. package/src/lib/format/part-look.d.mts +36 -0
  35. package/src/lib/format/part-look.d.ts +36 -0
  36. package/src/lib/format/part-look.js +23 -0
  37. package/src/lib/format/part-look.js.map +1 -0
  38. package/src/lib/format/part-look.mjs +20 -0
  39. package/src/lib/format/part-look.mjs.map +1 -0
  40. package/src/lib/format/references.d.mts +19 -0
  41. package/src/lib/format/references.d.ts +19 -0
  42. package/src/lib/format/references.js +131 -2
  43. package/src/lib/format/references.js.map +1 -1
  44. package/src/lib/format/references.mjs +131 -2
  45. package/src/lib/format/references.mjs.map +1 -1
  46. package/src/lib/record/data-source.d.mts +5 -1
  47. package/src/lib/record/data-source.d.ts +5 -1
  48. package/src/lib/record/data-source.js.map +1 -1
  49. package/src/lib/record/data-source.mjs.map +1 -1
  50. package/src/lib/record/form.d.mts +86 -18
  51. package/src/lib/record/form.d.ts +86 -18
  52. package/src/lib/record/form.js +343 -46
  53. package/src/lib/record/form.js.map +1 -1
  54. package/src/lib/record/form.mjs +343 -46
  55. package/src/lib/record/form.mjs.map +1 -1
  56. package/src/lib/record/run.d.mts +169 -0
  57. package/src/lib/record/run.d.ts +169 -0
  58. package/src/lib/record/run.js +350 -0
  59. package/src/lib/record/run.js.map +1 -0
  60. package/src/lib/record/run.mjs +345 -0
  61. package/src/lib/record/run.mjs.map +1 -0
  62. package/src/runtime.d.mts +5 -2
  63. package/src/runtime.d.ts +5 -2
  64. package/src/runtime.js +3 -1
  65. package/src/runtime.js.map +1 -1
  66. package/src/runtime.mjs +1 -0
  67. package/src/runtime.mjs.map +1 -1
@@ -0,0 +1,345 @@
1
+ import { compileExpression } from '../expression/expression.mjs';
2
+ import { compileModifier } from '../expression/modifier.mjs';
3
+ import { FIELD_NAME } from '../format/names.mjs';
4
+ import { fitTo } from './compute.mjs';
5
+ import { emptyValue, structuredCopy } from './values.mjs';
6
+ export const DONE = Object.freeze({ done: true });
7
+ /** The kinds of field an expression gives a value to; the rest hold records, lines or files, and take a field named alone whole. */
8
+ const EXPRESSIBLE = new Set(['char', 'text', 'html', 'integer', 'float', 'monetary', 'boolean', 'date', 'datetime', 'selection', 'json']);
9
+ const wordsOf = (error) => (error instanceof Error ? error.message : String(error));
10
+ /** Steps run against one form. Expressions are read once and kept. */
11
+ export function createRunner(form) {
12
+ const expressions = new Map();
13
+ const conditions = new Map();
14
+ const expression = (source) => {
15
+ let found = expressions.get(source);
16
+ if (!found)
17
+ expressions.set(source, (found = compileExpression(source)));
18
+ return found;
19
+ };
20
+ function holds(when) {
21
+ if (typeof when === 'boolean')
22
+ return when;
23
+ let found = conditions.get(when);
24
+ if (!found)
25
+ conditions.set(when, (found = compileModifier(when)));
26
+ const { context, env } = form.reading();
27
+ return found.evaluate(context, env);
28
+ }
29
+ /** A field named alone, when its value is taken whole. */
30
+ const named = (source) => {
31
+ const name = source.trim();
32
+ return FIELD_NAME.test(name) ? name : null;
33
+ };
34
+ /** An expression over this form's values. A field named alone is taken whole when `whole` — a link with its name, the lines themselves. */
35
+ function read(source, whole) {
36
+ const name = named(source);
37
+ if (whole && name !== null && name in form.fields)
38
+ return structuredCopy(form.values()[name]);
39
+ const { context, env } = form.reading();
40
+ return expression(source).evaluate(context, env);
41
+ }
42
+ /** The name this form knows a record by, from a link to the same model it holds. */
43
+ function knownLabel(relation, id) {
44
+ const values = form.values();
45
+ for (const [name, def] of Object.entries(form.fields)) {
46
+ if ((def.type !== 'many2one' && def.type !== 'many2many') || def.relation !== relation)
47
+ continue;
48
+ const held = values[name];
49
+ const records = (Array.isArray(held) ? held : held ? [held] : []);
50
+ const found = records.find((record) => record && record.id === id);
51
+ if (found)
52
+ return found.label;
53
+ }
54
+ return undefined;
55
+ }
56
+ /** What a value from an expression, the app or another form becomes in a field: a link from an id or a record, anything else as `compute` fits it. */
57
+ function fit(def, raw, label = () => undefined) {
58
+ const link = (item) => {
59
+ if (item === null || item === undefined || item === false || item === '')
60
+ return null;
61
+ const relation = def.relation;
62
+ const labelOf = (id) => label(id) ?? knownLabel(relation, id) ?? String(id);
63
+ if (typeof item === 'number' || typeof item === 'string')
64
+ return { id: item, label: labelOf(item) };
65
+ if (typeof item === 'object' && !Array.isArray(item) && 'id' in item) {
66
+ const record = item;
67
+ return { id: record.id, label: typeof record.label === 'string' ? record.label : labelOf(record.id) };
68
+ }
69
+ return null;
70
+ };
71
+ if (def.type === 'many2one')
72
+ return link(raw);
73
+ if (def.type === 'many2many')
74
+ return (Array.isArray(raw) ? raw : [raw]).map(link).filter((record) => record !== null);
75
+ return fitTo(def, raw);
76
+ }
77
+ function fieldOf(name) {
78
+ const def = form.fields[name];
79
+ if (!def)
80
+ throw new Error(`The page has no field "${name}"`);
81
+ return def;
82
+ }
83
+ async function ask(message) {
84
+ if (form.host)
85
+ return form.host.ask(message);
86
+ if (form.confirm)
87
+ return form.confirm(message);
88
+ return true;
89
+ }
90
+ function cannot(message) {
91
+ return { reason: 'cannot', message };
92
+ }
93
+ /** Open a page through the host, take its answers back, and run its `then`. */
94
+ async function open(step, scope) {
95
+ const host = form.host;
96
+ if (!host)
97
+ return cannot(`Nothing can open "${step.page}" here: the form has no host`);
98
+ const record = step.record !== undefined ? read(step.record, false) : null;
99
+ const request = {
100
+ page: step.page,
101
+ ...(step.version !== undefined ? { version: step.version } : {}),
102
+ as: step.as ?? 'dialog',
103
+ ...(step.side && step.as === 'panel' ? { side: step.side } : {}),
104
+ ...(step.title !== undefined ? { title: step.title } : {}),
105
+ recordId: typeof record === 'number' || (typeof record === 'string' && record !== '') ? record : null,
106
+ ...(step.values ? { values: readMap(step.values) } : {}),
107
+ };
108
+ let result;
109
+ try {
110
+ result = await host.open(request);
111
+ }
112
+ catch (error) {
113
+ return { reason: 'cannot', message: wordsOf(error), error };
114
+ }
115
+ if (!result.saved)
116
+ return { reason: 'closed' };
117
+ if (step.into)
118
+ form.write(into(step.into, result));
119
+ if (!step.then)
120
+ return null;
121
+ const then = await runSteps(step.then, scope);
122
+ return then.done ? null : { reason: then.reason, message: then.message, step: then.step, error: then.error };
123
+ }
124
+ /** What a new page starts with: each an expression over this form's values, a field named alone taken whole. */
125
+ function readMap(map) {
126
+ const values = {};
127
+ for (const [name, source] of Object.entries(map))
128
+ values[name] = (read(source, true) ?? null);
129
+ return values;
130
+ }
131
+ /**
132
+ * This form's fields from an opened page's answers: each an expression over
133
+ * its values, where `id` is the record it saved. A link set to that record
134
+ * is labelled by the host's `label`, else its `display_name`, else its
135
+ * `name`, else its id.
136
+ */
137
+ function into(map, result) {
138
+ const answers = result.values ?? {};
139
+ const id = result.recordId ?? null;
140
+ const context = { ...asRead(answers), id };
141
+ const title = [result.label, answers['display_name'], answers['name']].find((text) => typeof text === 'string' && text !== '');
142
+ const label = (other) => (other === id ? title : undefined);
143
+ const values = {};
144
+ for (const [name, source] of Object.entries(map)) {
145
+ const def = fieldOf(name);
146
+ const alone = named(source);
147
+ const raw = alone === 'id' ? id : alone !== null && !EXPRESSIBLE.has(def.type) && alone in answers ? answers[alone] : expression(source).evaluate(context, { today: form.today });
148
+ values[name] = fit(def, raw, label);
149
+ }
150
+ return values;
151
+ }
152
+ async function call(step, scope) {
153
+ const request = {
154
+ id: scope.id,
155
+ action: step.action,
156
+ ...(step.params ? { params: structuredCopy(step.params) } : {}),
157
+ recordId: form.recordId(),
158
+ values: structuredCopy(form.values()),
159
+ ...(scope.recordIds ? { recordIds: [...scope.recordIds] } : {}),
160
+ };
161
+ if (!form.onAction)
162
+ return null;
163
+ let answer;
164
+ try {
165
+ answer = (await form.onAction(request)) ?? undefined;
166
+ }
167
+ catch (error) {
168
+ return { reason: 'app', message: wordsOf(error), error };
169
+ }
170
+ form.answered(request, answer);
171
+ if (!answer)
172
+ return null;
173
+ if (answer.values) {
174
+ const known = {};
175
+ for (const [name, value] of Object.entries(answer.values))
176
+ if (name in form.fields)
177
+ known[name] = fit(form.fields[name], value);
178
+ form.write(known);
179
+ }
180
+ if (answer.say !== undefined) {
181
+ const said = typeof answer.say === 'string' ? { message: answer.say } : answer.say;
182
+ form.host?.say(said.message, said.tone ?? 'info');
183
+ }
184
+ if (answer.open) {
185
+ const opened = await open(answer.open, scope);
186
+ if (opened)
187
+ return opened;
188
+ }
189
+ if (answer.stop) {
190
+ if (typeof answer.stop === 'string')
191
+ form.host?.say(answer.stop, 'warning');
192
+ return { reason: 'app', ...(typeof answer.stop === 'string' ? { message: answer.stop } : {}) };
193
+ }
194
+ return null;
195
+ }
196
+ async function runStep(step, scope) {
197
+ switch (step.do) {
198
+ case 'set': {
199
+ const def = fieldOf(step.field);
200
+ form.write({ [step.field]: fit(def, read(step.value, !EXPRESSIBLE.has(def.type))) });
201
+ return null;
202
+ }
203
+ case 'clear':
204
+ form.write({ [step.field]: emptyValue(fieldOf(step.field)) });
205
+ return null;
206
+ case 'addLine': {
207
+ const def = fieldOf(step.field);
208
+ if (def.type !== 'one2many')
209
+ return cannot(`"${step.field}" is a ${def.type}; a line is added to a one2many`);
210
+ const values = {};
211
+ for (const [name, source] of Object.entries(step.values ?? {})) {
212
+ const sub = def.fields[name];
213
+ if (!sub)
214
+ return cannot(`The lines of "${step.field}" have no field "${name}"`);
215
+ values[name] = fit(sub, read(source, !EXPRESSIBLE.has(sub.type)));
216
+ }
217
+ form.addLine(step.field, values);
218
+ return null;
219
+ }
220
+ case 'check':
221
+ return form.check(step.fields);
222
+ case 'save':
223
+ return form.save(scope.chain);
224
+ case 'reset':
225
+ form.reset();
226
+ return null;
227
+ case 'goTo': {
228
+ const stepped = form.goTo(step.target, scope.chain);
229
+ if (stepped !== undefined)
230
+ return stepped;
231
+ const show = form.host?.show;
232
+ if (!show)
233
+ return cannot(`Nothing can show "${step.target}" here: the form has no host that shows tabs`);
234
+ form.showing(scope.chain, () => show.call(form.host, step.target));
235
+ return null;
236
+ }
237
+ case 'say':
238
+ form.host?.say(step.message, step.tone ?? 'info');
239
+ return null;
240
+ case 'ask':
241
+ return (await ask(step.message)) ? null : { reason: 'no', message: step.message };
242
+ case 'call':
243
+ return call(step, scope);
244
+ case 'open':
245
+ return open(step, scope);
246
+ case 'close': {
247
+ const close = form.host?.close;
248
+ if (!close)
249
+ return cannot('Nothing can close this form: it has no host, or was not opened in a dialog or panel');
250
+ close.call(form.host);
251
+ return null;
252
+ }
253
+ }
254
+ }
255
+ async function runSteps(steps, scope) {
256
+ for (let at = 0; at < steps.length; at++) {
257
+ const step = steps[at];
258
+ let stopped;
259
+ try {
260
+ if (step.when !== undefined && !holds(step.when))
261
+ continue;
262
+ stopped = await runStep(step, scope);
263
+ }
264
+ catch (error) {
265
+ stopped = { reason: 'cannot', message: wordsOf(error), error };
266
+ }
267
+ if (stopped) {
268
+ return {
269
+ done: false,
270
+ stoppedAt: at,
271
+ step: stopped.step ?? step,
272
+ reason: stopped.reason,
273
+ ...(stopped.message !== undefined ? { message: stopped.message } : {}),
274
+ ...(stopped.error !== undefined ? { error: stopped.error } : {}),
275
+ };
276
+ }
277
+ }
278
+ return DONE;
279
+ }
280
+ return { runSteps, ask };
281
+ }
282
+ /** What an expression reads in another form's answers, its fields unknown: a link as its id, links as their ids, a reference as "model,id", lines by their keys, a file by its name. */
283
+ function asRead(values) {
284
+ const read = {};
285
+ const one = (value) => {
286
+ if (value === null || typeof value !== 'object')
287
+ return value;
288
+ const object = value;
289
+ if ('key' in object && 'values' in object)
290
+ return object['key'];
291
+ if ('model' in object && 'id' in object)
292
+ return `${object['model']},${object['id']}`;
293
+ if ('id' in object)
294
+ return object['id'];
295
+ if ('name' in object && 'type' in object && 'size' in object)
296
+ return object['name'];
297
+ return value;
298
+ };
299
+ for (const [name, value] of Object.entries(values))
300
+ read[name] = Array.isArray(value) ? value.map(one) : one(value);
301
+ return read;
302
+ }
303
+ /**
304
+ * One run of each moment at a time. A moment set off by a step of its own
305
+ * run — or a run it set off — does not run. Set off while a run of it is
306
+ * going: `again` moments (open, change, show) run once more after it, with
307
+ * the values as they are then, however many times they were set off
308
+ * meanwhile; the others (beforeSave, afterSave) do not run — a save made
309
+ * meanwhile goes ahead without them, so nothing waits on itself.
310
+ */
311
+ export function createMoments(run) {
312
+ const slots = new Map();
313
+ return function moment(key, steps, chain, again) {
314
+ if (!steps?.length || chain.includes(key))
315
+ return Promise.resolve(DONE);
316
+ /** A run of it, known as running before its first step does: a step that sets it off again finds it busy. */
317
+ const go = (slot) => {
318
+ let settle;
319
+ const running = new Promise((resolve) => (settle = resolve)).finally(() => {
320
+ if (slot.running === running && !slot.queued)
321
+ slots.delete(key);
322
+ });
323
+ slot.running = running;
324
+ settle(run(key, steps, [...chain, key]));
325
+ return running;
326
+ };
327
+ const busy = slots.get(key);
328
+ if (!busy) {
329
+ const slot = { running: Promise.resolve(DONE) };
330
+ slots.set(key, slot);
331
+ return go(slot);
332
+ }
333
+ if (!again)
334
+ return Promise.resolve(DONE);
335
+ if (!busy.queued) {
336
+ const next = () => {
337
+ busy.queued = undefined;
338
+ return go(busy);
339
+ };
340
+ busy.queued = busy.running.then(next, next);
341
+ }
342
+ return busy.queued;
343
+ };
344
+ }
345
+ //# sourceMappingURL=run.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/run.ts"],"names":[],"mappings":"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"}
package/src/runtime.d.mts CHANGED
@@ -6,10 +6,12 @@
6
6
  export type { JsonValue } from './lib/format/json.mjs';
7
7
  export { FIELD_NAME, FIELD_TYPES, type FieldType } from './lib/format/names.mjs';
8
8
  export type { Field, Fields, LineField, LineKinds, Option, OptionsFrom, PropertyDefinition, FilterCondition, FilterItem, SetWhen } from './lib/format/field.mjs';
9
- export type { Modifier, Tone, FieldNode, ButtonNode, TextNode, SlotNode, SectionNode, TabNode, TabsNode, StepNode, WizardNode, SectionsNode, SheetNode, SheetTitle, Statusbar, StatButton, Ribbon, Alert, Badge, ColumnCount, ColumnsByWidth, LayoutNode, RootLayout, ListNode, ListFilter, LabelPlace, AnswerRule, DividerNode, SpacerNode, ImageNode, } from './lib/format/layout.mjs';
9
+ export type { Modifier, Tone, FieldNode, ButtonNode, TextNode, SlotNode, SectionNode, TabNode, TabsNode, StepNode, WizardNode, SectionsNode, SheetNode, SheetTitle, Statusbar, StatButton, Ribbon, Alert, Badge, ColumnCount, ColumnsByWidth, LayoutNode, RootLayout, ListNode, ListFilter, LabelPlace, AnswerRule, DividerNode, SpacerNode, ImageNode, FormNode, } from './lib/format/layout.mjs';
10
10
  export { wideColumns } from './lib/format/columns.mjs';
11
+ export type { ActionStep, PageEvents, ValueMap, OpenStep, PanelSide, SetStep, ClearStep, AddLineStep, CheckStep, SaveStep, ResetStep, GoToStep, SayStep, AskStep, CallStep, CloseStep, } from './lib/format/actions.mjs';
11
12
  export { FORMAT_VERSION } from './lib/format/version.mjs';
12
13
  export type { Page, PageData, PageLook } from './lib/format/page.mjs';
14
+ export { PART_LOOKS, type PartLook, type PartLookKind, type PartsLook } from './lib/format/part-look.mjs';
13
15
  export { checkPage } from './lib/format/check-page.mjs';
14
16
  export type { PageIssue, PageValidation } from './lib/format/references.mjs';
15
17
  export { translatePage, localizePage, pageWords, isRightToLeft } from './lib/format/translate.mjs';
@@ -24,7 +26,8 @@ export { matchesFilter } from './lib/record/filter.mjs';
24
26
  export { suggestions, facetsToFilter, groupByFields, type Facet, type Suggestion } from './lib/record/search.mjs';
25
27
  export { createMemoryDataSource, type MemoryDataSource, type MemoryDataSourceOptions } from './lib/record/memory-data-source.mjs';
26
28
  export { hostScheduler, wait, type Scheduler } from './lib/record/scheduler.mjs';
27
- export { createForm, type Form, type FormOptions, type FormState, type FormStatus, type NodeState, type Choices, type DraftStore, type ActionRequest, } from './lib/record/form.mjs';
29
+ export { createForm, type Form, type FormOptions, type FormState, type FormStatus, type NodeState, type Choices, type DraftStore, type ActionRequest, type ChangeBy, type FormEvents, } from './lib/record/form.mjs';
30
+ export type { ActionHost, ActionResult, OnAction, OpenRequest, OpenResult, RunContext, RunResult, RunStop } from './lib/record/run.mjs';
28
31
  export { MESSAGES, fill, type Messages, type Locale } from './lib/record/messages.mjs';
29
32
  export { dayOf } from './lib/record/limits.mjs';
30
33
  export { ADDRESS_PARTS } from './lib/record/structures.mjs';
package/src/runtime.d.ts CHANGED
@@ -6,10 +6,12 @@
6
6
  export type { JsonValue } from './lib/format/json';
7
7
  export { FIELD_NAME, FIELD_TYPES, type FieldType } from './lib/format/names';
8
8
  export type { Field, Fields, LineField, LineKinds, Option, OptionsFrom, PropertyDefinition, FilterCondition, FilterItem, SetWhen } from './lib/format/field';
9
- export type { Modifier, Tone, FieldNode, ButtonNode, TextNode, SlotNode, SectionNode, TabNode, TabsNode, StepNode, WizardNode, SectionsNode, SheetNode, SheetTitle, Statusbar, StatButton, Ribbon, Alert, Badge, ColumnCount, ColumnsByWidth, LayoutNode, RootLayout, ListNode, ListFilter, LabelPlace, AnswerRule, DividerNode, SpacerNode, ImageNode, } from './lib/format/layout';
9
+ export type { Modifier, Tone, FieldNode, ButtonNode, TextNode, SlotNode, SectionNode, TabNode, TabsNode, StepNode, WizardNode, SectionsNode, SheetNode, SheetTitle, Statusbar, StatButton, Ribbon, Alert, Badge, ColumnCount, ColumnsByWidth, LayoutNode, RootLayout, ListNode, ListFilter, LabelPlace, AnswerRule, DividerNode, SpacerNode, ImageNode, FormNode, } from './lib/format/layout';
10
10
  export { wideColumns } from './lib/format/columns';
11
+ export type { ActionStep, PageEvents, ValueMap, OpenStep, PanelSide, SetStep, ClearStep, AddLineStep, CheckStep, SaveStep, ResetStep, GoToStep, SayStep, AskStep, CallStep, CloseStep, } from './lib/format/actions';
11
12
  export { FORMAT_VERSION } from './lib/format/version';
12
13
  export type { Page, PageData, PageLook } from './lib/format/page';
14
+ export { PART_LOOKS, type PartLook, type PartLookKind, type PartsLook } from './lib/format/part-look';
13
15
  export { checkPage } from './lib/format/check-page';
14
16
  export type { PageIssue, PageValidation } from './lib/format/references';
15
17
  export { translatePage, localizePage, pageWords, isRightToLeft } from './lib/format/translate';
@@ -24,7 +26,8 @@ export { matchesFilter } from './lib/record/filter';
24
26
  export { suggestions, facetsToFilter, groupByFields, type Facet, type Suggestion } from './lib/record/search';
25
27
  export { createMemoryDataSource, type MemoryDataSource, type MemoryDataSourceOptions } from './lib/record/memory-data-source';
26
28
  export { hostScheduler, wait, type Scheduler } from './lib/record/scheduler';
27
- export { createForm, type Form, type FormOptions, type FormState, type FormStatus, type NodeState, type Choices, type DraftStore, type ActionRequest, } from './lib/record/form';
29
+ export { createForm, type Form, type FormOptions, type FormState, type FormStatus, type NodeState, type Choices, type DraftStore, type ActionRequest, type ChangeBy, type FormEvents, } from './lib/record/form';
30
+ export type { ActionHost, ActionResult, OnAction, OpenRequest, OpenResult, RunContext, RunResult, RunStop } from './lib/record/run';
28
31
  export { MESSAGES, fill, type Messages, type Locale } from './lib/record/messages';
29
32
  export { dayOf } from './lib/record/limits';
30
33
  export { ADDRESS_PARTS } from './lib/record/structures';
package/src/runtime.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ADDRESS_PARTS = exports.dayOf = exports.fill = exports.MESSAGES = exports.createForm = exports.wait = exports.hostScheduler = exports.createMemoryDataSource = exports.groupByFields = exports.facetsToFilter = exports.suggestions = exports.matchesFilter = exports.saveProblemOf = exports.saveRefused = exports.scoreOf = exports.describeTypes = exports.fileProblem = exports.formatBytes = exports.checkValue = exports.lineKind = exports.expressionContext = exports.isEmpty = exports.initialValues = exports.emptyValue = exports.isModifierValid = exports.evaluateModifier = exports.compileModifier = exports.isRightToLeft = exports.pageWords = exports.localizePage = exports.translatePage = exports.checkPage = exports.FORMAT_VERSION = exports.wideColumns = exports.FIELD_TYPES = exports.FIELD_NAME = void 0;
3
+ exports.ADDRESS_PARTS = exports.dayOf = exports.fill = exports.MESSAGES = exports.createForm = exports.wait = exports.hostScheduler = exports.createMemoryDataSource = exports.groupByFields = exports.facetsToFilter = exports.suggestions = exports.matchesFilter = exports.saveProblemOf = exports.saveRefused = exports.scoreOf = exports.describeTypes = exports.fileProblem = exports.formatBytes = exports.checkValue = exports.lineKind = exports.expressionContext = exports.isEmpty = exports.initialValues = exports.emptyValue = exports.isModifierValid = exports.evaluateModifier = exports.compileModifier = exports.isRightToLeft = exports.pageWords = exports.localizePage = exports.translatePage = exports.checkPage = exports.PART_LOOKS = exports.FORMAT_VERSION = exports.wideColumns = exports.FIELD_TYPES = exports.FIELD_NAME = void 0;
4
4
  var names_1 = require("./lib/format/names");
5
5
  Object.defineProperty(exports, "FIELD_NAME", { enumerable: true, get: function () { return names_1.FIELD_NAME; } });
6
6
  Object.defineProperty(exports, "FIELD_TYPES", { enumerable: true, get: function () { return names_1.FIELD_TYPES; } });
@@ -8,6 +8,8 @@ var columns_1 = require("./lib/format/columns");
8
8
  Object.defineProperty(exports, "wideColumns", { enumerable: true, get: function () { return columns_1.wideColumns; } });
9
9
  var version_1 = require("./lib/format/version");
10
10
  Object.defineProperty(exports, "FORMAT_VERSION", { enumerable: true, get: function () { return version_1.FORMAT_VERSION; } });
11
+ var part_look_1 = require("./lib/format/part-look");
12
+ Object.defineProperty(exports, "PART_LOOKS", { enumerable: true, get: function () { return part_look_1.PART_LOOKS; } });
11
13
  var check_page_1 = require("./lib/format/check-page");
12
14
  Object.defineProperty(exports, "checkPage", { enumerable: true, get: function () { return check_page_1.checkPage; } });
13
15
  var translate_1 = require("./lib/format/translate");
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../libs/core/src/runtime.ts"],"names":[],"mappings":";;;AAMA,4CAA6E;AAApE,mGAAA,UAAU,OAAA;AAAE,oGAAA,WAAW,OAAA;AAkChC,gDAAmD;AAA1C,sGAAA,WAAW,OAAA;AACpB,gDAAsD;AAA7C,yGAAA,cAAc,OAAA;AAEvB,sDAAoD;AAA3C,uGAAA,SAAS,OAAA;AAElB,oDAA+F;AAAtF,0GAAA,aAAa,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,sGAAA,SAAS,OAAA;AAAE,0GAAA,aAAa,OAAA;AAC9D,sDAAmF;AAA1E,2GAAA,eAAe,OAAA;AACxB,sEAAsF;AAA7E,oHAAA,gBAAgB,OAAA;AAAE,mHAAA,eAAe,OAAA;AAC1C,8CAa6B;AAZ3B,oGAAA,UAAU,OAAA;AACV,uGAAA,aAAa,OAAA;AACb,iGAAA,OAAO,OAAA;AACP,2GAAA,iBAAiB,OAAA;AACjB,kGAAA,QAAQ,OAAA;AASV,4CAAyF;AAAhF,mGAAA,UAAU,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC5D,4CAAyD;AAAhD,gGAAA,OAAO,OAAA;AAyBhB,wDAAsE;AAA7D,0GAAA,WAAW,OAAA;AAAE,4GAAA,aAAa,OAAA;AACnC,8CAAoD;AAA3C,uGAAA,aAAa,OAAA;AACtB,8CAA8G;AAArG,qGAAA,WAAW,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,uGAAA,aAAa,OAAA;AACnD,sEAA8H;AAArH,4HAAA,sBAAsB,OAAA;AAC/B,oDAA6E;AAApE,0GAAA,aAAa,OAAA;AAAE,iGAAA,IAAI,OAAA;AAC5B,0CAU2B;AATzB,kGAAA,UAAU,OAAA;AAUZ,kDAAmF;AAA1E,oGAAA,QAAQ,OAAA;AAAE,gGAAA,IAAI,OAAA;AACvB,8CAA4C;AAAnC,+FAAA,KAAK,OAAA;AACd,sDAAwD;AAA/C,2GAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../../libs/core/src/runtime.ts"],"names":[],"mappings":";;;AAMA,4CAA6E;AAApE,mGAAA,UAAU,OAAA;AAAE,oGAAA,WAAW,OAAA;AAmChC,gDAAmD;AAA1C,sGAAA,WAAW,OAAA;AAmBpB,gDAAsD;AAA7C,yGAAA,cAAc,OAAA;AAEvB,oDAAsG;AAA7F,uGAAA,UAAU,OAAA;AACnB,sDAAoD;AAA3C,uGAAA,SAAS,OAAA;AAElB,oDAA+F;AAAtF,0GAAA,aAAa,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,sGAAA,SAAS,OAAA;AAAE,0GAAA,aAAa,OAAA;AAC9D,sDAAmF;AAA1E,2GAAA,eAAe,OAAA;AACxB,sEAAsF;AAA7E,oHAAA,gBAAgB,OAAA;AAAE,mHAAA,eAAe,OAAA;AAC1C,8CAa6B;AAZ3B,oGAAA,UAAU,OAAA;AACV,uGAAA,aAAa,OAAA;AACb,iGAAA,OAAO,OAAA;AACP,2GAAA,iBAAiB,OAAA;AACjB,kGAAA,QAAQ,OAAA;AASV,4CAAyF;AAAhF,mGAAA,UAAU,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC5D,4CAAyD;AAAhD,gGAAA,OAAO,OAAA;AAyBhB,wDAAsE;AAA7D,0GAAA,WAAW,OAAA;AAAE,4GAAA,aAAa,OAAA;AACnC,8CAAoD;AAA3C,uGAAA,aAAa,OAAA;AACtB,8CAA8G;AAArG,qGAAA,WAAW,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,uGAAA,aAAa,OAAA;AACnD,sEAA8H;AAArH,4HAAA,sBAAsB,OAAA;AAC/B,oDAA6E;AAApE,0GAAA,aAAa,OAAA;AAAE,iGAAA,IAAI,OAAA;AAC5B,0CAY2B;AAXzB,kGAAA,UAAU,OAAA;AAaZ,kDAAmF;AAA1E,oGAAA,QAAQ,OAAA;AAAE,gGAAA,IAAI,OAAA;AACvB,8CAA4C;AAAnC,+FAAA,KAAK,OAAA;AACd,sDAAwD;AAA/C,2GAAA,aAAa,OAAA"}
package/src/runtime.mjs CHANGED
@@ -1,6 +1,7 @@
1
1
  export { FIELD_NAME, FIELD_TYPES } from './lib/format/names.mjs';
2
2
  export { wideColumns } from './lib/format/columns.mjs';
3
3
  export { FORMAT_VERSION } from './lib/format/version.mjs';
4
+ export { PART_LOOKS } from './lib/format/part-look.mjs';
4
5
  export { checkPage } from './lib/format/check-page.mjs';
5
6
  export { translatePage, localizePage, pageWords, isRightToLeft } from './lib/format/translate.mjs';
6
7
  export { compileModifier } from './lib/expression/modifier.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.mjs","sourceRoot":"","sources":["../../../../libs/core/src/runtime.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAkB,MAAM,oBAAoB,CAAC;AAkC7E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAyB,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EACL,UAAU,EACV,aAAa,EACb,OAAO,EACP,iBAAiB,EACjB,QAAQ,GAQT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,OAAO,EAAc,MAAM,oBAAoB,CAAC;AAyBzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAA+B,MAAM,qBAAqB,CAAC;AAC9G,OAAO,EAAE,sBAAsB,EAAuD,MAAM,iCAAiC,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,IAAI,EAAkB,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,UAAU,GASX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAA8B,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"runtime.mjs","sourceRoot":"","sources":["../../../../libs/core/src/runtime.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAkB,MAAM,oBAAoB,CAAC;AAmC7E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAmBnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAoD,MAAM,wBAAwB,CAAC;AACtG,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAyB,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EACL,UAAU,EACV,aAAa,EACb,OAAO,EACP,iBAAiB,EACjB,QAAQ,GAQT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,OAAO,EAAc,MAAM,oBAAoB,CAAC;AAyBzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAA+B,MAAM,qBAAqB,CAAC;AAC9G,OAAO,EAAE,sBAAsB,EAAuD,MAAM,iCAAiC,CAAC;AAC9H,OAAO,EAAE,aAAa,EAAE,IAAI,EAAkB,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,UAAU,GAWX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAA8B,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}