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.
Files changed (53) hide show
  1. package/dist/application-services.d.ts +181 -1
  2. package/dist/application-services.d.ts.map +1 -1
  3. package/dist/application-services.js +33 -0
  4. package/dist/application-services.js.map +1 -1
  5. package/dist/application-ui-contract.d.ts +5 -0
  6. package/dist/application-ui-contract.d.ts.map +1 -0
  7. package/dist/application-ui-contract.js +149 -0
  8. package/dist/application-ui-contract.js.map +1 -0
  9. package/dist/command-registry.d.ts +2 -2
  10. package/dist/command-registry.js +1 -1
  11. package/dist/command-registry.js.map +1 -1
  12. package/dist/compiler/application-model.d.ts +60 -0
  13. package/dist/compiler/application-model.d.ts.map +1 -0
  14. package/dist/compiler/application-model.js +141 -0
  15. package/dist/compiler/application-model.js.map +1 -0
  16. package/dist/compiler/bundle.d.ts.map +1 -1
  17. package/dist/compiler/bundle.js +50 -12
  18. package/dist/compiler/bundle.js.map +1 -1
  19. package/dist/compiler/config.d.ts +27 -8
  20. package/dist/compiler/config.d.ts.map +1 -1
  21. package/dist/compiler/config.js +205 -61
  22. package/dist/compiler/config.js.map +1 -1
  23. package/dist/compiler/field-surface.js +1 -1
  24. package/dist/compiler/field-surface.js.map +1 -1
  25. package/dist/compiler/permission-review.d.ts +139 -0
  26. package/dist/compiler/permission-review.d.ts.map +1 -0
  27. package/dist/compiler/permission-review.js +131 -0
  28. package/dist/compiler/permission-review.js.map +1 -0
  29. package/dist/index.d.ts +4 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +4 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/optional-backend.d.ts +14 -0
  34. package/dist/optional-backend.d.ts.map +1 -0
  35. package/dist/optional-backend.js +145 -0
  36. package/dist/optional-backend.js.map +1 -0
  37. package/dist/workspace-loader.d.ts.map +1 -1
  38. package/dist/workspace-loader.js +16 -1
  39. package/dist/workspace-loader.js.map +1 -1
  40. package/package.json +3 -2
  41. package/templates/backend/.turbo/turbo-build.log +4 -0
  42. package/templates/backend/.turbo/turbo-check.log +4 -0
  43. package/templates/backend/.turbo/turbo-test.log +13 -0
  44. package/templates/backend/Dockerfile +20 -0
  45. package/templates/backend/node_modules/.bin/openxiangda +21 -0
  46. package/templates/backend/node_modules/.bin/tsc +21 -0
  47. package/templates/backend/node_modules/.bin/tsserver +21 -0
  48. package/templates/backend/node_modules/.bin/tsx +21 -0
  49. package/templates/backend/package.json +27 -0
  50. package/templates/backend/src/app.module.ts +23 -0
  51. package/templates/backend/src/main.ts +5 -0
  52. package/templates/backend/test/smoke.test.ts +17 -0
  53. 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":"AACA,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,CAkdvB;AA8DD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,oBAAoB,EAC5B,YAAY,CAAC,EAAE,MAAM,EACrB,gBAAgB,SAA4B,GAC3C,gBAAgB,CAQlB;AAqdD,eAAO,MAAM,oCAAoC;;;;EAIN,CAAC;AAitB5C,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,mBAAgC,UAkOzC;AA0LD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,UAEvD"}
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"}
@@ -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(config),
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 resource of sorted(config.data?.resources || [], item => item.code)) {
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
- return sorted((config.data?.resources || []).map(sourceResource => {
1116
- const resource = normalizeDataResource(sourceResource);
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
  : {}),