all files / handlers/ RamlHandler.js

100% Statements 29/29
100% Branches 2/2
100% Functions 8/8
100% Lines 29/29
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63                                              18×                      
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var BaseHandler_1 = require("./BaseHandler");
var ramlParser = require("raml-1-parser");
var utils_1 = require("../commons/utils/utils");
/**
 * Raml Handler.
 *
 * @export
 * @class RamlHandler
 * @extends {BaseHandler}
 */
var RamlHandler = (function (_super) {
    tslib_1.__extends(RamlHandler, _super);
    /**
     * Constructor for the RamlHandler.
     *
     * @param {*} options Spec path.
     */
    function RamlHandler(options) {
        var _this = _super.call(this, 'raml') || this;
        _this.path = options.path;
        return _this;
    }
    /**
     * Parse raml spec file and return a normalized schema.
     *
     * @returns {Promise<Schema>} parsed schema.
     * @memberof RamlHandler
     */
    RamlHandler.prototype.parseSchema = function () {
        return tslib_1.__awaiter(this, void 0, void 0, function () {
            var _this = this;
            return tslib_1.__generator(this, function (_a) {
                return [2 /*return*/, new Promise(function (resolve, reject) {
                        try {
                            var schema_1 = [];
                            var types = (ramlParser.loadApiSync(_this.path).expand()).types();
                            types.forEach(function (type) {
                                var columns = type.toJSON({ serializeMetadata: false })[type.name()].properties;
                                var table = {
                                    name: utils_1.default.toTableName(type.name()),
                                    columns: [],
                                };
                                Object.keys(columns).map(function (name) {
                                    table.columns.push(_this.normalizeColumnSchema(columns[name]));
                                });
                                schema_1.push(table);
                            });
                            resolve(_this.normalizeRelations(schema_1));
                        }
                        catch (e) {
                            reject(new Error('Incorrect RAML file!'));
                        }
                    })];
            });
        });
    };
    return RamlHandler;
}(BaseHandler_1.default));
exports.default = RamlHandler;