@forestadmin/agent 1.65.1 → 1.66.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.
Files changed (44) hide show
  1. package/dist/agent/services/chart.d.ts +102 -0
  2. package/dist/agent/services/chart.js +114 -0
  3. package/dist/routes/access/api-chart.d.ts +16 -0
  4. package/dist/routes/access/api-chart.js +47 -0
  5. package/dist/routes/access/csv-related.js +2 -2
  6. package/dist/routes/access/csv.js +2 -2
  7. package/dist/routes/modification/action.d.ts +16 -0
  8. package/dist/routes/modification/action.js +121 -0
  9. package/dist/services/authorization/internal/action-permission.d.ts +20 -0
  10. package/dist/services/authorization/internal/action-permission.js +98 -0
  11. package/dist/services/authorization/internal/generate-action-identifier.d.ts +12 -0
  12. package/dist/services/authorization/internal/generate-action-identifier.js +15 -0
  13. package/dist/services/authorization/internal/generate-actions-from-permissions.d.ts +12 -0
  14. package/dist/services/authorization/internal/generate-actions-from-permissions.js +139 -0
  15. package/dist/services/authorization/internal/generate-user-scope.d.ts +10 -0
  16. package/dist/services/authorization/internal/generate-user-scope.js +45 -0
  17. package/dist/services/authorization/internal/hash-chart.d.ts +5 -0
  18. package/dist/services/authorization/internal/hash-chart.js +58 -0
  19. package/dist/services/authorization/internal/rendering-permission.d.ts +39 -0
  20. package/dist/services/authorization/internal/rendering-permission.js +121 -0
  21. package/dist/services/authorization/internal/types.d.ts +255 -0
  22. package/dist/services/authorization/internal/types.js +54 -0
  23. package/dist/services/authorization/internal/user-permission.d.ts +16 -0
  24. package/dist/services/authorization/internal/user-permission.js +46 -0
  25. package/dist/services/permissions.d.ts +19 -0
  26. package/dist/services/permissions.js +85 -0
  27. package/dist/types.d.ts +1 -0
  28. package/dist/types.js +1 -1
  29. package/dist/utils/csv-generator.d.ts +1 -1
  30. package/dist/utils/csv-generator.js +12 -5
  31. package/dist/utils/forest-http-api.d.ts +37 -0
  32. package/dist/utils/forest-http-api.js +100 -0
  33. package/dist/utils/forest-schema/column-schema-validation.d.ts +5 -0
  34. package/dist/utils/forest-schema/column-schema-validation.js +14 -0
  35. package/dist/utils/forest-schema/emitter.d.ts +17 -0
  36. package/dist/utils/forest-schema/emitter.js +38 -0
  37. package/dist/utils/forest-schema/schema-generator.d.ts +6 -0
  38. package/dist/utils/forest-schema/schema-generator.js +13 -0
  39. package/dist/utils/forest-schema/schema-serializer.d.ts +12 -0
  40. package/dist/utils/forest-schema/schema-serializer.js +35 -0
  41. package/dist/utils/forest-schema/types.d.ts +85 -0
  42. package/dist/utils/forest-schema/types.js +16 -0
  43. package/dist/utils/options-validator.js +2 -1
  44. package/package.json +9 -6
@@ -0,0 +1,100 @@
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 superagent_1 = __importDefault(require("superagent"));
7
+ class ForestHttpApi {
8
+ static async getIpWhitelistConfiguration(options) {
9
+ try {
10
+ const response = await superagent_1.default
11
+ .get(new URL('/liana/v1/ip-whitelist-rules', options.forestServerUrl).toString())
12
+ .set('forest-secret-key', options.envSecret);
13
+ const { attributes } = response.body.data;
14
+ return { isFeatureEnabled: attributes.use_ip_whitelist, ipRules: attributes.rules };
15
+ }
16
+ catch (e) {
17
+ this.handleResponseError(e);
18
+ }
19
+ }
20
+ static async getOpenIdIssuerMetadata(options) {
21
+ try {
22
+ const response = await superagent_1.default
23
+ .get(new URL('/oidc/.well-known/openid-configuration', options.forestServerUrl).toString())
24
+ .set('forest-secret-key', options.envSecret);
25
+ return response.body;
26
+ }
27
+ catch (e) {
28
+ this.handleResponseError(e);
29
+ }
30
+ }
31
+ static async getUserInformation(options, renderingId, accessToken) {
32
+ try {
33
+ const url = new URL(`/liana/v2/renderings/${renderingId}/authorization`, options.forestServerUrl);
34
+ const response = await superagent_1.default
35
+ .get(url.toString())
36
+ .set('forest-token', accessToken)
37
+ .set('forest-secret-key', options.envSecret);
38
+ const { attributes, id } = response.body.data;
39
+ return {
40
+ id: Number(id),
41
+ email: attributes.email,
42
+ firstName: attributes.first_name,
43
+ lastName: attributes.last_name,
44
+ team: attributes.teams[0],
45
+ role: attributes.role,
46
+ tags: attributes.tags?.reduce((memo, { key, value }) => ({ ...memo, [key]: value }), {}),
47
+ renderingId,
48
+ permissionLevel: attributes.permission_level,
49
+ };
50
+ }
51
+ catch (e) {
52
+ this.handleResponseError(e);
53
+ }
54
+ }
55
+ static async hasSchema(options, hash) {
56
+ try {
57
+ const response = await superagent_1.default
58
+ .post(new URL('/forest/apimaps/hashcheck', options.forestServerUrl).toString())
59
+ .send({ schemaFileHash: hash })
60
+ .set('forest-secret-key', options.envSecret);
61
+ return !response?.body?.sendSchema;
62
+ }
63
+ catch (e) {
64
+ this.handleResponseError(e);
65
+ }
66
+ }
67
+ static async uploadSchema(options, apimap) {
68
+ try {
69
+ await superagent_1.default
70
+ .post(new URL('/forest/apimaps', options.forestServerUrl).toString())
71
+ .send(apimap)
72
+ .set('forest-secret-key', options.envSecret);
73
+ }
74
+ catch (e) {
75
+ this.handleResponseError(e);
76
+ }
77
+ }
78
+ static handleResponseError(e) {
79
+ if (/certificate/i.test(e.message))
80
+ throw new Error('ForestAdmin server TLS certificate cannot be verified. ' +
81
+ 'Please check that your system time is set properly.');
82
+ if (e.response) {
83
+ const status = e?.response?.status;
84
+ // 0 == offline, 502 == bad gateway from proxy
85
+ if (status === 0 || status === 502)
86
+ throw new Error('Failed to reach ForestAdmin server. Are you online?');
87
+ if (status === 404)
88
+ throw new Error('ForestAdmin server failed to find the project related to the envSecret you configured.' +
89
+ ' Can you check that you copied it properly in the Forest initialization?');
90
+ if (status === 503)
91
+ throw new Error('Forest is in maintenance for a few minutes. We are upgrading your experience in ' +
92
+ 'the forest. We just need a few more minutes to get it right.');
93
+ throw new Error('An unexpected error occurred while contacting the ForestAdmin server. ' +
94
+ 'Please contact support@forestadmin.com for further investigations.');
95
+ }
96
+ throw e;
97
+ }
98
+ }
99
+ exports.default = ForestHttpApi;
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LWh0dHAtYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2ZvcmVzdC1odHRwLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLDREQUFpRTtBQTZCakUsTUFBcUIsYUFBYTtJQUNoQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUN0QyxPQUFvQjtRQUVwQixJQUFJO1lBQ0YsTUFBTSxRQUFRLEdBQWEsTUFBTSxvQkFBVTtpQkFDeEMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDaEYsR0FBRyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUUvQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFFMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3JGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxPQUFvQjtRQUN2RCxJQUFJO1lBQ0YsTUFBTSxRQUFRLEdBQWEsTUFBTSxvQkFBVTtpQkFDeEMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLHdDQUF3QyxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDMUYsR0FBRyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUUvQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7U0FDdEI7UUFBQyxPQUFPLENBQUMsRUFBRTtZ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
@@ -0,0 +1,5 @@
1
+ import { ColumnSchema } from '@forestadmin/datasource-toolkit';
2
+ export default class ColumnSchemaValidation {
3
+ static validate(column: ColumnSchema, name: string): void;
4
+ }
5
+ //# sourceMappingURL=column-schema-validation.d.ts.map
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
4
+ class ColumnSchemaValidation {
5
+ static validate(column, name) {
6
+ if (!column.enumValues)
7
+ return;
8
+ if (!Array.isArray(column.enumValues) || !column.enumValues.every(v => typeof v === 'string')) {
9
+ throw new datasource_toolkit_1.ValidationError(`The enumValues of column '${name}' must be an array of string instead of ${JSON.stringify(column.enumValues)}`);
10
+ }
11
+ }
12
+ }
13
+ exports.default = ColumnSchemaValidation;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNjaGVtYS12YWxpZGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2ZvcmVzdC1zY2hlbWEvY29sdW1uLXNjaGVtYS12YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0VBQWdGO0FBRWhGLE1BQXFCLHNCQUFzQjtJQUN6QyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQW9CLEVBQUUsSUFBWTtRQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7WUFBRSxPQUFPO1FBRS9CLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLEVBQUU7WUFDN0YsTUFBTSxJQUFJLG9DQUFlLENBQ3ZCLDZCQUE2QixJQUFJLDJDQUEyQyxJQUFJLENBQUMsU0FBUyxDQUN4RixNQUFNLENBQUMsVUFBVSxDQUNsQixFQUFFLENBQ0osQ0FBQztTQUNIO0lBQ0gsQ0FBQztDQUNGO0FBWkQseUNBWUMifQ==
@@ -0,0 +1,17 @@
1
+ import { DataSource } from '@forestadmin/datasource-toolkit';
2
+ import { AgentOptions } from '../../types';
3
+ declare type SerializedSchema = {
4
+ meta: {
5
+ schemaFileHash: string;
6
+ };
7
+ };
8
+ declare type Options = Pick<AgentOptions, 'isProduction' | 'schemaPath'>;
9
+ /**
10
+ * Generate and dispatch dataSource schema on agent start.
11
+ */
12
+ export default class SchemaEmitter {
13
+ static getSerializedSchema(options: Options, dataSource: DataSource): Promise<SerializedSchema>;
14
+ private static loadFromDisk;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=emitter.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
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const promises_1 = require("fs/promises");
7
+ const json_stringify_pretty_compact_1 = __importDefault(require("json-stringify-pretty-compact"));
8
+ const schema_generator_1 = __importDefault(require("./schema-generator"));
9
+ const schema_serializer_1 = __importDefault(require("./schema-serializer"));
10
+ // Load version from package.json at startup
11
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
12
+ const { version } = require('../../../package.json');
13
+ /**
14
+ * Generate and dispatch dataSource schema on agent start.
15
+ */
16
+ class SchemaEmitter {
17
+ static async getSerializedSchema(options, dataSource) {
18
+ const schema = options.isProduction
19
+ ? await SchemaEmitter.loadFromDisk(options.schemaPath)
20
+ : await schema_generator_1.default.generate(dataSource);
21
+ if (!options.isProduction) {
22
+ const pretty = (0, json_stringify_pretty_compact_1.default)(schema, { maxLength: 80 });
23
+ await (0, promises_1.writeFile)(options.schemaPath, pretty, { encoding: 'utf-8' });
24
+ }
25
+ return schema_serializer_1.default.serialize(schema, version);
26
+ }
27
+ static async loadFromDisk(schemaPath) {
28
+ try {
29
+ const fileContent = await (0, promises_1.readFile)(schemaPath, { encoding: 'utf-8' });
30
+ return JSON.parse(fileContent);
31
+ }
32
+ catch (e) {
33
+ throw new Error(`Cannot load ${schemaPath}. Providing a schema is mandatory in production mode.`);
34
+ }
35
+ }
36
+ }
37
+ exports.default = SchemaEmitter;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9mb3Jlc3Qtc2NoZW1hL2VtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwwQ0FBa0Q7QUFDbEQsa0dBQXNEO0FBR3RELDBFQUFpRDtBQUNqRCw0RUFBbUQ7QUFPbkQsNENBQTRDO0FBQzVDLDhEQUE4RDtBQUM5RCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFxQixhQUFhO0lBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQzlCLE9BQWdCLEVBQ2hCLFVBQXNCO1FBRXRCLE1BQU0sTUFBTSxHQUFjLE9BQU8sQ0FBQyxZQUFZO1lBQzVDLENBQUMsQ0FBQyxNQUFNLGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUN0RCxDQUFDLENBQUMsTUFBTSwwQkFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFBLHVDQUFTLEVBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEQsTUFBTSxJQUFBLG9CQUFTLEVBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNwRTtRQUVELE9BQU8sMkJBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBa0I7UUFDbEQsSUFBSTtZQUNGLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSxtQkFBUSxFQUFDLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBRXRFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNoQztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FDYixlQUFlLFVBQVUsdURBQXVELENBQ2pGLENBQUM7U0FDSDtJQUNILENBQUM7Q0FDRjtBQTVCRCxnQ0E0QkMifQ==
@@ -0,0 +1,6 @@
1
+ import { DataSource } from '@forestadmin/datasource-toolkit';
2
+ import { ForestServerCollection } from './types';
3
+ export default class SchemaGenerator {
4
+ static generate(dataSource: DataSource): Promise<ForestServerCollection[]>;
5
+ }
6
+ //# sourceMappingURL=schema-generator.d.ts.map
@@ -0,0 +1,13 @@
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 generator_collection_1 = __importDefault(require("./generator-collection"));
7
+ class SchemaGenerator {
8
+ static async generate(dataSource) {
9
+ return Promise.all(dataSource.collections.map(collection => generator_collection_1.default.buildSchema(collection)));
10
+ }
11
+ }
12
+ exports.default = SchemaGenerator;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9mb3Jlc3Qtc2NoZW1hL3NjaGVtYS1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSxrRkFBK0Q7QUFHL0QsTUFBcUIsZUFBZTtJQUNsQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFzQjtRQUMxQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsOEJBQXlCLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQzVGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFORCxrQ0FNQyJ9
@@ -0,0 +1,12 @@
1
+ import { ForestServerCollection } from './types';
2
+ declare type SerializedSchema = {
3
+ meta: {
4
+ schemaFileHash: string;
5
+ };
6
+ };
7
+ export default class SchemaSerializer {
8
+ private static readonly meta;
9
+ static serialize(schema: ForestServerCollection[], lianaVersion: string): SerializedSchema;
10
+ }
11
+ export {};
12
+ //# sourceMappingURL=schema-serializer.d.ts.map
@@ -0,0 +1,35 @@
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 crypto_1 = __importDefault(require("crypto"));
7
+ const json_api_serializer_1 = __importDefault(require("json-api-serializer"));
8
+ class SchemaSerializer {
9
+ static serialize(schema, lianaVersion) {
10
+ const hash = crypto_1.default.createHash('sha1').update(JSON.stringify(schema)).digest('hex');
11
+ // Build serializer
12
+ const serializer = new json_api_serializer_1.default();
13
+ serializer.register('collections', {
14
+ // Pass the metadata provided to the serialization fn
15
+ topLevelMeta: (extraData) => extraData,
16
+ relationships: {
17
+ segments: { type: 'segments' },
18
+ actions: { type: 'actions' },
19
+ },
20
+ });
21
+ serializer.register('segments', {});
22
+ serializer.register('actions', {});
23
+ // Serialize
24
+ return serializer.serialize('collections', schema.map(c => ({ id: c.name, ...c })), { ...SchemaSerializer.meta, liana_version: lianaVersion, schemaFileHash: hash });
25
+ }
26
+ }
27
+ exports.default = SchemaSerializer;
28
+ SchemaSerializer.meta = {
29
+ liana: 'forest-nodejs-agent',
30
+ stack: {
31
+ engine: 'nodejs',
32
+ engine_version: process.versions && process.versions.node,
33
+ },
34
+ };
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLXNlcmlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZm9yZXN0LXNjaGVtYS9zY2hlbWEtc2VyaWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1Qiw4RUFBb0Q7QUFNcEQsTUFBcUIsZ0JBQWdCO0lBU25DLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBZ0MsRUFBRSxZQUFvQjtRQUNyRSxNQUFNLElBQUksR0FBRyxnQkFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwRixtQkFBbUI7UUFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSw2QkFBaUIsRUFBRSxDQUFDO1FBRTNDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO1lBQ2pDLHFEQUFxRDtZQUNyRCxZQUFZLEVBQUUsQ0FBQyxTQUFrQixFQUFFLEVBQUUsQ0FBQyxTQUFTO1lBQy9DLGFBQWEsRUFBRTtnQkFDYixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUM5QixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbkMsWUFBWTtRQUNaLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FDekIsYUFBYSxFQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3ZDLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQzVELENBQUM7SUFDeEIsQ0FBQzs7QUFoQ0gsbUNBaUNDO0FBaEN5QixxQkFBSSxHQUFHO0lBQzdCLEtBQUssRUFBRSxxQkFBcUI7SUFDNUIsS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLFFBQVE7UUFDaEIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO0tBQzFEO0NBQ0YsQ0FBQyJ9
@@ -0,0 +1,85 @@
1
+ import { PrimitiveTypes } from '@forestadmin/datasource-toolkit';
2
+ export declare type ForestServerColumnType = PrimitiveTypes | [ForestServerColumnType] | {
3
+ fields: Array<{
4
+ field: string;
5
+ type: ForestServerColumnType;
6
+ }>;
7
+ };
8
+ export declare type ForestServerCollection = {
9
+ name: string;
10
+ icon: null;
11
+ integration: null;
12
+ isReadOnly: boolean;
13
+ isSearchable: boolean;
14
+ isVirtual: false;
15
+ onlyForRelationships: boolean;
16
+ paginationType: 'page';
17
+ actions: Array<ForestServerAction>;
18
+ fields: Array<ForestServerField>;
19
+ segments: Array<ForestServerSegment>;
20
+ };
21
+ export declare type ForestServerAction = {
22
+ id: string;
23
+ name: string;
24
+ type: 'single' | 'bulk' | 'global';
25
+ baseUrl: string;
26
+ endpoint: string;
27
+ httpMethod: 'POST';
28
+ redirect: unknown;
29
+ download: boolean;
30
+ fields: ForestServerActionField[];
31
+ hooks: {
32
+ load: boolean;
33
+ change: Array<unknown>;
34
+ };
35
+ };
36
+ export declare type ForestServerActionField = {
37
+ value: unknown;
38
+ defaultValue: unknown;
39
+ description: string | null;
40
+ enums: string[];
41
+ field: string;
42
+ hook: string;
43
+ isReadOnly: boolean;
44
+ isRequired: boolean;
45
+ reference: string | null;
46
+ type: ForestServerColumnType;
47
+ widget: null | 'belongsto select' | 'file picker';
48
+ };
49
+ export declare type ForestServerField = Partial<{
50
+ field: string;
51
+ type: ForestServerColumnType;
52
+ defaultValue: unknown;
53
+ enums: null | string[];
54
+ integration: null;
55
+ isFilterable: boolean;
56
+ isPrimaryKey: boolean;
57
+ isReadOnly: boolean;
58
+ isRequired: boolean;
59
+ isSortable: boolean;
60
+ isVirtual: boolean;
61
+ reference: null | string;
62
+ inverseOf: null | string;
63
+ relationship: 'BelongsTo' | 'BelongsToMany' | 'HasMany' | 'HasOne';
64
+ validations: Array<{
65
+ message: string | null;
66
+ type: ValidationType;
67
+ value: unknown;
68
+ }>;
69
+ }>;
70
+ export declare type ForestServerSegment = {
71
+ id: string;
72
+ name: string;
73
+ };
74
+ export declare enum ValidationType {
75
+ Present = "is present",
76
+ GreaterThan = "is greater than",
77
+ LessThan = "is less than",
78
+ Before = "is before",
79
+ After = "is after",
80
+ LongerThan = "is longer than",
81
+ ShorterThan = "is shorter than",
82
+ Contains = "contains",
83
+ Like = "is like"
84
+ }
85
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationType = void 0;
4
+ var ValidationType;
5
+ (function (ValidationType) {
6
+ ValidationType["Present"] = "is present";
7
+ ValidationType["GreaterThan"] = "is greater than";
8
+ ValidationType["LessThan"] = "is less than";
9
+ ValidationType["Before"] = "is before";
10
+ ValidationType["After"] = "is after";
11
+ ValidationType["LongerThan"] = "is longer than";
12
+ ValidationType["ShorterThan"] = "is shorter than";
13
+ ValidationType["Contains"] = "contains";
14
+ ValidationType["Like"] = "is like";
15
+ })(ValidationType = exports.ValidationType || (exports.ValidationType = {}));
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZm9yZXN0LXNjaGVtYS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEwRUEsSUFBWSxjQVVYO0FBVkQsV0FBWSxjQUFjO0lBQ3hCLHdDQUFzQixDQUFBO0lBQ3RCLGlEQUErQixDQUFBO0lBQy9CLDJDQUF5QixDQUFBO0lBQ3pCLHNDQUFvQixDQUFBO0lBQ3BCLG9DQUFrQixDQUFBO0lBQ2xCLCtDQUE2QixDQUFBO0lBQzdCLGlEQUErQixDQUFBO0lBQy9CLHVDQUFxQixDQUFBO0lBQ3JCLGtDQUFnQixDQUFBO0FBQ2xCLENBQUMsRUFWVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQVV6QiJ9
@@ -23,6 +23,7 @@ class OptionsValidator {
23
23
  copyOptions.schemaPath = copyOptions.schemaPath || '.forestadmin-schema.json';
24
24
  copyOptions.forestServerUrl = copyOptions.forestServerUrl || 'https://api.forestadmin.com';
25
25
  copyOptions.typingsMaxDepth = copyOptions.typingsMaxDepth ?? 5;
26
+ copyOptions.limitExportSize = copyOptions.limitExportSize ?? null;
26
27
  copyOptions.prefix = copyOptions.prefix || '';
27
28
  copyOptions.loggerLevel = copyOptions.loggerLevel || 'Info';
28
29
  copyOptions.skipSchemaUpdate = copyOptions.skipSchemaUpdate || false;
@@ -125,4 +126,4 @@ OptionsValidator.loggerPrefix = {
125
126
  Warn: '\x1b[33mwarning:\x1b[0m',
126
127
  Error: '\x1b[31merror:\x1b[0m',
127
128
  };
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvb3B0aW9ucy12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5RkFBc0U7QUFDdEUsMkJBQWdDO0FBQ2hDLGdEQUF3QjtBQUl4QixNQUFNLDhCQUE4QixHQUFHLEVBQUUsQ0FBQztBQUMxQyw0Q0FBNEM7QUFDNUMsTUFBTSxrQ0FBa0MsR0FBRyxRQUFRLENBQUM7QUFFcEQsTUFBcUIsZ0JBQWdCO0lBUW5DLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBcUI7UUFDdkMsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBRW5DLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO1lBQ2xELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTlDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUN4RCxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUMzRDtRQUNILENBQUMsQ0FBQztRQUVGLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sSUFBSSxhQUFhLENBQUM7UUFDekQsV0FBVyxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsVUFBVSxJQUFJLDBCQUEwQixDQUFDO1FBQzlFLFdBQVcsQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLGVBQWUsSUFBSSw2QkFBNkIsQ0FBQztRQUMzRixXQUFXLENBQUMsZUFBZSxHQUFHLFdB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
129
+ //# 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.65.1",
3
+ "version": "1.66.1",
4
4
  "main": "dist/index.js",
5
5
  "license": "GPL-3.0",
6
6
  "publishConfig": {
@@ -24,7 +24,7 @@
24
24
  "json-api-serializer": "^2.6.6",
25
25
  "json-stringify-pretty-compact": "^3.0.0",
26
26
  "jsonwebtoken": "^9.0.0",
27
- "koa": "^2.16.1",
27
+ "koa": "^3.0.1",
28
28
  "@koa/bodyparser": "^6.0.0",
29
29
  "koa-jwt": "^4.0.4",
30
30
  "luxon": "^3.2.1",
@@ -44,10 +44,10 @@
44
44
  "test": "jest"
45
45
  },
46
46
  "devDependencies": {
47
- "@nestjs/common": "^9.2.1",
48
- "@nestjs/core": "^9.2.1",
49
- "@nestjs/platform-express": "^9.2.1",
50
- "@nestjs/platform-fastify": "^9.2.1",
47
+ "@nestjs/common": "^10.4.16",
48
+ "@nestjs/core": "^10.4.16",
49
+ "@nestjs/platform-express": "^10.4.16",
50
+ "@nestjs/platform-fastify": "^10.4.16",
51
51
  "@shopify/jest-koa-mocks": "^3.1.0",
52
52
  "@types/json-api-serializer": "^2.6.3",
53
53
  "@types/jsonwebtoken": "^9.0.1",
@@ -60,5 +60,8 @@
60
60
  "openid-client": "^5.7.1",
61
61
  "reflect-metadata": "^0.1.13",
62
62
  "rxjs": "^7.8.0"
63
+ },
64
+ "overrides": {
65
+ "@paralleldrive/cuid2": "2.2.2"
63
66
  }
64
67
  }