adminforth 1.4.3-next.20 → 1.4.3-next.21

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 (146) hide show
  1. package/dist/adminforth/auth.d.ts +31 -0
  2. package/dist/adminforth/auth.d.ts.map +1 -0
  3. package/dist/adminforth/auth.js +119 -0
  4. package/dist/adminforth/auth.js.map +1 -0
  5. package/dist/adminforth/basePlugin.d.ts +23 -0
  6. package/dist/adminforth/basePlugin.d.ts.map +1 -0
  7. package/dist/adminforth/basePlugin.js +51 -0
  8. package/dist/adminforth/basePlugin.js.map +1 -0
  9. package/dist/adminforth/dataConnectors/baseConnector.d.ts +95 -0
  10. package/dist/adminforth/dataConnectors/baseConnector.d.ts.map +1 -0
  11. package/dist/adminforth/dataConnectors/baseConnector.js +178 -0
  12. package/dist/adminforth/dataConnectors/baseConnector.js.map +1 -0
  13. package/dist/adminforth/dataConnectors/clickhouse.d.ts +93 -0
  14. package/dist/adminforth/dataConnectors/clickhouse.d.ts.map +1 -0
  15. package/dist/adminforth/dataConnectors/clickhouse.js +297 -0
  16. package/dist/adminforth/dataConnectors/clickhouse.js.map +1 -0
  17. package/dist/adminforth/dataConnectors/mongo.d.ts +94 -0
  18. package/dist/adminforth/dataConnectors/mongo.d.ts.map +1 -0
  19. package/dist/adminforth/dataConnectors/mongo.js +168 -0
  20. package/dist/adminforth/dataConnectors/mongo.js.map +1 -0
  21. package/dist/adminforth/dataConnectors/postgres.d.ts +72 -0
  22. package/dist/adminforth/dataConnectors/postgres.d.ts.map +1 -0
  23. package/dist/adminforth/dataConnectors/postgres.js +298 -0
  24. package/dist/adminforth/dataConnectors/postgres.js.map +1 -0
  25. package/dist/adminforth/dataConnectors/sqlite.d.ts +67 -0
  26. package/dist/adminforth/dataConnectors/sqlite.d.ts.map +1 -0
  27. package/dist/adminforth/dataConnectors/sqlite.js +251 -0
  28. package/dist/adminforth/dataConnectors/sqlite.js.map +1 -0
  29. package/dist/adminforth/index.d.ts +94 -0
  30. package/dist/adminforth/index.d.ts.map +1 -0
  31. package/dist/adminforth/index.js +357 -0
  32. package/dist/adminforth/index.js.map +1 -0
  33. package/dist/adminforth/modules/codeInjector.d.ts +38 -0
  34. package/dist/adminforth/modules/codeInjector.d.ts.map +1 -0
  35. package/dist/adminforth/modules/codeInjector.js +673 -0
  36. package/dist/adminforth/modules/codeInjector.js.map +1 -0
  37. package/dist/adminforth/modules/configValidator.d.ts +13 -0
  38. package/dist/adminforth/modules/configValidator.d.ts.map +1 -0
  39. package/dist/adminforth/modules/configValidator.js +511 -0
  40. package/dist/adminforth/modules/configValidator.js.map +1 -0
  41. package/dist/adminforth/modules/operationalResource.d.ts +17 -0
  42. package/dist/adminforth/modules/operationalResource.d.ts.map +1 -0
  43. package/dist/adminforth/modules/operationalResource.js +75 -0
  44. package/dist/adminforth/modules/operationalResource.js.map +1 -0
  45. package/dist/adminforth/modules/restApi.d.ts +11 -0
  46. package/dist/adminforth/modules/restApi.d.ts.map +1 -0
  47. package/dist/adminforth/modules/restApi.js +657 -0
  48. package/dist/adminforth/modules/restApi.js.map +1 -0
  49. package/dist/adminforth/modules/styleGenerator.d.ts +9 -0
  50. package/dist/adminforth/modules/styleGenerator.d.ts.map +1 -0
  51. package/dist/adminforth/modules/styleGenerator.js +47 -0
  52. package/dist/adminforth/modules/styleGenerator.js.map +1 -0
  53. package/dist/adminforth/modules/styles.d.ts +96 -0
  54. package/dist/adminforth/modules/styles.d.ts.map +1 -0
  55. package/dist/adminforth/modules/styles.js +105 -0
  56. package/dist/adminforth/modules/styles.js.map +1 -0
  57. package/dist/adminforth/modules/utils.d.ts +39 -0
  58. package/dist/adminforth/modules/utils.d.ts.map +1 -0
  59. package/dist/adminforth/modules/utils.js +421 -0
  60. package/dist/adminforth/modules/utils.js.map +1 -0
  61. package/dist/adminforth/plugins/audit-log/index.d.ts +25 -0
  62. package/dist/adminforth/plugins/audit-log/index.d.ts.map +1 -0
  63. package/dist/adminforth/plugins/audit-log/index.js +129 -0
  64. package/dist/adminforth/plugins/audit-log/index.js.map +1 -0
  65. package/dist/adminforth/plugins/audit-log/types.d.ts +35 -0
  66. package/dist/adminforth/plugins/audit-log/types.d.ts.map +1 -0
  67. package/dist/adminforth/plugins/audit-log/types.js +2 -0
  68. package/dist/adminforth/plugins/audit-log/types.js.map +1 -0
  69. package/dist/adminforth/plugins/chat-gpt/index.d.ts +14 -0
  70. package/dist/adminforth/plugins/chat-gpt/index.d.ts.map +1 -0
  71. package/dist/adminforth/plugins/chat-gpt/index.js +147 -0
  72. package/dist/adminforth/plugins/chat-gpt/index.js.map +1 -0
  73. package/dist/adminforth/plugins/chat-gpt/types.d.ts +82 -0
  74. package/dist/adminforth/plugins/chat-gpt/types.d.ts.map +1 -0
  75. package/dist/adminforth/plugins/chat-gpt/types.js +2 -0
  76. package/dist/adminforth/plugins/chat-gpt/types.js.map +1 -0
  77. package/dist/adminforth/plugins/email-password-reset/index.d.ts +15 -0
  78. package/dist/adminforth/plugins/email-password-reset/index.d.ts.map +1 -0
  79. package/dist/adminforth/plugins/email-password-reset/index.js +176 -0
  80. package/dist/adminforth/plugins/email-password-reset/index.js.map +1 -0
  81. package/dist/adminforth/plugins/email-password-reset/types.d.ts +28 -0
  82. package/dist/adminforth/plugins/email-password-reset/types.d.ts.map +1 -0
  83. package/dist/adminforth/plugins/email-password-reset/types.js +2 -0
  84. package/dist/adminforth/plugins/email-password-reset/types.js.map +1 -0
  85. package/dist/adminforth/plugins/foreign-inline-list/index.d.ts +13 -0
  86. package/dist/adminforth/plugins/foreign-inline-list/index.d.ts.map +1 -0
  87. package/dist/adminforth/plugins/foreign-inline-list/index.js +56 -0
  88. package/dist/adminforth/plugins/foreign-inline-list/index.js.map +1 -0
  89. package/dist/adminforth/plugins/foreign-inline-list/types.d.ts +19 -0
  90. package/dist/adminforth/plugins/foreign-inline-list/types.d.ts.map +1 -0
  91. package/dist/adminforth/plugins/foreign-inline-list/types.js +2 -0
  92. package/dist/adminforth/plugins/foreign-inline-list/types.js.map +1 -0
  93. package/dist/adminforth/plugins/import-export/index.d.ts +15 -0
  94. package/dist/adminforth/plugins/import-export/index.d.ts.map +1 -0
  95. package/dist/adminforth/plugins/import-export/index.js +127 -0
  96. package/dist/adminforth/plugins/import-export/index.js.map +1 -0
  97. package/dist/adminforth/plugins/import-export/types.d.ts +3 -0
  98. package/dist/adminforth/plugins/import-export/types.d.ts.map +1 -0
  99. package/dist/adminforth/plugins/import-export/types.js +2 -0
  100. package/dist/adminforth/plugins/import-export/types.js.map +1 -0
  101. package/dist/adminforth/plugins/rich-editor/index.d.ts +17 -0
  102. package/dist/adminforth/plugins/rich-editor/index.d.ts.map +1 -0
  103. package/dist/adminforth/plugins/rich-editor/index.js +262 -0
  104. package/dist/adminforth/plugins/rich-editor/index.js.map +1 -0
  105. package/dist/adminforth/plugins/rich-editor/types.d.ts +153 -0
  106. package/dist/adminforth/plugins/rich-editor/types.d.ts.map +1 -0
  107. package/dist/adminforth/plugins/rich-editor/types.js +16 -0
  108. package/dist/adminforth/plugins/rich-editor/types.js.map +1 -0
  109. package/dist/adminforth/plugins/two-factors-auth/index.d.ts +16 -0
  110. package/dist/adminforth/plugins/two-factors-auth/index.d.ts.map +1 -0
  111. package/dist/adminforth/plugins/two-factors-auth/index.js +134 -0
  112. package/dist/adminforth/plugins/two-factors-auth/index.js.map +1 -0
  113. package/dist/adminforth/plugins/two-factors-auth/types.d.ts +18 -0
  114. package/dist/adminforth/plugins/two-factors-auth/types.d.ts.map +1 -0
  115. package/dist/adminforth/plugins/two-factors-auth/types.js +2 -0
  116. package/dist/adminforth/plugins/two-factors-auth/types.js.map +1 -0
  117. package/dist/adminforth/plugins/upload/index.d.ts +14 -0
  118. package/dist/adminforth/plugins/upload/index.d.ts.map +1 -0
  119. package/dist/adminforth/plugins/upload/index.js +450 -0
  120. package/dist/adminforth/plugins/upload/index.js.map +1 -0
  121. package/dist/adminforth/plugins/upload/types.d.ts +132 -0
  122. package/dist/adminforth/plugins/upload/types.d.ts.map +1 -0
  123. package/dist/adminforth/plugins/upload/types.js +2 -0
  124. package/dist/adminforth/plugins/upload/types.js.map +1 -0
  125. package/dist/adminforth/servers/express.d.ts +18 -0
  126. package/dist/adminforth/servers/express.d.ts.map +1 -0
  127. package/dist/adminforth/servers/express.js +238 -0
  128. package/dist/adminforth/servers/express.js.map +1 -0
  129. package/dist/adminforth/types/Back.d.ts +1103 -0
  130. package/dist/adminforth/types/Back.d.ts.map +1 -0
  131. package/dist/adminforth/types/Back.js +86 -0
  132. package/dist/adminforth/types/Back.js.map +1 -0
  133. package/dist/adminforth/types/Common.d.ts +616 -0
  134. package/dist/adminforth/types/Common.d.ts.map +1 -0
  135. package/dist/adminforth/types/Common.js +65 -0
  136. package/dist/adminforth/types/Common.js.map +1 -0
  137. package/dist/adminforth/types/FrontendAPI.d.ts +134 -0
  138. package/dist/adminforth/types/FrontendAPI.d.ts.map +1 -0
  139. package/dist/adminforth/types/FrontendAPI.js +8 -0
  140. package/dist/adminforth/types/FrontendAPI.js.map +1 -0
  141. package/dist/dev-demo/index.d.ts +3 -0
  142. package/dist/dev-demo/index.d.ts.map +1 -0
  143. package/dist/dev-demo/index.js +1052 -0
  144. package/dist/dev-demo/index.js.map +1 -0
  145. package/dist/spa/src/types/Back.ts +25 -5
  146. package/package.json +1 -1
@@ -0,0 +1,421 @@
1
+ import path from 'path';
2
+ import { fileURLToPath } from 'url';
3
+ import fs from 'fs';
4
+ import Fuse from 'fuse.js';
5
+ // @ts-ignore-next-line
6
+ const csscolors = {
7
+ "aliceblue": "#f0f8ff",
8
+ "antiquewhite": "#faebd7",
9
+ "aqua": "#00ffff",
10
+ "aquamarine": "#7fffd4",
11
+ "azure": "#f0ffff",
12
+ "beige": "#f5f5dc",
13
+ "bisque": "#ffe4c4",
14
+ "black": "#000000",
15
+ "blanchedalmond": "#ffebcd",
16
+ "blue": "#0000ff",
17
+ "blueviolet": "#8a2be2",
18
+ "brown": "#a52a2a",
19
+ "burlywood": "#deb887",
20
+ "cadetblue": "#5f9ea0",
21
+ "chartreuse": "#7fff00",
22
+ "chocolate": "#d2691e",
23
+ "coral": "#ff7f50",
24
+ "cornflowerblue": "#6495ed",
25
+ "cornsilk": "#fff8dc",
26
+ "crimson": "#dc143c",
27
+ "cyan": "#00ffff",
28
+ "darkblue": "#00008b",
29
+ "darkcyan": "#008b8b",
30
+ "darkgoldenrod": "#b8860b",
31
+ "darkgray": "#a9a9a9",
32
+ "darkgreen": "#006400",
33
+ "darkgrey": "#a9a9a9",
34
+ "darkkhaki": "#bdb76b",
35
+ "darkmagenta": "#8b008b",
36
+ "darkolivegreen": "#556b2f",
37
+ "darkorange": "#ff8c00",
38
+ "darkorchid": "#9932cc",
39
+ "darkred": "#8b0000",
40
+ "darksalmon": "#e9967a",
41
+ "darkseagreen": "#8fbc8f",
42
+ "darkslateblue": "#483d8b",
43
+ "darkslategray": "#2f4f4f",
44
+ "darkslategrey": "#2f4f4f",
45
+ "darkturquoise": "#00ced1",
46
+ "darkviolet": "#9400d3",
47
+ "deeppink": "#ff1493",
48
+ "deepskyblue": "#00bfff",
49
+ "dimgray": "#696969",
50
+ "dimgrey": "#696969",
51
+ "dodgerblue": "#1e90ff",
52
+ "firebrick": "#b22222",
53
+ "floralwhite": "#fffaf0",
54
+ "forestgreen": "#228b22",
55
+ "fuchsia": "#ff00ff",
56
+ "gainsboro": "#dcdcdc",
57
+ "ghostwhite": "#f8f8ff",
58
+ "goldenrod": "#daa520",
59
+ "gold": "#ffd700",
60
+ "gray": "#808080",
61
+ "green": "#008000",
62
+ "greenyellow": "#adff2f",
63
+ "grey": "#808080",
64
+ "honeydew": "#f0fff0",
65
+ "hotpink": "#ff69b4",
66
+ "indianred": "#cd5c5c",
67
+ "indigo": "#4b0082",
68
+ "ivory": "#fffff0",
69
+ "khaki": "#f0e68c",
70
+ "lavenderblush": "#fff0f5",
71
+ "lavender": "#e6e6fa",
72
+ "lawngreen": "#7cfc00",
73
+ "lemonchiffon": "#fffacd",
74
+ "lightblue": "#add8e6",
75
+ "lightcoral": "#f08080",
76
+ "lightcyan": "#e0ffff",
77
+ "lightgoldenrodyellow": "#fafad2",
78
+ "lightgray": "#d3d3d3",
79
+ "lightgreen": "#90ee90",
80
+ "lightgrey": "#d3d3d3",
81
+ "lightpink": "#ffb6c1",
82
+ "lightsalmon": "#ffa07a",
83
+ "lightseagreen": "#20b2aa",
84
+ "lightskyblue": "#87cefa",
85
+ "lightslategray": "#778899",
86
+ "lightslategrey": "#778899",
87
+ "lightsteelblue": "#b0c4de",
88
+ "lightyellow": "#ffffe0",
89
+ "lime": "#00ff00",
90
+ "limegreen": "#32cd32",
91
+ "linen": "#faf0e6",
92
+ "magenta": "#ff00ff",
93
+ "maroon": "#800000",
94
+ "mediumaquamarine": "#66cdaa",
95
+ "mediumblue": "#0000cd",
96
+ "mediumorchid": "#ba55d3",
97
+ "mediumpurple": "#9370db",
98
+ "mediumseagreen": "#3cb371",
99
+ "mediumslateblue": "#7b68ee",
100
+ "mediumspringgreen": "#00fa9a",
101
+ "mediumturquoise": "#48d1cc",
102
+ "mediumvioletred": "#c71585",
103
+ "midnightblue": "#191970",
104
+ "mintcream": "#f5fffa",
105
+ "mistyrose": "#ffe4e1",
106
+ "moccasin": "#ffe4b5",
107
+ "navajowhite": "#ffdead",
108
+ "navy": "#000080",
109
+ "oldlace": "#fdf5e6",
110
+ "olive": "#808000",
111
+ "olivedrab": "#6b8e23",
112
+ "orange": "#ffa500",
113
+ "orangered": "#ff4500",
114
+ "orchid": "#da70d6",
115
+ "palegoldenrod": "#eee8aa",
116
+ "palegreen": "#98fb98",
117
+ "paleturquoise": "#afeeee",
118
+ "palevioletred": "#db7093",
119
+ "papayawhip": "#ffefd5",
120
+ "peachpuff": "#ffdab9",
121
+ "peru": "#cd853f",
122
+ "pink": "#ffc0cb",
123
+ "plum": "#dda0dd",
124
+ "powderblue": "#b0e0e6",
125
+ "purple": "#800080",
126
+ "rebeccapurple": "#663399",
127
+ "red": "#ff0000",
128
+ "rosybrown": "#bc8f8f",
129
+ "royalblue": "#4169e1",
130
+ "saddlebrown": "#8b4513",
131
+ "salmon": "#fa8072",
132
+ "sandybrown": "#f4a460",
133
+ "seagreen": "#2e8b57",
134
+ "seashell": "#fff5ee",
135
+ "sienna": "#a0522d",
136
+ "silver": "#c0c0c0",
137
+ "skyblue": "#87ceeb",
138
+ "slateblue": "#6a5acd",
139
+ "slategray": "#708090",
140
+ "slategrey": "#708090",
141
+ "snow": "#fffafa",
142
+ "springgreen": "#00ff7f",
143
+ "steelblue": "#4682b4",
144
+ "tan": "#d2b48c",
145
+ "teal": "#008080",
146
+ "thistle": "#d8bfd8",
147
+ "tomato": "#ff6347",
148
+ "turquoise": "#40e0d0",
149
+ "violet": "#ee82ee",
150
+ "wheat": "#f5deb3",
151
+ "white": "#ffffff",
152
+ "whitesmoke": "#f5f5f5",
153
+ "yellow": "#ffff00",
154
+ "yellowgreen": "#9acd32"
155
+ };
156
+ export function guessLabelFromName(name) {
157
+ if (name.includes('_')) {
158
+ return name.split('_').map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(' ');
159
+ }
160
+ else if (name.includes('-')) {
161
+ return name.split('-').map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(' ');
162
+ }
163
+ else {
164
+ // split by capital letters
165
+ return name.split(/(?=[A-Z])/).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(' ');
166
+ }
167
+ }
168
+ export const currentFileDir = (metaUrl) => {
169
+ const __filename = fileURLToPath(metaUrl);
170
+ let __dirname = path.dirname(__filename);
171
+ if (__dirname.endsWith('/dist/modules')) {
172
+ // in prod build we are in dist also, so make another back jump to go true sorces
173
+ __dirname = path.join(__dirname, '..');
174
+ }
175
+ return __dirname;
176
+ };
177
+ // in both bundeled and dev mode this always points to the root of the adminforth package (where package.json is)
178
+ export const ADMIN_FORTH_ABSOLUTE_PATH = path.join(currentFileDir(import.meta.url), '..');
179
+ const package_json = JSON.parse(fs.readFileSync(path.join(ADMIN_FORTH_ABSOLUTE_PATH, 'package.json'), 'utf8'));
180
+ export const ADMINFORTH_VERSION = package_json.version;
181
+ export function getComponentNameFromPath(filePath) {
182
+ return filePath.replace(/@/g, '').replace(/\./g, '').replace(/\//g, '');
183
+ }
184
+ export function listify(param) {
185
+ return param || [];
186
+ }
187
+ export function deepMerge(target, source) {
188
+ if (typeof target !== 'object' || target === null) {
189
+ return source;
190
+ }
191
+ for (let key in source) {
192
+ if (source.hasOwnProperty(key)) {
193
+ if (typeof source[key] === 'object' && source[key] !== null) {
194
+ if (!target[key]) {
195
+ target[key] = {};
196
+ }
197
+ deepMerge(target[key], source[key]);
198
+ }
199
+ else {
200
+ target[key] = source[key];
201
+ }
202
+ }
203
+ }
204
+ return target;
205
+ }
206
+ function toCamelCase(str) {
207
+ return str.replace(/[-_](.)/g, (_, char) => char.toUpperCase());
208
+ }
209
+ export function transformObject(obj, parentKey = '', result = {}) {
210
+ for (const key in obj) {
211
+ if (obj.hasOwnProperty(key)) {
212
+ const camelCaseKey = toCamelCase(parentKey ? `${parentKey}_${key}` : key);
213
+ if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
214
+ transformObject(obj[key], camelCaseKey, result);
215
+ }
216
+ else {
217
+ result[camelCaseKey] = obj[key];
218
+ }
219
+ }
220
+ }
221
+ //remove 'Default' from keys
222
+ for (const key in result) {
223
+ if (key.includes('Main')) {
224
+ const newKey = key.replace('Main', '');
225
+ result[newKey] = result[key];
226
+ delete result[key];
227
+ }
228
+ }
229
+ return result;
230
+ }
231
+ function hexToRGBA(hex, opacity) {
232
+ var c;
233
+ if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {
234
+ c = hex.substring(1).split('');
235
+ if (c.length == 3) {
236
+ c = [c[0], c[0], c[1], c[1], c[2], c[2]];
237
+ }
238
+ c = '0x' + c.join('');
239
+ return 'rgba(' + [(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') + ',' + opacity + ')';
240
+ }
241
+ throw new Error('Bad Hex');
242
+ }
243
+ export function createRGBA(color, opacity) {
244
+ if (!color)
245
+ return;
246
+ else if (color.startsWith("rgba")) {
247
+ //add opacity to existing rgba color
248
+ const rgb = color.match(/[\d.]+/g);
249
+ return `rgba(${rgb[0]}, ${rgb[1]}, ${rgb[2]}, ${Number(rgb[3]) * opacity})`;
250
+ }
251
+ else if (color.startsWith("rgb")) {
252
+ const rgb = color.match(/\d+/g);
253
+ return `rgba(${rgb[0]}, ${rgb[1]}, ${rgb[2]}, ${opacity})`;
254
+ }
255
+ else if (color.startsWith("#")) {
256
+ return hexToRGBA(color, opacity);
257
+ }
258
+ else if (csscolors[color]) {
259
+ return hexToRGBA(csscolors[color], opacity);
260
+ }
261
+ else {
262
+ return color;
263
+ }
264
+ }
265
+ export function parseColorForAliases(str) {
266
+ const aliasRegex = /alias:([^ ]+)/;
267
+ const opacityRegex = /opacity:([0-9.]+)/;
268
+ const darkenRegex = /darken/;
269
+ const lightenRegex = /lighten/;
270
+ const inverseRegex = /inverse/;
271
+ // Extract alias and properties
272
+ const aliasMatch = str.match(aliasRegex);
273
+ const opacityMatch = str.match(opacityRegex);
274
+ const darkenMatch = str.match(darkenRegex);
275
+ const lightenMatch = str.match(lightenRegex);
276
+ const inverseMatch = str.match(inverseRegex);
277
+ return { aliasMatch, opacityMatch, darkenMatch, lightenMatch, inverseMatch };
278
+ }
279
+ export function darkenRGBA(rgba) {
280
+ let amount = 0.2;
281
+ // Extract the RGBA components
282
+ let [r, g, b, a] = rgba.match(/\d+/g).map(Number);
283
+ // Ensure amount is between 0 and 1
284
+ amount = Math.max(0, Math.min(1, amount));
285
+ // Calculate the new RGB values
286
+ r = Math.max(0, r * (1 - amount));
287
+ g = Math.max(0, g * (1 - amount));
288
+ b = Math.max(0, b * (1 - amount));
289
+ // Return the new RGBA color
290
+ return `rgba(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)}, ${a})`;
291
+ }
292
+ export function lightenRGBA(rgba) {
293
+ let amount = 0.2;
294
+ // Extract the RGBA components
295
+ let [r, g, b, a] = rgba.match(/\d+/g).map(Number);
296
+ // Ensure amount is between 0 and 1
297
+ amount = Math.max(0, Math.min(1, amount));
298
+ // Calculate the new RGB values
299
+ r = Math.min(255, r * (1 + amount));
300
+ g = Math.min(255, g * (1 + amount));
301
+ b = Math.min(255, b * (1 + amount));
302
+ // Return the new RGBA color
303
+ return `rgba(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)}, ${a})`;
304
+ }
305
+ export function inverseRGBA(rgba) {
306
+ // return white or black depending on the brightness of the color
307
+ let [r, g, b] = rgba.match(/\d+/g).map(Number);
308
+ let brightness = (r * 299 + g * 587 + b * 114) / 1000;
309
+ return brightness > 128 ? 'rgba(0,0,0,1)' : 'rgba(255,255,255,1)';
310
+ }
311
+ export function suggestIfTypo(names, name) {
312
+ if (!name) {
313
+ return null;
314
+ }
315
+ const options = {
316
+ includeScore: true, // Includes score in the results to see how close matches are
317
+ threshold: 0.3, // Defines the fuzziness (lower values mean stricter matches)
318
+ };
319
+ const fuse = new Fuse(names.filter((n) => !!n), options);
320
+ // Search for a resource
321
+ const result = fuse.search(name);
322
+ if (result.length > 0) {
323
+ return result[0].item;
324
+ }
325
+ }
326
+ export function getClinetIp(headers) {
327
+ return headers['CF-Connecting-IP'] ||
328
+ headers['x-forwarded-for'] ||
329
+ headers['x-real-ip'] ||
330
+ headers['x-client-ip'] ||
331
+ headers['x-proxy-user'] ||
332
+ headers['x-cluster-client-ip'] ||
333
+ headers['forwarded'] ||
334
+ headers['remote-addr'] ||
335
+ headers['client-ip'] ||
336
+ headers['x-client-ip'] ||
337
+ headers['x-real-ip'] || 'unknown';
338
+ }
339
+ export class RateLimiter {
340
+ /**
341
+ * Very dirty version of ratelimiter for demo purposes (should not be considered as production ready)
342
+ * Will be used as RateLimiter.checkRateLimit('key', '5/24h', clientIp)
343
+ * Stores counter in this class, in RAM, resets limits on app restart.
344
+ * Also it creates setTimeout for every call, so is not optimal for high load.
345
+ * @param key - key to store rate limit for
346
+ * @param limit - limit in format '5/24h' - 5 requests per 24 hours
347
+ * @param clientIp
348
+ */
349
+ static checkRateLimit(key, limit, clientIp) {
350
+ if (!limit) {
351
+ throw new Error('Rate limit is not set');
352
+ }
353
+ if (!key) {
354
+ throw new Error('Rate limit key is not set');
355
+ }
356
+ if (!clientIp) {
357
+ throw new Error('Client IP is not set');
358
+ }
359
+ if (!limit.includes('/')) {
360
+ throw new Error('Rate limit should be in format count/period, like 5/24h');
361
+ }
362
+ // parse limit
363
+ const [count, period] = limit.split('/');
364
+ const [preiodAmount, periodType] = /(\d+)(\w+)/.exec(period).slice(1);
365
+ const preiodAmountNumber = parseInt(preiodAmount);
366
+ // get current time
367
+ const whenClear = new Date();
368
+ if (periodType === 'h') {
369
+ whenClear.setHours(whenClear.getHours() + preiodAmountNumber);
370
+ }
371
+ else if (periodType === 'd') {
372
+ whenClear.setDate(whenClear.getDate() + preiodAmountNumber);
373
+ }
374
+ else if (periodType === 'm') {
375
+ whenClear.setMinutes(whenClear.getMinutes() + preiodAmountNumber);
376
+ }
377
+ else if (periodType === 'y') {
378
+ whenClear.setFullYear(whenClear.getFullYear() + preiodAmountNumber);
379
+ }
380
+ else if (periodType === 's') {
381
+ whenClear.setSeconds(whenClear.getSeconds() + preiodAmountNumber);
382
+ }
383
+ else {
384
+ throw new Error(`Unsupported period type for rate limiting: ${periodType}`);
385
+ }
386
+ // get current counter
387
+ const counter = this.counterData[key] && this.counterData[key][clientIp] || 0;
388
+ if (counter >= count) {
389
+ return { error: true };
390
+ }
391
+ RateLimiter.incrementCounter(key, clientIp);
392
+ setTimeout(() => {
393
+ RateLimiter.decrementCounter(key, clientIp);
394
+ }, whenClear.getTime() - Date.now());
395
+ return { error: false };
396
+ }
397
+ static incrementCounter(key, ip) {
398
+ if (!RateLimiter.counterData[key]) {
399
+ RateLimiter.counterData[key] = {};
400
+ }
401
+ if (!RateLimiter.counterData[key][ip]) {
402
+ RateLimiter.counterData[key][ip] = 0;
403
+ }
404
+ RateLimiter.counterData[key][ip]++;
405
+ console.log('🔄️🔄️🔄️🔄️🔄️🔄️ incremented', key, ip, this.counterData[key][ip]);
406
+ }
407
+ static decrementCounter(key, ip) {
408
+ if (!RateLimiter.counterData[key]) {
409
+ RateLimiter.counterData[key] = {};
410
+ }
411
+ if (!RateLimiter.counterData[key][ip]) {
412
+ RateLimiter.counterData[key][ip] = 0;
413
+ }
414
+ if (RateLimiter.counterData[key][ip] > 0) {
415
+ RateLimiter.counterData[key][ip]--;
416
+ }
417
+ console.log('🔄️🔄️🔄️🔄️🔄️🔄️ decremented', key, ip, this.counterData[key][ip]);
418
+ }
419
+ }
420
+ RateLimiter.counterData = {};
421
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../modules/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { AdminForthResource, IAdminForth, AdminUser } from "adminforth";
2
+ import { AdminForthPlugin, AllowedActionsEnum } from "adminforth";
3
+ import { PluginOptions } from "./types.js";
4
+ export default class AuditLogPlugin extends AdminForthPlugin {
5
+ options: PluginOptions;
6
+ adminforth: IAdminForth;
7
+ auditLogResource: string;
8
+ constructor(options: PluginOptions);
9
+ instanceUniqueRepresentation(pluginOptions: any): string;
10
+ static defaultError: string;
11
+ createLogRecord: (resource: AdminForthResource, action: AllowedActionsEnum | string, data: Object, user: AdminUser, oldRecord?: Object) => Promise<{
12
+ ok: boolean;
13
+ }>;
14
+ /**
15
+ * Create a custom action in the audit log resource
16
+ * @param resourceId - The resourceId of the resource that the action is being performed on. Can be null if the action is not related to a specific resource.
17
+ * @param recordId - The recordId of the record that the action is being performed on. Can be null if the action is not related to a specific record.
18
+ * @param actionId - The id of the action being performed, can be random string
19
+ * @param data - The data to be stored in the audit log
20
+ * @param user - The adminUser user performing the action
21
+ */
22
+ logCustomAction: (resourceId: string | null, recordId: string | null, actionId: string, data: Object, user: AdminUser) => Promise<void>;
23
+ modifyResourceConfig(adminforth: IAdminForth, resourceConfig: AdminForthResource): void;
24
+ }
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../plugins/audit-log/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,WAAW,EACX,SAAS,EACV,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAiD,MAAM,YAAY,CAAC;AACjH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI3C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,gBAAgB;IAE1D,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,WAAW,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,aAAa;IAKlC,4BAA4B,CAAC,aAAa,EAAE,GAAG,GAAI,MAAM;IAIzD,MAAM,CAAC,YAAY,SAAoD;IAEvE,eAAe,aAAoB,kBAAkB,UAAU,kBAAkB,GAAG,MAAM,QAAQ,MAAM,QAAQ,SAAS,cAAc,MAAM;;OAiD5I;IAED;;;;;;;OAOG;IACH,eAAe,eAAsB,MAAM,GAAG,IAAI,YAAiB,MAAM,GAAG,IAAI,YAAiB,MAAM,QAAQ,MAAM,QAAQ,SAAS,mBAmBrI;IAGD,oBAAoB,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB;CA2CjF"}
@@ -0,0 +1,129 @@
1
+ import dayjs from 'dayjs';
2
+ import utc from 'dayjs/plugin/utc.js';
3
+ import { AdminForthPlugin, AllowedActionsEnum, AdminForthSortDirections, AdminForthDataTypes } from "adminforth";
4
+ dayjs.extend(utc);
5
+ class AuditLogPlugin extends AdminForthPlugin {
6
+ constructor(options) {
7
+ super(options, import.meta.url);
8
+ this.createLogRecord = async (resource, action, data, user, oldRecord) => {
9
+ var _a;
10
+ const recordIdFieldName = (_a = resource.columns.find((c) => c.primaryKey === true)) === null || _a === void 0 ? void 0 : _a.name;
11
+ const recordId = (data === null || data === void 0 ? void 0 : data[recordIdFieldName]) || (oldRecord === null || oldRecord === void 0 ? void 0 : oldRecord[recordIdFieldName]);
12
+ const connector = this.adminforth.connectors[resource.dataSource];
13
+ const newRecord = action == AllowedActionsEnum.delete ? {} : (await connector.getRecordByPrimaryKey(resource, recordId)) || {};
14
+ if (action !== AllowedActionsEnum.delete) {
15
+ oldRecord = oldRecord ? JSON.parse(JSON.stringify(oldRecord)) : {};
16
+ }
17
+ else {
18
+ oldRecord = data;
19
+ }
20
+ if (action !== AllowedActionsEnum.delete) {
21
+ const columnsNamesList = resource.columns.map((c) => c.name);
22
+ columnsNamesList.forEach((key) => {
23
+ if (JSON.stringify(oldRecord[key]) == JSON.stringify(newRecord[key])) {
24
+ delete oldRecord[key];
25
+ delete newRecord[key];
26
+ }
27
+ });
28
+ }
29
+ const backendOnlyColumns = resource.columns.filter((c) => c.backendOnly);
30
+ backendOnlyColumns.forEach((c) => {
31
+ if (JSON.stringify(oldRecord[c.name]) != JSON.stringify(newRecord[c.name])) {
32
+ if (action !== AllowedActionsEnum.delete) {
33
+ newRecord[c.name] = '<hidden value after>';
34
+ }
35
+ if (action !== AllowedActionsEnum.create) {
36
+ oldRecord[c.name] = '<hidden value before>';
37
+ }
38
+ }
39
+ else {
40
+ delete oldRecord[c.name];
41
+ delete newRecord[c.name];
42
+ }
43
+ });
44
+ const record = {
45
+ [this.options.resourceColumns.resourceIdColumnName]: resource.resourceId,
46
+ [this.options.resourceColumns.resourceActionColumnName]: action,
47
+ [this.options.resourceColumns.resourceDataColumnName]: { 'oldRecord': oldRecord || {}, 'newRecord': newRecord },
48
+ [this.options.resourceColumns.resourceUserIdColumnName]: user.pk,
49
+ [this.options.resourceColumns.resourceRecordIdColumnName]: recordId,
50
+ // utc iso string
51
+ [this.options.resourceColumns.resourceCreatedColumnName]: dayjs.utc().format()
52
+ };
53
+ const auditLogResource = this.adminforth.config.resources.find((r) => r.resourceId === this.auditLogResource);
54
+ await this.adminforth.createResourceRecord({ resource: auditLogResource, record, adminUser: user });
55
+ return { ok: true };
56
+ };
57
+ /**
58
+ * Create a custom action in the audit log resource
59
+ * @param resourceId - The resourceId of the resource that the action is being performed on. Can be null if the action is not related to a specific resource.
60
+ * @param recordId - The recordId of the record that the action is being performed on. Can be null if the action is not related to a specific record.
61
+ * @param actionId - The id of the action being performed, can be random string
62
+ * @param data - The data to be stored in the audit log
63
+ * @param user - The adminUser user performing the action
64
+ */
65
+ this.logCustomAction = async (resourceId = null, recordId = null, actionId, data, user) => {
66
+ if (resourceId) {
67
+ const resource = this.adminforth.config.resources.find((r) => r.resourceId === resourceId);
68
+ if (!resource) {
69
+ const similarResource = this.adminforth.config.resources.find((r) => r.resourceId.includes(resourceId));
70
+ throw new Error(`Resource ${resourceId} not found. Did you mean ${similarResource.resourceId}?`);
71
+ }
72
+ }
73
+ const record = {
74
+ [this.options.resourceColumns.resourceIdColumnName]: resourceId,
75
+ [this.options.resourceColumns.resourceActionColumnName]: actionId,
76
+ [this.options.resourceColumns.resourceDataColumnName]: { 'oldRecord': {}, 'newRecord': data },
77
+ [this.options.resourceColumns.resourceUserIdColumnName]: user.pk,
78
+ [this.options.resourceColumns.resourceRecordIdColumnName]: recordId,
79
+ [this.options.resourceColumns.resourceCreatedColumnName]: dayjs.utc().format()
80
+ };
81
+ const auditLogResource = this.adminforth.config.resources.find((r) => r.resourceId === this.auditLogResource);
82
+ await this.adminforth.createResourceRecord({ resource: auditLogResource, record, adminUser: user });
83
+ };
84
+ this.options = options;
85
+ }
86
+ instanceUniqueRepresentation(pluginOptions) {
87
+ return `single`;
88
+ }
89
+ modifyResourceConfig(adminforth, resourceConfig) {
90
+ super.modifyResourceConfig(adminforth, resourceConfig);
91
+ this.adminforth = adminforth;
92
+ this.auditLogResource = resourceConfig.resourceId;
93
+ this.adminforth.config.resources.forEach((resource) => {
94
+ var _a;
95
+ if ((_a = this.options.excludeResourceIds) === null || _a === void 0 ? void 0 : _a.includes(resource.resourceId)) {
96
+ return;
97
+ }
98
+ if (this.auditLogResource === resource.resourceId) {
99
+ let diffColumn = resource.columns.find((c) => c.name === this.options.resourceColumns.resourceDataColumnName);
100
+ if (!diffColumn) {
101
+ throw new Error(`Column ${this.options.resourceColumns.resourceDataColumnName} not found in ${resource.label}`);
102
+ }
103
+ if (diffColumn.type !== AdminForthDataTypes.JSON) {
104
+ throw new Error(`Column ${this.options.resourceColumns.resourceDataColumnName} must be of type 'json'`);
105
+ }
106
+ diffColumn.showIn = ['show'];
107
+ diffColumn.components = {
108
+ show: {
109
+ file: this.componentPath('AuditLogView.vue'),
110
+ meta: Object.assign(Object.assign({}, this.options), { pluginInstanceId: this.pluginInstanceId })
111
+ }
112
+ };
113
+ resource.options.defaultSort = {
114
+ columnName: this.options.resourceColumns.resourceCreatedColumnName,
115
+ direction: AdminForthSortDirections.desc
116
+ };
117
+ return;
118
+ }
119
+ ['edit', 'create', 'delete'].forEach((hook) => {
120
+ resource.hooks[hook].afterSave.push(async ({ resource, record, adminUser, oldRecord }) => {
121
+ return await this.createLogRecord(resource, hook, record, adminUser, oldRecord);
122
+ });
123
+ });
124
+ });
125
+ }
126
+ }
127
+ AuditLogPlugin.defaultError = 'Sorry, you do not have access to this resource.';
128
+ export default AuditLogPlugin;
129
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../plugins/audit-log/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export type PluginOptions = {
2
+ /**
3
+ * Id of the resource to be ignored from audit log.
4
+ */
5
+ excludeResourceIds?: string[];
6
+ /**
7
+ * Mappping of columns for audit log table.
8
+ */
9
+ resourceColumns: {
10
+ /**
11
+ * Should be name of column were plugin will store resourceId.
12
+ * Column should be of type string.
13
+ */
14
+ resourceIdColumnName: string;
15
+ /**
16
+ * Should be name of column were plugin will store action.
17
+ * Column should be of type string.
18
+ */
19
+ resourceActionColumnName: string;
20
+ /**
21
+ * Should be name of column were plugin will store data.
22
+ * Column should be of type string.
23
+ */
24
+ resourceDataColumnName: string;
25
+ /**
26
+ * Should be name of column were plugin will store user id.
27
+ * Column should be same type as type of column where user id is stored.
28
+ * E.g. is user id is stored as UUID, then this column should be of type UUID.
29
+ */
30
+ resourceUserIdColumnName: string;
31
+ resourceRecordIdColumnName: string;
32
+ resourceCreatedColumnName: string;
33
+ };
34
+ };
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../plugins/audit-log/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IACxB;;MAEE;IACF,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;MAEE;IACF,eAAe,EAAE;QACb;;;UAGE;QACF,oBAAoB,EAAE,MAAM,CAAA;QAE5B;;;UAGE;QACF,wBAAwB,EAAE,MAAM,CAAA;QAEhC;;;UAGE;QACF,sBAAsB,EAAE,MAAM,CAAA;QAE9B;;;;UAIE;QACF,wBAAwB,EAAE,MAAM,CAAA;QAEhC,0BAA0B,EAAE,MAAM,CAAA;QAElC,yBAAyB,EAAE,MAAM,CAAA;KACpC,CAAA;CAEJ,CAAA"}