From 619fcc2123049eadd90c3e0b3d8b12673065df11 Mon Sep 17 00:00:00 2001 From: Romain Lenzotti Date: Thu, 25 Jul 2024 12:16:01 +0200 Subject: [PATCH] fix(cli): fix require error issue related to update-notifier import Closes: #392 --- package.json | 2 +- packages/cli-core/package.json | 1 - packages/cli-core/src/interfaces/Tasks.ts | 3 +- packages/cli-core/src/services/CliPlugins.ts | 3 +- .../src/services/ProjectPackageJson.spec.ts | 3 +- .../cli-core/src/utils/createTasksRunner.ts | 1 + packages/cli-core/src/utils/index.ts | 1 - packages/cli-core/src/utils/loadPlugins.ts | 1 + packages/cli-core/tsconfig.json | 1 + packages/cli/package.json | 1 - .../init/init.integration.spec.ts | 78 +++++++++---------- yarn.lock | 28 ++----- 12 files changed, 53 insertions(+), 70 deletions(-) diff --git a/package.json b/package.json index c2bea26cc..ebc7fa43d 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "@swc/helpers": "^0.5.1", "@swc/jest": "^0.2.26", "@tsed/markdown-it-symbols": "3.20.4", - "@tsed/monorepo-utils": "2.1.2", + "@tsed/monorepo-utils": "2.2.2", "@tsed/ts-doc": "^4.1.0", "@types/jest": "28.1.7", "@types/node": "18.7.8", diff --git a/packages/cli-core/package.json b/packages/cli-core/package.json index 760bdab15..fa7ddc29c 100644 --- a/packages/cli-core/package.json +++ b/packages/cli-core/package.json @@ -45,7 +45,6 @@ "enquirer": "2.3.6", "execa": "5.1.1", "figures": "4.0.1", - "filedirname": "2.7.0", "fs-extra": "11.1.0", "globby": "11.1.0", "handlebars": "4.7.7", diff --git a/packages/cli-core/src/interfaces/Tasks.ts b/packages/cli-core/src/interfaces/Tasks.ts index 5ec50be26..9a7247c5d 100644 --- a/packages/cli-core/src/interfaces/Tasks.ts +++ b/packages/cli-core/src/interfaces/Tasks.ts @@ -1,4 +1,5 @@ -import {ListrContext, ListrOptions, ListrTask} from "listr2"; +// @ts-ignore +import type {ListrContext, ListrOptions, ListrTask} from "listr2"; export interface TaskOptions extends ListrOptions { concurrent?: boolean | number; diff --git a/packages/cli-core/src/services/CliPlugins.ts b/packages/cli-core/src/services/CliPlugins.ts index b2cea86d3..7968e4c75 100644 --- a/packages/cli-core/src/services/CliPlugins.ts +++ b/packages/cli-core/src/services/CliPlugins.ts @@ -7,6 +7,7 @@ import {CliHooks} from "./CliHooks"; import {NpmRegistryClient} from "./NpmRegistryClient"; import {ProjectPackageJson} from "./ProjectPackageJson"; import {PackageManagersModule} from "../packageManagers/PackageManagersModule"; +import {Task} from "../interfaces"; function mapPlugins({package: {name, description = "", ...otherProps}}: any) { return { @@ -46,7 +47,7 @@ export class CliPlugins { return loadPlugins(this.injector); } - addPluginsDependencies(ctx: any) { + addPluginsDependencies(ctx: any): Task[] { const plugins = Object.keys(this.packageJson.devDependencies).filter((name) => this.isPlugin(name)); const tasks = plugins.map((plugin) => { diff --git a/packages/cli-core/src/services/ProjectPackageJson.spec.ts b/packages/cli-core/src/services/ProjectPackageJson.spec.ts index 848dfe8bd..8eade1fb1 100644 --- a/packages/cli-core/src/services/ProjectPackageJson.spec.ts +++ b/packages/cli-core/src/services/ProjectPackageJson.spec.ts @@ -1,11 +1,10 @@ import {CliPlatformTest} from "@tsed/cli-testing"; import {join, resolve} from "path"; -import filedirname from "filedirname"; import {ProjectPackageJson} from "./ProjectPackageJson"; import {CliFs} from "./CliFs"; import {CliExeca} from "./CliExeca"; -const [, dir] = filedirname(); +const dir = __dirname; async function getProjectPackageJsonFixture() { const cliFs = { diff --git a/packages/cli-core/src/utils/createTasksRunner.ts b/packages/cli-core/src/utils/createTasksRunner.ts index 91f5568a0..8994b8cd2 100644 --- a/packages/cli-core/src/utils/createTasksRunner.ts +++ b/packages/cli-core/src/utils/createTasksRunner.ts @@ -1,3 +1,4 @@ +// @ts-ignore import {Listr, ListrTaskWrapper, Logger} from "listr2"; import type {TaskOptions, Tasks} from "../interfaces/Tasks"; import {isFunction} from "@tsed/core"; diff --git a/packages/cli-core/src/utils/index.ts b/packages/cli-core/src/utils/index.ts index c02bdfe83..f9ee5ed36 100644 --- a/packages/cli-core/src/utils/index.ts +++ b/packages/cli-core/src/utils/index.ts @@ -8,4 +8,3 @@ export * from "./parseOption"; export * from "./createTasksRunner"; export * from "./resolveConfiguration"; export * from "./getTemplateDirectory"; -export {default as filedirname} from "filedirname"; diff --git a/packages/cli-core/src/utils/loadPlugins.ts b/packages/cli-core/src/utils/loadPlugins.ts index c5106da44..f43f02226 100644 --- a/packages/cli-core/src/utils/loadPlugins.ts +++ b/packages/cli-core/src/utils/loadPlugins.ts @@ -1,4 +1,5 @@ import {GlobalProviders, InjectorService} from "@tsed/di"; +// @ts-ignore import {figures} from "listr2"; import chalk from "chalk"; import {CliFs} from "../services/CliFs"; diff --git a/packages/cli-core/tsconfig.json b/packages/cli-core/tsconfig.json index c2c5c3849..6bf41c7f2 100644 --- a/packages/cli-core/tsconfig.json +++ b/packages/cli-core/tsconfig.json @@ -3,6 +3,7 @@ "compilerOptions": { "baseUrl": ".", "module": "commonjs", + "moduleResolution": "Node16", "rootDir": "src", "outDir": "./lib/cjs", "declaration": true, diff --git a/packages/cli/package.json b/packages/cli/package.json index 053851d93..cf701deb6 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -71,7 +71,6 @@ "@tsed/schema": ">=7.14.2", "chalk": "4.1.2", "change-case": "4.1.2", - "filedirname": "2.7.0", "globby": "11.1.0", "module-alias": "^2.2.2", "normalize-path": "3.0.0", diff --git a/packages/cli/test/integrations/init/init.integration.spec.ts b/packages/cli/test/integrations/init/init.integration.spec.ts index d7a677c6f..20b9d0cd7 100644 --- a/packages/cli/test/integrations/init/init.integration.spec.ts +++ b/packages/cli/test/integrations/init/init.integration.spec.ts @@ -3,9 +3,8 @@ import {CliPlatformTest, FakeCliFs} from "@tsed/cli-testing"; import {ensureDirSync, writeFileSync} from "fs-extra"; import {join} from "path"; import {ArchitectureConvention, InitCmd, ProjectConvention, TEMPLATE_DIR} from "../../../src"; -import filedirname from "filedirname"; -const [, dir] = filedirname(); +const dir = __dirname describe("Init cmd", () => { beforeEach(() => { @@ -66,9 +65,9 @@ describe("Init cmd", () => { `); const content = FakeCliFs.entries.get("project-name/src/Server.ts")!; - expect(content).toContain('import {Configuration, Inject} from "@tsed/di"'); - expect(content).toContain('import "@tsed/platform-express"'); - expect(content).toContain('import "@tsed/ajv"'); + expect(content).toContain("import {Configuration, Inject} from \"@tsed/di\""); + expect(content).toContain("import \"@tsed/platform-express\""); + expect(content).toContain("import \"@tsed/ajv\""); expect(content).toMatchSnapshot(); const pkg = JSON.parse(FakeCliFs.entries.get("project-name/package.json")!); @@ -116,7 +115,7 @@ describe("Init cmd", () => { expect(dockerFile).toContain("RUN yarn install --pure-lockfile"); const indexContent = FakeCliFs.entries.get("project-name/src/index.ts")!; - expect(indexContent).toContain('import {Server} from "./Server"'); + expect(indexContent).toContain("import {Server} from \"./Server\""); }); it("should generate a project with swagger", async () => { CliPlatformTest.setPackageJson({ @@ -170,10 +169,10 @@ describe("Init cmd", () => { const content = FakeCliFs.entries.get("project-name/src/Server.ts")!; - expect(content).toContain('import {Configuration, Inject} from "@tsed/di"'); - expect(content).toContain('import "@tsed/platform-express"'); - expect(content).toContain('import "@tsed/ajv"'); - expect(content).toContain('import * as pages from "./controllers/pages/index"'); + expect(content).toContain("import {Configuration, Inject} from \"@tsed/di\""); + expect(content).toContain("import \"@tsed/platform-express\""); + expect(content).toContain("import \"@tsed/ajv\""); + expect(content).toContain("import * as pages from \"./controllers/pages/index\""); expect(content).toMatchSnapshot(); const pkg = JSON.parse(FakeCliFs.entries.get("project-name/package.json")!); @@ -261,9 +260,9 @@ describe("Init cmd", () => { `); const content = FakeCliFs.entries.get("project-name/src/Server.ts")!; - expect(content).toContain('import {Configuration, Inject} from "@tsed/di"'); - expect(content).toContain('import "@tsed/platform-express"'); - expect(content).toContain('import "@tsed/ajv"'); + expect(content).toContain("import {Configuration, Inject} from \"@tsed/di\""); + expect(content).toContain("import \"@tsed/platform-express\""); + expect(content).toContain("import \"@tsed/ajv\""); expect(content).toMatchSnapshot(); const pkg = JSON.parse(FakeCliFs.entries.get("project-name/package.json")!); @@ -352,9 +351,9 @@ describe("Init cmd", () => { `); const content = FakeCliFs.entries.get("project-name/src/Server.ts")!; - expect(content).toContain('import {Configuration, Inject} from "@tsed/di"'); - expect(content).toContain('import "@tsed/platform-express"'); - expect(content).toContain('import "@tsed/ajv"'); + expect(content).toContain("import {Configuration, Inject} from \"@tsed/di\""); + expect(content).toContain("import \"@tsed/platform-express\""); + expect(content).toContain("import \"@tsed/ajv\""); expect(content).toMatchSnapshot(); const pkg = JSON.parse(FakeCliFs.entries.get("project-name/package.json")!); @@ -444,9 +443,9 @@ describe("Init cmd", () => { `); const content = FakeCliFs.entries.get("project-name/src/Server.ts")!; - expect(content).toContain('import {Configuration, Inject} from "@tsed/di"'); - expect(content).toContain('import "@tsed/platform-express"'); - expect(content).toContain('import "@tsed/ajv"'); + expect(content).toContain("import {Configuration, Inject} from \"@tsed/di\""); + expect(content).toContain("import \"@tsed/platform-express\""); + expect(content).toContain("import \"@tsed/ajv\""); expect(content).toMatchSnapshot(); const pkg = JSON.parse(FakeCliFs.entries.get("project-name/package.json")!); @@ -536,9 +535,9 @@ describe("Init cmd", () => { `); const content = FakeCliFs.entries.get("project-name/src/Server.ts")!; - expect(content).toContain('import {Configuration, Inject} from "@tsed/di"'); - expect(content).toContain('import "@tsed/platform-express"'); - expect(content).toContain('import "@tsed/ajv"'); + expect(content).toContain("import {Configuration, Inject} from \"@tsed/di\""); + expect(content).toContain("import \"@tsed/platform-express\""); + expect(content).toContain("import \"@tsed/ajv\""); expect(content).toMatchSnapshot(); const pkg = JSON.parse(FakeCliFs.entries.get("project-name/package.json")!); @@ -626,9 +625,9 @@ describe("Init cmd", () => { `); const content = FakeCliFs.entries.get("project-name/src/Server.ts")!; - expect(content).toContain('import {Configuration, Inject} from "@tsed/di"'); - expect(content).toContain('import "@tsed/platform-express"'); - expect(content).toContain('import "@tsed/ajv"'); + expect(content).toContain("import {Configuration, Inject} from \"@tsed/di\""); + expect(content).toContain("import \"@tsed/platform-express\""); + expect(content).toContain("import \"@tsed/ajv\""); expect(content).toMatchSnapshot(); const pkg = JSON.parse(FakeCliFs.entries.get("project-name/package.json")!); @@ -724,15 +723,15 @@ describe("Init cmd", () => { `); const content = FakeCliFs.entries.get("project-name/src/server.ts")!; - expect(content).toContain('import {Configuration, Inject} from "@tsed/di"'); - expect(content).toContain('import "@tsed/platform-express"'); - expect(content).toContain('import "@tsed/ajv"'); + expect(content).toContain("import {Configuration, Inject} from \"@tsed/di\""); + expect(content).toContain("import \"@tsed/platform-express\""); + expect(content).toContain("import \"@tsed/ajv\""); expect(content).toMatchSnapshot(); - expect(content).toContain('import * as pages from "./controllers/pages/index"'); + expect(content).toContain("import * as pages from \"./controllers/pages/index\""); expect(content).toContain("export class Server {"); const indexContent = FakeCliFs.entries.get("project-name/src/index.ts")!; - expect(indexContent).toContain('import {Server} from "./server"'); + expect(indexContent).toContain("import {Server} from \"./server\""); }); it("should generate a project with Arch FEATURE", async () => { CliPlatformTest.setPackageJson({ @@ -788,15 +787,15 @@ describe("Init cmd", () => { `); const content = FakeCliFs.entries.get("project-name/src/server.ts")!; - expect(content).toContain('import {Configuration, Inject} from "@tsed/di"'); - expect(content).toContain('import "@tsed/platform-express"'); - expect(content).toContain('import "@tsed/ajv"'); + expect(content).toContain("import {Configuration, Inject} from \"@tsed/di\""); + expect(content).toContain("import \"@tsed/platform-express\""); + expect(content).toContain("import \"@tsed/ajv\""); expect(content).toMatchSnapshot(); - expect(content).toContain('import * as pages from "./pages/index"'); + expect(content).toContain("import * as pages from \"./pages/index\""); expect(content).toContain("export class Server {"); const indexContent = FakeCliFs.entries.get("project-name/src/index.ts")!; - expect(indexContent).toContain('import {Server} from "./server"'); + expect(indexContent).toContain("import {Server} from \"./server\""); }); }); @@ -848,9 +847,9 @@ describe("Init cmd", () => { const content = FakeCliFs.entries.get("project-name/src/Server.ts")!; - expect(content).toContain('import {Configuration, Inject} from "@tsed/di"'); - expect(content).toContain('import "@tsed/platform-koa"'); - expect(content).toContain('import "@tsed/ajv"'); + expect(content).toContain("import {Configuration, Inject} from \"@tsed/di\""); + expect(content).toContain("import \"@tsed/platform-koa\""); + expect(content).toContain("import \"@tsed/ajv\""); expect(content).toMatchSnapshot(); const pkg = JSON.parse(FakeCliFs.entries.get("project-name/package.json")!); @@ -921,7 +920,8 @@ describe("Init cmd", () => { ensureDirSync(join(dir, "data", key)); } }); - } catch (er) {} + } catch (er) { + } expect(FakeCliFs.getKeys()).toMatchInlineSnapshot(` Array [ diff --git a/yarn.lock b/yarn.lock index 7ddcd4244..44eb95322 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3277,7 +3277,6 @@ __metadata: eslint: "npm:8.22.0" execa: "npm:5.1.1" figures: "npm:4.0.1" - filedirname: "npm:2.7.0" fs-extra: "npm:11.1.0" globby: "npm:11.1.0" handlebars: "npm:4.7.7" @@ -3543,7 +3542,7 @@ __metadata: "@tsed/di": "npm:>=7.14.2" "@tsed/logger": "npm:>=6.2.1" "@tsed/markdown-it-symbols": "npm:3.20.4" - "@tsed/monorepo-utils": "npm:2.1.2" + "@tsed/monorepo-utils": "npm:2.2.2" "@tsed/normalize-path": "npm:>=7.14.2" "@tsed/ts-doc": "npm:^4.1.0" "@types/jest": "npm:28.1.7" @@ -3635,7 +3634,6 @@ __metadata: change-case: "npm:4.1.2" cross-env: "npm:7.0.3" eslint: "npm:8.22.0" - filedirname: "npm:2.7.0" globby: "npm:11.1.0" jest: "npm:29.5.0" module-alias: "npm:^2.2.2" @@ -3723,9 +3721,9 @@ __metadata: languageName: node linkType: hard -"@tsed/monorepo-utils@npm:2.1.2": - version: 2.1.2 - resolution: "@tsed/monorepo-utils@npm:2.1.2" +"@tsed/monorepo-utils@npm:2.2.2": + version: 2.2.2 + resolution: "@tsed/monorepo-utils@npm:2.2.2" dependencies: "@samverschueren/stream-to-observable": "npm:>=0.3.1" "@typescript-eslint/typescript-estree": "npm:>=6.20.0" @@ -3752,7 +3750,7 @@ __metadata: semantic-release: ">=19" bin: monorepo: bin/monorepo.js - checksum: 10/839fdd5a50e893a61f2bfdabec82296504bd5b060fe6211ed6e591e473b9979b3a4c4b7eba427e836d54bee0788c89d56fe72e5088d70e5acaa22305958fb21f + checksum: 10/854af44cf89137c2586efb2f2c24b965f4da6e14fc0a45f0e46b42451642ee32712d10ccea17fb58e54bdc9a2731d547cd715ec464d94167eaa6c9c9c72669f3 languageName: node linkType: hard @@ -8432,15 +8430,6 @@ __metadata: languageName: node linkType: hard -"filedirname@npm:2.7.0": - version: 2.7.0 - resolution: "filedirname@npm:2.7.0" - dependencies: - get-current-line: "npm:^6.5.0" - checksum: 10/a32e2c1005ac8a3706cda47819ebff1100d5892e986e73c311da7ca80679143ada01d9536ef42c10af0ec076a616ae390b5f30c332f373fd4fb483731f41148e - languageName: node - linkType: hard - "fill-range@npm:^4.0.0": version: 4.0.0 resolution: "fill-range@npm:4.0.0" @@ -8829,13 +8818,6 @@ __metadata: languageName: node linkType: hard -"get-current-line@npm:^6.5.0": - version: 6.6.0 - resolution: "get-current-line@npm:6.6.0" - checksum: 10/bff44a3b3b5469dae1ab5b87adfe88d8149379b35069f6902eff3e779e1996e5464a106d2d542f1c89cd02e17fe513e4ca30e5910a59877d0588631da4ac1f48 - languageName: node - linkType: hard - "get-east-asian-width@npm:^1.0.0": version: 1.2.0 resolution: "get-east-asian-width@npm:1.2.0"