@forestadmin/agent 1.0.0-beta.27 → 1.0.0-beta.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # @forestadmin/agent [1.0.0-beta.28](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.27...@forestadmin/agent@1.0.0-beta.28) (2022-05-18)
2
+
3
+
4
+ ### Features
5
+
6
+ * compatibility with Express.js, Koa, Fastify & NestJS ([#300](https://github.com/ForestAdmin/agent-nodejs/issues/300)) ([904639e](https://github.com/ForestAdmin/agent-nodejs/commit/904639ec66f4116b3c5557d83ec43656e55ccbbc))
7
+
1
8
  # @forestadmin/agent [1.0.0-beta.27](https://github.com/ForestAdmin/agent-nodejs/compare/@forestadmin/agent@1.0.0-beta.26...@forestadmin/agent@1.0.0-beta.27) (2022-05-17)
2
9
 
3
10
 
@@ -68,11 +68,33 @@ export default class AgentBuilder<S extends TSchema = TSchema> {
68
68
  * @param port port that should be used.
69
69
  * @param host host that should be used.
70
70
  */
71
- mountStandalone(port?: number, host?: string): this;
71
+ mountOnStandaloneServer(port?: number, host?: string): this;
72
+ /**
73
+ * Mount the agent on an express app.
74
+ * @param express instance of the express app or router.
75
+ */
76
+ mountOnExpress(express: any): this;
77
+ /**
78
+ * Mount the agent on a fastify app
79
+ * @param fastify instance of the fastify app, or of a fastify context
80
+ */
81
+ mountOnFastify(fastify: any): this;
82
+ /**
83
+ * Mount the agent on a koa app
84
+ * @param koa instance of a koa app or a koa Router.
85
+ */
86
+ mountOnKoa(koa: any): this;
87
+ /**
88
+ * Mount the agent on a NestJS app
89
+ * @param nestJs instance of a NestJS application
90
+ */
91
+ mountOnNestJs(nestJs: any): this;
72
92
  /**
73
93
  * Start the agent.
74
94
  */
75
95
  start(): Promise<void>;
76
96
  stop(): Promise<void>;
97
+ private useCallbackOnFastify;
98
+ private getConnectCallback;
77
99
  }
78
100
  //# sourceMappingURL=agent.d.ts.map
@@ -7,6 +7,7 @@ const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
7
7
  const promises_1 = require("fs/promises");
8
8
  const koa_1 = __importDefault(require("koa"));
9
9
  const router_1 = __importDefault(require("@koa/router"));
10
+ const express_1 = __importDefault(require("@fastify/express"));
10
11
  const http_1 = __importDefault(require("http"));
11
12
  const collection_1 = __importDefault(require("./collection"));
12
13
  const decorators_stack_1 = __importDefault(require("./decorators-stack"));
@@ -101,22 +102,67 @@ class AgentBuilder {
101
102
  * @param port port that should be used.
102
103
  * @param host host that should be used.
103
104
  */
104
- mountStandalone(port = 3351, host = 'localhost') {
105
- let server;
106
- this.mounts.push(async (router) => {
107
- const koa = new koa_1.default();
108
- const parentRouter = new router_1.default({ prefix: '/forest' });
109
- parentRouter.use(router.routes());
110
- koa.use(parentRouter.routes());
111
- server = http_1.default.createServer(koa.callback());
112
- server.listen(port, host);
113
- this.options.logger('Info', `Agent mounted at http://${host}:${port} (Standalone)`);
114
- });
105
+ mountOnStandaloneServer(port = 3351, host = 'localhost') {
106
+ const server = http_1.default.createServer(this.getConnectCallback(true));
107
+ server.listen(port, host);
108
+ this.options.logger('Info', `Successfully mounted on Standalone server (http://${host}:${port})`);
115
109
  this.termination.push(async () => {
116
110
  server.close();
117
111
  });
118
112
  return this;
119
113
  }
114
+ /**
115
+ * Mount the agent on an express app.
116
+ * @param express instance of the express app or router.
117
+ */
118
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
119
+ mountOnExpress(express) {
120
+ express.use('/forest', this.getConnectCallback(false));
121
+ this.options.logger('Info', `Successfully mounted on Express.js`);
122
+ return this;
123
+ }
124
+ /**
125
+ * Mount the agent on a fastify app
126
+ * @param fastify instance of the fastify app, or of a fastify context
127
+ */
128
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
129
+ mountOnFastify(fastify) {
130
+ const callback = this.getConnectCallback(false);
131
+ this.useCallbackOnFastify(fastify, callback);
132
+ this.options.logger('Info', `Successfully mounted on Fastify`);
133
+ return this;
134
+ }
135
+ /**
136
+ * Mount the agent on a koa app
137
+ * @param koa instance of a koa app or a koa Router.
138
+ */
139
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
140
+ mountOnKoa(koa) {
141
+ const parentRouter = new router_1.default({ prefix: '/forest' });
142
+ koa.use(parentRouter.routes());
143
+ this.options.logger('Info', `Successfully mounted on Koa`);
144
+ this.mounts.push(async (router) => {
145
+ parentRouter.use(router.routes());
146
+ });
147
+ return this;
148
+ }
149
+ /**
150
+ * Mount the agent on a NestJS app
151
+ * @param nestJs instance of a NestJS application
152
+ */
153
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
154
+ mountOnNestJs(nestJs) {
155
+ const adapter = nestJs.getHttpAdapter();
156
+ const callback = this.getConnectCallback(false);
157
+ if (adapter.constructor.name === 'ExpressAdapter') {
158
+ nestJs.use('/forest', callback);
159
+ }
160
+ else {
161
+ this.useCallbackOnFastify(nestJs, callback);
162
+ }
163
+ this.options.logger('Info', `Successfully mounted on NestJS`);
164
+ return this;
165
+ }
120
166
  /**
121
167
  * Start the agent.
122
168
  */
@@ -141,6 +187,48 @@ class AgentBuilder {
141
187
  for (const task of this.termination)
142
188
  await task(); // eslint-disable-line no-await-in-loop
143
189
  }
190
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
191
+ useCallbackOnFastify(fastify, callback) {
192
+ try {
193
+ // 'fastify 2' or 'middie' or 'fastify-express'
194
+ fastify.use('/forest', callback);
195
+ }
196
+ catch (e) {
197
+ // 'fastify 3'
198
+ if (e.code === 'FST_ERR_MISSING_MIDDLEWARE') {
199
+ fastify
200
+ .register(express_1.default)
201
+ .then(() => {
202
+ fastify.use('/forest', callback);
203
+ })
204
+ .catch(err => {
205
+ this.options.logger('Error', err.message);
206
+ });
207
+ }
208
+ else {
209
+ throw e;
210
+ }
211
+ }
212
+ }
213
+ getConnectCallback(nested) {
214
+ let handler = null;
215
+ this.mounts.push(async (driverRouter) => {
216
+ let router = driverRouter;
217
+ if (nested) {
218
+ router = new router_1.default({ prefix: '/forest' }).use(router.routes());
219
+ }
220
+ handler = new koa_1.default().use(router.routes()).callback();
221
+ });
222
+ return (req, res) => {
223
+ if (handler) {
224
+ handler(req, res);
225
+ }
226
+ else {
227
+ res.writeHead(200, { 'Content-Type': 'application/json' });
228
+ res.end(JSON.stringify({ error: 'Agent is not started' }));
229
+ }
230
+ };
231
+ }
144
232
  }
145
233
  exports.default = AgentBuilder;
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlci9hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQU95QztBQUN6QywwQ0FBd0M7QUFDeEMsOENBQXNCO0FBQ3RCLHlEQUFpQztBQUNqQyxnREFBd0I7QUFHeEIsOERBQTZDO0FBQzdDLDBFQUFpRDtBQUNqRCwrRkFBcUU7QUFDckUsa0ZBQXlEO0FBQ3pELGdGQUF1RDtBQUV2RDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFxQixZQUFZO0lBUS9COzs7Ozs7Ozs7Ozs7Ozs7O09BZ0JHO0lBQ0gsWUFBWSxPQUFxQjtRQXJCekIsbUJBQWMsR0FBNEIsRUFBRSxDQUFDO1FBQzdDLFdBQU0sR0FBMEMsRUFBRSxDQUFDO1FBQ25ELGdCQUFXLEdBQTRCLEVBQUUsQ0FBQztRQW9CaEQsSUFBSSxDQUFDLE9BQU8sR0FBRywyQkFBZ0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksbUNBQWMsRUFBYyxDQUFDO1FBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSwwQkFBZSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsT0FBMEI7UUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0RCxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFD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
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlci9hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQU95QztBQUN6QywwQ0FBd0M7QUFDeEMsOENBQXNCO0FBQ3RCLHlEQUFpQztBQUNqQywrREFBOEM7QUFDOUMsZ0RBQXdCO0FBSXhCLDhEQUE2QztBQUM3QywwRUFBaUQ7QUFDakQsK0ZBQXFFO0FBQ3JFLGtGQUF5RDtBQUN6RCxnRkFBdUQ7QUFFdkQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBcUIsWUFBWTtJQVEvQjs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUNILFlBQVksT0FBcUI7UUFyQnpCLG1CQUFjLEdBQTRCLEVBQUUsQ0FBQztRQUM3QyxXQUFNLEdBQTBDLEVBQUUsQ0FBQztRQUNuRCxnQkFBVyxHQUE0QixFQUFFLENBQUM7UUFvQmhELElBQUksQ0FBQyxPQUFPLEdBQUcsMkJBQWdCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLG1DQUFjLEVBQWMsQ0FBQztRQUM1RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksMEJBQWUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLE9BQTBCO1FBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2xDLE1BQU0sVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEQsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLENBQUM7UUFDTCxD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
@@ -1,5 +1,8 @@
1
+ /// <reference types="node" />
1
2
  import { ComputedDefinition, TCollectionName, TSchema } from '@forestadmin/datasource-toolkit';
3
+ import { IncomingMessage, ServerResponse } from 'http';
2
4
  export declare type FieldDefinition<S extends TSchema = TSchema, N extends TCollectionName<S> = TCollectionName<S>> = ComputedDefinition<S, N> & {
3
5
  beforeRelations?: boolean;
4
6
  };
7
+ export declare type HttpCallback = (req: IncomingMessage, res: ServerResponse) => void;
5
8
  //# sourceMappingURL=types.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/agent",
3
- "version": "1.0.0-beta.27",
3
+ "version": "1.0.0-beta.28",
4
4
  "main": "dist/index.js",
5
5
  "license": "GPL-3.0",
6
6
  "publishConfig": {
@@ -13,6 +13,7 @@
13
13
  },
14
14
  "dependencies": {
15
15
  "@fast-csv/format": "^4.3.5",
16
+ "@fastify/express": "^1.1.0",
16
17
  "@forestadmin/datasource-toolkit": "1.0.0-beta.16",
17
18
  "@koa/cors": "^3.3.0",
18
19
  "@koa/router": "^10.1.1",
@@ -50,6 +51,15 @@
50
51
  "@types/koa__cors": "^3.1.1",
51
52
  "@types/koa__router": "^8.0.11",
52
53
  "@types/superagent": "^4.1.15",
53
- "fishery": "^2.1.0"
54
+ "fishery": "^2.1.0",
55
+ "@nestjs/common": "^8.4.5",
56
+ "@nestjs/core": "^8.4.5",
57
+ "@nestjs/platform-express": "^8.4.5",
58
+ "@nestjs/platform-fastify": "^8.4.5",
59
+ "express": "^4.18.1",
60
+ "fastify": "^3.29.0",
61
+ "fastify2": "npm:fastify@^2.15.3",
62
+ "reflect-metadata": "^0.1.13",
63
+ "rxjs": "^7.5.5"
54
64
  }
55
65
  }