@objectstack/cli 7.9.0 → 8.0.1
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/dist/commands/lint.d.ts +11 -0
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +111 -1
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +38 -6
- package/dist/commands/serve.js.map +1 -1
- package/dist/lint/corpus.d.ts +17 -0
- package/dist/lint/corpus.d.ts.map +1 -0
- package/dist/lint/corpus.js +247 -0
- package/dist/lint/corpus.js.map +1 -0
- package/dist/lint/data-model-rules.d.ts +30 -0
- package/dist/lint/data-model-rules.d.ts.map +1 -0
- package/dist/lint/data-model-rules.js +190 -0
- package/dist/lint/data-model-rules.js.map +1 -0
- package/dist/lint/metadata-eval.d.ts +69 -0
- package/dist/lint/metadata-eval.d.ts.map +1 -0
- package/dist/lint/metadata-eval.js +70 -0
- package/dist/lint/metadata-eval.js.map +1 -0
- package/dist/lint/score.d.ts +32 -0
- package/dist/lint/score.d.ts.map +1 -0
- package/dist/lint/score.js +81 -0
- package/dist/lint/score.js.map +1 -0
- package/dist/utils/i18n-coverage.d.ts.map +1 -1
- package/dist/utils/i18n-coverage.js +1 -3
- package/dist/utils/i18n-coverage.js.map +1 -1
- package/dist/utils/i18n-extract.d.ts.map +1 -1
- package/dist/utils/i18n-extract.js +12 -3
- package/dist/utils/i18n-extract.js.map +1 -1
- package/package.json +44 -44
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
+
// ─── Heuristics ─────────────────────────────────────────────────────
|
|
3
|
+
const RELATIONSHIP_TYPES = new Set(['lookup', 'master_detail']);
|
|
4
|
+
const NUMERIC_TYPES = new Set([
|
|
5
|
+
'number', 'currency', 'integer', 'decimal', 'percent', 'float', 'double',
|
|
6
|
+
]);
|
|
7
|
+
const OPTION_FIELD_TYPES = new Set(['select', 'multiselect', 'radio', 'enum']);
|
|
8
|
+
const NAME_LIKE_FIELDS = ['name', 'title', 'subject', 'label', 'full_name', 'display_name', 'code'];
|
|
9
|
+
/** Child object names that read as line-items / composition (entered with the parent). */
|
|
10
|
+
const LINE_ITEM_RE = /_(line|lines|line_item|line_items|item|items|detail|details|entry|entries)$/;
|
|
11
|
+
/** Child object names that read as associations (comments/audit/activity — NOT line items). */
|
|
12
|
+
const ASSOCIATION_TOKENS = [
|
|
13
|
+
'comment', 'attachment', 'note', 'log', 'audit', 'activity', 'activities',
|
|
14
|
+
'history', 'event', 'reaction', 'like', 'mention', 'notification', 'message',
|
|
15
|
+
];
|
|
16
|
+
function isLineItemName(name) {
|
|
17
|
+
return LINE_ITEM_RE.test(name);
|
|
18
|
+
}
|
|
19
|
+
function isAssociationName(name) {
|
|
20
|
+
const lc = name.toLowerCase();
|
|
21
|
+
return ASSOCIATION_TOKENS.some((t) => lc === t || lc.endsWith(`_${t}`) || lc.endsWith(`_${t}s`));
|
|
22
|
+
}
|
|
23
|
+
function fieldEntries(fields) {
|
|
24
|
+
if (!fields)
|
|
25
|
+
return [];
|
|
26
|
+
if (Array.isArray(fields)) {
|
|
27
|
+
return fields.filter((f) => f && f.name != null).map((f) => ({ name: String(f.name), def: f }));
|
|
28
|
+
}
|
|
29
|
+
return Object.entries(fields).map(([name, def]) => ({ name, def }));
|
|
30
|
+
}
|
|
31
|
+
function refOf(def) {
|
|
32
|
+
return def?.reference || def?.reference_to;
|
|
33
|
+
}
|
|
34
|
+
// ─── Rule engine ────────────────────────────────────────────────────
|
|
35
|
+
/**
|
|
36
|
+
* Lint the relationship / data-modeling conventions across the full object set.
|
|
37
|
+
* Pure and deterministic — safe to call from both the `lint` command and the
|
|
38
|
+
* metadata-generation scorer.
|
|
39
|
+
*/
|
|
40
|
+
export function lintDataModel(objects) {
|
|
41
|
+
const issues = [];
|
|
42
|
+
if (!Array.isArray(objects) || objects.length === 0)
|
|
43
|
+
return issues;
|
|
44
|
+
// Index: parent object name → child relationships pointing at it.
|
|
45
|
+
const childrenByParent = {};
|
|
46
|
+
for (const child of objects) {
|
|
47
|
+
if (!child?.name)
|
|
48
|
+
continue;
|
|
49
|
+
for (const { name: fieldName, def } of fieldEntries(child.fields)) {
|
|
50
|
+
if (!RELATIONSHIP_TYPES.has(def?.type))
|
|
51
|
+
continue;
|
|
52
|
+
const parent = refOf(def);
|
|
53
|
+
if (!parent)
|
|
54
|
+
continue;
|
|
55
|
+
(childrenByParent[parent] ||= []).push({ child, fieldName, def });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
for (let i = 0; i < objects.length; i++) {
|
|
59
|
+
const obj = objects[i];
|
|
60
|
+
if (!obj?.name)
|
|
61
|
+
continue;
|
|
62
|
+
const objPath = `objects[${i}]`;
|
|
63
|
+
const fields = fieldEntries(obj.fields);
|
|
64
|
+
// R9 — object should have a derivable display/primary field.
|
|
65
|
+
const hasNameField = !!obj.primaryField ||
|
|
66
|
+
!!obj.titleFormat ||
|
|
67
|
+
fields.some((f) => NAME_LIKE_FIELDS.includes(f.name));
|
|
68
|
+
if (fields.length > 0 && !hasNameField) {
|
|
69
|
+
issues.push({
|
|
70
|
+
severity: 'suggestion',
|
|
71
|
+
rule: 'object/missing-name-field',
|
|
72
|
+
message: `Object "${obj.name}" has no name/title field or primaryField — records will display as raw IDs`,
|
|
73
|
+
path: `${objPath}.fields`,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
for (const { name: fieldName, def } of fields) {
|
|
77
|
+
if (!def || typeof def !== 'object')
|
|
78
|
+
continue;
|
|
79
|
+
const fieldPath = `${objPath}.fields.${fieldName}`;
|
|
80
|
+
const type = def.type;
|
|
81
|
+
// R8 — option fields need options (or an options source).
|
|
82
|
+
if (OPTION_FIELD_TYPES.has(type)) {
|
|
83
|
+
const hasOptions = (Array.isArray(def.options) && def.options.length > 0) ||
|
|
84
|
+
!!def.optionsFrom || !!def.dataSource || !!def.reference;
|
|
85
|
+
if (!hasOptions) {
|
|
86
|
+
issues.push({
|
|
87
|
+
severity: 'warning',
|
|
88
|
+
rule: 'field/select-missing-options',
|
|
89
|
+
message: `${type} field "${obj.name}.${fieldName}" has no options`,
|
|
90
|
+
path: `${fieldPath}.options`,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (!RELATIONSHIP_TYPES.has(type))
|
|
95
|
+
continue;
|
|
96
|
+
const parent = refOf(def);
|
|
97
|
+
// R1 — relationship fields must declare a reference target.
|
|
98
|
+
if (!parent) {
|
|
99
|
+
issues.push({
|
|
100
|
+
severity: 'error',
|
|
101
|
+
rule: 'relationship/missing-reference',
|
|
102
|
+
message: `${type} field "${obj.name}.${fieldName}" is missing a reference target`,
|
|
103
|
+
path: `${fieldPath}.reference`,
|
|
104
|
+
});
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (type === 'master_detail') {
|
|
108
|
+
// R2 — master-detail children should require their parent.
|
|
109
|
+
if (def.required !== true) {
|
|
110
|
+
issues.push({
|
|
111
|
+
severity: 'warning',
|
|
112
|
+
rule: 'relationship/master-detail-required',
|
|
113
|
+
message: `master_detail "${obj.name}.${fieldName}" → ${parent} should be required (a detail record cannot exist without its master)`,
|
|
114
|
+
path: `${fieldPath}.required`,
|
|
115
|
+
fix: 'required: true',
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
// R3 — be explicit about cascade behaviour.
|
|
119
|
+
if (def.deleteBehavior === undefined) {
|
|
120
|
+
issues.push({
|
|
121
|
+
severity: 'suggestion',
|
|
122
|
+
rule: 'relationship/delete-behavior',
|
|
123
|
+
message: `master_detail "${obj.name}.${fieldName}" → ${parent} should declare deleteBehavior (cascade/restrict/set_null)`,
|
|
124
|
+
path: `${fieldPath}.deleteBehavior`,
|
|
125
|
+
fix: "deleteBehavior: 'cascade'",
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
// R5 — line-item children are usually entered inline with the parent.
|
|
129
|
+
if (isLineItemName(obj.name) && def.inlineEdit !== true) {
|
|
130
|
+
issues.push({
|
|
131
|
+
severity: 'suggestion',
|
|
132
|
+
rule: 'relationship/line-items-inline-edit',
|
|
133
|
+
message: `"${obj.name}" looks like line items of ${parent}; consider inlineEdit: true on "${fieldName}" so it is entered inline within the ${parent} form`,
|
|
134
|
+
path: `${fieldPath}.inlineEdit`,
|
|
135
|
+
fix: 'inlineEdit: true',
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// R4 — a line-item-shaped child should usually be master_detail, not lookup.
|
|
140
|
+
if (type === 'lookup' && isLineItemName(obj.name)) {
|
|
141
|
+
issues.push({
|
|
142
|
+
severity: 'suggestion',
|
|
143
|
+
rule: 'relationship/line-item-should-be-master-detail',
|
|
144
|
+
message: `"${obj.name}" looks like line items of ${parent} but uses lookup; master_detail gives ownership + cascade + roll-ups`,
|
|
145
|
+
path: `${fieldPath}.type`,
|
|
146
|
+
fix: "type: 'master_detail'",
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
// R6 — associations should NOT be inlined into the parent's entry form.
|
|
150
|
+
if (def.inlineEdit === true && isAssociationName(obj.name)) {
|
|
151
|
+
issues.push({
|
|
152
|
+
severity: 'warning',
|
|
153
|
+
rule: 'relationship/association-inline-edit',
|
|
154
|
+
message: `"${obj.name}" is an association (comments/audit/activity), not line items — inlineEdit clutters the ${parent} entry form; surface it as a detail-page related list instead`,
|
|
155
|
+
path: `${fieldPath}.inlineEdit`,
|
|
156
|
+
fix: 'remove inlineEdit (use relatedList on the detail page)',
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// R7 — a parent of master_detail children with numeric fields should roll one up.
|
|
161
|
+
const children = childrenByParent[obj.name] || [];
|
|
162
|
+
const summaryChildObjects = new Set(fields
|
|
163
|
+
.filter((f) => f.def?.type === 'summary')
|
|
164
|
+
.map((f) => f.def?.summaryOperations?.object || f.def?.reference)
|
|
165
|
+
.filter(Boolean));
|
|
166
|
+
const seenSuggestedChild = new Set();
|
|
167
|
+
for (const { child, def } of children) {
|
|
168
|
+
if (def?.type !== 'master_detail')
|
|
169
|
+
continue;
|
|
170
|
+
if (!child?.name || seenSuggestedChild.has(child.name))
|
|
171
|
+
continue;
|
|
172
|
+
if (summaryChildObjects.has(child.name))
|
|
173
|
+
continue;
|
|
174
|
+
// Only nudge when the child actually has something worth aggregating.
|
|
175
|
+
const numericChildField = fieldEntries(child.fields).find((f) => NUMERIC_TYPES.has(f.def?.type));
|
|
176
|
+
if (!numericChildField)
|
|
177
|
+
continue;
|
|
178
|
+
seenSuggestedChild.add(child.name);
|
|
179
|
+
issues.push({
|
|
180
|
+
severity: 'suggestion',
|
|
181
|
+
rule: 'rollup/missing-summary',
|
|
182
|
+
message: `"${obj.name}" owns "${child.name}" (master_detail) with numeric field "${numericChildField.name}" but has no roll-up summary; consider a summary field (count/sum) on ${obj.name}`,
|
|
183
|
+
path: `${objPath}.fields`,
|
|
184
|
+
fix: `summary field aggregating ${child.name}.${numericChildField.name}`,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return issues;
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=data-model-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-model-rules.js","sourceRoot":"","sources":["../../src/lint/data-model-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metadata-generation eval harness.
|
|
3
|
+
*
|
|
4
|
+
* Measures how well a stack of metadata follows the platform's modelling
|
|
5
|
+
* conventions, using `scoreMetadata` (the linter-as-rubric) as the judge. Two
|
|
6
|
+
* modes, same rubric:
|
|
7
|
+
*
|
|
8
|
+
* - **Offline (default):** each case ships a golden fixture stack — the ideal
|
|
9
|
+
* output for its prompt. Scoring the fixtures is a deterministic regression
|
|
10
|
+
* guard: it proves the conventions + rubric stay self-consistent, runs in CI,
|
|
11
|
+
* and needs no API key.
|
|
12
|
+
*
|
|
13
|
+
* - **Live (opt-in):** pass `generate(prompt, caseId) => stack`. The harness
|
|
14
|
+
* scores whatever the generator produced for each prompt instead of the
|
|
15
|
+
* fixture. Wire `generate` to `AIService.generateObject<SolutionBlueprint>`
|
|
16
|
+
* (+ blueprint→metadata expansion) to benchmark a real model against the
|
|
17
|
+
* same bar. The seam is injected so this package keeps no LLM dependency.
|
|
18
|
+
*/
|
|
19
|
+
import { type MetadataScore } from './score.js';
|
|
20
|
+
export interface MetadataEvalCase {
|
|
21
|
+
/** Stable id (snake_case). */
|
|
22
|
+
id: string;
|
|
23
|
+
/** The natural-language authoring goal a generator would receive. */
|
|
24
|
+
prompt: string;
|
|
25
|
+
/** Golden/representative stack used in offline mode. */
|
|
26
|
+
fixture: unknown;
|
|
27
|
+
/** Minimum score to pass this case (defaults to the runner's `minScore`). */
|
|
28
|
+
minScore?: number;
|
|
29
|
+
/** Optional human note about what the case exercises. */
|
|
30
|
+
note?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface MetadataEvalCaseResult {
|
|
33
|
+
id: string;
|
|
34
|
+
prompt: string;
|
|
35
|
+
/** True when the (generated or fixture) stack failed to materialize. */
|
|
36
|
+
generationError?: string;
|
|
37
|
+
score: MetadataScore;
|
|
38
|
+
minScore: number;
|
|
39
|
+
passed: boolean;
|
|
40
|
+
/** 'fixture' offline, 'generated' when a live generator produced the stack. */
|
|
41
|
+
source: 'fixture' | 'generated';
|
|
42
|
+
}
|
|
43
|
+
export interface MetadataEvalReport {
|
|
44
|
+
results: MetadataEvalCaseResult[];
|
|
45
|
+
total: number;
|
|
46
|
+
passed: number;
|
|
47
|
+
failed: number;
|
|
48
|
+
/** Mean score across all cases (0–100, rounded). */
|
|
49
|
+
meanScore: number;
|
|
50
|
+
/** True when every case passed. */
|
|
51
|
+
ok: boolean;
|
|
52
|
+
mode: 'offline' | 'live';
|
|
53
|
+
}
|
|
54
|
+
export interface RunMetadataEvalOptions {
|
|
55
|
+
/**
|
|
56
|
+
* Live generator. When provided, the harness scores `generate(prompt, id)`
|
|
57
|
+
* instead of the case fixture. Returning a rejected promise / throwing marks
|
|
58
|
+
* that case as a generation error (failed).
|
|
59
|
+
*/
|
|
60
|
+
generate?: (prompt: string, caseId: string) => unknown | Promise<unknown>;
|
|
61
|
+
/** Default pass threshold for cases that don't set their own `minScore`. */
|
|
62
|
+
minScore?: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Run the eval over a set of cases. Offline (fixtures) unless `generate` is
|
|
66
|
+
* supplied. Never throws — generation failures become failed cases.
|
|
67
|
+
*/
|
|
68
|
+
export declare function runMetadataEval(cases: MetadataEvalCase[], options?: RunMetadataEvalOptions): Promise<MetadataEvalReport>;
|
|
69
|
+
//# sourceMappingURL=metadata-eval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-eval.d.ts","sourceRoot":"","sources":["../../src/lint/metadata-eval.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,+EAA+E;IAC/E,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID;;;GAGG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,gBAAgB,EAAE,EACzB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,kBAAkB,CAAC,CA+C7B"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
+
/**
|
|
3
|
+
* Metadata-generation eval harness.
|
|
4
|
+
*
|
|
5
|
+
* Measures how well a stack of metadata follows the platform's modelling
|
|
6
|
+
* conventions, using `scoreMetadata` (the linter-as-rubric) as the judge. Two
|
|
7
|
+
* modes, same rubric:
|
|
8
|
+
*
|
|
9
|
+
* - **Offline (default):** each case ships a golden fixture stack — the ideal
|
|
10
|
+
* output for its prompt. Scoring the fixtures is a deterministic regression
|
|
11
|
+
* guard: it proves the conventions + rubric stay self-consistent, runs in CI,
|
|
12
|
+
* and needs no API key.
|
|
13
|
+
*
|
|
14
|
+
* - **Live (opt-in):** pass `generate(prompt, caseId) => stack`. The harness
|
|
15
|
+
* scores whatever the generator produced for each prompt instead of the
|
|
16
|
+
* fixture. Wire `generate` to `AIService.generateObject<SolutionBlueprint>`
|
|
17
|
+
* (+ blueprint→metadata expansion) to benchmark a real model against the
|
|
18
|
+
* same bar. The seam is injected so this package keeps no LLM dependency.
|
|
19
|
+
*/
|
|
20
|
+
import { scoreMetadata } from './score.js';
|
|
21
|
+
const DEFAULT_MIN_SCORE = 75;
|
|
22
|
+
/**
|
|
23
|
+
* Run the eval over a set of cases. Offline (fixtures) unless `generate` is
|
|
24
|
+
* supplied. Never throws — generation failures become failed cases.
|
|
25
|
+
*/
|
|
26
|
+
export async function runMetadataEval(cases, options = {}) {
|
|
27
|
+
const defaultMin = options.minScore ?? DEFAULT_MIN_SCORE;
|
|
28
|
+
const live = typeof options.generate === 'function';
|
|
29
|
+
const results = [];
|
|
30
|
+
for (const c of cases) {
|
|
31
|
+
const minScore = c.minScore ?? defaultMin;
|
|
32
|
+
let stack = c.fixture;
|
|
33
|
+
let generationError;
|
|
34
|
+
let source = 'fixture';
|
|
35
|
+
if (live) {
|
|
36
|
+
source = 'generated';
|
|
37
|
+
try {
|
|
38
|
+
stack = await options.generate(c.prompt, c.id);
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
generationError = err?.message || String(err);
|
|
42
|
+
stack = {};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const score = scoreMetadata(stack);
|
|
46
|
+
results.push({
|
|
47
|
+
id: c.id,
|
|
48
|
+
prompt: c.prompt,
|
|
49
|
+
...(generationError ? { generationError } : {}),
|
|
50
|
+
score,
|
|
51
|
+
minScore,
|
|
52
|
+
passed: !generationError && score.score >= minScore && score.counts.errors === 0 && score.counts.schemaErrors === 0,
|
|
53
|
+
source,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const passed = results.filter((r) => r.passed).length;
|
|
57
|
+
const meanScore = results.length
|
|
58
|
+
? Math.round(results.reduce((sum, r) => sum + r.score.score, 0) / results.length)
|
|
59
|
+
: 0;
|
|
60
|
+
return {
|
|
61
|
+
results,
|
|
62
|
+
total: results.length,
|
|
63
|
+
passed,
|
|
64
|
+
failed: results.length - passed,
|
|
65
|
+
meanScore,
|
|
66
|
+
ok: passed === results.length,
|
|
67
|
+
mode: live ? 'live' : 'offline',
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=metadata-eval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-eval.js","sourceRoot":"","sources":["../../src/lint/metadata-eval.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,aAAa,EAAsB,MAAM,YAAY,CAAC;AAkD/D,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAyB,EACzB,UAAkC,EAAE;IAEpC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC;IACzD,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC;IACpD,MAAM,OAAO,GAA6B,EAAE,CAAC;IAE7C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC;QAC1C,IAAI,KAAK,GAAY,CAAC,CAAC,OAAO,CAAC;QAC/B,IAAI,eAAmC,CAAC;QACxC,IAAI,MAAM,GAA4B,SAAS,CAAC;QAEhD,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,GAAG,WAAW,CAAC;YACrB,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,OAAO,CAAC,QAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,eAAe,GAAG,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC9C,KAAK,GAAG,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,KAAK;YACL,QAAQ;YACR,MAAM,EAAE,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,KAAK,CAAC;YACnH,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACtD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM;QAC9B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACjF,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,OAAO;QACP,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,MAAM;QACN,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM;QAC/B,SAAS;QACT,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM;QAC7B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { LintIssue } from './data-model-rules.js';
|
|
2
|
+
/** Penalty weights per issue class. Schema errors are the most severe. */
|
|
3
|
+
export declare const SCORE_WEIGHTS: {
|
|
4
|
+
readonly schemaError: 12;
|
|
5
|
+
readonly error: 8;
|
|
6
|
+
readonly warning: 3;
|
|
7
|
+
readonly suggestion: 1;
|
|
8
|
+
};
|
|
9
|
+
export interface MetadataScore {
|
|
10
|
+
/** 0–100 quality score (higher is better). */
|
|
11
|
+
score: number;
|
|
12
|
+
/** True when the stack is schema-valid AND has zero lint errors. */
|
|
13
|
+
valid: boolean;
|
|
14
|
+
/** Letter grade derived from `score` (A ≥ 90, B ≥ 75, C ≥ 60, D ≥ 40, F otherwise). */
|
|
15
|
+
grade: 'A' | 'B' | 'C' | 'D' | 'F';
|
|
16
|
+
counts: {
|
|
17
|
+
schemaErrors: number;
|
|
18
|
+
errors: number;
|
|
19
|
+
warnings: number;
|
|
20
|
+
suggestions: number;
|
|
21
|
+
};
|
|
22
|
+
/** Schema parse error messages (empty when valid). */
|
|
23
|
+
schemaErrors: string[];
|
|
24
|
+
/** Lint issues (naming, labels, structure, data-model conventions). */
|
|
25
|
+
issues: LintIssue[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Score a stack definition (raw or normalized) for metadata quality.
|
|
29
|
+
* Pure & deterministic.
|
|
30
|
+
*/
|
|
31
|
+
export declare function scoreMetadata(stack: unknown): MetadataScore;
|
|
32
|
+
//# sourceMappingURL=score.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../src/lint/score.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,uBAAuB,CAAC;AAEjE,0EAA0E;AAC1E,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,KAAK,EAAE,OAAO,CAAC;IACf,uFAAuF;IACvF,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACnC,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,sDAAsD;IACtD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,uEAAuE;IACvE,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAcD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CA2C3D"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
+
/**
|
|
3
|
+
* Metadata quality scorer — the automated rubric for the metadata-generation
|
|
4
|
+
* eval (see `metadata-eval.ts`).
|
|
5
|
+
*
|
|
6
|
+
* The premise (chosen with the user): the LINTER is the rubric. A generated
|
|
7
|
+
* stack is "good" exactly when it (a) parses against the canonical spec schema
|
|
8
|
+
* and (b) is clean under the data-model lint rules. This is deterministic,
|
|
9
|
+
* needs no LLM/API key, and runs in CI — yet it directly measures the
|
|
10
|
+
* conventions we care about (master-detail, inlineEdit, roll-ups, selects,
|
|
11
|
+
* naming, labels).
|
|
12
|
+
*
|
|
13
|
+
* `scoreMetadata(stack)` returns a 0–100 score plus a breakdown so callers can
|
|
14
|
+
* show *why* a generation scored the way it did.
|
|
15
|
+
*/
|
|
16
|
+
import { ObjectStackDefinitionSchema, normalizeStackInput } from '@objectstack/spec';
|
|
17
|
+
import { lintConfig } from '../commands/lint.js';
|
|
18
|
+
/** Penalty weights per issue class. Schema errors are the most severe. */
|
|
19
|
+
export const SCORE_WEIGHTS = {
|
|
20
|
+
schemaError: 12,
|
|
21
|
+
error: 8,
|
|
22
|
+
warning: 3,
|
|
23
|
+
suggestion: 1,
|
|
24
|
+
};
|
|
25
|
+
function gradeFor(score) {
|
|
26
|
+
if (score >= 90)
|
|
27
|
+
return 'A';
|
|
28
|
+
if (score >= 75)
|
|
29
|
+
return 'B';
|
|
30
|
+
if (score >= 60)
|
|
31
|
+
return 'C';
|
|
32
|
+
if (score >= 40)
|
|
33
|
+
return 'D';
|
|
34
|
+
return 'F';
|
|
35
|
+
}
|
|
36
|
+
function bySeverity(issues, severity) {
|
|
37
|
+
return issues.filter((i) => i.severity === severity);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Score a stack definition (raw or normalized) for metadata quality.
|
|
41
|
+
* Pure & deterministic.
|
|
42
|
+
*/
|
|
43
|
+
export function scoreMetadata(stack) {
|
|
44
|
+
const normalized = normalizeStackInput((stack ?? {}));
|
|
45
|
+
// 1) Schema validity against the canonical spec.
|
|
46
|
+
const parsed = ObjectStackDefinitionSchema.safeParse(normalized);
|
|
47
|
+
const schemaErrors = parsed.success
|
|
48
|
+
? []
|
|
49
|
+
: parsed.error.issues.map((i) => `${i.path.join('.') || '(root)'}: ${i.message}`);
|
|
50
|
+
// 2) Lint (naming/labels/structure + data-model conventions).
|
|
51
|
+
let issues = [];
|
|
52
|
+
try {
|
|
53
|
+
issues = lintConfig(normalized);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// A linter crash shouldn't mask the schema verdict — treat as no lint data.
|
|
57
|
+
issues = [];
|
|
58
|
+
}
|
|
59
|
+
const errors = bySeverity(issues, 'error');
|
|
60
|
+
const warnings = bySeverity(issues, 'warning');
|
|
61
|
+
const suggestions = bySeverity(issues, 'suggestion');
|
|
62
|
+
const penalty = schemaErrors.length * SCORE_WEIGHTS.schemaError +
|
|
63
|
+
errors.length * SCORE_WEIGHTS.error +
|
|
64
|
+
warnings.length * SCORE_WEIGHTS.warning +
|
|
65
|
+
suggestions.length * SCORE_WEIGHTS.suggestion;
|
|
66
|
+
const score = Math.max(0, Math.min(100, 100 - penalty));
|
|
67
|
+
return {
|
|
68
|
+
score: Math.round(score),
|
|
69
|
+
valid: schemaErrors.length === 0 && errors.length === 0,
|
|
70
|
+
grade: gradeFor(score),
|
|
71
|
+
counts: {
|
|
72
|
+
schemaErrors: schemaErrors.length,
|
|
73
|
+
errors: errors.length,
|
|
74
|
+
warnings: warnings.length,
|
|
75
|
+
suggestions: suggestions.length,
|
|
76
|
+
},
|
|
77
|
+
schemaErrors,
|
|
78
|
+
issues,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=score.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"score.js","sourceRoot":"","sources":["../../src/lint/score.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n-coverage.d.ts","sourceRoot":"","sources":["../../src/utils/i18n-coverage.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,GAAG,EAAE,MAAM,CAAC;IACZ,0FAA0F;IAC1F,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC;IAC5F,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,4DAA4D;IAC5D,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,wBAAwB;IACxB,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"i18n-coverage.d.ts","sourceRoot":"","sources":["../../src/utils/i18n-coverage.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,GAAG,EAAE,MAAM,CAAC;IACZ,0FAA0F;IAC1F,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC;IAC5F,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,4DAA4D;IAC5D,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,wBAAwB;IACxB,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAyND;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,GAAE,eAAoB,GAAG,cAAc,CA8D3F"}
|
|
@@ -159,9 +159,7 @@ function walkMetadataFormField(field, type, parentPath, out) {
|
|
|
159
159
|
const name = typeof field.field === 'string' ? field.field : undefined;
|
|
160
160
|
const path = name ? (parentPath ? `${parentPath}.${name}` : name) : parentPath;
|
|
161
161
|
if (path) {
|
|
162
|
-
|
|
163
|
-
pushKey(out, ['metadataForms', type, 'fields', path, 'label'], 'metadataForm', `Metadata form ${type}.fields.${path} label`);
|
|
164
|
-
}
|
|
162
|
+
pushKey(out, ['metadataForms', type, 'fields', path, 'label'], 'metadataForm', `Metadata form ${type}.fields.${path} label`);
|
|
165
163
|
if (typeof field.helpText === 'string' && field.helpText.length > 0) {
|
|
166
164
|
pushKey(out, ['metadataForms', type, 'fields', path, 'helpText'], 'metadataForm', `Metadata form ${type}.fields.${path} helpText`);
|
|
167
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n-coverage.js","sourceRoot":"","sources":["../../src/utils/i18n-coverage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"i18n-coverage.js","sourceRoot":"","sources":["../../src/utils/i18n-coverage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n-extract.d.ts","sourceRoot":"","sources":["../../src/utils/i18n-extract.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAqB,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAMnF,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,MAAM,EACF,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,cAAc,GACd,KAAK,GACL,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,cAAc,GACd,qBAAqB,GACrB,mBAAmB,CAAC;IACxB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;CACvB;AAmBD,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,EAAE,CA+JnE;
|
|
1
|
+
{"version":3,"file":"i18n-extract.d.ts","sourceRoot":"","sources":["../../src/utils/i18n-extract.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAqB,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAMnF,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,MAAM,EACF,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,cAAc,GACd,KAAK,GACL,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,cAAc,GACd,qBAAqB,GACrB,mBAAmB,CAAC;IACxB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;CACvB;AAmBD,uEAAuE;AACvE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,EAAE,CA+JnE;AA0KD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,GAAE,cAAmB,GAAG,aAAa,CAkDzF;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yEAAyE;IACzE,IAAI,CAAC,EAAE,SAAS,GAAG,eAAe,GAAG,MAAM,CAAC;IAC5C,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,GACA,MAAM,CAwCR"}
|
|
@@ -224,9 +224,10 @@ function walkFormField(field, type, parentPath, out) {
|
|
|
224
224
|
const name = typeof field.field === 'string' ? field.field : undefined;
|
|
225
225
|
const path = name ? (parentPath ? `${parentPath}.${name}` : name) : parentPath;
|
|
226
226
|
if (path) {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
227
|
+
const label = typeof field.label === 'string' && field.label.length > 0
|
|
228
|
+
? field.label
|
|
229
|
+
: humanizeFieldPath(path);
|
|
230
|
+
pushEntry(out, ['metadataForms', type, 'fields', path, 'label'], label, 'metadataFormField', { metadataType: type });
|
|
230
231
|
if (typeof field.helpText === 'string' && field.helpText.length > 0) {
|
|
231
232
|
pushEntry(out, ['metadataForms', type, 'fields', path, 'helpText'], field.helpText, 'metadataFormField', { metadataType: type });
|
|
232
233
|
}
|
|
@@ -239,6 +240,14 @@ function walkFormField(field, type, parentPath, out) {
|
|
|
239
240
|
walkFormField(child, type, path, out);
|
|
240
241
|
}
|
|
241
242
|
}
|
|
243
|
+
/** Match the metadata form renderer's fallback label for fields without an explicit label. */
|
|
244
|
+
function humanizeFieldPath(path) {
|
|
245
|
+
const leaf = path.split('.').pop() ?? path;
|
|
246
|
+
return leaf
|
|
247
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
248
|
+
.replace(/[_-]+/g, ' ')
|
|
249
|
+
.replace(/\b\w/g, (c) => c.toUpperCase());
|
|
250
|
+
}
|
|
242
251
|
/**
|
|
243
252
|
* Section-name derivation mirroring `resolveMetadataFormLabels` so the
|
|
244
253
|
* extractor emits keys at the exact same paths the resolver looks them up.
|