@tekki-forge/compiler 0.0.0-stage → 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/README.md +4 -2
- package/dist/compile.d.ts +17 -0
- package/dist/compile.js +691 -0
- package/dist/compile.js.map +1 -0
- package/dist/dashboard.d.ts +7 -0
- package/dist/dashboard.js +103 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/features.d.ts +13 -0
- package/dist/features.js +247 -0
- package/dist/features.js.map +1 -0
- package/dist/files.d.ts +34 -0
- package/dist/files.js +32 -0
- package/dist/files.js.map +1 -0
- package/dist/i18n.d.ts +24 -0
- package/dist/i18n.js +168 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/indexes.d.ts +13 -0
- package/dist/indexes.js +71 -0
- package/dist/indexes.js.map +1 -0
- package/dist/ir.d.ts +413 -0
- package/dist/ir.js +27 -0
- package/dist/ir.js.map +1 -0
- package/dist/landing.d.ts +5 -0
- package/dist/landing.js +73 -0
- package/dist/landing.js.map +1 -0
- package/dist/load.d.ts +12 -0
- package/dist/load.js +38 -0
- package/dist/load.js.map +1 -0
- package/dist/naming.d.ts +11 -0
- package/dist/naming.js +58 -0
- package/dist/naming.js.map +1 -0
- package/dist/notifications.d.ts +5 -0
- package/dist/notifications.js +80 -0
- package/dist/notifications.js.map +1 -0
- package/dist/rules.d.ts +4 -0
- package/dist/rules.js +43 -0
- package/dist/rules.js.map +1 -0
- package/dist/theme.d.ts +69 -0
- package/dist/theme.js +257 -0
- package/dist/theme.js.map +1 -0
- package/dist/ui.d.ts +83 -0
- package/dist/ui.js +102 -0
- package/dist/ui.js.map +1 -0
- package/package.json +41 -3
package/dist/ui.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
const CELL = {
|
|
2
|
+
location: "location",
|
|
3
|
+
file: "file",
|
|
4
|
+
image: "image",
|
|
5
|
+
enum: "badge",
|
|
6
|
+
boolean: "boolean",
|
|
7
|
+
money: "money",
|
|
8
|
+
percentage: "percentage",
|
|
9
|
+
date: "date",
|
|
10
|
+
datetime: "datetime",
|
|
11
|
+
relation: "relation",
|
|
12
|
+
color: "color",
|
|
13
|
+
email: "email",
|
|
14
|
+
url: "url",
|
|
15
|
+
decimal: "number",
|
|
16
|
+
integer: "number",
|
|
17
|
+
};
|
|
18
|
+
/** Path segment used to look up records of a relation target. */
|
|
19
|
+
export function lookupPath(ir, entity) {
|
|
20
|
+
if (entity === "User")
|
|
21
|
+
return "users/lookup";
|
|
22
|
+
if (entity === "Team")
|
|
23
|
+
return "teams/lookup";
|
|
24
|
+
const target = ir.entities.find((e) => e.name === entity);
|
|
25
|
+
return `${target?.path ?? entity.toLowerCase()}/lookup`;
|
|
26
|
+
}
|
|
27
|
+
export function deriveResources(ir) {
|
|
28
|
+
return ir.entities.map((e) => {
|
|
29
|
+
const byName = new Map(e.fields.map((f) => [f.name, f]));
|
|
30
|
+
const columns = e.list.columns.map((key) => {
|
|
31
|
+
const f = byName.get(key);
|
|
32
|
+
if (!f)
|
|
33
|
+
return { key, label: key === "createdAt" ? "Created" : key === "updatedAt" ? "Updated" : key, kind: "system", sortable: true, cell: "datetime" };
|
|
34
|
+
const cell = f.relation?.type === "many-to-many" ? "relation-list" : (CELL[f.kind] ?? "text");
|
|
35
|
+
return { key, label: f.label, kind: f.kind, sortable: f.sortable, cell };
|
|
36
|
+
});
|
|
37
|
+
const filters = e.fields
|
|
38
|
+
.filter((f) => f.filterable && !f.hidden)
|
|
39
|
+
.map((f) => {
|
|
40
|
+
if (f.kind === "enum")
|
|
41
|
+
return { key: f.name, label: f.label, type: "select", options: f.enumValues };
|
|
42
|
+
if (f.kind === "boolean")
|
|
43
|
+
return { key: f.name, label: f.label, type: "boolean" };
|
|
44
|
+
if (f.relation)
|
|
45
|
+
return { key: f.name, label: f.label, type: "relation", relationPath: lookupPath(ir, f.relation.entity) };
|
|
46
|
+
if (["integer", "decimal", "money", "percentage", "date", "datetime"].includes(f.kind))
|
|
47
|
+
return { key: f.name, label: f.label, type: "range" };
|
|
48
|
+
return { key: f.name, label: f.label, type: "select", options: [] };
|
|
49
|
+
})
|
|
50
|
+
.filter((f) => f.type !== "select" || (f.options?.length ?? 0) > 0);
|
|
51
|
+
const formFields = e.fields
|
|
52
|
+
.filter((f) => !f.hidden && !f.readonly && !f.computed)
|
|
53
|
+
.map((f) => ({
|
|
54
|
+
name: f.name,
|
|
55
|
+
apiName: f.apiName,
|
|
56
|
+
label: f.label,
|
|
57
|
+
component: f.relation?.type === "many-to-many" && f.widget === "relation-select" ? "relation-multi" : f.widget,
|
|
58
|
+
required: f.required && !f.relation?.owner,
|
|
59
|
+
...(f.description ? { description: f.description } : {}),
|
|
60
|
+
...(f.placeholder ? { placeholder: f.placeholder } : {}),
|
|
61
|
+
...(f.enumValues ? { options: f.enumValues } : {}),
|
|
62
|
+
...(f.relation ? { relation: { entity: f.relation.entity, lookupPath: lookupPath(ir, f.relation.entity), many: f.relation.type === "many-to-many" } } : {}),
|
|
63
|
+
...(f.file ? { file: f.file } : {}),
|
|
64
|
+
...(f.currency ? { currency: f.currency } : {}),
|
|
65
|
+
validation: f.validation,
|
|
66
|
+
...(f.default?.kind === "value" ? { defaultValue: f.default.value } : {}),
|
|
67
|
+
}));
|
|
68
|
+
const searchFields = e.fields.filter((f) => f.searchable).map((f) => f.label.toLowerCase());
|
|
69
|
+
return {
|
|
70
|
+
name: e.name,
|
|
71
|
+
path: e.path,
|
|
72
|
+
label: e.label,
|
|
73
|
+
pluralLabel: e.pluralLabel,
|
|
74
|
+
icon: e.icon,
|
|
75
|
+
nav: e.nav,
|
|
76
|
+
display: e.display,
|
|
77
|
+
searchable: searchFields.length > 0,
|
|
78
|
+
searchPlaceholder: `Search ${e.pluralLabel.toLowerCase()}…`,
|
|
79
|
+
list: {
|
|
80
|
+
columns,
|
|
81
|
+
filters,
|
|
82
|
+
defaultSort: `${e.list.defaultSort.direction === "desc" ? "-" : ""}${e.list.defaultSort.field}`,
|
|
83
|
+
pageSize: e.list.pageSize,
|
|
84
|
+
},
|
|
85
|
+
form: { fields: formFields },
|
|
86
|
+
detail: {
|
|
87
|
+
fields: e.fields.filter((f) => !f.hidden).map((f) => f.name),
|
|
88
|
+
related: e.inverseRelations.map((r) => ({
|
|
89
|
+
name: r.name,
|
|
90
|
+
label: r.label,
|
|
91
|
+
resourcePath: ir.entities.find((x) => x.name === r.entity).path,
|
|
92
|
+
filterKey: r.field,
|
|
93
|
+
})),
|
|
94
|
+
},
|
|
95
|
+
features: e.features,
|
|
96
|
+
actions: e.actions,
|
|
97
|
+
...(e.workflow ? { workflow: e.workflow } : {}),
|
|
98
|
+
views: e.views,
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=ui.js.map
|
package/dist/ui.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,44 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tekki-forge/compiler",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Forge schema compiler: config -> validated, normalized IR",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"code-generator",
|
|
7
|
+
"forge",
|
|
8
|
+
"full-stack",
|
|
9
|
+
"tekki-forge"
|
|
10
|
+
],
|
|
11
|
+
"author": "Mahy KANE",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"type": "module",
|
|
14
|
+
"main": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"default": "./dist/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./i18n": {
|
|
22
|
+
"types": "./dist/i18n.d.ts",
|
|
23
|
+
"default": "./dist/i18n.js"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=22"
|
|
31
|
+
},
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"jiti": "^2.7.0",
|
|
37
|
+
"@tekki-forge/core": "^0.1.0",
|
|
38
|
+
"@tekki-forge/expression": "^0.1.0"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "tsc -p tsconfig.json",
|
|
42
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
43
|
+
}
|
|
6
44
|
}
|