diff --git a/.erb/configs/webpack.config.base.ts b/.erb/configs/webpack.config.base.ts index feb5a820a6..ae96ac0eb3 100644 --- a/.erb/configs/webpack.config.base.ts +++ b/.erb/configs/webpack.config.base.ts @@ -3,7 +3,7 @@ */ import webpack from 'webpack'; -import webpackPaths from './webpack.paths'; +import webpackPaths from './webpack.paths.ts'; // Keep JS deps bundled, but leave native modules as externals. // better-sqlite3 relies on runtime native loading (bindings), which breaks when bundled. diff --git a/.erb/configs/webpack.config.main.prod.ts b/.erb/configs/webpack.config.main.prod.ts index c6d1a82d92..92b5eaa427 100644 --- a/.erb/configs/webpack.config.main.prod.ts +++ b/.erb/configs/webpack.config.main.prod.ts @@ -6,12 +6,13 @@ import path from 'path'; import webpack from 'webpack'; import { merge } from 'webpack-merge'; import TerserPlugin from 'terser-webpack-plugin'; +// @ts-ignore no bundled types for this package in current config project import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; import Dotenv from 'dotenv-webpack'; -import baseConfig from './webpack.config.base'; -import webpackPaths from './webpack.paths'; -import checkNodeEnv from '../scripts/check-node-env'; -import deleteSourceMaps from '../scripts/delete-source-maps'; +import baseConfig from './webpack.config.base.ts'; +import webpackPaths from './webpack.paths.ts'; +import checkNodeEnv from '../scripts/check-node-env.js'; +import deleteSourceMaps from '../scripts/delete-source-maps.js'; checkNodeEnv('production'); deleteSourceMaps(); diff --git a/.erb/configs/webpack.config.renderer.dev.dll.ts b/.erb/configs/webpack.config.renderer.dev.dll.ts index e1cfef8a2b..9b6a079d23 100644 --- a/.erb/configs/webpack.config.renderer.dev.dll.ts +++ b/.erb/configs/webpack.config.renderer.dev.dll.ts @@ -5,10 +5,10 @@ import webpack from 'webpack'; import path from 'path'; import { merge } from 'webpack-merge'; -import baseConfig from './webpack.config.base'; -import webpackPaths from './webpack.paths'; +import baseConfig from './webpack.config.base.ts'; +import webpackPaths from './webpack.paths.ts'; import { dependencies } from '../../package.json'; -import checkNodeEnv from '../scripts/check-node-env'; +import checkNodeEnv from '../scripts/check-node-env.js'; checkNodeEnv('development'); diff --git a/.erb/configs/webpack.config.renderer.dev.ts b/.erb/configs/webpack.config.renderer.dev.ts index 1c998db14c..fcdcafcdac 100644 --- a/.erb/configs/webpack.config.renderer.dev.ts +++ b/.erb/configs/webpack.config.renderer.dev.ts @@ -6,9 +6,9 @@ import Dotenv from 'dotenv-webpack'; import chalk from 'chalk'; import { merge } from 'webpack-merge'; import { spawn, execSync } from 'node:child_process'; -import baseConfig from './webpack.config.base'; -import webpackPaths from './webpack.paths'; -import checkNodeEnv from '../scripts/check-node-env'; +import baseConfig from './webpack.config.base.ts'; +import webpackPaths from './webpack.paths.ts'; +import checkNodeEnv from '../scripts/check-node-env.js'; import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin'; // When an ESLint server is running, we can't set the NODE_ENV so we'll check if it's @@ -19,8 +19,9 @@ if (process.env.NODE_ENV === 'production') { const port = process.env.PORT || 1212; const manifest = path.resolve(webpackPaths.dllPath, 'renderer.json'); -const requiredByDLLConfig = module.parent!.filename.includes( - 'webpack.config.renderer.dev.dll' +const appNodeModulesPath = path.join(webpackPaths.rootPath, 'node_modules'); +const requiredByDLLConfig = process.argv.some((arg) => + arg.includes('webpack.config.renderer.dev.dll') ); /** @@ -179,7 +180,7 @@ const configuration: webpack.Configuration = { isBrowser: false, env: process.env.NODE_ENV, isDevelopment: process.env.NODE_ENV !== 'production', - nodeModules: webpackPaths.appNodeModulesPath, + nodeModules: appNodeModulesPath, }), ], @@ -216,7 +217,8 @@ const configuration: webpack.Configuration = { ], }, }, - setupMiddlewares(middlewares) { + // @ts-ignore webpack-dev-server runtime typing mismatch in this config context + setupMiddlewares(middlewares: Array, _devServer: unknown) { // Only auto-start main process if DEBUG_MODE is not set if (process.env.DEBUG_MODE !== 'true') { console.log('Starting Main Process...'); diff --git a/.erb/configs/webpack.config.renderer.prod.ts b/.erb/configs/webpack.config.renderer.prod.ts index 66cff0e638..b1ebb3aba4 100644 --- a/.erb/configs/webpack.config.renderer.prod.ts +++ b/.erb/configs/webpack.config.renderer.prod.ts @@ -7,14 +7,15 @@ import webpack from 'webpack'; import HtmlWebpackPlugin from 'html-webpack-plugin'; import MiniCssExtractPlugin from 'mini-css-extract-plugin'; import Dotenv from 'dotenv-webpack'; +// @ts-ignore no bundled types for this package in current config project import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; import CssMinimizerPlugin from 'css-minimizer-webpack-plugin'; import { merge } from 'webpack-merge'; import TerserPlugin from 'terser-webpack-plugin'; -import baseConfig from './webpack.config.base'; -import webpackPaths from './webpack.paths'; -import checkNodeEnv from '../scripts/check-node-env'; -import deleteSourceMaps from '../scripts/delete-source-maps'; +import baseConfig from './webpack.config.base.ts'; +import webpackPaths from './webpack.paths.ts'; +import checkNodeEnv from '../scripts/check-node-env.js'; +import deleteSourceMaps from '../scripts/delete-source-maps.js'; checkNodeEnv('production'); deleteSourceMaps(); diff --git a/.erb/configs/webpack.paths.ts b/.erb/configs/webpack.paths.ts index 41f8e7a09f..888fda6328 100644 --- a/.erb/configs/webpack.paths.ts +++ b/.erb/configs/webpack.paths.ts @@ -7,6 +7,7 @@ const dllPath = path.join(__dirname, '../dll'); const srcPath = path.join(rootPath, 'src', 'apps'); const srcMainPath = path.join(srcPath, 'main'); const srcRendererPath = path.join(srcPath, 'renderer'); +const appNodeModulesPath = path.join(rootPath, 'node_modules'); const srcSyncPath = path.join(srcPath, 'workers', 'sync'); const srcBackupsPath = path.join(srcPath, 'backups'); const srcVirtualDrivePath = path.join(srcPath, 'drive'); @@ -27,6 +28,7 @@ export default { srcPath, srcMainPath, srcRendererPath, + appNodeModulesPath, distPath, distMainPath, distRendererPath, diff --git a/.erb/tsconfig.json b/.erb/tsconfig.json new file mode 100644 index 0000000000..9d1826b5c2 --- /dev/null +++ b/.erb/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "allowJs": true, + "resolveJsonModule": true, + "types": [ + "node" + ], + "noEmit": true, + "skipLibCheck": true, + "allowImportingTsExtensions": true + }, + "include": [ + "./configs/**/*.ts", + "./configs/**/*.d.ts", + "../src/types/webpack-bundle-analyzer.d.ts" + ], + "exclude": [ + "../node_modules" + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 8c8fc63cf1..28815f35a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "internxt", - "version": "2.6.1", + "version": "2.6.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "internxt", - "version": "2.6.1", + "version": "2.6.2", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 3751ac86ad..6d3e82439f 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "build:renderer": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.renderer.prod.ts", "rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir .", "reinstall:nautilus-extension": "NODE_ENV=development ts-node src/apps/main/nautilus-extension/reload.ts", - "lint": "cross-env NODE_ENV=development eslint . --ext .ts,.tsx --max-warnings=50", + "lint": "cross-env NODE_ENV=development eslint . --ext .ts,.tsx --max-warnings=20", "lint:fix": "npm run lint --fix", "format": "prettier src --check", "format:fix": "prettier src --write", diff --git a/src/types/webpack-bundle-analyzer.d.ts b/src/types/webpack-bundle-analyzer.d.ts new file mode 100644 index 0000000000..08d5836f06 --- /dev/null +++ b/src/types/webpack-bundle-analyzer.d.ts @@ -0,0 +1,8 @@ +declare module 'webpack-bundle-analyzer' { + type BundleAnalyzerPluginOptions = Record; + + export class BundleAnalyzerPlugin { + constructor(options?: BundleAnalyzerPluginOptions); + apply(...args: unknown[]): void; + } +}