diff --git a/.changeset/olive-guests-argue.md b/.changeset/olive-guests-argue.md new file mode 100644 index 000000000..e4513f9d5 --- /dev/null +++ b/.changeset/olive-guests-argue.md @@ -0,0 +1,6 @@ +--- +'@halfdomelabs/fastify-generators': patch +'@halfdomelabs/react-generators': patch +--- + +Remove baseUrl from tsconfig.json since it is no longer necessary and ensure better consistency with imports diff --git a/packages/code-morph/tsconfig.json b/packages/code-morph/tsconfig.json index 1762c0029..453287335 100644 --- a/packages/code-morph/tsconfig.json +++ b/packages/code-morph/tsconfig.json @@ -2,9 +2,8 @@ "extends": "@halfdomelabs/tools/tsconfig.node.cli.json", "compilerOptions": { "noEmit": true, - "baseUrl": ".", "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src/**/*"] diff --git a/packages/core-generators/src/generators/node/typescript/typescript.generator.ts b/packages/core-generators/src/generators/node/typescript/typescript.generator.ts index 1aa049142..32bb51d2d 100644 --- a/packages/core-generators/src/generators/node/typescript/typescript.generator.ts +++ b/packages/core-generators/src/generators/node/typescript/typescript.generator.ts @@ -149,7 +149,6 @@ export const typescriptFileProvider = const DEFAULT_COMPILER_OPTIONS: TypescriptCompilerOptions = { outDir: 'dist', declaration: true, - baseUrl: './src', target: 'es2022', lib: ['es2023'], esModuleInterop: true, @@ -214,9 +213,7 @@ export const typescriptGenerator = createGenerator({ if (!paths && (baseUrl === './' || baseUrl === '.')) { // TODO: Support other source folders cachedPathEntries = [{ from: 'src', to: 'src' }]; - } else if (!paths || !baseUrl) { - cachedPathEntries = []; - } else { + } else if (paths) { cachedPathEntries = Object.entries(paths).map(([key, value]) => { if (value.length !== 1) { throw new Error( @@ -228,11 +225,13 @@ export const typescriptGenerator = createGenerator({ } return { from: path - .join(baseUrl, value[0].replace(/\/\*$/, '')) + .join(baseUrl ?? '.', value[0].replace(/\/\*$/, '')) .replace(/^\./, ''), to: key.slice(0, Math.max(0, key.length - 2)), }; }); + } else { + cachedPathEntries = []; } } @@ -416,3 +415,5 @@ export const typescriptGenerator = createGenerator({ }), }), }); + +export { type TypescriptCompilerOptions } from './compiler-types.js'; diff --git a/packages/core-generators/src/generators/node/typescript/typescript.generator.unit.test.ts b/packages/core-generators/src/generators/node/typescript/typescript.generator.unit.test.ts index 9cf70b4c2..65c528982 100644 --- a/packages/core-generators/src/generators/node/typescript/typescript.generator.unit.test.ts +++ b/packages/core-generators/src/generators/node/typescript/typescript.generator.unit.test.ts @@ -14,7 +14,6 @@ describe('typescriptGenerator', () => { const typescriptBundle = typescriptGenerator({}); const typescriptConfig = { compilerOptions: { - baseUrl: './src', paths: { '@src/*': ['src/*'], }, diff --git a/packages/core-generators/src/renderers/typescript/imports/ts-path-maps.ts b/packages/core-generators/src/renderers/typescript/imports/ts-path-maps.ts index 81e2ef108..3bba18eab 100644 --- a/packages/core-generators/src/renderers/typescript/imports/ts-path-maps.ts +++ b/packages/core-generators/src/renderers/typescript/imports/ts-path-maps.ts @@ -10,7 +10,7 @@ import type { TsPathMapEntry } from './types.js'; * @returns A list of TsPathMapEntry */ export function generatePathMapEntries( - baseUrl: string, + baseUrl: string | undefined, paths: Record, ): TsPathMapEntry[] { return Object.entries(paths).flatMap(([alias, targets]) => { @@ -20,7 +20,7 @@ export function generatePathMapEntries( return [ { from: alias, - to: `./${path.posix.join(baseUrl, targets[0]).replaceAll('\\', '/')}`, + to: `./${path.posix.join(baseUrl ?? '.', targets[0]).replaceAll('\\', '/')}`, }, ]; }); diff --git a/packages/core-generators/src/renderers/typescript/imports/ts-path-maps.unit.test.ts b/packages/core-generators/src/renderers/typescript/imports/ts-path-maps.unit.test.ts index 27dcbf027..a7c71531c 100644 --- a/packages/core-generators/src/renderers/typescript/imports/ts-path-maps.unit.test.ts +++ b/packages/core-generators/src/renderers/typescript/imports/ts-path-maps.unit.test.ts @@ -25,6 +25,20 @@ describe('generatePathMapEntries', () => { { from: 'no-star', to: './src/something' }, ]); }); + + it('should return a valid TsPathMapEntry list when baseUrl is undefined', () => { + // Arrange + const baseUrl = undefined; + const paths = { + '@src/*': ['./src/*'], + }; + + // Act + const result = generatePathMapEntries(baseUrl, paths); + + // Assert + expect(result).toEqual([{ from: '@src/*', to: './src/*' }]); + }); }); describe('pathMapEntriesToRegexes', () => { diff --git a/packages/core-generators/tsconfig.json b/packages/core-generators/tsconfig.json index 6ffa6343c..39780935c 100644 --- a/packages/core-generators/tsconfig.json +++ b/packages/core-generators/tsconfig.json @@ -2,10 +2,9 @@ "extends": "@halfdomelabs/tools/tsconfig.node.lib.json", "compilerOptions": { "outDir": "dist", - "baseUrl": ".", "noEmit": true, "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src/**/*"], diff --git a/packages/create-project/tsconfig.json b/packages/create-project/tsconfig.json index f3f039bc1..59bcec935 100644 --- a/packages/create-project/tsconfig.json +++ b/packages/create-project/tsconfig.json @@ -2,9 +2,8 @@ "extends": "@halfdomelabs/tools/tsconfig.node.cli.json", "compilerOptions": { "outDir": "dist", - "baseUrl": ".", "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src/**/*"] diff --git a/packages/fastify-generators/src/generators/core/fastify/setup-fastify-typescript.ts b/packages/fastify-generators/src/generators/core/fastify/setup-fastify-typescript.ts index b5ad83091..e51ab6967 100644 --- a/packages/fastify-generators/src/generators/core/fastify/setup-fastify-typescript.ts +++ b/packages/fastify-generators/src/generators/core/fastify/setup-fastify-typescript.ts @@ -9,7 +9,6 @@ export const fastifyTypescriptTask = createGeneratorTask({ typescriptSetup.compilerOptions.set({ outDir: 'dist', declaration: true, - baseUrl: './', paths: { '@src/*': ['./src/*'], }, diff --git a/packages/fastify-generators/tsconfig.json b/packages/fastify-generators/tsconfig.json index 89279296b..e357abfea 100644 --- a/packages/fastify-generators/tsconfig.json +++ b/packages/fastify-generators/tsconfig.json @@ -2,9 +2,8 @@ "extends": "@halfdomelabs/tools/tsconfig.node.lib.json", "compilerOptions": { "outDir": "dist", - "baseUrl": ".", "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src/**/*"], diff --git a/packages/project-builder-cli/tsconfig.app.json b/packages/project-builder-cli/tsconfig.app.json index 1762c0029..453287335 100644 --- a/packages/project-builder-cli/tsconfig.app.json +++ b/packages/project-builder-cli/tsconfig.app.json @@ -2,9 +2,8 @@ "extends": "@halfdomelabs/tools/tsconfig.node.cli.json", "compilerOptions": { "noEmit": true, - "baseUrl": ".", "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src/**/*"] diff --git a/packages/project-builder-cli/tsconfig.e2e.json b/packages/project-builder-cli/tsconfig.e2e.json index 090546700..dfd3bee3e 100644 --- a/packages/project-builder-cli/tsconfig.e2e.json +++ b/packages/project-builder-cli/tsconfig.e2e.json @@ -2,9 +2,8 @@ "extends": "@halfdomelabs/tools/tsconfig.node.cli.json", "compilerOptions": { "noEmit": true, - "baseUrl": ".", "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["tests/**/*", "playwright.config.ts"] diff --git a/packages/project-builder-lib/tsconfig.json b/packages/project-builder-lib/tsconfig.json index bcfb2a625..401b7bca8 100644 --- a/packages/project-builder-lib/tsconfig.json +++ b/packages/project-builder-lib/tsconfig.json @@ -2,10 +2,9 @@ "extends": "@halfdomelabs/tools/tsconfig.vite.lib.json", "compilerOptions": { "outDir": "dist", - "baseUrl": ".", "noEmit": true, "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] }, "module": "Node16", "moduleResolution": "node16" diff --git a/packages/project-builder-server/src/plugins/node-plugin-store.ts b/packages/project-builder-server/src/plugins/node-plugin-store.ts index f67469ac0..fc4ad2b26 100644 --- a/packages/project-builder-server/src/plugins/node-plugin-store.ts +++ b/packages/project-builder-server/src/plugins/node-plugin-store.ts @@ -1,10 +1,10 @@ import type { PluginMetadataWithPaths, + PluginPlatformModule, PluginStore, SchemaParserContext, } from '@halfdomelabs/project-builder-lib'; import type { Logger } from '@halfdomelabs/sync'; -import type { PluginPlatformModule } from 'node_modules/@halfdomelabs/project-builder-lib/dist/plugins/imports/types.js'; import { adminCrudInputCompilerSpec, diff --git a/packages/project-builder-server/tsconfig.json b/packages/project-builder-server/tsconfig.json index fac458ac9..8f91c5a69 100644 --- a/packages/project-builder-server/tsconfig.json +++ b/packages/project-builder-server/tsconfig.json @@ -2,10 +2,9 @@ "extends": "@halfdomelabs/tools/tsconfig.node.lib.json", "compilerOptions": { "outDir": "dist", - "baseUrl": ".", "noEmit": true, "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src/**/*"] diff --git a/packages/project-builder-test/tsconfig.json b/packages/project-builder-test/tsconfig.json index fac458ac9..8f91c5a69 100644 --- a/packages/project-builder-test/tsconfig.json +++ b/packages/project-builder-test/tsconfig.json @@ -2,10 +2,9 @@ "extends": "@halfdomelabs/tools/tsconfig.node.lib.json", "compilerOptions": { "outDir": "dist", - "baseUrl": ".", "noEmit": true, "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src/**/*"] diff --git a/packages/project-builder-web/tsconfig.json b/packages/project-builder-web/tsconfig.json index 45a52ec6b..56221bc4f 100644 --- a/packages/project-builder-web/tsconfig.json +++ b/packages/project-builder-web/tsconfig.json @@ -2,9 +2,8 @@ "extends": "@halfdomelabs/tools/tsconfig.vite.web.json", "compilerOptions": { "outDir": "dist", - "baseUrl": "./", "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src"] diff --git a/packages/react-generators/src/generators/core/react-typescript/react-typescript.generator.ts b/packages/react-generators/src/generators/core/react-typescript/react-typescript.generator.ts index 77ba45f3b..6b24ba19b 100644 --- a/packages/react-generators/src/generators/core/react-typescript/react-typescript.generator.ts +++ b/packages/react-generators/src/generators/core/react-typescript/react-typescript.generator.ts @@ -44,7 +44,6 @@ export const reactTypescriptGenerator = createGenerator({ noEmit: true, /* Paths */ - baseUrl: './', paths: { '@src/*': ['./src/*'], }, diff --git a/packages/react-generators/tsconfig.json b/packages/react-generators/tsconfig.json index 89279296b..e357abfea 100644 --- a/packages/react-generators/tsconfig.json +++ b/packages/react-generators/tsconfig.json @@ -2,9 +2,8 @@ "extends": "@halfdomelabs/tools/tsconfig.node.lib.json", "compilerOptions": { "outDir": "dist", - "baseUrl": ".", "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src/**/*"], diff --git a/packages/sync/tsconfig.json b/packages/sync/tsconfig.json index 8cf01b96e..74350ec70 100644 --- a/packages/sync/tsconfig.json +++ b/packages/sync/tsconfig.json @@ -2,10 +2,9 @@ "extends": "@halfdomelabs/tools/tsconfig.node.lib.json", "compilerOptions": { "outDir": "dist", - "baseUrl": ".", "noEmit": true, "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src/**/*"], diff --git a/packages/tools/eslint-configs/typescript.js b/packages/tools/eslint-configs/typescript.js index 1cca58cbc..a143de82d 100644 --- a/packages/tools/eslint-configs/typescript.js +++ b/packages/tools/eslint-configs/typescript.js @@ -144,6 +144,9 @@ export function generateTypescriptEslintConfig(options = []) { // Disallow importing dependencies that aren't explicitly listed in the package.json, // except for those explicitly allowed under `devDependencies` (e.g., test files) 'import-x/no-extraneous-dependencies': ['error', { devDependencies }], + + // Disallow import relative packages (e.g., `import '../other-package/foo'`) + 'import-x/no-relative-packages': 'error', }, settings: { 'import-x/resolver-next': [createTypeScriptImportResolver()], diff --git a/packages/ui-components/tsconfig.json b/packages/ui-components/tsconfig.json index af798a641..e0b5ee720 100644 --- a/packages/ui-components/tsconfig.json +++ b/packages/ui-components/tsconfig.json @@ -2,9 +2,8 @@ "extends": "@halfdomelabs/tools/tsconfig.vite.lib.json", "compilerOptions": { "noEmit": true, - "baseUrl": "./", "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src", ".storybook/**/*"] diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index fac458ac9..8f91c5a69 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -2,10 +2,9 @@ "extends": "@halfdomelabs/tools/tsconfig.node.lib.json", "compilerOptions": { "outDir": "dist", - "baseUrl": ".", "noEmit": true, "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src/**/*"] diff --git a/plugins/baseplate-plugin-storage/tsconfig.json b/plugins/baseplate-plugin-storage/tsconfig.json index b2d3f6f1a..a35a436b0 100644 --- a/plugins/baseplate-plugin-storage/tsconfig.json +++ b/plugins/baseplate-plugin-storage/tsconfig.json @@ -2,10 +2,9 @@ "extends": "@halfdomelabs/tools/tsconfig.vite.lib.json", "compilerOptions": { "outDir": "dist", - "baseUrl": ".", "noEmit": true, "paths": { - "@src/*": ["src/*"] + "@src/*": ["./src/*"] } }, "include": ["src/**/*"],