@ruiapp/rapid-core 0.1.83 → 0.2.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.
Files changed (143) hide show
  1. package/dist/bootstrapApplicationConfig.d.ts +6 -0
  2. package/dist/helpers/metaHelper.d.ts +3 -3
  3. package/dist/index.js +56 -24
  4. package/dist/plugins/webhooks/pluginConfig.d.ts +1 -0
  5. package/dist/types.d.ts +19 -1
  6. package/package.json +1 -1
  7. package/rollup.config.js +16 -16
  8. package/src/bootstrapApplicationConfig.ts +615 -602
  9. package/src/core/actionHandler.ts +22 -22
  10. package/src/core/eventManager.ts +20 -20
  11. package/src/core/facility.ts +7 -7
  12. package/src/core/http/formDataParser.ts +89 -89
  13. package/src/core/pluginManager.ts +175 -175
  14. package/src/core/providers/runtimeProvider.ts +5 -5
  15. package/src/core/request.ts +86 -86
  16. package/src/core/response.ts +76 -76
  17. package/src/core/routeContext.ts +43 -43
  18. package/src/core/routesBuilder.ts +88 -88
  19. package/src/core/server.ts +142 -142
  20. package/src/dataAccess/columnTypeMapper.ts +22 -22
  21. package/src/dataAccess/dataAccessTypes.ts +151 -151
  22. package/src/dataAccess/dataAccessor.ts +137 -137
  23. package/src/dataAccess/entityManager.ts +1499 -1505
  24. package/src/dataAccess/entityMapper.ts +100 -100
  25. package/src/dataAccess/propertyMapper.ts +28 -28
  26. package/src/deno-std/datetime/to_imf.ts +32 -32
  27. package/src/deno-std/encoding/base64.ts +141 -141
  28. package/src/deno-std/http/cookie.ts +372 -372
  29. package/src/facilities/log/LogFacility.ts +35 -35
  30. package/src/helpers/entityHelpers.ts +76 -76
  31. package/src/helpers/filterHelper.ts +47 -47
  32. package/src/helpers/metaHelper.ts +80 -76
  33. package/src/helpers/runCollectionEntityActionHandler.ts +27 -27
  34. package/src/index.ts +46 -46
  35. package/src/plugins/auth/AuthPlugin.ts +85 -85
  36. package/src/plugins/auth/actionHandlers/changePassword.ts +54 -54
  37. package/src/plugins/auth/actionHandlers/createSession.ts +63 -63
  38. package/src/plugins/auth/actionHandlers/deleteSession.ts +18 -18
  39. package/src/plugins/auth/actionHandlers/getMyProfile.ts +35 -35
  40. package/src/plugins/auth/actionHandlers/index.ts +8 -8
  41. package/src/plugins/auth/actionHandlers/resetPassword.ts +38 -38
  42. package/src/plugins/auth/models/AccessToken.ts +56 -56
  43. package/src/plugins/auth/models/index.ts +3 -3
  44. package/src/plugins/auth/routes/changePassword.ts +15 -15
  45. package/src/plugins/auth/routes/getMyProfile.ts +15 -15
  46. package/src/plugins/auth/routes/index.ts +7 -7
  47. package/src/plugins/auth/routes/resetPassword.ts +15 -15
  48. package/src/plugins/auth/routes/signin.ts +15 -15
  49. package/src/plugins/auth/routes/signout.ts +15 -15
  50. package/src/plugins/cronJob/CronJobPlugin.ts +112 -112
  51. package/src/plugins/cronJob/CronJobPluginTypes.ts +49 -49
  52. package/src/plugins/cronJob/actionHandlers/index.ts +4 -4
  53. package/src/plugins/cronJob/actionHandlers/runCronJob.ts +29 -29
  54. package/src/plugins/cronJob/routes/index.ts +3 -3
  55. package/src/plugins/cronJob/routes/runCronJob.ts +15 -15
  56. package/src/plugins/dataManage/DataManagePlugin.ts +163 -163
  57. package/src/plugins/dataManage/actionHandlers/addEntityRelations.ts +20 -20
  58. package/src/plugins/dataManage/actionHandlers/countCollectionEntities.ts +15 -15
  59. package/src/plugins/dataManage/actionHandlers/createCollectionEntitiesBatch.ts +42 -42
  60. package/src/plugins/dataManage/actionHandlers/createCollectionEntity.ts +24 -24
  61. package/src/plugins/dataManage/actionHandlers/deleteCollectionEntities.ts +38 -38
  62. package/src/plugins/dataManage/actionHandlers/deleteCollectionEntityById.ts +22 -22
  63. package/src/plugins/dataManage/actionHandlers/findCollectionEntities.ts +26 -26
  64. package/src/plugins/dataManage/actionHandlers/findCollectionEntityById.ts +21 -21
  65. package/src/plugins/dataManage/actionHandlers/queryDatabase.ts +22 -22
  66. package/src/plugins/dataManage/actionHandlers/removeEntityRelations.ts +20 -20
  67. package/src/plugins/dataManage/actionHandlers/updateCollectionEntityById.ts +35 -35
  68. package/src/plugins/entityAccessControl/EntityAccessControlPlugin.ts +146 -146
  69. package/src/plugins/fileManage/FileManagePlugin.ts +52 -52
  70. package/src/plugins/fileManage/actionHandlers/downloadDocument.ts +36 -36
  71. package/src/plugins/fileManage/actionHandlers/downloadFile.ts +44 -44
  72. package/src/plugins/fileManage/actionHandlers/uploadFile.ts +33 -33
  73. package/src/plugins/fileManage/routes/downloadDocument.ts +15 -15
  74. package/src/plugins/fileManage/routes/downloadFile.ts +15 -15
  75. package/src/plugins/fileManage/routes/index.ts +5 -5
  76. package/src/plugins/fileManage/routes/uploadFile.ts +15 -15
  77. package/src/plugins/metaManage/MetaManagePlugin.ts +500 -488
  78. package/src/plugins/metaManage/actionHandlers/getMetaModelDetail.ts +10 -10
  79. package/src/plugins/metaManage/actionHandlers/listMetaModels.ts +9 -9
  80. package/src/plugins/metaManage/actionHandlers/listMetaRoutes.ts +9 -9
  81. package/src/plugins/routeManage/RouteManagePlugin.ts +62 -62
  82. package/src/plugins/routeManage/actionHandlers/httpProxy.ts +13 -13
  83. package/src/plugins/sequence/SequencePlugin.ts +136 -136
  84. package/src/plugins/sequence/SequencePluginTypes.ts +69 -69
  85. package/src/plugins/sequence/SequenceService.ts +81 -81
  86. package/src/plugins/sequence/actionHandlers/generateSn.ts +32 -32
  87. package/src/plugins/sequence/actionHandlers/index.ts +4 -4
  88. package/src/plugins/sequence/models/SequenceAutoIncrementRecord.ts +49 -49
  89. package/src/plugins/sequence/models/SequenceRule.ts +42 -42
  90. package/src/plugins/sequence/models/index.ts +4 -4
  91. package/src/plugins/sequence/routes/generateSn.ts +15 -15
  92. package/src/plugins/sequence/routes/index.ts +3 -3
  93. package/src/plugins/sequence/segment-utility.ts +11 -11
  94. package/src/plugins/sequence/segments/autoIncrement.ts +78 -78
  95. package/src/plugins/sequence/segments/dayOfMonth.ts +17 -17
  96. package/src/plugins/sequence/segments/index.ts +9 -9
  97. package/src/plugins/sequence/segments/literal.ts +14 -14
  98. package/src/plugins/sequence/segments/month.ts +17 -17
  99. package/src/plugins/sequence/segments/parameter.ts +18 -18
  100. package/src/plugins/sequence/segments/year.ts +17 -17
  101. package/src/plugins/serverOperation/ServerOperationPlugin.ts +91 -91
  102. package/src/plugins/serverOperation/ServerOperationPluginTypes.ts +15 -15
  103. package/src/plugins/serverOperation/actionHandlers/index.ts +4 -4
  104. package/src/plugins/setting/SettingPlugin.ts +68 -68
  105. package/src/plugins/setting/SettingPluginTypes.ts +37 -37
  106. package/src/plugins/setting/SettingService.ts +213 -213
  107. package/src/plugins/setting/actionHandlers/getSystemSettingValues.ts +30 -30
  108. package/src/plugins/setting/actionHandlers/getUserSettingValues.ts +38 -38
  109. package/src/plugins/setting/actionHandlers/index.ts +6 -6
  110. package/src/plugins/setting/actionHandlers/setSystemSettingValues.ts +30 -30
  111. package/src/plugins/setting/models/SystemSettingGroupSetting.ts +57 -57
  112. package/src/plugins/setting/models/SystemSettingItem.ts +42 -42
  113. package/src/plugins/setting/models/SystemSettingItemSetting.ts +73 -73
  114. package/src/plugins/setting/models/UserSettingGroupSetting.ts +57 -57
  115. package/src/plugins/setting/models/UserSettingItem.ts +49 -49
  116. package/src/plugins/setting/models/UserSettingItemSetting.ts +73 -73
  117. package/src/plugins/setting/models/index.ts +8 -8
  118. package/src/plugins/setting/routes/getSystemSettingValues.ts +15 -15
  119. package/src/plugins/setting/routes/getUserSettingValues.ts +15 -15
  120. package/src/plugins/setting/routes/index.ts +5 -5
  121. package/src/plugins/setting/routes/setSystemSettingValues.ts +15 -15
  122. package/src/plugins/stateMachine/StateMachinePlugin.ts +186 -186
  123. package/src/plugins/stateMachine/StateMachinePluginTypes.ts +48 -48
  124. package/src/plugins/stateMachine/actionHandlers/index.ts +4 -4
  125. package/src/plugins/stateMachine/actionHandlers/sendStateMachineEvent.ts +51 -51
  126. package/src/plugins/stateMachine/models/StateMachine.ts +42 -42
  127. package/src/plugins/stateMachine/models/index.ts +3 -3
  128. package/src/plugins/stateMachine/routes/index.ts +3 -3
  129. package/src/plugins/stateMachine/routes/sendStateMachineEvent.ts +15 -15
  130. package/src/plugins/webhooks/WebhooksPlugin.ts +148 -148
  131. package/src/plugins/webhooks/pluginConfig.ts +1 -0
  132. package/src/polyfill.ts +5 -5
  133. package/src/proxy/mod.ts +38 -38
  134. package/src/queryBuilder/queryBuilder.ts +637 -637
  135. package/src/server.ts +463 -451
  136. package/src/types.ts +659 -637
  137. package/src/utilities/accessControlUtility.ts +33 -33
  138. package/src/utilities/errorUtility.ts +15 -15
  139. package/src/utilities/fsUtility.ts +61 -61
  140. package/src/utilities/httpUtility.ts +19 -19
  141. package/src/utilities/jwtUtility.ts +26 -26
  142. package/src/utilities/timeUtility.ts +9 -9
  143. package/tsconfig.json +19 -19
@@ -1,137 +1,137 @@
1
- import { CreateEntityOptions, IRpdDataAccessor, RpdDataModel, IDatabaseAccessor, DatabaseQuery } from "~/types";
2
- import QueryBuilder from "~/queryBuilder/queryBuilder";
3
- import { first, set } from "lodash";
4
- import { IRpdServer } from "~/core/server";
5
- import { Logger } from "~/facilities/log/LogFacility";
6
- import { newDatabaseError } from "~/utilities/errorUtility";
7
- import { CountRowOptions, FindRowOptions, UpdateRowOptions } from "./dataAccessTypes";
8
-
9
- export interface IDataAccessorOptions {
10
- model: RpdDataModel;
11
- queryBuilder: QueryBuilder;
12
- }
13
-
14
- export default class DataAccessor<T = any> implements IRpdDataAccessor<T> {
15
- #logger: Logger;
16
- #model: RpdDataModel;
17
- #queryBuilder: QueryBuilder;
18
- #server: IRpdServer;
19
- #databaseAccessor: IDatabaseAccessor;
20
-
21
- constructor(server: IRpdServer, databaseAccessor: IDatabaseAccessor, options: IDataAccessorOptions) {
22
- this.#server = server;
23
- this.#logger = server.getLogger();
24
- this.#databaseAccessor = databaseAccessor;
25
- this.#queryBuilder = options.queryBuilder;
26
- this.#model = options.model;
27
- }
28
-
29
- getModel() {
30
- return this.#model;
31
- }
32
-
33
- async create(entity: Partial<T>): Promise<T> {
34
- const options: CreateEntityOptions = {
35
- entity,
36
- };
37
- const query = this.#queryBuilder.insert(this.#model, options);
38
- const result = await this.#databaseAccessor.queryDatabaseObject(query.command, query.params);
39
- return first(result);
40
- }
41
-
42
- async updateById(id: any, entity: Partial<T>): Promise<{ count: number }> {
43
- const options: UpdateRowOptions = {
44
- entity,
45
- filters: [
46
- {
47
- field: {
48
- name: "id",
49
- },
50
- operator: "eq",
51
- value: id,
52
- },
53
- ],
54
- };
55
- const query = this.#queryBuilder.update(this.#model, options);
56
- const result = await this.#databaseAccessor.queryDatabaseObject(query.command, query.params);
57
- return first(result);
58
- }
59
-
60
- async find(options: FindRowOptions): Promise<T[]> {
61
- this.#logger.debug(`Finding '${this.#model.singularCode}' entity.`, { options });
62
- let query: DatabaseQuery;
63
- if (this.#model.base) {
64
- const baseModel = this.#server.getModel({
65
- singularCode: this.#model.base,
66
- });
67
- query = this.#queryBuilder.selectDerived(this.#model, baseModel, options);
68
- } else {
69
- query = this.#queryBuilder.select(this.#model, options);
70
- }
71
-
72
- try {
73
- return await this.#databaseAccessor.queryDatabaseObject(query.command, query.params);
74
- } catch (err) {
75
- throw newDatabaseError(`Failed to find entities. ${err.message}`, err);
76
- }
77
- }
78
-
79
- async findOne(options: FindRowOptions): Promise<T> {
80
- set(options, "pagination.limit", 1);
81
- const list = await this.find(options);
82
- return first(list);
83
- }
84
-
85
- async findById(id: any): Promise<T | null> {
86
- const options: FindRowOptions = {
87
- filters: [
88
- {
89
- field: {
90
- name: "id",
91
- },
92
- operator: "eq",
93
- value: id,
94
- },
95
- ],
96
- };
97
- const result = await this.findOne(options);
98
- return result;
99
- }
100
-
101
- async count(options: CountRowOptions): Promise<any> {
102
- let query: DatabaseQuery;
103
- if (this.#model.base) {
104
- const baseModel = this.#server.getModel({
105
- singularCode: this.#model.base,
106
- });
107
- query = this.#queryBuilder.countDerived(this.#model, baseModel, options);
108
- } else {
109
- query = this.#queryBuilder.count(this.#model, options);
110
- }
111
- const result = await this.#databaseAccessor.queryDatabaseObject(query.command, query.params);
112
-
113
- const row = first(result);
114
- if (row) {
115
- return row;
116
- }
117
- return {
118
- count: 0,
119
- };
120
- }
121
-
122
- async deleteById(id: any) {
123
- const options: FindRowOptions = {
124
- filters: [
125
- {
126
- field: {
127
- name: "id",
128
- },
129
- operator: "eq",
130
- value: id,
131
- },
132
- ],
133
- };
134
- const query = this.#queryBuilder.delete(this.#model, options);
135
- await this.#databaseAccessor.queryDatabaseObject(query.command, query.params);
136
- }
137
- }
1
+ import { CreateEntityOptions, IRpdDataAccessor, RpdDataModel, IDatabaseAccessor, DatabaseQuery } from "~/types";
2
+ import QueryBuilder from "~/queryBuilder/queryBuilder";
3
+ import { first, set } from "lodash";
4
+ import { IRpdServer } from "~/core/server";
5
+ import { Logger } from "~/facilities/log/LogFacility";
6
+ import { newDatabaseError } from "~/utilities/errorUtility";
7
+ import { CountRowOptions, FindRowOptions, UpdateRowOptions } from "./dataAccessTypes";
8
+
9
+ export interface IDataAccessorOptions {
10
+ model: RpdDataModel;
11
+ queryBuilder: QueryBuilder;
12
+ }
13
+
14
+ export default class DataAccessor<T = any> implements IRpdDataAccessor<T> {
15
+ #logger: Logger;
16
+ #model: RpdDataModel;
17
+ #queryBuilder: QueryBuilder;
18
+ #server: IRpdServer;
19
+ #databaseAccessor: IDatabaseAccessor;
20
+
21
+ constructor(server: IRpdServer, databaseAccessor: IDatabaseAccessor, options: IDataAccessorOptions) {
22
+ this.#server = server;
23
+ this.#logger = server.getLogger();
24
+ this.#databaseAccessor = databaseAccessor;
25
+ this.#queryBuilder = options.queryBuilder;
26
+ this.#model = options.model;
27
+ }
28
+
29
+ getModel() {
30
+ return this.#model;
31
+ }
32
+
33
+ async create(entity: Partial<T>): Promise<T> {
34
+ const options: CreateEntityOptions = {
35
+ entity,
36
+ };
37
+ const query = this.#queryBuilder.insert(this.#model, options);
38
+ const result = await this.#databaseAccessor.queryDatabaseObject(query.command, query.params);
39
+ return first(result);
40
+ }
41
+
42
+ async updateById(id: any, entity: Partial<T>): Promise<{ count: number }> {
43
+ const options: UpdateRowOptions = {
44
+ entity,
45
+ filters: [
46
+ {
47
+ field: {
48
+ name: "id",
49
+ },
50
+ operator: "eq",
51
+ value: id,
52
+ },
53
+ ],
54
+ };
55
+ const query = this.#queryBuilder.update(this.#model, options);
56
+ const result = await this.#databaseAccessor.queryDatabaseObject(query.command, query.params);
57
+ return first(result);
58
+ }
59
+
60
+ async find(options: FindRowOptions): Promise<T[]> {
61
+ this.#logger.debug(`Finding '${this.#model.singularCode}' entity.`, { options });
62
+ let query: DatabaseQuery;
63
+ if (this.#model.base) {
64
+ const baseModel = this.#server.getModel({
65
+ singularCode: this.#model.base,
66
+ });
67
+ query = this.#queryBuilder.selectDerived(this.#model, baseModel, options);
68
+ } else {
69
+ query = this.#queryBuilder.select(this.#model, options);
70
+ }
71
+
72
+ try {
73
+ return await this.#databaseAccessor.queryDatabaseObject(query.command, query.params);
74
+ } catch (err) {
75
+ throw newDatabaseError(`Failed to find entities. ${err.message}`, err);
76
+ }
77
+ }
78
+
79
+ async findOne(options: FindRowOptions): Promise<T> {
80
+ set(options, "pagination.limit", 1);
81
+ const list = await this.find(options);
82
+ return first(list);
83
+ }
84
+
85
+ async findById(id: any): Promise<T | null> {
86
+ const options: FindRowOptions = {
87
+ filters: [
88
+ {
89
+ field: {
90
+ name: "id",
91
+ },
92
+ operator: "eq",
93
+ value: id,
94
+ },
95
+ ],
96
+ };
97
+ const result = await this.findOne(options);
98
+ return result;
99
+ }
100
+
101
+ async count(options: CountRowOptions): Promise<any> {
102
+ let query: DatabaseQuery;
103
+ if (this.#model.base) {
104
+ const baseModel = this.#server.getModel({
105
+ singularCode: this.#model.base,
106
+ });
107
+ query = this.#queryBuilder.countDerived(this.#model, baseModel, options);
108
+ } else {
109
+ query = this.#queryBuilder.count(this.#model, options);
110
+ }
111
+ const result = await this.#databaseAccessor.queryDatabaseObject(query.command, query.params);
112
+
113
+ const row = first(result);
114
+ if (row) {
115
+ return row;
116
+ }
117
+ return {
118
+ count: 0,
119
+ };
120
+ }
121
+
122
+ async deleteById(id: any) {
123
+ const options: FindRowOptions = {
124
+ filters: [
125
+ {
126
+ field: {
127
+ name: "id",
128
+ },
129
+ operator: "eq",
130
+ value: id,
131
+ },
132
+ ],
133
+ };
134
+ const query = this.#queryBuilder.delete(this.#model, options);
135
+ await this.#databaseAccessor.queryDatabaseObject(query.command, query.params);
136
+ }
137
+ }