diff --git a/lint/src/rules/html/themed-component-usages.ts b/lint/src/rules/html/themed-component-usages.ts
index 0b9a13456a6..e907285dbca 100644
--- a/lint/src/rules/html/themed-component-usages.ts
+++ b/lint/src/rules/html/themed-component-usages.ts
@@ -7,10 +7,8 @@
*/
import { TmplAstElement } from '@angular-eslint/bundled-angular-compiler';
import { TemplateParserServices } from '@angular-eslint/utils';
-import {
- ESLintUtils,
- TSESLint,
-} from '@typescript-eslint/utils';
+import { ESLintUtils } from '@typescript-eslint/utils';
+import { RuleContext } from '@typescript-eslint/utils/ts-eslint';
import { fixture } from '../../../test/fixture';
import {
@@ -52,7 +50,7 @@ The only exception to this rule are unit tests, where we may want to use the bas
export const rule = ESLintUtils.RuleCreator.withoutDocs({
...info,
- create(context: TSESLint.RuleContext) {
+ create(context: RuleContext) {
if (getFilename(context).includes('.spec.ts')) {
// skip inline templates in unit tests
return {};
diff --git a/lint/src/rules/ts/themed-component-classes.ts b/lint/src/rules/ts/themed-component-classes.ts
index 66c37395b4c..527655adfa4 100644
--- a/lint/src/rules/ts/themed-component-classes.ts
+++ b/lint/src/rules/ts/themed-component-classes.ts
@@ -7,9 +7,9 @@
*/
import {
ESLintUtils,
- TSESLint,
TSESTree,
} from '@typescript-eslint/utils';
+import { RuleContext } from '@typescript-eslint/utils/ts-eslint';
import { fixture } from '../../../test/fixture';
import {
@@ -57,7 +57,7 @@ export const info = {
export const rule = ESLintUtils.RuleCreator.withoutDocs({
...info,
- create(context: TSESLint.RuleContext) {
+ create(context: RuleContext) {
const filename = getFilename(context);
if (filename.endsWith('.spec.ts')) {
diff --git a/lint/src/rules/ts/themed-component-selectors.ts b/lint/src/rules/ts/themed-component-selectors.ts
index e06f5ababf6..c27fd66d662 100644
--- a/lint/src/rules/ts/themed-component-selectors.ts
+++ b/lint/src/rules/ts/themed-component-selectors.ts
@@ -7,9 +7,9 @@
*/
import {
ESLintUtils,
- TSESLint,
TSESTree,
} from '@typescript-eslint/utils';
+import { RuleContext } from '@typescript-eslint/utils/ts-eslint';
import { fixture } from '../../../test/fixture';
import { getComponentSelectorNode } from '../../util/angular';
@@ -58,7 +58,7 @@ Unit tests are exempt from this rule, because they may redefine components using
export const rule = ESLintUtils.RuleCreator.withoutDocs({
...info,
- create(context: TSESLint.RuleContext) {
+ create(context: RuleContext) {
const filename = getFilename(context);
if (filename.endsWith('.spec.ts')) {
diff --git a/lint/src/rules/ts/themed-component-usages.ts b/lint/src/rules/ts/themed-component-usages.ts
index 96e9962ccf7..83fe6f8ea89 100644
--- a/lint/src/rules/ts/themed-component-usages.ts
+++ b/lint/src/rules/ts/themed-component-usages.ts
@@ -7,9 +7,9 @@
*/
import {
ESLintUtils,
- TSESLint,
TSESTree,
} from '@typescript-eslint/utils';
+import { RuleContext } from '@typescript-eslint/utils/ts-eslint';
import { fixture } from '../../../test/fixture';
import {
@@ -68,7 +68,7 @@ There are a few exceptions where the base class can still be used:
export const rule = ESLintUtils.RuleCreator.withoutDocs({
...info,
- create(context: TSESLint.RuleContext) {
+ create(context: RuleContext) {
const filename = getFilename(context);
function handleUnthemedUsagesInTypescript(node: TSESTree.Identifier) {
diff --git a/lint/src/util/structure.ts b/lint/src/util/structure.ts
index bfbf7ec7f27..13b2ef322b7 100644
--- a/lint/src/util/structure.ts
+++ b/lint/src/util/structure.ts
@@ -5,13 +5,17 @@
*
* http://www.dspace.org/license/
*/
-import { TSESLint } from '@typescript-eslint/utils';
-import { RuleTester } from 'eslint';
+import {
+ InvalidTestCase,
+ RuleMetaData,
+ RuleModule,
+ ValidTestCase,
+} from '@typescript-eslint/utils/ts-eslint';
import { EnumType } from 'typescript';
-export type Meta = TSESLint.RuleMetaData;
-export type Valid = TSESLint.ValidTestCase | RuleTester.ValidTestCase;
-export type Invalid = TSESLint.InvalidTestCase | RuleTester.InvalidTestCase;
+export type Meta = RuleMetaData;
+export type Valid = ValidTestCase;
+export type Invalid = InvalidTestCase;
export interface DSpaceESLintRuleInfo {
name: string;
@@ -28,7 +32,7 @@ export interface NamedTests {
export interface RuleExports {
Message: EnumType,
info: DSpaceESLintRuleInfo,
- rule: TSESLint.RuleModule,
+ rule: RuleModule,
tests: NamedTests,
default: unknown,
}
diff --git a/lint/src/util/typescript.ts b/lint/src/util/typescript.ts
index 3fecad270e6..0d04ef1a3d9 100644
--- a/lint/src/util/typescript.ts
+++ b/lint/src/util/typescript.ts
@@ -5,17 +5,18 @@
*
* http://www.dspace.org/license/
*/
+import { TSESTree } from '@typescript-eslint/utils';
import {
- TSESLint,
- TSESTree,
-} from '@typescript-eslint/utils';
+ RuleContext,
+ SourceCode,
+} from '@typescript-eslint/utils/ts-eslint';
import {
match,
toUnixStylePath,
} from './misc';
-export type AnyRuleContext = TSESLint.RuleContext;
+export type AnyRuleContext = RuleContext;
/**
* Return the current filename based on the ESLint rule context as a Unix-style path.
@@ -27,7 +28,7 @@ export function getFilename(context: AnyRuleContext): string {
return toUnixStylePath(context.getFilename());
}
-export function getSourceCode(context: AnyRuleContext): TSESLint.SourceCode {
+export function getSourceCode(context: AnyRuleContext): SourceCode {
// TSESLint claims this is deprecated, but the suggested alternative is undefined (could be a version mismatch between ESLint and TSESlint?)
// eslint-disable-next-line deprecation/deprecation
return context.getSourceCode();
diff --git a/lint/test/testing.ts b/lint/test/testing.ts
index cfa54c5b85c..53faf320699 100644
--- a/lint/test/testing.ts
+++ b/lint/test/testing.ts
@@ -7,7 +7,7 @@
*/
import { RuleTester as TypeScriptRuleTester } from '@typescript-eslint/rule-tester';
-import { RuleTester } from 'eslint';
+import { RuleTester } from '@typescript-eslint/utils/ts-eslint';
import { themeableComponents } from '../src/util/theme-support';
import {
diff --git a/package.json b/package.json
index 9dba94a096b..3c73bfe72d3 100644
--- a/package.json
+++ b/package.json
@@ -213,7 +213,7 @@
"sass-resources-loader": "^2.2.5",
"ts-node": "^8.10.2",
"typescript": "~5.3.3",
- "webpack": "5.90.3",
+ "webpack": "5.94.0",
"webpack-bundle-analyzer": "^4.8.0",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1"
diff --git a/webpack/webpack.common.ts b/webpack/webpack.common.ts
index 8d433edf393..d8155288cb4 100644
--- a/webpack/webpack.common.ts
+++ b/webpack/webpack.common.ts
@@ -79,6 +79,7 @@ const SCSS_LOADERS = [
export const commonExports = {
plugins: [
+ // @ts-expect-error: EnvironmentPlugin constructor types are currently to strict see issue https://github.com/webpack/webpack/issues/18719
new EnvironmentPlugin({
languageHashes: getFileHashes(path.join(__dirname, '..', 'src', 'assets', 'i18n'), /.*\.json5/g),
}),
diff --git a/webpack/webpack.prod.ts b/webpack/webpack.prod.ts
index 559b7f1dc71..fce321d1520 100644
--- a/webpack/webpack.prod.ts
+++ b/webpack/webpack.prod.ts
@@ -1,16 +1,17 @@
-import { commonExports } from './webpack.common';
-import { projectRoot } from './helpers';
+import { EnvironmentPlugin } from 'webpack';
-const webpack = require('webpack');
+import { projectRoot } from './helpers';
+import { commonExports } from './webpack.common';
module.exports = Object.assign({}, commonExports, {
plugins: [
...commonExports.plugins,
- new webpack.EnvironmentPlugin({
+ // @ts-expect-error: EnvironmentPlugin constructor types are currently to strict see issue https://github.com/webpack/webpack/issues/18719
+ new EnvironmentPlugin({
'process.env': {
- NODE_ENV: JSON.stringify('production'),
- AOT: true
- }
+ NODE_ENV: 'production',
+ AOT: true,
+ },
}),
],
mode: 'production',
diff --git a/yarn.lock b/yarn.lock
index bd5a524f7f4..a6a2854c67d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -123,7 +123,7 @@
undici "6.7.1"
vite "5.1.5"
watchpack "2.4.0"
- webpack "5.90.3"
+ webpack "5.94.0"
webpack-dev-middleware "6.1.1"
webpack-dev-server "4.15.1"
webpack-merge "5.10.0"
@@ -194,7 +194,7 @@
undici "6.11.1"
vite "5.1.7"
watchpack "2.4.0"
- webpack "5.90.3"
+ webpack "5.94.0"
webpack-dev-middleware "6.1.2"
webpack-dev-server "4.15.1"
webpack-merge "5.10.0"
@@ -2726,23 +2726,7 @@
resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.1.5.tgz#49d738257cc73bafe45c13cb8ff240683b4d5117"
integrity sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==
-"@types/eslint-scope@^3.7.3":
- version "3.7.7"
- resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5"
- integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==
- dependencies:
- "@types/eslint" "*"
- "@types/estree" "*"
-
-"@types/eslint@*":
- version "8.56.5"
- resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.5.tgz#94b88cab77588fcecdd0771a6d576fa1c0af9d02"
- integrity sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==
- dependencies:
- "@types/estree" "*"
- "@types/json-schema" "*"
-
-"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.5":
+"@types/estree@1.0.5", "@types/estree@^1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
@@ -2802,7 +2786,7 @@
resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.6.tgz#f1a1cb35aff47bc5cfb05cb0c441ca91e914c26f"
integrity sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw==
-"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
+"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
version "7.0.15"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
@@ -3307,7 +3291,7 @@
resolved "https://registry.yarnpkg.com/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz#8b840305a6b48e8764803435ec0c716fa27d3802"
integrity sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==
-"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.11.5":
+"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1":
version "1.12.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb"
integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==
@@ -3373,7 +3357,7 @@
resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a"
integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==
-"@webassemblyjs/wasm-edit@^1.11.5":
+"@webassemblyjs/wasm-edit@^1.12.1":
version "1.12.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b"
integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==
@@ -3408,7 +3392,7 @@
"@webassemblyjs/wasm-gen" "1.12.1"
"@webassemblyjs/wasm-parser" "1.12.1"
-"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.11.5":
+"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1":
version "1.12.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937"
integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==
@@ -3491,10 +3475,10 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
mime-types "~2.1.34"
negotiator "0.6.3"
-acorn-import-assertions@^1.9.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac"
- integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==
+acorn-import-attributes@^1.9.5:
+ version "1.9.5"
+ resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef"
+ integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==
acorn-jsx@^5.3.2:
version "5.3.2"
@@ -5348,10 +5332,10 @@ engine.io@~6.5.2:
engine.io-parser "~5.2.1"
ws "~8.11.0"
-enhanced-resolve@^5.15.0:
- version "5.16.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787"
- integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==
+enhanced-resolve@^5.17.1:
+ version "5.17.1"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15"
+ integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
@@ -5647,9 +5631,11 @@ eslint-plugin-deprecation@^1.4.1:
"eslint-plugin-dspace-angular-html@link:./lint/dist/src/rules/html":
version "0.0.0"
+ uid ""
"eslint-plugin-dspace-angular-ts@link:./lint/dist/src/rules/ts":
version "0.0.0"
+ uid ""
eslint-plugin-import-newlines@^1.3.1:
version "1.4.0"
@@ -6545,7 +6531,7 @@ gopd@^1.0.1:
dependencies:
get-intrinsic "^1.1.3"
-graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6:
version "4.2.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
@@ -11863,10 +11849,10 @@ watchpack@2.4.0:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
-watchpack@^2.4.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff"
- integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==
+watchpack@^2.4.1:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da"
+ integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==
dependencies:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
@@ -12095,26 +12081,25 @@ webpack-subresource-integrity@5.1.0:
dependencies:
typed-assert "^1.0.8"
-webpack@5.90.3:
- version "5.90.3"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.90.3.tgz#37b8f74d3ded061ba789bb22b31e82eed75bd9ac"
- integrity sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==
+webpack@5.94.0:
+ version "5.94.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f"
+ integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==
dependencies:
- "@types/eslint-scope" "^3.7.3"
"@types/estree" "^1.0.5"
- "@webassemblyjs/ast" "^1.11.5"
- "@webassemblyjs/wasm-edit" "^1.11.5"
- "@webassemblyjs/wasm-parser" "^1.11.5"
+ "@webassemblyjs/ast" "^1.12.1"
+ "@webassemblyjs/wasm-edit" "^1.12.1"
+ "@webassemblyjs/wasm-parser" "^1.12.1"
acorn "^8.7.1"
- acorn-import-assertions "^1.9.0"
+ acorn-import-attributes "^1.9.5"
browserslist "^4.21.10"
chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.15.0"
+ enhanced-resolve "^5.17.1"
es-module-lexer "^1.2.1"
eslint-scope "5.1.1"
events "^3.2.0"
glob-to-regexp "^0.4.1"
- graceful-fs "^4.2.9"
+ graceful-fs "^4.2.11"
json-parse-even-better-errors "^2.3.1"
loader-runner "^4.2.0"
mime-types "^2.1.27"
@@ -12122,7 +12107,7 @@ webpack@5.90.3:
schema-utils "^3.2.0"
tapable "^2.1.1"
terser-webpack-plugin "^5.3.10"
- watchpack "^2.4.0"
+ watchpack "^2.4.1"
webpack-sources "^3.2.3"
websocket-driver@>=0.5.1, websocket-driver@^0.7.4: