@ynight/framework 0.0.0-stage → 0.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.
Files changed (129) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +511 -2
  3. package/assets/.gitkeep +0 -0
  4. package/dist/.tsbuildinfo +1 -0
  5. package/dist/assets/index.d.ts +41 -0
  6. package/dist/assets/index.d.ts.map +1 -0
  7. package/dist/assets/index.js +68 -0
  8. package/dist/assets/index.js.map +1 -0
  9. package/dist/client/common.d.ts +77 -0
  10. package/dist/client/common.d.ts.map +1 -0
  11. package/dist/client/index.d.ts +56 -0
  12. package/dist/client/index.d.ts.map +1 -0
  13. package/dist/client/index.mjs +8 -0
  14. package/dist/client/index.mjs.LICENSE.txt +8 -0
  15. package/dist/client/layout/Layout.vue.d.ts +21 -0
  16. package/dist/client/layout/Layout.vue.d.ts.map +1 -0
  17. package/dist/client/layout/SiderLayout.vue.d.ts +32 -0
  18. package/dist/client/layout/SiderLayout.vue.d.ts.map +1 -0
  19. package/dist/client/layout/SubMenu.vue.d.ts +8 -0
  20. package/dist/client/layout/SubMenu.vue.d.ts.map +1 -0
  21. package/dist/client/package.json +3 -0
  22. package/dist/client/pages/DashboardPage.vue.d.ts +4 -0
  23. package/dist/client/pages/DashboardPage.vue.d.ts.map +1 -0
  24. package/dist/client/pages/ErrorPage.vue.d.ts +9 -0
  25. package/dist/client/pages/ErrorPage.vue.d.ts.map +1 -0
  26. package/dist/client/pages/PageSkeleton.vue.d.ts +4 -0
  27. package/dist/client/pages/PageSkeleton.vue.d.ts.map +1 -0
  28. package/dist/client/pages/ProjectListPage.vue.d.ts +4 -0
  29. package/dist/client/pages/ProjectListPage.vue.d.ts.map +1 -0
  30. package/dist/client/pages/project-navigation.d.ts +21 -0
  31. package/dist/client/pages/project-navigation.d.ts.map +1 -0
  32. package/dist/client/public-components.d.ts +56 -0
  33. package/dist/client/public-components.d.ts.map +1 -0
  34. package/dist/client/runtime.d.ts +55 -0
  35. package/dist/client/runtime.d.ts.map +1 -0
  36. package/dist/client/schema-types.d.ts +129 -0
  37. package/dist/client/schema-types.d.ts.map +1 -0
  38. package/dist/client/schema.d.ts +105 -0
  39. package/dist/client/schema.d.ts.map +1 -0
  40. package/dist/client/style.css +147 -0
  41. package/dist/client/types.d.ts +195 -0
  42. package/dist/client/types.d.ts.map +1 -0
  43. package/dist/client/views/ModuleHost.vue.d.ts +8 -0
  44. package/dist/client/views/ModuleHost.vue.d.ts.map +1 -0
  45. package/dist/client/views/SchemaView.vue.d.ts +8 -0
  46. package/dist/client/views/SchemaView.vue.d.ts.map +1 -0
  47. package/dist/client/views/schema/create-form.vue.d.ts +13 -0
  48. package/dist/client/views/schema/create-form.vue.d.ts.map +1 -0
  49. package/dist/client/views/schema/detail-view.vue.d.ts +10 -0
  50. package/dist/client/views/schema/detail-view.vue.d.ts.map +1 -0
  51. package/dist/client/views/schema/search-panel.vue.d.ts +11 -0
  52. package/dist/client/views/schema/search-panel.vue.d.ts.map +1 -0
  53. package/dist/client/views/schema/table-panel.vue.d.ts +17 -0
  54. package/dist/client/views/schema/table-panel.vue.d.ts.map +1 -0
  55. package/dist/client/views/schema/update-form.vue.d.ts +14 -0
  56. package/dist/client/views/schema/update-form.vue.d.ts.map +1 -0
  57. package/dist/client/widgets/schema-form/SchemaField.vue.d.ts +18 -0
  58. package/dist/client/widgets/schema-form/SchemaField.vue.d.ts.map +1 -0
  59. package/dist/client/widgets/schema-form/complex-view/index.d.ts +11 -0
  60. package/dist/client/widgets/schema-form/complex-view/index.d.ts.map +1 -0
  61. package/dist/client/widgets/schema-form/complex-view/schema-async-search-select.vue.d.ts +39 -0
  62. package/dist/client/widgets/schema-form/complex-view/schema-async-search-select.vue.d.ts.map +1 -0
  63. package/dist/client/widgets/schema-form/complex-view/schema-dynamic-select.vue.d.ts +32 -0
  64. package/dist/client/widgets/schema-form/complex-view/schema-dynamic-select.vue.d.ts.map +1 -0
  65. package/dist/client/widgets/schema-form/complex-view/schema-tag-input.vue.d.ts +25 -0
  66. package/dist/client/widgets/schema-form/complex-view/schema-tag-input.vue.d.ts.map +1 -0
  67. package/dist/client/widgets/schema-form/complex-view/schema-upload.vue.d.ts +16 -0
  68. package/dist/client/widgets/schema-form/complex-view/schema-upload.vue.d.ts.map +1 -0
  69. package/dist/client/widgets/schema-form/hooks/use-schema-rules.d.ts +45 -0
  70. package/dist/client/widgets/schema-form/hooks/use-schema-rules.d.ts.map +1 -0
  71. package/dist/client/widgets/schema-form/index.vue.d.ts +26 -0
  72. package/dist/client/widgets/schema-form/index.vue.d.ts.map +1 -0
  73. package/dist/client/widgets/schema-form/type.d.ts +295 -0
  74. package/dist/client/widgets/schema-form/type.d.ts.map +1 -0
  75. package/dist/client/widgets/schema-form/validator.d.ts +127 -0
  76. package/dist/client/widgets/schema-form/validator.d.ts.map +1 -0
  77. package/dist/client/widgets/schema-table/index.vue.d.ts +9 -0
  78. package/dist/client/widgets/schema-table/index.vue.d.ts.map +1 -0
  79. package/dist/client/widgets/schema-table/type.d.ts +91 -0
  80. package/dist/client/widgets/schema-table/type.d.ts.map +1 -0
  81. package/dist/model/index.d.ts +75 -0
  82. package/dist/model/index.d.ts.map +1 -0
  83. package/dist/model/index.js +108 -0
  84. package/dist/model/index.js.map +1 -0
  85. package/dist/model.d.ts +13 -0
  86. package/dist/model.d.ts.map +1 -0
  87. package/dist/model.js +16 -0
  88. package/dist/model.js.map +1 -0
  89. package/dist/server/application.d.ts +33 -0
  90. package/dist/server/application.d.ts.map +1 -0
  91. package/dist/server/application.js +1082 -0
  92. package/dist/server/application.js.map +1 -0
  93. package/dist/server/base-class.d.ts +50 -0
  94. package/dist/server/base-class.d.ts.map +1 -0
  95. package/dist/server/base-class.js +66 -0
  96. package/dist/server/base-class.js.map +1 -0
  97. package/dist/server/config.d.ts +44 -0
  98. package/dist/server/config.d.ts.map +1 -0
  99. package/dist/server/config.js +231 -0
  100. package/dist/server/config.js.map +1 -0
  101. package/dist/server/context.d.ts +30 -0
  102. package/dist/server/context.d.ts.map +1 -0
  103. package/dist/server/context.js +3 -0
  104. package/dist/server/context.js.map +1 -0
  105. package/dist/server/define-routes.d.ts +29 -0
  106. package/dist/server/define-routes.d.ts.map +1 -0
  107. package/dist/server/define-routes.js +39 -0
  108. package/dist/server/define-routes.js.map +1 -0
  109. package/dist/server/define-server.d.ts +19 -0
  110. package/dist/server/define-server.d.ts.map +1 -0
  111. package/dist/server/define-server.js +23 -0
  112. package/dist/server/define-server.js.map +1 -0
  113. package/dist/server/index.d.ts +26 -0
  114. package/dist/server/index.d.ts.map +1 -0
  115. package/dist/server/index.js +35 -0
  116. package/dist/server/index.js.map +1 -0
  117. package/dist/server/legacy.d.ts +13 -0
  118. package/dist/server/legacy.d.ts.map +1 -0
  119. package/dist/server/legacy.js +15 -0
  120. package/dist/server/legacy.js.map +1 -0
  121. package/dist/server/types.d.ts +272 -0
  122. package/dist/server/types.d.ts.map +1 -0
  123. package/dist/server/types.js +3 -0
  124. package/dist/server/types.js.map +1 -0
  125. package/dist/server.d.ts +12 -0
  126. package/dist/server.d.ts.map +1 -0
  127. package/dist/server.js +15 -0
  128. package/dist/server.js.map +1 -0
  129. package/package.json +106 -3
@@ -0,0 +1,19 @@
1
+ import type { ServerExtension } from './types';
2
+ /**
3
+ * 声明业务认证、授权和生命周期钩子,不在模块导入时监听端口。
4
+ *
5
+ * 该函数仅做类型断言(identity),让业务侧可以显式标注 ServerExtension 字面量并享受
6
+ * 完整的类型提示(auth/devAnonymous/onReady/onClose 等字段),同时避免被 TS 推导成
7
+ * 宽泛的 `{ ... }` 类型。
8
+ *
9
+ * 用法:
10
+ * ```ts
11
+ * export default defineServer({
12
+ * auth: { authenticate, authorize },
13
+ * devAnonymous: true,
14
+ * onReady(app) { ... },
15
+ * });
16
+ * ```
17
+ */
18
+ export declare function defineServer(extension: ServerExtension): ServerExtension;
19
+ //# sourceMappingURL=define-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-server.d.ts","sourceRoot":"","sources":["../../src/server/define-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,eAAe,CAExE"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineServer = defineServer;
4
+ /**
5
+ * 声明业务认证、授权和生命周期钩子,不在模块导入时监听端口。
6
+ *
7
+ * 该函数仅做类型断言(identity),让业务侧可以显式标注 ServerExtension 字面量并享受
8
+ * 完整的类型提示(auth/devAnonymous/onReady/onClose 等字段),同时避免被 TS 推导成
9
+ * 宽泛的 `{ ... }` 类型。
10
+ *
11
+ * 用法:
12
+ * ```ts
13
+ * export default defineServer({
14
+ * auth: { authenticate, authorize },
15
+ * devAnonymous: true,
16
+ * onReady(app) { ... },
17
+ * });
18
+ * ```
19
+ */
20
+ function defineServer(extension) {
21
+ return extension;
22
+ }
23
+ //# sourceMappingURL=define-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-server.js","sourceRoot":"","sources":["../../src/server/define-server.ts"],"names":[],"mappings":";;AAkBA,oCAEC;AAlBD;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,YAAY,CAAC,SAA0B;IACrD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * 框架 server 子模块的统一出口。
3
+ *
4
+ * 暴露:
5
+ * - 基础类(BaseController / BaseService):业务侧继承的根类
6
+ * - 应用入口(createApplication / startApplication):装配与启动
7
+ * - 旧版迁移入口(createLegacyApplication / LegacyApplicationOptions / ManagedLegacyApplication)
8
+ * - 配置助手(defineConfig / resolveApplicationPaths / resolveConfig)
9
+ * - 路由/服务声明助手(defineRoutes / defineServer)
10
+ * - Koa 类型透传(DefaultContext / Next)
11
+ * - 框架上下文与中间件类型(Context / Middleware / Request)
12
+ * - 配置/应用相关类型集合(ApplicationContext、ApplicationPaths、AuthAdapter、RouteDefinition 等)
13
+ *
14
+ * 业务侧只需 `import { ... } from '@ynight/framework/server'` 即可获得全部装配期 API 与类型。
15
+ */
16
+ export { BaseController, BaseService } from './base-class';
17
+ export { createApplication, startApplication } from './application';
18
+ export { createLegacyApplication } from './legacy';
19
+ export type { LegacyApplicationOptions, ManagedLegacyApplication } from './legacy';
20
+ export { defineConfig, resolveApplicationPaths, resolveConfig } from './config';
21
+ export { defineRoutes } from './define-routes';
22
+ export { defineServer } from './define-server';
23
+ export type { DefaultContext, Next } from 'koa';
24
+ export type { Context, Middleware, Request } from './context';
25
+ export type { ApplicationContext, ApplicationPaths, ConfigInput, AuthAdapter, AuthIdentity, BusinessControllers, BusinessMiddlewares, BusinessServices, ElpisClientConfig, ElpisConfig, ElpisMode, ElpisModelConfig, ElpisPublicConfig, ElpisServerConfig, FrameworkApplication, JsonSchema, ManagedApplication, ResolvedElpisConfig, RouteAccess, RouteDefinition, RouteRequestSchemas, RouterSchemas, ServerExtension, } from './types';
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACnD,YAAY,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,YAAY,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChD,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9D,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,eAAe,GAChB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineServer = exports.defineRoutes = exports.resolveConfig = exports.resolveApplicationPaths = exports.defineConfig = exports.createLegacyApplication = exports.startApplication = exports.createApplication = exports.BaseService = exports.BaseController = void 0;
4
+ /**
5
+ * 框架 server 子模块的统一出口。
6
+ *
7
+ * 暴露:
8
+ * - 基础类(BaseController / BaseService):业务侧继承的根类
9
+ * - 应用入口(createApplication / startApplication):装配与启动
10
+ * - 旧版迁移入口(createLegacyApplication / LegacyApplicationOptions / ManagedLegacyApplication)
11
+ * - 配置助手(defineConfig / resolveApplicationPaths / resolveConfig)
12
+ * - 路由/服务声明助手(defineRoutes / defineServer)
13
+ * - Koa 类型透传(DefaultContext / Next)
14
+ * - 框架上下文与中间件类型(Context / Middleware / Request)
15
+ * - 配置/应用相关类型集合(ApplicationContext、ApplicationPaths、AuthAdapter、RouteDefinition 等)
16
+ *
17
+ * 业务侧只需 `import { ... } from '@ynight/framework/server'` 即可获得全部装配期 API 与类型。
18
+ */
19
+ var base_class_1 = require("./base-class");
20
+ Object.defineProperty(exports, "BaseController", { enumerable: true, get: function () { return base_class_1.BaseController; } });
21
+ Object.defineProperty(exports, "BaseService", { enumerable: true, get: function () { return base_class_1.BaseService; } });
22
+ var application_1 = require("./application");
23
+ Object.defineProperty(exports, "createApplication", { enumerable: true, get: function () { return application_1.createApplication; } });
24
+ Object.defineProperty(exports, "startApplication", { enumerable: true, get: function () { return application_1.startApplication; } });
25
+ var legacy_1 = require("./legacy");
26
+ Object.defineProperty(exports, "createLegacyApplication", { enumerable: true, get: function () { return legacy_1.createLegacyApplication; } });
27
+ var config_1 = require("./config");
28
+ Object.defineProperty(exports, "defineConfig", { enumerable: true, get: function () { return config_1.defineConfig; } });
29
+ Object.defineProperty(exports, "resolveApplicationPaths", { enumerable: true, get: function () { return config_1.resolveApplicationPaths; } });
30
+ Object.defineProperty(exports, "resolveConfig", { enumerable: true, get: function () { return config_1.resolveConfig; } });
31
+ var define_routes_1 = require("./define-routes");
32
+ Object.defineProperty(exports, "defineRoutes", { enumerable: true, get: function () { return define_routes_1.defineRoutes; } });
33
+ var define_server_1 = require("./define-server");
34
+ Object.defineProperty(exports, "defineServer", { enumerable: true, get: function () { return define_server_1.defineServer; } });
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACH,2CAA2D;AAAlD,4GAAA,cAAc,OAAA;AAAE,yGAAA,WAAW,OAAA;AACpC,6CAAoE;AAA3D,gHAAA,iBAAiB,OAAA;AAAE,+GAAA,gBAAgB,OAAA;AAC5C,mCAAmD;AAA1C,iHAAA,uBAAuB,OAAA;AAEhC,mCAAgF;AAAvE,sGAAA,YAAY,OAAA;AAAE,iHAAA,uBAAuB,OAAA;AAAE,uGAAA,aAAa,OAAA;AAC7D,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * 迁移桥接:保留旧 app/config/extend 与路由装配,返回统一的 listen/close。
3
+ *
4
+ * 设计要点:
5
+ * - 认证与响应仍由旧应用自身提供;
6
+ * - 不会额外注入 SDK 页面或绕过其原有中间件;
7
+ * - 新项目应优先使用 {@link createApplication};
8
+ * - 旧应用可先通过该入口迁入 SDK 依赖(例如先复用 elpis/core 的应用容器)。
9
+ */
10
+ export { createApplication as createLegacyApplication } from '@ynight/core';
11
+ /** 透传旧版 core 选项与托管应用的类型别名,便于业务侧按统一名称引用。 */
12
+ export type { ElipsCoreOptions as LegacyApplicationOptions, ManagedElipsApplication as ManagedLegacyApplication, } from '@ynight/core';
13
+ //# sourceMappingURL=legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../src/server/legacy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,iBAAiB,IAAI,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5E,2CAA2C;AAC3C,YAAY,EACV,gBAAgB,IAAI,wBAAwB,EAC5C,uBAAuB,IAAI,wBAAwB,GACpD,MAAM,cAAc,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createLegacyApplication = void 0;
4
+ /**
5
+ * 迁移桥接:保留旧 app/config/extend 与路由装配,返回统一的 listen/close。
6
+ *
7
+ * 设计要点:
8
+ * - 认证与响应仍由旧应用自身提供;
9
+ * - 不会额外注入 SDK 页面或绕过其原有中间件;
10
+ * - 新项目应优先使用 {@link createApplication};
11
+ * - 旧应用可先通过该入口迁入 SDK 依赖(例如先复用 elpis/core 的应用容器)。
12
+ */
13
+ var core_1 = require("@ynight/core");
14
+ Object.defineProperty(exports, "createLegacyApplication", { enumerable: true, get: function () { return core_1.createApplication; } });
15
+ //# sourceMappingURL=legacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.js","sourceRoot":"","sources":["../../src/server/legacy.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;GAQG;AACH,qCAA4E;AAAnE,+GAAA,iBAAiB,OAA2B"}
@@ -0,0 +1,272 @@
1
+ import type http from 'node:http';
2
+ import type { Context, Middleware } from './context';
3
+ import type Koa from 'koa';
4
+ import type { LoadedModel } from '@ynight/model-runtime';
5
+ /**
6
+ * 框架运行模式:
7
+ * - development:开发态,启用热加载与 devAnonymous 默认开关
8
+ * - production:生产态,要求显式认证适配器并校验 entry
9
+ * - test:测试态,由测试套件使用
10
+ */
11
+ export type ElpisMode = 'development' | 'production' | 'test';
12
+ /** 服务端运行时配置:监听地址/端口、入口文件、业务目录与优雅关闭超时。 */
13
+ export interface ElpisServerConfig {
14
+ /** 监听 host,可被环境变量 ELPIS_HOST 覆盖,默认 127.0.0.1。 */
15
+ host?: string;
16
+ /** 监听端口,可被环境变量 ELPIS_PORT 覆盖,默认 3000。 */
17
+ port?: number;
18
+ /** 生产模式必须显式提供;CLI 启动脚本会读取该入口。 */
19
+ entry?: string;
20
+ /** 业务模块根目录名,默认 'server'。CLI 编译后会按该相对路径输出。 */
21
+ businessDir?: string;
22
+ /** 优雅关闭超时(毫秒),默认 10000。 */
23
+ closeTimeoutMs?: number;
24
+ }
25
+ /** 模型层配置:业务模型目录与控件契约索引文件。 */
26
+ export interface ElpisModelConfig {
27
+ /** 业务模型目录,默认 'model'。 */
28
+ dir?: string;
29
+ /** 控件契约 JSON Schema 索引文件的相对路径;存在则在启动期校验模型。 */
30
+ controlContracts?: string;
31
+ }
32
+ /** 客户端 / 公共资源相关配置。 */
33
+ export interface ElpisClientConfig {
34
+ /** 客户端扩展配置(如动态组件清单)的相对路径。 */
35
+ extensions?: string;
36
+ /** Dashboard(控制台)入口 URL 前缀,默认 '/dashboard',不允许包含 ? 或 #。 */
37
+ dashboardBase?: string;
38
+ }
39
+ /** 框架公共配置:标题、首页、项目列表策略与默认项目。 */
40
+ export interface ElpisPublicConfig {
41
+ /** 管理后台标题,显示在浏览器 Title 与登录页。 */
42
+ title?: string;
43
+ /** 业务首页路径,默认 '/project-list'。 */
44
+ homePage?: string;
45
+ /** 项目入口策略:未配置时仅展示列表;auto 仅在唯一可访问项目时直达;never 直达默认项目。 */
46
+ projectListMode?: 'always' | 'auto' | 'never';
47
+ /** projectListMode 为 never 时使用的默认项目 key。 */
48
+ defaultProjectKey?: string;
49
+ }
50
+ /**
51
+ * 用户在 elpis.config 中编写的原始配置。
52
+ * 各字段均可选;框架会用默认值补齐,并通过 {@link ResolvedElpisConfig} 暴露解析后的版本。
53
+ */
54
+ export interface ElpisConfig {
55
+ server?: ElpisServerConfig;
56
+ model?: ElpisModelConfig;
57
+ client?: ElpisClientConfig;
58
+ public?: ElpisPublicConfig;
59
+ dev?: {
60
+ webPort?: number;
61
+ };
62
+ build?: {
63
+ outDir?: string;
64
+ };
65
+ }
66
+ /**
67
+ * 经过 {@link resolveConfig} 解析后的运行时配置:补齐默认值、应用环境变量覆盖、并归一化路径。
68
+ * 框架装配阶段始终使用本类型,避免各处重复判空。
69
+ */
70
+ export interface ResolvedElpisConfig {
71
+ server: Required<Pick<ElpisServerConfig, 'host' | 'port'>> & Omit<ElpisServerConfig, 'host' | 'port'>;
72
+ model: Required<Pick<ElpisModelConfig, 'dir'>> & Omit<ElpisModelConfig, 'dir'>;
73
+ client: Required<Pick<ElpisClientConfig, 'dashboardBase'>> & Omit<ElpisClientConfig, 'dashboardBase'>;
74
+ public: Required<Pick<ElpisPublicConfig, 'title' | 'homePage'>> & Pick<ElpisPublicConfig, 'projectListMode' | 'defaultProjectKey'>;
75
+ dev: Required<NonNullable<ElpisConfig['dev']>>;
76
+ build: Required<NonNullable<ElpisConfig['build']>>;
77
+ }
78
+ /**
79
+ * 框架在装配阶段计算出的所有目录集合。
80
+ * - sourceRoot:业务源码根(含 elpis.config)
81
+ * - compiledRoot:CLI 编译输出根(生产为 source/app,开发为 .elpis/dev/app)
82
+ * - frameworkAssetsRoot:框架内置 HTML/JS 资产目录,用于 History 路由页面兜底
83
+ * - publicRoot:托管给前端的静态资源目录(默认 ./public,可被 publicRootOverride 覆盖)
84
+ * - generatedRoot:开发期生成产物根(.elpis)
85
+ * - outputRoot:build.outDir 的绝对路径
86
+ * - serverRoot:业务服务端模块根
87
+ * - modelRoot:业务模型根
88
+ * - sharedRoot:跨端共享模块根
89
+ */
90
+ export interface ApplicationPaths {
91
+ sourceRoot: string;
92
+ compiledRoot: string;
93
+ frameworkAssetsRoot: string;
94
+ publicRoot: string;
95
+ generatedRoot: string;
96
+ outputRoot: string;
97
+ serverRoot: string;
98
+ modelRoot: string;
99
+ sharedRoot: string;
100
+ }
101
+ /**
102
+ * 已认证身份信息。
103
+ * - id:业务唯一标识,框架以此判定授权
104
+ * - name:可选显示名
105
+ * - 其他任意字段透传给业务,但不会暴露给前端(除非业务自行处理)
106
+ */
107
+ export interface AuthIdentity {
108
+ id: string;
109
+ name?: string;
110
+ [key: string]: unknown;
111
+ }
112
+ /**
113
+ * 认证与授权适配器接口。框架不内置任何身份实现,由业务按需注入。
114
+ */
115
+ export interface AuthAdapter {
116
+ /** 未认证响应的 WWW-Authenticate challenge 值,例如 Basic realm="elpis"。 */
117
+ challenge?: string;
118
+ /**
119
+ * 解析请求并返回当前身份。未登录返回 null。
120
+ * 注意:返回 null 时框架会自动回退到 devAnonymous(仅非生产)或返回 401。
121
+ */
122
+ authenticate(ctx: Context): AuthIdentity | null | Promise<AuthIdentity | null>;
123
+ /**
124
+ * 判定当前身份是否对指定资源/动作具备访问权限。
125
+ * 路由级(路由声明 access)与项目级(isProjectAllowed)都会调用此方法。
126
+ */
127
+ authorize(ctx: Context, access: RouteAccess, identity: AuthIdentity): boolean | Promise<boolean>;
128
+ }
129
+ /**
130
+ * 授权访问描述。框架将"模块 + 动作"交给业务适配器判定。
131
+ * - module:模块标识(如路由路径、'project'、'public' 等)
132
+ * - action:动作标识(如 'read'、'get'、'post' 等 HTTP 方法)
133
+ */
134
+ export interface RouteAccess {
135
+ module: string;
136
+ action: string;
137
+ }
138
+ /**
139
+ * 业务侧通过 defineServer 注入的扩展。
140
+ * 框架不直接监听端口(除 startApplication 外),由 core 容器管理生命周期。
141
+ */
142
+ export interface ServerExtension {
143
+ auth?: AuthAdapter;
144
+ /** development/test 的显式匿名回退;生产忽略该开关,始终要求认证。 */
145
+ devAnonymous?: boolean;
146
+ /** 应用装配完成后(startApplication 之前)的钩子;可注册额外中间件或探针。 */
147
+ onReady?(app: FrameworkApplication): void | Promise<void>;
148
+ /** 容器关闭时的钩子;用于释放数据库连接等资源。 */
149
+ onClose?(app: FrameworkApplication): void | Promise<void>;
150
+ }
151
+ /** 通过 defineRoutes 返回的单个路由声明;registerRoute 据此装配。 */
152
+ export interface RouteDefinition {
153
+ /** HTTP 方法,框架会在装配阶段转小写后匹配 Router。 */
154
+ method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD';
155
+ /** 路由路径,必须以 / 开头。 */
156
+ path: string;
157
+ /** 是否要求请求携带 projectKey(header 或 query);缺失返回 400。 */
158
+ projectRequired?: boolean;
159
+ /** 路由级访问控制;缺失时仅依赖模块级授权。 */
160
+ access?: RouteAccess;
161
+ /**
162
+ * 内联请求参数校验规则;存在时优先于 router-schema 目录下的同名规则。
163
+ * 当前请求校验失败时直接返回 400 并附带 Ajv 错误详情。
164
+ */
165
+ schema?: RouteRequestSchemas;
166
+ /** 路由处理函数;Koa 中间件已统一处理鉴权/校验,到此处即为纯业务。 */
167
+ handler(ctx: Context): unknown | Promise<unknown>;
168
+ }
169
+ /** JSON Schema 允许对象 Schema,也允许表示恒真/恒假的布尔 Schema。 */
170
+ export type JsonSchema = Record<string, unknown> | boolean;
171
+ /**
172
+ * 单个 HTTP 方法下的请求参数校验集合。
173
+ * 任一字段缺省表示对应位置不参与校验。
174
+ * 校验在中间件中按 body/query/params/headers 顺序执行,任意位置失败立即返回 400。
175
+ */
176
+ export interface RouteRequestSchemas {
177
+ body?: JsonSchema;
178
+ query?: JsonSchema;
179
+ params?: JsonSchema;
180
+ headers?: JsonSchema;
181
+ }
182
+ /**
183
+ * router-schema 目录下的整体结构:
184
+ * 第一层 key 为路由路径(必须以 / 开头),第二层 key 为 HTTP 方法(小写)。
185
+ * 用于集中维护跨多个业务路由的共享参数校验规则。
186
+ */
187
+ export type RouterSchemas = Record<string, Record<string, RouteRequestSchemas>>;
188
+ /** 业务 service 模块容器,key 为文件名(去扩展名),value 为对应类的实例。 */
189
+ export interface BusinessServices {
190
+ [key: string]: unknown;
191
+ }
192
+ /** 业务 controller 模块容器,key 为文件名(去扩展名),value 为对应类的实例。 */
193
+ export interface BusinessControllers {
194
+ [key: string]: unknown;
195
+ }
196
+ /** 业务中间件索引容器;中间件在装载阶段已挂载,这里主要用于业务可见性。 */
197
+ export interface BusinessMiddlewares {
198
+ [key: string]: unknown;
199
+ }
200
+ /**
201
+ * 框架自身装配的服务集合。
202
+ * - models:已加载并通过契约校验的业务模型(含 projects)
203
+ * - routerSchemas:router-schema 目录加载结果,框架路由也可复用
204
+ * - controlContracts:控件契约 JSON Schema 索引;运行时用于校验模型中 props
205
+ */
206
+ export interface FrameworkServices {
207
+ models: LoadedModel[];
208
+ routerSchemas: RouterSchemas;
209
+ controlContracts: Record<string, unknown>;
210
+ }
211
+ /**
212
+ * 框架装配后的 Koa 应用实例。
213
+ * 通过 Object.defineProperties 在装配阶段追加 config/paths/mode 等只读字段,
214
+ * 业务模块(service/controller/middleware)在构造时即拿到该实例。
215
+ */
216
+ export interface FrameworkApplication extends Koa {
217
+ readonly config: ResolvedElpisConfig;
218
+ readonly paths: ApplicationPaths;
219
+ readonly mode: ElpisMode;
220
+ readonly framework: FrameworkServices;
221
+ service: BusinessServices;
222
+ controller: BusinessControllers;
223
+ middlewares: BusinessMiddlewares;
224
+ readonly routerSchema: RouterSchemas;
225
+ readonly serverExtension: ServerExtension;
226
+ }
227
+ /**
228
+ * 用户配置输入;可以是对象,也可以是基于 mode 的工厂函数(用于区分 dev/prod 行为)。
229
+ */
230
+ export type ConfigInput = ElpisConfig | ((context: {
231
+ mode: ElpisMode;
232
+ }) => ElpisConfig);
233
+ /**
234
+ * createApplication 所需的入参集合。
235
+ * - rootDir / sourceRoot / moduleRoot:源码与编译产物目录区分
236
+ * - mode:覆盖环境变量推断的运行模式
237
+ * - moduleExtension:业务模块的编译扩展名(CLI dev/build 后应显式传 .js)
238
+ * - server:认证与生命周期钩子
239
+ * - publicRoot:覆盖前端静态资源目录(主要用于 CLI dev 模式)
240
+ */
241
+ export interface ApplicationContext {
242
+ rootDir: string;
243
+ /** 配置所在的业务源码根;未提供时使用 rootDir。 */
244
+ sourceRoot?: string;
245
+ /** CLI 编译输出的业务模块根;提供后从此目录加载 server/model 等模块。 */
246
+ moduleRoot?: string;
247
+ mode?: ElpisMode;
248
+ /** 业务模块实际使用的编译扩展名;CLI 编译后应显式传入 .js。 */
249
+ moduleExtension?: '.ts' | '.js' | '.cjs';
250
+ config?: ConfigInput;
251
+ server?: ServerExtension;
252
+ publicRoot?: string;
253
+ }
254
+ /**
255
+ * createApplication 返回的托管应用。
256
+ * - app:框架装配的 Koa 实例,可继续 app.use() 注入额外中间件
257
+ * - listen:异步监听,端口/地址可覆盖
258
+ * - close:优雅关闭(等待连接耗尽或 closeTimeoutMs)
259
+ */
260
+ export interface ManagedApplication {
261
+ app: FrameworkApplication;
262
+ listen(options?: {
263
+ host?: string;
264
+ port?: number;
265
+ }): Promise<http.Server>;
266
+ close(): Promise<void>;
267
+ }
268
+ /** defineRoutes 接收的工厂函数;返回 RouteDefinition[] 表示一组路由声明。 */
269
+ export type RouteFactory = (app: FrameworkApplication) => RouteDefinition[];
270
+ /** 框架公开的中间件别名,便于业务侧类型提示。 */
271
+ export type ElpisMiddleware = Middleware;
272
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * 框架 server 公共入口:转出服务端模块的全部公开导出。
3
+ *
4
+ * 业务侧典型用法:
5
+ * ```ts
6
+ * import { createApplication, defineServer } from '@ynight/framework/server';
7
+ * ```
8
+ *
9
+ * 注意:本文件只做单一 re-export,新增符号请直接编辑 server/index.ts。
10
+ */
11
+ export * from './server/index';
12
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,cAAc,gBAAgB,CAAC"}
package/dist/server.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /**
5
+ * 框架 server 公共入口:转出服务端模块的全部公开导出。
6
+ *
7
+ * 业务侧典型用法:
8
+ * ```ts
9
+ * import { createApplication, defineServer } from '@ynight/framework/server';
10
+ * ```
11
+ *
12
+ * 注意:本文件只做单一 re-export,新增符号请直接编辑 server/index.ts。
13
+ */
14
+ tslib_1.__exportStar(require("./server/index"), exports);
15
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,yDAA+B"}
package/package.json CHANGED
@@ -1,6 +1,109 @@
1
1
  {
2
2
  "name": "@ynight/framework",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.0.1",
4
+ "description": "Elpis 管理后台框架运行时与内置客户端资源",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+ssh://git@git.code.tencent.com/YNight/elpis.git"
8
+ },
9
+ "license": "MIT",
10
+ "type": "commonjs",
11
+ "main": "./dist/server/index.js",
12
+ "types": "./dist/server/index.d.ts",
13
+ "files": [
14
+ "dist",
15
+ "assets",
16
+ "README.md",
17
+ "LICENSE"
18
+ ],
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/server/index.d.ts",
22
+ "require": "./dist/server/index.js",
23
+ "default": "./dist/server/index.js"
24
+ },
25
+ "./server": {
26
+ "types": "./dist/server/index.d.ts",
27
+ "require": "./dist/server/index.js",
28
+ "default": "./dist/server/index.js"
29
+ },
30
+ "./model": {
31
+ "types": "./dist/model/index.d.ts",
32
+ "require": "./dist/model/index.js",
33
+ "default": "./dist/model/index.js"
34
+ },
35
+ "./client": {
36
+ "types": "./dist/client/index.d.ts",
37
+ "import": "./dist/client/index.mjs"
38
+ },
39
+ "./style.css": "./dist/client/style.css",
40
+ "./assets": {
41
+ "types": "./dist/assets/index.d.ts",
42
+ "require": "./dist/assets/index.js",
43
+ "default": "./dist/assets/index.js"
44
+ }
45
+ },
46
+ "sideEffects": [
47
+ "**/*.css",
48
+ "**/*.less"
49
+ ],
50
+ "engines": {
51
+ "node": ">=22.0.0"
52
+ },
53
+ "publishConfig": {
54
+ "access": "public"
55
+ },
56
+ "dependencies": {
57
+ "@koa/router": "^15.1.1",
58
+ "@types/koa": "^2.15.0",
59
+ "@types/node": "^22.0.0",
60
+ "ajv": "^8.17.1",
61
+ "ajv-formats": "^3.0.1",
62
+ "ajv-i18n": "^4.2.0",
63
+ "koa": "^2.15.0",
64
+ "koa-bodyparser": "^4.4.1",
65
+ "koa-static": "^5.0.0",
66
+ "lodash": "^4.18.1",
67
+ "tslib": "^2.8.1",
68
+ "@ynight/contracts": "0.0.1",
69
+ "@ynight/core": "0.0.1",
70
+ "@ynight/model-runtime": "0.0.1"
71
+ },
72
+ "peerDependencies": {
73
+ "element-plus": "^2.13.1",
74
+ "pinia": "^3.0.4",
75
+ "vue": "^3.5.26",
76
+ "vue-router": "^4.6.4"
77
+ },
78
+ "devDependencies": {
79
+ "@types/koa-bodyparser": "^4.3.13",
80
+ "@types/koa-static": "^4.0.4",
81
+ "@types/lodash": "^4.17.25",
82
+ "@types/mocha": "^10.0.10",
83
+ "css-loader": "^7.1.2",
84
+ "element-plus": "^2.13.1",
85
+ "esbuild-loader": "^4.4.1",
86
+ "mini-css-extract-plugin": "^2.9.4",
87
+ "less": "^4.5.1",
88
+ "less-loader": "^12.3.0",
89
+ "mocha": "^11.8.0",
90
+ "pinia": "^3.0.4",
91
+ "rimraf": "^5.0.10",
92
+ "typescript": "^5.9.3",
93
+ "ts-node": "^10.9.2",
94
+ "vue-loader": "^17.4.2",
95
+ "vue-tsc": "^3.3.8",
96
+ "vue": "^3.5.26",
97
+ "vue-router": "^4.6.4",
98
+ "webpack": "^5.104.1"
99
+ },
100
+ "scripts": {
101
+ "clean": "rimraf dist",
102
+ "build": "rimraf dist && tsc -p tsconfig.json && node scripts/build-client.mjs && vue-tsc -p tsconfig.client.json --declaration --emitDeclarationOnly && node scripts/write-client-package.mjs",
103
+ "type-check": "tsc --noEmit -p tsconfig.json && vue-tsc --noEmit -p tsconfig.client.json",
104
+ "type-test": "tsc --noEmit -p tsconfig.type-tests.json",
105
+ "test:server": "TS_NODE_PROJECT=tsconfig.test.json mocha --require ts-node/register --extension ts test/application.test.ts",
106
+ "test": "pnpm run test:server && pnpm run type-test",
107
+ "lint": "eslint src"
108
+ }
6
109
  }