@ruiapp/rapid-core 0.1.3 → 0.1.5

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 (116) hide show
  1. package/dist/core/http/formDataParser.d.ts +22 -0
  2. package/dist/core/httpHandler.d.ts +3 -3
  3. package/dist/core/pluginManager.d.ts +31 -26
  4. package/dist/core/providers/runtimeProvider.d.ts +4 -0
  5. package/dist/core/routeContext.d.ts +0 -1
  6. package/dist/core/server.d.ts +21 -21
  7. package/dist/index.d.ts +6 -0
  8. package/dist/index.js +3365 -3113
  9. package/dist/plugins/{authManager → auth}/httpHandlers/createSession.d.ts +2 -2
  10. package/dist/plugins/auth/httpHandlers/deleteSession.d.ts +4 -0
  11. package/dist/plugins/auth/httpHandlers/getMyProfile.d.ts +4 -0
  12. package/dist/plugins/auth/mod.d.ts +25 -0
  13. package/dist/plugins/dataManage/httpHandlers/addEntityRelations.d.ts +5 -0
  14. package/dist/plugins/dataManage/httpHandlers/countCollectionEntities.d.ts +5 -0
  15. package/dist/plugins/dataManage/httpHandlers/createCollectionEntitiesBatch.d.ts +5 -0
  16. package/dist/plugins/dataManage/httpHandlers/createCollectionEntity.d.ts +5 -0
  17. package/dist/plugins/dataManage/httpHandlers/deleteCollectionEntityById.d.ts +5 -0
  18. package/dist/plugins/dataManage/httpHandlers/findCollectionEntities.d.ts +5 -0
  19. package/dist/plugins/dataManage/httpHandlers/findCollectionEntityById.d.ts +5 -0
  20. package/dist/plugins/dataManage/httpHandlers/queryDatabase.d.ts +5 -0
  21. package/dist/plugins/dataManage/httpHandlers/removeEntityRelations.d.ts +5 -0
  22. package/dist/plugins/dataManage/httpHandlers/updateCollectionEntityById.d.ts +5 -0
  23. package/dist/plugins/dataManage/mod.d.ts +27 -0
  24. package/dist/plugins/fileManage/httpHandlers/downloadDocument.d.ts +4 -0
  25. package/dist/plugins/fileManage/httpHandlers/downloadFile.d.ts +4 -0
  26. package/dist/plugins/fileManage/httpHandlers/uploadFile.d.ts +4 -0
  27. package/dist/plugins/fileManage/mod.d.ts +25 -0
  28. package/dist/plugins/metaManage/httpHandlers/getMetaModelDetail.d.ts +4 -0
  29. package/dist/plugins/metaManage/httpHandlers/listMetaModels.d.ts +4 -0
  30. package/dist/plugins/metaManage/httpHandlers/listMetaRoutes.d.ts +4 -0
  31. package/dist/plugins/metaManage/mod.d.ts +25 -0
  32. package/dist/plugins/routeManage/httpHandlers/httpProxy.d.ts +5 -0
  33. package/dist/plugins/routeManage/mod.d.ts +25 -0
  34. package/dist/plugins/webhooks/mod.d.ts +25 -11
  35. package/dist/server.d.ts +5 -4
  36. package/dist/types.d.ts +7 -9
  37. package/dist/utilities/fsUtility.d.ts +6 -0
  38. package/package.json +3 -2
  39. package/src/core/http/formDataParser.ts +101 -0
  40. package/src/core/httpHandler.ts +3 -3
  41. package/src/core/pluginManager.ts +107 -106
  42. package/src/core/providers/runtimeProvider.ts +5 -0
  43. package/src/core/request.ts +2 -1
  44. package/src/core/routeContext.ts +0 -1
  45. package/src/core/routesBuilder.ts +2 -14
  46. package/src/core/server.ts +21 -39
  47. package/src/dataAccess/dataAccessor.ts +1 -1
  48. package/src/index.ts +7 -0
  49. package/src/plugins/{authManager → auth}/httpHandlers/createSession.ts +2 -2
  50. package/src/plugins/{authManager → auth}/httpHandlers/deleteSession.ts +2 -2
  51. package/src/plugins/{authManager → auth}/httpHandlers/getMyProfile.ts +2 -2
  52. package/src/plugins/auth/mod.ts +80 -0
  53. package/src/plugins/{dataManager → dataManage}/httpHandlers/addEntityRelations.ts +3 -2
  54. package/src/plugins/{dataManager → dataManage}/httpHandlers/countCollectionEntities.ts +3 -2
  55. package/src/plugins/{dataManager → dataManage}/httpHandlers/createCollectionEntitiesBatch.ts +3 -2
  56. package/src/plugins/{dataManager → dataManage}/httpHandlers/createCollectionEntity.ts +3 -2
  57. package/src/plugins/{dataManager → dataManage}/httpHandlers/deleteCollectionEntityById.ts +5 -4
  58. package/src/plugins/{dataManager → dataManage}/httpHandlers/findCollectionEntities.ts +3 -2
  59. package/src/plugins/{dataManager → dataManage}/httpHandlers/findCollectionEntityById.ts +3 -2
  60. package/src/plugins/{dataManager → dataManage}/httpHandlers/queryDatabase.ts +3 -2
  61. package/src/plugins/{dataManager → dataManage}/httpHandlers/removeEntityRelations.ts +3 -2
  62. package/src/plugins/{dataManager → dataManage}/httpHandlers/updateCollectionEntityById.ts +3 -2
  63. package/src/plugins/dataManage/mod.ts +187 -0
  64. package/src/plugins/fileManage/httpHandlers/downloadDocument.ts +40 -0
  65. package/src/plugins/fileManage/httpHandlers/downloadFile.ts +32 -0
  66. package/src/plugins/fileManage/httpHandlers/uploadFile.ts +37 -0
  67. package/src/plugins/fileManage/mod.ts +77 -0
  68. package/src/plugins/{metaManager → metaManage}/httpHandlers/getMetaModelDetail.ts +2 -2
  69. package/src/plugins/{metaManager → metaManage}/httpHandlers/listMetaModels.ts +2 -2
  70. package/src/plugins/{routeManager → metaManage}/httpHandlers/listMetaRoutes.ts +2 -2
  71. package/src/plugins/{metaManager → metaManage}/mod.ts +86 -53
  72. package/src/plugins/{routeManager → routeManage}/httpHandlers/httpProxy.ts +3 -2
  73. package/src/plugins/routeManage/mod.ts +92 -0
  74. package/src/plugins/webhooks/mod.ts +134 -94
  75. package/src/server.ts +19 -12
  76. package/src/types.ts +8 -11
  77. package/src/utilities/fsUtility.ts +62 -0
  78. package/dist/core/plugin.d.ts +0 -6
  79. package/dist/plugins/authManager/httpHandlers/deleteSession.d.ts +0 -4
  80. package/dist/plugins/authManager/httpHandlers/getMyProfile.d.ts +0 -4
  81. package/dist/plugins/authManager/mod.d.ts +0 -16
  82. package/dist/plugins/dataManager/httpHandlers/addEntityRelations.d.ts +0 -4
  83. package/dist/plugins/dataManager/httpHandlers/countCollectionEntities.d.ts +0 -4
  84. package/dist/plugins/dataManager/httpHandlers/createCollectionEntitiesBatch.d.ts +0 -4
  85. package/dist/plugins/dataManager/httpHandlers/createCollectionEntity.d.ts +0 -4
  86. package/dist/plugins/dataManager/httpHandlers/deleteCollectionEntityById.d.ts +0 -4
  87. package/dist/plugins/dataManager/httpHandlers/findCollectionEntities.d.ts +0 -4
  88. package/dist/plugins/dataManager/httpHandlers/findCollectionEntityById.d.ts +0 -4
  89. package/dist/plugins/dataManager/httpHandlers/queryDatabase.d.ts +0 -4
  90. package/dist/plugins/dataManager/httpHandlers/removeEntityRelations.d.ts +0 -4
  91. package/dist/plugins/dataManager/httpHandlers/updateCollectionEntityById.d.ts +0 -4
  92. package/dist/plugins/dataManager/mod.d.ts +0 -16
  93. package/dist/plugins/metaManager/httpHandlers/getMetaModelDetail.d.ts +0 -4
  94. package/dist/plugins/metaManager/httpHandlers/listMetaModels.d.ts +0 -4
  95. package/dist/plugins/metaManager/mod.d.ts +0 -15
  96. package/dist/plugins/routeManager/httpHandlers/httpProxy.d.ts +0 -4
  97. package/dist/plugins/routeManager/httpHandlers/listMetaRoutes.d.ts +0 -4
  98. package/dist/plugins/routeManager/mod.d.ts +0 -15
  99. package/src/core/plugin.ts +0 -13
  100. package/src/plugins/authManager/mod.ts +0 -56
  101. package/src/plugins/dataManager/mod.ts +0 -154
  102. package/src/plugins/routeManager/mod.ts +0 -97
  103. /package/dist/plugins/{authManager → auth}/httpHandlers/index.d.ts +0 -0
  104. /package/dist/plugins/{authManager → auth}/models/AccessToken.d.ts +0 -0
  105. /package/dist/plugins/{authManager → auth}/models/index.d.ts +0 -0
  106. /package/dist/plugins/{authManager → auth}/routes/getMyProfile.d.ts +0 -0
  107. /package/dist/plugins/{authManager → auth}/routes/index.d.ts +0 -0
  108. /package/dist/plugins/{authManager → auth}/routes/signin.d.ts +0 -0
  109. /package/dist/plugins/{authManager → auth}/routes/signout.d.ts +0 -0
  110. /package/src/plugins/{authManager → auth}/httpHandlers/index.ts +0 -0
  111. /package/src/plugins/{authManager → auth}/models/AccessToken.ts +0 -0
  112. /package/src/plugins/{authManager → auth}/models/index.ts +0 -0
  113. /package/src/plugins/{authManager → auth}/routes/getMyProfile.ts +0 -0
  114. /package/src/plugins/{authManager → auth}/routes/index.ts +0 -0
  115. /package/src/plugins/{authManager → auth}/routes/signin.ts +0 -0
  116. /package/src/plugins/{authManager → auth}/routes/signout.ts +0 -0
@@ -0,0 +1,22 @@
1
+ export type BodyData = Record<string, string | File | (string | File)[]>;
2
+ export type ParseBodyOptions = {
3
+ /**
4
+ * Parse all fields with multiple values should be parsed as an array.
5
+ * @default false
6
+ * @example
7
+ * ```ts
8
+ * const data = new FormData()
9
+ * data.append('file', 'aaa')
10
+ * data.append('file', 'bbb')
11
+ * data.append('message', 'hello')
12
+ * ```
13
+ *
14
+ * If `all` is `false`:
15
+ * parseBody should return `{ file: 'bbb', message: 'hello' }`
16
+ *
17
+ * If `all` is `true`:
18
+ * parseBody should return `{ file: ['aaa', 'bbb'], message: 'hello' }`
19
+ */
20
+ all?: boolean;
21
+ };
22
+ export declare const parseFormDataBody: <T extends BodyData = BodyData>(request: Request, options?: ParseBodyOptions) => Promise<T>;
@@ -1,5 +1,5 @@
1
- import { IPluginInstance, RpdApplicationConfig } from "~/types";
2
- import { IRpdServer } from "./server";
1
+ import { RpdApplicationConfig } from "~/types";
2
+ import { IRpdServer, RapidPlugin } from "./server";
3
3
  import { Next, RouteContext } from "./routeContext";
4
4
  export interface HttpHandlerContext {
5
5
  routerContext: RouteContext;
@@ -10,7 +10,7 @@ export interface HttpHandlerContext {
10
10
  output?: any;
11
11
  status?: Response["status"];
12
12
  }
13
- export type PluginHttpHandler = (plugin: IPluginInstance, ctx: HttpHandlerContext, options: any) => void | Promise<void>;
13
+ export type PluginHttpHandler = (plugin: RapidPlugin, ctx: HttpHandlerContext, options: any) => void | Promise<void>;
14
14
  export type HttpRequestHandler = (ctx: HttpHandlerContext, options: any) => void | Promise<void>;
15
15
  export interface IPluginHttpHandler {
16
16
  code: string;
@@ -1,27 +1,32 @@
1
1
  import { RpdApplicationConfig } from "~/types";
2
- import { IRpdServer } from "./server";
3
- export declare function loadPlugins(): Promise<void>;
4
- /** 初始化插件时调用。 */
5
- export declare function initPlugins(server: IRpdServer): Promise<void>;
6
- /** 注册中间件 */
7
- export declare function registerMiddlewares(server: IRpdServer): Promise<void>;
8
- /** 注册接口动作处理程序 */
9
- export declare function registerHttpHandlers(server: IRpdServer): Promise<void>;
10
- /** 注册事件处理程序 */
11
- export declare function registerEventHandlers(server: IRpdServer): Promise<void>;
12
- /** 注册消息处理程序 */
13
- export declare function registerMessageHandlers(server: IRpdServer): Promise<void>;
14
- /** 注册任务处理程序 */
15
- export declare function registerTaskProcessors(server: IRpdServer): Promise<void>;
16
- /** 在加载应用前调用。 */
17
- export declare function onLoadingApplication(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<void>;
18
- /** 配置数据模型 */
19
- export declare function configureModels(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<void>;
20
- /** 配置模型属性 */
21
- export declare function configureModelProperties(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<void>;
22
- /** 配置路由 */
23
- export declare function configureRoutes(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<void>;
24
- /** 在应用配置加载完成后调用。此时插件可以进行一些数据的初始化工作。 */
25
- export declare function onApplicationLoaded(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<void>;
26
- /** 在应用准备完成后调用。此时服务器已经可以处理网络请求。 */
27
- export declare function onApplicationReady(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<void>;
2
+ import { IRpdServer, RapidPlugin } from "./server";
3
+ declare class PluginManager {
4
+ #private;
5
+ constructor(server: IRpdServer);
6
+ loadPlugins(plugins: RapidPlugin[]): Promise<void>;
7
+ /** 初始化插件时调用。 */
8
+ initPlugins(): Promise<void>;
9
+ /** 注册中间件 */
10
+ registerMiddlewares(): Promise<void>;
11
+ /** 注册接口动作处理程序 */
12
+ registerHttpHandlers(): Promise<void>;
13
+ /** 注册事件处理程序 */
14
+ registerEventHandlers(): Promise<void>;
15
+ /** 注册消息处理程序 */
16
+ registerMessageHandlers(): Promise<void>;
17
+ /** 注册任务处理程序 */
18
+ registerTaskProcessors(): Promise<void>;
19
+ /** 在加载应用前调用。 */
20
+ onLoadingApplication(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<void>;
21
+ /** 配置数据模型 */
22
+ configureModels(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<void>;
23
+ /** 配置模型属性 */
24
+ configureModelProperties(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<void>;
25
+ /** 配置路由 */
26
+ configureRoutes(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<void>;
27
+ /** 在应用配置加载完成后调用。此时插件可以进行一些数据的初始化工作。 */
28
+ onApplicationLoaded(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<void>;
29
+ /** 在应用准备完成后调用。此时服务器已经可以处理网络请求。 */
30
+ onApplicationReady(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<void>;
31
+ }
32
+ export default PluginManager;
@@ -0,0 +1,4 @@
1
+ export interface IRuntimeProvider {
2
+ copyFile(fromPath: string, toPath: string): Promise<void>;
3
+ removeFile(path: string): Promise<void>;
4
+ }
@@ -8,7 +8,6 @@ export declare class RouteContext {
8
8
  readonly state: Record<string, any>;
9
9
  method: string;
10
10
  path: string;
11
- status: HttpStatus;
12
11
  params: Record<string, string>;
13
12
  constructor(request: RapidRequest);
14
13
  set(headerName: string, headerValue: string): void;
@@ -1,4 +1,4 @@
1
- import { GetDataAccessorOptions, GetModelOptions, IDatabaseConfig, IPluginInstance, IQueryBuilder, IRpdDataAccessor, RapidServerConfig, RpdApplicationConfig, RpdDataModel, RpdServerEventTypes } from "~/types";
1
+ import { GetDataAccessorOptions, GetModelOptions, IDatabaseConfig, IQueryBuilder, IRpdDataAccessor, RapidServerConfig, RpdApplicationConfig, RpdDataModel, RpdServerEventTypes } from "~/types";
2
2
  import { IPluginHttpHandler, HttpRequestHandler } from "./httpHandler";
3
3
  import { Next } from "./routeContext";
4
4
  export interface IRpdServer {
@@ -8,14 +8,14 @@ export interface IRpdServer {
8
8
  queryDatabaseObject: (sql: string, params?: unknown[] | Record<string, unknown>) => Promise<any[]>;
9
9
  tryQueryDatabaseObject: (sql: string, params?: unknown[] | Record<string, unknown>) => Promise<any[]>;
10
10
  registerMiddleware(middleware: any): void;
11
- registerHttpHandler(plugin: IPluginInstance, options: IPluginHttpHandler): void;
11
+ registerHttpHandler(plugin: RapidPlugin, options: IPluginHttpHandler): void;
12
12
  getHttpHandlerByCode(code: string): HttpRequestHandler | undefined;
13
13
  getDataAccessor<T = any>(options: GetDataAccessorOptions): IRpdDataAccessor<T>;
14
14
  getApplicationConfig(): RpdApplicationConfig;
15
15
  appendApplicationConfig(config: Partial<RpdApplicationConfig>): any;
16
16
  getModel(options: GetModelOptions): RpdDataModel | undefined;
17
17
  registerEventHandler<K extends keyof RpdServerEventTypes>(eventName: K, listener: (...args: RpdServerEventTypes[K]) => void): this;
18
- emitEvent<K extends keyof RpdServerEventTypes>(eventName: K, sender: IPluginInstance, payload: RpdServerEventTypes[K][1]): void;
18
+ emitEvent<K extends keyof RpdServerEventTypes>(eventName: K, sender: RapidPlugin, payload: RpdServerEventTypes[K][1]): void;
19
19
  handleRequest(request: Request, next: Next): Promise<Response>;
20
20
  }
21
21
  export type RpdConfigurationItemTypes = "integer" | "text" | "boolean" | "date" | "datetime" | "json";
@@ -46,39 +46,39 @@ export interface RpdServerPluginConfigurableTargetOptions {
46
46
  targetCode: string;
47
47
  configurations: RpdConfigurationItemOptions[];
48
48
  }
49
- export interface IRpdServerPlugin {
49
+ export interface RapidPlugin {
50
50
  /** 插件代码 */
51
- code: string;
51
+ get code(): string;
52
52
  /** 插件描述 */
53
- description: string;
53
+ get description(): string;
54
54
  /** 插件可以提供哪些扩展能力 */
55
- extendingAbilities: RpdServerPluginExtendingAbilities[];
55
+ get extendingAbilities(): RpdServerPluginExtendingAbilities[];
56
56
  /** 插件可以配置的目标实体,以及和配置目标相关的配置项 */
57
- configurableTargets?: RpdServerPluginConfigurableTargetOptions[];
57
+ get configurableTargets(): RpdServerPluginConfigurableTargetOptions[];
58
58
  /** 插件的全局配置项 */
59
- configurations?: RpdConfigurationItemOptions[];
59
+ get configurations(): RpdConfigurationItemOptions[];
60
60
  /** 初始化插件时调用。插件可以在此时进行一些内部对象的初始化工作。 */
61
- initPlugin: (plugin: IPluginInstance, server: IRpdServer) => Promise<any>;
61
+ initPlugin(server: IRpdServer): Promise<any>;
62
62
  /** 注册中间件 */
63
- registerMiddlewares?: (server: IRpdServer) => Promise<any>;
63
+ registerMiddlewares(server: IRpdServer): Promise<any>;
64
64
  /** 注册接口动作处理程序 */
65
- registerHttpHandlers?: (server: IRpdServer) => Promise<any>;
65
+ registerHttpHandlers(server: IRpdServer): Promise<any>;
66
66
  /** 注册事件处理程序 */
67
- registerEventHandlers?: (server: IRpdServer) => Promise<any>;
67
+ registerEventHandlers(server: IRpdServer): Promise<any>;
68
68
  /** 注册消息处理程序 */
69
- registerMessageHandlers?: (server: IRpdServer) => Promise<any>;
69
+ registerMessageHandlers(server: IRpdServer): Promise<any>;
70
70
  /** 注册任务处理程序 */
71
- registerTaskProcessors?: (server: IRpdServer) => Promise<any>;
71
+ registerTaskProcessors(server: IRpdServer): Promise<any>;
72
72
  /** 在加载应用前调用。 */
73
- onLoadingApplication?: (server: IRpdServer, applicationConfig: RpdApplicationConfig) => Promise<any>;
73
+ onLoadingApplication(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<any>;
74
74
  /** 配置数据集合 */
75
- configureModels?: (server: IRpdServer, applicationConfig: RpdApplicationConfig) => Promise<any>;
75
+ configureModels(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<any>;
76
76
  /** 配置模型属性 */
77
- configureModelProperties?: (server: IRpdServer, applicationConfig: RpdApplicationConfig) => Promise<any>;
77
+ configureModelProperties(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<any>;
78
78
  /** 配置路由 */
79
- configureRoutes?: (server: IRpdServer, applicationConfig: RpdApplicationConfig) => Promise<any>;
79
+ configureRoutes(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<any>;
80
80
  /** 在应用配置加载完成后调用。此时插件可以进行一些数据的初始化工作。 */
81
- onApplicationLoaded?: (server: IRpdServer, applicationConfig: RpdApplicationConfig) => Promise<any>;
81
+ onApplicationLoaded(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<any>;
82
82
  /** 在应用准备完成后调用。此时服务器已经可以处理网络请求,可以对外广播消息。 */
83
- onApplicationReady?: (server: IRpdServer, applicationConfig: RpdApplicationConfig) => Promise<any>;
83
+ onApplicationReady(server: IRpdServer, applicationConfig: RpdApplicationConfig): Promise<any>;
84
84
  }
package/dist/index.d.ts CHANGED
@@ -5,3 +5,9 @@ export * from "./core/routeContext";
5
5
  export * from "./core/server";
6
6
  export * from "./utilities/jwtUtility";
7
7
  export * as bootstrapApplicationConfig from "./bootstrapApplicationConfig";
8
+ export { default as MetaManagePlugin } from "./plugins/metaManage/mod";
9
+ export { default as DataManagePlugin } from "./plugins/dataManage/mod";
10
+ export { default as RouteManagePlugin } from "./plugins/routeManage/mod";
11
+ export { default as WebhooksPlugin } from "./plugins/webhooks/mod";
12
+ export { default as AuthPlugin } from "./plugins/auth/mod";
13
+ export { default as FileManagePlugin } from "./plugins/fileManage/mod";