@forestadmin/agent 1.0.0-beta.22 → 1.0.0-beta.25
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 +34 -0
- package/dist/agent/forestadmin-http-driver.js +28 -17
- package/dist/agent/routes/access/api-chart.d.ts +16 -0
- package/dist/agent/routes/access/api-chart.js +45 -0
- package/dist/agent/routes/index.js +8 -1
- package/dist/agent/utils/forest-http-api.d.ts +1 -0
- package/dist/agent/utils/forest-http-api.js +58 -50
- package/dist/agent/utils/forest-schema/generator-fields.d.ts +1 -0
- package/dist/agent/utils/forest-schema/generator-fields.js +15 -2
- package/dist/agent/utils/forest-schema/types.d.ts +9 -3
- package/dist/agent/utils/forest-schema/types.js +1 -1
- package/dist/builder/agent.d.ts +14 -1
- package/dist/builder/agent.js +19 -1
- package/dist/builder/collection.d.ts +66 -12
- package/dist/builder/collection.js +87 -12
- package/dist/builder/decorators-stack.d.ts +2 -1
- package/dist/builder/decorators-stack.js +3 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,37 @@
|
|
|
1
|
+
# @forestadmin/agent [1.0.0-beta.25](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.24...@forestadmin/agent@1.0.0-beta.25) (2022-05-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **builder:** create one method per relation type in the collection customizer ([#302](https://github.com/ForestAdmin/agent-nodejs/issues/302)) ([df5438d](https://github.com/ForestAdmin/agent-nodejs/commit/df5438d641bd8c4f8ad7c114120189d9dda26c44))
|
|
7
|
+
|
|
8
|
+
# @forestadmin/agent [1.0.0-beta.24](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.23...@forestadmin/agent@1.0.0-beta.24) (2022-05-16)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **onboarding:** display better errors when the agent fails to start ([#294](https://github.com/ForestAdmin/agent-nodejs/issues/294)) ([03f756b](https://github.com/ForestAdmin/agent-nodejs/commit/03f756b9964ba5970d7f5be37b47956fbcf9c5f7))
|
|
14
|
+
|
|
15
|
+
# @forestadmin/agent [1.0.0-beta.23](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.22...@forestadmin/agent@1.0.0-beta.23) (2022-05-12)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* **schema:** broken generation for composite types ([#291](https://github.com/ForestAdmin/agent-nodejs/issues/291)) ([b1cb7e8](https://github.com/ForestAdmin/agent-nodejs/commit/b1cb7e86070acce0dc303f54c8d400d870e705a9))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
|
|
25
|
+
* implement api-charts ([#284](https://github.com/ForestAdmin/agent-nodejs/issues/284)) ([5917b8c](https://github.com/ForestAdmin/agent-nodejs/commit/5917b8cf645998cd3c0d750310cd81920b250e71))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Dependencies
|
|
32
|
+
|
|
33
|
+
* **@forestadmin/datasource-toolkit:** upgraded to 1.0.0-beta.15
|
|
34
|
+
|
|
1
35
|
# @forestadmin/agent [1.0.0-beta.22](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.21...@forestadmin/agent@1.0.0-beta.22) (2022-05-09)
|
|
2
36
|
|
|
3
37
|
|
|
@@ -39,23 +39,34 @@ class ForestAdminHttpDriver {
|
|
|
39
39
|
if (this.status !== 'waiting') {
|
|
40
40
|
throw new Error('Agent cannot be restarted.');
|
|
41
41
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
42
|
+
try {
|
|
43
|
+
this.status = 'running';
|
|
44
|
+
// Build http application
|
|
45
|
+
const router = new router_1.default({ prefix: path_1.default.join('/', this.options.prefix) });
|
|
46
|
+
this.routes = (0, routes_1.default)(this.dataSource, this.options, this.services);
|
|
47
|
+
this.routes.forEach(route => route.setupRoutes(router));
|
|
48
|
+
await Promise.all(this.routes.map(route => route.bootstrap()));
|
|
49
|
+
this.app
|
|
50
|
+
.use((0, cors_1.default)({ credentials: true, maxAge: 24 * 3600, privateNetworkAccess: true }))
|
|
51
|
+
.use((0, koa_bodyparser_1.default)({ jsonLimit: '50mb' }))
|
|
52
|
+
.use(router.routes());
|
|
53
|
+
// Send schema to forestadmin-server (if relevant).
|
|
54
|
+
const schema = await emitter_1.default.getSerializedSchema(this.options, this.dataSource);
|
|
55
|
+
const schemaIsKnown = await forest_http_api_1.default.hasSchema(this.options, schema.meta.schemaFileHash);
|
|
56
|
+
if (!schemaIsKnown) {
|
|
57
|
+
this.options.logger('Info', 'Schema was updated, sending new version');
|
|
58
|
+
await forest_http_api_1.default.uploadSchema(this.options, schema);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.options.logger('Info', 'Schema was not updated since last run');
|
|
62
|
+
}
|
|
63
|
+
this.options.logger('Info', 'Started');
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
this.options.logger('Error', e.message);
|
|
67
|
+
this.status = 'done';
|
|
68
|
+
throw e;
|
|
57
69
|
}
|
|
58
|
-
this.options?.logger('Info', 'Started');
|
|
59
70
|
}
|
|
60
71
|
/**
|
|
61
72
|
* Tear down all routes (close open sockets, ...)
|
|
@@ -69,4 +80,4 @@ class ForestAdminHttpDriver {
|
|
|
69
80
|
}
|
|
70
81
|
}
|
|
71
82
|
exports.default = ForestAdminHttpDriver;
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0YWRtaW4taHR0cC1kcml2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWdlbnQvZm9yZXN0YWRtaW4taHR0cC1kcml2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSw4Q0FBc0I7QUFDdEIseURBQWlDO0FBQ2pDLG9FQUF3QztBQUN4QyxxREFBNkI7QUFDN0IsZ0RBQXdCO0FBS3hCLDhFQUFvRDtBQUNwRCxzRkFBdUQ7QUFDdkQsNEVBQTBEO0FBQzFELHNEQUFrQztBQUNsQywwREFBeUU7QUFLekUsTUFBcUIscUJBQXFCO0lBa0J4QyxZQUFZLFVBQXNCLEVBQUUsT0FBcUI7UUFkbEQsV0FBTSxHQUFnQixFQUFFLENBQUM7UUFFZixRQUFHLEdBQUcsSUFBSSxhQUFHLEVBQUUsQ0FBQztRQUN6QixXQUFNLEdBQW1DLFNBQVMsQ0FBQztRQVl6RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLDZCQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBQSxrQkFBWSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUzQyw2QkFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQWZEOzs7O09BSUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQVVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDL0M7UUFFRCxJQUFJO1lBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFFeEIs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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="koa__router" />
|
|
2
|
+
import { DataSource } from '@forestadmin/datasource-toolkit';
|
|
3
|
+
import Router from '@koa/router';
|
|
4
|
+
import { AgentOptionsWithDefaults, RouteType } from '../../types';
|
|
5
|
+
import { ForestAdminHttpDriverServices } from '../../services';
|
|
6
|
+
import BaseRoute from '../base-route';
|
|
7
|
+
export default class ApiChartRoute extends BaseRoute {
|
|
8
|
+
readonly type = RouteType.PrivateRoute;
|
|
9
|
+
private dataSource;
|
|
10
|
+
private chartName;
|
|
11
|
+
constructor(services: ForestAdminHttpDriverServices, options: AgentOptionsWithDefaults, dataSource: DataSource, chartName: string);
|
|
12
|
+
setupRoutes(router: Router): void;
|
|
13
|
+
private handleApiChart;
|
|
14
|
+
private handleSmartChart;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=api-chart.d.ts.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const uuid_1 = require("uuid");
|
|
7
|
+
const types_1 = require("../../types");
|
|
8
|
+
const base_route_1 = __importDefault(require("../base-route"));
|
|
9
|
+
const query_string_1 = __importDefault(require("../../utils/query-string"));
|
|
10
|
+
class ApiChartRoute extends base_route_1.default {
|
|
11
|
+
constructor(services, options, dataSource, chartName) {
|
|
12
|
+
super(services, options);
|
|
13
|
+
this.type = types_1.RouteType.PrivateRoute;
|
|
14
|
+
this.dataSource = dataSource;
|
|
15
|
+
this.chartName = chartName;
|
|
16
|
+
}
|
|
17
|
+
setupRoutes(router) {
|
|
18
|
+
// Mount both GET and POST, respectively for smart and api charts.
|
|
19
|
+
const path = `/_charts/${this.chartName}`;
|
|
20
|
+
router.get(path, this.handleSmartChart.bind(this));
|
|
21
|
+
router.post(path, this.handleApiChart.bind(this));
|
|
22
|
+
// Log the route to help the customer fill the url in the frontend
|
|
23
|
+
if (!this.options.isProduction) {
|
|
24
|
+
this.options.logger('Info', `Chart '${this.chartName}' was mounted at '${this.options.prefix}${path}'`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async handleApiChart(context) {
|
|
28
|
+
// Api Charts need the data to be formatted in JSON-API
|
|
29
|
+
context.response.body = {
|
|
30
|
+
data: {
|
|
31
|
+
id: (0, uuid_1.v1)(),
|
|
32
|
+
type: 'stats',
|
|
33
|
+
attributes: {
|
|
34
|
+
value: await this.dataSource.renderChart(query_string_1.default.parseCaller(context), this.chartName),
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
async handleSmartChart(context) {
|
|
40
|
+
// Smart charts need the data to be unformatted
|
|
41
|
+
context.response.body = await this.dataSource.renderChart(query_string_1.default.parseCaller(context), this.chartName);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.default = ApiChartRoute;
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FnZW50L3JvdXRlcy9hY2Nlc3MvYXBpLWNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsK0JBQW9DO0FBR3BDLHVDQUFrRTtBQUVsRSwrREFBc0M7QUFDdEMsNEVBQXlEO0FBRXpELE1BQXFCLGFBQWMsU0FBUSxvQkFBUztJQU1sRCxZQUNFLFFBQXVDLEVBQ3ZDLE9BQWlDLEVBQ2pDLFVBQXNCLEVBQ3RCLFNBQWlCO1FBRWpCLEtBQUssQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFYbEIsU0FBSSxHQUFHLGlCQUFTLENBQUMsWUFBWSxDQUFDO1FBYXJDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYztRQUN4QixrRUFBa0U7UUFDbEUsTUFBTSxJQUFJLEdBQUcsWUFBWSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDMUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFbEQsa0VBQWtFO1FBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDakIsTUFBTSxFQUNOLFVBQVUsSUFBSSxDQUFDLFNBQVMscUJBQXFCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxDQUMzRSxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFnQjtRQUMzQyx1REFBdUQ7UUFDdkQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUc7WUFDdEIsSUFBSSxFQUFFO2dCQUNKLEVBQUUsRUFBRSxJQUFBLFNBQU0sR0FBRTtnQkFDWixJQUFJLEVBQUUsT0FBTztnQkFDYixVQUFVLEVBQUU7b0JBQ1YsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQ3RDLHNCQUFpQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FDZjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBZ0I7UUFDN0MsK0NBQStDO1FBQy9DLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQ3ZELHNCQUFpQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FDZixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBeERELGdDQXdEQyJ9
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.RELATED_RELATION_ROUTES_CTOR = exports.RELATED_ROUTES_CTOR = exports.COLLECTION_ROUTES_CTOR = exports.ROOT_ROUTES_CTOR = void 0;
|
|
7
7
|
const action_1 = __importDefault(require("./modification/action"));
|
|
8
|
+
const api_chart_1 = __importDefault(require("./access/api-chart"));
|
|
8
9
|
const associate_related_1 = __importDefault(require("./modification/associate-related"));
|
|
9
10
|
const authentication_1 = __importDefault(require("./security/authentication"));
|
|
10
11
|
const chart_1 = __importDefault(require("./access/chart"));
|
|
@@ -45,6 +46,11 @@ exports.RELATED_RELATION_ROUTES_CTOR = [update_relation_1.default];
|
|
|
45
46
|
function getRootRoutes(options, services) {
|
|
46
47
|
return exports.ROOT_ROUTES_CTOR.map(Route => new Route(services, options));
|
|
47
48
|
}
|
|
49
|
+
function getApiChartRoutes(dataSource, options, services) {
|
|
50
|
+
return dataSource.schema.charts.map(chartName => {
|
|
51
|
+
return new api_chart_1.default(services, options, dataSource, chartName);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
48
54
|
function getCrudRoutes(dataSource, options, services) {
|
|
49
55
|
const routes = [];
|
|
50
56
|
dataSource.collections.forEach(collection => {
|
|
@@ -80,6 +86,7 @@ function makeRoutes(dataSource, options, services) {
|
|
|
80
86
|
const routes = [
|
|
81
87
|
...getRootRoutes(options, services),
|
|
82
88
|
...getCrudRoutes(dataSource, options, services),
|
|
89
|
+
...getApiChartRoutes(dataSource, options, services),
|
|
83
90
|
...getRelatedRoutes(dataSource, options, services),
|
|
84
91
|
...getActionRoutes(dataSource, options, services),
|
|
85
92
|
];
|
|
@@ -87,4 +94,4 @@ function makeRoutes(dataSource, options, services) {
|
|
|
87
94
|
return routes.sort((a, b) => a.type - b.type);
|
|
88
95
|
}
|
|
89
96
|
exports.default = makeRoutes;
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWdlbnQvcm91dGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUlBLG1FQUFnRDtBQUNoRCxtRUFBK0M7QUFDL0MseUZBQWdFO0FBQ2hFLCtFQUF1RDtBQUV2RCwyREFBbUM7QUFDbkMsMkRBQW1DO0FBQ25DLDJFQUFrRDtBQUNsRCxtRUFBMkM7QUFDM0MsdURBQStCO0FBQy9CLHVFQUE4QztBQUM5QyxtRUFBMkM7QUFDM0MseUdBQStFO0FBQy9FLDZFQUFvRDtBQUNwRCx1REFBK0I7QUFDL0IsdUVBQStDO0FBQy9DLDJFQUFrRDtBQUNsRCx5REFBaUM7QUFDakMseUVBQWdEO0FBQ2hELDZEQUFxQztBQUNyQyx1RkFBOEQ7QUFDOUQsbUVBQTJDO0FBQzNDLHFGQUE0RDtBQUUvQyxRQUFBLGdCQUFnQixHQUFHO0lBQzlCLHdCQUFjO0lBQ2Qsd0JBQWE7SUFDYixxQkFBVztJQUNYLHNCQUFXO0lBQ1gsZ0JBQU07SUFDTiw0QkFBaUI7Q0FDbEIsQ0FBQztBQUNXLFFBQUEsc0JBQXNCLEdBQUcsQ0FBQyxlQUFLLEVBQUUsZUFBSyxFQUFFLGdCQUFNLEVBQUUsYUFBRyxFQUFFLGdCQUFNLEVBQUUsYUFBRyxFQUFFLGNBQUksRUFBRSxnQkFBTSxDQUFDLENBQUM7QUFDaEYsUUFBQSxtQkFBbUIsR0FBRztJQUNqQywyQkFBZ0I7SUFDaEIsdUJBQVk7SUFDWixxQkFBVTtJQUNWLG1DQUF1QjtJQUN2QixzQkFBVztDQUNaLENBQUM7QUFDVyxRQUFBLDRCQUE0QixHQUFHLENBQUMseUJBQWMsQ0FBQyxDQUFDO0FBRTdELFNBQVMsYUFBYSxDQUFDLE9BQWdCLEVBQUUsUUFBa0I7SUFDekQsT0FBTyx3QkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztB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
|
|
@@ -58,6 +58,7 @@ export default class ForestHttpApi {
|
|
|
58
58
|
private static decodeActionPermissions;
|
|
59
59
|
/** Helper to format permissions into something easy to validate against */
|
|
60
60
|
private static decodeScopePermissions;
|
|
61
|
+
private static handleResponseError;
|
|
61
62
|
}
|
|
62
63
|
export {};
|
|
63
64
|
//# sourceMappingURL=forest-http-api.d.ts.map
|
|
@@ -16,8 +16,8 @@ class ForestHttpApi {
|
|
|
16
16
|
const { attributes } = response.body.data;
|
|
17
17
|
return { isFeatureEnabled: attributes.use_ip_whitelist, ipRules: attributes.rules };
|
|
18
18
|
}
|
|
19
|
-
catch {
|
|
20
|
-
|
|
19
|
+
catch (e) {
|
|
20
|
+
this.handleResponseError(e);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
static async getOpenIdIssuerMetadata(options) {
|
|
@@ -27,8 +27,8 @@ class ForestHttpApi {
|
|
|
27
27
|
.set('forest-secret-key', options.envSecret);
|
|
28
28
|
return response.body;
|
|
29
29
|
}
|
|
30
|
-
catch {
|
|
31
|
-
|
|
30
|
+
catch (e) {
|
|
31
|
+
this.handleResponseError(e);
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
static async getUserInformation(options, renderingId, accessToken) {
|
|
@@ -50,16 +50,21 @@ class ForestHttpApi {
|
|
|
50
50
|
renderingId,
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
|
-
catch {
|
|
54
|
-
|
|
53
|
+
catch (e) {
|
|
54
|
+
this.handleResponseError(e);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
static async hasSchema(options, hash) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
try {
|
|
59
|
+
const response = await superagent_1.default
|
|
60
|
+
.post(new URL('/forest/apimaps/hashcheck', options.forestServerUrl).toString())
|
|
61
|
+
.send({ schemaFileHash: hash })
|
|
62
|
+
.set('forest-secret-key', options.envSecret);
|
|
63
|
+
return !response?.body?.sendSchema;
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
this.handleResponseError(e);
|
|
67
|
+
}
|
|
63
68
|
}
|
|
64
69
|
static async uploadSchema(options, apimap) {
|
|
65
70
|
try {
|
|
@@ -69,48 +74,31 @@ class ForestHttpApi {
|
|
|
69
74
|
.set('forest-secret-key', options.envSecret);
|
|
70
75
|
}
|
|
71
76
|
catch (e) {
|
|
72
|
-
|
|
73
|
-
let message;
|
|
74
|
-
switch (e.response?.status) {
|
|
75
|
-
case 0:
|
|
76
|
-
message = 'Cannot send the apimap to Forest. Are you online?';
|
|
77
|
-
break;
|
|
78
|
-
case 404:
|
|
79
|
-
message =
|
|
80
|
-
'Cannot find the project related to the envSecret you configured. ' +
|
|
81
|
-
'Can you check on Forest that you copied it properly in the Forest initialization?';
|
|
82
|
-
break;
|
|
83
|
-
case 503:
|
|
84
|
-
message =
|
|
85
|
-
'Forest is in maintenance for a few minutes. ' +
|
|
86
|
-
'We are upgrading your experience in the forest. ' +
|
|
87
|
-
'We just need a few more minutes to get it right.';
|
|
88
|
-
break;
|
|
89
|
-
default:
|
|
90
|
-
message =
|
|
91
|
-
'An error occured with the apimap sent to Forest. ' +
|
|
92
|
-
'Please contact support@forestadmin.com for further investigations.';
|
|
93
|
-
}
|
|
94
|
-
throw new Error(message);
|
|
77
|
+
this.handleResponseError(e);
|
|
95
78
|
}
|
|
96
79
|
}
|
|
97
80
|
static async getPermissions(options, renderingId) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
81
|
+
try {
|
|
82
|
+
const { body } = await superagent_1.default
|
|
83
|
+
.get(`${options.forestServerUrl}/liana/v3/permissions`)
|
|
84
|
+
.set('forest-secret-key', options.envSecret)
|
|
85
|
+
.query(`renderingId=${renderingId}`);
|
|
86
|
+
if (!body.meta?.rolesACLActivated) {
|
|
87
|
+
throw new Error('Roles V2 are unsupported');
|
|
88
|
+
}
|
|
89
|
+
const actions = new Set();
|
|
90
|
+
const actionsByUser = {};
|
|
91
|
+
ForestHttpApi.decodeChartPermissions(body?.stats ?? {}, actions);
|
|
92
|
+
ForestHttpApi.decodeActionPermissions(body?.data?.collections ?? {}, actions, actionsByUser);
|
|
93
|
+
return {
|
|
94
|
+
actions,
|
|
95
|
+
actionsByUser,
|
|
96
|
+
scopes: ForestHttpApi.decodeScopePermissions(body?.data?.renderings?.[renderingId] ?? {}),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
this.handleResponseError(e);
|
|
104
101
|
}
|
|
105
|
-
const actions = new Set();
|
|
106
|
-
const actionsByUser = {};
|
|
107
|
-
ForestHttpApi.decodeChartPermissions(body?.stats ?? {}, actions);
|
|
108
|
-
ForestHttpApi.decodeActionPermissions(body?.data?.collections ?? {}, actions, actionsByUser);
|
|
109
|
-
return {
|
|
110
|
-
actions,
|
|
111
|
-
actionsByUser,
|
|
112
|
-
scopes: ForestHttpApi.decodeScopePermissions(body?.data?.renderings?.[renderingId] ?? {}),
|
|
113
|
-
};
|
|
114
102
|
}
|
|
115
103
|
/** Helper to format permissions into something easy to validate against */
|
|
116
104
|
static decodeChartPermissions(chartsByType, actions) {
|
|
@@ -168,6 +156,26 @@ class ForestHttpApi {
|
|
|
168
156
|
}
|
|
169
157
|
return scopes;
|
|
170
158
|
}
|
|
159
|
+
static handleResponseError(e) {
|
|
160
|
+
if (/certificate/i.test(e.message))
|
|
161
|
+
throw new Error('ForestAdmin server TLS certificate cannot be verified. ' +
|
|
162
|
+
'Please check that your system time is set properly.');
|
|
163
|
+
if (e.response) {
|
|
164
|
+
const status = e?.response?.status;
|
|
165
|
+
// 0 == offline, 502 == bad gateway from proxy
|
|
166
|
+
if (status === 0 || status === 502)
|
|
167
|
+
throw new Error('Failed to reach ForestAdmin server. Are you online?');
|
|
168
|
+
if (status === 404)
|
|
169
|
+
throw new Error('ForestAdmin server failed to find the project related to the envSecret you configured.' +
|
|
170
|
+
' Can you check that you copied it properly in the Forest initialization?');
|
|
171
|
+
if (status === 503)
|
|
172
|
+
throw new Error('Forest is in maintenance for a few minutes. We are upgrading your experience in ' +
|
|
173
|
+
'the forest. We just need a few more minutes to get it right.');
|
|
174
|
+
throw new Error('An unexpected error occured while contacting the ForestAdmin server. ' +
|
|
175
|
+
'Please contact support@forestadmin.com for further investigations.');
|
|
176
|
+
}
|
|
177
|
+
throw e;
|
|
178
|
+
}
|
|
171
179
|
}
|
|
172
180
|
exports.default = ForestHttpApi;
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LWh0dHAtYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FnZW50L3V0aWxzL2ZvcmVzdC1odHRwLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHVEQUF1RDtBQUN2RCx3RUFBc0Y7QUFHdEYsOERBQXFDO0FBQ3JDLDREQUFpRTtBQXVDakUsTUFBcUIsYUFBYTtJQUNoQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUN0QyxPQUFvQjtRQUVwQixJQUFJO1lBQ0YsTUFBTSxRQUFRLEdBQWEsTUFBTSxvQkFBVTtpQkFDeEMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDaEYsR0FBRyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUUvQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFFMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3JGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxPQUFvQjtRQUN2RCxJQUFJO1lBQ0YsTUFBTSxRQUFRLEdBQWEsTUFBTSxvQkFBVTtpQkFDeEMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLHdDQUF3QyxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDMUYsR0FBRyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUUvQyxPQUFP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
|
|
@@ -4,6 +4,7 @@ export default class SchemaGeneratorFields {
|
|
|
4
4
|
private static relationMap;
|
|
5
5
|
static buildSchema(collection: Collection, name: string): ForestServerField;
|
|
6
6
|
private static buildColumnSchema;
|
|
7
|
+
private static convertColumnType;
|
|
7
8
|
private static buildToManyRelationSchema;
|
|
8
9
|
private static isForeignCollectionFilterable;
|
|
9
10
|
private static buildOneToOneSchema;
|
|
@@ -45,10 +45,23 @@ class SchemaGeneratorFields {
|
|
|
45
45
|
isSortable: Boolean(column.isSortable),
|
|
46
46
|
isVirtual: false,
|
|
47
47
|
reference: null,
|
|
48
|
-
type: column.columnType,
|
|
48
|
+
type: this.convertColumnType(column.columnType),
|
|
49
49
|
validations: validation_1.default.convertValidationList(column.validation),
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
|
+
static convertColumnType(type) {
|
|
53
|
+
if (typeof type === 'string')
|
|
54
|
+
return type;
|
|
55
|
+
if (Array.isArray(type)) {
|
|
56
|
+
return [this.convertColumnType(type[0])];
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
fields: Object.entries(type).map(([key, subType]) => ({
|
|
60
|
+
field: key,
|
|
61
|
+
type: this.convertColumnType(subType),
|
|
62
|
+
})),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
52
65
|
static buildToManyRelationSchema(relation, collection, foreignCollection, baseSchema) {
|
|
53
66
|
let key;
|
|
54
67
|
let keySchema;
|
|
@@ -136,4 +149,4 @@ SchemaGeneratorFields.relationMap = {
|
|
|
136
149
|
OneToMany: 'HasMany',
|
|
137
150
|
OneToOne: 'HasOne',
|
|
138
151
|
};
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLWZpZWxkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZ2VudC91dGlscy9mb3Jlc3Qtc2NoZW1hL2dlbmVyYXRvci1maWVsZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFZeUM7QUFFekMsOERBQW1EO0FBQ25ELDhEQUFtRDtBQUVuRCxNQUFxQixxQkFBcUI7SUFReEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFzQixFQUFFLElBQVk7UUFDckQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhELElBQUksTUFBeUIsQ0FBQztRQUU5QixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssUUFBUTtnQkFDWCxNQUFNLEdBQUcscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNuRSxNQUFNO1lBRVIsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxZQUFZLENBQUM7WUFDbEIsS0FBSyxVQUFVO2dCQUNiLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLE1BQU07WUFFUjtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2FBQzFCLElBQUksRUFBRTthQUNOLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3JDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFFMUIsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gs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
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PrimitiveTypes } from '@forestadmin/datasource-toolkit';
|
|
2
|
+
export declare type ForestServerColumnType = PrimitiveTypes | [ForestServerColumnType] | {
|
|
3
|
+
fields: Array<{
|
|
4
|
+
field: string;
|
|
5
|
+
type: ForestServerColumnType;
|
|
6
|
+
}>;
|
|
7
|
+
};
|
|
2
8
|
export declare type ForestServerCollection = {
|
|
3
9
|
name: string;
|
|
4
10
|
icon: null;
|
|
@@ -37,12 +43,12 @@ export declare type ForestServerActionField = {
|
|
|
37
43
|
isReadOnly: boolean;
|
|
38
44
|
isRequired: boolean;
|
|
39
45
|
reference: string | null;
|
|
40
|
-
type:
|
|
46
|
+
type: ForestServerColumnType;
|
|
41
47
|
widget: null | 'belongsto select' | 'file picker';
|
|
42
48
|
};
|
|
43
49
|
export declare type ForestServerField = Partial<{
|
|
44
50
|
field: string;
|
|
45
|
-
type:
|
|
51
|
+
type: ForestServerColumnType;
|
|
46
52
|
defaultValue: unknown;
|
|
47
53
|
enums: null | string[];
|
|
48
54
|
integration: null;
|
|
@@ -13,4 +13,4 @@ var ValidationType;
|
|
|
13
13
|
ValidationType["Contains"] = "contains";
|
|
14
14
|
ValidationType["Like"] = "is like";
|
|
15
15
|
})(ValidationType = exports.ValidationType || (exports.ValidationType = {}));
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWdlbnQvdXRpbHMvZm9yZXN0LXNjaGVtYS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEwRUEsSUFBWSxjQVVYO0FBVkQsV0FBWSxjQUFjO0lBQ3hCLHdDQUFzQixDQUFBO0lBQ3RCLGlEQUErQixDQUFBO0lBQy9CLDJDQUF5QixDQUFBO0lBQ3pCLHNDQUFvQixDQUFBO0lBQ3BCLG9DQUFrQixDQUFBO0lBQ2xCLCtDQUE2QixDQUFBO0lBQzdCLGlEQUErQixDQUFBO0lBQy9CLHVDQUFxQixDQUFBO0lBQ3JCLGtDQUFnQixDQUFBO0FBQ2xCLENBQUMsRUFWVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQVV6QiJ9
|
package/dist/builder/agent.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DataSourceFactory } from '@forestadmin/datasource-toolkit';
|
|
1
|
+
import { ChartDefinition, DataSourceFactory } from '@forestadmin/datasource-toolkit';
|
|
2
2
|
import { AgentOptions } from '../types';
|
|
3
3
|
import CollectionBuilder from './collection';
|
|
4
4
|
import { HttpCallback } from '../agent/forestadmin-http-driver';
|
|
@@ -48,6 +48,19 @@ export default class AgentBuilder {
|
|
|
48
48
|
* @param factory the datasource to add
|
|
49
49
|
*/
|
|
50
50
|
addDataSource(factory: DataSourceFactory): this;
|
|
51
|
+
/**
|
|
52
|
+
* Create a new API chart
|
|
53
|
+
* @param name name of the chart
|
|
54
|
+
* @param definition definition of the chart
|
|
55
|
+
* @example
|
|
56
|
+
* .addChart('numCustomers', {
|
|
57
|
+
* type: 'Value',
|
|
58
|
+
* render: (context, resultBuilder) => {
|
|
59
|
+
* return resultBuilder.value(123);
|
|
60
|
+
* }
|
|
61
|
+
* })
|
|
62
|
+
*/
|
|
63
|
+
addChart(name: string, definition: ChartDefinition): this;
|
|
51
64
|
/**
|
|
52
65
|
* Allow to interact with a decorated collection
|
|
53
66
|
* @param name the name of the collection to manipulate
|
package/dist/builder/agent.js
CHANGED
|
@@ -64,6 +64,24 @@ class AgentBuilder {
|
|
|
64
64
|
});
|
|
65
65
|
return this;
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Create a new API chart
|
|
69
|
+
* @param name name of the chart
|
|
70
|
+
* @param definition definition of the chart
|
|
71
|
+
* @example
|
|
72
|
+
* .addChart('numCustomers', {
|
|
73
|
+
* type: 'Value',
|
|
74
|
+
* render: (context, resultBuilder) => {
|
|
75
|
+
* return resultBuilder.value(123);
|
|
76
|
+
* }
|
|
77
|
+
* })
|
|
78
|
+
*/
|
|
79
|
+
addChart(name, definition) {
|
|
80
|
+
this.tasks.push(async () => {
|
|
81
|
+
this.stack.chart.addChart(name, definition);
|
|
82
|
+
});
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
67
85
|
/**
|
|
68
86
|
* Allow to interact with a decorated collection
|
|
69
87
|
* @param name the name of the collection to manipulate
|
|
@@ -98,4 +116,4 @@ class AgentBuilder {
|
|
|
98
116
|
}
|
|
99
117
|
}
|
|
100
118
|
exports.default = AgentBuilder;
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlci9hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQUt5QztBQUd6Qyw4REFBNkM7QUFDN0MsMEVBQWlEO0FBQ2pELCtGQUF1RjtBQUV2Rjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFxQixZQUFZO0lBaUIvQjs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUNILFlBQVksT0FBcUI7UUE5QnpCLFVBQUssR0FBNEIsRUFBRSxDQUFDO1FBK0IxQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxtQ0FBYyxFQUFjLENBQUM7UUFDNUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLDBCQUFlLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksaUNBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQWpDRDs7Ozs7O09BTUc7SUFDSCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7SUFDNUMsQ0FBQztJQTBCRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsT0FBMEI7UUFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDekIsTUFBTSxVQUFVLEdBQUcsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1RSxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxRQUFRLENBQUMsSUFBWSxFQUFFLFVBQTJCO1FBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsbUJBQW1CLENBQUMsSUFBWSxFQUFFLE1BQWtEO1FBQ2xGLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLENBQUMsSUFBSSxvQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDakQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDN0IsNENBQTRDO1lBQzVDLE1BQU0sSUFBSSxFQUFFLENBQUM7U0FDZDtRQUVELE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0MsQ0FBQztDQUNGO0FBaEhELCtCQWdIQyJ9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ActionDefinition, Operator,
|
|
1
|
+
import { ActionDefinition, Operator, OperatorDefinition, PlainSortClause, SegmentDefinition, WriteDefinition } from '@forestadmin/datasource-toolkit';
|
|
2
2
|
import { FieldDefinition } from './types';
|
|
3
3
|
import DecoratorsStack from './decorators-stack';
|
|
4
4
|
export default class CollectionBuilder {
|
|
@@ -39,8 +39,8 @@ export default class CollectionBuilder {
|
|
|
39
39
|
* @example
|
|
40
40
|
* .addAction('is live', {
|
|
41
41
|
* scope: 'Single',
|
|
42
|
-
* execute: async (context,
|
|
43
|
-
* return
|
|
42
|
+
* execute: async (context, resultBuilder) => {
|
|
43
|
+
* return resultBuilder.success(`Is live!`);
|
|
44
44
|
* },
|
|
45
45
|
* })
|
|
46
46
|
*/
|
|
@@ -58,17 +58,59 @@ export default class CollectionBuilder {
|
|
|
58
58
|
*/
|
|
59
59
|
addField(name: string, definition: FieldDefinition): this;
|
|
60
60
|
/**
|
|
61
|
-
* Add a relation
|
|
61
|
+
* Add a many to one relation to the collection
|
|
62
62
|
* @param name name of the new relation
|
|
63
|
-
* @param
|
|
63
|
+
* @param foreignCollection name of the targeted collection
|
|
64
|
+
* @param options extra information about the relation
|
|
64
65
|
* @example
|
|
65
|
-
* .
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
* books.addManyToOne('myAuthor', 'persons', { foreignKey: 'author_id' })
|
|
67
|
+
*/
|
|
68
|
+
addManyToOne(name: string, foreignCollection: string, options: {
|
|
69
|
+
foreignKey: string;
|
|
70
|
+
foreignKeyTarget?: string;
|
|
71
|
+
}): this;
|
|
72
|
+
/**
|
|
73
|
+
* Add a one to many relation to the collection
|
|
74
|
+
* @param name name of the new relation
|
|
75
|
+
* @param foreignCollection name of the targeted collection
|
|
76
|
+
* @param options extra information about the relation
|
|
77
|
+
* @example
|
|
78
|
+
* persons.addOneToMany('writtenBooks', 'books', { originKey: 'author_id' })
|
|
79
|
+
*/
|
|
80
|
+
addOneToMany(name: string, foreignCollection: string, options: {
|
|
81
|
+
originKey: string;
|
|
82
|
+
originKeyTarget?: string;
|
|
83
|
+
}): this;
|
|
84
|
+
/**
|
|
85
|
+
* Add a one to one relation to the collection
|
|
86
|
+
* @param name name of the new relation
|
|
87
|
+
* @param foreignCollection name of the targeted collection
|
|
88
|
+
* @param options extra information about the relation
|
|
89
|
+
* @example
|
|
90
|
+
* persons.addOneToOne('bestFriend', 'persons', { originKey: 'best_friend_id' })
|
|
70
91
|
*/
|
|
71
|
-
|
|
92
|
+
addOneToOne(name: string, foreignCollection: string, options: {
|
|
93
|
+
originKey: string;
|
|
94
|
+
originKeyTarget?: string;
|
|
95
|
+
}): this;
|
|
96
|
+
/**
|
|
97
|
+
* Add a many to many relation to the collection
|
|
98
|
+
* @param name name of the new relation
|
|
99
|
+
* @param foreignCollection name of the targeted collection
|
|
100
|
+
* @param throughCollection name of the intermediary collection
|
|
101
|
+
* @param options extra information about the relation
|
|
102
|
+
* @example
|
|
103
|
+
* dvds.addManyToMany('rentalsOfThisDvd', 'rentals', 'dvd_rentals', {
|
|
104
|
+
* originKey: 'dvd_id',
|
|
105
|
+
* foreignKey: 'rental_id'
|
|
106
|
+
* })
|
|
107
|
+
*/
|
|
108
|
+
addManyToMany(name: string, foreignCollection: string, throughCollection: string, options: {
|
|
109
|
+
originKey: string;
|
|
110
|
+
foreignKey: string;
|
|
111
|
+
originKeyTarget?: string;
|
|
112
|
+
foreignKeyTarget?: string;
|
|
113
|
+
}): this;
|
|
72
114
|
/**
|
|
73
115
|
* Add a new segment on the collection.
|
|
74
116
|
* @param name the name of the segment
|
|
@@ -132,7 +174,7 @@ export default class CollectionBuilder {
|
|
|
132
174
|
* new ConditionTreeLeaf('booksCount', 'Equal', value),
|
|
133
175
|
* ));
|
|
134
176
|
*/
|
|
135
|
-
replaceFieldOperator(name: string, operator: Operator, replacer:
|
|
177
|
+
replaceFieldOperator(name: string, operator: Operator, replacer: OperatorDefinition): this;
|
|
136
178
|
/**
|
|
137
179
|
* Replace the write behavior of a field.
|
|
138
180
|
* @param name the name of the field
|
|
@@ -144,5 +186,17 @@ export default class CollectionBuilder {
|
|
|
144
186
|
* });
|
|
145
187
|
*/
|
|
146
188
|
replaceFieldWriting(name: string, definition: WriteDefinition): this;
|
|
189
|
+
/**
|
|
190
|
+
* Add a relation between two collections.
|
|
191
|
+
* @param name name of the new relation
|
|
192
|
+
* @param definition definition of the new relation
|
|
193
|
+
* @example
|
|
194
|
+
* .addRelation('author', {
|
|
195
|
+
* type: 'ManyToOne',
|
|
196
|
+
* foreignCollection: 'persons',
|
|
197
|
+
* foreignKey: 'authorId'
|
|
198
|
+
* });
|
|
199
|
+
*/
|
|
200
|
+
private addRelation;
|
|
147
201
|
}
|
|
148
202
|
//# sourceMappingURL=collection.d.ts.map
|
|
@@ -68,8 +68,8 @@ class CollectionBuilder {
|
|
|
68
68
|
* @example
|
|
69
69
|
* .addAction('is live', {
|
|
70
70
|
* scope: 'Single',
|
|
71
|
-
* execute: async (context,
|
|
72
|
-
* return
|
|
71
|
+
* execute: async (context, resultBuilder) => {
|
|
72
|
+
* return resultBuilder.success(`Is live!`);
|
|
73
73
|
* },
|
|
74
74
|
* })
|
|
75
75
|
*/
|
|
@@ -97,18 +97,78 @@ class CollectionBuilder {
|
|
|
97
97
|
return this;
|
|
98
98
|
}
|
|
99
99
|
/**
|
|
100
|
-
* Add a relation
|
|
100
|
+
* Add a many to one relation to the collection
|
|
101
101
|
* @param name name of the new relation
|
|
102
|
-
* @param
|
|
102
|
+
* @param foreignCollection name of the targeted collection
|
|
103
|
+
* @param options extra information about the relation
|
|
103
104
|
* @example
|
|
104
|
-
* .
|
|
105
|
-
* type: 'ManyToOne',
|
|
106
|
-
* foreignCollection: 'persons',
|
|
107
|
-
* foreignKey: 'authorId'
|
|
108
|
-
* });
|
|
105
|
+
* books.addManyToOne('myAuthor', 'persons', { foreignKey: 'author_id' })
|
|
109
106
|
*/
|
|
110
|
-
|
|
111
|
-
this.
|
|
107
|
+
addManyToOne(name, foreignCollection, options) {
|
|
108
|
+
this.addRelation(name, {
|
|
109
|
+
type: 'ManyToOne',
|
|
110
|
+
foreignCollection,
|
|
111
|
+
foreignKey: options.foreignKey,
|
|
112
|
+
foreignKeyTarget: options.foreignKeyTarget,
|
|
113
|
+
});
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Add a one to many relation to the collection
|
|
118
|
+
* @param name name of the new relation
|
|
119
|
+
* @param foreignCollection name of the targeted collection
|
|
120
|
+
* @param options extra information about the relation
|
|
121
|
+
* @example
|
|
122
|
+
* persons.addOneToMany('writtenBooks', 'books', { originKey: 'author_id' })
|
|
123
|
+
*/
|
|
124
|
+
addOneToMany(name, foreignCollection, options) {
|
|
125
|
+
this.addRelation(name, {
|
|
126
|
+
type: 'OneToMany',
|
|
127
|
+
foreignCollection,
|
|
128
|
+
originKey: options.originKey,
|
|
129
|
+
originKeyTarget: options.originKeyTarget,
|
|
130
|
+
});
|
|
131
|
+
return this;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Add a one to one relation to the collection
|
|
135
|
+
* @param name name of the new relation
|
|
136
|
+
* @param foreignCollection name of the targeted collection
|
|
137
|
+
* @param options extra information about the relation
|
|
138
|
+
* @example
|
|
139
|
+
* persons.addOneToOne('bestFriend', 'persons', { originKey: 'best_friend_id' })
|
|
140
|
+
*/
|
|
141
|
+
addOneToOne(name, foreignCollection, options) {
|
|
142
|
+
this.addRelation(name, {
|
|
143
|
+
type: 'OneToOne',
|
|
144
|
+
foreignCollection,
|
|
145
|
+
originKey: options.originKey,
|
|
146
|
+
originKeyTarget: options.originKeyTarget,
|
|
147
|
+
});
|
|
148
|
+
return this;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Add a many to many relation to the collection
|
|
152
|
+
* @param name name of the new relation
|
|
153
|
+
* @param foreignCollection name of the targeted collection
|
|
154
|
+
* @param throughCollection name of the intermediary collection
|
|
155
|
+
* @param options extra information about the relation
|
|
156
|
+
* @example
|
|
157
|
+
* dvds.addManyToMany('rentalsOfThisDvd', 'rentals', 'dvd_rentals', {
|
|
158
|
+
* originKey: 'dvd_id',
|
|
159
|
+
* foreignKey: 'rental_id'
|
|
160
|
+
* })
|
|
161
|
+
*/
|
|
162
|
+
addManyToMany(name, foreignCollection, throughCollection, options) {
|
|
163
|
+
this.addRelation(name, {
|
|
164
|
+
type: 'ManyToMany',
|
|
165
|
+
foreignCollection,
|
|
166
|
+
throughCollection,
|
|
167
|
+
originKey: options.originKey,
|
|
168
|
+
originKeyTarget: options.originKeyTarget,
|
|
169
|
+
foreignKey: options.foreignKey,
|
|
170
|
+
foreignKeyTarget: options.foreignKeyTarget,
|
|
171
|
+
});
|
|
112
172
|
return this;
|
|
113
173
|
}
|
|
114
174
|
/**
|
|
@@ -219,6 +279,21 @@ class CollectionBuilder {
|
|
|
219
279
|
this.stack.write.getCollection(this.name).replaceFieldWriting(name, definition);
|
|
220
280
|
return this;
|
|
221
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* Add a relation between two collections.
|
|
284
|
+
* @param name name of the new relation
|
|
285
|
+
* @param definition definition of the new relation
|
|
286
|
+
* @example
|
|
287
|
+
* .addRelation('author', {
|
|
288
|
+
* type: 'ManyToOne',
|
|
289
|
+
* foreignCollection: 'persons',
|
|
290
|
+
* foreignKey: 'authorId'
|
|
291
|
+
* });
|
|
292
|
+
*/
|
|
293
|
+
addRelation(name, definition) {
|
|
294
|
+
this.stack.relation.getCollection(this.name).addRelation(name, definition);
|
|
295
|
+
return this;
|
|
296
|
+
}
|
|
222
297
|
}
|
|
223
298
|
exports.default = CollectionBuilder;
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVyL2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFXeUM7QUFHekMseUZBQThFO0FBRTlFLE1BQXFCLGlCQUFpQjtJQUlwQyxZQUFZLEtBQXNCLEVBQUUsSUFBWTtRQUM5QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFdBQVcsQ0FBQyxJQUFZLEVBQUUsT0FBb0Q7UUFDNUUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxvQ0FBZSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBaUIsQ0FBQztRQUV4RixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtZQUNsQixlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7WUFDeEMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1lBQzdCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtZQUNqQyxZQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQzVCLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxnQ0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xGLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtTQUM5QixDQUFDLENBQUM7UUFFSCxLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUU7WUFDN0MsTUFBTSxPQUFP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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ActionCollectionDecorator, ComputedCollectionDecorator, DataSource, DataSourceDecorator, EmptyCollectionDecorator, OperatorsEmulateCollectionDecorator, OperatorsReplaceCollectionDecorator, PublicationCollectionDecorator, RelationCollectionDecorator, RenameCollectionDecorator, SearchCollectionDecorator, SegmentCollectionDecorator, SortEmulateCollectionDecorator, WriteCollectionDecorator } from '@forestadmin/datasource-toolkit';
|
|
1
|
+
import { ActionCollectionDecorator, ChartDataSourceDecorator, 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
|
+
chart: ChartDataSourceDecorator;
|
|
4
5
|
earlyComputed: DataSourceDecorator<ComputedCollectionDecorator>;
|
|
5
6
|
earlyOpEmulate: DataSourceDecorator<OperatorsEmulateCollectionDecorator>;
|
|
6
7
|
earlyOpReplace: DataSourceDecorator<OperatorsReplaceCollectionDecorator>;
|
|
@@ -17,7 +17,8 @@ class DecoratorsStack {
|
|
|
17
17
|
last = this.lateComputed = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.ComputedCollectionDecorator);
|
|
18
18
|
last = this.lateOpEmulate = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.OperatorsEmulateCollectionDecorator);
|
|
19
19
|
last = this.lateOpReplace = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.OperatorsReplaceCollectionDecorator);
|
|
20
|
-
// Step 2: Those
|
|
20
|
+
// Step 2: Those need access to all fields. They can be loaded in any order.
|
|
21
|
+
last = this.chart = new datasource_toolkit_1.ChartDataSourceDecorator(last);
|
|
21
22
|
last = this.search = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.SearchCollectionDecorator);
|
|
22
23
|
last = this.segment = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.SegmentCollectionDecorator);
|
|
23
24
|
last = this.sortEmulate = new datasource_toolkit_1.DataSourceDecorator(last, datasource_toolkit_1.SortEmulateCollectionDecorator);
|
|
@@ -33,4 +34,4 @@ class DecoratorsStack {
|
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
exports.default = DecoratorsStack;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVyL2RlY29yYXRvcnMtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3RUFnQnlDO0FBRXpDLE1BQXFCLGVBQWU7SUFtQmxDLFlBQVksVUFBc0I7UUFDaEMsSUFBSSxJQUFJLEdBQWUsVUFBVSxDQUFDO1FBRWxDLG9DQUFvQztRQUNwQyxtRkFBbUY7UUFDbkYsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsNkNBQXdCLENBQUMsQ0FBQztRQUU1RSw2RkFBNkY7UUFDN0Ysc0VBQXNFO1FBQ3RFLDJGQUEyRjtRQUMzRixJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxnREFBMkIsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLHdEQUFtQyxDQUFDLENBQUM7UUFDaEcsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsd0RBQW1DLENBQUMsQ0FBQztRQUNoRyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxnREFBMkIsQ0FBQyxDQUFDO1FBQ2xGLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLGdEQUEyQixDQUFDLENBQUM7UUFDdEYsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsd0RBQW1DLENBQUMsQ0FBQztRQUMvRixJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSx3REFBbUMsQ0FBQyxDQUFDO1FBRS9GLDRFQUE0RTtRQUM1RSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLDZDQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLDhDQUF5QixDQUFDLENBQUM7UUFDOUUsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSx3Q0FBbUIsQ0FBQyxJQUFJLEVBQUUsK0NBQTBCLENBQUMsQ0FBQztRQUNoRixJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxtREFBOEIsQ0FBQyxDQUFDO1FBQ3hGLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLDZDQUF3QixDQUFDLENBQUM7UUFFNUUseURBQXlEO1FBQ3pELElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLDhDQUF5QixDQUFDLENBQUM7UUFFOUUsOEZBQThGO1FBQzlGLGlCQUFpQjtRQUNqQixJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHdDQUFtQixDQUFDLElBQUksRUFBRSxtREFBOEIsQ0FBQyxDQUFDO1FBQ3hGLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksd0NBQW1CLENBQUMsSUFBSSxFQUFFLDhDQUF5QixDQUFDLENBQUM7UUFDOUUsbUNBQW1DO1FBRW5DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQXZERCxrQ0F1REMifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/agent",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.25",
|
|
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.
|
|
16
|
+
"@forestadmin/datasource-toolkit": "1.0.0-beta.15",
|
|
17
17
|
"@koa/cors": "^3.3.0",
|
|
18
18
|
"@koa/router": "^10.1.1",
|
|
19
19
|
"forest-ip-utils": "^1.0.1",
|