diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..69937db --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,48 @@ +import js from '@eslint/js'; +import globals from 'globals'; +import jestPlugin from 'eslint-plugin-jest'; + +export default [ + // Base ESLint recommended rules + js.configs.recommended, + + // Main configuration + { + files: ['**/*.js'], + languageOptions: { + ecmaVersion: 2022, + sourceType: 'module', + globals: { + ...globals.node, + ...globals.es6, + ...globals.jest + } + }, + plugins: { + jest: jestPlugin + }, + rules: { + // Core ESLint rules + 'semi': ['error', 'always'], + 'quotes': ['error', 'single', { 'avoidEscape': true }], + 'no-console': 'off', + 'no-unused-vars': ['error', { 'argsIgnorePattern': '^_' }], + + // Jest plugin rules + 'jest/no-disabled-tests': 'warn', + 'jest/no-focused-tests': 'error', + 'jest/no-identical-title': 'error', + 'jest/prefer-to-have-length': 'warn', + 'jest/valid-expect': 'error' + } + }, + + // Ignore patterns (equivalent to .eslintignore) + { + ignores: [ + 'node_modules/**', + 'dist/**', + 'coverage/**' + ] + } +]; diff --git a/package-lock.json b/package-lock.json index 04d70bb..7299c7b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,10 +13,11 @@ "ejs": "^3.1.10" }, "devDependencies": { - "@vercel/ncc": "^0.38.1", + "@eslint/js": "^9.25.0", "esbuild": "^0.25.2", "eslint": "^9.25.0", "eslint-plugin-jest": "^28.11.0", + "globals": "^16.0.0", "jest": "^29.7.0", "mock-fs": "^5.5.0", "tmp-promise": "^3.0.3" @@ -1103,6 +1104,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/js": { "version": "9.25.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz", @@ -2009,16 +2023,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@vercel/ncc": { - "version": "0.38.3", - "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.3.tgz", - "integrity": "sha512-rnK6hJBS6mwc+Bkab+PGPs9OiS0i/3kdTO+CkI8V0/VrW3vmz7O2Pxjw/owOlmo6PKEIxRSeZKv/kuL9itnpYA==", - "dev": true, - "license": "MIT", - "bin": { - "ncc": "dist/ncc/cli.js" - } - }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", @@ -3269,9 +3273,9 @@ } }, "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", + "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 9ca9796..b0c2f93 100644 --- a/package.json +++ b/package.json @@ -33,10 +33,11 @@ "ejs": "^3.1.10" }, "devDependencies": { - "@vercel/ncc": "^0.38.1", + "@eslint/js": "^9.25.0", "esbuild": "^0.25.2", "eslint": "^9.25.0", "eslint-plugin-jest": "^28.11.0", + "globals": "^16.0.0", "jest": "^29.7.0", "mock-fs": "^5.5.0", "tmp-promise": "^3.0.3" diff --git a/src/helpers/ComposerHelper.js b/src/helpers/ComposerHelper.js index 1ed25a4..b240481 100644 --- a/src/helpers/ComposerHelper.js +++ b/src/helpers/ComposerHelper.js @@ -43,7 +43,7 @@ export class ComposerHelper { await fs.access(classmapPath); return true; } catch (error) { - throw new Error(`Could not find classmap at ${classmapPath}. Make sure you've run composer with the --optimize flag.`); + throw new Error(`Could not find classmap at ${classmapPath}. Make sure you've run composer with the --optimize flag. Internal error: ${error}`); } } }