Skip to content

Commit

Permalink
refactor: migrate plugins code to functional API
Browse files Browse the repository at this point in the history
  • Loading branch information
Romakita committed Oct 10, 2024
1 parent 07e1446 commit ecbe1ad
Show file tree
Hide file tree
Showing 23 changed files with 72 additions and 191 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {CliFs, Command, type CommandProvider, Inject, Type} from "@tsed/cli-core";
import {CliFs, Command, type CommandProvider, constant, inject, Type} from "@tsed/cli-core";
import {isString} from "@tsed/core";
import {Constant, InjectorService} from "@tsed/di";
import {InjectorService} from "@tsed/di";
import {camelCase} from "change-case";
import path, {join, resolve} from "path";
import {generateApi, type Hooks, type RawRouteInfo, type RouteNameInfo} from "swagger-typescript-api";
Expand Down Expand Up @@ -48,17 +48,9 @@ export interface GenerateHttpClientOpts {
}
})
export class GenerateHttpClientCmd implements CommandProvider {
@Inject()
injector: InjectorService;

@Inject()
protected fs: CliFs;

@Constant("server")
protected serverModule: Type<any>;

@Constant("httpClient", {hooks: {}})
protected options: Partial<GenerateHttpClientOpts>;
protected fs = inject(CliFs);
protected serverModule = constant<Type<any>>("server");
protected options = constant<Partial<GenerateHttpClientOpts>>("httpClient", {hooks: {}});

$mapContext($ctx: GenerateHttpClientCtx) {
return {...$ctx, output: resolve(join(process.cwd(), $ctx.output))};
Expand Down
16 changes: 4 additions & 12 deletions packages/cli-generate-swagger/src/commands/GenerateSwaggerCmd.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {CliFs, CliYaml, Command, type CommandProvider, Constant, Inject, InjectorService, Type} from "@tsed/cli-core";
import {CliFs, CliYaml, Command, type CommandProvider, Constant, constant, Inject, inject, InjectorService, Type} from "@tsed/cli-core";
import path, {join, resolve} from "path";

export interface GenerateSwaggerCtx {
Expand All @@ -17,17 +17,9 @@ export interface GenerateSwaggerCtx {
}
})
export class GenerateSwaggerCmd implements CommandProvider {
@Inject()
injector: InjectorService;

@Inject()
protected fs: CliFs;

@Inject()
protected cliYaml: CliYaml;

@Constant("server")
protected serverModule: Type<any>;
protected fs = inject(CliFs);
protected cliYaml = inject(CliYaml);
protected serverModule = constant<Type<any>>("server");

$mapContext($ctx: GenerateSwaggerCtx) {
return {...$ctx, output: resolve(join(process.cwd(), $ctx.output))};
Expand Down
13 changes: 4 additions & 9 deletions packages/cli-plugin-eslint/src/hooks/EslintInitHook.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
import type {InitCmdContext} from "@tsed/cli";
import {Inject, Injectable, OnExec, OnPostInstall, PackageManagersModule, ProjectPackageJson, RootRendererService} from "@tsed/cli-core";
import {inject, Injectable, OnExec, OnPostInstall, PackageManagersModule, ProjectPackageJson, RootRendererService} from "@tsed/cli-core";

import {TEMPLATE_DIR} from "../utils/templateDir.js";

@Injectable()
export class EslintInitHook {
@Inject()
protected packageJson: ProjectPackageJson;

@Inject()
protected packageManagers: PackageManagersModule;

@Inject()
protected rootRenderer: RootRendererService;
protected packageJson = inject(ProjectPackageJson);
protected packageManagers = inject(PackageManagersModule);
protected rootRenderer = inject(RootRendererService);

@OnExec("init")
onExec(ctx: InitCmdContext) {
Expand Down
10 changes: 3 additions & 7 deletions packages/cli-plugin-jest/src/CliPluginJestModule.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import {RuntimesModule} from "@tsed/cli";
import {Module, OnAdd, ProjectPackageJson} from "@tsed/cli-core";
import {Inject} from "@tsed/di";
import {inject, Module, OnAdd, ProjectPackageJson} from "@tsed/cli-core";

import {JestGenerateHook} from "./hooks/JestGenerateHook.js";
import {JestInitHook} from "./hooks/JestInitHook.js";
Expand All @@ -9,11 +8,8 @@ import {JestInitHook} from "./hooks/JestInitHook.js";
imports: [JestInitHook, JestGenerateHook]
})
export class CliPluginJestModule {
@Inject()
runtimes: RuntimesModule;

@Inject()
packageJson: ProjectPackageJson;
protected runtimes = inject(RuntimesModule);
protected packageJson = inject(ProjectPackageJson);

@OnAdd("@tsed/cli-plugin-jest")
install() {
Expand Down
6 changes: 2 additions & 4 deletions packages/cli-plugin-mongoose/src/CliPluginMongooseModule.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {Module, OnAdd, ProjectPackageJson} from "@tsed/cli-core";
import {Inject} from "@tsed/di";
import {inject, Module, OnAdd, ProjectPackageJson} from "@tsed/cli-core";

import {MongooseGenerateHook} from "./hooks/MongooseGenerateHook.js";
import {MongooseInitHook} from "./hooks/MongooseInitHook.js";
Expand All @@ -9,8 +8,7 @@ import {CliMongoose} from "./services/CliMongoose.js";
imports: [MongooseInitHook, MongooseGenerateHook, CliMongoose]
})
export class CliPluginMongooseModule {
@Inject()
packageJson: ProjectPackageJson;
protected packageJson = inject(ProjectPackageJson);

@OnAdd("@tsed/cli-plugin-mongoose")
install() {
Expand Down
19 changes: 6 additions & 13 deletions packages/cli-plugin-mongoose/src/hooks/MongooseGenerateHook.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {type GenerateCmdContext, ProvidersInfoService} from "@tsed/cli";
import {CliDockerComposeYaml, Inject, OnExec, ProjectPackageJson, SrcRendererService, type Tasks} from "@tsed/cli-core";
import {CliDockerComposeYaml, inject, OnExec, ProjectPackageJson, SrcRendererService, type Tasks} from "@tsed/cli-core";
import {Injectable} from "@tsed/di";
import {camelCase, kebabCase} from "change-case";
// @ts-ignore
Expand All @@ -10,18 +10,11 @@ import {TEMPLATE_DIR} from "../utils/templateDir.js";

@Injectable()
export class MongooseGenerateHook {
@Inject()
projectPackageJson: ProjectPackageJson;

@Inject()
srcRenderService: SrcRendererService;

@Inject()
cliMongoose: CliMongoose;

packages: any[];
@Inject()
protected cliDockerComposeYaml: CliDockerComposeYaml;
protected projectPackageJson = inject(ProjectPackageJson);
protected srcRenderService = inject(SrcRendererService);
protected cliMongoose = inject(CliMongoose);
protected packages: any[];
protected cliDockerComposeYaml = inject(CliDockerComposeYaml);

constructor(private providersInfoService: ProvidersInfoService) {
providersInfoService
Expand Down
19 changes: 4 additions & 15 deletions packages/cli-plugin-mongoose/src/hooks/MongooseInitHook.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,14 @@
import type {InitCmdContext} from "@tsed/cli";
import {CliDockerComposeYaml, Inject, OnExec, ProjectPackageJson, RootRendererService, SrcRendererService} from "@tsed/cli-core";
import {CliDockerComposeYaml, inject, OnExec, ProjectPackageJson} from "@tsed/cli-core";
import {Injectable} from "@tsed/di";

import {CliMongoose} from "../services/CliMongoose.js";

@Injectable()
export class MongooseInitHook {
@Inject()
cliMongoose: CliMongoose;

@Inject()
protected packageJson: ProjectPackageJson;

@Inject()
protected rootRenderer: RootRendererService;

@Inject()
protected srcRenderer: SrcRendererService;

@Inject()
protected cliDockerComposeYaml: CliDockerComposeYaml;
protected cliMongoose = inject(CliMongoose);
protected packageJson = inject(ProjectPackageJson);
protected cliDockerComposeYaml = inject(CliDockerComposeYaml);

@OnExec("init")
onExec(ctx: InitCmdContext) {
Expand Down
9 changes: 3 additions & 6 deletions packages/cli-plugin-mongoose/src/services/CliMongoose.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
import {Inject, Injectable, ProjectPackageJson, SrcRendererService} from "@tsed/cli-core";
import {inject, Injectable, ProjectPackageJson, SrcRendererService} from "@tsed/cli-core";
import {camelCase, constantCase, kebabCase} from "change-case";
import {basename, join} from "path";

import {TEMPLATE_DIR} from "../utils/templateDir.js";

@Injectable()
export class CliMongoose {
@Inject()
projectPackageJson: ProjectPackageJson;

@Inject()
protected srcRenderer: SrcRendererService;
protected projectPackageJson = inject(ProjectPackageJson);
protected srcRenderer = inject(SrcRendererService);

async writeConfig(name: string, options: any = {}) {
await this.srcRenderer.render(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
import {Module, OnAdd, ProjectPackageJson} from "@tsed/cli-core";
import {Inject} from "@tsed/di";
import {inject, Module, OnAdd, ProjectPackageJson} from "@tsed/cli-core";

import {OidcProviderInitHook} from "./hooks/OidcProviderInitHook.js";

@Module({
imports: [OidcProviderInitHook]
})
export class CliPluginOidcProviderModule {
@Inject()
packageJson: ProjectPackageJson;
protected packageJson = inject(ProjectPackageJson);

@OnAdd("@tsed/cli-plugin-oidc-provider")
install() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,13 @@
import type {InitCmdContext} from "@tsed/cli";
import {CliDockerComposeYaml, Inject, OnExec, ProjectPackageJson, RootRendererService, SrcRendererService} from "@tsed/cli-core";
import {inject, OnExec, ProjectPackageJson, RootRendererService} from "@tsed/cli-core";
import {Injectable} from "@tsed/di";

import {TEMPLATE_DIR} from "../utils/templateDir.js";

@Injectable()
export class OidcProviderInitHook {
@Inject()
protected packageJson: ProjectPackageJson;

@Inject()
protected rootRenderer: RootRendererService;

@Inject()
protected srcRenderer: SrcRendererService;

@Inject()
protected cliDockerComposeYaml: CliDockerComposeYaml;
protected packageJson = inject(ProjectPackageJson);
protected rootRenderer = inject(RootRendererService);

@OnExec("init")
onExec(ctx: InitCmdContext) {
Expand Down
5 changes: 2 additions & 3 deletions packages/cli-plugin-passport/src/CliPluginPassportModule.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {Module, OnAdd, ProjectPackageJson} from "@tsed/cli-core";
import {inject, Module, OnAdd, ProjectPackageJson} from "@tsed/cli-core";
import {Inject} from "@tsed/di";

import {PassportGenerateHook} from "./hooks/PassportGenerateHook.js";
Expand All @@ -7,8 +7,7 @@ import {PassportGenerateHook} from "./hooks/PassportGenerateHook.js";
imports: [PassportGenerateHook]
})
export class CliPluginPassportModule {
@Inject()
packageJson: ProjectPackageJson;
protected packageJson = inject(ProjectPackageJson);

@OnAdd("@tsed/cli-plugin-passport")
install() {
Expand Down
16 changes: 5 additions & 11 deletions packages/cli-plugin-passport/src/hooks/PassportGenerateHook.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {type GenerateCmdContext, ProvidersInfoService} from "@tsed/cli";
import {Inject, OnExec, OnPrompt, ProjectPackageJson, SrcRendererService, type Tasks} from "@tsed/cli-core";
import {inject, OnExec, OnPrompt, ProjectPackageJson, SrcRendererService, type Tasks} from "@tsed/cli-core";
import {Injectable} from "@tsed/di";
import {kebabCase} from "change-case";

Expand All @@ -12,16 +12,10 @@ export interface PassportGenerateOptions extends GenerateCmdContext {

@Injectable()
export class PassportGenerateHook {
@Inject()
projectPackageJson: ProjectPackageJson;

@Inject()
srcRenderService: SrcRendererService;

@Inject()
passportClient: PassportClient;

packages: any[];
protected projectPackageJson = inject(ProjectPackageJson);
protected srcRenderService = inject(SrcRendererService);
protected passportClient = inject(PassportClient);
protected packages: any[];

constructor(private providersInfoService: ProvidersInfoService) {
providersInfoService.add(
Expand Down
5 changes: 2 additions & 3 deletions packages/cli-plugin-passport/src/services/PassportClient.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import {CliHttpClient, Inject, Injectable} from "@tsed/cli-core";
import {CliHttpClient, inject, Injectable} from "@tsed/cli-core";

const HOST = "http://www.passportjs.org/packages";

@Injectable()
export class PassportClient {
@Inject(CliHttpClient)
httpClient: CliHttpClient;
protected httpClient = inject(CliHttpClient);

async getPackages(): Promise<any[]> {
const result = await this.httpClient.get<any>(`${HOST}/-/all.json`, {});
Expand Down
8 changes: 2 additions & 6 deletions packages/cli-plugin-prisma/src/CliPluginPrismaModule.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
import {Module, ProjectPackageJson} from "@tsed/cli-core";
import {Inject} from "@tsed/di";
import {Module} from "@tsed/cli-core";

import {PrismaCmd} from "./commands/PrismaCmd.js";
import {PrismaInitHook} from "./hooks/PrismaInitHook.js";

@Module({
imports: [PrismaInitHook, PrismaCmd]
})
export class CliPluginPrismaModule {
@Inject()
packageJson: ProjectPackageJson;
}
export class CliPluginPrismaModule {}
5 changes: 2 additions & 3 deletions packages/cli-plugin-prisma/src/commands/PrismaCmd.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {type CliDefaultOptions, Command, type CommandProvider, Inject} from "@tsed/cli-core";
import {type CliDefaultOptions, Command, type CommandProvider, inject} from "@tsed/cli-core";

import {CliPrisma} from "../services/CliPrisma.js";

Expand All @@ -20,8 +20,7 @@ export interface PrismaContext extends CliDefaultOptions {
allowUnknownOption: true
})
export class PrismaCmd implements CommandProvider {
@Inject()
cli: CliPrisma;
protected cli = inject(CliPrisma);

$exec(ctx: PrismaContext) {
return [
Expand Down
16 changes: 4 additions & 12 deletions packages/cli-plugin-prisma/src/hooks/PrismaInitHook.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,14 @@
import type {InitCmdContext} from "@tsed/cli";
import {CliService, Inject, OnExec, PackageManagersModule, ProjectPackageJson} from "@tsed/cli-core";
import {inject, OnExec, PackageManagersModule, ProjectPackageJson} from "@tsed/cli-core";
import {Injectable} from "@tsed/di";

import {CliPrisma} from "../services/CliPrisma.js";

@Injectable()
export class PrismaInitHook {
@Inject()
protected cliPrisma: CliPrisma;

@Inject()
protected cliService: CliService;

@Inject()
protected packageJson: ProjectPackageJson;

@Inject()
protected packageManagers: PackageManagersModule;
protected cliPrisma = inject(CliPrisma);
protected packageJson = inject(ProjectPackageJson);
protected packageManagers = inject(PackageManagersModule);

@OnExec("init")
onExec(ctx: InitCmdContext) {
Expand Down
5 changes: 2 additions & 3 deletions packages/cli-plugin-typegraphql/src/TypeGraphqlModule.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {Module, OnAdd, ProjectPackageJson} from "@tsed/cli-core";
import {inject, Module, OnAdd, ProjectPackageJson} from "@tsed/cli-core";
import {Inject} from "@tsed/di";

import {TypeGraphqlInitHook} from "./hooks/TypeGraphqlInitHook.js";
Expand All @@ -7,8 +7,7 @@ import {TypeGraphqlInitHook} from "./hooks/TypeGraphqlInitHook.js";
imports: [TypeGraphqlInitHook]
})
export class TypeGraphqlModule {
@Inject()
packageJson: ProjectPackageJson;
protected packageJson = inject(ProjectPackageJson);

@OnAdd("@tsed/cli-plugin-typegraphql")
install(ctx: any) {
Expand Down
12 changes: 3 additions & 9 deletions packages/cli-plugin-typegraphql/src/hooks/TypeGraphqlInitHook.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
import type {InitCmdContext} from "@tsed/cli";
import {Inject, OnExec, ProjectPackageJson, RootRendererService, SrcRendererService} from "@tsed/cli-core";
import {inject, OnExec, ProjectPackageJson, RootRendererService} from "@tsed/cli-core";
import {Injectable} from "@tsed/di";

import {TEMPLATE_DIR} from "../utils/templateDir.js";

@Injectable()
export class TypeGraphqlInitHook {
@Inject()
protected packageJson: ProjectPackageJson;

@Inject()
protected rootRenderer: RootRendererService;

@Inject()
protected srcRenderer: SrcRendererService;
protected packageJson = inject(ProjectPackageJson);
protected rootRenderer = inject(RootRendererService);

@OnExec("init")
onExec(ctx: InitCmdContext) {
Expand Down
Loading

0 comments on commit ecbe1ad

Please sign in to comment.