adminforth 2.27.0-next.7 → 2.27.0-next.71

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 (110) hide show
  1. package/commands/callTsProxy.js +10 -5
  2. package/commands/createApp/templates/api.ts.hbs +28 -9
  3. package/commands/createApp/templates/package.json.hbs +2 -1
  4. package/commands/proxy.ts +18 -10
  5. package/dist/basePlugin.js +1 -1
  6. package/dist/basePlugin.js.map +1 -1
  7. package/dist/commands/proxy.js +14 -10
  8. package/dist/commands/proxy.js.map +1 -1
  9. package/dist/dataConnectors/baseConnector.d.ts +10 -4
  10. package/dist/dataConnectors/baseConnector.d.ts.map +1 -1
  11. package/dist/dataConnectors/baseConnector.js +76 -54
  12. package/dist/dataConnectors/baseConnector.js.map +1 -1
  13. package/dist/dataConnectors/clickhouse.d.ts +5 -2
  14. package/dist/dataConnectors/clickhouse.d.ts.map +1 -1
  15. package/dist/dataConnectors/clickhouse.js +76 -10
  16. package/dist/dataConnectors/clickhouse.js.map +1 -1
  17. package/dist/dataConnectors/mongo.d.ts.map +1 -1
  18. package/dist/dataConnectors/mongo.js +3 -1
  19. package/dist/dataConnectors/mongo.js.map +1 -1
  20. package/dist/dataConnectors/mysql.d.ts.map +1 -1
  21. package/dist/dataConnectors/mysql.js +3 -1
  22. package/dist/dataConnectors/mysql.js.map +1 -1
  23. package/dist/dataConnectors/postgres.d.ts.map +1 -1
  24. package/dist/dataConnectors/postgres.js +3 -1
  25. package/dist/dataConnectors/postgres.js.map +1 -1
  26. package/dist/dataConnectors/sqlite.d.ts.map +1 -1
  27. package/dist/dataConnectors/sqlite.js +4 -2
  28. package/dist/dataConnectors/sqlite.js.map +1 -1
  29. package/dist/index.d.ts +4 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +17 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/modules/configValidator.d.ts.map +1 -1
  34. package/dist/modules/configValidator.js +16 -9
  35. package/dist/modules/configValidator.js.map +1 -1
  36. package/dist/modules/restApi.d.ts.map +1 -1
  37. package/dist/modules/restApi.js +598 -15
  38. package/dist/modules/restApi.js.map +1 -1
  39. package/dist/modules/styles.js +1 -1
  40. package/dist/modules/utils.d.ts +1 -1
  41. package/dist/modules/utils.d.ts.map +1 -1
  42. package/dist/modules/utils.js +3 -5
  43. package/dist/modules/utils.js.map +1 -1
  44. package/dist/servers/express.d.ts +18 -7
  45. package/dist/servers/express.d.ts.map +1 -1
  46. package/dist/servers/express.js +141 -1
  47. package/dist/servers/express.js.map +1 -1
  48. package/dist/servers/openapi.d.ts +25 -0
  49. package/dist/servers/openapi.d.ts.map +1 -0
  50. package/dist/servers/openapi.js +92 -0
  51. package/dist/servers/openapi.js.map +1 -0
  52. package/dist/servers/openapiDocument.d.ts +12 -0
  53. package/dist/servers/openapiDocument.d.ts.map +1 -0
  54. package/dist/servers/openapiDocument.js +313 -0
  55. package/dist/servers/openapiDocument.js.map +1 -0
  56. package/dist/spa/package-lock.json +41 -0
  57. package/dist/spa/package.json +4 -0
  58. package/dist/spa/pnpm-lock.yaml +384 -310
  59. package/dist/spa/pnpm-workspace.yaml +4 -0
  60. package/dist/spa/src/App.vue +78 -76
  61. package/dist/spa/src/afcl/Button.vue +2 -3
  62. package/dist/spa/src/afcl/Dialog.vue +1 -1
  63. package/dist/spa/src/afcl/Input.vue +1 -1
  64. package/dist/spa/src/afcl/Select.vue +8 -2
  65. package/dist/spa/src/afcl/Skeleton.vue +5 -0
  66. package/dist/spa/src/afcl/Spinner.vue +1 -1
  67. package/dist/spa/src/components/CallActionWrapper.vue +1 -1
  68. package/dist/spa/src/components/ColumnValueInput.vue +16 -3
  69. package/dist/spa/src/components/ColumnValueInputWrapper.vue +25 -2
  70. package/dist/spa/src/components/CustomRangePicker.vue +10 -14
  71. package/dist/spa/src/components/Filters.vue +95 -63
  72. package/dist/spa/src/components/GroupsTable.vue +9 -6
  73. package/dist/spa/src/components/MenuLink.vue +2 -2
  74. package/dist/spa/src/components/ResourceForm.vue +103 -9
  75. package/dist/spa/src/components/ResourceListTable.vue +16 -10
  76. package/dist/spa/src/components/ShowTable.vue +3 -3
  77. package/dist/spa/src/components/Sidebar.vue +29 -8
  78. package/dist/spa/src/components/ThreeDotsMenu.vue +25 -9
  79. package/dist/spa/src/components/ValueRenderer.vue +1 -0
  80. package/dist/spa/src/controls/BoolToggle.vue +2 -2
  81. package/dist/spa/src/renderers/RichText.vue +2 -2
  82. package/dist/spa/src/renderers/ZeroStylesRichText.vue +2 -2
  83. package/dist/spa/src/spa_types/core.ts +32 -0
  84. package/dist/spa/src/stores/core.ts +16 -2
  85. package/dist/spa/src/stores/filters.ts +16 -12
  86. package/dist/spa/src/types/Back.ts +137 -26
  87. package/dist/spa/src/types/Common.ts +25 -6
  88. package/dist/spa/src/types/adapters/CompletionAdapter.ts +27 -5
  89. package/dist/spa/src/types/adapters/index.ts +2 -2
  90. package/dist/spa/src/utils/createEditUtils.ts +65 -0
  91. package/dist/spa/src/utils/index.ts +2 -1
  92. package/dist/spa/src/utils/listUtils.ts +3 -3
  93. package/dist/spa/src/utils/utils.ts +42 -7
  94. package/dist/spa/src/utils.ts +2 -1
  95. package/dist/spa/src/views/CreateEditSkeleton.vue +74 -0
  96. package/dist/spa/src/views/CreateView.vue +24 -50
  97. package/dist/spa/src/views/EditView.vue +23 -40
  98. package/dist/spa/src/views/ListView.vue +22 -32
  99. package/dist/spa/src/views/ShowView.vue +66 -24
  100. package/dist/types/Back.d.ts +140 -32
  101. package/dist/types/Back.d.ts.map +1 -1
  102. package/dist/types/Back.js.map +1 -1
  103. package/dist/types/Common.d.ts +32 -6
  104. package/dist/types/Common.d.ts.map +1 -1
  105. package/dist/types/Common.js.map +1 -1
  106. package/dist/types/adapters/CompletionAdapter.d.ts +18 -3
  107. package/dist/types/adapters/CompletionAdapter.d.ts.map +1 -1
  108. package/dist/types/adapters/index.d.ts +1 -1
  109. package/dist/types/adapters/index.d.ts.map +1 -1
  110. package/package.json +11 -6
@@ -0,0 +1,313 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ const COMPONENT_REF_PREFIX = '#/components/schemas/';
13
+ const JSON_SCHEMA_DIALECT = 'https://json-schema.org/draft/2020-12/schema';
14
+ const CONDITIONAL_NOTE = 'Runtime applies additional conditional validation rules that are documented in descriptions instead of nested schema conditionals.';
15
+ const SINGLE_OR_ARRAY_NOTE = 'Runtime also accepts a single object here, but the documented shape uses the array form because it is more stable for API reference UIs and generated clients.';
16
+ function isSchemaObject(value) {
17
+ return !!value && typeof value === 'object' && !Array.isArray(value);
18
+ }
19
+ function toPascalCase(value) {
20
+ return value
21
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
22
+ .split(/[^a-zA-Z0-9]+/)
23
+ .filter(Boolean)
24
+ .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))
25
+ .join('');
26
+ }
27
+ function sanitizeComponentName(value) {
28
+ const normalized = toPascalCase(value);
29
+ if (!normalized) {
30
+ return 'SchemaComponent';
31
+ }
32
+ return /^[A-Za-z_]/.test(normalized) ? normalized : `Schema${normalized}`;
33
+ }
34
+ function createRouteComponentName(route, kind) {
35
+ return sanitizeComponentName(`${route.method} ${route.path} ${kind}`);
36
+ }
37
+ function appendDescription(existing, note) {
38
+ return existing ? `${existing}\n\n${note}` : note;
39
+ }
40
+ function extractLocalRefKey(ref) {
41
+ if (!ref.startsWith('#/$defs/')) {
42
+ return undefined;
43
+ }
44
+ return ref.slice('#/$defs/'.length);
45
+ }
46
+ function hasCompositeKeywords(schema) {
47
+ return Array.isArray(schema.anyOf)
48
+ || Array.isArray(schema.oneOf)
49
+ || Array.isArray(schema.allOf)
50
+ || Array.isArray(schema.prefixItems)
51
+ || '$defs' in schema
52
+ || 'if' in schema
53
+ || 'then' in schema
54
+ || 'else' in schema;
55
+ }
56
+ function shouldHoistSchema(schema) {
57
+ if (typeof schema.$ref === 'string' && Object.keys(schema).length === 1) {
58
+ return false;
59
+ }
60
+ if (typeof schema.title === 'string' && schema.title.trim().length > 0) {
61
+ return true;
62
+ }
63
+ if (hasCompositeKeywords(schema)) {
64
+ return true;
65
+ }
66
+ return schema.type === 'object'
67
+ && isSchemaObject(schema.properties)
68
+ && Object.keys(schema.properties).length > 1;
69
+ }
70
+ function createSchemaSignature(schema) {
71
+ return Object.fromEntries(Object.entries(schema)
72
+ .filter(([key]) => key !== 'description' && key !== 'examples' && key !== 'title')
73
+ .map(([key, value]) => {
74
+ if (isSchemaObject(value)) {
75
+ return [key, createSchemaSignature(value)];
76
+ }
77
+ if (Array.isArray(value)) {
78
+ return [
79
+ key,
80
+ value.map((item) => isSchemaObject(item) ? createSchemaSignature(item) : item),
81
+ ];
82
+ }
83
+ return [key, value];
84
+ }));
85
+ }
86
+ function schemasMatch(left, right) {
87
+ if (typeof left.$ref === 'string' || typeof right.$ref === 'string') {
88
+ return left.$ref === right.$ref;
89
+ }
90
+ return JSON.stringify(createSchemaSignature(left)) === JSON.stringify(createSchemaSignature(right));
91
+ }
92
+ function simplifyRequestSchema(schema) {
93
+ const simplifiedSchema = Object.assign({}, schema);
94
+ const notes = [];
95
+ const variants = Array.isArray(simplifiedSchema.oneOf)
96
+ ? simplifiedSchema.oneOf
97
+ : Array.isArray(simplifiedSchema.anyOf)
98
+ ? simplifiedSchema.anyOf
99
+ : null;
100
+ if (variants && variants.length === 2) {
101
+ const arrayVariant = variants.find((option) => isSchemaObject(option) && option.type === 'array' && isSchemaObject(option.items));
102
+ const singleVariant = variants.find((option) => option !== arrayVariant);
103
+ if (arrayVariant
104
+ && singleVariant
105
+ && isSchemaObject(singleVariant)
106
+ && isSchemaObject(arrayVariant.items)
107
+ && schemasMatch(arrayVariant.items, singleVariant)) {
108
+ const { anyOf, oneOf } = simplifiedSchema, rest = __rest(simplifiedSchema, ["anyOf", "oneOf"]);
109
+ Object.assign(simplifiedSchema, rest, {
110
+ type: 'array',
111
+ items: arrayVariant.items,
112
+ });
113
+ delete simplifiedSchema.anyOf;
114
+ delete simplifiedSchema.oneOf;
115
+ notes.push(SINGLE_OR_ARRAY_NOTE);
116
+ }
117
+ }
118
+ if ('if' in simplifiedSchema || 'then' in simplifiedSchema || 'else' in simplifiedSchema) {
119
+ delete simplifiedSchema.if;
120
+ delete simplifiedSchema.then;
121
+ delete simplifiedSchema.else;
122
+ notes.push(CONDITIONAL_NOTE);
123
+ }
124
+ if (Array.isArray(simplifiedSchema.allOf)) {
125
+ const remainingSchemas = simplifiedSchema.allOf.filter((option) => {
126
+ return !(isSchemaObject(option) && ('if' in option || 'then' in option || 'else' in option));
127
+ });
128
+ if (remainingSchemas.length !== simplifiedSchema.allOf.length) {
129
+ if (remainingSchemas.length > 0) {
130
+ simplifiedSchema.allOf = remainingSchemas;
131
+ }
132
+ else {
133
+ delete simplifiedSchema.allOf;
134
+ }
135
+ notes.push(CONDITIONAL_NOTE);
136
+ }
137
+ }
138
+ return { schema: simplifiedSchema, notes };
139
+ }
140
+ function createChildOptions(options, suffix) {
141
+ return Object.assign(Object.assign({}, options), { componentName: `${options.componentName}${toPascalCase(suffix)}` });
142
+ }
143
+ function resolveComponentName(state, schema, preferredName) {
144
+ const existingName = state.componentNames.get(schema);
145
+ if (existingName) {
146
+ return existingName;
147
+ }
148
+ const titledName = typeof schema.title === 'string' && schema.title.trim().length > 0
149
+ ? schema.title
150
+ : preferredName;
151
+ const baseName = sanitizeComponentName(titledName);
152
+ let candidate = baseName;
153
+ let suffix = 2;
154
+ while (state.usedNames.has(candidate)) {
155
+ candidate = `${baseName}${suffix}`;
156
+ suffix += 1;
157
+ }
158
+ state.usedNames.add(candidate);
159
+ state.componentNames.set(schema, candidate);
160
+ return candidate;
161
+ }
162
+ function registerComponent(state, schema, options) {
163
+ const componentName = resolveComponentName(state, schema, options.componentName);
164
+ if (!state.components[componentName]) {
165
+ state.components[componentName] = {};
166
+ state.components[componentName] = normalizeSchema(state, schema, Object.assign(Object.assign({}, options), { componentName }));
167
+ }
168
+ return { $ref: `${COMPONENT_REF_PREFIX}${componentName}` };
169
+ }
170
+ function hoistLocalDefinitions(state, schema, options) {
171
+ const localDefs = new Map(options.localDefs);
172
+ const definitions = isSchemaObject(schema.$defs) ? schema.$defs : undefined;
173
+ if (!definitions) {
174
+ return localDefs;
175
+ }
176
+ const entries = Object.entries(definitions).filter(([, definitionSchema]) => isSchemaObject(definitionSchema));
177
+ entries.forEach(([definitionKey, definitionSchema]) => {
178
+ const preferredName = typeof definitionSchema.title === 'string' && definitionSchema.title.trim().length > 0
179
+ ? definitionSchema.title
180
+ : `${options.componentName}${toPascalCase(definitionKey)}`;
181
+ const componentName = resolveComponentName(state, definitionSchema, preferredName);
182
+ localDefs.set(definitionKey, componentName);
183
+ });
184
+ entries.forEach(([, definitionSchema]) => {
185
+ const componentName = state.componentNames.get(definitionSchema);
186
+ if (!componentName || state.components[componentName]) {
187
+ return;
188
+ }
189
+ state.components[componentName] = {};
190
+ state.components[componentName] = normalizeSchema(state, definitionSchema, Object.assign(Object.assign({}, options), { componentName,
191
+ localDefs }));
192
+ });
193
+ return localDefs;
194
+ }
195
+ function normalizeNestedSchema(state, schema, options) {
196
+ if (typeof schema.$ref === 'string' && Object.keys(schema).length === 1) {
197
+ return normalizeSchema(state, schema, options);
198
+ }
199
+ if (shouldHoistSchema(schema)) {
200
+ return registerComponent(state, schema, options);
201
+ }
202
+ return normalizeSchema(state, schema, options);
203
+ }
204
+ function normalizeSchema(state, schema, options) {
205
+ const localDefs = hoistLocalDefinitions(state, schema, options);
206
+ const { schema: simplifiedSchema, notes } = options.requestMode
207
+ ? simplifyRequestSchema(schema)
208
+ : { schema, notes: [] };
209
+ const normalized = {};
210
+ Object.entries(simplifiedSchema).forEach(([key, value]) => {
211
+ if (key === '$defs' || key === '$schema' || key === '$id') {
212
+ return;
213
+ }
214
+ if (key === '$ref' && typeof value === 'string') {
215
+ const localRefKey = extractLocalRefKey(value);
216
+ normalized.$ref = localRefKey && localDefs.has(localRefKey)
217
+ ? `${COMPONENT_REF_PREFIX}${localDefs.get(localRefKey)}`
218
+ : value;
219
+ return;
220
+ }
221
+ if ((key === 'properties' || key === 'patternProperties' || key === 'dependentSchemas') && isSchemaObject(value)) {
222
+ normalized[key] = Object.fromEntries(Object.entries(value).map(([propertyName, propertySchema]) => {
223
+ if (!isSchemaObject(propertySchema)) {
224
+ return [propertyName, propertySchema];
225
+ }
226
+ return [
227
+ propertyName,
228
+ normalizeNestedSchema(state, propertySchema, Object.assign(Object.assign({}, createChildOptions(options, propertyName)), { localDefs })),
229
+ ];
230
+ }));
231
+ return;
232
+ }
233
+ if ((key === 'items' || key === 'contains' || key === 'additionalProperties' || key === 'propertyNames' || key === 'not' || key === 'unevaluatedProperties' || key === 'unevaluatedItems' || key === 'contentSchema') && isSchemaObject(value)) {
234
+ normalized[key] = normalizeNestedSchema(state, value, Object.assign(Object.assign({}, createChildOptions(options, key === 'additionalProperties' ? 'value' : key === 'propertyNames' ? 'propertyName' : key)), { localDefs }));
235
+ return;
236
+ }
237
+ if ((key === 'anyOf' || key === 'oneOf' || key === 'allOf' || key === 'prefixItems') && Array.isArray(value)) {
238
+ normalized[key] = value.map((option, index) => {
239
+ if (!isSchemaObject(option)) {
240
+ return option;
241
+ }
242
+ return normalizeNestedSchema(state, option, Object.assign(Object.assign({}, createChildOptions(options, `${key}Option${index + 1}`)), { localDefs }));
243
+ });
244
+ return;
245
+ }
246
+ normalized[key] = value;
247
+ });
248
+ if (notes.length > 0) {
249
+ normalized.description = appendDescription(typeof normalized.description === 'string' ? normalized.description : undefined, notes.join(' '));
250
+ }
251
+ return normalized;
252
+ }
253
+ export function buildOpenApiDocument(options) {
254
+ const state = {
255
+ components: {},
256
+ componentNames: new WeakMap(),
257
+ usedNames: new Set(),
258
+ };
259
+ const paths = {};
260
+ options.routes.forEach((route) => {
261
+ if (!route.request_schema && !route.response_schema) {
262
+ return;
263
+ }
264
+ if (!paths[route.path]) {
265
+ paths[route.path] = {};
266
+ }
267
+ paths[route.path][route.method] = Object.assign(Object.assign(Object.assign({}, (route.description ? {
268
+ description: route.description,
269
+ } : {})), (route.request_schema ? {
270
+ requestBody: {
271
+ required: true,
272
+ content: {
273
+ 'application/json': {
274
+ schema: registerComponent(state, route.request_schema, {
275
+ componentName: createRouteComponentName(route, 'request'),
276
+ requestMode: true,
277
+ localDefs: new Map(),
278
+ }),
279
+ },
280
+ },
281
+ },
282
+ } : {})), { responses: {
283
+ 200: route.response_schema ? {
284
+ description: 'Successful response',
285
+ content: {
286
+ 'application/json': {
287
+ schema: registerComponent(state, route.response_schema, {
288
+ componentName: createRouteComponentName(route, 'response'),
289
+ requestMode: false,
290
+ localDefs: new Map(),
291
+ }),
292
+ },
293
+ },
294
+ } : {
295
+ description: 'Successful response',
296
+ },
297
+ } });
298
+ });
299
+ return {
300
+ openapi: '3.1.0',
301
+ jsonSchemaDialect: JSON_SCHEMA_DIALECT,
302
+ info: {
303
+ title: options.title,
304
+ version: options.version,
305
+ description: options.description,
306
+ },
307
+ paths,
308
+ components: {
309
+ schemas: state.components,
310
+ },
311
+ };
312
+ }
313
+ //# sourceMappingURL=openapiDocument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapiDocument.js","sourceRoot":"","sources":["../../servers/openapiDocument.ts"],"names":[],"mappings":"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"}
@@ -15,10 +15,12 @@
15
15
  "@unhead/vue": "^1.9.12",
16
16
  "@vueuse/core": "^10.10.0",
17
17
  "apexcharts": "^4.7.0",
18
+ "async-mutex": "^0.5.0",
18
19
  "dayjs": "^1.11.11",
19
20
  "debounce": "^2.1.0",
20
21
  "flowbite-datepicker": "^1.2.6",
21
22
  "javascript-time-ago": "^2.5.11",
23
+ "lodash.debounce": "^4.0.8",
22
24
  "pinia": "^2.1.7",
23
25
  "sanitize-html": "^2.13.0",
24
26
  "unhead": "^1.9.12",
@@ -32,6 +34,7 @@
32
34
  "@rushstack/eslint-patch": "^1.8.0",
33
35
  "@tailwindcss/typography": "^0.5.19",
34
36
  "@tsconfig/node20": "^20.1.4",
37
+ "@types/lodash.debounce": "^4.0.9",
35
38
  "@types/node": "^20.12.5",
36
39
  "@types/sanitize-html": "^2.16.1",
37
40
  "@vitejs/plugin-vue": "^5.0.4",
@@ -1626,6 +1629,23 @@
1626
1629
  "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
1627
1630
  "license": "MIT"
1628
1631
  },
1632
+ "node_modules/@types/lodash": {
1633
+ "version": "4.17.24",
1634
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz",
1635
+ "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==",
1636
+ "dev": true,
1637
+ "license": "MIT"
1638
+ },
1639
+ "node_modules/@types/lodash.debounce": {
1640
+ "version": "4.0.9",
1641
+ "resolved": "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.9.tgz",
1642
+ "integrity": "sha512-Ma5JcgTREwpLRwMM+XwBR7DaWe96nC38uCBDFKZWbNKD+osjVzdpnUSwBcqCptrp16sSOLBAUb50Car5I0TCsQ==",
1643
+ "dev": true,
1644
+ "license": "MIT",
1645
+ "dependencies": {
1646
+ "@types/lodash": "*"
1647
+ }
1648
+ },
1629
1649
  "node_modules/@types/node": {
1630
1650
  "version": "20.19.37",
1631
1651
  "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz",
@@ -2371,6 +2391,15 @@
2371
2391
  "dev": true,
2372
2392
  "license": "MIT"
2373
2393
  },
2394
+ "node_modules/async-mutex": {
2395
+ "version": "0.5.0",
2396
+ "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz",
2397
+ "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==",
2398
+ "license": "MIT",
2399
+ "dependencies": {
2400
+ "tslib": "^2.4.0"
2401
+ }
2402
+ },
2374
2403
  "node_modules/autoprefixer": {
2375
2404
  "version": "10.4.27",
2376
2405
  "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz",
@@ -3894,6 +3923,12 @@
3894
3923
  "dev": true,
3895
3924
  "license": "MIT"
3896
3925
  },
3926
+ "node_modules/lodash.debounce": {
3927
+ "version": "4.0.8",
3928
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
3929
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
3930
+ "license": "MIT"
3931
+ },
3897
3932
  "node_modules/lodash.merge": {
3898
3933
  "version": "4.6.2",
3899
3934
  "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -5157,6 +5192,12 @@
5157
5192
  "dev": true,
5158
5193
  "license": "Apache-2.0"
5159
5194
  },
5195
+ "node_modules/tslib": {
5196
+ "version": "2.8.1",
5197
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
5198
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
5199
+ "license": "0BSD"
5200
+ },
5160
5201
  "node_modules/type-check": {
5161
5202
  "version": "0.4.0",
5162
5203
  "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -20,10 +20,12 @@
20
20
  "@unhead/vue": "^1.9.12",
21
21
  "@vueuse/core": "^10.10.0",
22
22
  "apexcharts": "^4.7.0",
23
+ "async-mutex": "^0.5.0",
23
24
  "dayjs": "^1.11.11",
24
25
  "debounce": "^2.1.0",
25
26
  "flowbite-datepicker": "^1.2.6",
26
27
  "javascript-time-ago": "^2.5.11",
28
+ "lodash.debounce": "^4.0.8",
27
29
  "pinia": "^2.1.7",
28
30
  "sanitize-html": "^2.13.0",
29
31
  "unhead": "^1.9.12",
@@ -34,9 +36,11 @@
34
36
  "vue3-json-viewer": "^2.2.2"
35
37
  },
36
38
  "devDependencies": {
39
+ "ajv": "^8.18.0",
37
40
  "@rushstack/eslint-patch": "^1.8.0",
38
41
  "@tailwindcss/typography": "^0.5.19",
39
42
  "@tsconfig/node20": "^20.1.4",
43
+ "@types/lodash.debounce": "^4.0.9",
40
44
  "@types/node": "^20.12.5",
41
45
  "@types/sanitize-html": "^2.16.1",
42
46
  "@vitejs/plugin-vue": "^5.0.4",