UNPKG

@graphql-codegen/typescript-mongodb

Version:

GraphQL Code Generator plugin for generting a ready-to-use ORM types for MongoDB

36 lines (35 loc) 1.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FieldsTree = void 0; const tslib_1 = require("tslib"); const set_js_1 = tslib_1.__importDefault(require("lodash/set.js")); const visitor_plugin_common_1 = require("@graphql-codegen/visitor-plugin-common"); class FieldsTree { constructor() { this._fields = {}; } addField(path, type) { if (type === undefined) { throw new Error('Did not expect type to be undefined'); } (0, set_js_1.default)(this._fields, path, type); } _getInnerField(root, level = 1) { if (typeof root === 'string') { return root; } const fields = Object.keys(root).map(fieldName => { const fieldValue = root[fieldName]; return (0, visitor_plugin_common_1.indent)(`${fieldName}: ${this._getInnerField(fieldValue, level + 1)},`, level); }); return level === 1 ? fields.join('\n') : `{ ${fields.join('\n')} ${(0, visitor_plugin_common_1.indent)('}', level - 1)}`; } get string() { return this._getInnerField(this._fields); } } exports.FieldsTree = FieldsTree;