UNPKG

@graphql-codegen/typescript-mongodb

Version:

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

31 lines (30 loc) 900 B
import set from 'lodash/set.js'; import { indent } from '@graphql-codegen/visitor-plugin-common'; export class FieldsTree { constructor() { this._fields = {}; } addField(path, type) { if (type === undefined) { throw new Error('Did not expect type to be undefined'); } set(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 indent(`${fieldName}: ${this._getInnerField(fieldValue, level + 1)},`, level); }); return level === 1 ? fields.join('\n') : `{ ${fields.join('\n')} ${indent('}', level - 1)}`; } get string() { return this._getInnerField(this._fields); } }