@forestadmin/agent 1.0.0-beta.2 → 1.0.0-beta.22

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 (43) hide show
  1. package/CHANGELOG.md +611 -0
  2. package/dist/agent/forestadmin-http-driver.d.ts +2 -2
  3. package/dist/agent/forestadmin-http-driver.js +4 -5
  4. package/dist/agent/routes/access/chart.js +47 -23
  5. package/dist/agent/routes/access/count-related.js +4 -2
  6. package/dist/agent/routes/access/count.js +4 -2
  7. package/dist/agent/routes/access/csv-related.js +3 -3
  8. package/dist/agent/routes/access/csv.js +3 -2
  9. package/dist/agent/routes/access/get.js +3 -2
  10. package/dist/agent/routes/access/list-related.js +2 -3
  11. package/dist/agent/routes/access/list.js +2 -3
  12. package/dist/agent/routes/modification/action.d.ts +0 -1
  13. package/dist/agent/routes/modification/action.js +11 -11
  14. package/dist/agent/routes/modification/associate-related.d.ts +3 -3
  15. package/dist/agent/routes/modification/associate-related.js +13 -11
  16. package/dist/agent/routes/modification/create.js +14 -12
  17. package/dist/agent/routes/modification/delete.js +3 -2
  18. package/dist/agent/routes/modification/dissociate-delete-related.js +19 -18
  19. package/dist/agent/routes/modification/update-relation.js +19 -13
  20. package/dist/agent/routes/modification/update.js +5 -3
  21. package/dist/agent/routes/system/logger.js +4 -5
  22. package/dist/agent/utils/condition-tree-parser.d.ts +11 -0
  23. package/dist/agent/utils/condition-tree-parser.js +53 -0
  24. package/dist/agent/utils/context-filter-factory.js +1 -2
  25. package/dist/agent/utils/csv-generator.d.ts +2 -2
  26. package/dist/agent/utils/csv-generator.js +3 -3
  27. package/dist/agent/utils/forest-schema/generator-actions.js +2 -2
  28. package/dist/agent/utils/forest-schema/generator-collection.js +8 -3
  29. package/dist/agent/utils/forest-schema/generator-fields.js +16 -8
  30. package/dist/agent/utils/http-driver-options.js +20 -11
  31. package/dist/agent/utils/query-string.d.ts +2 -2
  32. package/dist/agent/utils/query-string.js +8 -4
  33. package/dist/builder/agent.d.ts +14 -26
  34. package/dist/builder/agent.js +29 -41
  35. package/dist/builder/collection.d.ts +23 -23
  36. package/dist/builder/collection.js +42 -44
  37. package/dist/builder/decorators-stack.d.ts +21 -0
  38. package/dist/builder/decorators-stack.js +36 -0
  39. package/dist/index.d.ts +4 -2
  40. package/dist/index.js +13 -5
  41. package/dist/types.d.ts +2 -8
  42. package/dist/types.js +1 -9
  43. package/package.json +4 -4
@@ -49,9 +49,17 @@ class SchemaGeneratorFields {
49
49
  validations: validation_1.default.convertValidationList(column.validation),
50
50
  };
51
51
  }
52
- static buildToManyRelationSchema(relation, foreignCollection, baseSchema) {
53
- const key = relation.type === 'OneToMany' ? relation.originKeyTarget : relation.foreignKeyTarget;
54
- const keySchema = foreignCollection.schema.fields[key];
52
+ static buildToManyRelationSchema(relation, collection, foreignCollection, baseSchema) {
53
+ let key;
54
+ let keySchema;
55
+ if (relation.type === 'OneToMany') {
56
+ key = relation.originKeyTarget;
57
+ keySchema = collection.schema.fields[key];
58
+ }
59
+ else {
60
+ key = relation.foreignKeyTarget;
61
+ keySchema = foreignCollection.schema.fields[key];
62
+ }
55
63
  return {
56
64
  type: [keySchema.columnType],
57
65
  defaultValue: null,
@@ -68,9 +76,9 @@ class SchemaGeneratorFields {
68
76
  return Object.values(foreignCollection.schema.fields).some(field => field.type === 'Column' &&
69
77
  filterable_1.default.isFilterable(field.columnType, field.filterOperators));
70
78
  }
71
- static buildOneToOneSchema(relation, foreignCollection, baseSchema) {
79
+ static buildOneToOneSchema(relation, collection, foreignCollection, baseSchema) {
72
80
  const key = relation.originKeyTarget;
73
- const keySchema = foreignCollection.schema.fields[key];
81
+ const keySchema = collection.schema.fields[key];
74
82
  return {
75
83
  type: keySchema.columnType,
76
84
  defaultValue: null,
@@ -113,9 +121,9 @@ class SchemaGeneratorFields {
113
121
  switch (relation.type) {
114
122
  case 'ManyToMany':
115
123
  case 'OneToMany':
116
- return SchemaGeneratorFields.buildToManyRelationSchema(relation, foreignCollection, relationSchema);
124
+ return SchemaGeneratorFields.buildToManyRelationSchema(relation, collection, foreignCollection, relationSchema);
117
125
  case 'OneToOne':
118
- return SchemaGeneratorFields.buildOneToOneSchema(relation, foreignCollection, relationSchema);
126
+ return SchemaGeneratorFields.buildOneToOneSchema(relation, collection, foreignCollection, relationSchema);
119
127
  default:
120
128
  return SchemaGeneratorFields.buildManyToOneSchema(relation, collection, foreignCollection, relationSchema);
121
129
  }
@@ -128,4 +136,4 @@ SchemaGeneratorFields.relationMap = {
128
136
  OneToMany: 'HasMany',
129
137
  OneToOne: 'HasOne',
130
138
  };
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLWZpZWxkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZ2VudC91dGlscy9mb3Jlc3Qtc2NoZW1hL2dlbmVyYXRvci1maWVsZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFVeUM7QUFFekMsOERBQW1EO0FBQ25ELDhEQUFtRDtBQUVuRCxNQUFxQixxQkFBcUI7SUFReEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFzQixFQUFFLElBQVk7UUFDckQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhELElBQUksTUFBeUIsQ0FBQztRQUU5QixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssUUFBUTtnQkFDWCxNQUFNLEdBQUcscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNuRSxNQUFNO1lBRVIsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxZQUFZLENBQUM7WUFDbEIsS0FBSyxVQUFVO2dCQUNiLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLE1BQU07WUFFUjtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2FBQzFCLElBQUksRUFBRTthQUNOLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3JDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFFMUIsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFzQixFQUFFLElBQVk7UUFDbkUsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFpQixDQUFDO1FBRTlELE9BQU87WUFDTCxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksSUFBSSxJQUFJO1lBQ3pDLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUk7WUFDaEMsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsSUFBSTtZQUNqQixTQUFTLEVBQUUsSUFBSTtZQUNmLFlBQVksRUFBRSxvQkFBdUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDO1lBQzdGLFlBQVksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUMxQyxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDdEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsSUFBSSxLQUFLO1lBQzNFLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUN0QyxTQUFTLEVBQUUsS0FBSztZQUNoQixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVTtZQUN2QixXQUFXLEVBQUUsb0JBQXVCLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztTQUM5RSxDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyx5QkFBeUIsQ0FDdEMsUUFBNEMsRUFDNUMsaUJBQTZCLEVBQzdCLFVBQTZCO1FBRTdCLE1BQU0sR0FBRyxHQUNQLFFBQVEsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7UUFDdkYsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQWlCLENBQUM7UUFFdkUsT0FBTztZQUNMLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDNUIsWUFBWSxFQUFFLElBQUk7WUFDbEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsVUFBVSxFQUFFLEtBQUs7WUFDakIsVUFBVSxFQUFFLEtBQUs7WUFDakIsV0FBVyxFQUFFLEVBQUU7WUFDZixTQUFTLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFO1lBQzdDLEdBQUcsVUFBVTtTQUNkLENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLDZCQUE2QixDQUFDLGlCQUE2QjtRQUN4RSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDeEQsS0FBSyxDQUFDLEVBQUUsQ0FDTixLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFDdkIsb0JBQXVCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUNoRixDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxtQkFBbUIsQ0FDaEMsUUFBd0IsRUFDeEIsaUJBQTZCLEVBQzdCLFVBQTZCO1FBRTdCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDckMsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQWlCLENBQUM7UUFFdkUsT0FBTztZQUNMLElBQUksRUFBRSxTQUFTLENBQUMsVUFBVTtZQUMxQixZQUFZLEVBQUUsSUFBSTtZQUNsQixZQUFZLEVBQUUscUJBQXFCLENBQUMsNkJBQTZCLENBQUMsaUJBQWlCLENBQUM7WUFDcEYsWUFBWSxFQUFFLEtBQUs7WUFDbkIsVUFBVSxFQUFFLEtBQUs7WUFDakIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1lBQ3pDLFdBQVcsRUFBRSxFQUFFO1lBQ2YsU0FBUyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRTtZQUM3QyxHQUFHLFVBQVU7U0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDakMsUUFBeUIsRUFDekIsVUFBc0IsRUFDdEIsaUJBQTZCLEVBQzdCLFVBQTZCO1FBRTdCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFDaEMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFpQixDQUFDO1FBRWhFLE9BQU87WUFDTCxJQUFJLEVBQUUsU0FBUyxDQUFDLFVBQVU7WUFDMUIsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZLElBQUksSUFBSTtZQUM1QyxZQUFZLEVBQUUscUJBQXFCLENBQUMsNkJBQTZCLENBQUMsaUJBQWlCLENBQUM7WUFDcEYsWUFBWSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1lBQzdDLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLElBQUksS0FBSztZQUM5RSxVQUFVLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDekMsV0FBVyxFQUFFLG9CQUF1QixDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDaEYsU0FBUyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuRSxHQUFHLFVBQVU7U0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFzQixFQUFFLElBQVk7UUFDckUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFtQixDQUFDO1FBQ2xFLE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFMUYsTUFBTSxjQUFjLEdBQUc7WUFDckIsS0FBSyxFQUFFLElBQUk7WUFDWCxLQUFLLEVBQUUsSUFBSTtZQUNYLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFNBQVMsRUFBRSxvQ0FBZSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7WUFDL0QsWUFBWSxFQUFFLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQy9ELENBQUM7UUFFRixRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDckIsS0FBSyxZQUFZLENBQUM7WUFDbEIsS0FBSyxXQUFXO2dCQUNkLE9BQU8scUJBQXFCLENBQUMseUJBQXlCLENBQ3BELFFBQVEsRUFDUixpQkFBaUIsRUFDakIsY0FBYyxDQUNmLENBQUM7WUFDSixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FDOUMsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixjQUFjLENBQ2YsQ0FBQztZQUNKO2dCQUNFLE9BQU8scUJBQXFCLENBQUMsb0JBQW9CLENBQy9DLFFBQVEsRUFDUixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLGNBQWMsQ0FDZixDQUFDO1NBQ0w7SUFDSCxDQUFDOztBQXhLSCx3Q0F5S0M7QUF4S2dCLGlDQUFXLEdBQW1FO0lBQzNGLFVBQVUsRUFBRSxlQUFlO0lBQzNCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFFBQVEsRUFBRSxRQUFRO0NBQ25CLENBQUMifQ==
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLWZpZWxkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZ2VudC91dGlscy9mb3Jlc3Qtc2NoZW1hL2dlbmVyYXRvci1maWVsZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFVeUM7QUFFekMsOERBQW1EO0FBQ25ELDhEQUFtRDtBQUVuRCxNQUFxQixxQkFBcUI7SUFReEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFzQixFQUFFLElBQVk7UUFDckQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhELElBQUksTUFBeUIsQ0FBQztRQUU5QixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssUUFBUTtnQkFDWCxNQUFNLEdBQUcscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNuRSxNQUFNO1lBRVIsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxZQUFZLENBQUM7WUFDbEIsS0FBSyxVQUFVO2dCQUNiLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLE1BQU07WUFFUjtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2FBQzFCLElBQUksRUFBRTthQUNOLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3JDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFFMUIsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gs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
@@ -2,17 +2,25 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const fs_1 = require("fs");
4
4
  const path_1 = require("path");
5
- const types_1 = require("../../types");
6
5
  class OptionsUtils {
7
6
  static withDefaults(options) {
7
+ const copyOptions = { ...options };
8
+ const defaultLogger = (level, data) => {
9
+ const loggerLevel = options.loggerLevel ?? 'Info';
10
+ const levels = Object.keys(this.loggerPrefix);
11
+ if (levels.indexOf(level) >= levels.indexOf(loggerLevel)) {
12
+ console.error(OptionsUtils.loggerPrefix[level], data);
13
+ }
14
+ };
15
+ copyOptions.logger = copyOptions.logger || defaultLogger;
16
+ copyOptions.schemaPath = copyOptions.schemaPath || '.forestadmin-schema.json';
17
+ copyOptions.forestServerUrl = copyOptions.forestServerUrl || 'https://api.forestadmin.com';
8
18
  return Object.freeze({
9
19
  clientId: null,
10
- forestServerUrl: 'https://api.forestadmin.com',
11
- logger: (level, data) => console.error(OptionsUtils.loggerPrefix[level], data),
20
+ loggerLevel: 'Info',
12
21
  prefix: '/forest',
13
- schemaPath: '.forestadmin-schema.json',
14
22
  permissionsCacheDurationInSeconds: 15 * 60,
15
- ...options,
23
+ ...copyOptions,
16
24
  });
17
25
  }
18
26
  static validate(options) {
@@ -44,8 +52,8 @@ class OptionsUtils {
44
52
  '(i.e. "OfpssLrbgF3P4vHJTTpb"');
45
53
  }
46
54
  if (options.clientId === null) {
47
- options.logger?.(types_1.LoggerLevel.Warn, 'options.clientId was not provided. Using NodeJS cluster mode, ' +
48
- 'or multiple instances of the agent will break authentication');
55
+ options.logger?.('Warn', 'options.clientId was not provided. Using Node.js cluster mode, ' +
56
+ 'or multiple instances of the agent will break authentication');
49
57
  }
50
58
  else if (typeof options.clientId !== 'string') {
51
59
  throw new Error('options.clientId is invalid.');
@@ -79,8 +87,9 @@ class OptionsUtils {
79
87
  }
80
88
  exports.default = OptionsUtils;
81
89
  OptionsUtils.loggerPrefix = {
82
- [types_1.LoggerLevel.Info]: '\x1b[34minfo:\x1b[0m',
83
- [types_1.LoggerLevel.Warn]: '\x1b[33mwarning:\x1b[0m',
84
- [types_1.LoggerLevel.Error]: '\x1b[31merror:\x1b[0m',
90
+ Debug: '\x1b[34mdebug:\x1b[0m',
91
+ Info: '\x1b[32minfo:\x1b[0m',
92
+ Warn: '\x1b[33mwarning:\x1b[0m',
93
+ Error: '\x1b[31merror:\x1b[0m',
85
94
  };
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kcml2ZXItb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZ2VudC91dGlscy9odHRwLWRyaXZlci1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkJBQWdDO0FBQ2hDLCtCQUEwQztBQUUxQyx1Q0FBd0Q7QUFHeEQsTUFBcUIsWUFBWTtJQU8vQixNQUFNLENBQUMsWUFBWSxDQUFDLE9BQXFCO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNuQixRQUFRLEVBQUUsSUFBSTtZQUNkLGVBQWUsRUFBRSw2QkFBNkI7WUFDOUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQztZQUM5RSxNQUFNLEVBQUUsU0FBUztZQUNqQixVQUFVLEVBQUUsMEJBQTBCO1lBQ3RDLGlDQUFpQyxFQUFFLEVBQUUsR0FBRyxFQUFFO1lBQzFDLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQWlDO1FBQy9DLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTyxNQUFNLENBQUMsd0JBQXdCLENBQUMsT0FBaUM7UUFDdkUsSUFBSSxPQUFPLE9BQU8sQ0FBQyxTQUFTLEtBQUssUUFBUSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN0RixNQUFNLElBQUksS0FBSyxDQUNiLGdFQUFnRTtnQkFDOUQsNkJBQTZCLENBQ2hDLENB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
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kcml2ZXItb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZ2VudC91dGlscy9odHRwLWRyaXZlci1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkJBQWdDO0FBQ2hDLCtCQUEwQztBQUsxQyxNQUFxQixZQUFZO0lBUS9CLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBcUI7UUFDdkMsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBRW5DLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO1lBQ2xELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTlDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUN4RCxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDdkQ7UUFDSCxDQUFDLENBQUM7UUFFRixXQUFXLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLElBQUksYUFBYSxDQUFDO1FBQ3pELFdBQVcsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsSUFBSSwwQkFBMEIsQ0FBQztRQUM5RSxXQUFXLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxlQUFlLElBQUksNkJBQTZCLENBQUM7UUFFM0YsT0FBaUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUM3QyxRQUFRLEVBQUUsSUFBSTtZQUNkLFdBQVcsRUFBRSxNQUFNO1lBQ25CLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLGlDQUFpQyxFQUFFLEVB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
@@ -1,4 +1,4 @@
1
- import { Collection, ConditionTree, Page, Projection, Sort } from '@forestadmin/datasource-toolkit';
1
+ import { Caller, Collection, ConditionTree, Page, Projection, Sort } from '@forestadmin/datasource-toolkit';
2
2
  import { Context } from 'koa';
3
3
  export default class QueryStringParser {
4
4
  static parseConditionTree(collection: Collection, context: Context): ConditionTree;
@@ -7,7 +7,7 @@ export default class QueryStringParser {
7
7
  static parseSearch(collection: Collection, context: Context): string;
8
8
  static parseSearchExtended(context: Context): boolean;
9
9
  static parseSegment(collection: Collection, context: Context): string;
10
- static parseTimezone(context: Context): string;
10
+ static parseCaller(context: Context): Caller;
11
11
  static parsePagination(context: Context): Page;
12
12
  static parseSort(collection: Collection, context: Context): Sort;
13
13
  }
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
7
+ const condition_tree_parser_1 = __importDefault(require("./condition-tree-parser"));
4
8
  const DEFAULT_ITEMS_PER_PAGE = 15;
5
9
  const DEFAULT_PAGE_TO_SKIP = 1;
6
10
  class QueryStringParser {
@@ -12,7 +16,7 @@ class QueryStringParser {
12
16
  if (!filters)
13
17
  return null;
14
18
  const json = JSON.parse(filters.toString());
15
- const conditionTree = datasource_toolkit_1.ConditionTreeFactory.fromPlainObject(json);
19
+ const conditionTree = condition_tree_parser_1.default.fromPlainObject(collection, json);
16
20
  datasource_toolkit_1.ConditionTreeValidator.validate(conditionTree, collection);
17
21
  return conditionTree;
18
22
  }
@@ -71,7 +75,7 @@ class QueryStringParser {
71
75
  }
72
76
  return segment;
73
77
  }
74
- static parseTimezone(context) {
78
+ static parseCaller(context) {
75
79
  const timezone = context.request.query.timezone?.toString();
76
80
  if (!timezone) {
77
81
  throw new datasource_toolkit_1.ValidationError('Missing timezone');
@@ -87,7 +91,7 @@ class QueryStringParser {
87
91
  catch {
88
92
  throw new datasource_toolkit_1.ValidationError(`Invalid timezone: "${timezone}"`);
89
93
  }
90
- return timezone;
94
+ return { ...context.state.user, timezone };
91
95
  }
92
96
  static parsePagination(context) {
93
97
  const queryItemsPerPage = (context.request.body?.data?.attributes?.all_records_subset_query?.['page[size]'] ??
@@ -127,4 +131,4 @@ class QueryStringParser {
127
131
  }
128
132
  }
129
133
  exports.default = QueryStringParser;
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FnZW50L3V0aWxzL3F1ZXJ5LXN0cmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdFQWF5QztBQUd6QyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUNsQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQztBQUUvQixNQUFxQixpQkFBaUI7SUFDcEMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQXNCLEVBQUUsT0FBZ0I7UUFDaEUsSUFBSTtZQUNGLE1BQU0sT0FBTyxHQUNYLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsT0FBTztnQkFDekUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTztnQkFDN0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO1lBRWpDLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBRTFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDNUMsTUFBTSxhQUFhLEdBQUcseUNBQW9CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pFLDJDQUFzQixDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFM0QsT0FBTyxhQUFhLENBQUM7U0FDdEI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxvQ0FBZSxDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQXNCLEVBQUUsT0FBZ0I7UUFDN0QsSUFBSTtZQUNGLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFP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
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FnZW50L3V0aWxzL3F1ZXJ5LXN0cmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQWF5QztBQUV6QyxvRkFBMEQ7QUFFMUQsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFDbEMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFFL0IsTUFBcUIsaUJBQWlCO0lBQ3BDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFzQixFQUFFLE9BQWdCO1FBQ2hFLElBQUk7WUFDRixNQUFNLE9BQU8sR0FDWCxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixFQUFFLE9BQU87Z0JBQ3pFLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU87Z0JBQzdCLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUVqQyxJQUFJLENBQUMsT0FBTztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUUxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sYUFBYSxHQUFHLCtCQUFtQixDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUUsMkNBQXNCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUUzRCxPQUFPLGFBQWEsQ0FBQztTQUN0QjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLG9DQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBc0IsRUFBRSxPQUFnQjtRQUM3RCxJQUFJO1lBQ0YsTUFB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
@@ -1,7 +1,7 @@
1
- import { ActionCollectionDecorator, BaseDataSource, Collection, ComputedCollectionDecorator, DataSource, DataSourceDecorator, OperatorsEmulateCollectionDecorator, OperatorsReplaceCollectionDecorator, PublicationCollectionDecorator, RelationCollectionDecorator, RenameCollectionDecorator, SearchCollectionDecorator, SegmentCollectionDecorator, SortEmulateCollectionDecorator, WriteCollectionDecorator } from '@forestadmin/datasource-toolkit';
1
+ import { DataSourceFactory } from '@forestadmin/datasource-toolkit';
2
2
  import { AgentOptions } from '../types';
3
3
  import CollectionBuilder from './collection';
4
- import ForestAdminHttpDriver, { HttpCallback } from '../agent/forestadmin-http-driver';
4
+ import { HttpCallback } from '../agent/forestadmin-http-driver';
5
5
  /**
6
6
  * Allow to create a new Forest Admin agent from scratch.
7
7
  * Builds the application by composing and configuring all the collection decorators.
@@ -9,26 +9,14 @@ import ForestAdminHttpDriver, { HttpCallback } from '../agent/forestadmin-http-d
9
9
  * Minimal code to add a datasource
10
10
  * @example
11
11
  * new AgentBuilder(options)
12
- * .addDatasource(new SomeDatasource())
12
+ * .addDataSource(new SomeDataSource())
13
13
  * .start();
14
14
  */
15
15
  export default class AgentBuilder {
16
- forestAdminHttpDriver: ForestAdminHttpDriver;
17
- compositeDatasource: BaseDataSource<Collection>;
18
- action: DataSourceDecorator<ActionCollectionDecorator>;
19
- earlyComputed: DataSourceDecorator<ComputedCollectionDecorator>;
20
- earlyOpEmulate: DataSourceDecorator<OperatorsEmulateCollectionDecorator>;
21
- earlyOpReplace: DataSourceDecorator<OperatorsReplaceCollectionDecorator>;
22
- relation: DataSourceDecorator<RelationCollectionDecorator>;
23
- lateComputed: DataSourceDecorator<ComputedCollectionDecorator>;
24
- lateOpEmulate: DataSourceDecorator<OperatorsEmulateCollectionDecorator>;
25
- lateOpReplace: DataSourceDecorator<OperatorsReplaceCollectionDecorator>;
26
- publication: DataSourceDecorator<PublicationCollectionDecorator>;
27
- rename: DataSourceDecorator<RenameCollectionDecorator>;
28
- search: DataSourceDecorator<SearchCollectionDecorator>;
29
- segment: DataSourceDecorator<SegmentCollectionDecorator>;
30
- sortEmulate: DataSourceDecorator<SortEmulateCollectionDecorator>;
31
- write: DataSourceDecorator<WriteCollectionDecorator>;
16
+ private readonly forestAdminHttpDriver;
17
+ private readonly compositeDataSource;
18
+ private readonly stack;
19
+ private tasks;
32
20
  /**
33
21
  * Native nodejs HttpCallback object
34
22
  * @example
@@ -43,27 +31,27 @@ export default class AgentBuilder {
43
31
  * ```
44
32
  * clientId: null,
45
33
  * forestServerUrl: 'https://api.forestadmin.com',
46
- * logger: (level, data) => console.error(OptionsUtils.loggerPrefix[level], data),
34
+ * logger: (level, data) => console.error(level, data),
47
35
  * prefix: '/forest',
48
36
  * schemaPath: '.forestadmin-schema.json',
49
37
  * permissionsCacheDurationInSeconds: 15 * 60,
50
38
  * ```
51
- * @param {AgentOptions} options options
39
+ * @param options options
52
40
  * @example
53
41
  * new AgentBuilder(options)
54
- * .addDatasource(new Datasource())
42
+ * .addDataSource(new DataSource())
55
43
  * .start();
56
44
  */
57
45
  constructor(options: AgentOptions);
58
46
  /**
59
47
  * Add a datasource
60
- * @param {DataSource} datasource the datasource to add
48
+ * @param factory the datasource to add
61
49
  */
62
- addDatasource(datasource: DataSource): this;
50
+ addDataSource(factory: DataSourceFactory): this;
63
51
  /**
64
52
  * Allow to interact with a decorated collection
65
- * @param {string} name the name of the collection to manipulate
66
- * @param {(collection: CollectionBuilder) => unknown} handle a function that provide a
53
+ * @param name the name of the collection to manipulate
54
+ * @param handle a function that provide a
67
55
  * collection builder on the given collection name
68
56
  * @example
69
57
  * .customizeCollection('books', books => books.renameField('xx', 'yy'))
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
7
7
  const collection_1 = __importDefault(require("./collection"));
8
+ const decorators_stack_1 = __importDefault(require("./decorators-stack"));
8
9
  const forestadmin_http_driver_1 = __importDefault(require("../agent/forestadmin-http-driver"));
9
10
  /**
10
11
  * Allow to create a new Forest Admin agent from scratch.
@@ -13,7 +14,7 @@ const forestadmin_http_driver_1 = __importDefault(require("../agent/forestadmin-
13
14
  * Minimal code to add a datasource
14
15
  * @example
15
16
  * new AgentBuilder(options)
16
- * .addDatasource(new SomeDatasource())
17
+ * .addDataSource(new SomeDataSource())
17
18
  * .start();
18
19
  */
19
20
  class AgentBuilder {
@@ -23,44 +24,22 @@ class AgentBuilder {
23
24
  * ```
24
25
  * clientId: null,
25
26
  * forestServerUrl: 'https://api.forestadmin.com',
26
- * logger: (level, data) => console.error(OptionsUtils.loggerPrefix[level], data),
27
+ * logger: (level, data) => console.error(level, data),
27
28
  * prefix: '/forest',
28
29
  * schemaPath: '.forestadmin-schema.json',
29
30
  * permissionsCacheDurationInSeconds: 15 * 60,
30
31
  * ```
31
- * @param {AgentOptions} options options
32
+ * @param options options
32
33
  * @example
33
34
  * new AgentBuilder(options)
34
- * .addDatasource(new Datasource())
35
+ * .addDataSource(new DataSource())
35
36
  * .start();
36
37
  */
37
38
  constructor(options) {
38
- let last;
39
- /* eslint-disable no-multi-assign */
40
- last = this.compositeDatasource = new datasource_toolkit_1.BaseDataSource();
41
- // Step 1: Computed-Relation-Computed sandwich (needed because some emulated relations depend
42
- // on computed fields, and some computed fields depend on relation...)
43
- // Note that replacement goes before emulation, as replacements may use emulated operators.
44
- last = this.earlyComputed = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.ComputedCollectionDecorator);
45
- last = this.earlyOpEmulate = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.OperatorsEmulateCollectionDecorator);
46
- last = this.earlyOpReplace = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.OperatorsReplaceCollectionDecorator);
47
- last = this.relation = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.RelationCollectionDecorator);
48
- last = this.lateComputed = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.ComputedCollectionDecorator);
49
- last = this.lateOpEmulate = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.OperatorsEmulateCollectionDecorator);
50
- last = this.lateOpReplace = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.OperatorsReplaceCollectionDecorator);
51
- // Step 2: Those five need access to all fields. They can be loaded in any order.
52
- last = this.publication = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.PublicationCollectionDecorator);
53
- last = this.search = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.SearchCollectionDecorator);
54
- last = this.segment = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.SegmentCollectionDecorator);
55
- last = this.sortEmulate = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.SortEmulateCollectionDecorator);
56
- last = this.write = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.WriteCollectionDecorator);
57
- // Step 3: Access to all fields AND emulated capabilities
58
- last = this.action = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.ActionCollectionDecorator);
59
- // Step 4: Renaming must be either the very first or very last so that naming in customer code
60
- // is consistent.
61
- last = this.rename = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.RenameCollectionDecorator);
62
- /* eslint-enable no-multi-assign */
63
- this.forestAdminHttpDriver = new forestadmin_http_driver_1.default(last, options);
39
+ this.tasks = [];
40
+ this.compositeDataSource = new datasource_toolkit_1.BaseDataSource();
41
+ this.stack = new decorators_stack_1.default(this.compositeDataSource);
42
+ this.forestAdminHttpDriver = new forestadmin_http_driver_1.default(this.stack.dataSource, options);
64
43
  }
65
44
  /**
66
45
  * Native nodejs HttpCallback object
@@ -74,33 +53,42 @@ class AgentBuilder {
74
53
  }
75
54
  /**
76
55
  * Add a datasource
77
- * @param {DataSource} datasource the datasource to add
56
+ * @param factory the datasource to add
78
57
  */
79
- addDatasource(datasource) {
80
- datasource.collections.forEach(collection => {
81
- this.compositeDatasource.addCollection(collection);
58
+ addDataSource(factory) {
59
+ this.tasks.push(async () => {
60
+ const datasource = await factory(this.forestAdminHttpDriver.options.logger);
61
+ datasource.collections.forEach(collection => {
62
+ this.compositeDataSource.addCollection(collection);
63
+ });
82
64
  });
83
65
  return this;
84
66
  }
85
67
  /**
86
68
  * Allow to interact with a decorated collection
87
- * @param {string} name the name of the collection to manipulate
88
- * @param {(collection: CollectionBuilder) => unknown} handle a function that provide a
69
+ * @param name the name of the collection to manipulate
70
+ * @param handle a function that provide a
89
71
  * collection builder on the given collection name
90
72
  * @example
91
73
  * .customizeCollection('books', books => books.renameField('xx', 'yy'))
92
74
  */
93
75
  customizeCollection(name, handle) {
94
- if (this.publication.getCollection(name)) {
95
- handle(new collection_1.default(this, name));
96
- }
76
+ this.tasks.push(async () => {
77
+ if (this.stack.dataSource.getCollection(name)) {
78
+ handle(new collection_1.default(this.stack, name));
79
+ }
80
+ });
97
81
  return this;
98
82
  }
99
83
  /**
100
84
  * Start the agent.
101
85
  */
102
86
  async start() {
103
- return this.forestAdminHttpDriver.start();
87
+ for (const task of this.tasks) {
88
+ // eslint-disable-next-line no-await-in-loop
89
+ await task();
90
+ }
91
+ await this.forestAdminHttpDriver.start();
104
92
  }
105
93
  /**
106
94
  * Stop the agent gracefully.
@@ -110,4 +98,4 @@ class AgentBuilder {
110
98
  }
111
99
  }
112
100
  exports.default = AgentBuilder;
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlci9hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQWdCeUM7QUFHekMsOERBQTZDO0FBQzdDLCtGQUF1RjtBQUV2Rjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFxQixZQUFZO0lBa0MvQjs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUNILFlBQVksT0FBcUI7UUFDL0IsSUFBSSxJQUFnQixDQUFDO1FBRXJCLG9DQUFvQztRQUNwQyxJQUFJLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksbUNBQWMsRUFBYyxDQUFDO1FBRW5FLDZGQUE2RjtRQUM3RixzRUFBc0U7UUFDdEUsMkZBQTJGO1FBQzNGLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLGdEQUEyQixDQUFDLENBQUM7UUFDdkYsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsd0RBQW1DLENBQUMsQ0FBQztRQUNoRyxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSx3REFBbUMsQ0FBQyxDQUFDO1FBQ2hHLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLGdEQUEyQixDQUFDLENBQUM7UUFDbEYsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsZ0RBQTJCLENBQUMsQ0FBQztRQUN0RixJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSx3REFBbUMsQ0FBQyxDQUFDO1FBQy9GLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLHdEQUFtQyxDQUFDLENBQUM7UUFFL0YsaUZBQWlGO1FBQ2pGLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLG1EQUE4QixDQUFDLENBQUM7UUFDeEYsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsOENBQXlCLENBQUMsQ0FBQztRQUM5RSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSwrQ0FBMEIsQ0FBQyxDQUFDO1FBQ2hGLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLG1EQUE4QixDQUFDLENBQUM7UUFDeEYsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsNkNBQXdCLENBQUMsQ0FBQztRQUU1RSx5REFBeUQ7UUFDekQsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsOENBQXlCLENBQUMsQ0FBQztRQUU5RSw4RkFBOEY7UUFDOUYsaUJBQWlCO1FBQ2pCLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLDhDQUF5QixDQUFDLENBQUM7UUFFOUUsbUNBQW1DO1FBRW5DLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLGlDQUFxQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBOUREOzs7Ozs7T0FNRztJQUNILElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztJQUM1QyxDQUFDO0lBdUREOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxVQUFzQjtRQUNsQyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILG1CQUFtQixDQUFDLElBQVksRUFBRSxNQUFrRDtRQUNsRixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hDLE1BQU0sQ0FBQyxJQUFJLG9CQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0MsQ0FBQztDQUNGO0FBaElELCtCQWdJQyJ9
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlci9hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQUFnRztBQUdoRyw4REFBNkM7QUFDN0MsMEVBQWlEO0FBQ2pELCtGQUF1RjtBQUV2Rjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFxQixZQUFZO0lBaUIvQjs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUNILFlBQVksT0FBcUI7UUE5QnpCLFVBQUssR0FBNEIsRUFBRSxDQUFDO1FBK0IxQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxtQ0FBYyxFQUFjLENBQUM7UUFDNUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLDBCQUFlLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksaUNBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQWpDRDs7Ozs7O09BTUc7SUFDSCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7SUFDNUMsQ0FBQztJQTBCRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsT0FBMEI7UUFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDekIsTUFBTSxVQUFVLEdBQUcsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1RSxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILG1CQUFtQixDQUFDLElBQVksRUFBRSxNQUFrRDtRQUNsRixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxDQUFDLElBQUksb0JBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ2pEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzdCLDRDQUE0QztZQUM1QyxNQUFNLElBQUksRUFBRSxDQUFDO1NBQ2Q7UUFFRCxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQTVGRCwrQkE0RkMifQ==
@@ -1,10 +1,10 @@
1
1
  import { ActionDefinition, Operator, OperatorReplacer, PartialRelationSchema, PlainSortClause, SegmentDefinition, WriteDefinition } from '@forestadmin/datasource-toolkit';
2
2
  import { FieldDefinition } from './types';
3
- import AgentBuilder from './agent';
3
+ import DecoratorsStack from './decorators-stack';
4
4
  export default class CollectionBuilder {
5
- private agentBuilder;
6
5
  private readonly name;
7
- constructor(agentBuilder: AgentBuilder, name: string);
6
+ private readonly stack;
7
+ constructor(stack: DecoratorsStack, name: string);
8
8
  /**
9
9
  * Import a field from a many to one or one to one relation.
10
10
  *
@@ -19,23 +19,23 @@ export default class CollectionBuilder {
19
19
  }): this;
20
20
  /**
21
21
  * Allow to rename a field of a given collection.
22
- * @param {string} oldName the current name of the field in a given collection
23
- * @param {string} newName the new name of the field
22
+ * @param oldName the current name of the field in a given collection
23
+ * @param newName the new name of the field
24
24
  * @example
25
25
  * .renameField('theCurrentNameOfTheField', 'theNewNameOfTheField');
26
26
  */
27
27
  renameField(oldName: string, newName: string): this;
28
28
  /**
29
29
  * Remove field by setting its visibility to false.
30
- * @param {...string[]} names the fields to remove
30
+ * @param names the fields to remove
31
31
  * @example
32
32
  * .removeField('aFieldToRemove', 'anOtherFieldToRemove');
33
33
  */
34
34
  removeField(...names: string[]): this;
35
35
  /**
36
36
  * Add a new action on the collection.
37
- * @param {string} name the name of the action
38
- * @param {ActionDefinition} definition the definition of the action
37
+ * @param name the name of the action
38
+ * @param definition the definition of the action
39
39
  * @example
40
40
  * .addAction('is live', {
41
41
  * scope: 'Single',
@@ -47,8 +47,8 @@ export default class CollectionBuilder {
47
47
  addAction(name: string, definition: ActionDefinition): this;
48
48
  /**
49
49
  * Add a new field on the collection.
50
- * @param {string} name the name of the field
51
- * @param {FieldDefinition} definition The definition of the field
50
+ * @param name the name of the field
51
+ * @param definition The definition of the field
52
52
  * @example
53
53
  * .addField('fullName', {
54
54
  * columnType: 'String',
@@ -71,8 +71,8 @@ export default class CollectionBuilder {
71
71
  addRelation(name: string, definition: PartialRelationSchema): this;
72
72
  /**
73
73
  * Add a new segment on the collection.
74
- * @param {string} name the name of the segment
75
- * @param {SegmentDefinition} definition a function used to generate a condition tree
74
+ * @param name the name of the segment
75
+ * @param definition a function used to generate a condition tree
76
76
  * or a condition tree
77
77
  * @example
78
78
  * .addSegment(
@@ -84,7 +84,7 @@ export default class CollectionBuilder {
84
84
  /**
85
85
  * Enable sorting on a specific field using emulation.
86
86
  * As for all the emulation method, the field sorting will be done in-memory.
87
- * @param {string} name the name of the field to enable emulation on
87
+ * @param name the name of the field to enable emulation on
88
88
  * @example
89
89
  * .emulateFieldSorting('fullName');
90
90
  */
@@ -92,8 +92,8 @@ export default class CollectionBuilder {
92
92
  /**
93
93
  * Replace an implementation for the sorting.
94
94
  * The field sorting will be done by the datasource.
95
- * @param {string} name the name of the field to enable sort
96
- * @param {SortClause[]} equivalentSort the sort equivalent
95
+ * @param name the name of the field to enable sort
96
+ * @param equivalentSort the sort equivalent
97
97
  * @example
98
98
  * .replaceFieldSorting(
99
99
  * 'fullName',
@@ -115,8 +115,8 @@ export default class CollectionBuilder {
115
115
  /**
116
116
  * Enable filtering on a specific field with a specific operator using emulation.
117
117
  * As for all the emulation method, the field filtering will be done in-memory.
118
- * @param {string} name the name of the field to enable emulation on
119
- * @param {Operator} operator the operator to emulate
118
+ * @param name the name of the field to enable emulation on
119
+ * @param operator the operator to emulate
120
120
  * @example
121
121
  * .emulateFieldOperator('aField', 'In');
122
122
  */
@@ -124,9 +124,9 @@ export default class CollectionBuilder {
124
124
  /**
125
125
  * Replace an implementation for a specific operator on a specific field.
126
126
  * The operator replacement will be done by the datasource.
127
- * @param {string} name the name of the field to filter on
128
- * @param {Operator} operator the operator to replace
129
- * @param {OperatorReplacer} replacer the proposed implementation
127
+ * @param name the name of the field to filter on
128
+ * @param operator the operator to replace
129
+ * @param replacer the proposed implementation
130
130
  * @example
131
131
  * .replaceFieldOperator('booksCount', 'Equal', ({ value }) => new ConditionTreeNot(
132
132
  * new ConditionTreeLeaf('booksCount', 'Equal', value),
@@ -135,10 +135,10 @@ export default class CollectionBuilder {
135
135
  replaceFieldOperator(name: string, operator: Operator, replacer: OperatorReplacer): this;
136
136
  /**
137
137
  * Replace the write behavior of a field.
138
- * @param {string} name the name of the field
139
- * @param {WriteDefinition} definition the function or a value to represent the write behavior
138
+ * @param name the name of the field
139
+ * @param definition the function or a value to represent the write behavior
140
140
  * @example
141
- * .replaceFieldWriting('fullName', ({ patch: fullName }) => {
141
+ * .replaceFieldWriting('fullName', fullName => {
142
142
  * const [firstName, lastName] = fullName.split(' ');
143
143
  * return { firstName, lastName };
144
144
  * });