@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
JavaScript
;
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;