@loom-framework/core 0.1.0-alpha.100 → 0.1.0-alpha.101
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/backend/routes/data.d.ts.map +1 -1
- package/dist/backend/routes/data.js +19 -3
- package/dist/backend/routes/data.js.map +1 -1
- package/dist/cli/commands/generate-dashboard.d.ts.map +1 -1
- package/dist/cli/commands/generate-dashboard.js +41 -16
- package/dist/cli/commands/generate-dashboard.js.map +1 -1
- package/dist/cli/commands/generate-page.d.ts.map +1 -1
- package/dist/cli/commands/generate-page.js +56 -5
- package/dist/cli/commands/generate-page.js.map +1 -1
- package/dist/cli/helpers/app-tsx-wiring.d.ts +2 -0
- package/dist/cli/helpers/app-tsx-wiring.d.ts.map +1 -1
- package/dist/cli/helpers/app-tsx-wiring.js +22 -3
- package/dist/cli/helpers/app-tsx-wiring.js.map +1 -1
- package/dist/cli/helpers/column-template.d.ts +3 -3
- package/dist/cli/helpers/column-template.d.ts.map +1 -1
- package/dist/cli/helpers/column-template.js +8 -6
- package/dist/cli/helpers/column-template.js.map +1 -1
- package/dist/cli/helpers/field-template.d.ts.map +1 -1
- package/dist/cli/helpers/field-template.js +19 -17
- package/dist/cli/helpers/field-template.js.map +1 -1
- package/dist/cli/templates/frontend-entry.d.ts.map +1 -1
- package/dist/cli/templates/frontend-entry.js +22 -12
- package/dist/cli/templates/frontend-entry.js.map +1 -1
- package/dist/cli/templates/loom-config.js +6 -6
- package/dist/cli/templates/loom-config.js.map +1 -1
- package/dist/config.d.ts +54 -45
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -5
- package/dist/config.js.map +1 -1
- package/dist/dashboard-config.d.ts +10 -10
- package/dist/dashboard-config.d.ts.map +1 -1
- package/dist/dashboard-config.js +3 -2
- package/dist/dashboard-config.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/types/ai.d.ts +2 -1
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/config.d.ts +3 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/dashboard.d.ts +5 -4
- package/dist/types/dashboard.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/locale.d.ts +21 -0
- package/dist/types/locale.d.ts.map +1 -0
- package/dist/types/locale.js +36 -0
- package/dist/types/locale.js.map +1 -0
- package/dist/types/model.d.ts +5 -2
- package/dist/types/model.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/types/ai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/types/ai.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/types/ai.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iGAAiG;IACjG,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC;IAC/F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;CACvE"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import type { ModelSchema } from './model.js';
|
|
5
5
|
import type { AIConfig, AIButtonConfig } from './ai.js';
|
|
6
6
|
import type { DashboardConfig } from './dashboard.js';
|
|
7
|
+
import type { LocaleString } from './locale.js';
|
|
7
8
|
export interface ServerConfig {
|
|
8
9
|
port?: number;
|
|
9
10
|
host?: string;
|
|
@@ -35,7 +36,7 @@ export interface UIConfig {
|
|
|
35
36
|
}
|
|
36
37
|
export interface RelationConfig {
|
|
37
38
|
name: string;
|
|
38
|
-
label?:
|
|
39
|
+
label?: LocaleString;
|
|
39
40
|
from: string;
|
|
40
41
|
to: string;
|
|
41
42
|
foreignKey: string;
|
|
@@ -45,7 +46,7 @@ export interface RelationConfig {
|
|
|
45
46
|
export interface LoomConfig {
|
|
46
47
|
project: {
|
|
47
48
|
name: string;
|
|
48
|
-
description?:
|
|
49
|
+
description?: LocaleString;
|
|
49
50
|
};
|
|
50
51
|
data: DataConfig;
|
|
51
52
|
ai?: AIConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,YAAY,GAAG,QAAQ,CAAC;IACxC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,6BAA6B;IAC7B,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mDAAmD;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,YAAY,CAAC;KAC5B,CAAC;IACF,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Dashboard Types
|
|
3
3
|
*/
|
|
4
|
+
import type { LocaleString } from './locale.js';
|
|
4
5
|
export type DashboardWidgetType = 'stat' | 'pie' | 'ring' | 'bar' | 'line' | 'area' | 'scatter' | 'radar' | 'funnel' | 'treemap' | 'gauge' | 'liquid' | 'heatmap' | 'stacked_bar' | 'grouped_bar';
|
|
5
6
|
export type DashboardAggregate = 'count' | 'sum' | 'avg' | 'min' | 'max' | 'ratio';
|
|
6
7
|
export type DashboardDateInterval = 'day' | 'week' | 'month';
|
|
7
8
|
export interface DashboardWidget {
|
|
8
9
|
/** Widget type */
|
|
9
10
|
type: DashboardWidgetType;
|
|
10
|
-
/** Display title
|
|
11
|
-
title:
|
|
11
|
+
/** Display title, supports multiple locales */
|
|
12
|
+
title: LocaleString;
|
|
12
13
|
/** Data model name from loom.config.ts */
|
|
13
14
|
model: string;
|
|
14
15
|
/** Ant Design Grid Col span (1-24), omitted means auto-equal-split */
|
|
@@ -32,8 +33,8 @@ export interface DashboardLayoutRow {
|
|
|
32
33
|
export interface DashboardConfig {
|
|
33
34
|
/** Dashboard identifier, used as page name (same naming rules as model) */
|
|
34
35
|
name: string;
|
|
35
|
-
/** Display label for sidebar navigation */
|
|
36
|
-
description?:
|
|
36
|
+
/** Display label for sidebar navigation, supports multiple locales */
|
|
37
|
+
description?: LocaleString;
|
|
37
38
|
/** Data models included in this dashboard */
|
|
38
39
|
models: string[];
|
|
39
40
|
/** Layout definition: array of rows, each row contains widgets */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/types/dashboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAC/E,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAC3E,aAAa,GAAG,aAAa,CAAC;AAElC,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAEnF,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,IAAI,EAAE,mBAAmB,CAAC;IAC1B
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/types/dashboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAC/E,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAC3E,aAAa,GAAG,aAAa,CAAC;AAElC,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAEnF,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,+CAA+C;IAC/C,KAAK,EAAE,YAAY,CAAC;IACpB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,eAAe,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,6CAA6C;IAC7C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kEAAkE;IAClE,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* 编织 AI 能力为应用织物
|
|
5
5
|
* Skill = 纹理, CLI = 梭子, Data = 纱线, AI = 织力
|
|
6
6
|
*/
|
|
7
|
+
export type { LocaleString, EnumLabels } from './locale.js';
|
|
8
|
+
export { resolveLocale, resolveEnumLabel, resolveEnumLabels } from './locale.js';
|
|
7
9
|
export type { FieldType, FieldDefinition, IndexDefinition, FilesystemAdapterConfig, SQLiteAdapterConfig, ModelAdapterConfig, ModelSchema, CRUDConfig, } from './model.js';
|
|
8
10
|
export type { SortOption, ReadOptions, DataRecord, DataAdapter, } from './adapter.js';
|
|
9
11
|
export type { AIButtonConfig, ClaudeCodeConfig, AIConfig, AIEngine, AICallOptions, AIUsage, AIChunk, } from './ai.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,SAAS,EACT,eAAe,EACf,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,OAAO,EACP,OAAO,GACR,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,SAAS,GACV,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,eAAe,GAChB,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGjF,YAAY,EACV,SAAS,EACT,eAAe,EACf,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,OAAO,EACP,OAAO,GACR,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,SAAS,GACV,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,GACf,MAAM,aAAa,CAAC;AAGrB,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,eAAe,GAChB,MAAM,gBAAgB,CAAC"}
|
package/dist/types/index.js
CHANGED
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale-aware string types and resolution utilities
|
|
3
|
+
*
|
|
4
|
+
* LocaleString allows inline locale objects in config:
|
|
5
|
+
* description: '科目' — plain string (single locale)
|
|
6
|
+
* description: { 'zh-CN': '科目', 'en-US': 'Subject' } — multi-locale
|
|
7
|
+
*
|
|
8
|
+
* EnumLabels provides display translations for enum storage values:
|
|
9
|
+
* enumLabels: { '语文': { 'zh-CN': '语文', 'en-US': 'Chinese' }, ... }
|
|
10
|
+
*/
|
|
11
|
+
/** Display string that supports multiple locales */
|
|
12
|
+
export type LocaleString = string | Record<string, string>;
|
|
13
|
+
/** Enum display labels: indexed by enum (storage) value, each with locale map */
|
|
14
|
+
export type EnumLabels = Record<string, Record<string, string>>;
|
|
15
|
+
/** Extract text for a given locale from a LocaleString */
|
|
16
|
+
export declare function resolveLocale(value: LocaleString | undefined, locale: string): string;
|
|
17
|
+
/** Extract display label for a specific enum value in a given locale */
|
|
18
|
+
export declare function resolveEnumLabel(labels: EnumLabels | undefined, enumValue: string, locale: string): string;
|
|
19
|
+
/** Resolve all enum labels for a given locale into a flat value→label map */
|
|
20
|
+
export declare function resolveEnumLabels(labels: EnumLabels | undefined, locale: string): Record<string, string>;
|
|
21
|
+
//# sourceMappingURL=locale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/types/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,oDAAoD;AACpD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3D,iFAAiF;AACjF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhE,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIrF;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI1G;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxG"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale-aware string types and resolution utilities
|
|
3
|
+
*
|
|
4
|
+
* LocaleString allows inline locale objects in config:
|
|
5
|
+
* description: '科目' — plain string (single locale)
|
|
6
|
+
* description: { 'zh-CN': '科目', 'en-US': 'Subject' } — multi-locale
|
|
7
|
+
*
|
|
8
|
+
* EnumLabels provides display translations for enum storage values:
|
|
9
|
+
* enumLabels: { '语文': { 'zh-CN': '语文', 'en-US': 'Chinese' }, ... }
|
|
10
|
+
*/
|
|
11
|
+
/** Extract text for a given locale from a LocaleString */
|
|
12
|
+
export function resolveLocale(value, locale) {
|
|
13
|
+
if (!value)
|
|
14
|
+
return '';
|
|
15
|
+
if (typeof value === 'string')
|
|
16
|
+
return value;
|
|
17
|
+
return value[locale] || value['zh-CN'] || Object.values(value)[0] || '';
|
|
18
|
+
}
|
|
19
|
+
/** Extract display label for a specific enum value in a given locale */
|
|
20
|
+
export function resolveEnumLabel(labels, enumValue, locale) {
|
|
21
|
+
if (!labels?.[enumValue])
|
|
22
|
+
return enumValue;
|
|
23
|
+
const map = labels[enumValue];
|
|
24
|
+
return map[locale] || map['zh-CN'] || Object.values(map)[0] || enumValue;
|
|
25
|
+
}
|
|
26
|
+
/** Resolve all enum labels for a given locale into a flat value→label map */
|
|
27
|
+
export function resolveEnumLabels(labels, locale) {
|
|
28
|
+
if (!labels)
|
|
29
|
+
return {};
|
|
30
|
+
const result = {};
|
|
31
|
+
for (const [enumVal, localeMap] of Object.entries(labels)) {
|
|
32
|
+
result[enumVal] = localeMap[locale] || localeMap['zh-CN'] || Object.values(localeMap)[0] || enumVal;
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=locale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../../src/types/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,KAA+B,EAAE,MAAc;IAC3E,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1E,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,MAA8B,EAAE,SAAiB,EAAE,MAAc;IAChG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AAC3E,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAAC,MAA8B,EAAE,MAAc;IAC9E,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;IACtG,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/types/model.d.ts
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Field & Model Types
|
|
3
3
|
*/
|
|
4
|
+
import type { LocaleString, EnumLabels } from './locale.js';
|
|
4
5
|
export type FieldType = 'string' | 'number' | 'boolean' | 'date' | 'string[]' | 'number[]' | 'json';
|
|
5
6
|
export interface FieldDefinition {
|
|
6
7
|
name: string;
|
|
7
8
|
type: FieldType;
|
|
8
9
|
required?: boolean;
|
|
9
|
-
description?:
|
|
10
|
+
description?: LocaleString;
|
|
10
11
|
default?: unknown;
|
|
11
12
|
/** For string fields: enum of allowed values */
|
|
12
13
|
enum?: string[];
|
|
14
|
+
/** Display labels for enum values, indexed by enum value then locale */
|
|
15
|
+
enumLabels?: EnumLabels;
|
|
13
16
|
}
|
|
14
17
|
export interface IndexDefinition {
|
|
15
18
|
fields: string[];
|
|
@@ -61,6 +64,6 @@ export interface ModelSchema {
|
|
|
61
64
|
indexes?: IndexDefinition[];
|
|
62
65
|
adapters?: ModelAdapterConfig;
|
|
63
66
|
crud?: CRUDConfig;
|
|
64
|
-
description?:
|
|
67
|
+
description?: LocaleString;
|
|
65
68
|
}
|
|
66
69
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/types/model.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,UAAU,GACV,UAAU,GACV,MAAM,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/types/model.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,UAAU,GACV,UAAU,GACV,MAAM,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,wEAAwE;IACxE,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B"}
|
package/package.json
CHANGED