@fieldia/core 0.1.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/LICENSE +21 -0
- package/README.md +31 -0
- package/package.json +40 -0
- package/schema/page.schema.json +2142 -0
- package/src/index.d.mts +15 -0
- package/src/index.d.ts +15 -0
- package/src/index.js +46 -0
- package/src/index.js.map +1 -0
- package/src/index.mjs +14 -0
- package/src/index.mjs.map +1 -0
- package/src/lib/expression/evaluateModifier.d.mts +55 -0
- package/src/lib/expression/evaluateModifier.d.ts +55 -0
- package/src/lib/expression/evaluateModifier.js +121 -0
- package/src/lib/expression/evaluateModifier.js.map +1 -0
- package/src/lib/expression/evaluateModifier.mjs +117 -0
- package/src/lib/expression/evaluateModifier.mjs.map +1 -0
- package/src/lib/expression/evaluator.d.mts +23 -0
- package/src/lib/expression/evaluator.d.ts +23 -0
- package/src/lib/expression/evaluator.js +122 -0
- package/src/lib/expression/evaluator.js.map +1 -0
- package/src/lib/expression/evaluator.mjs +118 -0
- package/src/lib/expression/evaluator.mjs.map +1 -0
- package/src/lib/expression/extractFieldNames.d.mts +41 -0
- package/src/lib/expression/extractFieldNames.d.ts +41 -0
- package/src/lib/expression/extractFieldNames.js +97 -0
- package/src/lib/expression/extractFieldNames.js.map +1 -0
- package/src/lib/expression/extractFieldNames.mjs +93 -0
- package/src/lib/expression/extractFieldNames.mjs.map +1 -0
- package/src/lib/expression/modifier.d.mts +14 -0
- package/src/lib/expression/modifier.d.ts +14 -0
- package/src/lib/expression/modifier.js +55 -0
- package/src/lib/expression/modifier.js.map +1 -0
- package/src/lib/expression/modifier.mjs +52 -0
- package/src/lib/expression/modifier.mjs.map +1 -0
- package/src/lib/expression/parser.d.mts +109 -0
- package/src/lib/expression/parser.d.ts +109 -0
- package/src/lib/expression/parser.js +317 -0
- package/src/lib/expression/parser.js.map +1 -0
- package/src/lib/expression/parser.mjs +313 -0
- package/src/lib/expression/parser.mjs.map +1 -0
- package/src/lib/expression/tokenizer.d.mts +31 -0
- package/src/lib/expression/tokenizer.d.ts +31 -0
- package/src/lib/expression/tokenizer.js +100 -0
- package/src/lib/expression/tokenizer.js.map +1 -0
- package/src/lib/expression/tokenizer.mjs +96 -0
- package/src/lib/expression/tokenizer.mjs.map +1 -0
- package/src/lib/format/field.d.mts +967 -0
- package/src/lib/format/field.d.ts +967 -0
- package/src/lib/format/field.js +147 -0
- package/src/lib/format/field.js.map +1 -0
- package/src/lib/format/field.mjs +144 -0
- package/src/lib/format/field.mjs.map +1 -0
- package/src/lib/format/json-schema.d.mts +6 -0
- package/src/lib/format/json-schema.d.ts +6 -0
- package/src/lib/format/json-schema.js +14 -0
- package/src/lib/format/json-schema.js.map +1 -0
- package/src/lib/format/json-schema.mjs +11 -0
- package/src/lib/format/json-schema.mjs.map +1 -0
- package/src/lib/format/json.d.mts +7 -0
- package/src/lib/format/json.d.ts +7 -0
- package/src/lib/format/json.js +7 -0
- package/src/lib/format/json.js.map +1 -0
- package/src/lib/format/json.mjs +4 -0
- package/src/lib/format/json.mjs.map +1 -0
- package/src/lib/format/layout.d.mts +521 -0
- package/src/lib/format/layout.d.ts +521 -0
- package/src/lib/format/layout.js +150 -0
- package/src/lib/format/layout.js.map +1 -0
- package/src/lib/format/layout.mjs +147 -0
- package/src/lib/format/layout.mjs.map +1 -0
- package/src/lib/format/layout.types.d.mts +22 -0
- package/src/lib/format/layout.types.d.ts +22 -0
- package/src/lib/format/layout.types.js +3 -0
- package/src/lib/format/layout.types.js.map +1 -0
- package/src/lib/format/layout.types.mjs +2 -0
- package/src/lib/format/layout.types.mjs.map +1 -0
- package/src/lib/format/page.d.mts +511 -0
- package/src/lib/format/page.d.ts +511 -0
- package/src/lib/format/page.js +27 -0
- package/src/lib/format/page.js.map +1 -0
- package/src/lib/format/page.mjs +24 -0
- package/src/lib/format/page.mjs.map +1 -0
- package/src/lib/format/validate.d.mts +23 -0
- package/src/lib/format/validate.d.ts +23 -0
- package/src/lib/format/validate.js +210 -0
- package/src/lib/format/validate.js.map +1 -0
- package/src/lib/format/validate.mjs +207 -0
- package/src/lib/format/validate.mjs.map +1 -0
- package/src/lib/record/check.d.mts +14 -0
- package/src/lib/record/check.d.ts +14 -0
- package/src/lib/record/check.js +167 -0
- package/src/lib/record/check.js.map +1 -0
- package/src/lib/record/check.mjs +163 -0
- package/src/lib/record/check.mjs.map +1 -0
- package/src/lib/record/data-source.d.mts +109 -0
- package/src/lib/record/data-source.d.ts +109 -0
- package/src/lib/record/data-source.js +3 -0
- package/src/lib/record/data-source.js.map +1 -0
- package/src/lib/record/data-source.mjs +2 -0
- package/src/lib/record/data-source.mjs.map +1 -0
- package/src/lib/record/form.d.mts +106 -0
- package/src/lib/record/form.d.ts +106 -0
- package/src/lib/record/form.js +545 -0
- package/src/lib/record/form.js.map +1 -0
- package/src/lib/record/form.mjs +542 -0
- package/src/lib/record/form.mjs.map +1 -0
- package/src/lib/record/memory-data-source.d.mts +28 -0
- package/src/lib/record/memory-data-source.d.ts +28 -0
- package/src/lib/record/memory-data-source.js +132 -0
- package/src/lib/record/memory-data-source.js.map +1 -0
- package/src/lib/record/memory-data-source.mjs +129 -0
- package/src/lib/record/memory-data-source.mjs.map +1 -0
- package/src/lib/record/messages.d.mts +35 -0
- package/src/lib/record/messages.d.ts +35 -0
- package/src/lib/record/messages.js +111 -0
- package/src/lib/record/messages.js.map +1 -0
- package/src/lib/record/messages.mjs +107 -0
- package/src/lib/record/messages.mjs.map +1 -0
- package/src/lib/record/scheduler.d.mts +12 -0
- package/src/lib/record/scheduler.d.ts +12 -0
- package/src/lib/record/scheduler.js +16 -0
- package/src/lib/record/scheduler.js.map +1 -0
- package/src/lib/record/scheduler.mjs +12 -0
- package/src/lib/record/scheduler.mjs.map +1 -0
- package/src/lib/record/values.d.mts +54 -0
- package/src/lib/record/values.d.ts +54 -0
- package/src/lib/record/values.js +78 -0
- package/src/lib/record/values.js.map +1 -0
- package/src/lib/record/values.mjs +71 -0
- package/src/lib/record/values.mjs.map +1 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
import { FIELD_NAME } from './field.mjs';
|
|
3
|
+
import { JsonValueSchema } from './json.mjs';
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Schemas. Recursion goes through getters on z.strictObject (zod 4's own
|
|
6
|
+
// pattern); `.strict()` would clone the shape and run the getters too early.
|
|
7
|
+
// layout.types.ts proves these schemas and the interfaces above agree.
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
export const ModifierSchema = z.union([z.boolean(), z.string().min(1)]).meta({ id: 'Modifier' });
|
|
10
|
+
const id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/);
|
|
11
|
+
const fieldName = z.string().regex(FIELD_NAME);
|
|
12
|
+
const tone = z.enum(['info', 'success', 'warning', 'danger', 'muted']);
|
|
13
|
+
const invisible = ModifierSchema.optional();
|
|
14
|
+
export const FieldNodeSchema = z.strictObject({
|
|
15
|
+
type: z.literal('field'),
|
|
16
|
+
id,
|
|
17
|
+
field: fieldName,
|
|
18
|
+
label: z.string().optional(),
|
|
19
|
+
widget: z.string().min(1).optional(),
|
|
20
|
+
placeholder: z.string().optional(),
|
|
21
|
+
help: z.string().optional(),
|
|
22
|
+
colspan: z.int().min(1).max(4).optional(),
|
|
23
|
+
columns: z.array(fieldName).min(1).optional(),
|
|
24
|
+
invisible,
|
|
25
|
+
readonly: ModifierSchema.optional(),
|
|
26
|
+
required: ModifierSchema.optional(),
|
|
27
|
+
});
|
|
28
|
+
export const ButtonNodeSchema = z.strictObject({
|
|
29
|
+
type: z.literal('button'),
|
|
30
|
+
id,
|
|
31
|
+
label: z.string(),
|
|
32
|
+
action: z.string().min(1),
|
|
33
|
+
params: z.record(z.string(), JsonValueSchema).optional(),
|
|
34
|
+
style: z.enum(['primary', 'secondary', 'danger', 'link']).optional(),
|
|
35
|
+
confirm: z.string().optional(),
|
|
36
|
+
icon: z.string().optional(),
|
|
37
|
+
invisible,
|
|
38
|
+
});
|
|
39
|
+
export const TextNodeSchema = z.strictObject({
|
|
40
|
+
type: z.literal('text'),
|
|
41
|
+
id,
|
|
42
|
+
text: z.string(),
|
|
43
|
+
style: z.enum(['heading', 'paragraph', 'note']).optional(),
|
|
44
|
+
invisible,
|
|
45
|
+
});
|
|
46
|
+
export const SlotNodeSchema = z.strictObject({ type: z.literal('slot'), id, name: z.string().min(1), invisible });
|
|
47
|
+
export const SectionNodeSchema = z.strictObject({
|
|
48
|
+
type: z.literal('section'),
|
|
49
|
+
id,
|
|
50
|
+
title: z.string().optional(),
|
|
51
|
+
description: z.string().optional(),
|
|
52
|
+
columns: z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4)]).optional(),
|
|
53
|
+
collapsible: z.boolean().optional(),
|
|
54
|
+
invisible,
|
|
55
|
+
get children() {
|
|
56
|
+
return z.array(LayoutNodeSchema);
|
|
57
|
+
},
|
|
58
|
+
}).meta({ id: 'SectionNode' });
|
|
59
|
+
export const TabNodeSchema = z.strictObject({
|
|
60
|
+
type: z.literal('tab'),
|
|
61
|
+
id,
|
|
62
|
+
label: z.string(),
|
|
63
|
+
icon: z.string().optional(),
|
|
64
|
+
invisible,
|
|
65
|
+
get children() {
|
|
66
|
+
return z.array(LayoutNodeSchema);
|
|
67
|
+
},
|
|
68
|
+
}).meta({ id: 'TabNode' });
|
|
69
|
+
export const TabsNodeSchema = z.strictObject({
|
|
70
|
+
type: z.literal('tabs'),
|
|
71
|
+
id,
|
|
72
|
+
invisible,
|
|
73
|
+
children: z.array(TabNodeSchema).min(1),
|
|
74
|
+
}).meta({ id: 'TabsNode' });
|
|
75
|
+
export const LayoutNodeSchema = z
|
|
76
|
+
.discriminatedUnion('type', [
|
|
77
|
+
FieldNodeSchema,
|
|
78
|
+
ButtonNodeSchema,
|
|
79
|
+
TextNodeSchema,
|
|
80
|
+
SlotNodeSchema,
|
|
81
|
+
SectionNodeSchema,
|
|
82
|
+
TabsNodeSchema,
|
|
83
|
+
])
|
|
84
|
+
.meta({ id: 'LayoutNode' });
|
|
85
|
+
export const StepNodeSchema = z.strictObject({
|
|
86
|
+
type: z.literal('step'),
|
|
87
|
+
id,
|
|
88
|
+
label: z.string(),
|
|
89
|
+
description: z.string().optional(),
|
|
90
|
+
invisible,
|
|
91
|
+
get children() {
|
|
92
|
+
return z.array(LayoutNodeSchema);
|
|
93
|
+
},
|
|
94
|
+
}).meta({ id: 'StepNode' });
|
|
95
|
+
export const WizardNodeSchema = z.strictObject({
|
|
96
|
+
type: z.literal('wizard'),
|
|
97
|
+
id,
|
|
98
|
+
children: z.array(StepNodeSchema).min(1),
|
|
99
|
+
}).meta({ id: 'WizardNode' });
|
|
100
|
+
export const SectionsNodeSchema = z.strictObject({
|
|
101
|
+
type: z.literal('sections'),
|
|
102
|
+
id,
|
|
103
|
+
get children() {
|
|
104
|
+
return z.array(LayoutNodeSchema);
|
|
105
|
+
},
|
|
106
|
+
}).meta({ id: 'SectionsNode' });
|
|
107
|
+
export const StatButtonSchema = z.strictObject({
|
|
108
|
+
id,
|
|
109
|
+
label: z.string(),
|
|
110
|
+
action: z.string().min(1),
|
|
111
|
+
field: fieldName.optional(),
|
|
112
|
+
icon: z.string().optional(),
|
|
113
|
+
invisible,
|
|
114
|
+
});
|
|
115
|
+
export const RibbonSchema = z.strictObject({ id, label: z.string(), tone: tone.optional(), invisible });
|
|
116
|
+
export const AlertSchema = z.strictObject({ id, message: z.string(), tone: tone.optional(), invisible });
|
|
117
|
+
export const SheetNodeSchema = z.strictObject({
|
|
118
|
+
type: z.literal('sheet'),
|
|
119
|
+
id,
|
|
120
|
+
title: z
|
|
121
|
+
.strictObject({
|
|
122
|
+
field: fieldName,
|
|
123
|
+
subtitleField: fieldName.optional(),
|
|
124
|
+
avatarField: fieldName.optional(),
|
|
125
|
+
placeholder: z.string().optional(),
|
|
126
|
+
})
|
|
127
|
+
.optional(),
|
|
128
|
+
statusbar: z
|
|
129
|
+
.strictObject({
|
|
130
|
+
field: fieldName,
|
|
131
|
+
visibleStates: z.array(z.union([z.string(), z.number()])).optional(),
|
|
132
|
+
clickable: z.boolean().optional(),
|
|
133
|
+
})
|
|
134
|
+
.optional(),
|
|
135
|
+
buttons: z.array(ButtonNodeSchema).optional(),
|
|
136
|
+
statButtons: z.array(StatButtonSchema).optional(),
|
|
137
|
+
ribbon: RibbonSchema.optional(),
|
|
138
|
+
alerts: z.array(AlertSchema).optional(),
|
|
139
|
+
get children() {
|
|
140
|
+
return z.array(LayoutNodeSchema);
|
|
141
|
+
},
|
|
142
|
+
sidePanel: SlotNodeSchema.optional(),
|
|
143
|
+
}).meta({ id: 'SheetNode' });
|
|
144
|
+
export const RootLayoutSchema = z
|
|
145
|
+
.discriminatedUnion('type', [SheetNodeSchema, SectionsNodeSchema, TabsNodeSchema, WizardNodeSchema])
|
|
146
|
+
.meta({ id: 'RootLayout' });
|
|
147
|
+
//# sourceMappingURL=layout.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { Page } from './page.mjs';
|
|
3
|
+
import type { PageSchema } from './page.mjs';
|
|
4
|
+
import type { FieldNode, FieldNodeSchema, ButtonNode, ButtonNodeSchema, SheetNode, SheetNodeSchema, StepNode, StepNodeSchema, TabNode, TabNodeSchema, LayoutNode, LayoutNodeSchema, RootLayout, RootLayoutSchema } from './layout.mjs';
|
|
5
|
+
/**
|
|
6
|
+
* Compile-time proof that the hand-written interfaces (the public types, with
|
|
7
|
+
* their docs) and the schemas (what validation actually checks) describe the
|
|
8
|
+
* same thing. If either side changes alone, `typecheck` fails here.
|
|
9
|
+
*/
|
|
10
|
+
type Same<A, B> = [A] extends [B] ? ([B] extends [A] ? true : false) : false;
|
|
11
|
+
type Assert<T extends true> = T;
|
|
12
|
+
export type Checks = [
|
|
13
|
+
Assert<Same<z.infer<typeof FieldNodeSchema>, FieldNode>>,
|
|
14
|
+
Assert<Same<z.infer<typeof ButtonNodeSchema>, ButtonNode>>,
|
|
15
|
+
Assert<Same<z.infer<typeof TabNodeSchema>, TabNode>>,
|
|
16
|
+
Assert<Same<z.infer<typeof StepNodeSchema>, StepNode>>,
|
|
17
|
+
Assert<Same<z.infer<typeof SheetNodeSchema>, SheetNode>>,
|
|
18
|
+
Assert<Same<z.infer<typeof LayoutNodeSchema>, LayoutNode>>,
|
|
19
|
+
Assert<Same<z.infer<typeof RootLayoutSchema>, RootLayout>>,
|
|
20
|
+
Assert<Same<z.infer<typeof PageSchema>, Page>>
|
|
21
|
+
];
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type * as z from 'zod';
|
|
2
|
+
import type { Page } from './page';
|
|
3
|
+
import type { PageSchema } from './page';
|
|
4
|
+
import type { FieldNode, FieldNodeSchema, ButtonNode, ButtonNodeSchema, SheetNode, SheetNodeSchema, StepNode, StepNodeSchema, TabNode, TabNodeSchema, LayoutNode, LayoutNodeSchema, RootLayout, RootLayoutSchema } from './layout';
|
|
5
|
+
/**
|
|
6
|
+
* Compile-time proof that the hand-written interfaces (the public types, with
|
|
7
|
+
* their docs) and the schemas (what validation actually checks) describe the
|
|
8
|
+
* same thing. If either side changes alone, `typecheck` fails here.
|
|
9
|
+
*/
|
|
10
|
+
type Same<A, B> = [A] extends [B] ? ([B] extends [A] ? true : false) : false;
|
|
11
|
+
type Assert<T extends true> = T;
|
|
12
|
+
export type Checks = [
|
|
13
|
+
Assert<Same<z.infer<typeof FieldNodeSchema>, FieldNode>>,
|
|
14
|
+
Assert<Same<z.infer<typeof ButtonNodeSchema>, ButtonNode>>,
|
|
15
|
+
Assert<Same<z.infer<typeof TabNodeSchema>, TabNode>>,
|
|
16
|
+
Assert<Same<z.infer<typeof StepNodeSchema>, StepNode>>,
|
|
17
|
+
Assert<Same<z.infer<typeof SheetNodeSchema>, SheetNode>>,
|
|
18
|
+
Assert<Same<z.infer<typeof LayoutNodeSchema>, LayoutNode>>,
|
|
19
|
+
Assert<Same<z.infer<typeof RootLayoutSchema>, RootLayout>>,
|
|
20
|
+
Assert<Same<z.infer<typeof PageSchema>, Page>>
|
|
21
|
+
];
|
|
22
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.types.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/layout.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.types.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/format/layout.types.ts"],"names":[],"mappings":""}
|