@forestadmin/agent 1.0.0-beta.14 → 1.0.0-beta.17

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,36 @@
1
+ # @forestadmin/agent [1.0.0-beta.17](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.16...@forestadmin/agent@1.0.0-beta.17) (2022-04-29)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * do not perform queries which are known to yield zero records ([#279](https://github.com/ForestAdmin/agent-nodejs/issues/279)) ([30b4dd7](https://github.com/ForestAdmin/agent-nodejs/commit/30b4dd7d7fcf43568800ff9c23a62c3fafc53d4b))
7
+ * having nulls in the throughTable of a many to many crashes the frontend ([#277](https://github.com/ForestAdmin/agent-nodejs/issues/277)) ([8d9d388](https://github.com/ForestAdmin/agent-nodejs/commit/8d9d388a7ce510be83c9aed76125b49be4b94c69))
8
+
9
+
10
+
11
+
12
+
13
+ ### Dependencies
14
+
15
+ * **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.10
16
+
17
+ # @forestadmin/agent [1.0.0-beta.16](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.15...@forestadmin/agent@1.0.0-beta.16) (2022-04-29)
18
+
19
+
20
+
21
+
22
+
23
+ ### Dependencies
24
+
25
+ * **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.9
26
+
27
+ # @forestadmin/agent [1.0.0-beta.15](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.14...@forestadmin/agent@1.0.0-beta.15) (2022-04-28)
28
+
29
+
30
+ ### Bug Fixes
31
+
32
+ * can't set a relation to null in the detail-view form ([#275](https://github.com/ForestAdmin/agent-nodejs/issues/275)) ([06ae054](https://github.com/ForestAdmin/agent-nodejs/commit/06ae054d524717b4eec4e19f85e9bdf675d75cf0))
33
+
1
34
  # @forestadmin/agent [1.0.0-beta.14](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.13...@forestadmin/agent@1.0.0-beta.14) (2022-04-28)
2
35
 
3
36
 
@@ -16,7 +16,9 @@ class UpdateRelation extends relation_route_1.default {
16
16
  const relation = this.collection.schema.fields[this.relationName];
17
17
  const caller = query_string_1.default.parseRecipient(context);
18
18
  const parentId = id_1.default.unpackId(this.collection.schema, context.params.parentId);
19
- const linkedId = id_1.default.unpackId(this.foreignCollection.schema, context.request.body?.data.id);
19
+ const linkedId = context.request.body?.data?.id
20
+ ? id_1.default.unpackId(this.foreignCollection.schema, context.request.body.data.id)
21
+ : null;
20
22
  if (relation.type === 'ManyToOne') {
21
23
  await this.updateManyToOne(context, relation, parentId, linkedId, caller);
22
24
  }
@@ -30,7 +32,9 @@ class UpdateRelation extends relation_route_1.default {
30
32
  const scope = await this.services.permissions.getScope(this.collection, context);
31
33
  await this.services.permissions.can(context, `edit:${this.collection.name}`);
32
34
  // Load the value that will be used as foreignKey (=== linkedId[0] most of the time)
33
- const foreignValue = await datasource_toolkit_1.CollectionUtils.getValue(this.foreignCollection, caller, linkedId, relation.foreignKeyTarget);
35
+ const foreignValue = linkedId
36
+ ? await datasource_toolkit_1.CollectionUtils.getValue(this.foreignCollection, caller, linkedId, relation.foreignKeyTarget)
37
+ : null;
34
38
  // Overwrite old foreign key with new one (only one query needed).
35
39
  const fkOwner = datasource_toolkit_1.ConditionTreeFactory.matchIds(this.collection.schema, [parentId]);
36
40
  await this.collection.update(caller, new datasource_toolkit_1.Filter({ conditionTree: datasource_toolkit_1.ConditionTreeFactory.intersect(fkOwner, scope) }), { [relation.foreignKey]: foreignValue });
@@ -45,9 +49,11 @@ class UpdateRelation extends relation_route_1.default {
45
49
  const oldFkOwner = new datasource_toolkit_1.ConditionTreeLeaf(relation.originKey, 'Equal', originValue);
46
50
  await this.foreignCollection.update(caller, new datasource_toolkit_1.Filter({ conditionTree: datasource_toolkit_1.ConditionTreeFactory.intersect(oldFkOwner, scope) }), { [relation.originKey]: null });
47
51
  // Create new relation (will update exactly one record).
48
- const newFkOwner = datasource_toolkit_1.ConditionTreeFactory.matchIds(this.foreignCollection.schema, [linkedId]);
49
- await this.foreignCollection.update(caller, new datasource_toolkit_1.Filter({ conditionTree: datasource_toolkit_1.ConditionTreeFactory.intersect(newFkOwner, scope) }), { [relation.originKey]: originValue });
52
+ if (linkedId) {
53
+ const newFkOwner = datasource_toolkit_1.ConditionTreeFactory.matchIds(this.foreignCollection.schema, [linkedId]);
54
+ await this.foreignCollection.update(caller, new datasource_toolkit_1.Filter({ conditionTree: datasource_toolkit_1.ConditionTreeFactory.intersect(newFkOwner, scope) }), { [relation.originKey]: originValue });
55
+ }
50
56
  }
51
57
  }
52
58
  exports.default = UpdateRelation;
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXJlbGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FnZW50L3JvdXRlcy9tb2RpZmljYXRpb24vdXBkYXRlLXJlbGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsd0VBU3lDO0FBSXpDLHVDQUF1QztBQUN2Qyx3REFBcUM7QUFDckMsNEVBQXlEO0FBQ3pELHVFQUE4QztBQUU5QyxNQUFxQixjQUFlLFNBQVEsd0JBQWE7SUFDdkQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsTUFBTSxDQUFDLEdBQUcsQ0FDUixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSw0QkFBNEIsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUN2RSxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUFnQjtRQUNyRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLHNCQUFpQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RCxNQUFNLFFBQVEsR0FBRyxZQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkYsTUFBTSxRQUFRLEdBQUcsWUFBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVoRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxDQUFDLGVB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
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXJlbGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FnZW50L3JvdXRlcy9tb2RpZmljYXRpb24vdXBkYXRlLXJlbGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsd0VBU3lDO0FBSXpDLHVDQUF1QztBQUN2Qyx3REFBcUM7QUFDckMsNEVBQXlEO0FBQ3pELHVFQUE4QztBQUU5QyxNQUFxQixjQUFlLFNBQVEsd0JBQWE7SUFDdkQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsTUFBTSxDQUFDLEdBQUcsQ0FDUixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSw0QkFBNEIsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUN2RSxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUFnQjtRQUNyRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLHNCQUFpQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RCxNQUFNLFFBQVEsR0FBRyxZQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkYsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDN0MsQ0FBQyxDQUFDLFlBQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9FLENB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
@@ -1,9 +1,10 @@
1
- import { ActionCollectionDecorator, ComputedCollectionDecorator, DataSource, DataSourceDecorator, OperatorsEmulateCollectionDecorator, OperatorsReplaceCollectionDecorator, PublicationCollectionDecorator, RelationCollectionDecorator, RenameCollectionDecorator, SearchCollectionDecorator, SegmentCollectionDecorator, SortEmulateCollectionDecorator, WriteCollectionDecorator } from '@forestadmin/datasource-toolkit';
1
+ import { ActionCollectionDecorator, ComputedCollectionDecorator, DataSource, DataSourceDecorator, EmptyCollectionDecorator, OperatorsEmulateCollectionDecorator, OperatorsReplaceCollectionDecorator, PublicationCollectionDecorator, RelationCollectionDecorator, RenameCollectionDecorator, SearchCollectionDecorator, SegmentCollectionDecorator, SortEmulateCollectionDecorator, WriteCollectionDecorator } from '@forestadmin/datasource-toolkit';
2
2
  export default class DecoratorsStack {
3
3
  action: DataSourceDecorator<ActionCollectionDecorator>;
4
4
  earlyComputed: DataSourceDecorator<ComputedCollectionDecorator>;
5
5
  earlyOpEmulate: DataSourceDecorator<OperatorsEmulateCollectionDecorator>;
6
6
  earlyOpReplace: DataSourceDecorator<OperatorsReplaceCollectionDecorator>;
7
+ empty: DataSourceDecorator<EmptyCollectionDecorator>;
7
8
  relation: DataSourceDecorator<RelationCollectionDecorator>;
8
9
  lateComputed: DataSourceDecorator<ComputedCollectionDecorator>;
9
10
  lateOpEmulate: DataSourceDecorator<OperatorsEmulateCollectionDecorator>;
@@ -3,11 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
4
4
  class DecoratorsStack {
5
5
  constructor(dataSource) {
6
+ this.dataSource = dataSource;
6
7
  /* eslint-disable no-multi-assign */
8
+ // Step 0: Do not query datasource when we know the result with yield an empty set.
9
+ this.dataSource = this.empty = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.EmptyCollectionDecorator);
7
10
  // Step 1: Computed-Relation-Computed sandwich (needed because some emulated relations depend
8
11
  // on computed fields, and some computed fields depend on relation...)
9
12
  // Note that replacement goes before emulation, as replacements may use emulated operators.
10
- this.dataSource = this.earlyComputed = new datasource_toolkit_1.DataSourceDecorator(dataSource, datasource_toolkit_1.ComputedCollectionDecorator);
13
+ this.dataSource = this.earlyComputed = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.ComputedCollectionDecorator);
11
14
  this.dataSource = this.earlyOpEmulate = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.OperatorsEmulateCollectionDecorator);
12
15
  this.dataSource = this.earlyOpReplace = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.OperatorsReplaceCollectionDecorator);
13
16
  this.dataSource = this.relation = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.RelationCollectionDecorator);
@@ -30,4 +33,4 @@ class DecoratorsStack {
30
33
  }
31
34
  }
32
35
  exports.default = DecoratorsStack;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVyL2RlY29yYXRvcnMtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3RUFjeUM7QUFFekMsTUFBcUIsZUFBZTtJQWtCbEMsWUFBWSxVQUFzQjtRQUNoQyxvQ0FBb0M7UUFDcEMsNkZBQTZGO1FBQzdGLHNFQUFzRTtRQUN0RSwyRkFBMkY7UUFDM0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksd0NBQW1CLENBQzVELFVBQVUsRUFDVixnREFBMkIsQ0FDNUIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHdDQUFtQixDQUM3RCxJQUFJLENBQUMsVUFBVSxFQUNmLHdEQUFtQyxDQUNwQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksd0NBQW1CLENBQzdELElBQUksQ0FBQyxVQUFVLEVBQ2Ysd0RBQW1DLENBQ3BDLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDdkQsSUFBSSxDQUFDLFVBQVUsRUFDZixnREFBMkIsQ0FDNUIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHdDQUFtQixDQUMzRCxJQUFJLENBQUMsVUFBVSxFQUNmLGdEQUEyQixDQUM1QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksd0NBQW1CLENBQzVELElBQUksQ0FBQyxVQUFVLEVBQ2Ysd0RBQW1DLENBQ3BDLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDNUQsSUFBSSxDQUFDLFVBQVUsRUFDZix3REFBbUMsQ0FDcEMsQ0FBQztRQUVGLGlGQUFpRjtRQUNqRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDckQsSUFBSSxDQUFDLFVBQVUsRUFDZiw4Q0FBeUIsQ0FDMUIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHdDQUFtQixDQUN0RCxJQUFJLENBQUMsVUFBVSxFQUNmLCtDQUEwQixDQUMzQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksd0NBQW1CLENBQzFELElBQUksQ0FBQyxVQUFVLEVBQ2YsbURBQThCLENBQy9CLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDcEQsSUFBSSxDQUFDLFVBQVUsRUFDZiw2Q0FBd0IsQ0FDekIsQ0FBQztRQUVGLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDckQsSUFBSSxDQUFDLFVBQVUsRUFDZiw4Q0FBeUIsQ0FDMUIsQ0FBQztRQUVGLHlEQUF5RDtRQUN6RCxrREFBa0Q7UUFDbEQsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHdDQUFtQixDQUMxRCxJQUFJLENBQUMsVUFBVSxFQUNmLG1EQUE4QixDQUMvQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksd0NBQW1CLENBQ3JELElBQUksQ0FBQyxVQUFVLEVBQ2YsOENBQXlCLENBQzFCLENBQUM7UUFDRixtQ0FBbUM7SUFDckMsQ0FBQztDQUNGO0FBekZELGtDQXlGQyJ9
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVyL2RlY29yYXRvcnMtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3RUFleUM7QUFFekMsTUFBcUIsZUFBZTtJQW1CbEMsWUFBWSxVQUFzQjtRQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUU3QixvQ0FBb0M7UUFFcEMsbUZBQW1GO1FBQ25GLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHdDQUFtQixDQUNwRCxJQUFJLENBQUMsVUFBVSxFQUNmLDZDQUF3QixDQUN6QixDQUFDO1FBRUYsNkZBQTZGO1FBQzdGLHNFQUFzRTtRQUN0RSwyRkFBMkY7UUFDM0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksd0NBQW1CLENBQzVELElBQUksQ0FBQyxVQUFVLEVBQ2YsZ0RBQTJCLENBQzVCLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDN0QsSUFBSSxDQUFDLFVBQVUsRUFDZix3REFBbUMsQ0FDcEMsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHdDQUFtQixDQUM3RCxJQUFJLENBQUMsVUFBVSxFQUNmLHdEQUFtQyxDQUNwQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksd0NBQW1CLENBQ3ZELElBQUksQ0FBQyxVQUFVLEVBQ2YsZ0RBQTJCLENBQzVCLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDM0QsSUFBSSxDQUFDLFVBQVUsRUFDZixnREFBMkIsQ0FDNUIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHdDQUFtQixDQUM1RCxJQUFJLENBQUMsVUFBVSxFQUNmLHdEQUFtQyxDQUNwQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksd0NBQW1CLENBQzVELElBQUksQ0FBQyxVQUFVLEVBQ2Ysd0RBQW1DLENBQ3BDLENBQUM7UUFFRixpRkFBaUY7UUFDakYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksd0NBQW1CLENBQ3JELElBQUksQ0FBQyxVQUFVLEVBQ2YsOENBQXlCLENBQzFCLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDdEQsSUFBSSxDQUFDLFVBQVUsRUFDZiwrQ0FBMEIsQ0FDM0IsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHdDQUFtQixDQUMxRCxJQUFJLENBQUMsVUFBVSxFQUNmLG1EQUE4QixDQUMvQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksd0NBQW1CLENBQ3BELElBQUksQ0FBQyxVQUFVLEVBQ2YsNkNBQXdCLENBQ3pCLENBQUM7UUFFRix5REFBeUQ7UUFDekQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksd0NBQW1CLENBQ3JELElBQUksQ0FBQyxVQUFVLEVBQ2YsOENBQXlCLENBQzFCLENBQUM7UUFFRix5REFBeUQ7UUFDekQsa0RBQWtEO1FBQ2xELGlCQUFpQjtRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDMUQsSUFBSSxDQUFDLFVBQVUsRUFDZixtREFBOEIsQ0FDL0IsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLHdDQUFtQixDQUNyRCxJQUFJLENBQUMsVUFBVSxFQUNmLDhDQUF5QixDQUMxQixDQUFDO1FBQ0YsbUNBQW1DO0lBQ3JDLENBQUM7Q0FDRjtBQW5HRCxrQ0FtR0MifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/agent",
3
- "version": "1.0.0-beta.14",
3
+ "version": "1.0.0-beta.17",
4
4
  "main": "dist/index.js",
5
5
  "license": "GPL-3.0",
6
6
  "publishConfig": {
@@ -13,7 +13,7 @@
13
13
  },
14
14
  "dependencies": {
15
15
  "@fast-csv/format": "^4.3.5",
16
- "@forestadmin/datasource-toolkit": "1.0.0-beta.8",
16
+ "@forestadmin/datasource-toolkit": "1.0.0-beta.10",
17
17
  "@koa/cors": "^3.3.0",
18
18
  "@koa/router": "^10.1.1",
19
19
  "forest-ip-utils": "^1.0.1",