@forestadmin/agent 1.9.0 → 1.10.0-alpha-webhook-custom-actions.1
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/dist/agent.d.ts +3 -0
- package/dist/agent.js +16 -3
- package/dist/routes/modification/action/action.js +7 -5
- package/dist/services/model-customizations/action-customization.d.ts +12 -0
- package/dist/services/model-customizations/action-customization.js +38 -0
- package/dist/services/model-customizations/execute-webhook.d.ts +5 -0
- package/dist/services/model-customizations/execute-webhook.js +55 -0
- package/dist/types.d.ts +3 -0
- package/dist/types.js +1 -1
- package/dist/utils/forest-schema/generator-actions.d.ts +1 -0
- package/dist/utils/forest-schema/generator-actions.js +5 -2
- package/dist/utils/forest-schema/generator.d.ts +2 -1
- package/dist/utils/forest-schema/generator.js +15 -2
- package/package.json +3 -3
package/dist/agent.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ import { AgentOptions } from './types';
|
|
|
15
15
|
export default class Agent<S extends TSchema = TSchema> extends FrameworkMounter {
|
|
16
16
|
private options;
|
|
17
17
|
private customizer;
|
|
18
|
+
private nocodeCustomizer;
|
|
19
|
+
private actionCustomizationService;
|
|
18
20
|
/**
|
|
19
21
|
* Create a new Agent Builder.
|
|
20
22
|
* If any options are missing, the default will be applied:
|
|
@@ -82,5 +84,6 @@ export default class Agent<S extends TSchema = TSchema> extends FrameworkMounter
|
|
|
82
84
|
* Send the apimap to forest admin server
|
|
83
85
|
*/
|
|
84
86
|
private sendSchema;
|
|
87
|
+
private buildSchemaFeatures;
|
|
85
88
|
}
|
|
86
89
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/agent.js
CHANGED
|
@@ -13,6 +13,7 @@ const koa_bodyparser_1 = __importDefault(require("koa-bodyparser"));
|
|
|
13
13
|
const framework_mounter_1 = __importDefault(require("./framework-mounter"));
|
|
14
14
|
const routes_1 = __importDefault(require("./routes"));
|
|
15
15
|
const services_1 = __importDefault(require("./services"));
|
|
16
|
+
const action_customization_1 = __importDefault(require("./services/model-customizations/action-customization"));
|
|
16
17
|
const generator_1 = __importDefault(require("./utils/forest-schema/generator"));
|
|
17
18
|
const options_validator_1 = __importDefault(require("./utils/options-validator"));
|
|
18
19
|
/**
|
|
@@ -47,13 +48,17 @@ class Agent extends framework_mounter_1.default {
|
|
|
47
48
|
super(allOptions.prefix, allOptions.logger);
|
|
48
49
|
this.options = allOptions;
|
|
49
50
|
this.customizer = new datasource_customizer_1.DataSourceCustomizer();
|
|
51
|
+
this.nocodeCustomizer = new datasource_customizer_1.DataSourceCustomizer();
|
|
52
|
+
this.nocodeCustomizer.addDataSource(this.customizer.getFactory());
|
|
53
|
+
this.actionCustomizationService = new action_customization_1.default(allOptions);
|
|
50
54
|
}
|
|
51
55
|
/**
|
|
52
56
|
* Start the agent.
|
|
53
57
|
*/
|
|
54
58
|
async start() {
|
|
55
59
|
const { isProduction, logger, skipSchemaUpdate, typingsPath, typingsMaxDepth } = this.options;
|
|
56
|
-
|
|
60
|
+
await this.nocodeCustomizer.use(this.actionCustomizationService.addWebhookActions, this.options.experimental?.webhookCustomActions);
|
|
61
|
+
const dataSource = await this.nocodeCustomizer.getDataSource(logger);
|
|
57
62
|
const [router] = await Promise.all([
|
|
58
63
|
this.getRouter(dataSource),
|
|
59
64
|
!skipSchemaUpdate ? this.sendSchema(dataSource) : Promise.resolve(),
|
|
@@ -145,7 +150,7 @@ class Agent extends framework_mounter_1.default {
|
|
|
145
150
|
}
|
|
146
151
|
}
|
|
147
152
|
else {
|
|
148
|
-
schema = await generator_1.default.buildSchema(dataSource);
|
|
153
|
+
schema = await generator_1.default.buildSchema(dataSource, this.buildSchemaFeatures());
|
|
149
154
|
const pretty = (0, json_stringify_pretty_compact_1.default)(schema, { maxLength: 100 });
|
|
150
155
|
await (0, promises_1.writeFile)(schemaPath, pretty, { encoding: 'utf-8' });
|
|
151
156
|
}
|
|
@@ -156,6 +161,14 @@ class Agent extends framework_mounter_1.default {
|
|
|
156
161
|
: 'Schema was not updated since last run';
|
|
157
162
|
this.options.logger('Info', message);
|
|
158
163
|
}
|
|
164
|
+
buildSchemaFeatures() {
|
|
165
|
+
const mapping = {
|
|
166
|
+
webhookCustomActions: action_customization_1.default.FEATURE,
|
|
167
|
+
};
|
|
168
|
+
return Object.entries(mapping)
|
|
169
|
+
.filter(([experimentalFeature]) => this.options.experimental?.[experimentalFeature])
|
|
170
|
+
.map(([, feature]) => feature);
|
|
171
|
+
}
|
|
159
172
|
}
|
|
160
173
|
exports.default = Agent;
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsOEVBUTRDO0FBRzVDLHFEQUE2QjtBQUM3Qix5REFBaUM7QUFDakMsMENBQWtEO0FBQ2xELGtHQUFzRDtBQUN0RCxvRUFBd0M7QUFFeEMsNEVBQW1EO0FBQ25ELHNEQUFrQztBQUNsQywwREFBc0M7QUFDdEMsZ0hBQThGO0FBRTlGLGdGQUE4RDtBQUM5RCxrRkFBeUQ7QUFFekQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBcUIsS0FBbUMsU0FBUSwyQkFBZ0I7SUFNOUU7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0gsWUFBWSxPQUFxQjtRQUMvQixNQUFNLFVBQVUsR0FBRywyQkFBZ0IsQ0FBQyxRQUFRLENBQUMsMkJBQWdCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDckYsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSw0Q0FBb0IsRUFBSyxDQUFDO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLDRDQUFvQixFQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksOEJBQTBCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUU5RixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQzdCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxpQkFBaUIsRUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLENBQ2hELENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUMxQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25FLENBQUMsWUFBWSxJQUFJLFdBQVc7Z0JBQzFCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7Z0JBQ3ZFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBRXJCLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUU7U0FDekQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLE9BQTBCLEVBQUUsT0FBMkI7UUFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWhELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsUUFBUSxDQUFDLElBQVksRUFBRSxVQUF3QztRQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFM0MsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILG1CQUFtQixDQUNqQixJQUFPLEVBQ1AsTUFBMkQ7UUFFM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFbEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxHQUFHLENBQVUsTUFBdUIsRUFBRSxPQUFpQjtRQUNyRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQXNCO1FBQzVDLGdCQUFnQjtRQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFBLGtCQUFZLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUEsZ0JBQVUsRUFBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFMUQsZUFBZTtRQUNmLE1BQU0sTUFBTSxHQUFHLElBQUksZ0JBQU0sRUFBRSxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUEsY0FBSSxFQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFBLHdCQUFVLEVBQUMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFbkQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFzQjtRQUM3QyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUVwQywwREFBMEQ7UUFDMUQsSUFBSSxNQUFvQixDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDN0IsSUFBSTtnQkFDRixNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUEsbUJBQVEsRUFBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3hFO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLFVBQVUsa0RBQWtELENBQUMsQ0FBQzthQUM3RjtTQUNGO2FBQU07WUFDTCxNQUFNLEdBQUcsTUFBTSxtQkFBZSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztZQUVuRixNQUFNLE1BQU0sR0FBRyxJQUFBLHVDQUFTLEVBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckQsTUFBTSxJQUFBLG9CQUFTLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO1FBRUQsZ0NBQWdDO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEUsTUFBTSxPQUFPLEdBQUcsT0FBTztZQUNyQixDQUFDLENBQUMseUNBQXlDO1lBQzNDLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLE9BQU8sR0FBdUQ7WUFDbEUsb0JBQW9CLEVBQUUsOEJBQTBCLENBQUMsT0FBTztTQUN6RCxDQUFDO1FBRUYsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQzthQUMzQixNQUFNLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQzthQUNuRixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQWxMRCx3QkFrTEMifQ==
|
|
@@ -20,11 +20,13 @@ class ActionRoute extends collection_route_1.default {
|
|
|
20
20
|
this.actionAuthorizationService = new action_authorization_1.default(options.forestAdminClient);
|
|
21
21
|
}
|
|
22
22
|
setupRoutes(router) {
|
|
23
|
+
// Generate url that matches the declaration in forest-schema/generator-actions.ts
|
|
23
24
|
const actionIndex = Object.keys(this.collection.schema.actions).indexOf(this.actionName);
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
router.post(`${path}
|
|
27
|
-
router.post(`${path}
|
|
25
|
+
const slug = generator_actions_1.default.getActionSlug(this.actionName);
|
|
26
|
+
const path = `/_actions/${this.collection.name}/${actionIndex}/${slug}`;
|
|
27
|
+
router.post(`${path}`, this.middlewareCustomActionApprovalRequestData.bind(this), this.handleExecute.bind(this));
|
|
28
|
+
router.post(`${path}/hooks/load`, this.handleHook.bind(this));
|
|
29
|
+
router.post(`${path}/hooks/change`, this.handleHook.bind(this));
|
|
28
30
|
}
|
|
29
31
|
async handleExecute(context) {
|
|
30
32
|
const { dataSource } = this.collection;
|
|
@@ -151,4 +153,4 @@ class ActionRoute extends collection_route_1.default {
|
|
|
151
153
|
}
|
|
152
154
|
}
|
|
153
155
|
exports.default = ActionRoute;
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3JvdXRlcy9tb2RpZmljYXRpb24vYWN0aW9uL2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQU15QztBQUt6QyxrRkFBZ0U7QUFNaEUsMENBQW9FO0FBQ3BFLDZFQUFvRDtBQUNwRCxtR0FBeUU7QUFDekUsK0ZBQThFO0FBQzlFLHVHQUFvRjtBQUNwRiwyREFBd0M7QUFDeEMsK0VBQTREO0FBQzVELDhFQUFxRDtBQUVyRCxNQUFxQixXQUFZLFNBQVEsMEJBQWU7SUFLdEQsWUFDRSxRQUF1QyxFQUN2QyxPQUFpQyxFQUNqQyxVQUFzQixFQUN0QixjQUFzQixFQUN0QixVQUFrQjtRQUVsQixLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFFN0IsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksOEJBQTBCLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjO1FBQ3hCLGtGQUFrRjtRQUNsRixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekYsTUFBTSxJQUFJLEdBQUcsMkJBQXNCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRSxNQUFNLElBQUksR0FBRyxhQUFhLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUV4RSxNQUFNLENBQUMsSUFBSSxDQUNULEdBQUcsSUFBSSxFQUFFLEVBQ1QsSUFBSSxD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
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Plugin } from '@forestadmin/datasource-customizer';
|
|
2
|
+
import { ModelCustomization } from '@forestadmin/forestadmin-client';
|
|
3
|
+
import { AgentOptionsWithDefaults } from '../../types';
|
|
4
|
+
export default class ActionCustomizationService {
|
|
5
|
+
static VERSION: string;
|
|
6
|
+
static FEATURE: string;
|
|
7
|
+
private readonly client;
|
|
8
|
+
constructor(agentOptions: Pick<AgentOptionsWithDefaults, 'forestAdminClient'>);
|
|
9
|
+
addWebhookActions: Plugin<boolean | undefined>;
|
|
10
|
+
static addWebhookActions: Plugin<ModelCustomization[]>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=action-customization.d.ts.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
var _a;
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const forestadmin_client_1 = require("@forestadmin/forestadmin-client");
|
|
8
|
+
const execute_webhook_1 = __importDefault(require("./execute-webhook"));
|
|
9
|
+
function getActions(type, configuration) {
|
|
10
|
+
return configuration.filter(customization => customization.type === forestadmin_client_1.ModelCustomizationType.action &&
|
|
11
|
+
customization.configuration.type === type);
|
|
12
|
+
}
|
|
13
|
+
class ActionCustomizationService {
|
|
14
|
+
constructor(agentOptions) {
|
|
15
|
+
this.addWebhookActions = async (datasourceCustomizer, _, enabled) => {
|
|
16
|
+
if (!enabled)
|
|
17
|
+
return;
|
|
18
|
+
const modelCustomizations = await this.client.modelCustomizationService.getConfiguration();
|
|
19
|
+
await ActionCustomizationService.addWebhookActions(datasourceCustomizer, _, modelCustomizations);
|
|
20
|
+
};
|
|
21
|
+
this.client = agentOptions.forestAdminClient;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.default = ActionCustomizationService;
|
|
25
|
+
_a = ActionCustomizationService;
|
|
26
|
+
ActionCustomizationService.VERSION = '1.0.0';
|
|
27
|
+
ActionCustomizationService.FEATURE = 'webhook-custom-actions';
|
|
28
|
+
ActionCustomizationService.addWebhookActions = async (datasourceCustomizer, _, modelCustomizations) => {
|
|
29
|
+
const actions = await getActions('webhook', modelCustomizations);
|
|
30
|
+
actions.forEach(action => {
|
|
31
|
+
const collection = datasourceCustomizer.getCollection(action.modelName);
|
|
32
|
+
collection.addAction(action.name, {
|
|
33
|
+
scope: action.configuration.scope,
|
|
34
|
+
execute: context => (0, execute_webhook_1.default)(action, context),
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWN1c3RvbWl6YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvbW9kZWwtY3VzdG9taXphdGlvbnMvYWN0aW9uLWN1c3RvbWl6YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esd0VBT3lDO0FBRXpDLHdFQUErQztBQUcvQyxTQUFTLFVBQVUsQ0FDakIsSUFBZ0IsRUFDaEIsYUFBbUM7SUFFbkMsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUN6QixhQUFhLENBQUMsRUFBRSxDQUNkLGFBQWEsQ0FBQyxJQUFJLEtBQUssMkNBQXNCLENBQUMsTUFBTTtRQUNuRCxhQUF5RCxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUNqRCxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFxQiwwQkFBMEI7SUFNN0MsWUFBbUIsWUFBaUU7UUFJN0Usc0JBQWlCLEdBQWdDLEtBQUssRUFDM0Qsb0JBQW9CLEVBQ3BCLENBQUMsRUFDRCxPQUFPLEVBQ1AsRUFBRTtZQUNGLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU87WUFFckIsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUUzRixNQUFNLDBCQUEwQixDQUFDLGlCQUFpQixDQUNoRCxvQkFBb0IsRUFDcEIsQ0FBQyxFQUNELG1CQUFtQixDQUNwQixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBakJBLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDO0lBQy9DLENBQUM7O0FBUkgsNkNBeUNDOztBQXhDZSxrQ0FBTyxHQUFHLE9BQU8sQ0FBQztBQUNsQixrQ0FBTyxHQUFHLHdCQUF3QixDQUFDO0FBd0JuQyw0Q0FBaUIsR0FBaUMsS0FBSyxFQUNuRSxvQkFBb0IsRUFDcEIsQ0FBQyxFQUNELG1CQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxVQUFVLENBQTZCLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQzdGLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkIsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4RSxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDaEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSztZQUNqQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFBLHlCQUFjLEVBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztTQUNwRCxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ActionContext, TSchema } from '@forestadmin/datasource-customizer';
|
|
2
|
+
import { ActionResult } from '@forestadmin/datasource-toolkit';
|
|
3
|
+
import { WebhookAction } from '@forestadmin/forestadmin-client';
|
|
4
|
+
export default function executeWebhook<S extends TSchema = TSchema>(action: WebhookAction, context: ActionContext<S>): Promise<ActionResult>;
|
|
5
|
+
//# sourceMappingURL=execute-webhook.d.ts.map
|
|
@@ -0,0 +1,55 @@
|
|
|
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 datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
7
|
+
const superagent_1 = __importDefault(require("superagent"));
|
|
8
|
+
function generateBody(action, records) {
|
|
9
|
+
const commonPart = {
|
|
10
|
+
action: {
|
|
11
|
+
name: action.name,
|
|
12
|
+
scope: action.configuration.scope.toLocaleLowerCase(),
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
switch (action.configuration.scope) {
|
|
16
|
+
case 'Global':
|
|
17
|
+
case 'Bulk':
|
|
18
|
+
return {
|
|
19
|
+
...commonPart,
|
|
20
|
+
records,
|
|
21
|
+
};
|
|
22
|
+
case 'Single':
|
|
23
|
+
if (records.length !== 1) {
|
|
24
|
+
throw new Error('Single actions can only be used with one selected record');
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
...commonPart,
|
|
28
|
+
record: records[0],
|
|
29
|
+
};
|
|
30
|
+
default:
|
|
31
|
+
throw new Error(`Unknown scope: ${action.configuration.scope}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function executeWebhook(action, context) {
|
|
35
|
+
const primaryKeys = datasource_toolkit_1.SchemaUtils.getPrimaryKeys(context.collection.schema);
|
|
36
|
+
const records = await context.getRecords(primaryKeys);
|
|
37
|
+
const body = generateBody(action, records);
|
|
38
|
+
try {
|
|
39
|
+
await superagent_1.default.post(action.configuration.configuration.url).send(body);
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
if (e.response) {
|
|
43
|
+
return {
|
|
44
|
+
type: 'Error',
|
|
45
|
+
message: `Error received from the server: ${e.status} ${e.message}.`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
type: 'Error',
|
|
50
|
+
message: `Could not execute the action: ${e.message}.`,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.default = executeWebhook;
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS13ZWJob29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21vZGVsLWN1c3RvbWl6YXRpb25zL2V4ZWN1dGUtd2ViaG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHdFQUE0RTtBQUU1RSw0REFBdUQ7QUFFdkQsU0FBUyxZQUFZLENBQ25CLE1BQXFCLEVBQ3JCLE9BQTRDO0lBRTVDLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLE1BQU0sRUFBRTtZQUNOLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUU7U0FDdEQ7S0FDRixDQUFDO0lBRUYsUUFBUSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRTtRQUNsQyxLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssTUFBTTtZQUNULE9BQU87Z0JBQ0wsR0FBRyxVQUFVO2dCQUNiLE9BQU87YUFDUixDQUFDO1FBQ0osS0FBSyxRQUFRO1lBQ1gsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO2FBQzdFO1lBRUQsT0FBTztnQkFDTCxHQUFHLFVBQVU7Z0JBQ2IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDbkIsQ0FBQztRQUNKO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ25FO0FBQ0gsQ0FBQztBQUVjLEtBQUssVUFBVSxjQUFjLENBQzFDLE1BQXFCLEVBQ3JCLE9BQXlCO0lBRXpCLE1BQU0sV0FBVyxHQUFHLGdDQUFXLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUdyRSxDQUFDO0lBRUosTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXRELE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFM0MsSUFBSTtRQUNGLE1BQU0sb0JBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzFFO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixJQUFLLENBQW1CLENBQUMsUUFBUSxFQUFFO1lBQ2pDLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsT0FBTyxFQUFFLG1DQUFtQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLEdBQUc7YUFDckUsQ0FBQztTQUNIO1FBRUQsT0FBTztZQUNMLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLGlDQUFpQyxDQUFDLENBQUMsT0FBTyxHQUFHO1NBQ3ZELENBQUM7S0FDSDtBQUNILENBQUM7QUE1QkQsaUNBNEJDIn0=
|
package/dist/types.d.ts
CHANGED
|
@@ -19,6 +19,9 @@ export type AgentOptions = {
|
|
|
19
19
|
permissionsCacheDurationInSeconds?: number;
|
|
20
20
|
skipSchemaUpdate?: boolean;
|
|
21
21
|
forestAdminClient?: ForestAdminClient;
|
|
22
|
+
experimental?: {
|
|
23
|
+
webhookCustomActions?: boolean;
|
|
24
|
+
};
|
|
22
25
|
};
|
|
23
26
|
export type AgentOptionsWithDefaults = Readonly<Required<AgentOptions>>;
|
|
24
27
|
export type HttpCallback = (req: IncomingMessage, res: ServerResponse) => void;
|
package/dist/types.js
CHANGED
|
@@ -20,4 +20,4 @@ var RouteType;
|
|
|
20
20
|
RouteType[RouteType["Authentication"] = 3] = "Authentication";
|
|
21
21
|
RouteType[RouteType["PrivateRoute"] = 4] = "PrivateRoute";
|
|
22
22
|
})(RouteType = exports.RouteType || (exports.RouteType = {}));
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNkJBLElBQVksUUFRWDtBQVJELFdBQVksUUFBUTtJQUNsQixxREFBZ0IsQ0FBQTtJQUNoQixtREFBZSxDQUFBO0lBQ2YsdUVBQXlCLENBQUE7SUFDekIsbURBQWUsQ0FBQTtJQUNmLGlEQUFjLENBQUE7SUFDZCxxQ0FBUSxDQUFBO0lBQ1IsMkRBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVJXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBUW5CO0FBRUQsSUFBWSxTQU9YO0FBUEQsV0FBWSxTQUFTO0lBQ25CLGlHQUFpRztJQUNqRyx5REFBZ0IsQ0FBQTtJQUNoQiwyREFBaUIsQ0FBQTtJQUNqQix1REFBZSxDQUFBO0lBQ2YsNkRBQWtCLENBQUE7SUFDbEIseURBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQVBXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBT3BCIn0=
|
|
@@ -6,6 +6,7 @@ export default class SchemaGeneratorActions {
|
|
|
6
6
|
* This works around a bug in frontend which won't call the server if no fields are defined.
|
|
7
7
|
*/
|
|
8
8
|
static defaultFields: ForestServerActionField[];
|
|
9
|
+
static getActionSlug(name: string): string;
|
|
9
10
|
static buildSchema(collection: Collection, name: string): Promise<ForestServerAction>;
|
|
10
11
|
/** Build schema for given field */
|
|
11
12
|
static buildFieldSchema(dataSource: DataSource, field: ActionField): ForestServerActionField;
|
|
@@ -7,11 +7,14 @@ const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const action_values_1 = __importDefault(require("./action-values"));
|
|
9
9
|
class SchemaGeneratorActions {
|
|
10
|
+
static getActionSlug(name) {
|
|
11
|
+
return name.toLocaleLowerCase().replace(/[^a-z0-9-]+/g, '-');
|
|
12
|
+
}
|
|
10
13
|
static async buildSchema(collection, name) {
|
|
11
14
|
const schema = collection.schema.actions[name];
|
|
12
15
|
const actionIndex = Object.keys(collection.schema.actions).indexOf(name);
|
|
13
16
|
// Generate url-safe friendly name (which won't be unique, but that's OK).
|
|
14
|
-
const slug =
|
|
17
|
+
const slug = SchemaGeneratorActions.getActionSlug(name);
|
|
15
18
|
const fields = await SchemaGeneratorActions.buildFields(collection, name, schema);
|
|
16
19
|
return {
|
|
17
20
|
id: `${collection.name}-${actionIndex}-${slug}`,
|
|
@@ -96,4 +99,4 @@ SchemaGeneratorActions.defaultFields = [
|
|
|
96
99
|
widget: null,
|
|
97
100
|
},
|
|
98
101
|
];
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLWFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZm9yZXN0LXNjaGVtYS9nZW5lcmF0b3ItYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQVF5QztBQUV6QyxnREFBd0I7QUFFeEIsb0VBQW1EO0FBRW5ELE1BQXFCLHNCQUFzQjtJQXFCekMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBc0IsRUFBRSxJQUFZO1FBQzNELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekUsMEVBQTBFO1FBQzFFLE1BQU0sSUFBSSxHQUFHLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxNQUFNLE1BQU0sR0FBRyxNQUFNLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWxGLE9BQU87WUFDTCxFQUFFLEVBQUUsR0FBRyxVQUFVLENBQUMsSUFBSSxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUU7WUFDL0MsSUFBSTtZQUNKLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBa0M7WUFDaEUsT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsY0FBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtC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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DataSource } from '@forestadmin/datasource-toolkit';
|
|
2
2
|
import { ForestSchema } from '@forestadmin/forestadmin-client';
|
|
3
3
|
export default class SchemaGenerator {
|
|
4
|
-
static buildSchema(dataSource: DataSource): Promise<ForestSchema>;
|
|
4
|
+
static buildSchema(dataSource: DataSource, features: string[]): Promise<ForestSchema>;
|
|
5
|
+
private static buildFeatures;
|
|
5
6
|
}
|
|
6
7
|
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -4,8 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const generator_collection_1 = __importDefault(require("./generator-collection"));
|
|
7
|
+
const action_customization_1 = __importDefault(require("../../services/model-customizations/action-customization"));
|
|
7
8
|
class SchemaGenerator {
|
|
8
|
-
static async buildSchema(dataSource) {
|
|
9
|
+
static async buildSchema(dataSource, features) {
|
|
9
10
|
const { version } = require('../../../package.json'); // eslint-disable-line @typescript-eslint/no-var-requires,global-require,max-len
|
|
10
11
|
return {
|
|
11
12
|
collections: await Promise.all([...dataSource.collections]
|
|
@@ -14,6 +15,7 @@ class SchemaGenerator {
|
|
|
14
15
|
metadata: {
|
|
15
16
|
liana: 'forest-nodejs-agent',
|
|
16
17
|
liana_version: version,
|
|
18
|
+
liana_features: SchemaGenerator.buildFeatures(features),
|
|
17
19
|
stack: {
|
|
18
20
|
engine: 'nodejs',
|
|
19
21
|
engine_version: process.versions && process.versions.node,
|
|
@@ -21,6 +23,17 @@ class SchemaGenerator {
|
|
|
21
23
|
},
|
|
22
24
|
};
|
|
23
25
|
}
|
|
26
|
+
static buildFeatures(features) {
|
|
27
|
+
const result = Object.entries({
|
|
28
|
+
[action_customization_1.default.FEATURE]: action_customization_1.default.VERSION,
|
|
29
|
+
})
|
|
30
|
+
.filter(([feature]) => features.includes(feature))
|
|
31
|
+
.reduce((acc, [feature, version]) => ({
|
|
32
|
+
...acc,
|
|
33
|
+
[feature]: version,
|
|
34
|
+
}), {});
|
|
35
|
+
return Object.keys(result).length ? result : null;
|
|
36
|
+
}
|
|
24
37
|
}
|
|
25
38
|
exports.default = SchemaGenerator;
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2ZvcmVzdC1zY2hlbWEvZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0Esa0ZBQStEO0FBQy9ELG9IQUFrRztBQUVsRyxNQUFxQixlQUFlO0lBQ2xDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQXNCLEVBQUUsUUFBa0I7UUFDakUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsZ0ZBQWdGO1FBRXRJLE9BQU87WUFDTCxXQUFXLEVBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUM1QixDQUFDLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztpQkFDeEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM1QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyw4QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdEQ7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLHFCQUFxQjtnQkFDNUIsYUFBYSxFQUFFLE9BQU87Z0JBQ3RCLGNBQWMsRUFBRSxlQUFlLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztnQkFDdkQsS0FBSyxFQUFFO29CQUNMLE1BQU0sRUFBRSxRQUFRO29CQUNoQixjQUFjLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUk7aUJBQzFEO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBa0I7UUFDN0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUM1QixDQUFDLDhCQUEwQixDQUFDLE9BQU8sQ0FBQyxFQUFFLDhCQUEwQixDQUFDLE9BQU87U0FDekUsQ0FBQzthQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDakQsTUFBTSxDQUNMLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLEdBQUcsR0FBRztZQUNOLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTztTQUNuQixDQUFDLEVBQ0YsRUFBRSxDQUNILENBQUM7UUFFSixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDO0NBQ0Y7QUFyQ0Qsa0NBcUNDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/agent",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0-alpha-webhook-custom-actions.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@fast-csv/format": "^4.3.5",
|
|
16
16
|
"@fastify/express": "^1.1.0",
|
|
17
|
-
"@forestadmin/datasource-customizer": "1.
|
|
17
|
+
"@forestadmin/datasource-customizer": "1.8.0-alpha-webhook-custom-actions.1",
|
|
18
18
|
"@forestadmin/datasource-toolkit": "1.5.0",
|
|
19
|
-
"@forestadmin/forestadmin-client": "1.
|
|
19
|
+
"@forestadmin/forestadmin-client": "1.3.0-alpha-webhook-custom-actions.1",
|
|
20
20
|
"@koa/cors": "^4.0.0",
|
|
21
21
|
"@koa/router": "^12.0.0",
|
|
22
22
|
"forest-ip-utils": "^1.0.1",
|