@forestadmin/agent 1.0.1 → 1.0.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.
@@ -10,11 +10,8 @@ declare type Options = Pick<AgentOptions, 'isProduction' | 'schemaPath'>;
10
10
  * Generate and dispatch dataSource schema on agent start.
11
11
  */
12
12
  export default class SchemaEmitter {
13
- private static readonly meta;
14
13
  static getSerializedSchema(options: Options, dataSource: DataSource): Promise<SerializedSchema>;
15
14
  private static loadFromDisk;
16
- private static generate;
17
- private static serialize;
18
15
  }
19
16
  export {};
20
17
  //# sourceMappingURL=emitter.d.ts.map
@@ -4,10 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const promises_1 = require("fs/promises");
7
- const json_api_serializer_1 = __importDefault(require("json-api-serializer"));
8
- const crypto_1 = __importDefault(require("crypto"));
9
7
  const json_stringify_pretty_compact_1 = __importDefault(require("json-stringify-pretty-compact"));
10
- const generator_collection_1 = __importDefault(require("./generator-collection"));
8
+ const schema_generator_1 = __importDefault(require("./schema-generator"));
9
+ const schema_serializer_1 = __importDefault(require("./schema-serializer"));
11
10
  // Load version from package.json at startup
12
11
  // eslint-disable-next-line @typescript-eslint/no-var-requires
13
12
  const { version } = require('../../../package.json');
@@ -18,13 +17,12 @@ class SchemaEmitter {
18
17
  static async getSerializedSchema(options, dataSource) {
19
18
  const schema = options.isProduction
20
19
  ? await SchemaEmitter.loadFromDisk(options.schemaPath)
21
- : await SchemaEmitter.generate(dataSource);
20
+ : await schema_generator_1.default.generate(dataSource);
22
21
  if (!options.isProduction) {
23
22
  const pretty = (0, json_stringify_pretty_compact_1.default)(schema, { maxLength: 80 });
24
23
  await (0, promises_1.writeFile)(options.schemaPath, pretty, { encoding: 'utf-8' });
25
24
  }
26
- const hash = crypto_1.default.createHash('sha1').update(JSON.stringify(schema)).digest('hex');
27
- return SchemaEmitter.serialize(schema, hash);
25
+ return schema_serializer_1.default.serialize(schema, version);
28
26
  }
29
27
  static async loadFromDisk(schemaPath) {
30
28
  try {
@@ -35,36 +33,6 @@ class SchemaEmitter {
35
33
  throw new Error(`Cannot load ${schemaPath}. Providing a schema is mandatory in production mode.`);
36
34
  }
37
35
  }
38
- static async generate(dataSource) {
39
- const allCollectionSchemas = [];
40
- const dataSourceCollectionSchemas = dataSource.collections.map(collection => generator_collection_1.default.buildSchema(collection));
41
- allCollectionSchemas.push(...dataSourceCollectionSchemas);
42
- return Promise.all(allCollectionSchemas);
43
- }
44
- static serialize(schema, hash) {
45
- // Build serializer
46
- const serializer = new json_api_serializer_1.default();
47
- serializer.register('collections', {
48
- // Pass the metadata provided to the serialization fn
49
- topLevelMeta: (extraData) => extraData,
50
- relationships: {
51
- segments: { type: 'segments' },
52
- actions: { type: 'actions' },
53
- },
54
- });
55
- serializer.register('segments', {});
56
- serializer.register('actions', {});
57
- // Serialize
58
- return serializer.serialize('collections', schema.map(c => ({ id: c.name, ...c })), { ...SchemaEmitter.meta, schemaFileHash: hash });
59
- }
60
36
  }
61
37
  exports.default = SchemaEmitter;
62
- SchemaEmitter.meta = {
63
- liana: 'forest-nodejs-agent',
64
- liana_version: version,
65
- stack: {
66
- engine: 'nodejs',
67
- engine_version: process.versions && process.versions.node,
68
- },
69
- };
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9mb3Jlc3Qtc2NoZW1hL2VtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwwQ0FBa0Q7QUFDbEQsOEVBQW9EO0FBQ3BELG9EQUE0QjtBQUM1QixrR0FBc0Q7QUFJdEQsa0ZBQStEO0FBTS9ELDRDQUE0QztBQUM1Qyw4REFBOEQ7QUFDOUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBRXJEOztHQUVHO0FBQ0gsTUFBcUIsYUFBYTtJQVVoQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUM5QixPQUFnQixFQUNoQixVQUFzQjtRQUV0QixNQUFNLE1BQU0sR0FBYyxPQUFPLENBQUMsWUFBWTtZQUM1QyxDQUFDLENBQUMsTUFBTSxhQUFhLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDdEQsQ0FBQyxDQUFDLE1BQU0sYUFBYSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFBLHVDQUFTLEVBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEQsTUFBTSxJQUFBLG9CQUFTLEVBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNwRTtRQUVELE1BQU0sSUFBSSxHQUFHLGdCQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBGLE9BQU8sYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQWtCO1FBQ2xELElBQUk7WUFDRixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUEsbUJBQVEsRUFBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUV0RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDaEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQ2IsZUFBZSxVQUFVLHVEQUF1RCxDQUNqRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBc0I7UUFDbEQsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFFaEMsTUFBTSwyQkFBMkIsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUMxRSw4QkFBeUIsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQ2xELENBQUM7UUFDRixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRywyQkFBMkIsQ0FBQyxDQUFDO1FBRTFELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQWlCLEVBQUUsSUFBWTtRQUN0RCxtQkFBbUI7UUFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSw2QkFBaUIsRUFBRSxDQUFDO1FBRTNDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO1lBQ2pDLHFEQUFxRDtZQUNyRCxZQUFZLEVBQUUsQ0FBQyxTQUFrQixFQUFFLEVBQUUsQ0FBQyxTQUFTO1lBQy9DLGFBQWEsRUFBRTtnQkFDYixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUM5QixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbkMsWUFBWTtRQUNaLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FDekIsYUFBYSxFQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3ZDLEVBQUUsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztJQUN4QixDQUFDOztBQXhFSCxnQ0F5RUM7QUF4RXlCLGtCQUFJLEdBQUc7SUFDN0IsS0FBSyxFQUFFLHFCQUFxQjtJQUM1QixhQUFhLEVBQUUsT0FBTztJQUN0QixLQUFLLEVBQUU7UUFDTCxNQUFNLEVBQUUsUUFBUTtRQUNoQixjQUFjLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUk7S0FDMUQ7Q0FDRixDQUFDIn0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9mb3Jlc3Qtc2NoZW1hL2VtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwwQ0FBa0Q7QUFDbEQsa0dBQXNEO0FBSXRELDBFQUFpRDtBQUNqRCw0RUFBbUQ7QUFNbkQsNENBQTRDO0FBQzVDLDhEQUE4RDtBQUM5RCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFxQixhQUFhO0lBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQzlCLE9BQWdCLEVBQ2hCLFVBQXNCO1FBRXRCLE1BQU0sTUFBTSxHQUFjLE9BQU8sQ0FBQyxZQUFZO1lBQzVDLENBQUMsQ0FBQyxNQUFNLGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUN0RCxDQUFDLENBQUMsTUFBTSwwQkFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFBLHVDQUFTLEVBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEQsTUFBTSxJQUFBLG9CQUFTLEVBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNwRTtRQUVELE9BQU8sMkJBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBa0I7UUFDbEQsSUFBSTtZQUNGLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSxtQkFBUSxFQUFDLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBRXRFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNoQztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FDYixlQUFlLFVBQVUsdURBQXVELENBQ2pGLENBQUM7U0FDSDtJQUNILENBQUM7Q0FDRjtBQTVCRCxnQ0E0QkMifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9mb3Jlc3Qtc2NoZW1hL3NjaGVtYS1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSxrRkFBK0Q7QUFFL0QsTUFBcUIsZUFBZTtJQUNsQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFzQjtRQUMxQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsOEJBQXlCLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQzVGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFORCxrQ0FNQyJ9
@@ -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 json_api_serializer_1 = __importDefault(require("json-api-serializer"));
7
+ const crypto_1 = __importDefault(require("crypto"));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLXNlcmlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZm9yZXN0LXNjaGVtYS9zY2hlbWEtc2VyaWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhFQUFvRDtBQUNwRCxvREFBNEI7QUFNNUIsTUFBcUIsZ0JBQWdCO0lBU25DLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBZ0MsRUFBRSxZQUFvQjtRQUNyRSxNQUFNLElBQUksR0FBRyxnQkFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwRixtQkFBbUI7UUFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSw2QkFBaUIsRUFBRSxDQUFDO1FBRTNDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO1lBQ2pDLHFEQUFxRDtZQUNyRCxZQUFZLEVBQUUsQ0FBQyxTQUFrQixFQUFFLEVBQUUsQ0FBQyxTQUFTO1lBQy9DLGFBQWEsRUFBRTtnQkFDYixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUM5QixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbkMsWUFBWTtRQUNaLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FDekIsYUFBYSxFQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3ZDLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQzVELENBQUM7SUFDeEIsQ0FBQzs7QUFoQ0gsbUNBaUNDO0FBaEN5QixxQkFBSSxHQUFHO0lBQzdCLEtBQUssRUFBRSxxQkFBcUI7SUFDNUIsS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLFFBQVE7UUFDaEIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO0tBQzFEO0NBQ0YsQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/agent",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "main": "dist/index.js",
5
5
  "license": "GPL-3.0",
6
6
  "publishConfig": {