diff --git a/waspc/e2e-test/test-outputs/waspBuild-golden/waspBuild/.wasp/build/.waspchecksums b/waspc/e2e-test/test-outputs/waspBuild-golden/waspBuild/.wasp/build/.waspchecksums index b6d425064d..b2d3aa02b1 100644 --- a/waspc/e2e-test/test-outputs/waspBuild-golden/waspBuild/.wasp/build/.waspchecksums +++ b/waspc/e2e-test/test-outputs/waspBuild-golden/waspBuild/.wasp/build/.waspchecksums @@ -683,7 +683,7 @@ "file", "web-app/tsconfig.node.json" ], - "d55b571b07441ce425f1b7596d2ac25557643bc7c47eff0957238b3b0fe74033" + "bb2bf9acd6049cb78205f30d81de3ca3f105c8b881d1ab36cb68da033c59a7e8" ], [ [ @@ -697,6 +697,6 @@ "file", "web-app/vite/detectServerImports.ts" ], - "8dc4cacd4cee4d2e01338ec5b015f472afcefcdeb6cfee2dfd5e963d4ab93a38" + "d3724c4ec970e8f5c39d5da60220bf52317134f55530c508ee469bef0d2cd811" ] ] \ No newline at end of file diff --git a/waspc/e2e-test/test-outputs/waspBuild-golden/waspBuild/.wasp/build/web-app/tsconfig.node.json b/waspc/e2e-test/test-outputs/waspBuild-golden/waspBuild/.wasp/build/web-app/tsconfig.node.json index 24773c36d0..2f880630e1 100644 --- a/waspc/e2e-test/test-outputs/waspBuild-golden/waspBuild/.wasp/build/web-app/tsconfig.node.json +++ b/waspc/e2e-test/test-outputs/waspBuild-golden/waspBuild/.wasp/build/web-app/tsconfig.node.json @@ -10,6 +10,6 @@ "include": [ "vite.config.ts", "./src/ext-src/vite.config.ts", - "./vite/detectServerImports.ts" + "vite/detectServerImports.ts", ] } diff --git a/waspc/e2e-test/test-outputs/waspBuild-golden/waspBuild/.wasp/build/web-app/vite/detectServerImports.ts b/waspc/e2e-test/test-outputs/waspBuild-golden/waspBuild/.wasp/build/web-app/vite/detectServerImports.ts index f332407c66..287cdea51c 100644 --- a/waspc/e2e-test/test-outputs/waspBuild-golden/waspBuild/.wasp/build/web-app/vite/detectServerImports.ts +++ b/waspc/e2e-test/test-outputs/waspBuild-golden/waspBuild/.wasp/build/web-app/vite/detectServerImports.ts @@ -1,6 +1,8 @@ import { type Plugin } from 'vite' import path from 'path' +const waspProjectDirAbsPath = getWaspProjectDirAbsPathFromCwd() + export function detectServerImports(): Plugin { return { name: 'wasp-detect-server-imports', @@ -10,11 +12,9 @@ export function detectServerImports(): Plugin { return } - const importerRelativePath = getRelativeFilePath(importer) + const importerRelativePath = getPathRelativeToWaspProjectDir(importer) - // Check only for imports from src/ directory which - // contains the user's code. - if (!importerRelativePath.startsWith('src/')) { + if (!isPathToUserCode(importerRelativePath)) { return } @@ -29,26 +29,32 @@ const serverImportChecks: ImportCheckPredicate[] = [ (moduleName: string) => moduleName.startsWith('wasp/server'), ] -function ensureNoServerImports(source: string, relativeImporter: string): void { +function ensureNoServerImports(source: string, relativeImporter: RelativePath): void { for (const check of serverImportChecks) { if (check(source)) { throw new Error( - `Server code cannot be imported in the client code. Import from '${source}' in '${relativeImporter}' is not allowed.` + `Server code cannot be imported in the client code. Import from "${source}" in "${relativeImporter.relativePath}" is not allowed.` ) } } } -const waspProjectDirAbsPath = getWaspProjectDirAbsPathFromCwd() +type RelativePath = { + relativePath: string +} + +function getPathRelativeToWaspProjectDir(filePath: string): RelativePath { + return { relativePath: path.relative(waspProjectDirAbsPath, filePath) } +} -function getRelativeFilePath(filePath: string): string { - return path.relative(waspProjectDirAbsPath, filePath) +function isPathToUserCode(filePath: RelativePath): boolean { + return filePath.relativePath.startsWith('src/') } -// We are not passing the waspProjectDir path from Haskell because -// our e2e tests stop working. Becuase we need to absolute path of the -// Wasp project directory, it contains things like the username of the -// user running the tests, which is different on different machines. +// We can't pass the "waspProjectDir" path from Haskell because we need the absolute path: +// e.g. /Users/{username}/dev/wasp/waspc/examples/todoApp +// which contains machine specific info like the username which is different in the CI and locally. +// This breaks our e2e tests in the CI because the path is different. function getWaspProjectDirAbsPathFromCwd(): string { const webAppDirAbsPath = process.cwd() const waspProjectDirAbsPath = path.join(webAppDirAbsPath, '../../../') diff --git a/waspc/e2e-test/test-outputs/waspCompile-golden/waspCompile/.wasp/out/.waspchecksums b/waspc/e2e-test/test-outputs/waspCompile-golden/waspCompile/.wasp/out/.waspchecksums index e64a9feb10..62b8bf3132 100644 --- a/waspc/e2e-test/test-outputs/waspCompile-golden/waspCompile/.wasp/out/.waspchecksums +++ b/waspc/e2e-test/test-outputs/waspCompile-golden/waspCompile/.wasp/out/.waspchecksums @@ -697,7 +697,7 @@ "file", "web-app/tsconfig.node.json" ], - "d55b571b07441ce425f1b7596d2ac25557643bc7c47eff0957238b3b0fe74033" + "bb2bf9acd6049cb78205f30d81de3ca3f105c8b881d1ab36cb68da033c59a7e8" ], [ [ @@ -711,6 +711,6 @@ "file", "web-app/vite/detectServerImports.ts" ], - "8dc4cacd4cee4d2e01338ec5b015f472afcefcdeb6cfee2dfd5e963d4ab93a38" + "d3724c4ec970e8f5c39d5da60220bf52317134f55530c508ee469bef0d2cd811" ] ] \ No newline at end of file diff --git a/waspc/e2e-test/test-outputs/waspCompile-golden/waspCompile/.wasp/out/web-app/tsconfig.node.json b/waspc/e2e-test/test-outputs/waspCompile-golden/waspCompile/.wasp/out/web-app/tsconfig.node.json index 24773c36d0..2f880630e1 100644 --- a/waspc/e2e-test/test-outputs/waspCompile-golden/waspCompile/.wasp/out/web-app/tsconfig.node.json +++ b/waspc/e2e-test/test-outputs/waspCompile-golden/waspCompile/.wasp/out/web-app/tsconfig.node.json @@ -10,6 +10,6 @@ "include": [ "vite.config.ts", "./src/ext-src/vite.config.ts", - "./vite/detectServerImports.ts" + "vite/detectServerImports.ts", ] } diff --git a/waspc/e2e-test/test-outputs/waspCompile-golden/waspCompile/.wasp/out/web-app/vite/detectServerImports.ts b/waspc/e2e-test/test-outputs/waspCompile-golden/waspCompile/.wasp/out/web-app/vite/detectServerImports.ts index f332407c66..287cdea51c 100644 --- a/waspc/e2e-test/test-outputs/waspCompile-golden/waspCompile/.wasp/out/web-app/vite/detectServerImports.ts +++ b/waspc/e2e-test/test-outputs/waspCompile-golden/waspCompile/.wasp/out/web-app/vite/detectServerImports.ts @@ -1,6 +1,8 @@ import { type Plugin } from 'vite' import path from 'path' +const waspProjectDirAbsPath = getWaspProjectDirAbsPathFromCwd() + export function detectServerImports(): Plugin { return { name: 'wasp-detect-server-imports', @@ -10,11 +12,9 @@ export function detectServerImports(): Plugin { return } - const importerRelativePath = getRelativeFilePath(importer) + const importerRelativePath = getPathRelativeToWaspProjectDir(importer) - // Check only for imports from src/ directory which - // contains the user's code. - if (!importerRelativePath.startsWith('src/')) { + if (!isPathToUserCode(importerRelativePath)) { return } @@ -29,26 +29,32 @@ const serverImportChecks: ImportCheckPredicate[] = [ (moduleName: string) => moduleName.startsWith('wasp/server'), ] -function ensureNoServerImports(source: string, relativeImporter: string): void { +function ensureNoServerImports(source: string, relativeImporter: RelativePath): void { for (const check of serverImportChecks) { if (check(source)) { throw new Error( - `Server code cannot be imported in the client code. Import from '${source}' in '${relativeImporter}' is not allowed.` + `Server code cannot be imported in the client code. Import from "${source}" in "${relativeImporter.relativePath}" is not allowed.` ) } } } -const waspProjectDirAbsPath = getWaspProjectDirAbsPathFromCwd() +type RelativePath = { + relativePath: string +} + +function getPathRelativeToWaspProjectDir(filePath: string): RelativePath { + return { relativePath: path.relative(waspProjectDirAbsPath, filePath) } +} -function getRelativeFilePath(filePath: string): string { - return path.relative(waspProjectDirAbsPath, filePath) +function isPathToUserCode(filePath: RelativePath): boolean { + return filePath.relativePath.startsWith('src/') } -// We are not passing the waspProjectDir path from Haskell because -// our e2e tests stop working. Becuase we need to absolute path of the -// Wasp project directory, it contains things like the username of the -// user running the tests, which is different on different machines. +// We can't pass the "waspProjectDir" path from Haskell because we need the absolute path: +// e.g. /Users/{username}/dev/wasp/waspc/examples/todoApp +// which contains machine specific info like the username which is different in the CI and locally. +// This breaks our e2e tests in the CI because the path is different. function getWaspProjectDirAbsPathFromCwd(): string { const webAppDirAbsPath = process.cwd() const waspProjectDirAbsPath = path.join(webAppDirAbsPath, '../../../') diff --git a/waspc/e2e-test/test-outputs/waspComplexTest-golden/waspComplexTest/.wasp/out/.waspchecksums b/waspc/e2e-test/test-outputs/waspComplexTest-golden/waspComplexTest/.wasp/out/.waspchecksums index 0ca8777dbd..88acb94042 100644 --- a/waspc/e2e-test/test-outputs/waspComplexTest-golden/waspComplexTest/.wasp/out/.waspchecksums +++ b/waspc/e2e-test/test-outputs/waspComplexTest-golden/waspComplexTest/.wasp/out/.waspchecksums @@ -1334,7 +1334,7 @@ "file", "web-app/tsconfig.node.json" ], - "d55b571b07441ce425f1b7596d2ac25557643bc7c47eff0957238b3b0fe74033" + "bb2bf9acd6049cb78205f30d81de3ca3f105c8b881d1ab36cb68da033c59a7e8" ], [ [ @@ -1348,6 +1348,6 @@ "file", "web-app/vite/detectServerImports.ts" ], - "8dc4cacd4cee4d2e01338ec5b015f472afcefcdeb6cfee2dfd5e963d4ab93a38" + "d3724c4ec970e8f5c39d5da60220bf52317134f55530c508ee469bef0d2cd811" ] ] \ No newline at end of file diff --git a/waspc/e2e-test/test-outputs/waspComplexTest-golden/waspComplexTest/.wasp/out/web-app/tsconfig.node.json b/waspc/e2e-test/test-outputs/waspComplexTest-golden/waspComplexTest/.wasp/out/web-app/tsconfig.node.json index 24773c36d0..2f880630e1 100644 --- a/waspc/e2e-test/test-outputs/waspComplexTest-golden/waspComplexTest/.wasp/out/web-app/tsconfig.node.json +++ b/waspc/e2e-test/test-outputs/waspComplexTest-golden/waspComplexTest/.wasp/out/web-app/tsconfig.node.json @@ -10,6 +10,6 @@ "include": [ "vite.config.ts", "./src/ext-src/vite.config.ts", - "./vite/detectServerImports.ts" + "vite/detectServerImports.ts", ] } diff --git a/waspc/e2e-test/test-outputs/waspComplexTest-golden/waspComplexTest/.wasp/out/web-app/vite/detectServerImports.ts b/waspc/e2e-test/test-outputs/waspComplexTest-golden/waspComplexTest/.wasp/out/web-app/vite/detectServerImports.ts index f332407c66..287cdea51c 100644 --- a/waspc/e2e-test/test-outputs/waspComplexTest-golden/waspComplexTest/.wasp/out/web-app/vite/detectServerImports.ts +++ b/waspc/e2e-test/test-outputs/waspComplexTest-golden/waspComplexTest/.wasp/out/web-app/vite/detectServerImports.ts @@ -1,6 +1,8 @@ import { type Plugin } from 'vite' import path from 'path' +const waspProjectDirAbsPath = getWaspProjectDirAbsPathFromCwd() + export function detectServerImports(): Plugin { return { name: 'wasp-detect-server-imports', @@ -10,11 +12,9 @@ export function detectServerImports(): Plugin { return } - const importerRelativePath = getRelativeFilePath(importer) + const importerRelativePath = getPathRelativeToWaspProjectDir(importer) - // Check only for imports from src/ directory which - // contains the user's code. - if (!importerRelativePath.startsWith('src/')) { + if (!isPathToUserCode(importerRelativePath)) { return } @@ -29,26 +29,32 @@ const serverImportChecks: ImportCheckPredicate[] = [ (moduleName: string) => moduleName.startsWith('wasp/server'), ] -function ensureNoServerImports(source: string, relativeImporter: string): void { +function ensureNoServerImports(source: string, relativeImporter: RelativePath): void { for (const check of serverImportChecks) { if (check(source)) { throw new Error( - `Server code cannot be imported in the client code. Import from '${source}' in '${relativeImporter}' is not allowed.` + `Server code cannot be imported in the client code. Import from "${source}" in "${relativeImporter.relativePath}" is not allowed.` ) } } } -const waspProjectDirAbsPath = getWaspProjectDirAbsPathFromCwd() +type RelativePath = { + relativePath: string +} + +function getPathRelativeToWaspProjectDir(filePath: string): RelativePath { + return { relativePath: path.relative(waspProjectDirAbsPath, filePath) } +} -function getRelativeFilePath(filePath: string): string { - return path.relative(waspProjectDirAbsPath, filePath) +function isPathToUserCode(filePath: RelativePath): boolean { + return filePath.relativePath.startsWith('src/') } -// We are not passing the waspProjectDir path from Haskell because -// our e2e tests stop working. Becuase we need to absolute path of the -// Wasp project directory, it contains things like the username of the -// user running the tests, which is different on different machines. +// We can't pass the "waspProjectDir" path from Haskell because we need the absolute path: +// e.g. /Users/{username}/dev/wasp/waspc/examples/todoApp +// which contains machine specific info like the username which is different in the CI and locally. +// This breaks our e2e tests in the CI because the path is different. function getWaspProjectDirAbsPathFromCwd(): string { const webAppDirAbsPath = process.cwd() const waspProjectDirAbsPath = path.join(webAppDirAbsPath, '../../../') diff --git a/waspc/e2e-test/test-outputs/waspJob-golden/waspJob/.wasp/out/.waspchecksums b/waspc/e2e-test/test-outputs/waspJob-golden/waspJob/.wasp/out/.waspchecksums index 5b7abfae00..e3028b1cd1 100644 --- a/waspc/e2e-test/test-outputs/waspJob-golden/waspJob/.wasp/out/.waspchecksums +++ b/waspc/e2e-test/test-outputs/waspJob-golden/waspJob/.wasp/out/.waspchecksums @@ -795,7 +795,7 @@ "file", "web-app/tsconfig.node.json" ], - "d55b571b07441ce425f1b7596d2ac25557643bc7c47eff0957238b3b0fe74033" + "bb2bf9acd6049cb78205f30d81de3ca3f105c8b881d1ab36cb68da033c59a7e8" ], [ [ @@ -809,6 +809,6 @@ "file", "web-app/vite/detectServerImports.ts" ], - "8dc4cacd4cee4d2e01338ec5b015f472afcefcdeb6cfee2dfd5e963d4ab93a38" + "d3724c4ec970e8f5c39d5da60220bf52317134f55530c508ee469bef0d2cd811" ] ] \ No newline at end of file diff --git a/waspc/e2e-test/test-outputs/waspJob-golden/waspJob/.wasp/out/web-app/tsconfig.node.json b/waspc/e2e-test/test-outputs/waspJob-golden/waspJob/.wasp/out/web-app/tsconfig.node.json index 24773c36d0..2f880630e1 100644 --- a/waspc/e2e-test/test-outputs/waspJob-golden/waspJob/.wasp/out/web-app/tsconfig.node.json +++ b/waspc/e2e-test/test-outputs/waspJob-golden/waspJob/.wasp/out/web-app/tsconfig.node.json @@ -10,6 +10,6 @@ "include": [ "vite.config.ts", "./src/ext-src/vite.config.ts", - "./vite/detectServerImports.ts" + "vite/detectServerImports.ts", ] } diff --git a/waspc/e2e-test/test-outputs/waspJob-golden/waspJob/.wasp/out/web-app/vite/detectServerImports.ts b/waspc/e2e-test/test-outputs/waspJob-golden/waspJob/.wasp/out/web-app/vite/detectServerImports.ts index f332407c66..287cdea51c 100644 --- a/waspc/e2e-test/test-outputs/waspJob-golden/waspJob/.wasp/out/web-app/vite/detectServerImports.ts +++ b/waspc/e2e-test/test-outputs/waspJob-golden/waspJob/.wasp/out/web-app/vite/detectServerImports.ts @@ -1,6 +1,8 @@ import { type Plugin } from 'vite' import path from 'path' +const waspProjectDirAbsPath = getWaspProjectDirAbsPathFromCwd() + export function detectServerImports(): Plugin { return { name: 'wasp-detect-server-imports', @@ -10,11 +12,9 @@ export function detectServerImports(): Plugin { return } - const importerRelativePath = getRelativeFilePath(importer) + const importerRelativePath = getPathRelativeToWaspProjectDir(importer) - // Check only for imports from src/ directory which - // contains the user's code. - if (!importerRelativePath.startsWith('src/')) { + if (!isPathToUserCode(importerRelativePath)) { return } @@ -29,26 +29,32 @@ const serverImportChecks: ImportCheckPredicate[] = [ (moduleName: string) => moduleName.startsWith('wasp/server'), ] -function ensureNoServerImports(source: string, relativeImporter: string): void { +function ensureNoServerImports(source: string, relativeImporter: RelativePath): void { for (const check of serverImportChecks) { if (check(source)) { throw new Error( - `Server code cannot be imported in the client code. Import from '${source}' in '${relativeImporter}' is not allowed.` + `Server code cannot be imported in the client code. Import from "${source}" in "${relativeImporter.relativePath}" is not allowed.` ) } } } -const waspProjectDirAbsPath = getWaspProjectDirAbsPathFromCwd() +type RelativePath = { + relativePath: string +} + +function getPathRelativeToWaspProjectDir(filePath: string): RelativePath { + return { relativePath: path.relative(waspProjectDirAbsPath, filePath) } +} -function getRelativeFilePath(filePath: string): string { - return path.relative(waspProjectDirAbsPath, filePath) +function isPathToUserCode(filePath: RelativePath): boolean { + return filePath.relativePath.startsWith('src/') } -// We are not passing the waspProjectDir path from Haskell because -// our e2e tests stop working. Becuase we need to absolute path of the -// Wasp project directory, it contains things like the username of the -// user running the tests, which is different on different machines. +// We can't pass the "waspProjectDir" path from Haskell because we need the absolute path: +// e.g. /Users/{username}/dev/wasp/waspc/examples/todoApp +// which contains machine specific info like the username which is different in the CI and locally. +// This breaks our e2e tests in the CI because the path is different. function getWaspProjectDirAbsPathFromCwd(): string { const webAppDirAbsPath = process.cwd() const waspProjectDirAbsPath = path.join(webAppDirAbsPath, '../../../') diff --git a/waspc/e2e-test/test-outputs/waspMigrate-golden/waspMigrate/.wasp/out/.waspchecksums b/waspc/e2e-test/test-outputs/waspMigrate-golden/waspMigrate/.wasp/out/.waspchecksums index a06e58a185..63ee0abb64 100644 --- a/waspc/e2e-test/test-outputs/waspMigrate-golden/waspMigrate/.wasp/out/.waspchecksums +++ b/waspc/e2e-test/test-outputs/waspMigrate-golden/waspMigrate/.wasp/out/.waspchecksums @@ -697,7 +697,7 @@ "file", "web-app/tsconfig.node.json" ], - "d55b571b07441ce425f1b7596d2ac25557643bc7c47eff0957238b3b0fe74033" + "bb2bf9acd6049cb78205f30d81de3ca3f105c8b881d1ab36cb68da033c59a7e8" ], [ [ @@ -711,6 +711,6 @@ "file", "web-app/vite/detectServerImports.ts" ], - "8dc4cacd4cee4d2e01338ec5b015f472afcefcdeb6cfee2dfd5e963d4ab93a38" + "d3724c4ec970e8f5c39d5da60220bf52317134f55530c508ee469bef0d2cd811" ] ] \ No newline at end of file diff --git a/waspc/e2e-test/test-outputs/waspMigrate-golden/waspMigrate/.wasp/out/web-app/tsconfig.node.json b/waspc/e2e-test/test-outputs/waspMigrate-golden/waspMigrate/.wasp/out/web-app/tsconfig.node.json index 24773c36d0..2f880630e1 100644 --- a/waspc/e2e-test/test-outputs/waspMigrate-golden/waspMigrate/.wasp/out/web-app/tsconfig.node.json +++ b/waspc/e2e-test/test-outputs/waspMigrate-golden/waspMigrate/.wasp/out/web-app/tsconfig.node.json @@ -10,6 +10,6 @@ "include": [ "vite.config.ts", "./src/ext-src/vite.config.ts", - "./vite/detectServerImports.ts" + "vite/detectServerImports.ts", ] } diff --git a/waspc/e2e-test/test-outputs/waspMigrate-golden/waspMigrate/.wasp/out/web-app/vite/detectServerImports.ts b/waspc/e2e-test/test-outputs/waspMigrate-golden/waspMigrate/.wasp/out/web-app/vite/detectServerImports.ts index f332407c66..287cdea51c 100644 --- a/waspc/e2e-test/test-outputs/waspMigrate-golden/waspMigrate/.wasp/out/web-app/vite/detectServerImports.ts +++ b/waspc/e2e-test/test-outputs/waspMigrate-golden/waspMigrate/.wasp/out/web-app/vite/detectServerImports.ts @@ -1,6 +1,8 @@ import { type Plugin } from 'vite' import path from 'path' +const waspProjectDirAbsPath = getWaspProjectDirAbsPathFromCwd() + export function detectServerImports(): Plugin { return { name: 'wasp-detect-server-imports', @@ -10,11 +12,9 @@ export function detectServerImports(): Plugin { return } - const importerRelativePath = getRelativeFilePath(importer) + const importerRelativePath = getPathRelativeToWaspProjectDir(importer) - // Check only for imports from src/ directory which - // contains the user's code. - if (!importerRelativePath.startsWith('src/')) { + if (!isPathToUserCode(importerRelativePath)) { return } @@ -29,26 +29,32 @@ const serverImportChecks: ImportCheckPredicate[] = [ (moduleName: string) => moduleName.startsWith('wasp/server'), ] -function ensureNoServerImports(source: string, relativeImporter: string): void { +function ensureNoServerImports(source: string, relativeImporter: RelativePath): void { for (const check of serverImportChecks) { if (check(source)) { throw new Error( - `Server code cannot be imported in the client code. Import from '${source}' in '${relativeImporter}' is not allowed.` + `Server code cannot be imported in the client code. Import from "${source}" in "${relativeImporter.relativePath}" is not allowed.` ) } } } -const waspProjectDirAbsPath = getWaspProjectDirAbsPathFromCwd() +type RelativePath = { + relativePath: string +} + +function getPathRelativeToWaspProjectDir(filePath: string): RelativePath { + return { relativePath: path.relative(waspProjectDirAbsPath, filePath) } +} -function getRelativeFilePath(filePath: string): string { - return path.relative(waspProjectDirAbsPath, filePath) +function isPathToUserCode(filePath: RelativePath): boolean { + return filePath.relativePath.startsWith('src/') } -// We are not passing the waspProjectDir path from Haskell because -// our e2e tests stop working. Becuase we need to absolute path of the -// Wasp project directory, it contains things like the username of the -// user running the tests, which is different on different machines. +// We can't pass the "waspProjectDir" path from Haskell because we need the absolute path: +// e.g. /Users/{username}/dev/wasp/waspc/examples/todoApp +// which contains machine specific info like the username which is different in the CI and locally. +// This breaks our e2e tests in the CI because the path is different. function getWaspProjectDirAbsPathFromCwd(): string { const webAppDirAbsPath = process.cwd() const waspProjectDirAbsPath = path.join(webAppDirAbsPath, '../../../')