@aalis/schema-config 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -63,4 +63,24 @@ export type ConfigSchema = Record<string, SchemaField | SchemaGroup | SchemaArra
63
63
  * 渲染宿主(webui-server 设置页)从这里取。
64
64
  */
65
65
  export declare const CORE_CONFIG_SCHEMA: ConfigSchema;
66
+ /**
67
+ * 从 ConfigSchema 派生默认配置。
68
+ *
69
+ * ConfigSchema 是插件配置的**唯一声明来源**:每个字段的 `default` 就是运行时默认值,
70
+ * 不存在第二份手抄的默认值对象。宿主在注册插件前用本函数派生出默认配置
71
+ * (经 `AppOptions.pluginDefaults` 注入 core),配置回填、恢复默认、WebUI 展示
72
+ * 也都从这里取——一份实现,处处一致。
73
+ *
74
+ * 派生规则:
75
+ * - SchemaField / SchemaArray:取 `default`(没写 default 的字段不产出键,
76
+ * 等同于「该字段无默认值」——读取方自行处理 undefined)
77
+ * - SchemaGroup:递归 `fields`,总是产出嵌套对象(即使子字段全无默认值)
78
+ */
79
+ export declare function defaultsFrom(schema: ConfigSchema | undefined): Record<string, unknown>;
80
+ declare module '@aalis/core' {
81
+ interface PluginModule {
82
+ /** 配置表单 Schema:插件配置的唯一声明来源(默认值经 defaultsFrom 派生)。 */
83
+ configSchema?: ConfigSchema;
84
+ }
85
+ }
66
86
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,IAAI,CAAC;IACb,WAAW,EAAE,IAAI,CAAC;IAClB,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC;AAEnF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAchC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;IACd,MAAM,EAAE,IAAI,CAAC;IACb,WAAW,EAAE,IAAI,CAAC;IAClB,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC;AAEnF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAchC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWtF;AAWD,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,YAAY;QACpB,qDAAqD;QACrD,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B;CACF"}
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@
10
10
  // - 渲染宿主(webui-server/client 等):读取并渲染表单
11
11
  // - 宿主政策(@aalis/runtime 的 config-sync):按 schema 裁剪未知字段
12
12
  //
13
- // 本包零依赖、纯类型 + 纯数据,不 import @aalis/core。
13
+ // 本包零运行时依赖:对 @aalis/core 仅有 type-only 锚点 import(编译后擦除)。
14
14
  // ============================================================
15
15
  /**
16
16
  * core 基础设施配置(name / logLevel)的表单描述。
@@ -33,4 +33,31 @@ export const CORE_CONFIG_SCHEMA = {
33
33
  ],
34
34
  },
35
35
  };
36
+ /**
37
+ * 从 ConfigSchema 派生默认配置。
38
+ *
39
+ * ConfigSchema 是插件配置的**唯一声明来源**:每个字段的 `default` 就是运行时默认值,
40
+ * 不存在第二份手抄的默认值对象。宿主在注册插件前用本函数派生出默认配置
41
+ * (经 `AppOptions.pluginDefaults` 注入 core),配置回填、恢复默认、WebUI 展示
42
+ * 也都从这里取——一份实现,处处一致。
43
+ *
44
+ * 派生规则:
45
+ * - SchemaField / SchemaArray:取 `default`(没写 default 的字段不产出键,
46
+ * 等同于「该字段无默认值」——读取方自行处理 undefined)
47
+ * - SchemaGroup:递归 `fields`,总是产出嵌套对象(即使子字段全无默认值)
48
+ */
49
+ export function defaultsFrom(schema) {
50
+ const out = {};
51
+ for (const [key, entry] of Object.entries(schema ?? {})) {
52
+ if (!entry || typeof entry !== 'object')
53
+ continue;
54
+ if ('fields' in entry) {
55
+ out[key] = defaultsFrom(entry.fields);
56
+ continue;
57
+ }
58
+ if ('default' in entry)
59
+ out[key] = entry.default;
60
+ }
61
+ return out;
62
+ }
36
63
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,0CAA0C;AAC1C,EAAE;AACF,oDAAoD;AACpD,oEAAoE;AACpE,0BAA0B;AAC1B,EAAE;AACF,OAAO;AACP,gEAAgE;AAChE,wCAAwC;AACxC,uDAAuD;AACvD,EAAE;AACF,wCAAwC;AACxC,+DAA+D;AA+D/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAiB;IAC9C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE;IAC1F,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,QAAQ;QACrB,OAAO,EAAE,MAAM;QACf,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAChC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAChC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;SACnC;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,0CAA0C;AAC1C,EAAE;AACF,oDAAoD;AACpD,oEAAoE;AACpE,0BAA0B;AAC1B,EAAE;AACF,OAAO;AACP,gEAAgE;AAChE,wCAAwC;AACxC,uDAAuD;AACvD,EAAE;AACF,wDAAwD;AACxD,+DAA+D;AA+D/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAiB;IAC9C,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE;IAC1F,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,QAAQ;QACrB,OAAO,EAAE,MAAM;QACf,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAChC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAChC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;SACnC;KACF;CACF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,MAAgC;IAC3D,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YACtB,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtC,SAAS;QACX,CAAC;QACD,IAAI,SAAS,IAAI,KAAK;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aalis/schema-config",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,7 +19,8 @@
19
19
  "dist"
20
20
  ],
21
21
  "devDependencies": {
22
- "typescript": "^5.7.0"
22
+ "typescript": "^5.7.0",
23
+ "@aalis/core": "0.11.0"
23
24
  },
24
25
  "aalis": {
25
26
  "types": true
@@ -28,6 +29,9 @@
28
29
  "aalis",
29
30
  "aalis-schema"
30
31
  ],
32
+ "peerDependencies": {
33
+ "@aalis/core": ">=0.11.0 <1.0.0"
34
+ },
31
35
  "scripts": {
32
36
  "build": "tsc",
33
37
  "dev": "tsc --watch"