UNPKG

@selfage/generator_cli

Version:

Code generation for message, service, and database.

47 lines 5.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DefinitionResolver = void 0; const fs = require("fs"); const resolve = require("resolve"); const yaml_1 = require("yaml"); class DefinitionResolver { constructor(baseModulePath) { this.baseModulePath = baseModulePath; this.cachedPathToNameToDefinitions = new Map(); } resolve(loggingPrefix, name, importPath) { if (!importPath) { importPath = this.baseModulePath; } let filePath = resolve.sync(importPath, { basedir: ".", extensions: [".yaml"], }); let nameToDefinitions = this.cachedPathToNameToDefinitions.get(filePath); if (!nameToDefinitions) { nameToDefinitions = new Map(); this.cachedPathToNameToDefinitions.set(filePath, nameToDefinitions); let yamlStr = fs.readFileSync(filePath).toString(); let definitions; try { definitions = (0, yaml_1.parse)(yamlStr); } catch (e) { e.message = `${loggingPrefix} failed to parse YAML read from "${filePath}".\n` + e.message; throw e; } for (let definition of definitions) { nameToDefinitions.set(definition.name, definition); } } let definition = nameToDefinitions.get(name); if (!definition) { throw new Error(`${loggingPrefix} message/enum definition ${name} is not found in "${filePath}".`); } return definition; } } exports.DefinitionResolver = DefinitionResolver; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbl9yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRlZmluaXRpb25fcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQTBCO0FBQzFCLG1DQUFvQztBQUVwQywrQkFBNkI7QUFFN0IsTUFBYSxrQkFBa0I7SUFNN0IsWUFBMkIsY0FBc0I7UUFBdEIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFMekMsa0NBQTZCLEdBQUcsSUFBSSxHQUFHLEVBRzVDLENBQUM7SUFFZ0QsQ0FBQztJQUU5QyxPQUFPLENBQ1osYUFBcUIsRUFDckIsSUFBWSxFQUNaLFVBQW1CO1FBRW5CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEMsT0FBTyxFQUFFLEdBQUc7WUFDWixVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUM7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3ZCLGlCQUFpQixHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO1lBQ2xELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFFcEUsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuRCxJQUFJLFdBQThCLENBQUM7WUFDbkMsSUFBSSxDQUFDO2dCQUNILFdBQVcsR0FBRyxJQUFBLFlBQUssRUFBQyxPQUFPLENBQXNCLENBQUM7WUFDcEQsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsQ0FBQyxDQUFDLE9BQU87b0JBQ1AsR0FBRyxhQUFhLG9DQUFvQyxRQUFRLE1BQU07d0JBQ2xFLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ1osTUFBTSxDQUFDLENBQUM7WUFDVixDQUFDO1lBQ0QsS0FBSyxJQUFJLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDbkMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDckQsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxhQUFhLDRCQUE0QixJQUFJLHFCQUFxQixRQUFRLElBQUksQ0FDbEYsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUEvQ0QsZ0RBK0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzID0gcmVxdWlyZShcImZzXCIpO1xuaW1wb3J0IHJlc29sdmUgPSByZXF1aXJlKFwicmVzb2x2ZVwiKTtcbmltcG9ydCB7IERlZmluaXRpb24gfSBmcm9tIFwiLi9kZWZpbml0aW9uXCI7XG5pbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJ5YW1sXCI7XG5cbmV4cG9ydCBjbGFzcyBEZWZpbml0aW9uUmVzb2x2ZXIge1xuICBwcml2YXRlIGNhY2hlZFBhdGhUb05hbWVUb0RlZmluaXRpb25zID0gbmV3IE1hcDxcbiAgICBzdHJpbmcsXG4gICAgTWFwPHN0cmluZywgRGVmaW5pdGlvbj5cbiAgPigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhc2VNb2R1bGVQYXRoOiBzdHJpbmcpIHt9XG5cbiAgcHVibGljIHJlc29sdmUoXG4gICAgbG9nZ2luZ1ByZWZpeDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBpbXBvcnRQYXRoPzogc3RyaW5nLFxuICApOiBEZWZpbml0aW9uIHtcbiAgICBpZiAoIWltcG9ydFBhdGgpIHtcbiAgICAgIGltcG9ydFBhdGggPSB0aGlzLmJhc2VNb2R1bGVQYXRoO1xuICAgIH1cbiAgICBsZXQgZmlsZVBhdGggPSByZXNvbHZlLnN5bmMoaW1wb3J0UGF0aCwge1xuICAgICAgYmFzZWRpcjogXCIuXCIsXG4gICAgICBleHRlbnNpb25zOiBbXCIueWFtbFwiXSxcbiAgICB9KTtcbiAgICBsZXQgbmFtZVRvRGVmaW5pdGlvbnMgPSB0aGlzLmNhY2hlZFBhdGhUb05hbWVUb0RlZmluaXRpb25zLmdldChmaWxlUGF0aCk7XG4gICAgaWYgKCFuYW1lVG9EZWZpbml0aW9ucykge1xuICAgICAgbmFtZVRvRGVmaW5pdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgRGVmaW5pdGlvbj4oKTtcbiAgICAgIHRoaXMuY2FjaGVkUGF0aFRvTmFtZVRvRGVmaW5pdGlvbnMuc2V0KGZpbGVQYXRoLCBuYW1lVG9EZWZpbml0aW9ucyk7XG5cbiAgICAgIGxldCB5YW1sU3RyID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoKS50b1N0cmluZygpO1xuICAgICAgbGV0IGRlZmluaXRpb25zOiBBcnJheTxEZWZpbml0aW9uPjtcbiAgICAgIHRyeSB7XG4gICAgICAgIGRlZmluaXRpb25zID0gcGFyc2UoeWFtbFN0cikgYXMgQXJyYXk8RGVmaW5pdGlvbj47XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGUubWVzc2FnZSA9XG4gICAgICAgICAgYCR7bG9nZ2luZ1ByZWZpeH0gZmFpbGVkIHRvIHBhcnNlIFlBTUwgcmVhZCBmcm9tIFwiJHtmaWxlUGF0aH1cIi5cXG5gICtcbiAgICAgICAgICBlLm1lc3NhZ2U7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBkZWZpbml0aW9uIG9mIGRlZmluaXRpb25zKSB7XG4gICAgICAgIG5hbWVUb0RlZmluaXRpb25zLnNldChkZWZpbml0aW9uLm5hbWUsIGRlZmluaXRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgZGVmaW5pdGlvbiA9IG5hbWVUb0RlZmluaXRpb25zLmdldChuYW1lKTtcbiAgICBpZiAoIWRlZmluaXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7bG9nZ2luZ1ByZWZpeH0gbWVzc2FnZS9lbnVtIGRlZmluaXRpb24gJHtuYW1lfSBpcyBub3QgZm91bmQgaW4gXCIke2ZpbGVQYXRofVwiLmAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgfVxufVxuIl19