UNPKG

@nestjs/graphql

Version:

Nest - modern, fast, powerful node.js web framework (@graphql)

31 lines (30 loc) 1.1 kB
import * as ts from 'typescript'; import { mergePluginOptions } from '../merge-options.js'; import { isFilenameMatched } from '../utils/is-filename-matched.util.js'; import { ModelClassVisitor } from './model-class.visitor.js'; export class ReadonlyVisitor { get typeImports() { return this.modelClassVisitor.typeImports; } constructor(options) { this.options = options; this.key = '@nestjs/graphql'; this.modelClassVisitor = new ModelClassVisitor(); options.readonly = true; if (!options.pathToSource) { throw new Error(`"pathToSource" must be defined in plugin options`); } } visit(program, sf) { const factoryHost = { factory: ts.factory }; const parsedOptions = mergePluginOptions(this.options); if (isFilenameMatched(parsedOptions.typeFileNameSuffix, sf.fileName)) { return this.modelClassVisitor.visit(sf, factoryHost, program, parsedOptions); } } collect() { return { models: this.modelClassVisitor.collectedMetadata, }; } }