@forestadmin/datasource-customizer 1.59.0 → 1.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,17 +11,18 @@ const collection_3 = __importDefault(require("./computed/collection"));
11
11
  const decorators_stack_base_1 = __importDefault(require("./decorators-stack-base"));
12
12
  const collection_4 = __importDefault(require("./empty/collection"));
13
13
  const collection_5 = __importDefault(require("./hook/collection"));
14
- const collection_6 = __importDefault(require("./operators-emulate/collection"));
15
- const collection_7 = __importDefault(require("./operators-equivalence/collection"));
16
- const collection_8 = __importDefault(require("./override/collection"));
14
+ const collection_6 = __importDefault(require("./lazy-join/collection"));
15
+ const collection_7 = __importDefault(require("./operators-emulate/collection"));
16
+ const collection_8 = __importDefault(require("./operators-equivalence/collection"));
17
+ const collection_9 = __importDefault(require("./override/collection"));
17
18
  const datasource_2 = __importDefault(require("./publication/datasource"));
18
- const collection_9 = __importDefault(require("./relation/collection"));
19
- const collection_10 = __importDefault(require("./rename-field/collection"));
20
- const collection_11 = __importDefault(require("./schema/collection"));
21
- const collection_12 = __importDefault(require("./search/collection"));
22
- const collection_13 = __importDefault(require("./segment/collection"));
23
- const collection_14 = __importDefault(require("./sort-emulate/collection"));
24
- const collection_15 = __importDefault(require("./validation/collection"));
19
+ const collection_10 = __importDefault(require("./relation/collection"));
20
+ const collection_11 = __importDefault(require("./rename-field/collection"));
21
+ const collection_12 = __importDefault(require("./schema/collection"));
22
+ const collection_13 = __importDefault(require("./search/collection"));
23
+ const collection_14 = __importDefault(require("./segment/collection"));
24
+ const collection_15 = __importDefault(require("./sort-emulate/collection"));
25
+ const collection_16 = __importDefault(require("./validation/collection"));
25
26
  const datasource_3 = __importDefault(require("./write/datasource"));
26
27
  class DecoratorsStack extends decorators_stack_base_1.default {
27
28
  constructor(dataSource, options) {
@@ -29,38 +30,39 @@ class DecoratorsStack extends decorators_stack_base_1.default {
29
30
  let last = dataSource;
30
31
  /* eslint-disable no-multi-assign */
31
32
  // Step 0: Do not query datasource when we know the result with yield an empty set.
32
- last = this.override = new datasource_toolkit_1.DataSourceDecorator(last, collection_8.default);
33
+ last = this.override = new datasource_toolkit_1.DataSourceDecorator(last, collection_9.default);
33
34
  last = new datasource_toolkit_1.DataSourceDecorator(last, collection_4.default);
34
- last = new datasource_toolkit_1.DataSourceDecorator(last, collection_7.default);
35
+ last = new datasource_toolkit_1.DataSourceDecorator(last, collection_8.default);
35
36
  // Step 1: Computed-Relation-Computed sandwich (needed because some emulated relations depend
36
37
  // on computed fields, and some computed fields depend on relation...)
37
38
  // Note that replacement goes before emulation, as replacements may use emulated operators.
38
39
  last = this.earlyComputed = new datasource_toolkit_1.DataSourceDecorator(last, collection_3.default);
39
- last = this.earlyOpEmulate = new datasource_toolkit_1.DataSourceDecorator(last, collection_6.default);
40
- last = new datasource_toolkit_1.DataSourceDecorator(last, collection_7.default);
41
- last = this.relation = new datasource_toolkit_1.DataSourceDecorator(last, collection_9.default);
40
+ last = this.earlyOpEmulate = new datasource_toolkit_1.DataSourceDecorator(last, collection_7.default);
41
+ last = new datasource_toolkit_1.DataSourceDecorator(last, collection_8.default);
42
+ last = this.relation = new datasource_toolkit_1.DataSourceDecorator(last, collection_10.default);
43
+ last = new datasource_toolkit_1.DataSourceDecorator(last, collection_6.default);
42
44
  last = this.lateComputed = new datasource_toolkit_1.DataSourceDecorator(last, collection_3.default);
43
- last = this.lateOpEmulate = new datasource_toolkit_1.DataSourceDecorator(last, collection_6.default);
44
- last = new datasource_toolkit_1.DataSourceDecorator(last, collection_7.default);
45
+ last = this.lateOpEmulate = new datasource_toolkit_1.DataSourceDecorator(last, collection_7.default);
46
+ last = new datasource_toolkit_1.DataSourceDecorator(last, collection_8.default);
45
47
  // Step 2: Those need access to all fields. They can be loaded in any order.
46
- last = this.search = new datasource_toolkit_1.DataSourceDecorator(last, collection_12.default);
47
- last = this.segment = new datasource_toolkit_1.DataSourceDecorator(last, collection_13.default);
48
- last = this.sortEmulate = new datasource_toolkit_1.DataSourceDecorator(last, collection_14.default);
48
+ last = this.search = new datasource_toolkit_1.DataSourceDecorator(last, collection_13.default);
49
+ last = this.segment = new datasource_toolkit_1.DataSourceDecorator(last, collection_14.default);
50
+ last = this.sortEmulate = new datasource_toolkit_1.DataSourceDecorator(last, collection_15.default);
49
51
  // Step 3: Access to all fields AND emulated capabilities
50
52
  last = this.chart = new datasource_1.default(last);
51
53
  last = this.action = new datasource_toolkit_1.DataSourceDecorator(last, collection_1.default);
52
- last = this.schema = new datasource_toolkit_1.DataSourceDecorator(last, collection_11.default);
54
+ last = this.schema = new datasource_toolkit_1.DataSourceDecorator(last, collection_12.default);
53
55
  last = this.write = new datasource_3.default(last);
54
56
  last = this.hook = new datasource_toolkit_1.DataSourceDecorator(last, collection_5.default);
55
- last = this.validation = new datasource_toolkit_1.DataSourceDecorator(last, collection_15.default);
57
+ last = this.validation = new datasource_toolkit_1.DataSourceDecorator(last, collection_16.default);
56
58
  last = this.binary = new datasource_toolkit_1.DataSourceDecorator(last, collection_2.default);
57
59
  // Step 4: Renaming must be either the very first or very last so that naming in customer code
58
60
  // is consistent.
59
61
  last = this.publication = new datasource_2.default(last);
60
- last = this.renameField = new datasource_toolkit_1.DataSourceDecorator(last, collection_10.default);
62
+ last = this.renameField = new datasource_toolkit_1.DataSourceDecorator(last, collection_11.default);
61
63
  /* eslint-enable no-multi-assign */
62
64
  this.finalizeStackSetup(last, options);
63
65
  }
64
66
  }
65
67
  exports.default = DecoratorsStack;
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL2RlY29yYXRvcnMtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFBa0Y7QUFFbEYsc0VBQTZEO0FBQzdELHFFQUE0RDtBQUM1RCxvRUFBMEQ7QUFDMUQsdUVBQWdFO0FBQ2hFLG9GQUF1RTtBQUN2RSxvRUFBMEQ7QUFDMUQsbUVBQXdEO0FBQ3hELGdGQUFpRjtBQUNqRixvRkFBeUY7QUFDekYsdUVBQWdFO0FBQ2hFLDBFQUFzRTtBQUN0RSx1RUFBZ0U7QUFDaEUsNEVBQXVFO0FBQ3ZFLHNFQUE0RDtBQUM1RCxzRUFBNEQ7QUFDNUQsdUVBQThEO0FBQzlELDRFQUF1RTtBQUN2RSwwRUFBb0U7QUFDcEUsb0VBQTBEO0FBRTFELE1BQXFCLGVBQWdCLFNBQVEsK0JBQW1CO0lBQzlELFlBQVksVUFBc0IsRUFBRSxPQUFpQjtRQUNuRCxLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksSUFBSSxHQUFlLFVBQVUsQ0FBQztRQUVsQyxvQ0FBb0M7UUFDcEMsbUZBQW1GO1FBQ25GLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUEyQixDQUFDLENBQUM7UUFDbEYsSUFBSSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUF3QixDQUFDLENBQUM7UUFDL0QsSUFBSSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUF1QyxDQUFDLENBQUM7UUFFOUUsNkZBQTZGO1FBQzdGLHNFQUFzRTtRQUN0RSwyRkFBMkY7UUFDM0YsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsb0JBQTJCLENBQUMsQ0FBQztRQUN2RixJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxvQkFBbUMsQ0FBQyxDQUFDO1FBQ2hHLElBQUksR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxvQkFBdUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUEyQixDQUFDLENBQUM7UUFDbEYsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsb0JBQTJCLENBQUMsQ0FBQztRQUN0RixJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxvQkFBbUMsQ0FBQyxDQUFDO1FBQy9GLElBQUksR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxvQkFBdUMsQ0FBQyxDQUFDO1FBRTlFLDRFQUE0RTtRQUM1RSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxxQkFBeUIsQ0FBQyxDQUFDO1FBQzlFLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLHFCQUEwQixDQUFDLENBQUM7UUFDaEYsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUscUJBQThCLENBQUMsQ0FBQztRQUV4Rix5REFBeUQ7UUFDekQsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxvQkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxvQkFBeUIsQ0FBQyxDQUFDO1FBQzlFLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLHFCQUF5QixDQUFDLENBQUM7UUFDOUUsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxvQkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxvQkFBdUIsQ0FBQyxDQUFDO1FBQzFFLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLHFCQUE2QixDQUFDLENBQUM7UUFDdEYsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsb0JBQXlCLENBQUMsQ0FBQztRQUU5RSw4RkFBOEY7UUFDOUYsaUJBQWlCO1FBQ2pCLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksb0JBQThCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkUsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUscUJBQThCLENBQUMsQ0FBQztRQUN4RixtQ0FBbUM7UUFFbkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0Y7QUE3Q0Qsa0NBNkNDIn0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL2RlY29yYXRvcnMtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFBa0Y7QUFFbEYsc0VBQTZEO0FBQzdELHFFQUE0RDtBQUM1RCxvRUFBMEQ7QUFDMUQsdUVBQWdFO0FBQ2hFLG9GQUF1RTtBQUN2RSxvRUFBMEQ7QUFDMUQsbUVBQXdEO0FBQ3hELHdFQUF1RDtBQUN2RCxnRkFBaUY7QUFDakYsb0ZBQXlGO0FBQ3pGLHVFQUFnRTtBQUNoRSwwRUFBc0U7QUFDdEUsd0VBQWdFO0FBQ2hFLDRFQUF1RTtBQUN2RSxzRUFBNEQ7QUFDNUQsc0VBQTREO0FBQzVELHVFQUE4RDtBQUM5RCw0RUFBdUU7QUFDdkUsMEVBQW9FO0FBQ3BFLG9FQUEwRDtBQUUxRCxNQUFxQixlQUFnQixTQUFRLCtCQUFtQjtJQUM5RCxZQUFZLFVBQXNCLEVBQUUsT0FBaUI7UUFDbkQsS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLElBQUksR0FBZSxVQUFVLENBQUM7UUFFbEMsb0NBQW9DO1FBQ3BDLG1GQUFtRjtRQUNuRixJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxvQkFBMkIsQ0FBQyxDQUFDO1FBQ2xGLElBQUksR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxvQkFBd0IsQ0FBQyxDQUFDO1FBQy9ELElBQUksR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxvQkFBdUMsQ0FBQyxDQUFDO1FBRTlFLDZGQUE2RjtRQUM3RixzRUFBc0U7UUFDdEUsMkZBQTJGO1FBQzNGLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUEyQixDQUFDLENBQUM7UUFDdkYsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEdB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
@@ -0,0 +1,10 @@
1
+ import { AggregateResult, Aggregation, Caller, CollectionDecorator, Filter, PaginatedFilter, Projection, RecordData } from '@forestadmin/datasource-toolkit';
2
+ export default class LazyJoinDecorator extends CollectionDecorator {
3
+ list(caller: Caller, filter: PaginatedFilter, projection: Projection): Promise<RecordData[]>;
4
+ aggregate(caller: Caller, filter: Filter, aggregation: Aggregation, limit?: number): Promise<AggregateResult[]>;
5
+ private isLazyRelationProjection;
6
+ private refineField;
7
+ refineFilter(caller: Caller, filter: PaginatedFilter): Promise<PaginatedFilter>;
8
+ private refineResults;
9
+ }
10
+ //# sourceMappingURL=collection.d.ts.map
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
4
+ class LazyJoinDecorator extends datasource_toolkit_1.CollectionDecorator {
5
+ async list(caller, filter, projection) {
6
+ const refinedProjection = projection.replace(field => this.refineField(field, projection));
7
+ const refinedFilter = await this.refineFilter(caller, filter);
8
+ const records = await this.childCollection.list(caller, refinedFilter, refinedProjection);
9
+ this.refineResults(projection, (relationName, foreignKey, foreignKeyTarget) => {
10
+ records.forEach(record => {
11
+ if (record[foreignKey]) {
12
+ record[relationName] = { [foreignKeyTarget]: record[foreignKey] };
13
+ }
14
+ delete record[foreignKey];
15
+ });
16
+ });
17
+ return records;
18
+ }
19
+ async aggregate(caller, filter, aggregation, limit) {
20
+ const refinedAggregation = aggregation.replaceFields(field => this.refineField(field, aggregation.projection));
21
+ const refinedFilter = await this.refineFilter(caller, filter);
22
+ const results = await this.childCollection.aggregate(caller, refinedFilter, refinedAggregation, limit);
23
+ this.refineResults(aggregation.projection, (relationName, foreignKey, foreignKeyTarget) => {
24
+ results.forEach(result => {
25
+ if (result.group[foreignKey]) {
26
+ result.group[`${relationName}:${foreignKeyTarget}`] = result.group[foreignKey];
27
+ }
28
+ delete result.group[foreignKey];
29
+ });
30
+ });
31
+ return results;
32
+ }
33
+ isLazyRelationProjection(relation, relationProjection) {
34
+ return (relation.type === 'ManyToOne' &&
35
+ relationProjection.length === 1 &&
36
+ relationProjection[0] === relation.foreignKeyTarget);
37
+ }
38
+ refineField(field, projection) {
39
+ const relationName = field.split(':')[0];
40
+ const relation = this.schema.fields[relationName];
41
+ const relationProjection = projection.relations[relationName];
42
+ return this.isLazyRelationProjection(relation, relationProjection)
43
+ ? relation.foreignKey
44
+ : field;
45
+ }
46
+ async refineFilter(caller, filter) {
47
+ if (filter.conditionTree) {
48
+ filter.conditionTree = filter.conditionTree.replaceFields(field => this.refineField(field, filter.conditionTree.projection));
49
+ }
50
+ return filter;
51
+ }
52
+ refineResults(projection, handler) {
53
+ Object.entries(projection.relations).forEach(([relationName, relationProjection]) => {
54
+ const relation = this.schema.fields[relationName];
55
+ if (this.isLazyRelationProjection(relation, relationProjection)) {
56
+ const { foreignKeyTarget, foreignKey } = relation;
57
+ handler(relationName, foreignKey, foreignKeyTarget);
58
+ }
59
+ });
60
+ }
61
+ }
62
+ exports.default = LazyJoinDecorator;
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNvcmF0b3JzL2xhenktam9pbi9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0VBV3lDO0FBRXpDLE1BQXFCLGlCQUFrQixTQUFRLHdDQUFtQjtJQUN2RCxLQUFLLENBQUMsSUFBSSxDQUNqQixNQUFjLEVBQ2QsTUFBdUIsRUFDdkIsVUFBc0I7UUFFdEIsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUMzRixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTlELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRTFGLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFO1lBQzVFLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3ZCLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFO29CQUN0QixNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7aUJBQ25FO2dCQUVELE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRVEsS0FBSyxDQUFDLFNBQVMsQ0FDdEIs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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/datasource-customizer",
3
- "version": "1.59.0",
3
+ "version": "1.61.0",
4
4
  "main": "dist/index.js",
5
5
  "license": "GPL-3.0",
6
6
  "publishConfig": {
@@ -26,14 +26,14 @@
26
26
  "devDependencies": {
27
27
  "@types/luxon": "^3.2.0",
28
28
  "@types/object-hash": "^3.0.2",
29
- "@types/uuid": "^9.0.0"
29
+ "@types/uuid": "^10.0.0"
30
30
  },
31
31
  "dependencies": {
32
- "@forestadmin/datasource-toolkit": "1.46.0",
32
+ "@forestadmin/datasource-toolkit": "1.47.0",
33
33
  "antlr4": "^4.13.1-patch-1",
34
34
  "file-type": "^16.5.4",
35
35
  "luxon": "^3.2.1",
36
36
  "object-hash": "^3.0.0",
37
- "uuid": "^9.0.0"
37
+ "uuid": "11.0.2"
38
38
  }
39
39
  }