diff --git a/e2e/next/src/next.test.ts b/e2e/next/src/next.test.ts
index 99d12ae461..2e6b61c356 100644
--- a/e2e/next/src/next.test.ts
+++ b/e2e/next/src/next.test.ts
@@ -146,6 +146,7 @@ describe('Next.js Applications', () => {
updateFile(
mainPath,
`
+ /* eslint-disable */
import dynamic from 'next/dynamic';
const DynamicComponent = dynamic(
() => import('@${proj}/${libName}').then(d => d.${stringUtils.capitalize(
@@ -358,9 +359,6 @@ describe('Next.js Applications', () => {
`apps/${appName}/next.config.js`,
`
module.exports = {
- future: {
- webpack5: false,
- },
webpack: (c) => {
console.log('NODE_ENV is', process.env.NODE_ENV);
return c;
@@ -459,7 +457,7 @@ describe('Next.js Applications', () => {
});
}, 120000);
- it('webpack5 - should be able to consume a react libs (buildable and non-buildable)', async () => {
+ it('webpack4 - should be able to consume a react libs (buildable and non-buildable)', async () => {
if (isNotWindows()) {
const appName = uniq('app');
const buildableLibName = uniq('lib');
@@ -488,16 +486,13 @@ describe('Next.js Applications', () => {
`
// eslint-disable-next-line @typescript-eslint/no-var-requires
const withNx = require('@nrwl/next/plugins/with-nx');
-
module.exports = withNx({
nx: {
// Set this to false if you do not want to use SVGR
// See: https://github.com/gregberge/svgr
svgr: true,
},
- future: {
- webpack5: true
- }
+ webpack5: false
});
`
);
@@ -524,12 +519,12 @@ describe('Next.js Applications', () => {
checkUnitTest: true,
checkLint: true,
checkE2E: true,
- checkWebpack5: true,
+ checkWebpack4: true,
});
}
}, 300000);
- it('webpack5 - should build with a next.config.js file in the dist folder', async () => {
+ it('webpack4 - should build with a next.config.js file in the dist folder', async () => {
const appName = uniq('app');
runCLI(`generate @nrwl/next:app ${appName} --no-interactive --style=css`);
@@ -538,9 +533,7 @@ describe('Next.js Applications', () => {
`apps/${appName}/next.config.js`,
`
module.exports = {
- future: {
- webpack5: true,
- },
+ webpack5: false,
webpack: (c) => {
console.log('NODE_ENV is', process.env.NODE_ENV);
return c;
@@ -556,7 +549,6 @@ describe('Next.js Applications', () => {
checkFilesExist(`dist/apps/${appName}/next.config.js`);
expect(result).toContain('NODE_ENV is production');
- expect(result).toContain('Using webpack 5');
}, 120000);
it('should allow using a custom server implementation in TypeScript', async () => {
@@ -644,12 +636,12 @@ async function checkApp(
checkUnitTest: boolean;
checkLint: boolean;
checkE2E: boolean;
- checkWebpack5?: boolean;
+ checkWebpack4?: boolean;
}
) {
const buildResult = runCLI(`build ${appName} --withDeps`);
- if (opts.checkWebpack5) {
- expect(buildResult).toContain('Using webpack 5');
+ if (opts.checkWebpack4) {
+ expect(buildResult).toContain('Using webpack 4');
}
expect(buildResult).toContain(`Compiled successfully`);
checkFilesExist(`dist/apps/${appName}/.next/build-manifest.json`);
diff --git a/package.json b/package.json
index c658de082f..ac26a6ea12 100644
--- a/package.json
+++ b/package.json
@@ -46,6 +46,7 @@
"@angular/router": "^12.0.0",
"@angular/service-worker": "^12.0.0",
"@angular/upgrade": "^12.0.0",
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5",
"@cypress/webpack-preprocessor": "4.1.5",
"@nestjs/common": "^7.0.0",
"@nestjs/core": "^7.0.0",
@@ -131,6 +132,7 @@
"dotenv": "8.2.0",
"ejs": "^3.1.5",
"eslint": "7.10.0",
+ "eslint-config-next": "^11.0.1",
"eslint-config-prettier": "^8.1.0",
"eslint-plugin-cypress": "^2.10.3",
"eslint-plugin-import": "2.22.1",
diff --git a/packages/next/migrations.json b/packages/next/migrations.json
index fc36c507ed..e999df628b 100644
--- a/packages/next/migrations.json
+++ b/packages/next/migrations.json
@@ -42,6 +42,12 @@
"version": "11.6.0-beta.0",
"description": "Add js patterns to tsconfig.json",
"factory": "./src/migrations/update-11-6-0/add-js-include-11-6-0"
+ },
+ "add-next-eslint-12.6.0": {
+ "cli": "nx",
+ "version": "12.6.0-beta.0",
+ "description": "Add 'next' eslint config",
+ "factory": "./src/migrations/update-12-6-0/add-next-eslint"
}
},
"packageJsonUpdates": {
@@ -119,6 +125,15 @@
"alwaysAddToPackageJson": false
}
}
+ },
+ "12.6.0": {
+ "version": "12.6.0-beta.0",
+ "packages": {
+ "next": {
+ "version": "11.0.1",
+ "alwaysAddToPackageJson": false
+ }
+ }
}
}
}
diff --git a/packages/next/package.json b/packages/next/package.json
index 5f2e5d75ea..7d240e52d4 100644
--- a/packages/next/package.json
+++ b/packages/next/package.json
@@ -29,7 +29,7 @@
"migrations": "./migrations.json"
},
"peerDependencies": {
- "next": "^10.2.0"
+ "next": "^11.0.1"
},
"dependencies": {
"@babel/plugin-proposal-decorators": "7.12.13",
@@ -41,6 +41,7 @@
"@nrwl/workspace": "*",
"@svgr/webpack": "^5.5.0",
"chalk": "4.1.0",
+ "eslint-config-next": "^11.0.1",
"fs-extra": "^9.1.0",
"url-loader": "^3.0.0",
"tsconfig-paths": "^3.9.0",
diff --git a/packages/next/src/generators/application/application.spec.ts b/packages/next/src/generators/application/application.spec.ts
index f0597a9e46..5bd9025b19 100644
--- a/packages/next/src/generators/application/application.spec.ts
+++ b/packages/next/src/generators/application/application.spec.ts
@@ -310,9 +310,14 @@ describe('app', () => {
const eslintJson = readJson(tree, '/apps/my-app/.eslintrc.json');
expect(eslintJson).toMatchInlineSnapshot(`
Object {
+ "env": Object {
+ "jest": true,
+ },
"extends": Array [
- "plugin:@nrwl/nx/react",
+ "plugin:@nrwl/nx/react-typescript",
"../../.eslintrc.json",
+ "next",
+ "next/core-web-vitals",
],
"ignorePatterns": Array [
"!**/*",
diff --git a/packages/next/src/generators/application/files/index.d.ts__tmpl__ b/packages/next/src/generators/application/files/index.d.ts__tmpl__
index 7ba08fa17c..090fbbce20 100644
--- a/packages/next/src/generators/application/files/index.d.ts__tmpl__
+++ b/packages/next/src/generators/application/files/index.d.ts__tmpl__
@@ -4,3 +4,15 @@ declare module '*.svg' {
export const ReactComponent: any;
export default content;
}
+
+<% if (style === 'less') { %>
+declare module '*.module.less' {
+ const classes: { readonly [key: string]: string };
+ export default classes;
+}
+<% } else if (style === 'styl') { %>
+declare module '*.module.styl' {
+ const classes: { readonly [key: string]: string };
+ export default classes;
+}
+<% } %>
diff --git a/packages/next/src/generators/application/files/next-env.d.ts__tmpl__ b/packages/next/src/generators/application/files/next-env.d.ts__tmpl__
index 76a5070588..c6643fda12 100644
--- a/packages/next/src/generators/application/files/next-env.d.ts__tmpl__
+++ b/packages/next/src/generators/application/files/next-env.d.ts__tmpl__
@@ -1,13 +1,3 @@
///
///
-<% if (style === 'less') { %>
-declare module '*.module.less' {
- const classes: { readonly [key: string]: string };
- export default classes;
-}
-<% } else if (style === 'styl') { %>
-declare module '*.module.styl' {
- const classes: { readonly [key: string]: string };
- export default classes;
-}
-<% } %>
\ No newline at end of file
+///
diff --git a/packages/next/src/generators/application/files/next.config.js__tmpl__ b/packages/next/src/generators/application/files/next.config.js__tmpl__
index bb2be45f09..bc471a5559 100644
--- a/packages/next/src/generators/application/files/next.config.js__tmpl__
+++ b/packages/next/src/generators/application/files/next.config.js__tmpl__
@@ -15,7 +15,9 @@ const nextConfig = {
},
// Set this to true if you use CSS modules.
// See: https://github.com/css-modules/css-modules
- cssModules: false
+ cssModules: false,
+ // @zeit/next-less does not support webpack 5
+ webpack5: false,
};
module.exports = withLess(withNx(nextConfig));
@@ -33,7 +35,9 @@ const nextConfig = {
},
// Set this to true if you use CSS modules.
// See: https://github.com/css-modules/css-modules
- cssModules: false
+ cssModules: false,
+ // @zeit/next-stylus does not support webpack 5
+ webpack5: false,
};
module.exports = withStylus(withNx(nextConfig));
diff --git a/packages/next/src/generators/application/lib/add-linting.ts b/packages/next/src/generators/application/lib/add-linting.ts
index c799f08249..d20caae596 100644
--- a/packages/next/src/generators/application/lib/add-linting.ts
+++ b/packages/next/src/generators/application/lib/add-linting.ts
@@ -39,6 +39,23 @@ export async function addLinting(
`${options.appProjectRoot}/tsconfig(.*)?.json`,
];
}
+ if (!reactEslintJson.extends) {
+ reactEslintJson.extends = [];
+ }
+ if (typeof reactEslintJson.extends === 'string') {
+ reactEslintJson.extends = [reactEslintJson.extends];
+ }
+ // add next.js configuration
+ reactEslintJson.extends.push(...['next', 'next/core-web-vitals']);
+ // remove nx/react plugin, as it conflicts with the next.js one
+ reactEslintJson.extends = reactEslintJson.extends.filter(
+ (name) => name !== 'plugin:@nrwl/nx/react'
+ );
+ reactEslintJson.extends.unshift('plugin:@nrwl/nx/react-typescript');
+ if (!reactEslintJson.env) {
+ reactEslintJson.env = {};
+ }
+ reactEslintJson.env.jest = true;
return reactEslintJson;
}
);
diff --git a/packages/next/src/generators/application/lib/create-application-files.helpers.ts b/packages/next/src/generators/application/lib/create-application-files.helpers.ts
index 65159c6830..19e60995ee 100644
--- a/packages/next/src/generators/application/lib/create-application-files.helpers.ts
+++ b/packages/next/src/generators/application/lib/create-application-files.helpers.ts
@@ -7,6 +7,7 @@ export function createAppJsx(name: string) {
If you like Nx, please give it a star:
+ {/* eslint-disable-next-line @next/next/no-img-element */}

Star
diff --git a/packages/next/src/generators/init/init.ts b/packages/next/src/generators/init/init.ts
index 2703bceb91..92c26f83f0 100644
--- a/packages/next/src/generators/init/init.ts
+++ b/packages/next/src/generators/init/init.ts
@@ -11,7 +11,11 @@ import { jestInitGenerator } from '@nrwl/jest';
import { cypressInitGenerator } from '@nrwl/cypress';
import { reactDomVersion, reactInitGenerator, reactVersion } from '@nrwl/react';
-import { nextVersion, nxVersion } from '../../utils/versions';
+import {
+ eslintConfigNextVersion,
+ nextVersion,
+ nxVersion,
+} from '../../utils/versions';
import { InitSchema } from './schema';
function updateDependencies(host: Tree) {
@@ -31,7 +35,9 @@ function updateDependencies(host: Tree) {
'react-dom': reactDomVersion,
tslib: '^2.0.0',
},
- {}
+ {
+ 'eslint-config-next': eslintConfigNextVersion,
+ }
);
}
diff --git a/packages/next/src/migrations/update-12-6-0/add-next-eslint.spec.ts b/packages/next/src/migrations/update-12-6-0/add-next-eslint.spec.ts
new file mode 100644
index 0000000000..2dcd9a60c2
--- /dev/null
+++ b/packages/next/src/migrations/update-12-6-0/add-next-eslint.spec.ts
@@ -0,0 +1,214 @@
+import { readJson, Tree } from '@nrwl/devkit';
+import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
+import addNextEslint from './add-next-eslint';
+
+describe('Add next eslint 12.6.0', () => {
+ let tree: Tree;
+
+ beforeEach(async () => {
+ tree = createTreeWithEmptyWorkspace();
+ });
+
+ it('should add "next" config options', async () => {
+ tree.write(
+ 'workspace.json',
+ JSON.stringify({
+ projects: {
+ app1: {
+ root: 'apps/app1',
+ targets: {
+ build: {
+ executor: '@nrwl/next:build',
+ },
+ },
+ },
+ },
+ })
+ );
+ tree.write(
+ 'nx.json',
+ JSON.stringify({
+ projects: {
+ app1: {},
+ },
+ })
+ );
+ tree.write(
+ 'apps/app1/.eslintrc.json',
+ JSON.stringify({
+ extends: ['../../.eslintrc.json'],
+ ignorePatterns: ['!**/*'],
+ })
+ );
+
+ await addNextEslint(tree);
+
+ const result = readJson(tree, 'apps/app1/.eslintrc.json');
+ expect(result.extends).toContain('next');
+ expect(result.extends).toContain('next/core-web-vitals');
+ });
+
+ it('should add "next" config options when no "extends" property is present', async () => {
+ tree.write(
+ 'workspace.json',
+ JSON.stringify({
+ projects: {
+ app1: {
+ root: 'apps/app1',
+ targets: {
+ build: {
+ executor: '@nrwl/next:build',
+ },
+ },
+ },
+ },
+ })
+ );
+ tree.write(
+ 'nx.json',
+ JSON.stringify({
+ projects: {
+ app1: {},
+ },
+ })
+ );
+ tree.write(
+ 'apps/app1/.eslintrc.json',
+ JSON.stringify({
+ ignorePatterns: ['!**/*'],
+ })
+ );
+
+ await addNextEslint(tree);
+
+ const result = readJson(tree, 'apps/app1/.eslintrc.json');
+ expect(result.extends).toContain('next');
+ expect(result.extends).toContain('next/core-web-vitals');
+ });
+
+ it('should add "next" config options when "extends" property is a string', async () => {
+ tree.write(
+ 'workspace.json',
+ JSON.stringify({
+ projects: {
+ app1: {
+ root: 'apps/app1',
+ targets: {
+ build: {
+ executor: '@nrwl/next:build',
+ },
+ },
+ },
+ },
+ })
+ );
+ tree.write(
+ 'nx.json',
+ JSON.stringify({
+ projects: {
+ app1: {},
+ },
+ })
+ );
+ tree.write(
+ 'apps/app1/.eslintrc.json',
+ JSON.stringify({
+ extends: '../../.eslintrc.json',
+ ignorePatterns: ['!**/*'],
+ })
+ );
+
+ await addNextEslint(tree);
+
+ const result = readJson(tree, 'apps/app1/.eslintrc.json');
+ expect(result.extends).toContain('next');
+ expect(result.extends).toContain('next/core-web-vitals');
+ expect(result.extends).toContain('../../.eslintrc.json');
+ });
+
+ it('should not change projects that are not next.js', async () => {
+ tree.write(
+ 'workspace.json',
+ JSON.stringify({
+ projects: {
+ app1: {
+ root: 'apps/app1',
+ targets: {
+ build: {
+ executor: '@nrwl/web:build',
+ },
+ },
+ },
+ },
+ })
+ );
+ tree.write(
+ 'nx.json',
+ JSON.stringify({
+ projects: {
+ app1: {},
+ },
+ })
+ );
+ tree.write(
+ 'apps/app1/.eslintrc.json',
+ JSON.stringify({
+ extends: '../../.eslintrc.json',
+ ignorePatterns: ['!**/*'],
+ })
+ );
+
+ await addNextEslint(tree);
+
+ expect(readJson(tree, 'apps/app1/.eslintrc.json')).toMatchObject({
+ extends: '../../.eslintrc.json',
+ ignorePatterns: ['!**/*'],
+ });
+ });
+
+ it('should remove nx/react eslint plugin', async () => {
+ tree.write(
+ 'workspace.json',
+ JSON.stringify({
+ projects: {
+ app1: {
+ root: 'apps/app1',
+ targets: {
+ build: {
+ executor: '@nrwl/next:build',
+ },
+ },
+ },
+ },
+ })
+ );
+ tree.write(
+ 'nx.json',
+ JSON.stringify({
+ projects: {
+ app1: {},
+ },
+ })
+ );
+ tree.write(
+ 'apps/app1/.eslintrc.json',
+ JSON.stringify({
+ extends: ['plugin:@nrwl/nx/react', '../../.eslintrc.json'],
+ })
+ );
+
+ await addNextEslint(tree);
+
+ expect(readJson(tree, 'apps/app1/.eslintrc.json').extends).not.toContain(
+ 'plugin:@nrwl/nx/react'
+ );
+ });
+
+ it('should add eslint-config-next to dev dependencies', async () => {
+ await addNextEslint(tree);
+
+ expect(
+ readJson(tree, 'package.json').devDependencies['eslint-config-next']
+ ).toBeTruthy();
+ });
+});
diff --git a/packages/next/src/migrations/update-12-6-0/add-next-eslint.ts b/packages/next/src/migrations/update-12-6-0/add-next-eslint.ts
new file mode 100644
index 0000000000..cb25853a37
--- /dev/null
+++ b/packages/next/src/migrations/update-12-6-0/add-next-eslint.ts
@@ -0,0 +1,47 @@
+import { formatFiles, getProjects, Tree, updateJson } from '@nrwl/devkit';
+import { eslintConfigNextVersion } from '../../utils/versions';
+
+export async function addNextEslint(host: Tree) {
+ const projects = getProjects(host);
+
+ projects.forEach((project) => {
+ if (project.targets?.build?.executor !== '@nrwl/next:build') return;
+
+ const eslintPath = `${project.root}/.eslintrc.json`;
+ if (!host.exists(eslintPath)) return;
+
+ updateJson(host, eslintPath, (eslintConfig) => {
+ if (!eslintConfig.extends) {
+ eslintConfig.extends = [];
+ }
+ if (typeof eslintConfig.extends === 'string') {
+ eslintConfig.extends = [eslintConfig.extends];
+ }
+ // add next.js configuration
+ eslintConfig.extends.push(...['next', 'next/core-web-vitals']);
+ // remove nx/react plugin, as it conflicts with the next.js one
+ eslintConfig.extends = eslintConfig.extends.filter(
+ (name) => name !== 'plugin:@nrwl/nx/react'
+ );
+ eslintConfig.extends.unshift('plugin:@nrwl/nx/react-typescript');
+ if (!eslintConfig.env) {
+ eslintConfig.env = {};
+ }
+ eslintConfig.env.jest = true;
+ return eslintConfig;
+ });
+ });
+
+ updateJson(host, 'package.json', (packageJsonContents) => {
+ if (!packageJsonContents.devDependencies) {
+ packageJsonContents.devDependencies = {};
+ }
+ packageJsonContents.devDependencies['eslint-config-next'] =
+ eslintConfigNextVersion;
+ return packageJsonContents;
+ });
+
+ await formatFiles(host);
+}
+
+export default addNextEslint;
diff --git a/packages/next/src/utils/versions.ts b/packages/next/src/utils/versions.ts
index 7b69acbb03..1624189e25 100644
--- a/packages/next/src/utils/versions.ts
+++ b/packages/next/src/utils/versions.ts
@@ -1,6 +1,7 @@
export const nxVersion = '*';
-export const nextVersion = '10.2.0';
+export const nextVersion = '11.0.1';
+export const eslintConfigNextVersion = '11.0.1';
export const nodeSass = '5.0.0';
export const zeitNextLess = '1.0.1';
export const zeitNextStylus = '1.0.1';
diff --git a/packages/web/src/webpack/entry.ts b/packages/web/src/webpack/entry.ts
index 4f899b364c..311fa5d151 100644
--- a/packages/web/src/webpack/entry.ts
+++ b/packages/web/src/webpack/entry.ts
@@ -1,7 +1,8 @@
import { logger } from '@nrwl/devkit';
import { requireShim } from './require-shim';
-const { version } = requireShim('webpack/package.json');
+const result = requireShim('webpack/package.json');
+const version = result?.version;
exports.default = undefined;
diff --git a/yarn.lock b/yarn.lock
index 5bd7c81cd2..abce180928 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -714,6 +714,14 @@
"@babel/helper-annotate-as-pure" "^7.12.13"
regexpu-core "^4.7.1"
+"@babel/helper-create-regexp-features-plugin@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4"
+ integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.14.5"
+ regexpu-core "^4.7.1"
+
"@babel/helper-define-polyfill-provider@^0.1.5":
version "0.1.5"
resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e"
@@ -3194,6 +3202,11 @@
resolved "https://registry.yarnpkg.com/@next/env/-/env-10.2.0.tgz#154dbce2efa3ad067ebd20b7d0aa9aed775e7c97"
integrity sha512-tsWBsn1Rb6hXRaHc/pWMCpZ4Ipkf3OCbZ54ef5ukgIyEvzzGdGFXQshPP2AF7yb+8yMpunWs7vOMZW3e8oPF6A==
+"@next/eslint-plugin-next@11.0.1":
+ version "11.0.1"
+ resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-11.0.1.tgz#5dd3264a40fadcf28eba00d914d69103422bb7e6"
+ integrity sha512-UzdX3y6XSrj9YuASUb/p4sRvfjP2klj2YgIOfMwrWoLTTPJQMh00hREB9Ftr7m7RIxjVSAaaLXIRLdxvq948GA==
+
"@next/polyfill-module@10.2.0":
version "10.2.0"
resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.2.0.tgz#61f41110c4b465cc26d113e2054e205df61c3594"
@@ -3819,6 +3832,11 @@
estree-walker "^2.0.1"
picomatch "^2.2.2"
+"@rushstack/eslint-patch@^1.0.6":
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.0.6.tgz#023d72a5c4531b4ce204528971700a78a85a0c50"
+ integrity sha512-Myxw//kzromB9yWgS8qYGuGVf91oBUUJpNvy5eM50sqvmKLbKjwLxohJnkWGTeeI9v9IBMtPLxz5Gc60FIfvCA==
+
"@samverschueren/stream-to-observable@^0.3.0":
version "0.3.1"
resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301"
@@ -5480,6 +5498,16 @@
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
+"@typescript-eslint/parser@^4.20.0":
+ version "4.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.0.tgz#2404c16751a28616ef3abab77c8e51d680a12caa"
+ integrity sha512-7x4D22oPY8fDaOCvkuXtYYTQ6mTMmkivwEzS+7iml9F9VkHGbbZ3x4fHRwxAb5KeuSkLqfnYjs46tGx2Nour4A==
+ dependencies:
+ "@typescript-eslint/scope-manager" "4.28.0"
+ "@typescript-eslint/types" "4.28.0"
+ "@typescript-eslint/typescript-estree" "4.28.0"
+ debug "^4.3.1"
+
"@typescript-eslint/parser@^4.3.0":
version "4.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.17.0.tgz#141b647ffc72ebebcbf9b0fe6087f65b706d3215"
@@ -5506,6 +5534,14 @@
"@typescript-eslint/types" "4.23.0"
"@typescript-eslint/visitor-keys" "4.23.0"
+"@typescript-eslint/scope-manager@4.28.0":
+ version "4.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.0.tgz#6a3009d2ab64a30fc8a1e257a1a320067f36a0ce"
+ integrity sha512-eCALCeScs5P/EYjwo6se9bdjtrh8ByWjtHzOkC4Tia6QQWtQr3PHovxh3TdYTuFcurkYI4rmFsRFpucADIkseg==
+ dependencies:
+ "@typescript-eslint/types" "4.28.0"
+ "@typescript-eslint/visitor-keys" "4.28.0"
+
"@typescript-eslint/types@4.17.0":
version "4.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.17.0.tgz#f57d8fc7f31b348db946498a43050083d25f40ad"
@@ -5516,6 +5552,11 @@
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.23.0.tgz#da1654c8a5332f4d1645b2d9a1c64193cae3aa3b"
integrity sha512-oqkNWyG2SLS7uTWLZf6Sr7Dm02gA5yxiz1RP87tvsmDsguVATdpVguHr4HoGOcFOpCvx9vtCSCyQUGfzq28YCw==
+"@typescript-eslint/types@4.28.0":
+ version "4.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.0.tgz#a33504e1ce7ac51fc39035f5fe6f15079d4dafb0"
+ integrity sha512-p16xMNKKoiJCVZY5PW/AfILw2xe1LfruTcfAKBj3a+wgNYP5I9ZEKNDOItoRt53p4EiPV6iRSICy8EPanG9ZVA==
+
"@typescript-eslint/typescript-estree@4.17.0":
version "4.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.17.0.tgz#b835d152804f0972b80dbda92477f9070a72ded1"
@@ -5542,6 +5583,19 @@
semver "^7.3.2"
tsutils "^3.17.1"
+"@typescript-eslint/typescript-estree@4.28.0":
+ version "4.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.0.tgz#e66d4e5aa2ede66fec8af434898fe61af10c71cf"
+ integrity sha512-m19UQTRtxMzKAm8QxfKpvh6OwQSXaW1CdZPoCaQuLwAq7VZMNuhJmZR4g5281s2ECt658sldnJfdpSZZaxUGMQ==
+ dependencies:
+ "@typescript-eslint/types" "4.28.0"
+ "@typescript-eslint/visitor-keys" "4.28.0"
+ debug "^4.3.1"
+ globby "^11.0.3"
+ is-glob "^4.0.1"
+ semver "^7.3.5"
+ tsutils "^3.21.0"
+
"@typescript-eslint/visitor-keys@4.17.0":
version "4.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.17.0.tgz#9c304cfd20287c14a31d573195a709111849b14d"
@@ -5558,6 +5612,14 @@
"@typescript-eslint/types" "4.23.0"
eslint-visitor-keys "^2.0.0"
+"@typescript-eslint/visitor-keys@4.28.0":
+ version "4.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.0.tgz#255c67c966ec294104169a6939d96f91c8a89434"
+ integrity sha512-PjJyTWwrlrvM5jazxYF5ZPs/nl0kHDZMVbuIcbpawVXaDPelp3+S9zpOz5RmVUfS/fD5l5+ZXNKnWhNYjPzCvw==
+ dependencies:
+ "@typescript-eslint/types" "4.28.0"
+ eslint-visitor-keys "^2.0.0"
+
"@verdaccio/commons-api@10.0.0", "@verdaccio/commons-api@^10.0.0":
version "10.0.0"
resolved "https://registry.yarnpkg.com/@verdaccio/commons-api/-/commons-api-10.0.0.tgz#2d7de8722f94181f1a71891fe91198a7c14e6dea"
@@ -11580,6 +11642,21 @@ escodegen@^2.0.0:
optionalDependencies:
source-map "~0.6.1"
+eslint-config-next@^11.0.1:
+ version "11.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-11.0.1.tgz#abdd2565a6fa5841556a89ba935f044bec173d0b"
+ integrity sha512-yy63K4Bmy8amE6VMb26CZK6G99cfVX3JaMTvuvmq/LL8/b8vKHcauUZREBTAQ+2DrIvlH4YrFXrkQ1vpYDL9Eg==
+ dependencies:
+ "@next/eslint-plugin-next" "11.0.1"
+ "@rushstack/eslint-patch" "^1.0.6"
+ "@typescript-eslint/parser" "^4.20.0"
+ eslint-import-resolver-node "^0.3.4"
+ eslint-import-resolver-typescript "^2.4.0"
+ eslint-plugin-import "^2.22.1"
+ eslint-plugin-jsx-a11y "^6.4.1"
+ eslint-plugin-react "^7.23.1"
+ eslint-plugin-react-hooks "^4.2.0"
+
eslint-config-prettier@8.3.0:
version "8.3.0"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a"
@@ -11598,6 +11675,17 @@ eslint-import-resolver-node@^0.3.4:
debug "^2.6.9"
resolve "^1.13.1"
+eslint-import-resolver-typescript@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.4.0.tgz#ec1e7063ebe807f0362a7320543aaed6fe1100e1"
+ integrity sha512-useJKURidCcldRLCNKWemr1fFQL1SzB3G4a0li6lFGvlc5xGe1hY343bvG07cbpCzPuM/lK19FIJB3XGFSkplA==
+ dependencies:
+ debug "^4.1.1"
+ glob "^7.1.6"
+ is-glob "^4.0.1"
+ resolve "^1.17.0"
+ tsconfig-paths "^3.9.0"
+
eslint-module-utils@^2.6.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
@@ -24615,7 +24703,7 @@ tsutils@^2.29.0:
dependencies:
tslib "^1.8.1"
-tsutils@^3.17.1:
+tsutils@^3.17.1, tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==