@forestadmin/agent 1.9.0-alpha-webhook-custom-actions.7 → 1.9.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 +0 -3
- package/dist/agent.js +5 -17
- package/dist/framework-mounter.d.ts +4 -2
- package/dist/framework-mounter.js +23 -9
- package/dist/services/serializer.js +1 -1
- package/dist/services/type-overrides.d.ts +8 -0
- package/dist/services/type-overrides.js +3 -0
- package/dist/types.d.ts +1 -3
- package/dist/types.js +1 -1
- package/dist/utils/forest-schema/generator.d.ts +1 -2
- package/dist/utils/forest-schema/generator.js +2 -15
- package/dist/utils/options-validator.js +18 -10
- 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 +0 -5
- package/dist/services/model-customizations/execute-webhook.js +0 -55
package/dist/agent.d.ts
CHANGED
|
@@ -15,8 +15,6 @@ 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;
|
|
20
18
|
/**
|
|
21
19
|
* Create a new Agent Builder.
|
|
22
20
|
* If any options are missing, the default will be applied:
|
|
@@ -84,6 +82,5 @@ export default class Agent<S extends TSchema = TSchema> extends FrameworkMounter
|
|
|
84
82
|
* Send the apimap to forest admin server
|
|
85
83
|
*/
|
|
86
84
|
private sendSchema;
|
|
87
|
-
private buildSchemaFeatures;
|
|
88
85
|
}
|
|
89
86
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/agent.js
CHANGED
|
@@ -13,7 +13,6 @@ 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"));
|
|
17
16
|
const generator_1 = __importDefault(require("./utils/forest-schema/generator"));
|
|
18
17
|
const options_validator_1 = __importDefault(require("./utils/options-validator"));
|
|
19
18
|
/**
|
|
@@ -48,25 +47,22 @@ class Agent extends framework_mounter_1.default {
|
|
|
48
47
|
super(allOptions.prefix, allOptions.logger);
|
|
49
48
|
this.options = allOptions;
|
|
50
49
|
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);
|
|
54
50
|
}
|
|
55
51
|
/**
|
|
56
52
|
* Start the agent.
|
|
57
53
|
*/
|
|
58
54
|
async start() {
|
|
59
55
|
const { isProduction, logger, skipSchemaUpdate, typingsPath, typingsMaxDepth } = this.options;
|
|
60
|
-
await this.
|
|
61
|
-
const dataSource = await this.nocodeCustomizer.getDataSource(logger);
|
|
56
|
+
const dataSource = await this.customizer.getDataSource(logger);
|
|
62
57
|
const [router] = await Promise.all([
|
|
63
58
|
this.getRouter(dataSource),
|
|
64
59
|
!skipSchemaUpdate ? this.sendSchema(dataSource) : Promise.resolve(),
|
|
65
60
|
!isProduction && typingsPath
|
|
66
61
|
? this.customizer.updateTypesOnFileSystem(typingsPath, typingsMaxDepth)
|
|
67
62
|
: Promise.resolve(),
|
|
63
|
+
this.options.forestAdminClient.subscribeToServerEvents(),
|
|
68
64
|
]);
|
|
69
|
-
|
|
65
|
+
await this.mount(router);
|
|
70
66
|
}
|
|
71
67
|
/**
|
|
72
68
|
* Add a datasource
|
|
@@ -149,7 +145,7 @@ class Agent extends framework_mounter_1.default {
|
|
|
149
145
|
}
|
|
150
146
|
}
|
|
151
147
|
else {
|
|
152
|
-
schema = await generator_1.default.buildSchema(dataSource
|
|
148
|
+
schema = await generator_1.default.buildSchema(dataSource);
|
|
153
149
|
const pretty = (0, json_stringify_pretty_compact_1.default)(schema, { maxLength: 100 });
|
|
154
150
|
await (0, promises_1.writeFile)(schemaPath, pretty, { encoding: 'utf-8' });
|
|
155
151
|
}
|
|
@@ -160,14 +156,6 @@ class Agent extends framework_mounter_1.default {
|
|
|
160
156
|
: 'Schema was not updated since last run';
|
|
161
157
|
this.options.logger('Info', message);
|
|
162
158
|
}
|
|
163
|
-
buildSchemaFeatures() {
|
|
164
|
-
const mapping = {
|
|
165
|
-
webhookCustomActions: action_customization_1.default.FEATURE,
|
|
166
|
-
};
|
|
167
|
-
return Object.entries(mapping)
|
|
168
|
-
.filter(([experimentalFeature]) => this.options.experimental?.[experimentalFeature])
|
|
169
|
-
.map(([, feature]) => feature);
|
|
170
|
-
}
|
|
171
159
|
}
|
|
172
160
|
exports.default = Agent;
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsOEVBUTRDO0FBRzVDLHFEQUE2QjtBQUM3Qix5REFBaUM7QUFDakMsMENBQWtEO0FBQ2xELGtHQUFzRDtBQUN0RCxvRUFBd0M7QUFFeEMsNEVBQW1EO0FBQ25ELHNEQUFrQztBQUNsQywwREFBc0M7QUFFdEMsZ0ZBQThEO0FBQzlELGtGQUF5RDtBQUV6RDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFxQixLQUFtQyxTQUFRLDJCQUFnQjtJQUk5RTs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxZQUFZLE9BQXFCO1FBQy9CLE1BQU0sVUFBVSxHQUFHLDJCQUFnQixDQUFDLFFBQVEsQ0FBQywyQkFBZ0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNyRixLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLDRDQUFvQixFQUFLLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUU5RixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDMUIsQ0FBQyxnQkFBZ0IsQ0FBQyxD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
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
import { Logger } from '@forestadmin/datasource-toolkit';
|
|
3
3
|
import Router from '@koa/router';
|
|
4
4
|
export default class FrameworkMounter {
|
|
5
|
-
private readonly
|
|
5
|
+
private readonly onFirstStart;
|
|
6
|
+
private readonly onEachStart;
|
|
6
7
|
private readonly onStop;
|
|
7
8
|
private readonly prefix;
|
|
8
9
|
private readonly logger;
|
|
9
10
|
/** Compute the prefix that the main router should be mounted at in the client's application */
|
|
10
11
|
private get completeMountPrefix();
|
|
11
12
|
constructor(prefix: string, logger: Logger);
|
|
12
|
-
|
|
13
|
+
protected mount(router: Router): Promise<void>;
|
|
14
|
+
protected remount(router: Router): Promise<void>;
|
|
13
15
|
stop(): Promise<void>;
|
|
14
16
|
/**
|
|
15
17
|
* Expose the agent on a given port and host
|
|
@@ -36,13 +36,19 @@ class FrameworkMounter {
|
|
|
36
36
|
return path_1.default.posix.join('/', this.prefix, 'forest');
|
|
37
37
|
}
|
|
38
38
|
constructor(prefix, logger) {
|
|
39
|
-
this.
|
|
39
|
+
this.onFirstStart = [];
|
|
40
|
+
this.onEachStart = [];
|
|
40
41
|
this.onStop = [];
|
|
41
42
|
this.prefix = prefix;
|
|
42
43
|
this.logger = logger;
|
|
43
44
|
}
|
|
44
|
-
async
|
|
45
|
-
for (const task of this.
|
|
45
|
+
async mount(router) {
|
|
46
|
+
for (const task of this.onFirstStart)
|
|
47
|
+
await task(); // eslint-disable-line no-await-in-loop
|
|
48
|
+
await this.remount(router);
|
|
49
|
+
}
|
|
50
|
+
async remount(router) {
|
|
51
|
+
for (const task of this.onEachStart)
|
|
46
52
|
await task(router); // eslint-disable-line no-await-in-loop
|
|
47
53
|
}
|
|
48
54
|
async stop() {
|
|
@@ -58,7 +64,7 @@ class FrameworkMounter {
|
|
|
58
64
|
mountOnStandaloneServer(port, host) {
|
|
59
65
|
const chosenPort = port || Number(process.env.PORT) || 3351;
|
|
60
66
|
const server = (0, http_1.createServer)(this.getConnectCallback(true));
|
|
61
|
-
this.
|
|
67
|
+
this.onFirstStart.push(() => {
|
|
62
68
|
return new Promise((resolve, reject) => {
|
|
63
69
|
server.listen(chosenPort, host, () => {
|
|
64
70
|
this.logger('Info', `Successfully mounted on Standalone server (http://${host ?? '0.0.0.0'}:${port})`);
|
|
@@ -97,11 +103,19 @@ class FrameworkMounter {
|
|
|
97
103
|
*/
|
|
98
104
|
mountOnKoa(koa) {
|
|
99
105
|
const parentRouter = new router_1.default({ prefix: this.completeMountPrefix });
|
|
106
|
+
// Default route middleware, it will be removed after starting the agent
|
|
107
|
+
parentRouter.get('/', ctx => {
|
|
108
|
+
ctx.response.status = 200;
|
|
109
|
+
ctx.response.body = { error: 'Agent is not started' };
|
|
110
|
+
});
|
|
111
|
+
this.onEachStart.push(async (driverRouter) => {
|
|
112
|
+
// Unmounts previous routes
|
|
113
|
+
parentRouter.stack = [];
|
|
114
|
+
// Mounts new ones
|
|
115
|
+
parentRouter.use(driverRouter.routes());
|
|
116
|
+
});
|
|
100
117
|
koa.use(parentRouter.routes());
|
|
101
118
|
this.logger('Info', `Successfully mounted on Koa`);
|
|
102
|
-
this.onStart.push(async (router) => {
|
|
103
|
-
parentRouter.use(router.routes());
|
|
104
|
-
});
|
|
105
119
|
return this;
|
|
106
120
|
}
|
|
107
121
|
/**
|
|
@@ -144,7 +158,7 @@ class FrameworkMounter {
|
|
|
144
158
|
}
|
|
145
159
|
getConnectCallback(nested) {
|
|
146
160
|
let handler = null;
|
|
147
|
-
this.
|
|
161
|
+
this.onEachStart.push(async (driverRouter) => {
|
|
148
162
|
let router = driverRouter;
|
|
149
163
|
if (nested) {
|
|
150
164
|
router = new router_1.default({ prefix: this.completeMountPrefix }).use(router.routes());
|
|
@@ -163,4 +177,4 @@ class FrameworkMounter {
|
|
|
163
177
|
}
|
|
164
178
|
}
|
|
165
179
|
exports.default = FrameworkMounter;
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLW1vdW50ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZnJhbWV3b3JrLW1vdW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLHlEQUFpQztBQUNqQywrQkFBb0M7QUFDcEMsOENBQXNCO0FBQ3RCLGdEQUF3QjtBQUl4QixNQUFxQixnQkFBZ0I7SUFPbkMsK0ZBQStGO0lBQy9GLElBQVksbUJBQW1CO1FBQzdCLE9BQU8sY0FBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFlBQVksTUFBYyxFQUFFLE1BQWM7UUFYekIsaUJBQVksR0FBNEIsRUFBRSxDQUFDO1FBQzNDLGdCQUFXLEdBQTBDLEVBQUUsQ0FBQztRQUN4RCxXQUFNLEdBQTRCLEVBQUUsQ0FBQztRQVVwRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRVMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFjO1FBQ2xDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFlBQVk7WUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsdUNBQXVDO1FBRTNGLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRVMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFjO1FBQ3BDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHVDQUF1QztJQUNsRyxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUs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
|
|
@@ -120,4 +120,4 @@ class Serializer {
|
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
exports.default = Serializer;
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9zZXJpYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsd0VBS3lDO0FBQ3pDLDhFQUFvRDtBQUNwRCxnREFBd0I7QUFHeEIscURBQWtDO0FBSWxDLE1BQXFCLFVBQVU7SUFBL0I7UUFDRSw2RUFBNkU7UUFDNUQsZ0JBQVcsR0FBaUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQTJJN0YsQ0FBQztJQXpJQyxTQUFTLENBQUMsVUFBc0IsRUFBRSxJQUErQjtRQUMvRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFDLFVBQXNCLEVBQUUsSUFBYTtRQUMvQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELDJCQUEyQixDQUN6QixVQUFzQixFQUN0QixJQUFrQixFQUNsQixXQUFtQjtRQUVuQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQWUsQ0FBQztRQUUvRCxJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBb0IsQ0FBQztZQUNqRCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLE1BQWtCLEVBQUUsRUFBRTtn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
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import JSONAPISerializer from 'json-api-serializer';
|
|
2
|
+
export interface JsonApiRelationshipOptionsExt extends JSONAPISerializer.RelationshipOptions {
|
|
3
|
+
deserialize?: (data: Record<string, unknown>) => unknown;
|
|
4
|
+
}
|
|
5
|
+
export interface JsonApiOptionsExt extends JSONAPISerializer.Options {
|
|
6
|
+
relationships: Record<string, JsonApiRelationshipOptionsExt>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=type-overrides.d.ts.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1vdmVycmlkZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvdHlwZS1vdmVycmlkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
package/dist/types.d.ts
CHANGED
|
@@ -15,12 +15,10 @@ export type AgentOptions = {
|
|
|
15
15
|
schemaPath?: string;
|
|
16
16
|
typingsPath?: string | null;
|
|
17
17
|
typingsMaxDepth?: number;
|
|
18
|
+
instantCacheRefresh?: boolean;
|
|
18
19
|
permissionsCacheDurationInSeconds?: number;
|
|
19
20
|
skipSchemaUpdate?: boolean;
|
|
20
21
|
forestAdminClient?: ForestAdminClient;
|
|
21
|
-
experimental?: {
|
|
22
|
-
webhookCustomActions?: boolean;
|
|
23
|
-
};
|
|
24
22
|
};
|
|
25
23
|
export type AgentOptionsWithDefaults = Readonly<Required<AgentOptions>>;
|
|
26
24
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMEJBLElBQVksUUFRWDtBQVJELFdBQVksUUFBUTtJQUNsQixxREFBZ0IsQ0FBQTtJQUNoQixtREFBZSxDQUFBO0lBQ2YsdUVBQXlCLENBQUE7SUFDekIsbURBQWUsQ0FBQTtJQUNmLGlEQUFjLENBQUE7SUFDZCxxQ0FBUSxDQUFBO0lBQ1IsMkRBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVJXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBUW5CO0FBRUQsSUFBWSxTQU9YO0FBUEQsV0FBWSxTQUFTO0lBQ25CLGlHQUFpRztJQUNqRyx5REFBZ0IsQ0FBQTtJQUNoQiwyREFBaUIsQ0FBQTtJQUNqQix1REFBZSxDQUFBO0lBQ2YsNkRBQWtCLENBQUE7SUFDbEIseURBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQVBXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBT3BCIn0=
|
|
@@ -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
|
|
5
|
-
private static buildFeatures;
|
|
4
|
+
static buildSchema(dataSource: DataSource): Promise<ForestSchema>;
|
|
6
5
|
}
|
|
7
6
|
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -4,9 +4,8 @@ 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
|
-
static async buildSchema(dataSource
|
|
8
|
+
static async buildSchema(dataSource) {
|
|
10
9
|
const { version } = require('../../../package.json'); // eslint-disable-line @typescript-eslint/no-var-requires,global-require,max-len
|
|
11
10
|
return {
|
|
12
11
|
collections: await Promise.all([...dataSource.collections]
|
|
@@ -15,7 +14,6 @@ class SchemaGenerator {
|
|
|
15
14
|
metadata: {
|
|
16
15
|
liana: 'forest-nodejs-agent',
|
|
17
16
|
liana_version: version,
|
|
18
|
-
liana_features: SchemaGenerator.buildFeatures(features),
|
|
19
17
|
stack: {
|
|
20
18
|
engine: 'nodejs',
|
|
21
19
|
engine_version: process.versions && process.versions.node,
|
|
@@ -23,17 +21,6 @@ class SchemaGenerator {
|
|
|
23
21
|
},
|
|
24
22
|
};
|
|
25
23
|
}
|
|
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
24
|
}
|
|
38
25
|
exports.default = SchemaGenerator;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2ZvcmVzdC1zY2hlbWEvZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0Esa0ZBQStEO0FBRS9ELE1BQXFCLGVBQWU7SUFDbEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBc0I7UUFDN0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsZ0ZBQWdGO1FBRXRJLE9BQU87WUFDTCxXQUFXLEVBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUM1QixDQUFDLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQztpQkFDeEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM1QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyw4QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdEQ7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLHFCQUFxQjtnQkFDNUIsYUFBYSxFQUFFLE9BQU87Z0JBQ3RCLEtBQUssRUFBRTtvQkFDTCxNQUFNLEVBQUUsUUFBUTtvQkFDaEIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO2lCQUMxRDthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXBCRCxrQ0FvQkMifQ==
|
|
@@ -7,6 +7,8 @@ const forestadmin_client_1 = __importDefault(require("@forestadmin/forestadmin-c
|
|
|
7
7
|
const fs_1 = require("fs");
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const DEFAULT_MINIMUM_CACHE_DURATION = 60;
|
|
10
|
+
// One year cache duration when using events
|
|
11
|
+
const DEFAULT_CACHE_DURATION_WITH_EVENTS = 31560000;
|
|
10
12
|
class OptionsValidator {
|
|
11
13
|
static withDefaults(options) {
|
|
12
14
|
const copyOptions = { ...options };
|
|
@@ -22,10 +24,22 @@ class OptionsValidator {
|
|
|
22
24
|
copyOptions.forestServerUrl = copyOptions.forestServerUrl || 'https://api.forestadmin.com';
|
|
23
25
|
copyOptions.typingsMaxDepth = copyOptions.typingsMaxDepth ?? 5;
|
|
24
26
|
copyOptions.prefix = copyOptions.prefix || '';
|
|
25
|
-
copyOptions.permissionsCacheDurationInSeconds =
|
|
26
|
-
copyOptions.permissionsCacheDurationInSeconds ?? 15 * 60;
|
|
27
27
|
copyOptions.loggerLevel = copyOptions.loggerLevel || 'Info';
|
|
28
28
|
copyOptions.skipSchemaUpdate = copyOptions.skipSchemaUpdate || false;
|
|
29
|
+
copyOptions.instantCacheRefresh = copyOptions.instantCacheRefresh ?? true;
|
|
30
|
+
if (copyOptions.instantCacheRefresh && copyOptions.permissionsCacheDurationInSeconds) {
|
|
31
|
+
copyOptions.logger('Warn', 'ignoring options.permissionsCacheDurationInSeconds: when using ' +
|
|
32
|
+
'options.instantCacheRefresh=true permissions caches are instantly refreshed');
|
|
33
|
+
}
|
|
34
|
+
// When using the event source to refresh cache we set a one year cache duration
|
|
35
|
+
copyOptions.permissionsCacheDurationInSeconds = copyOptions.instantCacheRefresh
|
|
36
|
+
? DEFAULT_CACHE_DURATION_WITH_EVENTS
|
|
37
|
+
: copyOptions.permissionsCacheDurationInSeconds ?? DEFAULT_MINIMUM_CACHE_DURATION * 15;
|
|
38
|
+
if (copyOptions.permissionsCacheDurationInSeconds < DEFAULT_MINIMUM_CACHE_DURATION) {
|
|
39
|
+
copyOptions.permissionsCacheDurationInSeconds = DEFAULT_MINIMUM_CACHE_DURATION;
|
|
40
|
+
copyOptions.logger('Warn', 'ignoring options.permissionsCacheDurationInSeconds: ' +
|
|
41
|
+
`minimum value is ${DEFAULT_MINIMUM_CACHE_DURATION} seconds`);
|
|
42
|
+
}
|
|
29
43
|
copyOptions.forestAdminClient =
|
|
30
44
|
copyOptions.forestAdminClient ||
|
|
31
45
|
(0, forestadmin_client_1.default)({
|
|
@@ -33,14 +47,8 @@ class OptionsValidator {
|
|
|
33
47
|
forestServerUrl: copyOptions.forestServerUrl,
|
|
34
48
|
logger: copyOptions.logger,
|
|
35
49
|
permissionsCacheDurationInSeconds: copyOptions.permissionsCacheDurationInSeconds,
|
|
50
|
+
instantCacheRefresh: copyOptions.instantCacheRefresh,
|
|
36
51
|
});
|
|
37
|
-
copyOptions.permissionsCacheDurationInSeconds =
|
|
38
|
-
copyOptions.permissionsCacheDurationInSeconds ?? 15 * DEFAULT_MINIMUM_CACHE_DURATION;
|
|
39
|
-
if (copyOptions.permissionsCacheDurationInSeconds < DEFAULT_MINIMUM_CACHE_DURATION) {
|
|
40
|
-
copyOptions.permissionsCacheDurationInSeconds = DEFAULT_MINIMUM_CACHE_DURATION;
|
|
41
|
-
copyOptions.logger('Warn', 'ignoring options.permissionsCacheDurationInSeconds: ' +
|
|
42
|
-
`minimum value is ${DEFAULT_MINIMUM_CACHE_DURATION} seconds`);
|
|
43
|
-
}
|
|
44
52
|
return {
|
|
45
53
|
loggerLevel: 'Info',
|
|
46
54
|
...copyOptions,
|
|
@@ -109,4 +117,4 @@ OptionsValidator.loggerPrefix = {
|
|
|
109
117
|
Warn: '\x1b[33mwarning:\x1b[0m',
|
|
110
118
|
Error: '\x1b[31merror:\x1b[0m',
|
|
111
119
|
};
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvb3B0aW9ucy12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5RkFBc0U7QUFDdEUsMkJBQWdDO0FBQ2hDLGdEQUF3QjtBQUl4QixNQUFNLDhCQUE4QixHQUFHLEVBQUUsQ0FBQztBQUMxQyw0Q0FBNEM7QUFDNUMsTUFBTSxrQ0FBa0MsR0FBRyxRQUFRLENBQUM7QUFFcEQsTUFBcUIsZ0JBQWdCO0lBUW5DLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBcUI7UUFDdkMsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBRW5DLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO1lBQ2xELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTlDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUN4RCxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUMzRDtRQUNILENBQUMsQ0FBQztRQUVGLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sSUFBSSxhQUFhLENBQUM7UUFDekQsV0FBVyxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsVUFBVSxJQUFJLDBCQUEwQixDQUFDO1FBQzlFLFdBQVcsQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLGVBQWUsSUFBSSw2QkFBNkIsQ0FBQztRQUMzRixXQUFXLENBQUMsZUFBZSxHQUFHLFdB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/agent",
|
|
3
|
-
"version": "1.9.0
|
|
3
|
+
"version": "1.9.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.7.2",
|
|
18
18
|
"@forestadmin/datasource-toolkit": "1.5.0",
|
|
19
|
-
"@forestadmin/forestadmin-client": "1.2.0
|
|
19
|
+
"@forestadmin/forestadmin-client": "1.2.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
|
|
@@ -1,5 +0,0 @@
|
|
|
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
|
|
@@ -1,55 +0,0 @@
|
|
|
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.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS13ZWJob29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21vZGVsLWN1c3RvbWl6YXRpb25zL2V4ZWN1dGUtd2ViaG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHdFQUE0RTtBQUU1RSw0REFBdUQ7QUFFdkQsU0FBUyxZQUFZLENBQ25CLE1BQXFCLEVBQ3JCLE9BQTRDO0lBRTVDLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLE1BQU0sRUFBRTtZQUNOLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUU7U0FDdEQ7S0FDRixDQUFDO0lBRUYsUUFBUSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRTtRQUNsQyxLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssTUFBTTtZQUNULE9BQU87Z0JBQ0wsR0FBRyxVQUFVO2dCQUNiLE9BQU87YUFDUixDQUFDO1FBQ0osS0FBSyxRQUFRO1lBQ1gsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO2FBQzdFO1lBRUQsT0FBTztnQkFDTCxHQUFHLFVBQVU7Z0JBQ2IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDbkIsQ0FBQztRQUNKO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ25FO0FBQ0gsQ0FBQztBQUVjLEtBQUssVUFBVSxjQUFjLENBQzFDLE1BQXFCLEVBQ3JCLE9BQXlCO0lBRXpCLE1BQU0sV0FBVyxHQUFHLGdDQUFXLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUdyRSxDQUFDO0lBRUosTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXRELE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFM0MsSUFBSTtRQUNGLE1BQU0sb0JBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDNUQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLElBQUssQ0FBbUIsQ0FBQyxRQUFRLEVBQUU7WUFDakMsT0FBTztnQkFDTCxJQUFJLEVBQUUsT0FBTztnQkFDYixPQUFPLEVBQUUsbUNBQW1DLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRzthQUNyRSxDQUFDO1NBQ0g7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixPQUFPLEVBQUUsaUNBQWlDLENBQUMsQ0FBQyxPQUFPLEdBQUc7U0FDdkQsQ0FBQztLQUNIO0FBQ0gsQ0FBQztBQTVCRCxpQ0E0QkMifQ==
|