openxiangda-devkit-core 2.0.0-alpha.106 → 2.0.0-alpha.108
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/application-services.d.ts +181 -1
- package/dist/application-services.d.ts.map +1 -1
- package/dist/application-services.js +33 -0
- package/dist/application-services.js.map +1 -1
- package/dist/application-ui-contract.d.ts +5 -0
- package/dist/application-ui-contract.d.ts.map +1 -0
- package/dist/application-ui-contract.js +149 -0
- package/dist/application-ui-contract.js.map +1 -0
- package/dist/command-registry.d.ts +2 -2
- package/dist/command-registry.js +1 -1
- package/dist/command-registry.js.map +1 -1
- package/dist/compiler/application-model.d.ts +60 -0
- package/dist/compiler/application-model.d.ts.map +1 -0
- package/dist/compiler/application-model.js +141 -0
- package/dist/compiler/application-model.js.map +1 -0
- package/dist/compiler/bundle.d.ts.map +1 -1
- package/dist/compiler/bundle.js +50 -12
- package/dist/compiler/bundle.js.map +1 -1
- package/dist/compiler/config.d.ts +27 -8
- package/dist/compiler/config.d.ts.map +1 -1
- package/dist/compiler/config.js +205 -61
- package/dist/compiler/config.js.map +1 -1
- package/dist/compiler/field-surface.js +1 -1
- package/dist/compiler/field-surface.js.map +1 -1
- package/dist/compiler/permission-review.d.ts +139 -0
- package/dist/compiler/permission-review.d.ts.map +1 -0
- package/dist/compiler/permission-review.js +131 -0
- package/dist/compiler/permission-review.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/optional-backend.d.ts +14 -0
- package/dist/optional-backend.d.ts.map +1 -0
- package/dist/optional-backend.js +145 -0
- package/dist/optional-backend.js.map +1 -0
- package/dist/workspace-loader.d.ts.map +1 -1
- package/dist/workspace-loader.js +16 -1
- package/dist/workspace-loader.js.map +1 -1
- package/package.json +3 -2
- package/templates/backend/.turbo/turbo-build.log +4 -0
- package/templates/backend/.turbo/turbo-check.log +4 -0
- package/templates/backend/.turbo/turbo-test.log +13 -0
- package/templates/backend/Dockerfile +20 -0
- package/templates/backend/node_modules/.bin/openxiangda +21 -0
- package/templates/backend/node_modules/.bin/tsc +21 -0
- package/templates/backend/node_modules/.bin/tsserver +21 -0
- package/templates/backend/node_modules/.bin/tsx +21 -0
- package/templates/backend/package.json +27 -0
- package/templates/backend/src/app.module.ts +23 -0
- package/templates/backend/src/main.ts +5 -0
- package/templates/backend/test/smoke.test.ts +17 -0
- package/templates/backend/tsconfig.json +9 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type Diagnostic } from 'openxiangda-contracts';
|
|
2
|
+
import type { AppDataFieldDeclaration, AppDataResourceDeclaration } from './config.js';
|
|
3
|
+
/** Storage and access facts; screen-specific choices belong to views. */
|
|
4
|
+
export type AppModelFieldDeclaration = Omit<AppDataFieldDeclaration, 'widget' | 'section' | 'list' | 'filter' | 'searchable' | 'sortable'>;
|
|
5
|
+
export interface AppDataModelDeclaration {
|
|
6
|
+
code: string;
|
|
7
|
+
name: string;
|
|
8
|
+
fields: readonly AppModelFieldDeclaration[];
|
|
9
|
+
mutationOwner?: AppDataResourceDeclaration['mutationOwner'];
|
|
10
|
+
invariants?: AppDataResourceDeclaration['invariants'];
|
|
11
|
+
dataPolicyCode?: string | null;
|
|
12
|
+
}
|
|
13
|
+
export interface AppResourceFormDeclaration {
|
|
14
|
+
model: string;
|
|
15
|
+
fields?: readonly string[];
|
|
16
|
+
layout?: 'flat' | 'sections';
|
|
17
|
+
}
|
|
18
|
+
export interface AppResourceListDeclaration {
|
|
19
|
+
model: string;
|
|
20
|
+
fields?: readonly string[];
|
|
21
|
+
filterFields?: readonly string[];
|
|
22
|
+
searchableFields?: readonly string[];
|
|
23
|
+
defaultPageSize?: number;
|
|
24
|
+
defaultSort?: {
|
|
25
|
+
field: string;
|
|
26
|
+
order?: 'asc' | 'desc';
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface AppCrudViewDeclaration {
|
|
30
|
+
model: string;
|
|
31
|
+
/** Omit for the existing default page; named views need a stable code and name. */
|
|
32
|
+
code?: string;
|
|
33
|
+
name?: string;
|
|
34
|
+
/** Shared form/detail grouping; field selection and order remain view-owned. */
|
|
35
|
+
sections?: readonly {
|
|
36
|
+
title: string;
|
|
37
|
+
fields: readonly string[];
|
|
38
|
+
}[];
|
|
39
|
+
list?: AppResourceListDeclaration;
|
|
40
|
+
form?: AppResourceFormDeclaration;
|
|
41
|
+
detail?: AppResourceFormDeclaration;
|
|
42
|
+
generated?: AppDataResourceDeclaration['generated'];
|
|
43
|
+
mobile?: AppDataResourceDeclaration['mobile'];
|
|
44
|
+
}
|
|
45
|
+
export interface AppModuleDeclaration {
|
|
46
|
+
code: string;
|
|
47
|
+
models: readonly AppDataModelDeclaration[];
|
|
48
|
+
/** Only selected models receive standard pages. Navigation remains explicit. */
|
|
49
|
+
crud?: readonly AppCrudViewDeclaration[];
|
|
50
|
+
}
|
|
51
|
+
export declare function defineDataModel<const Model extends AppDataModelDeclaration>(model: Model): Model;
|
|
52
|
+
export declare function defineResourceForm(model: AppDataModelDeclaration, form?: Omit<AppResourceFormDeclaration, 'model'>): AppResourceFormDeclaration;
|
|
53
|
+
export declare function defineResourceList(model: AppDataModelDeclaration, list?: Omit<AppResourceListDeclaration, 'model'>): AppResourceListDeclaration;
|
|
54
|
+
export declare function defineApplicationModule<const Module extends AppModuleDeclaration>(module: Module): Module;
|
|
55
|
+
/** One authoring projection into the platform's existing execution contract. */
|
|
56
|
+
export declare function materializeApplicationModules(modules: readonly AppModuleDeclaration[]): {
|
|
57
|
+
resources: AppDataResourceDeclaration[];
|
|
58
|
+
diagnostics: Diagnostic[];
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=application-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-model.d.ts","sourceRoot":"","sources":["../../src/compiler/application-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAErB,yEAAyE;AACzE,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,uBAAuB,EACvB,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,CACrE,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC5C,aAAa,CAAC,EAAE,0BAA0B,CAAC,eAAe,CAAC,CAAC;IAC5D,UAAU,CAAC,EAAE,0BAA0B,CAAC,YAAY,CAAC,CAAC;IACtD,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC;CACzD;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,QAAQ,CAAC,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACnE,IAAI,CAAC,EAAE,0BAA0B,CAAC;IAClC,IAAI,CAAC,EAAE,0BAA0B,CAAC;IAClC,MAAM,CAAC,EAAE,0BAA0B,CAAC;IACpC,SAAS,CAAC,EAAE,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,0BAA0B,CAAC,QAAQ,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC3C,gFAAgF;IAChF,IAAI,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAC1C;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,KAAK,SAAS,uBAAuB,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAEhG;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,EAC9B,IAAI,GAAE,IAAI,CAAC,0BAA0B,EAAE,OAAO,CAAM,GACnD,0BAA0B,CAE5B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,EAC9B,IAAI,GAAE,IAAI,CAAC,0BAA0B,EAAE,OAAO,CAAM,GACnD,0BAA0B,CAE5B;AAED,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,MAAM,SAAS,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzG;AAED,gFAAgF;AAChF,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE;;;EA2HrF"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { SCHEMA_VERSIONS } from 'openxiangda-contracts';
|
|
2
|
+
export function defineDataModel(model) {
|
|
3
|
+
return Object.freeze(model);
|
|
4
|
+
}
|
|
5
|
+
export function defineResourceForm(model, form = {}) {
|
|
6
|
+
return Object.freeze({ ...form, model: model.code });
|
|
7
|
+
}
|
|
8
|
+
export function defineResourceList(model, list = {}) {
|
|
9
|
+
return Object.freeze({ ...list, model: model.code });
|
|
10
|
+
}
|
|
11
|
+
export function defineApplicationModule(module) {
|
|
12
|
+
return Object.freeze(module);
|
|
13
|
+
}
|
|
14
|
+
/** One authoring projection into the platform's existing execution contract. */
|
|
15
|
+
export function materializeApplicationModules(modules) {
|
|
16
|
+
const diagnostics = [];
|
|
17
|
+
const resources = [];
|
|
18
|
+
const moduleCodes = new Set();
|
|
19
|
+
const issue = (code, message, path) => {
|
|
20
|
+
diagnostics.push({ schemaVersion: SCHEMA_VERSIONS.diagnostic, code, severity: 'error', message, path, retryable: false });
|
|
21
|
+
};
|
|
22
|
+
modules.forEach((module, moduleIndex) => {
|
|
23
|
+
const path = `modules[${moduleIndex}]`;
|
|
24
|
+
if (!module.code || moduleCodes.has(module.code)) {
|
|
25
|
+
issue('APP_MODULE_CODE_INVALID', '模块需要唯一的 code', `${path}.code`);
|
|
26
|
+
}
|
|
27
|
+
moduleCodes.add(module.code);
|
|
28
|
+
const models = new Map(module.models.map(model => [model.code, model]));
|
|
29
|
+
const views = new Map();
|
|
30
|
+
(module.crud || []).forEach((view, viewIndex) => {
|
|
31
|
+
const viewPath = `${path}.crud[${viewIndex}]`;
|
|
32
|
+
const model = models.get(view.model);
|
|
33
|
+
if (!model) {
|
|
34
|
+
issue('APP_CRUD_MODEL_INVALID', '标准 CRUD 必须引用本模块的数据模型', `${viewPath}.model`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const siblings = views.get(view.model) || [];
|
|
38
|
+
if (siblings.some(item => item.code === view.code) ||
|
|
39
|
+
(view.code !== undefined && (!/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/.test(view.code) || view.code.length > 64 || !view.name?.trim() || view.name.length > 255)) ||
|
|
40
|
+
siblings.filter(item => item.code !== undefined).length >= 20) {
|
|
41
|
+
issue('APP_VIEW_CODE_INVALID', '视图需要唯一的 code 和名称,每个模型最多 20 个命名视图', `${viewPath}.code`);
|
|
42
|
+
}
|
|
43
|
+
views.set(view.model, [...siblings, view]);
|
|
44
|
+
const fields = new Map(model.fields.map(field => [field.code, field]));
|
|
45
|
+
const validateSelection = (selection, pointer) => {
|
|
46
|
+
if (!selection)
|
|
47
|
+
return;
|
|
48
|
+
const seen = new Set();
|
|
49
|
+
selection.forEach((code, index) => {
|
|
50
|
+
const field = fields.get(code);
|
|
51
|
+
if (!field || seen.has(code) || (field.hidden ?? field.system) === true) {
|
|
52
|
+
issue('APP_VIEW_FIELD_INVALID', '视图字段必须存在、不重复且不是内部隐藏字段', `${pointer}[${index}]`);
|
|
53
|
+
}
|
|
54
|
+
seen.add(code);
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
for (const kind of ['list', 'form', 'detail']) {
|
|
58
|
+
const definition = view[kind];
|
|
59
|
+
if (definition && definition.model !== model.code) {
|
|
60
|
+
issue('APP_VIEW_MODEL_MISMATCH', '列表/表单必须绑定当前 CRUD 的数据模型', `${viewPath}.${kind}.model`);
|
|
61
|
+
}
|
|
62
|
+
validateSelection(definition?.fields, `${viewPath}.${kind}.fields`);
|
|
63
|
+
}
|
|
64
|
+
validateSelection(view.list?.filterFields, `${viewPath}.list.filterFields`);
|
|
65
|
+
validateSelection(view.list?.searchableFields, `${viewPath}.list.searchableFields`);
|
|
66
|
+
if (view.list?.defaultSort)
|
|
67
|
+
validateSelection([view.list.defaultSort.field], `${viewPath}.list.defaultSort.field`);
|
|
68
|
+
validateSelection(view.sections?.flatMap(section => [...section.fields]), `${viewPath}.sections.fields`);
|
|
69
|
+
if (view.sections?.some(section => !section.title.trim() || section.title.length > 255)) {
|
|
70
|
+
issue('APP_VIEW_SECTION_INVALID', '分组标题不能为空或超过 255 个字符', `${viewPath}.sections`);
|
|
71
|
+
}
|
|
72
|
+
const create = view.generated?.create ?? (!model.mutationOwner || model.mutationOwner === 'native');
|
|
73
|
+
if (view.code !== undefined && create && view.form?.fields) {
|
|
74
|
+
const missing = model.fields.filter(field => field.required && !field.system && field.type !== 'serial-number' && field.access?.create !== false && !view.form.fields.includes(field.code));
|
|
75
|
+
if (missing.length)
|
|
76
|
+
issue('APP_VIEW_CREATE_REQUIRED_FIELD_MISSING', `新建视图缺少必填字段:${missing.map(field => field.code).join('、')};请补齐字段或关闭 create`, `${viewPath}.form.fields`);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
module.models.forEach(model => {
|
|
80
|
+
const selected = views.get(model.code) || [];
|
|
81
|
+
const view = selected.find(item => item.code === undefined);
|
|
82
|
+
const publicFields = model.fields.filter(field => (field.hidden ?? field.system) !== true);
|
|
83
|
+
const listFields = view?.list?.fields || publicFields.slice(0, 8).map(field => field.code);
|
|
84
|
+
const formFields = view?.form?.fields || publicFields.filter(field => !field.system).map(field => field.code);
|
|
85
|
+
const detailFields = view?.detail?.fields || publicFields.map(field => field.code);
|
|
86
|
+
const native = !model.mutationOwner || model.mutationOwner === 'native';
|
|
87
|
+
const sections = new Map(view?.sections?.flatMap(section => section.fields.map(code => [code, section.title.trim()])));
|
|
88
|
+
resources.push({
|
|
89
|
+
code: model.code,
|
|
90
|
+
name: model.name,
|
|
91
|
+
...(selected.some(item => item.code !== undefined) ? { views: selected.filter(item => item.code !== undefined).map(item => {
|
|
92
|
+
const groups = item.sections?.map(section => ({ title: section.title.trim(), fields: [...section.fields] }));
|
|
93
|
+
return {
|
|
94
|
+
code: item.code, name: item.name?.trim() || item.code,
|
|
95
|
+
generated: { list: true, detail: true, create: native, update: native, delete: native, ...item.generated },
|
|
96
|
+
list: { fieldOrder: [...(item.list?.fields || publicFields.slice(0, 8).map(field => field.code))],
|
|
97
|
+
defaultPageSize: item.list?.defaultPageSize || 20,
|
|
98
|
+
searchableFields: [...(item.list?.searchableFields || [])], filterFields: [...(item.list?.filterFields || [])],
|
|
99
|
+
...(item.list?.defaultSort ? { defaultSort: item.list.defaultSort } : {}) },
|
|
100
|
+
form: { layout: item.form?.layout || (groups?.length ? 'sections' : 'flat'),
|
|
101
|
+
fieldOrder: [...(item.form?.fields || publicFields.filter(field => !field.system).map(field => field.code))] },
|
|
102
|
+
detail: { layout: item.detail?.layout || (groups?.length ? 'sections' : 'flat'),
|
|
103
|
+
fieldOrder: [...(item.detail?.fields || publicFields.map(field => field.code))] },
|
|
104
|
+
mobile: { enabled: item.mobile?.enabled ?? true }, ...(groups?.length ? { sections: groups } : {}),
|
|
105
|
+
};
|
|
106
|
+
}) } : {}),
|
|
107
|
+
...(model.mutationOwner ? { mutationOwner: model.mutationOwner } : {}),
|
|
108
|
+
...(model.invariants ? { invariants: model.invariants } : {}),
|
|
109
|
+
...(model.dataPolicyCode ? { dataPolicyCode: model.dataPolicyCode } : {}),
|
|
110
|
+
generated: {
|
|
111
|
+
list: Boolean(view), detail: Boolean(view),
|
|
112
|
+
create: Boolean(view) && native, update: Boolean(view) && native,
|
|
113
|
+
delete: Boolean(view) && native, ...view?.generated,
|
|
114
|
+
},
|
|
115
|
+
fields: model.fields.map(field => {
|
|
116
|
+
const section = sections.get(field.code);
|
|
117
|
+
return {
|
|
118
|
+
...field,
|
|
119
|
+
...(section ? { section } : {}),
|
|
120
|
+
// Display filters never silently turn every column into an index.
|
|
121
|
+
indexed: field.indexed ?? false,
|
|
122
|
+
list: Boolean(view) && listFields.includes(field.code),
|
|
123
|
+
filter: selected.some(item => item.list?.filterFields?.includes(field.code)),
|
|
124
|
+
searchable: selected.some(item => item.list?.searchableFields?.includes(field.code)),
|
|
125
|
+
sortable: selected.some(item => item.list?.defaultSort?.field === field.code),
|
|
126
|
+
};
|
|
127
|
+
}),
|
|
128
|
+
list: {
|
|
129
|
+
fields: view ? [...listFields] : [],
|
|
130
|
+
...(view?.list?.defaultPageSize ? { defaultPageSize: view.list.defaultPageSize } : {}),
|
|
131
|
+
...(view?.list?.defaultSort ? { defaultSort: view.list.defaultSort } : {}),
|
|
132
|
+
},
|
|
133
|
+
form: { layout: view?.form?.layout || (sections.size ? 'sections' : 'flat'), fields: [...formFields] },
|
|
134
|
+
detail: { layout: view?.detail?.layout || (sections.size ? 'sections' : 'flat'), fields: [...detailFields] },
|
|
135
|
+
mobile: view?.mobile || { enabled: Boolean(view) },
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
return { resources, diagnostics };
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=application-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application-model.js","sourceRoot":"","sources":["../../src/compiler/application-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/compiler/bundle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/compiler/bundle.ts"],"names":[],"mappings":"AAEA,OAAO,EAiBL,KAAK,WAAW,EAWhB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAMtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAoBrB,eAAO,MAAM,oBAAoB,gCAAsC,CAAC;AACxE,eAAO,MAAM,sBAAsB,kCAAiC,CAAC;AACrE,eAAO,MAAM,yBAAyB,YACC,CAAC;AAExC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;IACpD,SAAS,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,GAAG;QAClD,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACT,KAAK,EAAE,mBAAmB,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,mDAAmD,CAAC;KAChE,CAAC;CACH;AA8CD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,oBAAoB,EAC5B,gBAAgB,SAA4B,GAC3C,0BAA0B,CAuD5B;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,GAC3B,qBAAqB,CAsevB;AA8DD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,oBAAoB,EAC5B,YAAY,CAAC,EAAE,MAAM,EACrB,gBAAgB,SAA4B,GAC3C,gBAAgB,CAQlB;AA4dD,eAAO,MAAM,oCAAoC;;;;EAIN,CAAC;AA+tB5C,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,mBAAgC,UAqOzC;AA6LD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,UAEvD"}
|
package/dist/compiler/bundle.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { projectDataResourceView } from 'openxiangda-contracts';
|
|
1
2
|
import { createHash } from 'node:crypto';
|
|
2
3
|
import { canonicalJson, applicationEventHandlerPathV2, DATA_EVENT_TYPES_V2, nativePlatformCapabilityCatalog, OPENXIANGDA_COMPILER_CONTRACT_VERSION, SCHEMA_VERSIONS, WORKFLOW_EVENT_TYPES_V2, sha256Digest, } from 'openxiangda-contracts';
|
|
3
4
|
import { AppConfigValidationError, } from './config.js';
|
|
@@ -306,6 +307,19 @@ export function normalizeConfiguration(config) {
|
|
|
306
307
|
},
|
|
307
308
|
data: {
|
|
308
309
|
resources: sorted((config.data?.resources || []).map(normalizeDataResource), item => item.code),
|
|
310
|
+
...((config.data?.resources || []).some(resource => resource.detailRouteCode)
|
|
311
|
+
? {
|
|
312
|
+
resourceDetailRoutes: sorted((config.data?.resources || []).flatMap(resource => resource.detailRouteCode
|
|
313
|
+
? [
|
|
314
|
+
{
|
|
315
|
+
resourceCode: resource.code,
|
|
316
|
+
desktop: resource.detailRouteCode.desktop,
|
|
317
|
+
mobile: resource.detailRouteCode.mobile,
|
|
318
|
+
},
|
|
319
|
+
]
|
|
320
|
+
: []), item => item.resourceCode),
|
|
321
|
+
}
|
|
322
|
+
: {}),
|
|
309
323
|
},
|
|
310
324
|
events: {
|
|
311
325
|
schemas: sorted((config.events?.schemas || []).map(schema => ({
|
|
@@ -616,7 +630,7 @@ function compileContractBundleFromNormalized(config, configDigest, generatorVers
|
|
|
616
630
|
appCode: config.app.code,
|
|
617
631
|
configDigest,
|
|
618
632
|
perspectives: normalizedConfiguration.perspectives,
|
|
619
|
-
resources: compileResources(
|
|
633
|
+
resources: compileResources(normalizedConfiguration),
|
|
620
634
|
capabilities,
|
|
621
635
|
operations: compileOperations(config),
|
|
622
636
|
eventConsumers,
|
|
@@ -824,8 +838,8 @@ function compileWorkflowLaunchContract(config, launch) {
|
|
|
824
838
|
},
|
|
825
839
|
};
|
|
826
840
|
}
|
|
827
|
-
function generatedAdminResourcePath(resourceCode, operation) {
|
|
828
|
-
const base = `/admin/resources/${resourceCode}`;
|
|
841
|
+
function generatedAdminResourcePath(resourceCode, operation, viewCode) {
|
|
842
|
+
const base = `/admin/resources/${resourceCode}${viewCode ? `/views/${viewCode}` : ""}`;
|
|
829
843
|
if (operation === 'list')
|
|
830
844
|
return base;
|
|
831
845
|
if (operation === 'create')
|
|
@@ -836,13 +850,18 @@ function generatedAdminResourcePath(resourceCode, operation) {
|
|
|
836
850
|
}
|
|
837
851
|
function compileAdminPages(config) {
|
|
838
852
|
const pages = [];
|
|
839
|
-
for (const
|
|
853
|
+
for (const selection of sorted(config.data?.resources || [], item => item.code).flatMap(resource => [
|
|
854
|
+
{ resource, viewCode: undefined },
|
|
855
|
+
...(resource.surface?.views || []).map(view => ({ viewCode: view.code,
|
|
856
|
+
resource: { ...resource, name: view.name, surface: projectDataResourceView(resource.surface, view.code) } })),
|
|
857
|
+
])) {
|
|
858
|
+
const { resource, viewCode } = selection;
|
|
840
859
|
const generated = generatedResourceOperations(resource);
|
|
841
860
|
const candidates = [
|
|
842
861
|
{
|
|
843
862
|
operation: 'list',
|
|
844
863
|
kind: 'resource-list',
|
|
845
|
-
path: generatedAdminResourcePath(resource.code, 'list'),
|
|
864
|
+
path: generatedAdminResourcePath(resource.code, 'list', viewCode),
|
|
846
865
|
label: resource.name,
|
|
847
866
|
capability: resource.capabilities.read,
|
|
848
867
|
navigationEligible: true,
|
|
@@ -850,7 +869,7 @@ function compileAdminPages(config) {
|
|
|
850
869
|
{
|
|
851
870
|
operation: 'detail',
|
|
852
871
|
kind: 'resource-detail',
|
|
853
|
-
path: generatedAdminResourcePath(resource.code, 'detail'),
|
|
872
|
+
path: generatedAdminResourcePath(resource.code, 'detail', viewCode),
|
|
854
873
|
label: `${resource.name}详情`,
|
|
855
874
|
capability: resource.capabilities.read,
|
|
856
875
|
navigationEligible: false,
|
|
@@ -858,7 +877,7 @@ function compileAdminPages(config) {
|
|
|
858
877
|
{
|
|
859
878
|
operation: 'create',
|
|
860
879
|
kind: 'resource-create',
|
|
861
|
-
path: generatedAdminResourcePath(resource.code, 'create'),
|
|
880
|
+
path: generatedAdminResourcePath(resource.code, 'create', viewCode),
|
|
862
881
|
label: `新增${resource.name}`,
|
|
863
882
|
capability: resource.capabilities.create,
|
|
864
883
|
navigationEligible: false,
|
|
@@ -866,7 +885,7 @@ function compileAdminPages(config) {
|
|
|
866
885
|
{
|
|
867
886
|
operation: 'update',
|
|
868
887
|
kind: 'resource-update',
|
|
869
|
-
path: generatedAdminResourcePath(resource.code, 'update'),
|
|
888
|
+
path: generatedAdminResourcePath(resource.code, 'update', viewCode),
|
|
870
889
|
label: `编辑${resource.name}`,
|
|
871
890
|
capability: resource.capabilities.update,
|
|
872
891
|
navigationEligible: false,
|
|
@@ -876,13 +895,14 @@ function compileAdminPages(config) {
|
|
|
876
895
|
if (!generated[candidate.operation])
|
|
877
896
|
continue;
|
|
878
897
|
pages.push({
|
|
879
|
-
code: `resource:${resource.code}:${candidate.operation}`,
|
|
898
|
+
code: `resource:${resource.code}${viewCode ? `:view:${viewCode}` : ""}:${candidate.operation}`,
|
|
880
899
|
kind: candidate.kind,
|
|
881
900
|
path: candidate.path,
|
|
882
901
|
label: candidate.label,
|
|
883
902
|
navigationEligible: candidate.navigationEligible,
|
|
884
903
|
capability: candidate.capability,
|
|
885
904
|
resourceCode: resource.code,
|
|
905
|
+
...(viewCode ? { viewCode } : {}),
|
|
886
906
|
});
|
|
887
907
|
}
|
|
888
908
|
}
|
|
@@ -1032,7 +1052,7 @@ function validManifestStaticPath(path) {
|
|
|
1032
1052
|
}
|
|
1033
1053
|
function pageCodeForReference(reference) {
|
|
1034
1054
|
if (reference.kind === 'resource')
|
|
1035
|
-
return `resource:${reference.resourceCode}:list`;
|
|
1055
|
+
return `resource:${reference.resourceCode}${reference.viewCode ? `:view:${reference.viewCode}` : ""}:list`;
|
|
1036
1056
|
return `operation:${reference.routeCode}`;
|
|
1037
1057
|
}
|
|
1038
1058
|
function compileAdminNavigation(config) {
|
|
@@ -1112,8 +1132,12 @@ function compileCapabilities(configuration) {
|
|
|
1112
1132
|
return [...capabilities.values()].sort((left, right) => compare(left.code, right.code));
|
|
1113
1133
|
}
|
|
1114
1134
|
function compileResources(config) {
|
|
1115
|
-
|
|
1116
|
-
|
|
1135
|
+
const detailRouteByResourceCode = new Map((config.data.resourceDetailRoutes || []).map(declaration => [
|
|
1136
|
+
declaration.resourceCode,
|
|
1137
|
+
declaration,
|
|
1138
|
+
]));
|
|
1139
|
+
return sorted(config.data.resources.map(resource => {
|
|
1140
|
+
const detailRouteCode = detailRouteByResourceCode.get(resource.code);
|
|
1117
1141
|
return {
|
|
1118
1142
|
code: resource.code,
|
|
1119
1143
|
// The platform only receives immutable artifact bytes. Bind the
|
|
@@ -1124,6 +1148,14 @@ function compileResources(config) {
|
|
|
1124
1148
|
code: field.code,
|
|
1125
1149
|
type: field.type,
|
|
1126
1150
|
})), field => field.code),
|
|
1151
|
+
...(detailRouteCode
|
|
1152
|
+
? {
|
|
1153
|
+
detailRouteCode: {
|
|
1154
|
+
desktop: detailRouteCode.desktop,
|
|
1155
|
+
mobile: detailRouteCode.mobile,
|
|
1156
|
+
},
|
|
1157
|
+
}
|
|
1158
|
+
: {}),
|
|
1127
1159
|
};
|
|
1128
1160
|
}), item => item.code);
|
|
1129
1161
|
}
|
|
@@ -1475,6 +1507,9 @@ export function renderGeneratedContracts(config, contract = compileContractBundl
|
|
|
1475
1507
|
.map(item => ` ${JSON.stringify(item.code)}: {\n` +
|
|
1476
1508
|
` code: ${JSON.stringify(item.code)},\n` +
|
|
1477
1509
|
` name: ${JSON.stringify(item.name)},\n` +
|
|
1510
|
+
(item.detailRouteCode
|
|
1511
|
+
? ` detailRouteCode: ${JSON.stringify(item.detailRouteCode)},\n`
|
|
1512
|
+
: '') +
|
|
1478
1513
|
` capabilities: ${JSON.stringify(item.capabilities, null, 2)
|
|
1479
1514
|
.split('\n')
|
|
1480
1515
|
.map((line, index) => (index === 0 ? line : ` ${line}`))
|
|
@@ -1664,6 +1699,7 @@ function normalizeResourceSurface(surface) {
|
|
|
1664
1699
|
? { requiredHint: field.requiredHint }
|
|
1665
1700
|
: {}),
|
|
1666
1701
|
...(field.system !== undefined ? { system: field.system } : {}),
|
|
1702
|
+
...(field.hidden !== undefined ? { hidden: field.hidden } : {}),
|
|
1667
1703
|
readCapabilities: uniqueSorted(field.readCapabilities),
|
|
1668
1704
|
createCapabilities: uniqueSorted(field.createCapabilities),
|
|
1669
1705
|
updateCapabilities: uniqueSorted(field.updateCapabilities),
|
|
@@ -1695,6 +1731,7 @@ function normalizeResourceSurface(surface) {
|
|
|
1695
1731
|
},
|
|
1696
1732
|
]));
|
|
1697
1733
|
return {
|
|
1734
|
+
...(surface.views?.length ? { views: sorted(surface.views, view => view.code) } : {}),
|
|
1698
1735
|
...(surface.mutationOwner !== undefined
|
|
1699
1736
|
? { mutationOwner: surface.mutationOwner }
|
|
1700
1737
|
: {}),
|
|
@@ -1705,6 +1742,7 @@ function normalizeResourceSurface(surface) {
|
|
|
1705
1742
|
...(surface.list
|
|
1706
1743
|
? {
|
|
1707
1744
|
list: {
|
|
1745
|
+
...(surface.list.fieldOrder ? { fieldOrder: [...surface.list.fieldOrder] } : {}),
|
|
1708
1746
|
...(surface.list.defaultPageSize !== undefined
|
|
1709
1747
|
? { defaultPageSize: surface.list.defaultPageSize }
|
|
1710
1748
|
: {}),
|