UNPKG

@tsed/cli

Version:
37 lines (36 loc) 1.69 kB
import { __decorate } from "tslib"; import { basename } from "node:path"; import { ProjectPackageJson } from "@tsed/cli-core"; import { inject, Injectable } from "@tsed/di"; import { kebabCase, pascalCase } from "change-case"; import { ProjectConvention } from "../interfaces/ProjectConvention.js"; import { ProvidersInfoService } from "../services/ProvidersInfoService.js"; let ClassNamePipe = class ClassNamePipe { constructor() { this.providers = inject(ProvidersInfoService); this.projectPackageJson = inject(ProjectPackageJson); } transform(options) { const format = options.format || this.projectPackageJson.preferences.convention || ProjectConvention.DEFAULT; const meta = this.providers.get(options.type)?.model || "{{symbolName}}.{{symbolType}}?"; const type = options.type.split(":").at(-1); const symbolName = kebabCase(basename(options.name)).replace(`-${type}`, ""); const names = meta.split(".").reduce((acc, key) => { return key .replace(/{{symbolName}}/gi, symbolName) .replace(/{{symbolType}}/gi, type) .split(".") .filter((value) => (format === ProjectConvention.DEFAULT ? !value.endsWith("?") : true)) .map((value) => value.replace(/\?$/, "").toLowerCase()) .reduce((acc, value) => acc.add(value), acc); }, new Set()); if (format === ProjectConvention.DEFAULT) { return pascalCase([...names].join(".")); } return [...names].join(".").toLowerCase(); } }; ClassNamePipe = __decorate([ Injectable() ], ClassNamePipe); export { ClassNamePipe };