adminforth 2.17.0-next.5 → 2.17.0-next.51

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 (112) hide show
  1. package/commands/callTsProxy.js +2 -1
  2. package/commands/createApp/templates/adminuser.ts.hbs +2 -1
  3. package/commands/createApp/templates/index.ts.hbs +3 -2
  4. package/commands/createCustomComponent/main.js +0 -3
  5. package/commands/createCustomComponent/templates/customCrud/afterBreadcrumbs.vue.hbs +4 -2
  6. package/commands/createCustomComponent/templates/customCrud/beforeActionButtons.vue.hbs +3 -2
  7. package/commands/createCustomComponent/templates/customCrud/beforeBreadcrumbs.vue.hbs +4 -2
  8. package/commands/createCustomComponent/templates/customCrud/bottom.vue.hbs +4 -2
  9. package/commands/createCustomComponent/templates/customCrud/threeDotsDropdownItems.vue.hbs +4 -2
  10. package/commands/createPlugin/templates/index.ts.hbs +4 -0
  11. package/dist/auth.d.ts +2 -2
  12. package/dist/auth.d.ts.map +1 -1
  13. package/dist/auth.js +17 -10
  14. package/dist/auth.js.map +1 -1
  15. package/dist/basePlugin.d.ts +1 -0
  16. package/dist/basePlugin.d.ts.map +1 -1
  17. package/dist/basePlugin.js +4 -2
  18. package/dist/basePlugin.js.map +1 -1
  19. package/dist/dataConnectors/baseConnector.d.ts +1 -0
  20. package/dist/dataConnectors/baseConnector.d.ts.map +1 -1
  21. package/dist/dataConnectors/baseConnector.js +100 -14
  22. package/dist/dataConnectors/baseConnector.js.map +1 -1
  23. package/dist/dataConnectors/clickhouse.d.ts +2 -0
  24. package/dist/dataConnectors/clickhouse.d.ts.map +1 -1
  25. package/dist/dataConnectors/clickhouse.js +15 -4
  26. package/dist/dataConnectors/clickhouse.js.map +1 -1
  27. package/dist/dataConnectors/mongo.d.ts +8 -1
  28. package/dist/dataConnectors/mongo.d.ts.map +1 -1
  29. package/dist/dataConnectors/mongo.js +72 -28
  30. package/dist/dataConnectors/mongo.js.map +1 -1
  31. package/dist/dataConnectors/mysql.d.ts +2 -0
  32. package/dist/dataConnectors/mysql.d.ts.map +1 -1
  33. package/dist/dataConnectors/mysql.js +22 -23
  34. package/dist/dataConnectors/mysql.js.map +1 -1
  35. package/dist/dataConnectors/postgres.d.ts +2 -0
  36. package/dist/dataConnectors/postgres.d.ts.map +1 -1
  37. package/dist/dataConnectors/postgres.js +23 -26
  38. package/dist/dataConnectors/postgres.js.map +1 -1
  39. package/dist/dataConnectors/sqlite.d.ts +2 -0
  40. package/dist/dataConnectors/sqlite.d.ts.map +1 -1
  41. package/dist/dataConnectors/sqlite.js +19 -19
  42. package/dist/dataConnectors/sqlite.js.map +1 -1
  43. package/dist/index.d.ts +10 -4
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +60 -54
  46. package/dist/index.js.map +1 -1
  47. package/dist/modules/codeInjector.d.ts.map +1 -1
  48. package/dist/modules/codeInjector.js +45 -63
  49. package/dist/modules/codeInjector.js.map +1 -1
  50. package/dist/modules/configValidator.d.ts.map +1 -1
  51. package/dist/modules/configValidator.js +14 -9
  52. package/dist/modules/configValidator.js.map +1 -1
  53. package/dist/modules/logger.d.ts +5 -0
  54. package/dist/modules/logger.d.ts.map +1 -0
  55. package/dist/modules/logger.js +16 -0
  56. package/dist/modules/logger.js.map +1 -0
  57. package/dist/modules/restApi.d.ts.map +1 -1
  58. package/dist/modules/restApi.js +21 -23
  59. package/dist/modules/restApi.js.map +1 -1
  60. package/dist/modules/socketBroker.d.ts.map +1 -1
  61. package/dist/modules/socketBroker.js +6 -5
  62. package/dist/modules/socketBroker.js.map +1 -1
  63. package/dist/modules/styles.js +1 -1
  64. package/dist/servers/express.d.ts.map +1 -1
  65. package/dist/servers/express.js +11 -11
  66. package/dist/servers/express.js.map +1 -1
  67. package/dist/spa/package-lock.json +0 -13
  68. package/dist/spa/package.json +0 -1
  69. package/dist/spa/src/App.vue +6 -3
  70. package/dist/spa/src/adminforth.ts +60 -1
  71. package/dist/spa/src/afcl/DatePicker.vue +0 -1
  72. package/dist/spa/src/afcl/Dropzone.vue +6 -4
  73. package/dist/spa/src/afcl/Tooltip.vue +38 -4
  74. package/dist/spa/src/components/ColumnValueInput.vue +14 -1
  75. package/dist/spa/src/components/CustomDateRangePicker.vue +0 -2
  76. package/dist/spa/src/components/CustomRangePicker.vue +9 -6
  77. package/dist/spa/src/components/Filters.vue +4 -4
  78. package/dist/spa/src/components/ListActionsThreeDots.vue +235 -0
  79. package/dist/spa/src/components/ResourceForm.vue +4 -4
  80. package/dist/spa/src/components/ResourceListTable.vue +30 -16
  81. package/dist/spa/src/components/ResourceListTableVirtual.vue +34 -18
  82. package/dist/spa/src/components/Sidebar.vue +4 -2
  83. package/dist/spa/src/components/ThreeDotsMenu.vue +35 -20
  84. package/dist/spa/src/composables/useFrontendApi.ts +8 -4
  85. package/dist/spa/src/renderers/CompactField.vue +3 -2
  86. package/dist/spa/src/renderers/CompactUUID.vue +3 -2
  87. package/dist/spa/src/renderers/RichText.vue +15 -0
  88. package/dist/spa/src/stores/core.ts +3 -2
  89. package/dist/spa/src/stores/filters.ts +1 -1
  90. package/dist/spa/src/stores/toast.ts +1 -2
  91. package/dist/spa/src/types/Back.ts +35 -12
  92. package/dist/spa/src/types/Common.ts +7 -14
  93. package/dist/spa/src/types/FrontendAPI.ts +25 -10
  94. package/dist/spa/src/utils.ts +1 -1
  95. package/dist/spa/src/views/CreateView.vue +23 -31
  96. package/dist/spa/src/views/EditView.vue +27 -31
  97. package/dist/spa/src/views/ListView.vue +20 -10
  98. package/dist/spa/src/views/SettingsView.vue +3 -2
  99. package/dist/spa/src/views/ShowView.vue +7 -6
  100. package/dist/types/Back.d.ts +28 -6
  101. package/dist/types/Back.d.ts.map +1 -1
  102. package/dist/types/Back.js +6 -0
  103. package/dist/types/Back.js.map +1 -1
  104. package/dist/types/Common.d.ts +8 -15
  105. package/dist/types/Common.d.ts.map +1 -1
  106. package/dist/types/Common.js +2 -0
  107. package/dist/types/Common.js.map +1 -1
  108. package/dist/types/FrontendAPI.d.ts +32 -10
  109. package/dist/types/FrontendAPI.d.ts.map +1 -1
  110. package/dist/types/FrontendAPI.js.map +1 -1
  111. package/package.json +4 -1
  112. package/commands/createCustomComponent/templates/customCrud/saveButton.vue.hbs +0 -28
@@ -39,7 +39,8 @@ export function callTsProxy(tsCode, silent=false) {
39
39
  child.on("close", (code) => {
40
40
  if (code === 0) {
41
41
  try {
42
- const parsed = JSON.parse(stdout);
42
+ const preparedStdout = stdout.slice(stdout.indexOf("{"), stdout.lastIndexOf("}") + 1);
43
+ const parsed = JSON.parse(preparedStdout);
43
44
  if (!silent) {
44
45
  parsed.capturedLogs.forEach((log) => {
45
46
  console.log(...log);
@@ -1,6 +1,7 @@
1
1
  import AdminForth, { AdminForthDataTypes } from 'adminforth';
2
2
  import type { AdminForthResourceInput, AdminForthResource, AdminUser } from 'adminforth';
3
3
  import { randomUUID } from 'crypto';
4
+ import { logger } from 'adminforth';
4
5
 
5
6
  async function allowedForSuperAdmin({ adminUser }: { adminUser: AdminUser }): Promise<boolean> {
6
7
  return adminUser.dbUser.role === 'superadmin';
@@ -94,7 +95,7 @@ export default {
94
95
  },
95
96
  edit: {
96
97
  beforeSave: async ({ oldRecord, updates, adminUser, resource }: { oldRecord: any, updates: any, adminUser: AdminUser, resource: AdminForthResource }) => {
97
- console.log('Updating user', updates);
98
+ logger.info(`Updating user, ${updates}`);
98
99
  if (oldRecord.id === adminUser.dbUser.id && updates.role) {
99
100
  return { ok: false, error: 'You cannot change your own role' };
100
101
  }
@@ -5,6 +5,7 @@ import { fileURLToPath } from 'url';
5
5
  import path from 'path';
6
6
  import { Filters } from 'adminforth';
7
7
  import { initApi } from './api.js';
8
+ import { logger } from 'adminforth';
8
9
 
9
10
  const ADMIN_BASE_URL = '';
10
11
 
@@ -75,7 +76,7 @@ if (fileURLToPath(import.meta.url) === path.resolve(process.argv[1])) {
75
76
  const port = 3500;
76
77
 
77
78
  admin.bundleNow({ hotReload: process.env.NODE_ENV === 'development' }).then(() => {
78
- console.log('Bundling AdminForth SPA done.');
79
+ logger.info('Bundling AdminForth SPA done.');
79
80
  });
80
81
 
81
82
  admin.express.serve(app);
@@ -91,6 +92,6 @@ if (fileURLToPath(import.meta.url) === path.resolve(process.argv[1])) {
91
92
  });
92
93
 
93
94
  admin.express.listen(port, () => {
94
- console.log(`\n⚡ AdminForth is available at http://localhost:${port}${ADMIN_BASE_URL}\n`);
95
+ logger.info(`\x1b[38;5;249m ⚡ AdminForth is available at\x1b[1m\x1b[38;5;46m http://localhost:${port}${ADMIN_BASE_URL}\x1b[0m\n`);
95
96
  });
96
97
  }
@@ -188,9 +188,6 @@ async function handleCrudPageInjectionCreation(config, resources) {
188
188
  const injectionPosition = await select({
189
189
  message: 'Where exactly do you want to inject the component?',
190
190
  choices: [
191
- ...(crudType === 'create' || crudType === 'edit'
192
- ? [{ name: '💾 Save button on create/edit page', value: 'saveButton' }, new Separator()]
193
- : []),
194
191
  { name: '⬆️ Before Breadcrumbs', value: 'beforeBreadcrumbs' },
195
192
  { name: '➡️ Before Action Buttons', value: 'beforeActionButtons' },
196
193
  { name: '⬇️ After Breadcrumbs', value: 'afterBreadcrumbs' },
@@ -13,11 +13,13 @@
13
13
  <script setup lang="ts">
14
14
  import { onMounted } from 'vue';
15
15
  import { useI18n } from 'vue-i18n';
16
- import adminforth from '@/adminforth';
16
+ import { useAdminforth } from '@/adminforth';
17
17
  import { AdminForthResourceCommon, AdminUser } from "@/types/Common";
18
18
 
19
19
  const { t } = useI18n();
20
20
 
21
+ const { alert } = useAdminforth();
22
+
21
23
  const props = defineProps<{
22
24
  record: any
23
25
  resource: AdminForthResourceCommon
@@ -30,7 +32,7 @@ onMounted(() => {
30
32
  });
31
33
 
32
34
  function handleClick() {
33
- adminforth.alert({
35
+ alert({
34
36
  message: t('Confirmed'),
35
37
  variant: 'success',
36
38
  });
@@ -13,9 +13,10 @@
13
13
  <script setup lang="ts">
14
14
  import { onMounted } from 'vue';
15
15
  import { useI18n } from 'vue-i18n';
16
- import adminforth from '@/adminforth';
16
+ import { useAdminforth } from '@/adminforth';
17
17
  import { AdminForthResourceCommon, AdminUser } from "@/types/Common";
18
18
 
19
+ const { alert } = useAdminforth();
19
20
  const { t } = useI18n();
20
21
 
21
22
  const props = defineProps<{
@@ -30,7 +31,7 @@ onMounted(() => {
30
31
  });
31
32
 
32
33
  function handleClick() {
33
- adminforth.alert({
34
+ alert({
34
35
  message: t('Confirmed'),
35
36
  variant: 'success',
36
37
  });
@@ -13,11 +13,13 @@
13
13
  <script setup lang="ts">
14
14
  import { onMounted } from 'vue';
15
15
  import { useI18n } from 'vue-i18n';
16
- import adminforth from '@/adminforth';
16
+ import { useAdminforth } from '@/adminforth';
17
17
  import { AdminForthResourceCommon, AdminUser } from "@/types/Common";
18
18
 
19
19
  const { t } = useI18n();
20
20
 
21
+ const { alert } = useAdminforth();
22
+
21
23
  const props = defineProps<{
22
24
  record: any
23
25
  resource: AdminForthResourceCommon
@@ -30,7 +32,7 @@ onMounted(() => {
30
32
  });
31
33
 
32
34
  function handleClick() {
33
- adminforth.alert({
35
+ alert({
34
36
  message: t('Confirmed'),
35
37
  variant: 'success',
36
38
  });
@@ -13,11 +13,13 @@
13
13
  <script setup lang="ts">
14
14
  import { onMounted } from 'vue';
15
15
  import { useI18n } from 'vue-i18n';
16
- import adminforth from '@/adminforth';
16
+ import { useAdminforth } from '@/adminforth';
17
17
  import { AdminForthResourceCommon, AdminUser } from "@/types/Common";
18
18
 
19
19
  const { t } = useI18n();
20
20
 
21
+ const { alert } = useAdminforth();
22
+
21
23
  const props = defineProps<{
22
24
  record: any
23
25
  resource: AdminForthResourceCommon
@@ -30,7 +32,7 @@ onMounted(() => {
30
32
  });
31
33
 
32
34
  function handleClick() {
33
- adminforth.alert({
35
+ alert({
34
36
  message: t('Confirmed'),
35
37
  variant: 'success',
36
38
  });
@@ -12,12 +12,14 @@
12
12
 
13
13
  <script setup lang="ts">
14
14
  import { useI18n } from 'vue-i18n';
15
- import adminforth from '@/adminforth';
15
+ import { useAdminforth} from '@/adminforth';
16
16
  import { onMounted } from 'vue';
17
17
  import { AdminForthResourceCommon, AdminUser } from "@/types/Common";
18
18
 
19
19
  const { t } = useI18n();
20
20
 
21
+ const { alert } = useAdminforth();
22
+
21
23
  const props = defineProps<{
22
24
  record: any
23
25
  resource: AdminForthResourceCommon
@@ -29,7 +31,7 @@ const menuItems = [
29
31
  {
30
32
  label: 'Show Success Alert',
31
33
  action: () => {
32
- adminforth.alert({
34
+ alert({
33
35
  message: t('Success Alert'),
34
36
  variant: 'success',
35
37
  });
@@ -27,6 +27,10 @@ export default class {{pluginName}} extends AdminForthPlugin {
27
27
  return `single`;
28
28
  }
29
29
 
30
+ shouldHaveSingleInstancePerWholeApp(): boolean {
31
+ return false;
32
+ }
33
+
30
34
  setupEndpoints(server: IHttpServer) {
31
35
  server.endpoint({
32
36
  method: 'POST',
package/dist/auth.d.ts CHANGED
@@ -3,7 +3,7 @@ import { IAdminForthAuth } from './types/Back.js';
3
3
  declare class AdminForthAuth implements IAdminForthAuth {
4
4
  adminforth: AdminForth;
5
5
  constructor(adminforth: any);
6
- getClientIp(headers: object): any;
6
+ getClientIp(headers: object): string;
7
7
  removeAuthCookie(response: any): void;
8
8
  setAuthCookie({ expireInDuration, response, username, pk }: {
9
9
  expireInDuration?: string;
@@ -20,7 +20,7 @@ declare class AdminForthAuth implements IAdminForthAuth {
20
20
  payload: {
21
21
  name: string;
22
22
  value: string;
23
- expiry: number | undefined;
23
+ expiry?: number | undefined;
24
24
  expirySeconds: number | undefined;
25
25
  httpOnly: boolean;
26
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../auth.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAkClD,cAAM,cAAe,YAAW,eAAe;IAC7C,UAAU,EAAE,UAAU,CAAC;gBAEX,UAAU,KAAA;IAItB,WAAW,CAAC,OAAO,EAAE,MAAM;IA4B3B,gBAAgB,CAAC,QAAQ,KAAA;IAKzB,aAAa,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAC,EAAE;QACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,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;IAKnC,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QACrC,QAAQ,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAA;SAAE,CAAA;KAC1I;IAiBD,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjC,OAAO,EAAE;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KACtD,GAAG,MAAM,GAAG,IAAI;IAKjB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,GAAG,MAAc,GAAG,MAAM;IAW7E,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"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../auth.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAoClD,cAAM,cAAe,YAAW,eAAe;IAC7C,UAAU,EAAE,UAAU,CAAC;gBAEX,UAAU,KAAA;IAIxB,WAAW,CAAC,OAAO,EAAE,MAAM;IAkCzB,gBAAgB,CAAC,QAAQ,KAAA;IAKzB,aAAa,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAC,EAAE;QACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,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;IAKnC,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QACrC,QAAQ,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAA;SAAE,CAAA;KAC3I;IAiBD,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjC,OAAO,EAAE;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KACtD,GAAG,MAAM,GAAG,IAAI;IAKjB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,GAAG,MAAc,GAAG,MAAM;IAW7E,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,5 +1,7 @@
1
1
  import jwt from 'jsonwebtoken';
2
2
  import crypto from 'crypto';
3
+ import { afLogger } from './modules/logger.js';
4
+ import is_ip_private from 'private-ip';
3
5
  // Function to generate a password hash using PBKDF2
4
6
  function calcPasswordHash(password, salt, iterations = 100000, keyLength = 64, digest = 'sha512') {
5
7
  return new Promise((resolve, reject) => {
@@ -41,14 +43,15 @@ class AdminForthAuth {
41
43
  acc[key.toLowerCase()] = headers[key];
42
44
  return acc;
43
45
  }, {});
46
+ let ip = null;
44
47
  if (clientIpHeader) {
45
- return headersLower[clientIpHeader.toLowerCase()] || 'unknown';
48
+ ip = headersLower[clientIpHeader.toLowerCase()];
46
49
  }
47
50
  else {
48
51
  // first try common headers which can't bee spoofed, in other words
49
52
  // most common to nginx/traefik/apache
50
53
  // then fallback to less secure headers
51
- return ((_a = headersLower['x-forwarded-for']) === null || _a === void 0 ? void 0 : _a.split(',').shift().trim()) ||
54
+ ip = ((_a = headersLower['x-forwarded-for']) === null || _a === void 0 ? void 0 : _a.split(',').shift().trim()) ||
52
55
  headersLower['x-real-ip'] ||
53
56
  headersLower['x-client-ip'] ||
54
57
  headersLower['x-cluster-client-ip'] ||
@@ -58,9 +61,13 @@ class AdminForthAuth {
58
61
  headersLower['client-address'] ||
59
62
  headersLower['client'] ||
60
63
  headersLower['x-host'] ||
61
- headersLower['host'] ||
62
- 'unknown';
64
+ null;
63
65
  }
66
+ const isIpPrivate = is_ip_private(ip);
67
+ if (isIpPrivate) {
68
+ return null;
69
+ }
70
+ return ip;
64
71
  }
65
72
  removeAuthCookie(response) {
66
73
  const brandSlug = this.adminforth.config.customization.brandNameSlug;
@@ -86,7 +93,7 @@ class AdminForthAuth {
86
93
  expiryMs = expirySeconds * 1000;
87
94
  }
88
95
  else if (expiry !== undefined) {
89
- console.warn('setCustomCookie: expiry(in ms) is deprecated, use expirySeconds instead (seconds), traceback:', new Error().stack);
96
+ afLogger.warn(`setCustomCookie: expiry(in ms) is deprecated, use expirySeconds instead (seconds), traceback: ${new Error().stack}`);
90
97
  expiryMs = expiry;
91
98
  }
92
99
  const brandSlug = this.adminforth.config.customization.brandNameSlug;
@@ -119,25 +126,25 @@ class AdminForthAuth {
119
126
  }
120
127
  catch (err) {
121
128
  if (err.name === 'TokenExpiredError') {
122
- console.error('Token expired:', err.message);
129
+ afLogger.error(`Token expired: ${err.message}`);
123
130
  }
124
131
  else if (err.name === 'JsonWebTokenError') {
125
- console.error('Token error:', err.message);
132
+ afLogger.error(`Token error: ${err.message}`);
126
133
  }
127
134
  else {
128
- console.error('Failed to verify JWT token', err);
135
+ afLogger.error(`Failed to verify JWT token: ${err}`);
129
136
  }
130
137
  return null;
131
138
  }
132
139
  const { pk, t } = decoded;
133
140
  if (t !== mustHaveType) {
134
- console.error(`Invalid token type during verification: ${t}, must be ${mustHaveType}`);
141
+ afLogger.error(`Invalid token type during verification: ${t}, must be ${mustHaveType}`);
135
142
  return null;
136
143
  }
137
144
  if (decodeUser !== false) {
138
145
  const dbUser = await this.adminforth.getUserByPk(pk);
139
146
  if (!dbUser) {
140
- console.error(`User with pk ${pk} not found in database`);
147
+ afLogger.error(`User with pk ${pk} not found in database`);
141
148
  // will logout user which was deleted
142
149
  return null;
143
150
  }
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../auth.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export default class AdminForthPlugin implements IAdminForthPlugin {
9
9
  resourceConfig: AdminForthResource;
10
10
  className: string;
11
11
  activationOrder: number;
12
+ shouldHaveSingleInstancePerWholeApp?: () => boolean;
12
13
  constructor(pluginOptions: any, metaUrl: string);
13
14
  setupEndpoints(server: any): void;
14
15
  instanceUniqueRepresentation(pluginOptions: any): string;
@@ -1 +1 @@
1
- {"version":3,"file":"basePlugin.d.ts","sourceRoot":"","sources":["../basePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AASrF,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,EAAE,kBAAkB,CAAC,EAAE;QAAC,EAAE,EAAE,gBAAgB,CAAC;QAAC,QAAQ,EAAE,kBAAkB,CAAA;KAAC,EAAE;IAU7J;;;;QAII;IACJ,aAAa,CAAC,aAAa,EAAE,MAAM;CAmBpC"}
1
+ {"version":3,"file":"basePlugin.d.ts","sourceRoot":"","sources":["../basePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAWrF,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;IAC5B,mCAAmC,CAAC,EAAE,MAAM,OAAO,CAAC;gBAExC,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAU/C,cAAc,CAAC,MAAM,EAAE,GAAG;IAI1B,4BAA4B,CAAC,aAAa,EAAE,GAAG,GAAI,MAAM;IAKzD,oBAAoB,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,EAAE;QAAC,EAAE,EAAE,gBAAgB,CAAC;QAAC,QAAQ,EAAE,kBAAkB,CAAA;KAAC,EAAE;IAU7J;;;;QAII;IACJ,aAAa,CAAC,aAAa,EAAE,MAAM;CAmBpC"}
@@ -2,6 +2,7 @@ import { getComponentNameFromPath, md5hash } from './modules/utils.js';
2
2
  import { currentFileDir } from './modules/utils.js';
3
3
  import path from 'path';
4
4
  import fs from 'fs';
5
+ import { afLogger } from './modules/logger.js';
5
6
  export default class AdminForthPlugin {
6
7
  constructor(pluginOptions, metaUrl) {
7
8
  this.customFolderName = 'custom';
@@ -10,8 +11,9 @@ export default class AdminForthPlugin {
10
11
  this.pluginDir = currentFileDir(metaUrl);
11
12
  this.customFolderPath = path.join(this.pluginDir, this.customFolderName);
12
13
  this.pluginOptions = pluginOptions;
13
- process.env.HEAVY_DEBUG && console.log(`🪲 🪲 AdminForthPlugin.constructor`, this.constructor.name);
14
+ afLogger.trace(`🪲 🪲 AdminForthPlugin.constructor ${this.constructor.name}`);
14
15
  this.className = this.constructor.name;
16
+ this.shouldHaveSingleInstancePerWholeApp = () => false;
15
17
  }
16
18
  setupEndpoints(server) {
17
19
  }
@@ -23,7 +25,7 @@ export default class AdminForthPlugin {
23
25
  const uniqueness = this.instanceUniqueRepresentation(this.pluginOptions);
24
26
  const seed = `af_pl_${this.constructor.name}_${resourceConfig.resourceId}_${uniqueness}`;
25
27
  this.pluginInstanceId = md5hash(seed);
26
- process.env.HEAVY_DEBUG && console.log(`🪲 AdminForthPlugin.modifyResourceConfig`, seed, 'id', this.pluginInstanceId);
28
+ afLogger.trace(`🪲 AdminForthPlugin.modifyResourceConfig, ${seed}, 'id', ${this.pluginInstanceId}`);
27
29
  this.adminforth = adminforth;
28
30
  }
29
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"basePlugin.js","sourceRoot":"","sources":["../basePlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAKpB,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,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrG,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,EAAE,kBAA2E;QAC3J,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,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,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;;;;QAII;IACJ,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"}
1
+ {"version":3,"file":"basePlugin.js","sourceRoot":"","sources":["../basePlugin.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ export default class AdminForthBaseConnector implements IAdminForthDataSourceCon
27
27
  }>;
28
28
  getFieldValue(field: AdminForthResourceColumn, value: any): void;
29
29
  setFieldValue(field: AdminForthResourceColumn, value: any): void;
30
+ validateAndSetFieldValue(field: AdminForthResourceColumn, value: any): any;
30
31
  getMinMaxForColumnsWithOriginalTypes({ resource, columns }: {
31
32
  resource: AdminForthResource;
32
33
  columns: AdminForthResourceColumn[];
@@ -1 +1 @@
1
- {"version":3,"file":"baseConnector.d.ts","sourceRoot":"","sources":["../../dataConnectors/baseConnector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseConnector.d.ts","sourceRoot":"","sources":["../../dataConnectors/baseConnector.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import { suggestIfTypo } from "../modules/utils.js";
2
2
  import { AdminForthDataTypes, AdminForthFilterOperators } from "../types/Common.js";
3
3
  import { randomUUID } from "crypto";
4
+ import dayjs from "dayjs";
5
+ import { afLogger } from '../modules/logger.js';
4
6
  export default class AdminForthBaseConnector {
5
7
  get db() {
6
- console.warn('.db is deprecated, use .client instead');
8
+ afLogger.warn('.db is deprecated, use .client instead');
7
9
  return this.client;
8
10
  }
9
11
  setupClient(url) {
@@ -60,7 +62,6 @@ export default class AdminForthBaseConnector {
60
62
  // in case column isArray and enumerator/foreign resource - IN filter must be transformed into OR filter
61
63
  if (filterValidation.ok && f.operator == AdminForthFilterOperators.IN) {
62
64
  const column = resource.dataSourceColumns.find((col) => col.name == f.field);
63
- // console.log(`\n~~~ column: ${JSON.stringify(column, null, 2)}\n~~~ resource.columns: ${JSON.stringify(resource.dataSourceColumns, null, 2)}\n~~~ filter: ${JSON.stringify(f, null, 2)}\n`);
64
65
  if (((_a = column.isArray) === null || _a === void 0 ? void 0 : _a.enabled) && (column.enum || column.foreignResource)) {
65
66
  filters[fIndex] = {
66
67
  operator: AdminForthFilterOperators.OR,
@@ -81,7 +82,8 @@ export default class AdminForthBaseConnector {
81
82
  }
82
83
  // Either compare with value or with rightField (field-to-field). If rightField is set, value must be undefined.
83
84
  const comparingWithRightField = filtersAsSingle.rightField !== undefined && filtersAsSingle.rightField !== null;
84
- if (!comparingWithRightField && filtersAsSingle.value === undefined) {
85
+ const isEmptyOperator = filters.operator === AdminForthFilterOperators.IS_EMPTY || filters.operator === AdminForthFilterOperators.IS_NOT_EMPTY;
86
+ if (!comparingWithRightField && !isEmptyOperator && filtersAsSingle.value === undefined) {
85
87
  return { ok: false, error: `Field "value" not specified in filter object: ${JSON.stringify(filters)}` };
86
88
  }
87
89
  if (comparingWithRightField && filtersAsSingle.value !== undefined) {
@@ -96,7 +98,7 @@ export default class AdminForthBaseConnector {
96
98
  if (![AdminForthFilterOperators.EQ, AdminForthFilterOperators.NE, AdminForthFilterOperators.GT,
97
99
  AdminForthFilterOperators.LT, AdminForthFilterOperators.GTE, AdminForthFilterOperators.LTE,
98
100
  AdminForthFilterOperators.LIKE, AdminForthFilterOperators.ILIKE, AdminForthFilterOperators.IN,
99
- AdminForthFilterOperators.NIN].includes(filters.operator)) {
101
+ AdminForthFilterOperators.NIN, AdminForthFilterOperators.IS_EMPTY, AdminForthFilterOperators.IS_NOT_EMPTY].includes(filters.operator)) {
100
102
  return { ok: false, error: `Field "operator" has wrong value in filter object: ${JSON.stringify(filters)}` };
101
103
  }
102
104
  const fieldObj = resource.dataSourceColumns.find((col) => col.name == filtersAsSingle.field);
@@ -110,7 +112,7 @@ export default class AdminForthBaseConnector {
110
112
  }));
111
113
  }
112
114
  if (isPolymorphicTarget) {
113
- process.env.HEAVY_DEBUG && console.log(`⚠️ Field '${filtersAsSingle.field}' not found in polymorphic target resource '${resource.resourceId}', allowing query to proceed.`);
115
+ afLogger.trace(`⚠️ Field '${filtersAsSingle.field}' not found in polymorphic target resource '${resource.resourceId}', allowing query to proceed.`);
114
116
  return { ok: true, error: '' };
115
117
  }
116
118
  else {
@@ -127,6 +129,13 @@ export default class AdminForthBaseConnector {
127
129
  }
128
130
  // No value conversion needed for field-to-field comparison here
129
131
  }
132
+ else if (isEmptyOperator) {
133
+ // IS_EMPTY and IS_NOT_EMPTY don't need value normalization
134
+ // Set value to null if not already set
135
+ if (filtersAsSingle.value === undefined) {
136
+ filtersAsSingle.value = null;
137
+ }
138
+ }
130
139
  else if (filters.operator == AdminForthFilterOperators.IN || filters.operator == AdminForthFilterOperators.NIN) {
131
140
  if (!Array.isArray(filters.value)) {
132
141
  return { ok: false, error: `Value for operator '${filters.operator}' should be an array, in filter object: ${JSON.stringify(filters)}` };
@@ -142,10 +151,10 @@ export default class AdminForthBaseConnector {
142
151
  return { ok: false, error: `Value for operator '${filters.operator}' should not be empty array, in filter object: ${JSON.stringify(filters)}` };
143
152
  }
144
153
  }
145
- filters.value = filters.value.map((val) => this.setFieldValue(fieldObj, val));
154
+ filters.value = filters.value.map((val) => this.validateAndSetFieldValue(fieldObj, val));
146
155
  }
147
156
  else {
148
- filtersAsSingle.value = this.setFieldValue(fieldObj, filtersAsSingle.value);
157
+ filtersAsSingle.value = this.validateAndSetFieldValue(fieldObj, filtersAsSingle.value);
149
158
  }
150
159
  }
151
160
  else if (filtersAsSingle.insecureRawSQL || filtersAsSingle.insecureRawNoSQL) {
@@ -187,6 +196,83 @@ export default class AdminForthBaseConnector {
187
196
  setFieldValue(field, value) {
188
197
  throw new Error('Method not implemented.');
189
198
  }
199
+ validateAndSetFieldValue(field, value) {
200
+ // Int
201
+ if (field.type === AdminForthDataTypes.INTEGER) {
202
+ if (value === "" || value === null) {
203
+ return this.setFieldValue(field, null);
204
+ }
205
+ if (!Number.isFinite(value)) {
206
+ throw new Error(`Value is not an integer. Field ${field.name} with type is ${field.type}, but got value: ${value} with type ${typeof value}`);
207
+ }
208
+ return this.setFieldValue(field, value);
209
+ }
210
+ // Float
211
+ if (field.type === AdminForthDataTypes.FLOAT) {
212
+ if (value === "" || value === null) {
213
+ return this.setFieldValue(field, null);
214
+ }
215
+ if (typeof value !== "number" || !Number.isFinite(value)) {
216
+ throw new Error(`Value is not a float. Field ${field.name} with type is ${field.type}, but got value: ${String(value)} with type ${typeof value}`);
217
+ }
218
+ return this.setFieldValue(field, value);
219
+ }
220
+ // Decimal
221
+ if (field.type === AdminForthDataTypes.DECIMAL) {
222
+ if (value === "" || value === null) {
223
+ return this.setFieldValue(field, null);
224
+ }
225
+ // Accept string
226
+ if (typeof value === "string") {
227
+ const string = value.trim();
228
+ if (!string) {
229
+ return this.setFieldValue(field, null);
230
+ }
231
+ if (Number.isFinite(Number(string))) {
232
+ return this.setFieldValue(field, string);
233
+ }
234
+ throw new Error(`Value is not a decimal. Field ${field.name} with type is ${field.type}, but got value: ${value} with type ${typeof value}`);
235
+ }
236
+ // Accept Decimal-like objects (e.g., decimal.js) by using toString()
237
+ if (value && typeof value === "object" && typeof value.toString === "function") {
238
+ const s = value.toString();
239
+ if (typeof s === "string" && s.trim() !== "" && Number.isFinite(Number(s))) {
240
+ return this.setFieldValue(field, s);
241
+ }
242
+ }
243
+ throw new Error(`Value is not a decimal. Field ${field.name} with type is ${field.type}, but got value: ${String(value)} with type ${typeof value}`);
244
+ }
245
+ // Date
246
+ // DateTime
247
+ if (field.type === AdminForthDataTypes.DATETIME) {
248
+ if (value === "" || value === null) {
249
+ return this.setFieldValue(field, null);
250
+ }
251
+ if (!dayjs(value).isValid()) {
252
+ throw new Error(`Value is not a valid datetime. Field ${field.name} with type is ${field.type}, but got value: ${value} with type ${typeof value}`);
253
+ }
254
+ return this.setFieldValue(field, value);
255
+ }
256
+ // Time
257
+ // Boolean
258
+ if (field.type === AdminForthDataTypes.BOOLEAN) {
259
+ if (value === "" || value === null) {
260
+ return this.setFieldValue(field, null);
261
+ }
262
+ if (typeof value !== 'boolean') {
263
+ throw new Error(`Value is not a boolean. Field ${field.name} with type is ${field.type}, but got value: ${value} with type ${typeof value}`);
264
+ }
265
+ return this.setFieldValue(field, value);
266
+ }
267
+ // JSON
268
+ // String
269
+ if (field.type === AdminForthDataTypes.STRING) {
270
+ if (value === "" || value === null) {
271
+ return this.setFieldValue(field, null);
272
+ }
273
+ }
274
+ return this.setFieldValue(field, value);
275
+ }
190
276
  getMinMaxForColumnsWithOriginalTypes({ resource, columns }) {
191
277
  throw new Error('Method not implemented.');
192
278
  }
@@ -194,7 +280,7 @@ export default class AdminForthBaseConnector {
194
280
  throw new Error('Method not implemented.');
195
281
  }
196
282
  async checkUnique(resource, column, value, record) {
197
- process.env.HEAVY_DEBUG && console.log('☝️🪲🪲🪲🪲 checkUnique|||', column, value);
283
+ afLogger.trace(`☝️🪲🪲🪲🪲 checkUnique||| ${column.name}, ${value}`);
198
284
  const primaryKeyField = this.getPrimaryKey(resource);
199
285
  const existingRecord = await this.getData({
200
286
  resource,
@@ -227,7 +313,7 @@ export default class AdminForthBaseConnector {
227
313
  }
228
314
  if (filledRecord[col.name] !== undefined) {
229
315
  // no sense to set value if it is not defined
230
- recordWithOriginalValues[col.name] = this.setFieldValue(col, filledRecord[col.name]);
316
+ recordWithOriginalValues[col.name] = this.validateAndSetFieldValue(col, filledRecord[col.name]);
231
317
  }
232
318
  }
233
319
  let error = null;
@@ -240,10 +326,10 @@ export default class AdminForthBaseConnector {
240
326
  }
241
327
  }));
242
328
  if (error) {
243
- process.env.HEAVY_DEBUG && console.log('🪲🆕 check unique error', error);
329
+ afLogger.trace(`🪲🆕 check unique error, ${error}`);
244
330
  return { error, ok: false };
245
331
  }
246
- process.env.HEAVY_DEBUG && console.log('🪲🆕 creating record', JSON.stringify(recordWithOriginalValues));
332
+ afLogger.trace(`🪲🆕 creating record, ${JSON.stringify(recordWithOriginalValues)}`);
247
333
  let pkValue = await this.createRecordOriginalValues({ resource, record: recordWithOriginalValues });
248
334
  if (recordWithOriginalValues[this.getPrimaryKey(resource)] !== undefined) {
249
335
  // some data sources always return some value for pk, even if it is was not auto generated
@@ -275,7 +361,7 @@ export default class AdminForthBaseConnector {
275
361
  Update record received field '${field}' (with value ${newValues[field]}), but such column not found in resource '${resource.resourceId}'. ${similar ? `Did you mean '${similar}'?` : ''}
276
362
  `);
277
363
  }
278
- recordWithOriginalValues[col.name] = this.setFieldValue(col, newValues[col.name]);
364
+ recordWithOriginalValues[col.name] = this.validateAndSetFieldValue(col, newValues[col.name]);
279
365
  }
280
366
  const record = await this.getRecordByPrimaryKey(resource, recordId);
281
367
  let error = null;
@@ -288,10 +374,10 @@ export default class AdminForthBaseConnector {
288
374
  }
289
375
  }));
290
376
  if (error) {
291
- process.env.HEAVY_DEBUG && console.log('🪲🆕 check unique error', error);
377
+ afLogger.trace(`🪲🆕 check unique error, ${error}`);
292
378
  return { error, ok: false };
293
379
  }
294
- process.env.HEAVY_DEBUG && console.log(`🪲✏️ updating record id:${recordId}, values: ${JSON.stringify(recordWithOriginalValues)}`);
380
+ afLogger.trace(`🪲✏️ updating record id:${recordId}, values: ${JSON.stringify(recordWithOriginalValues)}`);
295
381
  await this.updateRecordOriginalValues({ resource, recordId, newValues: recordWithOriginalValues });
296
382
  return { ok: true };
297
383
  }