adminforth 1.3.54-next.8 → 1.3.55-next.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 (250) hide show
  1. package/dist/auth.d.ts +31 -0
  2. package/dist/auth.d.ts.map +1 -0
  3. package/dist/auth.js +42 -56
  4. package/dist/auth.js.map +1 -0
  5. package/dist/basePlugin.d.ts +18 -0
  6. package/dist/basePlugin.d.ts.map +1 -0
  7. package/dist/basePlugin.js +1 -0
  8. package/dist/basePlugin.js.map +1 -0
  9. package/dist/dataConnectors/baseConnector.d.ts +94 -0
  10. package/dist/dataConnectors/baseConnector.d.ts.map +1 -0
  11. package/dist/dataConnectors/baseConnector.js +108 -122
  12. package/dist/dataConnectors/baseConnector.js.map +1 -0
  13. package/dist/dataConnectors/clickhouse.d.ts +92 -0
  14. package/dist/dataConnectors/clickhouse.d.ts.map +1 -0
  15. package/dist/dataConnectors/clickhouse.js +132 -149
  16. package/dist/dataConnectors/clickhouse.js.map +1 -0
  17. package/dist/dataConnectors/mongo.d.ts +93 -0
  18. package/dist/dataConnectors/mongo.d.ts.map +1 -0
  19. package/dist/dataConnectors/mongo.js +75 -101
  20. package/dist/dataConnectors/mongo.js.map +1 -0
  21. package/dist/dataConnectors/postgres.d.ts +71 -0
  22. package/dist/dataConnectors/postgres.d.ts.map +1 -0
  23. package/dist/dataConnectors/postgres.js +124 -143
  24. package/dist/dataConnectors/postgres.js.map +1 -0
  25. package/dist/dataConnectors/sqlite.d.ts +67 -0
  26. package/dist/dataConnectors/sqlite.d.ts.map +1 -0
  27. package/dist/dataConnectors/sqlite.js +113 -130
  28. package/dist/dataConnectors/sqlite.js.map +1 -0
  29. package/dist/index.d.ts +92 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +197 -217
  32. package/dist/index.js.map +1 -0
  33. package/dist/modules/codeInjector.d.ts +35 -0
  34. package/dist/modules/codeInjector.d.ts.map +1 -0
  35. package/dist/modules/codeInjector.js +480 -486
  36. package/dist/modules/codeInjector.js.map +1 -0
  37. package/dist/modules/configValidator.d.ts +12 -0
  38. package/dist/modules/configValidator.d.ts.map +1 -0
  39. package/dist/modules/configValidator.js +31 -22
  40. package/dist/modules/configValidator.js.map +1 -0
  41. package/dist/modules/operationalResource.d.ts +17 -0
  42. package/dist/modules/operationalResource.d.ts.map +1 -0
  43. package/dist/modules/operationalResource.js +50 -70
  44. package/dist/modules/operationalResource.js.map +1 -0
  45. package/dist/modules/restApi.d.ts +10 -0
  46. package/dist/modules/restApi.d.ts.map +1 -0
  47. package/dist/modules/restApi.js +104 -116
  48. package/dist/modules/restApi.js.map +1 -0
  49. package/dist/modules/styleGenerator.d.ts +9 -0
  50. package/dist/modules/styleGenerator.d.ts.map +1 -0
  51. package/dist/modules/styleGenerator.js +1 -0
  52. package/dist/modules/styleGenerator.js.map +1 -0
  53. package/dist/modules/styles.d.ts +96 -0
  54. package/dist/modules/styles.d.ts.map +1 -0
  55. package/dist/modules/styles.js +1 -0
  56. package/dist/modules/styles.js.map +1 -0
  57. package/dist/modules/utils.d.ts +39 -0
  58. package/dist/modules/utils.d.ts.map +1 -0
  59. package/dist/modules/utils.js +1 -0
  60. package/dist/modules/utils.js.map +1 -0
  61. package/dist/plugins/audit-log/types.d.ts +35 -0
  62. package/dist/plugins/audit-log/types.d.ts.map +1 -0
  63. package/dist/plugins/audit-log/types.js +2 -0
  64. package/dist/plugins/audit-log/types.js.map +1 -0
  65. package/dist/plugins/chat-gpt/types.d.ts +82 -0
  66. package/dist/plugins/chat-gpt/types.d.ts.map +1 -0
  67. package/dist/plugins/chat-gpt/types.js +2 -0
  68. package/dist/plugins/chat-gpt/types.js.map +1 -0
  69. package/dist/plugins/email-password-reset/types.d.ts +28 -0
  70. package/dist/plugins/email-password-reset/types.d.ts.map +1 -0
  71. package/dist/plugins/email-password-reset/types.js +2 -0
  72. package/dist/plugins/email-password-reset/types.js.map +1 -0
  73. package/dist/plugins/foreign-inline-list/types.d.ts +19 -0
  74. package/dist/plugins/foreign-inline-list/types.d.ts.map +1 -0
  75. package/dist/plugins/foreign-inline-list/types.js +2 -0
  76. package/dist/plugins/foreign-inline-list/types.js.map +1 -0
  77. package/dist/plugins/import-export/types.d.ts +3 -0
  78. package/dist/plugins/import-export/types.d.ts.map +1 -0
  79. package/dist/plugins/import-export/types.js +2 -0
  80. package/dist/plugins/import-export/types.js.map +1 -0
  81. package/dist/plugins/rich-editor/custom/async-queue.d.ts +8 -0
  82. package/dist/plugins/rich-editor/custom/async-queue.d.ts.map +1 -0
  83. package/dist/plugins/rich-editor/custom/async-queue.js +29 -0
  84. package/dist/plugins/rich-editor/custom/async-queue.js.map +1 -0
  85. package/dist/plugins/rich-editor/dist/custom/async-queue.d.ts +8 -0
  86. package/dist/plugins/rich-editor/dist/custom/async-queue.d.ts.map +1 -0
  87. package/dist/plugins/rich-editor/dist/custom/async-queue.js +29 -0
  88. package/dist/plugins/rich-editor/dist/custom/async-queue.js.map +1 -0
  89. package/dist/plugins/rich-editor/types.d.ts +153 -0
  90. package/dist/plugins/rich-editor/types.d.ts.map +1 -0
  91. package/dist/plugins/rich-editor/types.js +16 -0
  92. package/dist/plugins/rich-editor/types.js.map +1 -0
  93. package/dist/plugins/two-factors-auth/types.d.ts +18 -0
  94. package/dist/plugins/two-factors-auth/types.d.ts.map +1 -0
  95. package/dist/plugins/two-factors-auth/types.js +2 -0
  96. package/dist/plugins/two-factors-auth/types.js.map +1 -0
  97. package/dist/plugins/upload/types.d.ts +132 -0
  98. package/dist/plugins/upload/types.d.ts.map +1 -0
  99. package/dist/plugins/upload/types.js +2 -0
  100. package/dist/plugins/upload/types.js.map +1 -0
  101. package/dist/servers/express.d.ts +18 -0
  102. package/dist/servers/express.d.ts.map +1 -0
  103. package/dist/servers/express.js +30 -42
  104. package/dist/servers/express.js.map +1 -0
  105. package/dist/types/AdminForthConfig.d.ts +1619 -0
  106. package/dist/types/AdminForthConfig.d.ts.map +1 -0
  107. package/dist/types/AdminForthConfig.js +1 -0
  108. package/dist/types/AdminForthConfig.js.map +1 -0
  109. package/{types/FrontendAPI.ts → dist/types/FrontendAPI.d.ts} +27 -52
  110. package/dist/types/FrontendAPI.d.ts.map +1 -0
  111. package/dist/types/FrontendAPI.js +1 -0
  112. package/dist/types/FrontendAPI.js.map +1 -0
  113. package/package.json +15 -5
  114. package/auth.ts +0 -140
  115. package/basePlugin.ts +0 -70
  116. package/dataConnectors/baseConnector.ts +0 -216
  117. package/dataConnectors/clickhouse.ts +0 -338
  118. package/dataConnectors/mongo.ts +0 -202
  119. package/dataConnectors/postgres.ts +0 -306
  120. package/dataConnectors/sqlite.ts +0 -254
  121. package/dist/spa/.eslintrc.cjs +0 -14
  122. package/dist/spa/README.md +0 -39
  123. package/dist/spa/env.d.ts +0 -1
  124. package/dist/spa/index.html +0 -23
  125. package/dist/spa/package-lock.json +0 -4573
  126. package/dist/spa/package.json +0 -49
  127. package/dist/spa/postcss.config.js +0 -6
  128. package/dist/spa/public/assets/favicon.png +0 -0
  129. package/dist/spa/src/App.vue +0 -314
  130. package/dist/spa/src/assets/base.css +0 -2
  131. package/dist/spa/src/assets/logo.svg +0 -19
  132. package/dist/spa/src/components/AcceptModal.vue +0 -45
  133. package/dist/spa/src/components/Breadcrumbs.vue +0 -41
  134. package/dist/spa/src/components/BreadcrumbsWithButtons.vue +0 -26
  135. package/dist/spa/src/components/CustomDatePicker.vue +0 -176
  136. package/dist/spa/src/components/CustomDateRangePicker.vue +0 -218
  137. package/dist/spa/src/components/CustomRangePicker.vue +0 -152
  138. package/dist/spa/src/components/Dropdown.vue +0 -168
  139. package/dist/spa/src/components/Filters.vue +0 -222
  140. package/dist/spa/src/components/HelloWorld.vue +0 -17
  141. package/dist/spa/src/components/MenuLink.vue +0 -24
  142. package/dist/spa/src/components/ResourceForm.vue +0 -294
  143. package/dist/spa/src/components/ResourceListTable.vue +0 -394
  144. package/dist/spa/src/components/SingleSkeletLoader.vue +0 -13
  145. package/dist/spa/src/components/SkeleteLoader.vue +0 -23
  146. package/dist/spa/src/components/Toast.vue +0 -77
  147. package/dist/spa/src/components/ValueRenderer.vue +0 -66
  148. package/dist/spa/src/components/icons/IconCalendar.vue +0 -5
  149. package/dist/spa/src/components/icons/IconCommunity.vue +0 -7
  150. package/dist/spa/src/components/icons/IconDocumentation.vue +0 -7
  151. package/dist/spa/src/components/icons/IconEcosystem.vue +0 -7
  152. package/dist/spa/src/components/icons/IconSupport.vue +0 -7
  153. package/dist/spa/src/components/icons/IconTime.vue +0 -5
  154. package/dist/spa/src/components/icons/IconTooling.vue +0 -19
  155. package/dist/spa/src/composables/useFrontendApi.ts +0 -26
  156. package/dist/spa/src/composables/useStores.ts +0 -127
  157. package/dist/spa/src/index.scss +0 -27
  158. package/dist/spa/src/main.ts +0 -18
  159. package/dist/spa/src/router/index.ts +0 -63
  160. package/dist/spa/src/spa_types/core.ts +0 -51
  161. package/dist/spa/src/stores/core.ts +0 -144
  162. package/dist/spa/src/stores/filters.ts +0 -22
  163. package/dist/spa/src/stores/modal.ts +0 -48
  164. package/dist/spa/src/stores/toast.ts +0 -15
  165. package/dist/spa/src/stores/user.ts +0 -72
  166. package/dist/spa/src/types/AdminForthConfig.ts +0 -1477
  167. package/dist/spa/src/types/FrontendAPI.ts +0 -121
  168. package/dist/spa/src/utils.ts +0 -103
  169. package/dist/spa/src/views/CreateView.vue +0 -156
  170. package/dist/spa/src/views/EditView.vue +0 -157
  171. package/dist/spa/src/views/ListView.vue +0 -258
  172. package/dist/spa/src/views/LoginView.vue +0 -160
  173. package/dist/spa/src/views/ResourceParent.vue +0 -17
  174. package/dist/spa/src/views/ShowView.vue +0 -184
  175. package/dist/spa/tailwind.config.js +0 -17
  176. package/dist/spa/tsconfig.app.json +0 -14
  177. package/dist/spa/tsconfig.json +0 -11
  178. package/dist/spa/tsconfig.node.json +0 -19
  179. package/dist/spa/vite.config.ts +0 -56
  180. package/index.ts +0 -428
  181. package/modules/codeInjector.ts +0 -736
  182. package/modules/configValidator.ts +0 -571
  183. package/modules/operationalResource.ts +0 -98
  184. package/modules/restApi.ts +0 -718
  185. package/modules/styleGenerator.ts +0 -55
  186. package/modules/styles.ts +0 -126
  187. package/modules/utils.ts +0 -472
  188. package/servers/express.ts +0 -259
  189. package/spa/.eslintrc.cjs +0 -14
  190. package/spa/README.md +0 -39
  191. package/spa/env.d.ts +0 -1
  192. package/spa/index.html +0 -23
  193. package/spa/package-lock.json +0 -4602
  194. package/spa/package.json +0 -51
  195. package/spa/postcss.config.js +0 -6
  196. package/spa/public/assets/favicon.png +0 -0
  197. package/spa/src/App.vue +0 -418
  198. package/spa/src/assets/base.css +0 -2
  199. package/spa/src/assets/logo.svg +0 -19
  200. package/spa/src/components/AcceptModal.vue +0 -45
  201. package/spa/src/components/Breadcrumbs.vue +0 -41
  202. package/spa/src/components/BreadcrumbsWithButtons.vue +0 -26
  203. package/spa/src/components/CustomDatePicker.vue +0 -176
  204. package/spa/src/components/CustomDateRangePicker.vue +0 -218
  205. package/spa/src/components/CustomRangePicker.vue +0 -156
  206. package/spa/src/components/Dropdown.vue +0 -168
  207. package/spa/src/components/Filters.vue +0 -222
  208. package/spa/src/components/HelloWorld.vue +0 -17
  209. package/spa/src/components/MenuLink.vue +0 -27
  210. package/spa/src/components/ResourceForm.vue +0 -290
  211. package/spa/src/components/ResourceListTable.vue +0 -466
  212. package/spa/src/components/SingleSkeletLoader.vue +0 -13
  213. package/spa/src/components/SkeleteLoader.vue +0 -23
  214. package/spa/src/components/ThreeDotsMenu.vue +0 -43
  215. package/spa/src/components/Toast.vue +0 -78
  216. package/spa/src/components/ValueRenderer.vue +0 -114
  217. package/spa/src/components/icons/IconCalendar.vue +0 -5
  218. package/spa/src/components/icons/IconCommunity.vue +0 -7
  219. package/spa/src/components/icons/IconDocumentation.vue +0 -7
  220. package/spa/src/components/icons/IconEcosystem.vue +0 -7
  221. package/spa/src/components/icons/IconSupport.vue +0 -7
  222. package/spa/src/components/icons/IconTime.vue +0 -5
  223. package/spa/src/components/icons/IconTooling.vue +0 -19
  224. package/spa/src/composables/useFrontendApi.ts +0 -26
  225. package/spa/src/composables/useStores.ts +0 -131
  226. package/spa/src/index.scss +0 -31
  227. package/spa/src/main.ts +0 -18
  228. package/spa/src/renderers/CompactUUID.vue +0 -48
  229. package/spa/src/renderers/CountryFlag.vue +0 -69
  230. package/spa/src/router/index.ts +0 -59
  231. package/spa/src/spa_types/core.ts +0 -53
  232. package/spa/src/stores/core.ts +0 -148
  233. package/spa/src/stores/filters.ts +0 -27
  234. package/spa/src/stores/modal.ts +0 -48
  235. package/spa/src/stores/toast.ts +0 -31
  236. package/spa/src/stores/user.ts +0 -72
  237. package/spa/src/utils.ts +0 -160
  238. package/spa/src/views/CreateView.vue +0 -167
  239. package/spa/src/views/EditView.vue +0 -170
  240. package/spa/src/views/ListView.vue +0 -352
  241. package/spa/src/views/LoginView.vue +0 -192
  242. package/spa/src/views/ResourceParent.vue +0 -17
  243. package/spa/src/views/ShowView.vue +0 -186
  244. package/spa/tailwind.config.js +0 -17
  245. package/spa/tsconfig.app.json +0 -14
  246. package/spa/tsconfig.json +0 -11
  247. package/spa/tsconfig.node.json +0 -19
  248. package/spa/vite.config.ts +0 -56
  249. package/tsconfig.json +0 -112
  250. package/types/AdminForthConfig.ts +0 -1762
package/dist/auth.d.ts ADDED
@@ -0,0 +1,31 @@
1
+ import AdminForth from './index.js';
2
+ declare class AdminForthAuth {
3
+ adminforth: AdminForth;
4
+ constructor(adminforth: any);
5
+ removeAuthCookie(response: any): void;
6
+ setAuthCookie({ expireInDays, response, username, pk }: {
7
+ expireInDays?: number;
8
+ response: any;
9
+ username: string;
10
+ pk: string | null;
11
+ }): void;
12
+ removeCustomCookie({ response, name }: {
13
+ response: any;
14
+ name: any;
15
+ }): void;
16
+ setCustomCookie({ response, payload }: {
17
+ response: any;
18
+ payload: {
19
+ name: string;
20
+ value: string;
21
+ expiry: number;
22
+ httpOnly: boolean;
23
+ };
24
+ }): void;
25
+ issueJWT(payload: Object, type: string, expiresIn?: string): string;
26
+ verify(jwtToken: string, mustHaveType: string, decodeUser?: boolean | undefined): Promise<Object>;
27
+ static generatePasswordHash(password: any): Promise<string>;
28
+ static verifyPassword(password: any, hashedPassword: any): Promise<boolean>;
29
+ }
30
+ export default AdminForthAuth;
31
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../auth.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,YAAY,CAAC;AAkCpC,cAAM,cAAc;IAClB,UAAU,EAAE,UAAU,CAAC;gBAEX,UAAU,KAAA;IAItB,gBAAgB,CAAC,QAAQ,KAAA;IAIzB,aAAa,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAC,EAAE;QACrD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,GAAG,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;KAClB;IAWD,kBAAkB,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;;;KAAA;IAInC,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QACrC,QAAQ,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAA;SAAC,CAAA;KACzF;IAKD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAc,GAAG,MAAM;IAWpE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAE,OAAO,GAAG,SAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;WAsChG,oBAAoB,CAAC,QAAQ,KAAA;WAM7B,cAAc,CAAC,QAAQ,KAAA,EAAE,cAAc,KAAA;CAOrD;AAED,eAAe,cAAc,CAAC"}
package/dist/auth.js CHANGED
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import jwt from 'jsonwebtoken';
11
2
  import crypto from 'crypto';
12
3
  // Function to generate a password hash using PBKDF2
@@ -70,60 +61,55 @@ class AdminForthAuth {
70
61
  // issue JWT token
71
62
  return jwt.sign(Object.assign(Object.assign({}, payload), { t: type }), secret, { expiresIn });
72
63
  }
73
- verify(jwtToken_1, mustHaveType_1) {
74
- return __awaiter(this, arguments, void 0, function* (jwtToken, mustHaveType, decodeUser = true) {
75
- // read ADMINFORH_SECRET from environment if not drop error
76
- const secret = process.env.ADMINFORTH_SECRET;
77
- if (!secret) {
78
- throw new Error('ADMINFORTH_SECRET environment not set');
64
+ async verify(jwtToken, mustHaveType, decodeUser = true) {
65
+ // read ADMINFORH_SECRET from environment if not drop error
66
+ const secret = process.env.ADMINFORTH_SECRET;
67
+ if (!secret) {
68
+ throw new Error('ADMINFORTH_SECRET environment not set');
69
+ }
70
+ let decoded;
71
+ try {
72
+ // verify JWT token
73
+ decoded = jwt.verify(jwtToken, secret);
74
+ }
75
+ catch (err) {
76
+ if (err.name === 'TokenExpiredError') {
77
+ console.error('Token expired:', err.message);
79
78
  }
80
- let decoded;
81
- try {
82
- // verify JWT token
83
- decoded = jwt.verify(jwtToken, secret);
79
+ else if (err.name === 'JsonWebTokenError') {
80
+ console.error('Token error:', err.message);
84
81
  }
85
- catch (err) {
86
- if (err.name === 'TokenExpiredError') {
87
- console.error('Token expired:', err.message);
88
- }
89
- else if (err.name === 'JsonWebTokenError') {
90
- console.error('Token error:', err.message);
91
- }
92
- else {
93
- console.error('Failed to verify JWT token', err);
94
- }
95
- return null;
82
+ else {
83
+ console.error('Failed to verify JWT token', err);
96
84
  }
97
- const { pk, t } = decoded;
98
- if (t !== mustHaveType) {
99
- console.error(`Invalid token type during verification: ${t}, must be ${mustHaveType}`);
85
+ return null;
86
+ }
87
+ const { pk, t } = decoded;
88
+ if (t !== mustHaveType) {
89
+ console.error(`Invalid token type during verification: ${t}, must be ${mustHaveType}`);
90
+ return null;
91
+ }
92
+ if (decodeUser !== false) {
93
+ const dbUser = await this.adminforth.getUserByPk(pk);
94
+ if (!dbUser) {
95
+ console.error(`User with pk ${pk} not found in database`);
96
+ // will logout user which was deleted
100
97
  return null;
101
98
  }
102
- if (decodeUser !== false) {
103
- const dbUser = yield this.adminforth.getUserByPk(pk);
104
- if (!dbUser) {
105
- console.error(`User with pk ${pk} not found in database`);
106
- // will logout user which was deleted
107
- return null;
108
- }
109
- decoded.dbUser = dbUser;
110
- }
111
- return decoded;
112
- });
99
+ decoded.dbUser = dbUser;
100
+ }
101
+ return decoded;
113
102
  }
114
- static generatePasswordHash(password) {
115
- return __awaiter(this, void 0, void 0, function* () {
116
- const salt = generateSalt();
117
- const hashedPassword = yield calcPasswordHash(password, salt);
118
- return `${salt}:${hashedPassword}`;
119
- });
103
+ static async generatePasswordHash(password) {
104
+ const salt = generateSalt();
105
+ const hashedPassword = await calcPasswordHash(password, salt);
106
+ return `${salt}:${hashedPassword}`;
120
107
  }
121
- static verifyPassword(password, hashedPassword) {
122
- return __awaiter(this, void 0, void 0, function* () {
123
- const [salt, hash] = hashedPassword.split(':');
124
- const newHash = yield calcPasswordHash(password, salt);
125
- return newHash === hash;
126
- });
108
+ static async verifyPassword(password, hashedPassword) {
109
+ const [salt, hash] = hashedPassword.split(':');
110
+ const newHash = await calcPasswordHash(password, salt);
111
+ return newHash === hash;
127
112
  }
128
113
  }
129
114
  export default AdminForthAuth;
115
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { AdminForthResource, IAdminForthPlugin, IAdminForth } from './types/AdminForthConfig.js';
2
+ export default class AdminForthPlugin implements IAdminForthPlugin {
3
+ adminforth: IAdminForth;
4
+ pluginDir: string;
5
+ customFolderName: string;
6
+ pluginInstanceId: string;
7
+ customFolderPath: string;
8
+ pluginOptions: any;
9
+ resourceConfig: AdminForthResource;
10
+ className: string;
11
+ activationOrder: number;
12
+ constructor(pluginOptions: any, metaUrl: string);
13
+ setupEndpoints(server: any): void;
14
+ instanceUniqueRepresentation(pluginOptions: any): string;
15
+ modifyResourceConfig(adminforth: IAdminForth, resourceConfig: AdminForthResource): void;
16
+ componentPath(componentFile: string): string;
17
+ }
18
+ //# sourceMappingURL=basePlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basePlugin.d.ts","sourceRoot":"","sources":["../basePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AASjG,MAAM,CAAC,OAAO,OAAO,gBAAiB,YAAW,iBAAiB;IAEhE,UAAU,EAAE,WAAW,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAY;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,GAAG,CAAC;IACnB,cAAc,EAAE,kBAAkB,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAK;gBAEhB,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAS/C,cAAc,CAAC,MAAM,EAAE,GAAG;IAI1B,4BAA4B,CAAC,aAAa,EAAE,GAAG,GAAI,MAAM;IAIzD,oBAAoB,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB;IAYhF,aAAa,CAAC,aAAa,EAAE,MAAM;CAmBpC"}
@@ -43,3 +43,4 @@ export default class AdminForthPlugin {
43
43
  return key;
44
44
  }
45
45
  }
46
+ //# sourceMappingURL=basePlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basePlugin.js","sourceRoot":"","sources":["../basePlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAYnC,YAAY,aAAkB,EAAE,OAAe;QAR/C,qBAAgB,GAAW,QAAQ,CAAC;QAMpC,oBAAe,GAAW,CAAC,CAAC;QAG1B,qBAAqB;QACrB,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,cAAc,CAAC,MAAW;IAE1B,CAAC;IAED,4BAA4B,CAAC,aAAkB;QAC7C,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED,oBAAoB,CAAC,UAAuB,EAAE,cAAkC;QAC9E,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEzE,MAAM,IAAI,GAAG,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,cAAc,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC;QACzF,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CACxD,IAAI,CACL,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,0CAA0C,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,aAAa,CAAC,aAAqB;QACjC,MAAM,GAAG,GAAG,cAAc,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;QACnE,MAAM,aAAa,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;QAEpD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC1E,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,aAAa,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;QAC/G,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;YACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,6DAA6D,UAAU,GAAG,CAAC,CAAC;YAC9H,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;QACtE,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;CAEF"}
@@ -0,0 +1,94 @@
1
+ import { AdminForthResource, IAdminForthDataSourceConnectorBase, AdminForthSortDirections, AdminForthFilterOperators, AdminForthResourceColumn, IAdminForthSort, IAdminForthFilter } from "../types/AdminForthConfig.js";
2
+ export default class AdminForthBaseConnector implements IAdminForthDataSourceConnectorBase {
3
+ getPrimaryKey(resource: AdminForthResource): string;
4
+ getRecordByPrimaryKeyWithOriginalTypes(resource: AdminForthResource, id: string): Promise<any>;
5
+ getDataWithOriginalTypes({ resource, limit, offset, sort, filters }: {
6
+ resource: AdminForthResource;
7
+ limit: number;
8
+ offset: number;
9
+ sort: IAdminForthSort[];
10
+ filters: IAdminForthFilter[];
11
+ }): Promise<any[]>;
12
+ getCount({ resource, filters }: {
13
+ resource: AdminForthResource;
14
+ filters: {
15
+ field: string;
16
+ operator: AdminForthFilterOperators;
17
+ value: any;
18
+ }[];
19
+ }): Promise<number>;
20
+ discoverFields(resource: AdminForthResource): Promise<{
21
+ [key: string]: AdminForthResourceColumn;
22
+ }>;
23
+ getFieldValue(field: AdminForthResourceColumn, value: any): void;
24
+ setFieldValue(field: AdminForthResourceColumn, value: any): void;
25
+ getMinMaxForColumnsWithOriginalTypes({ resource, columns }: {
26
+ resource: AdminForthResource;
27
+ columns: AdminForthResourceColumn[];
28
+ }): Promise<{
29
+ [key: string]: {
30
+ min: any;
31
+ max: any;
32
+ };
33
+ }>;
34
+ createRecordOriginalValues({ resource, record }: {
35
+ resource: AdminForthResource;
36
+ record: any;
37
+ }): Promise<void>;
38
+ checkUnique(resource: AdminForthResource, column: AdminForthResourceColumn, value: any): Promise<boolean>;
39
+ createRecord({ resource, record, adminUser }: {
40
+ resource: AdminForthResource;
41
+ record: any;
42
+ adminUser: any;
43
+ }): Promise<{
44
+ error?: string;
45
+ ok: boolean;
46
+ createdRecord?: any;
47
+ }>;
48
+ updateRecordOriginalValues({ resource, recordId, newValues }: {
49
+ resource: AdminForthResource;
50
+ recordId: string;
51
+ newValues: any;
52
+ }): Promise<void>;
53
+ updateRecord({ resource, recordId, newValues }: {
54
+ resource: AdminForthResource;
55
+ recordId: string;
56
+ newValues: any;
57
+ }): Promise<{
58
+ error?: string;
59
+ ok: boolean;
60
+ }>;
61
+ deleteRecord({ resource, recordId }: {
62
+ resource: AdminForthResource;
63
+ recordId: string;
64
+ }): Promise<boolean>;
65
+ getData({ resource, limit, offset, sort, filters, getTotals }: {
66
+ resource: AdminForthResource;
67
+ limit: number;
68
+ offset: number;
69
+ sort: {
70
+ field: string;
71
+ direction: AdminForthSortDirections;
72
+ }[];
73
+ filters: {
74
+ field: string;
75
+ operator: AdminForthFilterOperators;
76
+ value: any;
77
+ }[];
78
+ getTotals: boolean;
79
+ }): Promise<{
80
+ data: any[];
81
+ total: number;
82
+ }>;
83
+ getMinMaxForColumns({ resource, columns }: {
84
+ resource: AdminForthResource;
85
+ columns: AdminForthResourceColumn[];
86
+ }): Promise<{
87
+ [key: string]: {
88
+ min: any;
89
+ max: any;
90
+ };
91
+ }>;
92
+ getRecordByPrimaryKey(resource: AdminForthResource, recordId: string): Promise<any>;
93
+ }
94
+ //# sourceMappingURL=baseConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseConnector.d.ts","sourceRoot":"","sources":["../../dataConnectors/baseConnector.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { AdminForthFilterOperators } from "../types/AdminForthConfig.js";
11
2
  import { suggestIfTypo } from "../modules/utils.js";
12
3
  export default class AdminForthBaseConnector {
@@ -17,17 +8,15 @@ export default class AdminForthBaseConnector {
17
8
  }
18
9
  }
19
10
  }
20
- getRecordByPrimaryKeyWithOriginalTypes(resource, id) {
21
- return __awaiter(this, void 0, void 0, function* () {
22
- const data = yield this.getDataWithOriginalTypes({
23
- resource,
24
- limit: 1,
25
- offset: 0,
26
- sort: [],
27
- filters: [{ field: this.getPrimaryKey(resource), operator: AdminForthFilterOperators.EQ, value: id }],
28
- });
29
- return data.length > 0 ? data[0] : null;
11
+ async getRecordByPrimaryKeyWithOriginalTypes(resource, id) {
12
+ const data = await this.getDataWithOriginalTypes({
13
+ resource,
14
+ limit: 1,
15
+ offset: 0,
16
+ sort: [],
17
+ filters: [{ field: this.getPrimaryKey(resource), operator: AdminForthFilterOperators.EQ, value: id }],
30
18
  });
19
+ return data.length > 0 ? data[0] : null;
31
20
  }
32
21
  getDataWithOriginalTypes({ resource, limit, offset, sort, filters }) {
33
22
  throw new Error('Method not implemented.');
@@ -50,130 +39,126 @@ export default class AdminForthBaseConnector {
50
39
  createRecordOriginalValues({ resource, record }) {
51
40
  throw new Error('Method not implemented.');
52
41
  }
53
- checkUnique(resource, column, value) {
54
- return __awaiter(this, void 0, void 0, function* () {
55
- process.env.HEAVY_DEBUG && console.log('☝️🪲🪲🪲🪲 checkUnique|||', column, value);
56
- const existingRecord = yield this.getData({
57
- resource,
58
- filters: [{ field: column.name, operator: AdminForthFilterOperators.EQ, value }],
59
- limit: 1,
60
- sort: [],
61
- offset: 0,
62
- getTotals: false
63
- });
64
- return existingRecord.data.length > 0;
42
+ async checkUnique(resource, column, value) {
43
+ process.env.HEAVY_DEBUG && console.log('☝️🪲🪲🪲🪲 checkUnique|||', column, value);
44
+ const existingRecord = await this.getData({
45
+ resource,
46
+ filters: [{ field: column.name, operator: AdminForthFilterOperators.EQ, value }],
47
+ limit: 1,
48
+ sort: [],
49
+ offset: 0,
50
+ getTotals: false
65
51
  });
52
+ return existingRecord.data.length > 0;
66
53
  }
67
- createRecord(_a) {
68
- return __awaiter(this, arguments, void 0, function* ({ resource, record, adminUser }) {
69
- // transform value using setFieldValue and call createRecordOriginalValues
70
- const filledRecord = Object.assign({}, record);
71
- const recordWithOriginalValues = Object.assign({}, record);
72
- for (const col of resource.dataSourceColumns) {
73
- if (col.fillOnCreate) {
74
- if (filledRecord[col.name] === undefined) {
75
- filledRecord[col.name] = col.fillOnCreate({
76
- initialRecord: record,
77
- adminUser
78
- });
79
- }
54
+ async createRecord({ resource, record, adminUser }) {
55
+ // transform value using setFieldValue and call createRecordOriginalValues
56
+ const filledRecord = Object.assign({}, record);
57
+ const recordWithOriginalValues = Object.assign({}, record);
58
+ for (const col of resource.dataSourceColumns) {
59
+ if (col.fillOnCreate) {
60
+ if (filledRecord[col.name] === undefined) {
61
+ filledRecord[col.name] = col.fillOnCreate({
62
+ initialRecord: record,
63
+ adminUser
64
+ });
80
65
  }
81
- recordWithOriginalValues[col.name] = this.setFieldValue(col, filledRecord[col.name]);
82
66
  }
83
- let error = null;
84
- yield Promise.all(resource.dataSourceColumns.map((col) => __awaiter(this, void 0, void 0, function* () {
85
- if (col.isUnique && !col.virtual && !error) {
86
- const exists = yield this.checkUnique(resource, col, recordWithOriginalValues[col.name]);
87
- if (exists) {
88
- error = `Record with ${col.name} ${recordWithOriginalValues[col.name]} already exists`;
89
- }
67
+ recordWithOriginalValues[col.name] = this.setFieldValue(col, filledRecord[col.name]);
68
+ }
69
+ let error = null;
70
+ await Promise.all(resource.dataSourceColumns.map(async (col) => {
71
+ if (col.isUnique && !col.virtual && !error) {
72
+ const exists = await this.checkUnique(resource, col, recordWithOriginalValues[col.name]);
73
+ if (exists) {
74
+ error = `Record with ${col.name} ${recordWithOriginalValues[col.name]} already exists`;
90
75
  }
91
- })));
92
- if (error) {
93
- process.env.HEAVY_DEBUG && console.log('🪲🆕 check unique error', error);
94
- return { error, ok: false };
95
76
  }
96
- process.env.HEAVY_DEBUG && console.log('🪲🆕 creating record', recordWithOriginalValues);
97
- yield this.createRecordOriginalValues({ resource, record: recordWithOriginalValues });
98
- return {
99
- ok: true,
100
- createdRecord: recordWithOriginalValues,
101
- };
102
- });
77
+ }));
78
+ if (error) {
79
+ process.env.HEAVY_DEBUG && console.log('🪲🆕 check unique error', error);
80
+ return { error, ok: false };
81
+ }
82
+ process.env.HEAVY_DEBUG && console.log('🪲🆕 creating record', recordWithOriginalValues);
83
+ await this.createRecordOriginalValues({ resource, record: recordWithOriginalValues });
84
+ return {
85
+ ok: true,
86
+ createdRecord: recordWithOriginalValues,
87
+ };
103
88
  }
104
89
  updateRecordOriginalValues({ resource, recordId, newValues }) {
105
90
  throw new Error('Method not implemented.');
106
91
  }
107
- updateRecord(_a) {
108
- return __awaiter(this, arguments, void 0, function* ({ resource, recordId, newValues }) {
109
- // transform value using setFieldValue and call updateRecordOriginalValues
110
- const recordWithOriginalValues = Object.assign({}, newValues);
111
- for (const field of Object.keys(newValues)) {
112
- const col = resource.dataSourceColumns.find((col) => col.name == field);
113
- // todo instead of throwing error, we can just not use setFieldValue here, and pass original value to updateRecordOriginalValues
114
- // we might consider this because some users might not want to define all columns in resource with showIn:[], but still want to use them in hooks
115
- if (!col) {
116
- const similar = suggestIfTypo(resource.dataSourceColumns.map((col) => col.name), field);
117
- throw new Error(`
92
+ async updateRecord({ resource, recordId, newValues }) {
93
+ // transform value using setFieldValue and call updateRecordOriginalValues
94
+ const recordWithOriginalValues = Object.assign({}, newValues);
95
+ for (const field of Object.keys(newValues)) {
96
+ const col = resource.dataSourceColumns.find((col) => col.name == field);
97
+ // todo instead of throwing error, we can just not use setFieldValue here, and pass original value to updateRecordOriginalValues
98
+ // we might consider this because some users might not want to define all columns in resource with showIn:[], but still want to use them in hooks
99
+ if (!col) {
100
+ const similar = suggestIfTypo(resource.dataSourceColumns.map((col) => col.name), field);
101
+ throw new Error(`
118
102
  Update record received field '${field}' (with value ${newValues[field]}), but such column not found in resource '${resource.resourceId}'. ${similar ? `Did you mean '${similar}'?` : ''}
119
103
  `);
120
- }
121
- recordWithOriginalValues[col.name] = this.setFieldValue(col, newValues[col.name]);
122
104
  }
123
- process.env.HEAVY_DEBUG && console.log(`🪲✏️ updating record id:${recordId}, values: ${JSON.stringify(recordWithOriginalValues)}`);
124
- yield this.updateRecordOriginalValues({ resource, recordId, newValues: recordWithOriginalValues });
125
- return { ok: true };
126
- });
105
+ recordWithOriginalValues[col.name] = this.setFieldValue(col, newValues[col.name]);
106
+ }
107
+ process.env.HEAVY_DEBUG && console.log(`🪲✏️ updating record id:${recordId}, values: ${JSON.stringify(recordWithOriginalValues)}`);
108
+ await this.updateRecordOriginalValues({ resource, recordId, newValues: recordWithOriginalValues });
109
+ return { ok: true };
127
110
  }
128
111
  deleteRecord({ resource, recordId }) {
129
112
  throw new Error('Method not implemented.');
130
113
  }
131
- getData(_a) {
132
- return __awaiter(this, arguments, void 0, function* ({ resource, limit, offset, sort, filters, getTotals }) {
133
- if (filters) {
134
- filters.map((f) => {
135
- const fieldObj = resource.dataSourceColumns.find((col) => col.name == f.field);
136
- if (!fieldObj) {
137
- const similar = suggestIfTypo(resource.dataSourceColumns.map((col) => col.name), f.field);
138
- throw new Error(`Field '${f.field}' not found in resource '${resource.resourceId}'. ${similar ? `Did you mean '${similar}'?` : ''}`);
139
- }
140
- if (f.operator == AdminForthFilterOperators.IN || f.operator == AdminForthFilterOperators.NIN) {
141
- f.value = f.value.map((val) => this.setFieldValue(fieldObj, val));
142
- }
143
- else {
144
- f.value = this.setFieldValue(fieldObj, f.value);
145
- }
146
- });
147
- }
148
- const promises = [this.getDataWithOriginalTypes({ resource, limit, offset, sort, filters })];
149
- if (getTotals) {
150
- promises.push(this.getCount({ resource, filters }));
151
- }
152
- else {
153
- promises.push(Promise.resolve(undefined));
154
- }
155
- const [data, total] = yield Promise.all(promises);
156
- // call getFieldValue for each field
157
- data.map((record) => {
158
- for (const col of resource.dataSourceColumns) {
159
- record[col.name] = this.getFieldValue(col, record[col.name]);
114
+ async getData({ resource, limit, offset, sort, filters, getTotals }) {
115
+ if (filters) {
116
+ filters.map((f) => {
117
+ if (!f.field) {
118
+ throw new Error(`Field "field" not specified in filter object: ${JSON.stringify(f)}`);
119
+ }
120
+ if (!f.operator) {
121
+ throw new Error(`Field "operator" not specified in filter object: ${JSON.stringify(f)}`);
122
+ }
123
+ const fieldObj = resource.dataSourceColumns.find((col) => col.name == f.field);
124
+ if (!fieldObj) {
125
+ const similar = suggestIfTypo(resource.dataSourceColumns.map((col) => col.name), f.field);
126
+ throw new Error(`Field '${f.field}' not found in resource '${resource.resourceId}'. ${similar ? `Did you mean '${similar}'?` : ''}`);
127
+ }
128
+ if (f.operator == AdminForthFilterOperators.IN || f.operator == AdminForthFilterOperators.NIN) {
129
+ f.value = f.value.map((val) => this.setFieldValue(fieldObj, val));
130
+ }
131
+ else {
132
+ f.value = this.setFieldValue(fieldObj, f.value);
160
133
  }
161
134
  });
162
- return { data, total };
163
- });
164
- }
165
- getMinMaxForColumns(_a) {
166
- return __awaiter(this, arguments, void 0, function* ({ resource, columns }) {
167
- const mm = yield this.getMinMaxForColumnsWithOriginalTypes({ resource, columns });
168
- const result = {};
169
- for (const col of columns) {
170
- result[col.name] = {
171
- min: this.getFieldValue(col, mm[col.name].min),
172
- max: this.getFieldValue(col, mm[col.name].max),
173
- };
135
+ }
136
+ const promises = [this.getDataWithOriginalTypes({ resource, limit, offset, sort, filters })];
137
+ if (getTotals) {
138
+ promises.push(this.getCount({ resource, filters }));
139
+ }
140
+ else {
141
+ promises.push(Promise.resolve(undefined));
142
+ }
143
+ const [data, total] = await Promise.all(promises);
144
+ // call getFieldValue for each field
145
+ data.map((record) => {
146
+ for (const col of resource.dataSourceColumns) {
147
+ record[col.name] = this.getFieldValue(col, record[col.name]);
174
148
  }
175
- return result;
176
149
  });
150
+ return { data, total };
151
+ }
152
+ async getMinMaxForColumns({ resource, columns }) {
153
+ const mm = await this.getMinMaxForColumnsWithOriginalTypes({ resource, columns });
154
+ const result = {};
155
+ for (const col of columns) {
156
+ result[col.name] = {
157
+ min: this.getFieldValue(col, mm[col.name].min),
158
+ max: this.getFieldValue(col, mm[col.name].max),
159
+ };
160
+ }
161
+ return result;
177
162
  }
178
163
  getRecordByPrimaryKey(resource, recordId) {
179
164
  return this.getRecordByPrimaryKeyWithOriginalTypes(resource, recordId).then((record) => {
@@ -185,3 +170,4 @@ export default class AdminForthBaseConnector {
185
170
  });
186
171
  }
187
172
  }
173
+ //# sourceMappingURL=baseConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseConnector.js","sourceRoot":"","sources":["../../dataConnectors/baseConnector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoF,yBAAyB,EAAgE,MAAM,8BAA8B,CAAC;AACzN,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC1C,aAAa,CAAC,QAA4B;QACxC,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YAC3C,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACjB,OAAO,GAAG,CAAC,IAAI,CAAC;YACpB,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,sCAAsC,CAAC,QAA4B,EAAE,EAAU;QACnF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC;YAC/C,QAAQ;YACR,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;SACtG,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED,wBAAwB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAMhE;QACC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAqH;QAC/I,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc,CAAC,QAA4B;QACzC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa,CAAC,KAA+B,EAAE,KAAU;QACvD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa,CAAC,KAA+B,EAAE,KAAU;QACvD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,oCAAoC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAA0E;QAChI,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,0BAA0B,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAkD;QAC7F,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAA4B,EAAE,MAAgC,EAAE,KAAU;QAC1F,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QACnF,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACxC,QAAQ;YACR,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,yBAAyB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;YAChF,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAE/C;QACC,0EAA0E;QAC1E,MAAM,YAAY,qBAAO,MAAM,CAAC,CAAC;QACjC,MAAM,wBAAwB,qBAAO,MAAM,CAAC,CAAC;QAE7C,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YAC7C,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBACrB,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;oBACzC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;wBACxC,aAAa,EAAE,MAAM;wBACrB,SAAS;qBACV,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,KAAK,GAAkB,IAAI,CAAC;QAChC,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC3C,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzF,IAAI,MAAM,EAAE,CAAC;oBACX,KAAK,GAAG,eAAe,GAAG,CAAC,IAAI,IAAI,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBACzF,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QACF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YACzE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;QACzF,MAAM,IAAI,CAAC,0BAA0B,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAEtF,OAAO;YACL,EAAE,EAAE,IAAI;YACR,aAAa,EAAE,wBAAwB;SACxC,CAAA;IACH,CAAC;IAED,0BAA0B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAuE;QAC/H,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAuE;QACvH,0EAA0E;QAC1E,MAAM,wBAAwB,qBAAO,SAAS,CAAC,CAAC;QAEhD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;YACxE,gIAAgI;YAChI,iJAAiJ;YACjJ,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;gBACxF,MAAM,IAAI,KAAK,CAAC;0CACkB,KAAK,iBAAiB,SAAS,CAAC,KAAK,CAAC,6CAA6C,QAAQ,CAAC,UAAU,MAAM,OAAO,CAAC,CAAC,CAAC,iBAAiB,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE;SACxL,CAAC,CAAC;YACL,CAAC;YACD,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,QAAQ,aAAa,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QAEnI,MAAM,IAAI,CAAC,0BAA0B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAEnG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAuD;QACtF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAGD,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAOhE;QACC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChB,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,iDAAiD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC;gBACD,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,oDAAoD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3F,CAAC;gBACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC/E,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC1F,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,4BAA4B,QAAQ,CAAC,UAAU,MAAM,OAAO,CAAC,CAAC,CAAC,iBAAiB,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvI,CAAC;gBACD,IAAI,CAAC,CAAC,QAAQ,IAAI,yBAAyB,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,yBAAyB,CAAC,GAAG,EAAE,CAAC;oBAC9F,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpE,CAAC;qBAAM,CAAC;oBACN,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAmB,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7G,IAAI,SAAS,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAElD,oCAAoC;QACpC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAClB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;gBAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAA0E;QACrH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,oCAAoC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;gBACf,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;gBAC9C,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;aACjD,CAAC;QACN,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qBAAqB,CAAC,QAA4B,EAAE,QAAgB;QAClE,OAAO,IAAI,CAAC,sCAAsC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACnF,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,iBAAiB,EAAE,CAAC;gBAC3C,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;CAGF"}