adminforth 1.3.54-next.9 → 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
@@ -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 dayjs from 'dayjs';
11
2
  import { MongoClient } from 'mongodb';
12
3
  import { AdminForthDataTypes, AdminForthFilterOperators, AdminForthSortDirections } from '../types/AdminForthConfig.js';
@@ -31,9 +22,9 @@ class MongoConnector extends AdminForthBaseConnector {
31
22
  [AdminForthSortDirections.desc]: -1,
32
23
  };
33
24
  this.db = new MongoClient(url);
34
- (() => __awaiter(this, void 0, void 0, function* () {
25
+ (async () => {
35
26
  try {
36
- yield this.db.connect();
27
+ await this.db.connect();
37
28
  this.db.on('error', (err) => {
38
29
  console.log('Mongo error: ', err.message);
39
30
  });
@@ -42,24 +33,22 @@ class MongoConnector extends AdminForthBaseConnector {
42
33
  catch (e) {
43
34
  console.error('ERROR: Failed to connect to Mongo', e);
44
35
  }
45
- }))();
36
+ })();
46
37
  }
47
- discoverFields(resource) {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- return resource.columns.filter((col) => !col.virtual).reduce((acc, col) => {
50
- if (!col.type) {
51
- throw new Error(`Type is not defined for column ${col.name} in resource ${resource.table}`);
52
- }
53
- acc[col.name] = {
54
- name: col.name,
55
- type: col.type,
56
- primaryKey: col.primaryKey,
57
- virtual: col.virtual,
58
- _underlineType: col._underlineType,
59
- };
60
- return acc;
61
- }, {});
62
- });
38
+ async discoverFields(resource) {
39
+ return resource.columns.filter((col) => !col.virtual).reduce((acc, col) => {
40
+ if (!col.type) {
41
+ throw new Error(`Type is not defined for column ${col.name} in resource ${resource.table}`);
42
+ }
43
+ acc[col.name] = {
44
+ name: col.name,
45
+ type: col.type,
46
+ primaryKey: col.primaryKey,
47
+ virtual: col.virtual,
48
+ _underlineType: col._underlineType,
49
+ };
50
+ return acc;
51
+ }, {});
63
52
  }
64
53
  getPrimaryKey(resource) {
65
54
  for (const col of resource.dataSourceColumns) {
@@ -108,87 +97,72 @@ class MongoConnector extends AdminForthBaseConnector {
108
97
  }
109
98
  return value;
110
99
  }
111
- genQuery(_a) {
112
- return __awaiter(this, arguments, void 0, function* ({ filters }) {
113
- const query = {};
114
- for (const filter of filters) {
115
- query[filter.field] = this.OperatorsMap[filter.operator](filter.value);
116
- }
117
- return query;
118
- });
100
+ async genQuery({ filters }) {
101
+ const query = {};
102
+ for (const filter of filters) {
103
+ query[filter.field] = this.OperatorsMap[filter.operator](filter.value);
104
+ }
105
+ return query;
119
106
  }
120
- getDataWithOriginalTypes(_a) {
121
- return __awaiter(this, arguments, void 0, function* ({ resource, limit, offset, sort, filters }) {
122
- // const columns = resource.dataSourceColumns.filter(c=> !c.virtual).map((col) => col.name).join(', ');
123
- const tableName = resource.table;
124
- const collection = this.db.db().collection(tableName);
125
- const query = yield this.genQuery({ filters });
126
- const sortArray = sort.map((s) => {
127
- return [s.field, this.SortDirectionsMap[s.direction]];
128
- });
129
- const result = yield collection.find(query)
130
- .sort(sortArray)
131
- .skip(offset)
132
- .limit(limit)
133
- .toArray();
134
- return result;
107
+ async getDataWithOriginalTypes({ resource, limit, offset, sort, filters }) {
108
+ // const columns = resource.dataSourceColumns.filter(c=> !c.virtual).map((col) => col.name).join(', ');
109
+ const tableName = resource.table;
110
+ const collection = this.db.db().collection(tableName);
111
+ const query = await this.genQuery({ filters });
112
+ const sortArray = sort.map((s) => {
113
+ return [s.field, this.SortDirectionsMap[s.direction]];
135
114
  });
115
+ const result = await collection.find(query)
116
+ .sort(sortArray)
117
+ .skip(offset)
118
+ .limit(limit)
119
+ .toArray();
120
+ return result;
136
121
  }
137
- getCount(_a) {
138
- return __awaiter(this, arguments, void 0, function* ({ resource, filters }) {
139
- const collection = this.db.db().collection(resource.table);
140
- const query = {};
141
- for (const filter of filters) {
142
- query[filter.field] = this.OperatorsMap[filter.operator](filter.value);
143
- }
144
- return yield collection.countDocuments(query);
145
- });
122
+ async getCount({ resource, filters }) {
123
+ const collection = this.db.db().collection(resource.table);
124
+ const query = {};
125
+ for (const filter of filters) {
126
+ query[filter.field] = this.OperatorsMap[filter.operator](filter.value);
127
+ }
128
+ return await collection.countDocuments(query);
146
129
  }
147
- getMinMaxForColumnsWithOriginalTypes(_a) {
148
- return __awaiter(this, arguments, void 0, function* ({ resource, columns }) {
149
- const tableName = resource.table;
150
- const collection = this.db.db().collection(tableName);
151
- const result = {};
152
- for (const column of columns) {
153
- result[column] = yield collection
154
- .aggregate([
155
- { $group: { _id: null, min: { $min: `$${column}` }, max: { $max: `$${column}` } } },
156
- ])
157
- .toArray();
158
- }
159
- return result;
160
- });
130
+ async getMinMaxForColumnsWithOriginalTypes({ resource, columns }) {
131
+ const tableName = resource.table;
132
+ const collection = this.db.db().collection(tableName);
133
+ const result = {};
134
+ for (const column of columns) {
135
+ result[column] = await collection
136
+ .aggregate([
137
+ { $group: { _id: null, min: { $min: `$${column}` }, max: { $max: `$${column}` } } },
138
+ ])
139
+ .toArray();
140
+ }
141
+ return result;
161
142
  }
162
- createRecordOriginalValues(_a) {
163
- return __awaiter(this, arguments, void 0, function* ({ resource, record }) {
164
- const tableName = resource.table;
165
- const collection = this.db.db().collection(tableName);
166
- const columns = Object.keys(record);
167
- const newRecord = {};
168
- for (const colName of columns) {
169
- newRecord[colName] = record[colName];
170
- }
171
- yield collection.insertOne(newRecord);
172
- });
143
+ async createRecordOriginalValues({ resource, record }) {
144
+ const tableName = resource.table;
145
+ const collection = this.db.db().collection(tableName);
146
+ const columns = Object.keys(record);
147
+ const newRecord = {};
148
+ for (const colName of columns) {
149
+ newRecord[colName] = record[colName];
150
+ }
151
+ await collection.insertOne(newRecord);
173
152
  }
174
- updateRecordOriginalValues(_a) {
175
- return __awaiter(this, arguments, void 0, function* ({ resource, recordId, newValues }) {
176
- const collection = this.db.db().collection(resource.table);
177
- yield collection.updateOne({ [this.getPrimaryKey(resource)]: recordId }, { $set: newValues });
178
- });
153
+ async updateRecordOriginalValues({ resource, recordId, newValues }) {
154
+ const collection = this.db.db().collection(resource.table);
155
+ await collection.updateOne({ [this.getPrimaryKey(resource)]: recordId }, { $set: newValues });
179
156
  }
180
- deleteRecord(_a) {
181
- return __awaiter(this, arguments, void 0, function* ({ resource, recordId }) {
182
- const primaryKey = this.getPrimaryKey(resource);
183
- const collection = this.db.db().collection(resource.table);
184
- const res = yield collection.deleteOne({ [primaryKey]: recordId });
185
- return res.deletedCount > 0;
186
- });
157
+ async deleteRecord({ resource, recordId }) {
158
+ const primaryKey = this.getPrimaryKey(resource);
159
+ const collection = this.db.db().collection(resource.table);
160
+ const res = await collection.deleteOne({ [primaryKey]: recordId });
161
+ return res.deletedCount > 0;
187
162
  }
188
- close() {
189
- return __awaiter(this, void 0, void 0, function* () {
190
- yield this.db.close();
191
- });
163
+ async close() {
164
+ await this.db.close();
192
165
  }
193
166
  }
194
167
  export default MongoConnector;
168
+ //# sourceMappingURL=mongo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../dataConnectors/mongo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { AdminForthResource, AdminForthFilterOperators, IAdminForthDataSourceConnector } from '../types/AdminForthConfig.js';
2
+ import AdminForthBaseConnector from './baseConnector.js';
3
+ declare class PostgresConnector extends AdminForthBaseConnector implements IAdminForthDataSourceConnector {
4
+ db: any;
5
+ constructor({ url }: {
6
+ url: any;
7
+ });
8
+ OperatorsMap: {
9
+ eq: string;
10
+ ne: string;
11
+ gt: string;
12
+ lt: string;
13
+ gte: string;
14
+ lte: string;
15
+ like: string;
16
+ ilike: string;
17
+ in: string;
18
+ nin: string;
19
+ };
20
+ SortDirectionsMap: {
21
+ asc: string;
22
+ desc: string;
23
+ };
24
+ discoverFields(resource: any): Promise<{}>;
25
+ getFieldValue(field: any, value: any): any;
26
+ setFieldValue(field: any, value: any): any;
27
+ whereClauseAndValues(resource: AdminForthResource, filters: {
28
+ field: string;
29
+ operator: AdminForthFilterOperators;
30
+ value: any;
31
+ }[]): {
32
+ sql: string;
33
+ paramsCount: number;
34
+ values: any[];
35
+ };
36
+ getDataWithOriginalTypes({ resource, limit, offset, sort, filters }: {
37
+ resource: any;
38
+ limit: any;
39
+ offset: any;
40
+ sort: any;
41
+ filters: any;
42
+ }): Promise<any[]>;
43
+ getCount({ resource, filters }: {
44
+ resource: AdminForthResource;
45
+ filters: {
46
+ field: string;
47
+ operator: AdminForthFilterOperators;
48
+ value: any;
49
+ }[];
50
+ }): Promise<number>;
51
+ getMinMaxForColumnsWithOriginalTypes({ resource, columns }: {
52
+ resource: any;
53
+ columns: any;
54
+ }): Promise<{}>;
55
+ createRecordOriginalValues({ resource, record }: {
56
+ resource: any;
57
+ record: any;
58
+ }): Promise<void>;
59
+ updateRecordOriginalValues({ resource, recordId, newValues }: {
60
+ resource: any;
61
+ recordId: any;
62
+ newValues: any;
63
+ }): Promise<void>;
64
+ deleteRecord({ resource, recordId }: {
65
+ resource: any;
66
+ recordId: any;
67
+ }): Promise<boolean>;
68
+ close(): Promise<void>;
69
+ }
70
+ export default PostgresConnector;
71
+ //# sourceMappingURL=postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../dataConnectors/postgres.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,kBAAkB,EAAE,yBAAyB,EAA4B,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC5K,OAAO,uBAAuB,MAAM,oBAAoB,CAAC;AAIzD,cAAM,iBAAkB,SAAQ,uBAAwB,YAAW,8BAA8B;IAE7F,EAAE,EAAE,GAAG,CAAC;gBAEI,EAAE,GAAG,EAAE;;KAAA;IAenB,YAAY;;;;;;;;;;;MAWV;IAEF,iBAAiB;;;MAGf;IAEI,cAAc,CAAC,QAAQ,KAAA;IAwF7B,aAAa,CAAC,KAAK,KAAA,EAAE,KAAK,KAAA;IAyC1B,aAAa,CAAC,KAAK,KAAA,EAAE,KAAK,KAAA;IAgB1B,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,yBAAyB,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,GAAI;QAClI,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,GAAG,EAAE,CAAC;KACf;IA6CK,wBAAwB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;;;;;;KAAA,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAwBpF,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QAAE,QAAQ,EAAE,kBAAkB,CAAC;QAAC,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,yBAAyB,CAAC;YAAC,KAAK,EAAE,GAAG,CAAA;SAAE,EAAE,CAAC;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAOlK,oCAAoC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE;;;KAAA;IAa1D,0BAA0B,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;;;KAAA;IAW/C,0BAA0B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAG,SAAS,EAAE;;;;KAAA;IAM7D,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE;;;KAAA,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtD,KAAK;CAGd;AAED,eAAe,iBAAiB,CAAC"}
@@ -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 dayjs from 'dayjs';
11
2
  import pkg from 'pg';
12
3
  import { AdminForthDataTypes, AdminForthFilterOperators, AdminForthSortDirections } from '../types/AdminForthConfig.js';
@@ -34,19 +25,18 @@ class PostgresConnector extends AdminForthBaseConnector {
34
25
  this.db = new Client({
35
26
  connectionString: url
36
27
  });
37
- (() => __awaiter(this, void 0, void 0, function* () {
38
- yield this.db.connect();
28
+ (async () => {
29
+ await this.db.connect();
39
30
  this.db.on('error', (err) => {
40
31
  console.log('Postgres error: ', err.message, err.stack);
41
32
  this.db.end();
42
33
  this.db = new PostgresConnector({ url }).db;
43
34
  });
44
- }))();
35
+ })();
45
36
  }
46
- discoverFields(resource) {
47
- return __awaiter(this, void 0, void 0, function* () {
48
- const tableName = resource.table;
49
- const stmt = yield this.db.query(`
37
+ async discoverFields(resource) {
38
+ const tableName = resource.table;
39
+ const stmt = await this.db.query(`
50
40
  SELECT
51
41
  a.attname AS name,
52
42
  pg_catalog.format_type(a.atttypid, a.atttypmod) AS type,
@@ -69,67 +59,66 @@ class PostgresConnector extends AdminForthBaseConnector {
69
59
  ORDER BY
70
60
  a.attnum;
71
61
  `, [tableName]);
72
- const rows = stmt.rows;
73
- const fieldTypes = {};
74
- rows.forEach((row) => {
75
- const field = {};
76
- const baseType = row.type.toLowerCase();
77
- if (baseType == 'int') {
78
- field.type = AdminForthDataTypes.INTEGER;
79
- field._underlineType = 'int';
80
- }
81
- else if (baseType.includes('float') || baseType.includes('double')) {
82
- field.type = AdminForthDataTypes.FLOAT;
83
- field._underlineType = 'float';
84
- }
85
- else if (baseType.includes('bool')) {
86
- field.type = AdminForthDataTypes.BOOLEAN;
87
- field._underlineType = 'bool';
88
- }
89
- else if (baseType == 'uuid') {
90
- field.type = AdminForthDataTypes.STRING;
91
- field._underlineType = 'uuid';
92
- }
93
- else if (baseType.includes('character varying')) {
94
- field.type = AdminForthDataTypes.STRING;
95
- field._underlineType = 'varchar';
96
- const length = baseType.match(/\d+/);
97
- field.maxLength = length ? parseInt(length[0]) : null;
98
- }
99
- else if (baseType == 'text') {
100
- field.type = AdminForthDataTypes.TEXT;
101
- field._underlineType = 'text';
102
- }
103
- else if (baseType.includes('decimal(')) {
104
- field.type = AdminForthDataTypes.DECIMAL;
105
- field._underlineType = 'decimal';
106
- const [precision, scale] = baseType.match(/\d+/g);
107
- field.precision = parseInt(precision);
108
- field.scale = parseInt(scale);
109
- }
110
- else if (baseType == 'real') {
111
- field.type = AdminForthDataTypes.FLOAT;
112
- field._underlineType = 'real';
113
- }
114
- else if (baseType == 'date') {
115
- field.type = AdminForthDataTypes.DATE;
116
- field._underlineType = 'timestamp';
117
- }
118
- else if (baseType.includes('date') || baseType.includes('time')) {
119
- field.type = AdminForthDataTypes.DATETIME;
120
- field._underlineType = 'timestamp';
121
- }
122
- else {
123
- field.type = 'unknown';
124
- }
125
- field._baseTypeDebug = baseType;
126
- field.primaryKey = row.pk == 1;
127
- field.default = row.dflt_value;
128
- field.required = row.notnull && !row.dflt_value;
129
- fieldTypes[row.name] = field;
130
- });
131
- return fieldTypes;
62
+ const rows = stmt.rows;
63
+ const fieldTypes = {};
64
+ rows.forEach((row) => {
65
+ const field = {};
66
+ const baseType = row.type.toLowerCase();
67
+ if (baseType == 'int') {
68
+ field.type = AdminForthDataTypes.INTEGER;
69
+ field._underlineType = 'int';
70
+ }
71
+ else if (baseType.includes('float') || baseType.includes('double')) {
72
+ field.type = AdminForthDataTypes.FLOAT;
73
+ field._underlineType = 'float';
74
+ }
75
+ else if (baseType.includes('bool')) {
76
+ field.type = AdminForthDataTypes.BOOLEAN;
77
+ field._underlineType = 'bool';
78
+ }
79
+ else if (baseType == 'uuid') {
80
+ field.type = AdminForthDataTypes.STRING;
81
+ field._underlineType = 'uuid';
82
+ }
83
+ else if (baseType.includes('character varying')) {
84
+ field.type = AdminForthDataTypes.STRING;
85
+ field._underlineType = 'varchar';
86
+ const length = baseType.match(/\d+/);
87
+ field.maxLength = length ? parseInt(length[0]) : null;
88
+ }
89
+ else if (baseType == 'text') {
90
+ field.type = AdminForthDataTypes.TEXT;
91
+ field._underlineType = 'text';
92
+ }
93
+ else if (baseType.includes('decimal(')) {
94
+ field.type = AdminForthDataTypes.DECIMAL;
95
+ field._underlineType = 'decimal';
96
+ const [precision, scale] = baseType.match(/\d+/g);
97
+ field.precision = parseInt(precision);
98
+ field.scale = parseInt(scale);
99
+ }
100
+ else if (baseType == 'real') {
101
+ field.type = AdminForthDataTypes.FLOAT;
102
+ field._underlineType = 'real';
103
+ }
104
+ else if (baseType == 'date') {
105
+ field.type = AdminForthDataTypes.DATE;
106
+ field._underlineType = 'timestamp';
107
+ }
108
+ else if (baseType.includes('date') || baseType.includes('time')) {
109
+ field.type = AdminForthDataTypes.DATETIME;
110
+ field._underlineType = 'timestamp';
111
+ }
112
+ else {
113
+ field.type = 'unknown';
114
+ }
115
+ field._baseTypeDebug = baseType;
116
+ field.primaryKey = row.pk == 1;
117
+ field.default = row.dflt_value;
118
+ field.required = row.notnull && !row.dflt_value;
119
+ fieldTypes[row.name] = field;
132
120
  });
121
+ return fieldTypes;
133
122
  }
134
123
  getFieldValue(field, value) {
135
124
  if (field.type == AdminForthDataTypes.DATETIME) {
@@ -154,7 +143,12 @@ class PostgresConnector extends AdminForthBaseConnector {
154
143
  }
155
144
  if (field.type == AdminForthDataTypes.JSON) {
156
145
  if (typeof value == 'string') {
157
- return JSON.parse(value);
146
+ try {
147
+ return JSON.parse(value);
148
+ }
149
+ catch (e) {
150
+ return { 'error': `Failed to parse JSON: ${e.message}` };
151
+ }
158
152
  }
159
153
  else if (typeof value == 'object') {
160
154
  return value;
@@ -226,80 +220,67 @@ class PostgresConnector extends AdminForthBaseConnector {
226
220
  values: filterValues,
227
221
  };
228
222
  }
229
- getDataWithOriginalTypes(_a) {
230
- return __awaiter(this, arguments, void 0, function* ({ resource, limit, offset, sort, filters }) {
231
- const columns = resource.dataSourceColumns.map((col) => `"${col.name}"`).join(', ');
232
- const tableName = resource.table;
233
- const { sql: where, paramsCount, values: filterValues } = this.whereClauseAndValues(resource, filters);
234
- const limitOffset = `LIMIT $${paramsCount} OFFSET $${paramsCount + 1}`;
235
- const d = [...filterValues, limit, offset];
236
- const orderBy = sort.length ? `ORDER BY ${sort.map((s) => `"${s.field}" ${this.SortDirectionsMap[s.direction]}`).join(', ')}` : '';
237
- const selectQuery = `SELECT ${columns} FROM ${tableName} ${where} ${orderBy} ${limitOffset}`;
238
- if (process.env.HEAVY_DEBUG) {
239
- console.log('🪲 PG selectQuery:', selectQuery, 'params:', d);
223
+ async getDataWithOriginalTypes({ resource, limit, offset, sort, filters }) {
224
+ const columns = resource.dataSourceColumns.map((col) => `"${col.name}"`).join(', ');
225
+ const tableName = resource.table;
226
+ const { sql: where, paramsCount, values: filterValues } = this.whereClauseAndValues(resource, filters);
227
+ const limitOffset = `LIMIT $${paramsCount} OFFSET $${paramsCount + 1}`;
228
+ const d = [...filterValues, limit, offset];
229
+ const orderBy = sort.length ? `ORDER BY ${sort.map((s) => `"${s.field}" ${this.SortDirectionsMap[s.direction]}`).join(', ')}` : '';
230
+ const selectQuery = `SELECT ${columns} FROM ${tableName} ${where} ${orderBy} ${limitOffset}`;
231
+ if (process.env.HEAVY_DEBUG) {
232
+ console.log('🪲 PG selectQuery:', selectQuery, 'params:', d);
233
+ }
234
+ const stmt = await this.db.query(selectQuery, d);
235
+ const rows = stmt.rows;
236
+ return rows.map((row) => {
237
+ const newRow = {};
238
+ for (const [key, value] of Object.entries(row)) {
239
+ newRow[key] = value;
240
240
  }
241
- const stmt = yield this.db.query(selectQuery, d);
242
- const rows = stmt.rows;
243
- return rows.map((row) => {
244
- const newRow = {};
245
- for (const [key, value] of Object.entries(row)) {
246
- newRow[key] = value;
247
- }
248
- return newRow;
249
- });
241
+ return newRow;
250
242
  });
251
243
  }
252
- getCount(_a) {
253
- return __awaiter(this, arguments, void 0, function* ({ resource, filters }) {
254
- const tableName = resource.table;
255
- const { sql: where, values: filterValues } = this.whereClauseAndValues(resource, filters);
256
- const stmt = yield this.db.query(`SELECT COUNT(*) FROM ${tableName} ${where}`, filterValues);
257
- return stmt.rows[0].count;
258
- });
244
+ async getCount({ resource, filters }) {
245
+ const tableName = resource.table;
246
+ const { sql: where, values: filterValues } = this.whereClauseAndValues(resource, filters);
247
+ const stmt = await this.db.query(`SELECT COUNT(*) FROM ${tableName} ${where}`, filterValues);
248
+ return stmt.rows[0].count;
259
249
  }
260
- getMinMaxForColumnsWithOriginalTypes(_a) {
261
- return __awaiter(this, arguments, void 0, function* ({ resource, columns }) {
262
- const tableName = resource.table;
263
- const result = {};
264
- yield Promise.all(columns.map((col) => __awaiter(this, void 0, void 0, function* () {
265
- const stmt = yield this.db.query(`SELECT MIN(${col.name}) as min, MAX(${col.name}) as max FROM ${tableName}`);
266
- const { min, max } = stmt.rows[0];
267
- result[col.name] = {
268
- min, max,
269
- };
270
- })));
271
- return result;
272
- });
250
+ async getMinMaxForColumnsWithOriginalTypes({ resource, columns }) {
251
+ const tableName = resource.table;
252
+ const result = {};
253
+ await Promise.all(columns.map(async (col) => {
254
+ const stmt = await this.db.query(`SELECT MIN(${col.name}) as min, MAX(${col.name}) as max FROM ${tableName}`);
255
+ const { min, max } = stmt.rows[0];
256
+ result[col.name] = {
257
+ min, max,
258
+ };
259
+ }));
260
+ return result;
273
261
  }
274
- createRecordOriginalValues(_a) {
275
- return __awaiter(this, arguments, void 0, function* ({ resource, record }) {
276
- const tableName = resource.table;
277
- const columns = Object.keys(record);
278
- const placeholders = columns.map((_, i) => `$${i + 1}`).join(', ');
279
- const values = columns.map((colName) => record[colName]);
280
- for (let i = 0; i < columns.length; i++) {
281
- columns[i] = `"${columns[i]}"`;
282
- }
283
- yield this.db.query(`INSERT INTO ${tableName} (${columns.join(', ')}) VALUES (${placeholders})`, values);
284
- });
262
+ async createRecordOriginalValues({ resource, record }) {
263
+ const tableName = resource.table;
264
+ const columns = Object.keys(record);
265
+ const placeholders = columns.map((_, i) => `$${i + 1}`).join(', ');
266
+ const values = columns.map((colName) => record[colName]);
267
+ for (let i = 0; i < columns.length; i++) {
268
+ columns[i] = `"${columns[i]}"`;
269
+ }
270
+ await this.db.query(`INSERT INTO ${tableName} (${columns.join(', ')}) VALUES (${placeholders})`, values);
285
271
  }
286
- updateRecordOriginalValues(_a) {
287
- return __awaiter(this, arguments, void 0, function* ({ resource, recordId, newValues }) {
288
- const values = [...Object.values(newValues), recordId];
289
- const columnsWithPlaceholders = Object.keys(newValues).map((col, i) => `"${col}" = $${i + 1}`).join(', ');
290
- yield this.db.query(`UPDATE ${resource.table} SET ${columnsWithPlaceholders} WHERE "${this.getPrimaryKey(resource)}" = $${values.length}`, values);
291
- });
272
+ async updateRecordOriginalValues({ resource, recordId, newValues }) {
273
+ const values = [...Object.values(newValues), recordId];
274
+ const columnsWithPlaceholders = Object.keys(newValues).map((col, i) => `"${col}" = $${i + 1}`).join(', ');
275
+ await this.db.query(`UPDATE ${resource.table} SET ${columnsWithPlaceholders} WHERE "${this.getPrimaryKey(resource)}" = $${values.length}`, values);
292
276
  }
293
- deleteRecord(_a) {
294
- return __awaiter(this, arguments, void 0, function* ({ resource, recordId }) {
295
- const res = yield this.db.query(`DELETE FROM ${resource.table} WHERE "${this.getPrimaryKey(resource)}" = $1`, [recordId]);
296
- return res.rowCount > 0;
297
- });
277
+ async deleteRecord({ resource, recordId }) {
278
+ const res = await this.db.query(`DELETE FROM ${resource.table} WHERE "${this.getPrimaryKey(resource)}" = $1`, [recordId]);
279
+ return res.rowCount > 0;
298
280
  }
299
- close() {
300
- return __awaiter(this, void 0, void 0, function* () {
301
- yield this.db.end();
302
- });
281
+ async close() {
282
+ await this.db.end();
303
283
  }
304
284
  }
305
285
  export default PostgresConnector;
286
+ //# sourceMappingURL=postgres.js.map