@forestadmin/agent 1.10.0 → 1.12.0
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 +1 -2
- package/dist/agent.js +6 -14
- package/dist/services/model-customizations/actions/get-actions.d.ts +3 -0
- package/dist/services/model-customizations/actions/get-actions.js +9 -0
- package/dist/services/model-customizations/actions/update-record/update-record-plugin.d.ts +8 -0
- package/dist/services/model-customizations/actions/update-record/update-record-plugin.js +30 -0
- package/dist/services/model-customizations/{execute-webhook.js → actions/webhook/execute-webhook.js} +1 -1
- package/dist/services/model-customizations/actions/webhook/webhook-plugin.d.ts +8 -0
- package/dist/services/model-customizations/actions/webhook/webhook-plugin.js +23 -0
- package/dist/services/model-customizations/customization.d.ts +16 -0
- package/dist/services/model-customizations/customization.js +60 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js +1 -1
- package/dist/utils/forest-schema/generator.d.ts +1 -2
- package/dist/utils/forest-schema/generator.js +2 -14
- package/package.json +3 -3
- package/dist/services/model-customizations/action-customization.d.ts +0 -12
- package/dist/services/model-customizations/action-customization.js +0 -38
- /package/dist/services/model-customizations/{execute-webhook.d.ts → actions/webhook/execute-webhook.d.ts} +0 -0
package/dist/agent.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export default class Agent<S extends TSchema = TSchema> extends FrameworkMounter
|
|
|
16
16
|
private options;
|
|
17
17
|
private customizer;
|
|
18
18
|
private nocodeCustomizer;
|
|
19
|
-
private
|
|
19
|
+
private customizationService;
|
|
20
20
|
/**
|
|
21
21
|
* Create a new Agent Builder.
|
|
22
22
|
* If any options are missing, the default will be applied:
|
|
@@ -92,6 +92,5 @@ export default class Agent<S extends TSchema = TSchema> extends FrameworkMounter
|
|
|
92
92
|
* Send the apimap to forest admin server
|
|
93
93
|
*/
|
|
94
94
|
private sendSchema;
|
|
95
|
-
private buildSchemaFeatures;
|
|
96
95
|
}
|
|
97
96
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/agent.js
CHANGED
|
@@ -13,7 +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
|
|
16
|
+
const customization_1 = __importDefault(require("./services/model-customizations/customization"));
|
|
17
17
|
const generator_1 = __importDefault(require("./utils/forest-schema/generator"));
|
|
18
18
|
const options_validator_1 = __importDefault(require("./utils/options-validator"));
|
|
19
19
|
/**
|
|
@@ -48,7 +48,7 @@ class Agent extends framework_mounter_1.default {
|
|
|
48
48
|
super(allOptions.prefix, allOptions.logger);
|
|
49
49
|
this.options = allOptions;
|
|
50
50
|
this.customizer = new datasource_customizer_1.DataSourceCustomizer();
|
|
51
|
-
this.
|
|
51
|
+
this.customizationService = new customization_1.default(allOptions);
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* Start the agent.
|
|
@@ -136,11 +136,11 @@ class Agent extends framework_mounter_1.default {
|
|
|
136
136
|
return router;
|
|
137
137
|
}
|
|
138
138
|
async buildRouterAndSendSchema() {
|
|
139
|
-
const { isProduction, logger, typingsPath, typingsMaxDepth
|
|
139
|
+
const { isProduction, logger, typingsPath, typingsMaxDepth } = this.options;
|
|
140
140
|
// It allows to rebuild the full customization stack with no code customizations
|
|
141
141
|
this.nocodeCustomizer = new datasource_customizer_1.DataSourceCustomizer();
|
|
142
142
|
this.nocodeCustomizer.addDataSource(this.customizer.getFactory());
|
|
143
|
-
this.nocodeCustomizer.use(this.
|
|
143
|
+
this.nocodeCustomizer.use(this.customizationService.addCustomizations);
|
|
144
144
|
const dataSource = await this.nocodeCustomizer.getDataSource(logger);
|
|
145
145
|
const [router] = await Promise.all([
|
|
146
146
|
this.getRouter(dataSource),
|
|
@@ -173,7 +173,7 @@ class Agent extends framework_mounter_1.default {
|
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
else {
|
|
176
|
-
schema = await generator_1.default.buildSchema(dataSource, this.
|
|
176
|
+
schema = await generator_1.default.buildSchema(dataSource, this.customizationService.buildFeatures());
|
|
177
177
|
const pretty = (0, json_stringify_pretty_compact_1.default)(schema, { maxLength: 100 });
|
|
178
178
|
await (0, promises_1.writeFile)(schemaPath, pretty, { encoding: 'utf-8' });
|
|
179
179
|
}
|
|
@@ -184,14 +184,6 @@ class Agent extends framework_mounter_1.default {
|
|
|
184
184
|
: 'Schema was not updated since last run';
|
|
185
185
|
this.options.logger('Info', message);
|
|
186
186
|
}
|
|
187
|
-
buildSchemaFeatures() {
|
|
188
|
-
const mapping = {
|
|
189
|
-
webhookCustomActions: action_customization_1.default.FEATURE,
|
|
190
|
-
};
|
|
191
|
-
return Object.entries(mapping)
|
|
192
|
-
.filter(([experimentalFeature]) => this.options.experimental?.[experimentalFeature])
|
|
193
|
-
.map(([, feature]) => feature);
|
|
194
|
-
}
|
|
195
187
|
}
|
|
196
188
|
exports.default = Agent;
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsOEVBUTRDO0FBRzVDLHFEQUE2QjtBQUM3Qix5REFBaUM7QUFDakMsMENBQWtEO0FBQ2xELGtHQUFzRDtBQUN0RCxvRUFBd0M7QUFFeEMsNEVBQW1EO0FBQ25ELHNEQUFrQztBQUNsQywwREFBc0M7QUFDdEMsa0dBQWlGO0FBRWpGLGdGQUE4RDtBQUM5RCxrRkFBeUQ7QUFFekQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBcUIsS0FBbUMsU0FBUSwyQkFBZ0I7SUFNOUU7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0gsWUFBWSxPQUFxQjtRQUMvQixNQUFNLFVBQVUsR0FBRywyQkFBZ0IsQ0FBQyxRQUFRLENBQUMsMkJBQWdCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDckYsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSw0Q0FBb0IsRUFBSyxDQUFDO1FBQ2hELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLHVCQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUVyRCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvRCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFD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
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { ActionConfiguration, ActionType, ModelCustomization } from '@forestadmin/forestadmin-client';
|
|
2
|
+
export default function getActions<TConfiguration extends ActionConfiguration>(type: ActionType, configuration: ModelCustomization[]): ModelCustomization<TConfiguration>[];
|
|
3
|
+
//# sourceMappingURL=get-actions.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const forestadmin_client_1 = require("@forestadmin/forestadmin-client");
|
|
4
|
+
function getActions(type, configuration) {
|
|
5
|
+
return configuration.filter(customization => customization.type === forestadmin_client_1.ModelCustomizationType.action &&
|
|
6
|
+
customization.configuration.type === type);
|
|
7
|
+
}
|
|
8
|
+
exports.default = getActions;
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvbW9kZWwtY3VzdG9taXphdGlvbnMvYWN0aW9ucy9nZXQtYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdFQUt5QztBQUV6QyxTQUF3QixVQUFVLENBQ2hDLElBQWdCLEVBQ2hCLGFBQW1DO0lBRW5DLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FDekIsYUFBYSxDQUFDLEVBQUUsQ0FDZCxhQUFhLENBQUMsSUFBSSxLQUFLLDJDQUFzQixDQUFDLE1BQU07UUFDbkQsYUFBb0QsQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLElBQUksQ0FDNUMsQ0FBQztBQUM1QyxDQUFDO0FBVEQsNkJBU0MifQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Plugin } from '@forestadmin/datasource-customizer';
|
|
2
|
+
import { ModelCustomization } from '@forestadmin/forestadmin-client';
|
|
3
|
+
export default class UpdateRecordActionsPlugin {
|
|
4
|
+
static VERSION: string;
|
|
5
|
+
static FEATURE: string;
|
|
6
|
+
static addUpdateRecordActions: Plugin<ModelCustomization[]>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=update-record-plugin.d.ts.map
|
|
@@ -0,0 +1,30 @@
|
|
|
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 get_actions_1 = __importDefault(require("../get-actions"));
|
|
8
|
+
class UpdateRecordActionsPlugin {
|
|
9
|
+
}
|
|
10
|
+
exports.default = UpdateRecordActionsPlugin;
|
|
11
|
+
_a = UpdateRecordActionsPlugin;
|
|
12
|
+
UpdateRecordActionsPlugin.VERSION = '1.0.0';
|
|
13
|
+
UpdateRecordActionsPlugin.FEATURE = 'update-record-actions';
|
|
14
|
+
UpdateRecordActionsPlugin.addUpdateRecordActions = (datasourceCustomizer, _, modelCustomizations) => {
|
|
15
|
+
const actions = (0, get_actions_1.default)('update-record', modelCustomizations);
|
|
16
|
+
actions.forEach(action => {
|
|
17
|
+
const collection = datasourceCustomizer.getCollection(action.modelName);
|
|
18
|
+
collection.addAction(action.name, {
|
|
19
|
+
scope: action.configuration.scope,
|
|
20
|
+
execute: async (context) => {
|
|
21
|
+
const { configuration: { configuration: { fields: fieldsToUpdate }, }, } = action;
|
|
22
|
+
const fields = fieldsToUpdate.reduce((acc, fieldToUpdate) => {
|
|
23
|
+
return { ...acc, [fieldToUpdate.fieldName]: fieldToUpdate.value };
|
|
24
|
+
}, {});
|
|
25
|
+
await context.collection.update(context.filter, fields);
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXJlY29yZC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvbW9kZWwtY3VzdG9taXphdGlvbnMvYWN0aW9ucy91cGRhdGUtcmVjb3JkL3VwZGF0ZS1yZWNvcmQtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQU1BLGlFQUF3QztBQUV4QyxNQUFxQix5QkFBeUI7O0FBQTlDLDRDQW1DQzs7QUFsQ2UsaUNBQU8sR0FBRyxPQUFPLENBQUM7QUFDbEIsaUNBQU8sR0FBRyx1QkFBdUIsQ0FBQztBQUVsQyxnREFBc0IsR0FBaUMsQ0FDbkUsb0JBQW9CLEVBQ3BCLENBQUMsRUFDRCxtQkFBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sT0FBTyxHQUFHLElBQUEscUJBQVUsRUFDeEIsZUFBZSxFQUNmLG1CQUFtQixDQUNwQixDQUFDO0lBRUYsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN2QixNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhFLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNoQyxLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLO1lBQ2pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBc0IsRUFBRSxFQUFFO2dCQUN4QyxNQUFNLEVBQ0osYUFBYSxFQUFFLEVBQ2IsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUMxQyxHQUNGLEdBQUcsTUFBTSxDQUFDO2dCQUVYLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLEVBQUU7b0JBQzFELE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3BFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFUCxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDMUQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIn0=
|
package/dist/services/model-customizations/{execute-webhook.js → actions/webhook/execute-webhook.js}
RENAMED
|
@@ -52,4 +52,4 @@ async function executeWebhook(action, context) {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
exports.default = executeWebhook;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS13ZWJob29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21vZGVsLWN1c3RvbWl6YXRpb25zL2FjdGlvbnMvd2ViaG9vay9leGVjdXRlLXdlYmhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx3RUFBNEU7QUFFNUUsNERBQXVEO0FBRXZELFNBQVMsWUFBWSxDQUNuQixNQUFxQixFQUNyQixPQUE0QztJQUU1QyxNQUFNLFVBQVUsR0FBRztRQUNqQixNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFO1NBQ3REO0tBQ0YsQ0FBQztJQUVGLFFBQVEsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7UUFDbEMsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLE1BQU07WUFDVCxPQUFPO2dCQUNMLEdBQUcsVUFBVTtnQkFDYixPQUFPO2FBQ1IsQ0FBQztRQUNKLEtBQUssUUFBUTtZQUNYLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQzthQUM3RTtZQUVELE9BQU87Z0JBQ0wsR0FBRyxVQUFVO2dCQUNiLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ25CLENBQUM7UUFDSjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUNuRTtBQUNILENBQUM7QUFFYyxLQUFLLFVBQVUsY0FBYyxDQUMxQyxNQUFxQixFQUNyQixPQUF5QjtJQUV6QixNQUFNLFdBQVcsR0FBRyxnQ0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FHckUsQ0FBQztJQUVKLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV0RCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTNDLElBQUk7UUFDRixNQUFNLG9CQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUMxRTtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsSUFBSyxDQUFtQixDQUFDLFFBQVEsRUFBRTtZQUNqQyxPQUFPO2dCQUNMLElBQUksRUFBRSxPQUFPO2dCQUNiLE9BQU8sRUFBRSw2Q0FBNkMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHO2FBQy9FLENBQUM7U0FDSDtRQUVELE9BQU87WUFDTCxJQUFJLEVBQUUsT0FBTztZQUNiLE9BQU8sRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDLE9BQU8sR0FBRztTQUN2RCxDQUFDO0tBQ0g7QUFDSCxDQUFDO0FBNUJELGlDQTRCQyJ9
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Plugin } from '@forestadmin/datasource-customizer';
|
|
2
|
+
import { ModelCustomization } from '@forestadmin/forestadmin-client';
|
|
3
|
+
export default class WebhookActionsPlugin {
|
|
4
|
+
static VERSION: string;
|
|
5
|
+
static FEATURE: string;
|
|
6
|
+
static addWebhookActions: Plugin<ModelCustomization[]>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=webhook-plugin.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
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 execute_webhook_1 = __importDefault(require("./execute-webhook"));
|
|
7
|
+
const get_actions_1 = __importDefault(require("../get-actions"));
|
|
8
|
+
class WebhookActionsPlugin {
|
|
9
|
+
}
|
|
10
|
+
exports.default = WebhookActionsPlugin;
|
|
11
|
+
WebhookActionsPlugin.VERSION = '1.0.0';
|
|
12
|
+
WebhookActionsPlugin.FEATURE = 'webhook-custom-actions';
|
|
13
|
+
WebhookActionsPlugin.addWebhookActions = (datasourceCustomizer, _, modelCustomizations) => {
|
|
14
|
+
const actions = (0, get_actions_1.default)('webhook', modelCustomizations);
|
|
15
|
+
actions.forEach(action => {
|
|
16
|
+
const collection = datasourceCustomizer.getCollection(action.modelName);
|
|
17
|
+
collection.addAction(action.name, {
|
|
18
|
+
scope: action.configuration.scope,
|
|
19
|
+
execute: context => (0, execute_webhook_1.default)(action, context),
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViaG9vay1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvbW9kZWwtY3VzdG9taXphdGlvbnMvYWN0aW9ucy93ZWJob29rL3dlYmhvb2stcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0Esd0VBQStDO0FBQy9DLGlFQUF3QztBQUV4QyxNQUFxQixvQkFBb0I7O0FBQXpDLHVDQW1CQztBQWxCZSw0QkFBTyxHQUFHLE9BQU8sQ0FBQztBQUNsQiw0QkFBTyxHQUFHLHdCQUF3QixDQUFDO0FBRW5DLHNDQUFpQixHQUFpQyxDQUM5RCxvQkFBb0IsRUFDcEIsQ0FBQyxFQUNELG1CQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBQSxxQkFBVSxFQUE2QixTQUFTLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUN2RixPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ2hDLEtBQUssRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUs7WUFDakMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBQSx5QkFBYyxFQUFDLE1BQU0sRUFBRSxPQUFPLENBQUM7U0FDcEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Plugin } from '@forestadmin/datasource-customizer';
|
|
2
|
+
import { ModelCustomization } from '@forestadmin/forestadmin-client';
|
|
3
|
+
import { AgentOptionsWithDefaults } from '../../types';
|
|
4
|
+
type ExperimentalOptions = AgentOptionsWithDefaults['experimental'];
|
|
5
|
+
export default class CustomizationPluginService {
|
|
6
|
+
private readonly client;
|
|
7
|
+
private readonly options;
|
|
8
|
+
constructor(agentOptions: AgentOptionsWithDefaults);
|
|
9
|
+
addCustomizations: Plugin<void>;
|
|
10
|
+
static makeAddCustomizations: (experimental: ExperimentalOptions) => Plugin<ModelCustomization[]>;
|
|
11
|
+
buildFeatures(): Record<string, string>;
|
|
12
|
+
static buildFeatures(experimental: ExperimentalOptions): Record<string, string> | null;
|
|
13
|
+
private static getFeatures;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=customization.d.ts.map
|
|
@@ -0,0 +1,60 @@
|
|
|
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 update_record_plugin_1 = __importDefault(require("./actions/update-record/update-record-plugin"));
|
|
7
|
+
const webhook_plugin_1 = __importDefault(require("./actions/webhook/webhook-plugin"));
|
|
8
|
+
const optionsToFeatureMapping = {
|
|
9
|
+
webhookCustomActions: webhook_plugin_1.default.FEATURE,
|
|
10
|
+
updateRecordCustomActions: update_record_plugin_1.default.FEATURE,
|
|
11
|
+
};
|
|
12
|
+
const featuresFormattedWithVersion = [
|
|
13
|
+
{ feature: webhook_plugin_1.default.FEATURE, version: webhook_plugin_1.default.VERSION },
|
|
14
|
+
{ feature: update_record_plugin_1.default.FEATURE, version: update_record_plugin_1.default.VERSION },
|
|
15
|
+
];
|
|
16
|
+
class CustomizationPluginService {
|
|
17
|
+
constructor(agentOptions) {
|
|
18
|
+
this.addCustomizations = async (datasourceCustomizer, _) => {
|
|
19
|
+
const { experimental } = this.options;
|
|
20
|
+
if (!experimental)
|
|
21
|
+
return;
|
|
22
|
+
const modelCustomizations = await this.client.modelCustomizationService.getConfiguration();
|
|
23
|
+
CustomizationPluginService.makeAddCustomizations(experimental)(datasourceCustomizer, _, modelCustomizations);
|
|
24
|
+
};
|
|
25
|
+
this.client = agentOptions.forestAdminClient;
|
|
26
|
+
this.options = agentOptions;
|
|
27
|
+
}
|
|
28
|
+
buildFeatures() {
|
|
29
|
+
return CustomizationPluginService.buildFeatures(this.options?.experimental);
|
|
30
|
+
}
|
|
31
|
+
static buildFeatures(experimental) {
|
|
32
|
+
const features = CustomizationPluginService.getFeatures(experimental);
|
|
33
|
+
const enabledFeaturesFormattedWithVersion = featuresFormattedWithVersion
|
|
34
|
+
.filter(({ feature }) => features?.includes(feature))
|
|
35
|
+
.reduce((acc, { feature, version }) => ({
|
|
36
|
+
...acc,
|
|
37
|
+
[feature]: version,
|
|
38
|
+
}), {});
|
|
39
|
+
return Object.keys(enabledFeaturesFormattedWithVersion).length
|
|
40
|
+
? enabledFeaturesFormattedWithVersion
|
|
41
|
+
: null;
|
|
42
|
+
}
|
|
43
|
+
static getFeatures(experimental) {
|
|
44
|
+
return Object.entries(optionsToFeatureMapping)
|
|
45
|
+
.filter(([experimentalFeature]) => experimental?.[experimentalFeature])
|
|
46
|
+
.map(([, feature]) => feature);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.default = CustomizationPluginService;
|
|
50
|
+
CustomizationPluginService.makeAddCustomizations = (experimental) => {
|
|
51
|
+
return (datasourceCustomizer, _, modelCustomizations) => {
|
|
52
|
+
if (experimental.webhookCustomActions) {
|
|
53
|
+
webhook_plugin_1.default.addWebhookActions(datasourceCustomizer, _, modelCustomizations);
|
|
54
|
+
}
|
|
55
|
+
if (experimental.updateRecordCustomActions) {
|
|
56
|
+
update_record_plugin_1.default.addUpdateRecordActions(datasourceCustomizer, _, modelCustomizations);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tb2RlbC1jdXN0b21pemF0aW9ucy9jdXN0b21pemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0Esd0dBQXFGO0FBQ3JGLHNGQUFvRTtBQUtwRSxNQUFNLHVCQUF1QixHQUE4QztJQUN6RSxvQkFBb0IsRUFBRSx3QkFBb0IsQ0FBQyxPQUFPO0lBQ2xELHlCQUF5QixFQUFFLDhCQUF5QixDQUFDLE9BQU87Q0FDN0QsQ0FBQztBQUVGLE1BQU0sNEJBQTRCLEdBQUc7SUFDbkMsRUFBRSxPQUFPLEVBQUUsd0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSx3QkFBb0IsQ0FBQyxPQUFPLEVBQUU7SUFDaEYsRUFBRSxPQUFPLEVBQUUsOEJBQXlCLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSw4QkFBeUIsQ0FBQyxPQUFPLEVBQUU7Q0FDM0YsQ0FBQztBQUVGLE1BQXFCLDBCQUEwQjtJQUs3QyxZQUFtQixZQUFzQztRQU1sRCxzQkFBaUIsR0FBaUIsS0FBSyxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxZQUFZO2dCQUFFLE9BQU87WUFFMUIsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUUzRiwwQkFBMEIsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsQ0FDNUQsb0JBQW9CLEVBQ3BCLENBQUMsRUFDRCxtQkFBbUIsQ0FDcEIsQ0FBQztRQUNKLENBQUMsQ0FBQztRQWhCQSxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztRQUU3QyxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztJQUM5QixDQUFDO0lBaUNNLGFBQWE7UUFDbEIsT0FBTywwQkFBMEIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxZQUFpQztRQUMzRCxNQUFNLFFBQVEsR0FBRywwQkFBMEIsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdEUsTUFBTSxtQ0FBbUMsR0FBRyw0QkFBNEI7YUFDckUsTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNwRCxNQUFNLENBQ0wsQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUIsR0FBRyxHQUFHO1lBQ04sQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPO1NBQ25CLENBQUMsRUFDRixFQUFFLENBQ0gsQ0FBQztRQUVKLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLE1BQU07WUFDNUQsQ0FBQyxDQUFDLG1DQUFtQztZQUNyQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ1gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBaUM7UUFDMUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDO2FBQzNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQzthQUN0RSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7O0FBcEVILDZDQXFFQztBQTdDZSxnREFBcUIsR0FFQyxDQUFDLFlBQWlDLEVBQUUsRUFBRTtJQUN4RSxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLEVBQUU7UUFDdEQsSUFBSSxZQUFZLENBQUMsb0JBQW9CLEVBQUU7WUFDckMsd0JBQW9CLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7U0FDdEY7UUFFRCxJQUFJLFlBQVksQ0FBQyx5QkFBeUIsRUFBRTtZQUMxQyw4QkFBeUIsQ0FBQyxzQkFBc0IsQ0FDOUMsb0JBQW9CLEVBQ3BCLENBQUMsRUFDRCxtQkFBbUIsQ0FDcEIsQ0FBQztTQUNIO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
|
package/dist/types.d.ts
CHANGED
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBOEJBLElBQVksUUFRWDtBQVJELFdBQVksUUFBUTtJQUNsQixxREFBZ0IsQ0FBQTtJQUNoQixtREFBZSxDQUFBO0lBQ2YsdUVBQXlCLENBQUE7SUFDekIsbURBQWUsQ0FBQTtJQUNmLGlEQUFjLENBQUE7SUFDZCxxQ0FBUSxDQUFBO0lBQ1IsMkRBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVJXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBUW5CO0FBRUQsSUFBWSxTQU9YO0FBUEQsV0FBWSxTQUFTO0lBQ25CLGlHQUFpRztJQUNqRyx5REFBZ0IsQ0FBQTtJQUNoQiwyREFBaUIsQ0FBQTtJQUNqQix1REFBZSxDQUFBO0lBQ2YsNkRBQWtCLENBQUE7SUFDbEIseURBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQVBXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBT3BCIn0=
|
|
@@ -1,7 +1,6 @@
|
|
|
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, features: string
|
|
5
|
-
private static buildFeatures;
|
|
4
|
+
static buildSchema(dataSource: DataSource, features: Record<string, string> | null): Promise<ForestSchema>;
|
|
6
5
|
}
|
|
7
6
|
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -4,7 +4,6 @@ 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"));
|
|
8
7
|
class SchemaGenerator {
|
|
9
8
|
static async buildSchema(dataSource, features) {
|
|
10
9
|
const { version } = require('../../../package.json'); // eslint-disable-line @typescript-eslint/no-var-requires,global-require,max-len
|
|
@@ -15,7 +14,7 @@ class SchemaGenerator {
|
|
|
15
14
|
metadata: {
|
|
16
15
|
liana: 'forest-nodejs-agent',
|
|
17
16
|
liana_version: version,
|
|
18
|
-
liana_features:
|
|
17
|
+
liana_features: features,
|
|
19
18
|
stack: {
|
|
20
19
|
engine: 'nodejs',
|
|
21
20
|
engine_version: process.versions && process.versions.node,
|
|
@@ -23,17 +22,6 @@ class SchemaGenerator {
|
|
|
23
22
|
},
|
|
24
23
|
};
|
|
25
24
|
}
|
|
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
|
-
}
|
|
37
25
|
}
|
|
38
26
|
exports.default = SchemaGenerator;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2ZvcmVzdC1zY2hlbWEvZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0Esa0ZBQStEO0FBRS9ELE1BQXFCLGVBQWU7SUFDbEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQ3RCLFVBQXNCLEVBQ3RCLFFBQXVDO1FBRXZDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLGdGQUFnRjtRQUV0SSxPQUFPO1lBQ0wsV0FBVyxFQUFFLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDNUIsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7aUJBQ3hCLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDNUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsOEJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3REO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLEtBQUssRUFBRSxxQkFBcUI7Z0JBQzVCLGFBQWEsRUFBRSxPQUFPO2dCQUN0QixjQUFjLEVBQUUsUUFBUTtnQkFDeEIsS0FBSyxFQUFFO29CQUNMLE1BQU0sRUFBRSxRQUFRO29CQUNoQixjQUFjLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUk7aUJBQzFEO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBeEJELGtDQXdCQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/agent",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
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.9.1",
|
|
18
18
|
"@forestadmin/datasource-toolkit": "1.5.0",
|
|
19
|
-
"@forestadmin/forestadmin-client": "1.
|
|
19
|
+
"@forestadmin/forestadmin-client": "1.5.0",
|
|
20
20
|
"@koa/cors": "^4.0.0",
|
|
21
21
|
"@koa/router": "^12.0.0",
|
|
22
22
|
"forest-ip-utils": "^1.0.1",
|
|
@@ -1,12 +0,0 @@
|
|
|
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
|
|
@@ -1,38 +0,0 @@
|
|
|
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
|
|
File without changes
|