@forestadmin/agent 1.0.0-beta.1 → 1.0.0-beta.2
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/agent",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.2",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@fast-csv/format": "^4.3.5",
|
|
16
|
-
"@forestadmin/datasource-toolkit": "
|
|
16
|
+
"@forestadmin/datasource-toolkit": "1.0.0-beta.4",
|
|
17
17
|
"@koa/cors": "^3.1.0",
|
|
18
18
|
"@koa/router": "^10.1.1",
|
|
19
19
|
"forest-ip-utils": "^1.0.1",
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Collection, PaginatedFilter, Projection } from '@forestadmin/datasource-toolkit';
|
|
2
|
-
export declare const CHUNK_SIZE = 1000;
|
|
3
|
-
export default class CsvGenerator {
|
|
4
|
-
/**
|
|
5
|
-
* Use an async generator to ensure that
|
|
6
|
-
* - backpressure is properly applied without needing to extend Readable (for slow clients)
|
|
7
|
-
* - we stop making queries to the database if the client closes the connection.
|
|
8
|
-
*/
|
|
9
|
-
static generate(projection: Projection, header: string, filter: PaginatedFilter, collection: Collection, list: Collection['list']): AsyncGenerator<string>;
|
|
10
|
-
private static convert;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=csv-generator.d.ts.map
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CHUNK_SIZE = void 0;
|
|
4
|
-
const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
5
|
-
const format_1 = require("@fast-csv/format");
|
|
6
|
-
exports.CHUNK_SIZE = 1000;
|
|
7
|
-
class CsvGenerator {
|
|
8
|
-
/**
|
|
9
|
-
* Use an async generator to ensure that
|
|
10
|
-
* - backpressure is properly applied without needing to extend Readable (for slow clients)
|
|
11
|
-
* - we stop making queries to the database if the client closes the connection.
|
|
12
|
-
*/
|
|
13
|
-
static async *generate(projection, header, filter, collection, list) {
|
|
14
|
-
yield (0, format_1.writeToString)([header.split(',')], { headers: true, includeEndRowDelimiter: true });
|
|
15
|
-
const limit = filter.page?.limit;
|
|
16
|
-
let skip = filter.page?.skip || 0;
|
|
17
|
-
let areAllRecordsFetched = false;
|
|
18
|
-
const copiedFilter = { ...filter };
|
|
19
|
-
while (!areAllRecordsFetched) {
|
|
20
|
-
let currentPageSize = exports.CHUNK_SIZE;
|
|
21
|
-
if (limit < skip)
|
|
22
|
-
currentPageSize = skip - limit;
|
|
23
|
-
copiedFilter.page = new datasource_toolkit_1.Page(skip, currentPageSize);
|
|
24
|
-
if (!copiedFilter.sort || copiedFilter.sort.length === 0) {
|
|
25
|
-
copiedFilter.sort = datasource_toolkit_1.SortFactory.byPrimaryKeys(collection);
|
|
26
|
-
}
|
|
27
|
-
// eslint-disable-next-line no-await-in-loop
|
|
28
|
-
const records = await list(new datasource_toolkit_1.PaginatedFilter(copiedFilter), projection);
|
|
29
|
-
yield CsvGenerator.convert(records, projection);
|
|
30
|
-
areAllRecordsFetched = records.length < exports.CHUNK_SIZE;
|
|
31
|
-
skip += currentPageSize;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
static convert(records, projection) {
|
|
35
|
-
return (0, format_1.writeToString)(records.map(record => projection.map(field => datasource_toolkit_1.RecordUtils.getFieldValue(record, field))));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
exports.default = CsvGenerator;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jc3YtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdFQVF5QztBQUN6Qyw2Q0FBaUQ7QUFFcEMsUUFBQSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBRS9CLE1BQXFCLFlBQVk7SUFDL0I7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQ3BCLFVBQXNCLEVBQ3RCLE1BQWMsRUFDZCxNQUF1QixFQUN2QixVQUFzQixFQUN0QixJQUF3QjtRQUV4QixNQUFNLElBQUEsc0JBQWEsRUFBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUxRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztRQUNqQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7UUFFbEMsSUFBSSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDakMsTUFBTSxZQUFZLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBRW5DLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtZQUM1QixJQUFJLGVBQWUsR0FBRyxrQkFBVSxDQUFDO1lBQ2pDLElBQUksS0FBSyxHQUFHLElBQUk7Z0JBQUUsZUFBZSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUM7WUFFakQsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLHlCQUFJLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBRXBELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDeEQsWUFBWSxDQUFDLElBQUksR0FBRyxnQ0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUMzRDtZQUVELDRDQUE0QztZQUM1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLG9DQUFlLENBQUMsWUFBWSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFMUUsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUVoRCxvQkFBb0IsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLGtCQUFVLENBQUM7WUFDbkQsSUFBSSxJQUFJLGVBQWUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQXFCLEVBQUUsVUFBc0I7UUFDbEUsT0FBTyxJQUFBLHNCQUFhLEVBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZ0NBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDekYsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTlDRCwrQkE4Q0MifQ==
|