@forestadmin/agent 1.0.0-beta.12 → 1.0.0-beta.13
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 +7 -0
- package/dist/agent/utils/http-driver-options.js +3 -3
- package/dist/builder/agent.d.ts +5 -18
- package/dist/builder/agent.js +8 -30
- package/dist/builder/collection.d.ts +3 -3
- package/dist/builder/collection.js +21 -23
- package/dist/builder/decorators-stack.d.ts +20 -0
- package/dist/builder/decorators-stack.js +33 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# @forestadmin/agent [1.0.0-beta.13](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.12...@forestadmin/agent@1.0.0-beta.13) (2022-04-27)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* typos in message at startup ([#270](https://github.com/ForestAdmin/agent-nodejs/issues/270)) ([9fe940a](https://github.com/ForestAdmin/agent-nodejs/commit/9fe940a40da153d2f4ab8674daee1d62c8df6fbf))
|
|
7
|
+
|
|
1
8
|
# @forestadmin/agent [1.0.0-beta.12](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.11...@forestadmin/agent@1.0.0-beta.12) (2022-04-27)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -52,8 +52,8 @@ class OptionsUtils {
|
|
|
52
52
|
'(i.e. "OfpssLrbgF3P4vHJTTpb"');
|
|
53
53
|
}
|
|
54
54
|
if (options.clientId === null) {
|
|
55
|
-
options.logger?.('Warn', 'options.clientId was not provided. Using
|
|
56
|
-
'or multiple instances of the agent
|
|
55
|
+
options.logger?.('Warn', 'options.clientId was not provided. Using Node.js cluster mode, ' +
|
|
56
|
+
'or multiple instances of the agent will break authentication');
|
|
57
57
|
}
|
|
58
58
|
else if (typeof options.clientId !== 'string') {
|
|
59
59
|
throw new Error('options.clientId is invalid.');
|
|
@@ -92,4 +92,4 @@ OptionsUtils.loggerPrefix = {
|
|
|
92
92
|
Warn: '\x1b[33mwarning:\x1b[0m',
|
|
93
93
|
Error: '\x1b[31merror:\x1b[0m',
|
|
94
94
|
};
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kcml2ZXItb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZ2VudC91dGlscy9odHRwLWRyaXZlci1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkJBQWdDO0FBQ2hDLCtCQUEwQztBQUsxQyxNQUFxQixZQUFZO0lBUS9CLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBcUI7UUFDdkMsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBRW5DLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO1lBQ2xELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTlDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUN4RCxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDdkQ7UUFDSCxDQUFDLENBQUM7UUFFRixXQUFXLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLElBQUksYUFBYSxDQUFDO1FBQ3pELFdBQVcsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsSUFBSSwwQkFBMEIsQ0FBQztRQUM5RSxXQUFXLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxlQUFlLElBQUksNkJBQTZCLENBQUM7UUFFM0YsT0FBaUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUM3QyxRQUFRLEVBQUUsSUFBSTtZQUNkLFdBQVcsRUFBRSxNQUFNO1lBQ25CLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLGlDQUFpQyxFQUFFLEVB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
|
package/dist/builder/agent.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DataSourceFactory } from '@forestadmin/datasource-toolkit';
|
|
2
2
|
import { AgentOptions } from '../types';
|
|
3
3
|
import CollectionBuilder from './collection';
|
|
4
|
-
import
|
|
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.
|
|
@@ -13,22 +13,9 @@ import ForestAdminHttpDriver, { HttpCallback } from '../agent/forestadmin-http-d
|
|
|
13
13
|
* .start();
|
|
14
14
|
*/
|
|
15
15
|
export default class AgentBuilder {
|
|
16
|
-
forestAdminHttpDriver
|
|
17
|
-
compositeDatasource
|
|
18
|
-
|
|
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;
|
|
32
19
|
private tasks;
|
|
33
20
|
/**
|
|
34
21
|
* Native nodejs HttpCallback object
|
package/dist/builder/agent.js
CHANGED
|
@@ -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.
|
|
@@ -36,32 +37,9 @@ class AgentBuilder {
|
|
|
36
37
|
*/
|
|
37
38
|
constructor(options) {
|
|
38
39
|
this.tasks = [];
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
// Step 1: Computed-Relation-Computed sandwich (needed because some emulated relations depend
|
|
43
|
-
// on computed fields, and some computed fields depend on relation...)
|
|
44
|
-
// Note that replacement goes before emulation, as replacements may use emulated operators.
|
|
45
|
-
last = this.earlyComputed = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.ComputedCollectionDecorator);
|
|
46
|
-
last = this.earlyOpEmulate = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.OperatorsEmulateCollectionDecorator);
|
|
47
|
-
last = this.earlyOpReplace = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.OperatorsReplaceCollectionDecorator);
|
|
48
|
-
last = this.relation = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.RelationCollectionDecorator);
|
|
49
|
-
last = this.lateComputed = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.ComputedCollectionDecorator);
|
|
50
|
-
last = this.lateOpEmulate = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.OperatorsEmulateCollectionDecorator);
|
|
51
|
-
last = this.lateOpReplace = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.OperatorsReplaceCollectionDecorator);
|
|
52
|
-
// Step 2: Those four need access to all fields. They can be loaded in any order.
|
|
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.publication = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.PublicationCollectionDecorator);
|
|
62
|
-
last = this.rename = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.RenameCollectionDecorator);
|
|
63
|
-
/* eslint-enable no-multi-assign */
|
|
64
|
-
this.forestAdminHttpDriver = new forestadmin_http_driver_1.default(last, options);
|
|
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);
|
|
65
43
|
}
|
|
66
44
|
/**
|
|
67
45
|
* Native nodejs HttpCallback object
|
|
@@ -96,8 +74,8 @@ class AgentBuilder {
|
|
|
96
74
|
*/
|
|
97
75
|
customizeCollection(name, handle) {
|
|
98
76
|
this.tasks.push(async () => {
|
|
99
|
-
if (this.
|
|
100
|
-
handle(new collection_1.default(this, name));
|
|
77
|
+
if (this.stack.dataSource.getCollection(name)) {
|
|
78
|
+
handle(new collection_1.default(this.stack, name));
|
|
101
79
|
}
|
|
102
80
|
});
|
|
103
81
|
return this;
|
|
@@ -110,7 +88,7 @@ class AgentBuilder {
|
|
|
110
88
|
// eslint-disable-next-line no-await-in-loop
|
|
111
89
|
await task();
|
|
112
90
|
}
|
|
113
|
-
|
|
91
|
+
await this.forestAdminHttpDriver.start();
|
|
114
92
|
}
|
|
115
93
|
/**
|
|
116
94
|
* Stop the agent gracefully.
|
|
@@ -120,4 +98,4 @@ class AgentBuilder {
|
|
|
120
98
|
}
|
|
121
99
|
}
|
|
122
100
|
exports.default = AgentBuilder;
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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
|
|
3
|
+
import DecoratorsStack from './decorators-stack';
|
|
4
4
|
export default class CollectionBuilder {
|
|
5
|
-
private agentBuilder;
|
|
6
5
|
private readonly name;
|
|
7
|
-
|
|
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
|
*
|
|
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
7
7
|
const filterable_1 = __importDefault(require("../agent/utils/forest-schema/filterable"));
|
|
8
8
|
class CollectionBuilder {
|
|
9
|
-
constructor(
|
|
10
|
-
this.agentBuilder = agentBuilder;
|
|
9
|
+
constructor(stack, name) {
|
|
11
10
|
this.name = name;
|
|
11
|
+
this.stack = stack;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Import a field from a many to one or one to one relation.
|
|
@@ -19,7 +19,7 @@ class CollectionBuilder {
|
|
|
19
19
|
* .importField('authorName', { path: 'author:fullName' })
|
|
20
20
|
*/
|
|
21
21
|
importField(name, options) {
|
|
22
|
-
const collection = this.
|
|
22
|
+
const collection = this.stack.lateComputed.getCollection(this.name);
|
|
23
23
|
const schema = datasource_toolkit_1.CollectionUtils.getFieldSchema(collection, options.path);
|
|
24
24
|
this.addField(name, {
|
|
25
25
|
beforeRelations: options.beforeRelations,
|
|
@@ -46,7 +46,7 @@ class CollectionBuilder {
|
|
|
46
46
|
* .renameField('theCurrentNameOfTheField', 'theNewNameOfTheField');
|
|
47
47
|
*/
|
|
48
48
|
renameField(oldName, newName) {
|
|
49
|
-
this.
|
|
49
|
+
this.stack.rename.getCollection(this.name).renameField(oldName, newName);
|
|
50
50
|
return this;
|
|
51
51
|
}
|
|
52
52
|
/**
|
|
@@ -56,7 +56,7 @@ class CollectionBuilder {
|
|
|
56
56
|
* .removeField('aFieldToRemove', 'anOtherFieldToRemove');
|
|
57
57
|
*/
|
|
58
58
|
removeField(...names) {
|
|
59
|
-
const collection = this.
|
|
59
|
+
const collection = this.stack.publication.getCollection(this.name);
|
|
60
60
|
for (const name of names)
|
|
61
61
|
collection.changeFieldVisibility(name, false);
|
|
62
62
|
return this;
|
|
@@ -74,7 +74,7 @@ class CollectionBuilder {
|
|
|
74
74
|
* })
|
|
75
75
|
*/
|
|
76
76
|
addAction(name, definition) {
|
|
77
|
-
this.
|
|
77
|
+
this.stack.action.getCollection(this.name).addAction(name, definition);
|
|
78
78
|
return this;
|
|
79
79
|
}
|
|
80
80
|
/**
|
|
@@ -91,8 +91,8 @@ class CollectionBuilder {
|
|
|
91
91
|
addField(name, definition) {
|
|
92
92
|
const { beforeRelations, ...computedDefinition } = definition;
|
|
93
93
|
const collection = definition.beforeRelations
|
|
94
|
-
? this.
|
|
95
|
-
: this.
|
|
94
|
+
? this.stack.earlyComputed.getCollection(this.name)
|
|
95
|
+
: this.stack.lateComputed.getCollection(this.name);
|
|
96
96
|
collection.registerComputed(name, computedDefinition);
|
|
97
97
|
return this;
|
|
98
98
|
}
|
|
@@ -108,7 +108,7 @@ class CollectionBuilder {
|
|
|
108
108
|
* });
|
|
109
109
|
*/
|
|
110
110
|
addRelation(name, definition) {
|
|
111
|
-
this.
|
|
111
|
+
this.stack.relation.getCollection(this.name).addRelation(name, definition);
|
|
112
112
|
return this;
|
|
113
113
|
}
|
|
114
114
|
/**
|
|
@@ -123,7 +123,7 @@ class CollectionBuilder {
|
|
|
123
123
|
* );
|
|
124
124
|
*/
|
|
125
125
|
addSegment(name, definition) {
|
|
126
|
-
this.
|
|
126
|
+
this.stack.segment.getCollection(this.name).addSegment(name, definition);
|
|
127
127
|
return this;
|
|
128
128
|
}
|
|
129
129
|
/**
|
|
@@ -134,7 +134,7 @@ class CollectionBuilder {
|
|
|
134
134
|
* .emulateFieldSorting('fullName');
|
|
135
135
|
*/
|
|
136
136
|
emulateFieldSorting(name) {
|
|
137
|
-
this.
|
|
137
|
+
this.stack.sortEmulate.getCollection(this.name).emulateFieldSorting(name);
|
|
138
138
|
return this;
|
|
139
139
|
}
|
|
140
140
|
/**
|
|
@@ -152,9 +152,7 @@ class CollectionBuilder {
|
|
|
152
152
|
* )
|
|
153
153
|
*/
|
|
154
154
|
replaceFieldSorting(name, equivalentSort) {
|
|
155
|
-
this.
|
|
156
|
-
.getCollection(this.name)
|
|
157
|
-
.replaceFieldSorting(name, equivalentSort);
|
|
155
|
+
this.stack.sortEmulate.getCollection(this.name).replaceFieldSorting(name, equivalentSort);
|
|
158
156
|
return this;
|
|
159
157
|
}
|
|
160
158
|
/**
|
|
@@ -165,7 +163,7 @@ class CollectionBuilder {
|
|
|
165
163
|
* .emulateFieldFiltering('aField');
|
|
166
164
|
*/
|
|
167
165
|
emulateFieldFiltering(name) {
|
|
168
|
-
const collection = this.
|
|
166
|
+
const collection = this.stack.lateOpEmulate.getCollection(this.name);
|
|
169
167
|
const field = collection.schema.fields[name];
|
|
170
168
|
for (const operator of filterable_1.default.getRequiredOperators(field.columnType)) {
|
|
171
169
|
if (!field.filterOperators?.has(operator)) {
|
|
@@ -183,9 +181,9 @@ class CollectionBuilder {
|
|
|
183
181
|
* .emulateFieldOperator('aField', 'In');
|
|
184
182
|
*/
|
|
185
183
|
emulateFieldOperator(name, operator) {
|
|
186
|
-
const collection = this.
|
|
187
|
-
? this.
|
|
188
|
-
: this.
|
|
184
|
+
const collection = this.stack.earlyOpEmulate.getCollection(this.name).schema.fields[name]
|
|
185
|
+
? this.stack.earlyOpEmulate.getCollection(this.name)
|
|
186
|
+
: this.stack.lateOpEmulate.getCollection(this.name);
|
|
189
187
|
collection.emulateFieldOperator(name, operator);
|
|
190
188
|
return this;
|
|
191
189
|
}
|
|
@@ -201,9 +199,9 @@ class CollectionBuilder {
|
|
|
201
199
|
* ));
|
|
202
200
|
*/
|
|
203
201
|
replaceFieldOperator(name, operator, replacer) {
|
|
204
|
-
const collection = this.
|
|
205
|
-
? this.
|
|
206
|
-
: this.
|
|
202
|
+
const collection = this.stack.earlyOpEmulate.getCollection(this.name).schema.fields[name]
|
|
203
|
+
? this.stack.earlyOpEmulate.getCollection(this.name)
|
|
204
|
+
: this.stack.lateOpEmulate.getCollection(this.name);
|
|
207
205
|
collection.replaceFieldOperator(name, operator, replacer);
|
|
208
206
|
return this;
|
|
209
207
|
}
|
|
@@ -218,9 +216,9 @@ class CollectionBuilder {
|
|
|
218
216
|
* });
|
|
219
217
|
*/
|
|
220
218
|
replaceFieldWriting(name, definition) {
|
|
221
|
-
this.
|
|
219
|
+
this.stack.write.getCollection(this.name).replaceFieldWriting(name, definition);
|
|
222
220
|
return this;
|
|
223
221
|
}
|
|
224
222
|
}
|
|
225
223
|
exports.default = CollectionBuilder;
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVyL2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFXeUM7QUFHekMseUZBQThFO0FBRTlFLE1BQXFCLGlCQUFpQjtJQUlwQyxZQUFZLEtBQXNCLEVBQUUsSUFBWTtRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFdBQVcsQ0FBQyxJQUFZLEVBQUUsT0FBb0Q7UUFDNUUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxvQ0FBZSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBaUIsQ0FBQztRQUV4RixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtZQUNsQixlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7WUFDeEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1lBQzdCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtZQUNqQyxZQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQzVCLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxnQ0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xGLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtTQUM5QixDQUFDLENBQUM7UUFFSCxLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUU7WUFDN0MsTUFBTSxPQUFP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
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ActionCollectionDecorator, ComputedCollectionDecorator, DataSource, DataSourceDecorator, OperatorsEmulateCollectionDecorator, OperatorsReplaceCollectionDecorator, PublicationCollectionDecorator, RelationCollectionDecorator, RenameCollectionDecorator, SearchCollectionDecorator, SegmentCollectionDecorator, SortEmulateCollectionDecorator, WriteCollectionDecorator } from '@forestadmin/datasource-toolkit';
|
|
2
|
+
export default class DecoratorsStack {
|
|
3
|
+
action: DataSourceDecorator<ActionCollectionDecorator>;
|
|
4
|
+
earlyComputed: DataSourceDecorator<ComputedCollectionDecorator>;
|
|
5
|
+
earlyOpEmulate: DataSourceDecorator<OperatorsEmulateCollectionDecorator>;
|
|
6
|
+
earlyOpReplace: DataSourceDecorator<OperatorsReplaceCollectionDecorator>;
|
|
7
|
+
relation: DataSourceDecorator<RelationCollectionDecorator>;
|
|
8
|
+
lateComputed: DataSourceDecorator<ComputedCollectionDecorator>;
|
|
9
|
+
lateOpEmulate: DataSourceDecorator<OperatorsEmulateCollectionDecorator>;
|
|
10
|
+
lateOpReplace: DataSourceDecorator<OperatorsReplaceCollectionDecorator>;
|
|
11
|
+
publication: DataSourceDecorator<PublicationCollectionDecorator>;
|
|
12
|
+
rename: DataSourceDecorator<RenameCollectionDecorator>;
|
|
13
|
+
search: DataSourceDecorator<SearchCollectionDecorator>;
|
|
14
|
+
segment: DataSourceDecorator<SegmentCollectionDecorator>;
|
|
15
|
+
sortEmulate: DataSourceDecorator<SortEmulateCollectionDecorator>;
|
|
16
|
+
write: DataSourceDecorator<WriteCollectionDecorator>;
|
|
17
|
+
dataSource: DataSource;
|
|
18
|
+
constructor(dataSource: DataSource);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=decorators-stack.d.ts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
4
|
+
class DecoratorsStack {
|
|
5
|
+
constructor(dataSource) {
|
|
6
|
+
/* eslint-disable no-multi-assign */
|
|
7
|
+
// Step 1: Computed-Relation-Computed sandwich (needed because some emulated relations depend
|
|
8
|
+
// on computed fields, and some computed fields depend on relation...)
|
|
9
|
+
// 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);
|
|
11
|
+
this.dataSource = this.earlyOpEmulate = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.OperatorsEmulateCollectionDecorator);
|
|
12
|
+
this.dataSource = this.earlyOpReplace = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.OperatorsReplaceCollectionDecorator);
|
|
13
|
+
this.dataSource = this.relation = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.RelationCollectionDecorator);
|
|
14
|
+
this.dataSource = this.lateComputed = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.ComputedCollectionDecorator);
|
|
15
|
+
this.dataSource = this.lateOpEmulate = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.OperatorsEmulateCollectionDecorator);
|
|
16
|
+
this.dataSource = this.lateOpReplace = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.OperatorsReplaceCollectionDecorator);
|
|
17
|
+
// Step 2: Those four need access to all fields. They can be loaded in any order.
|
|
18
|
+
this.dataSource = this.search = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.SearchCollectionDecorator);
|
|
19
|
+
this.dataSource = this.segment = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.SegmentCollectionDecorator);
|
|
20
|
+
this.dataSource = this.sortEmulate = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.SortEmulateCollectionDecorator);
|
|
21
|
+
this.dataSource = this.write = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.WriteCollectionDecorator);
|
|
22
|
+
// Step 3: Access to all fields AND emulated capabilities
|
|
23
|
+
this.dataSource = this.action = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.ActionCollectionDecorator);
|
|
24
|
+
// Step 4: Renaming must be either the very first or very
|
|
25
|
+
// this.dataSource so that naming in customer code
|
|
26
|
+
// is consistent.
|
|
27
|
+
this.dataSource = this.publication = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.PublicationCollectionDecorator);
|
|
28
|
+
this.dataSource = this.rename = new datasource_toolkit_1.DataSourceDecorator(this.dataSource, datasource_toolkit_1.RenameCollectionDecorator);
|
|
29
|
+
/* eslint-enable no-multi-assign */
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.default = DecoratorsStack;
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVyL2RlY29yYXRvcnMtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3RUFjeUM7QUFFekMsTUFBcUIsZUFBZTtJQWtCbEMsWUFBWSxVQUFzQjtRQUNoQyxvQ0FBb0M7UUFDcEMsNkZBQTZGO1FBQzdGLHNFQUFzRTtRQUN0RSwyRkFBMkY7UUFDM0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksd0NBQW1CLENBQzVELFVBQVUsRUFDVixnREFBMkIsQ0FDNUIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHdDQUFtQixDQUM3RCxJQUFJLENBQUMsVUFBVSxFQUNmLHdEQUFtQyxDQUNwQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksd0NBQW1CLENBQzdELElBQUksQ0FBQyxVQUFVLEVBQ2Ysd0RBQW1DLENBQ3BDLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDdkQsSUFBSSxDQUFDLFVBQVUsRUFDZixnREFBMkIsQ0FDNUIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHdDQUFtQixDQUMzRCxJQUFJLENBQUMsVUFBVSxFQUNmLGdEQUEyQixDQUM1QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksd0NBQW1CLENBQzVELElBQUksQ0FBQyxVQUFVLEVBQ2Ysd0RBQW1DLENBQ3BDLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDNUQsSUFBSSxDQUFDLFVBQVUsRUFDZix3REFBbUMsQ0FDcEMsQ0FBQztRQUVGLGlGQUFpRjtRQUNqRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDckQsSUFBSSxDQUFDLFVBQVUsRUFDZiw4Q0FBeUIsQ0FDMUIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHdDQUFtQixDQUN0RCxJQUFJLENBQUMsVUFBVSxFQUNmLCtDQUEwQixDQUMzQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksd0NBQW1CLENBQzFELElBQUksQ0FBQyxVQUFVLEVBQ2YsbURBQThCLENBQy9CLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDcEQsSUFBSSxDQUFDLFVBQVUsRUFDZiw2Q0FBd0IsQ0FDekIsQ0FBQztRQUVGLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSx3Q0FBbUIsQ0FDckQsSUFBSSxDQUFDLFVBQVUsRUFDZiw4Q0FBeUIsQ0FDMUIsQ0FBQztRQUVGLHlEQUF5RDtRQUN6RCxrREFBa0Q7UUFDbEQsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHdDQUFtQixDQUMxRCxJQUFJLENBQUMsVUFBVSxFQUNmLG1EQUE4QixDQUMvQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksd0NBQW1CLENBQ3JELElBQUksQ0FBQyxVQUFVLEVBQ2YsOENBQXlCLENBQzFCLENBQUM7UUFDRixtQ0FBbUM7SUFDckMsQ0FBQztDQUNGO0FBekZELGtDQXlGQyJ9
|