diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index c6898fd8da..31d1a2e4a1 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -6,7 +6,17 @@ body:
- type: markdown
attributes:
value: |
- Thanks for taking the time to fill out this bug report!
+ Thanks for taking the time to fill out this bug report! Using this template makes it a lot easier for us to diagnose your problem, so please fill in as many fields as possible.
+
+ - type: textarea
+ id: description
+ attributes:
+ label: Summary
+ description: A short description of the problem
+ placeholder: |
+ Include what you expected to happen, and what actually happened.
+ validations:
+ required: true
- type: textarea
id: steps-to-reproduce
attributes:
@@ -59,7 +69,7 @@ body:
- type: textarea
id: netlify-toml
attributes:
- label: Your `netlify.toml` file
+ label: Your netlify.toml file
description: (If you're using file-based config) Please provide a copy of your `netlify.toml` file.
value: |
@@ -72,9 +82,39 @@ body:
- type: textarea
- id: logs
+ id: redirects-file
+ attributes:
+ label: Your public/_redirects file
+ description: Please provide a copy of your `_redirects` file if you have one.
+ value: |
+
+ `_redirects`
+
+ ```toml
+ # Paste content of your `_redirects` file here
+ ```
+
+
+
+ - type: textarea
+ id: next-config
+ attributes:
+ label: Your `next.config.js` file
+ description: Please provide a copy of your `next.config.js` file.
+ value: |
+
+ `next.config.js`
+
+ ```toml
+ # Paste content of your `next.config.js` file here. Check there is no private info in there.
+ ```
+
+
+
+ - type: textarea
+ id: build-logs
attributes:
- label: Relevant log output (or link to your logs)
+ label: Builds logs (or link to your logs)
value: |
Build logs
@@ -84,3 +124,36 @@ body:
```
+
+ - type: textarea
+ id: function-logs
+ attributes:
+ label: Function logs
+ description: If it is a runtime error, please provide a copy of the relevant function logs.
+ value: |
+
+ Function logs
+
+ ```
+ # Paste logs here
+ ```
+
+
+
+ - type: textarea
+
+ id: next-build
+ attributes:
+ label: .next JSON files
+ description:
+ (e.g. `.next/required-server-files.json`, `.next/routes-manifest.json` and `.next/prerender-manifest.json`).
+ value: |
+
+ generated .next JSON files
+
+ ```
+ # Paste file contents here. Please check there isn't any private info in them
+ # You can either build locally, or download the deploy from Netlify by clicking the arrow next to the deploy time.
+ ```
+
+
diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml
index d49f8a897d..fb6dba4af6 100644
--- a/.github/workflows/release-please.yml
+++ b/.github/workflows/release-please.yml
@@ -27,6 +27,9 @@ jobs:
check-latest: true
registry-url: 'https://registry.npmjs.org'
if: ${{ steps.release.outputs.release_created }}
+ - name: Install dependencies
+ run: npm ci
+ if: ${{ steps.release.outputs.releases_created }}
- run: npm publish
if: ${{ steps.release.outputs.release_created }}
env:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fd33d2f7b9..0abe072377 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,17 @@
# Changelog
+## [4.1.0](https://www.github.com/netlify/netlify-plugin-nextjs/compare/v4.0.0...v4.1.0) (2021-12-17)
+
+
+### Features
+
+* add support for use with `next export` ([#1012](https://www.github.com/netlify/netlify-plugin-nextjs/issues/1012)) ([76edc53](https://www.github.com/netlify/netlify-plugin-nextjs/commit/76edc5324d89adfad8c43a654ecec7719861e2b4))
+
+
+### Bug Fixes
+
+* prevent infinite loop when `/` is ISR ([#1020](https://www.github.com/netlify/netlify-plugin-nextjs/issues/1020)) ([55b18e6](https://www.github.com/netlify/netlify-plugin-nextjs/commit/55b18e6e4ea9424e896b860502d645513112c4f3))
+
## [4.0.0](https://www.github.com/netlify/netlify-plugin-nextjs/compare/v4.0.0-rc.2...v4.0.0) (2021-12-14)
This is a full rewrite of the Essential Next.js plugin, with a new architecture that gives greater compatibility and
diff --git a/README.md b/README.md
index 7be0dda210..97db72e69a 100644
--- a/README.md
+++ b/README.md
@@ -76,6 +76,15 @@ If you are using Nx, then you will need to point `publish` to the folder inside
The Essential Next.js plugin now fully supports ISR on Netlify. For more details see
[the ISR docs](https://github.com/netlify/netlify-plugin-nextjs/blob/main/docs/isr.md).
+## Use with `next export`
+
+If you are using `next export` to generate a static site, you do not need most of the functionality of this plugin and
+you can remove it. Alternatively you can
+[set the environment variable](https://docs.netlify.com/configure-builds/environment-variables/)
+`NETLIFY_NEXT_PLUGIN_SKIP` to `true` and the plugin will handle caching but won't generate any functions for SSR
+support. See [`demos/next-export`](https://github.com/netlify/netlify-plugin-nextjs/tree/main/demos/next-export) for an
+example.
+
## Feedback
If you think you have found a bug in the plugin,
diff --git a/demos/next-export/.eslintrc b/demos/next-export/.eslintrc
new file mode 100644
index 0000000000..abd5579b49
--- /dev/null
+++ b/demos/next-export/.eslintrc
@@ -0,0 +1,4 @@
+{
+ "extends": "next",
+ "root": true
+}
diff --git a/demos/next-export/.gitignore b/demos/next-export/.gitignore
new file mode 100644
index 0000000000..1437c53f70
--- /dev/null
+++ b/demos/next-export/.gitignore
@@ -0,0 +1,34 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+# vercel
+.vercel
diff --git a/demos/next-export/README.md b/demos/next-export/README.md
new file mode 100644
index 0000000000..5bf45f2878
--- /dev/null
+++ b/demos/next-export/README.md
@@ -0,0 +1,2 @@
+This is an example of a site that uses `next export`. It only uses the plugin for cache handling and sets
+`NETLIFY_NEXT_PLUGIN_SKIP` to disable everything else.
diff --git a/demos/next-export/local-plugin/index.js b/demos/next-export/local-plugin/index.js
new file mode 100644
index 0000000000..9e852e382e
--- /dev/null
+++ b/demos/next-export/local-plugin/index.js
@@ -0,0 +1 @@
+module.exports = require('../../../lib')
diff --git a/demos/next-export/local-plugin/manifest.yml b/demos/next-export/local-plugin/manifest.yml
new file mode 100644
index 0000000000..7091f91411
--- /dev/null
+++ b/demos/next-export/local-plugin/manifest.yml
@@ -0,0 +1 @@
+name: '@netlify/plugin-nextjs-local'
diff --git a/demos/next-export/local-plugin/package-lock.json b/demos/next-export/local-plugin/package-lock.json
new file mode 100644
index 0000000000..11a2e6611e
--- /dev/null
+++ b/demos/next-export/local-plugin/package-lock.json
@@ -0,0 +1,5 @@
+{
+ "name": "local-plugin",
+ "version": "1.0.0",
+ "lockfileVersion": 1
+}
diff --git a/demos/next-export/local-plugin/package.json b/demos/next-export/local-plugin/package.json
new file mode 100644
index 0000000000..d692119a5b
--- /dev/null
+++ b/demos/next-export/local-plugin/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "local-plugin",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "preinstall": "cd ../../.. && npm i"
+ },
+ "author": "",
+ "license": "ISC"
+}
diff --git a/demos/next-export/netlify.toml b/demos/next-export/netlify.toml
new file mode 100644
index 0000000000..4983d3f911
--- /dev/null
+++ b/demos/next-export/netlify.toml
@@ -0,0 +1,16 @@
+[build]
+command = "next build && next export"
+publish = "out"
+ignore = "git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF ../../"
+
+[build.environment]
+NETLIFY_NEXT_PLUGIN_SKIP = "true"
+
+[dev]
+framework = "#static"
+
+[[plugins]]
+package = "./local-plugin"
+
+[[plugins]]
+package = "@netlify/plugin-local-install-core"
diff --git a/demos/next-export/next.config.js b/demos/next-export/next.config.js
new file mode 100644
index 0000000000..b6c5f701fc
--- /dev/null
+++ b/demos/next-export/next.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ // Configurable site features we support:
+ // distDir: 'build',
+ generateBuildId: () => 'build-id',
+}
diff --git a/demos/next-export/pages/_app.js b/demos/next-export/pages/_app.js
new file mode 100644
index 0000000000..1e1cec9242
--- /dev/null
+++ b/demos/next-export/pages/_app.js
@@ -0,0 +1,7 @@
+import '../styles/globals.css'
+
+function MyApp({ Component, pageProps }) {
+ return
+}
+
+export default MyApp
diff --git a/demos/next-export/pages/another.js b/demos/next-export/pages/another.js
new file mode 100644
index 0000000000..e9cebb8bfd
--- /dev/null
+++ b/demos/next-export/pages/another.js
@@ -0,0 +1,22 @@
+import Head from 'next/head'
+import { useRouter } from 'next/router'
+import styles from '../styles/Home.module.css'
+
+export default function Home() {
+ const { locale } = useRouter()
+ return (
+
+
+
Create Next App
+
+
+
+
+
+ Another page
+
+
+
+
+ )
+}
diff --git a/demos/next-export/pages/index.js b/demos/next-export/pages/index.js
new file mode 100644
index 0000000000..e860ce871b
--- /dev/null
+++ b/demos/next-export/pages/index.js
@@ -0,0 +1,45 @@
+import Head from 'next/head'
+import { useRouter } from 'next/router'
+import styles from '../styles/Home.module.css'
+
+export default function Home() {
+ const { locale } = useRouter()
+ return (
+
+
+
Create Next App
+
+
+
+
+
+
+
+ The current locale is {locale}
+
+
+ Get started by editing pages/index.js
+
+
+
+
+
+ )
+}
diff --git a/demos/next-export/public/favicon.ico b/demos/next-export/public/favicon.ico
new file mode 100644
index 0000000000..4965832f2c
Binary files /dev/null and b/demos/next-export/public/favicon.ico differ
diff --git a/demos/next-export/styles/Home.module.css b/demos/next-export/styles/Home.module.css
new file mode 100644
index 0000000000..35454bb748
--- /dev/null
+++ b/demos/next-export/styles/Home.module.css
@@ -0,0 +1,121 @@
+.container {
+ min-height: 100vh;
+ padding: 0 0.5rem;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ height: 100vh;
+}
+
+.main {
+ padding: 5rem 0;
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.footer {
+ width: 100%;
+ height: 100px;
+ border-top: 1px solid #eaeaea;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.footer a {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-grow: 1;
+}
+
+.title a {
+ color: #0070f3;
+ text-decoration: none;
+}
+
+.title a:hover,
+.title a:focus,
+.title a:active {
+ text-decoration: underline;
+}
+
+.title {
+ margin: 0;
+ line-height: 1.15;
+ font-size: 4rem;
+}
+
+.title,
+.description {
+ text-align: center;
+}
+
+.description {
+ line-height: 1.5;
+ font-size: 1.5rem;
+}
+
+.code {
+ background: #fafafa;
+ border-radius: 5px;
+ padding: 0.75rem;
+ font-size: 1.1rem;
+ font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono,
+ Bitstream Vera Sans Mono, Courier New, monospace;
+}
+
+.grid {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-wrap: wrap;
+ max-width: 800px;
+ margin-top: 3rem;
+}
+
+.card {
+ margin: 1rem;
+ padding: 1.5rem;
+ text-align: left;
+ color: inherit;
+ text-decoration: none;
+ border: 1px solid #eaeaea;
+ border-radius: 10px;
+ transition: color 0.15s ease, border-color 0.15s ease;
+ width: 45%;
+}
+
+.card:hover,
+.card:focus,
+.card:active {
+ color: #0070f3;
+ border-color: #0070f3;
+}
+
+.card h2 {
+ margin: 0 0 1rem 0;
+ font-size: 1.5rem;
+}
+
+.card p {
+ margin: 0;
+ font-size: 1.25rem;
+ line-height: 1.5;
+}
+
+.logo {
+ height: 1em;
+ margin-left: 0.5rem;
+}
+
+@media (max-width: 600px) {
+ .grid {
+ width: 100%;
+ flex-direction: column;
+ }
+}
diff --git a/demos/next-export/styles/globals.css b/demos/next-export/styles/globals.css
new file mode 100644
index 0000000000..e5e2dcc23b
--- /dev/null
+++ b/demos/next-export/styles/globals.css
@@ -0,0 +1,16 @@
+html,
+body {
+ padding: 0;
+ margin: 0;
+ font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
+ Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
+}
+
+a {
+ color: inherit;
+ text-decoration: none;
+}
+
+* {
+ box-sizing: border-box;
+}
diff --git a/demos/nx-next-monorepo-demo/package-lock.json b/demos/nx-next-monorepo-demo/package-lock.json
index d966f0f1db..18aaff47f8 100644
--- a/demos/nx-next-monorepo-demo/package-lock.json
+++ b/demos/nx-next-monorepo-demo/package-lock.json
@@ -333,9 +333,9 @@
}
},
"@babel/parser": {
- "version": "7.16.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.5.tgz",
- "integrity": "sha512-+Ce7T5iPNWzfu9C1aB5tN3Lyafs5xb3Ic7vBWyZL2KXT3QSdD1dD3CvgOzPmQKoNNRt6uauc0XwNJTQtXC2/Mw=="
+ "version": "7.16.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz",
+ "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ=="
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.16.2",
@@ -1253,23 +1253,13 @@
}
},
"@cypress/webpack-preprocessor": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.10.0.tgz",
- "integrity": "sha512-KzcDBjos3rIw58imyvATYTNi9CB+Co0SFUhexmuH2c+Wk1ksSM3g4XmxUUIaJJvDwmIK4tcoBMYd9Lzle8bR7A==",
+ "version": "5.11.0",
+ "resolved": "https://registry.npmjs.org/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.11.0.tgz",
+ "integrity": "sha512-0VMEodVAOkYYhCGKQ2wilI28RtISc3rCre9wlFhishwtnT0B1onJJ8fwhWmcT3Y2/K88WP+cyVO2ZaQPcsEFQg==",
"requires": {
- "bluebird": "^3.7.1",
- "debug": "4.3.2",
+ "bluebird": "3.7.1",
+ "debug": "^4.3.2",
"lodash": "^4.17.20"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
- "requires": {
- "ms": "2.1.2"
- }
- }
}
},
"@cypress/xvfb": {
@@ -1396,6 +1386,11 @@
"slash": "^3.0.0"
},
"dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"jest-util": {
"version": "27.4.2",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz",
@@ -1587,6 +1582,13 @@
"@jest/types": "^27.4.2",
"@types/node": "*",
"jest-mock": "^27.4.2"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ }
}
},
"@jest/fake-timers": {
@@ -1602,6 +1604,11 @@
"jest-util": "^27.4.2"
},
"dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"jest-util": {
"version": "27.4.2",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz",
@@ -1739,6 +1746,11 @@
"write-file-atomic": "^3.0.0"
},
"dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"jest-util": {
"version": "27.4.2",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz",
@@ -1769,6 +1781,13 @@
"@types/node": "*",
"@types/yargs": "^16.0.0",
"chalk": "^4.0.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ }
}
},
"@napi-rs/triples": {
@@ -2277,53 +2296,6 @@
"url-loader": "^4.1.1",
"webpack": "^5.58.1",
"webpack-merge": "^5.8.0"
- },
- "dependencies": {
- "doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "eslint-plugin-react": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz",
- "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==",
- "requires": {
- "array-includes": "^3.1.4",
- "array.prototype.flatmap": "^1.2.5",
- "doctrine": "^2.1.0",
- "estraverse": "^5.3.0",
- "jsx-ast-utils": "^2.4.1 || ^3.0.0",
- "minimatch": "^3.0.4",
- "object.entries": "^1.1.5",
- "object.fromentries": "^2.0.5",
- "object.hasown": "^1.1.0",
- "object.values": "^1.1.5",
- "prop-types": "^15.7.2",
- "resolve": "^2.0.0-next.3",
- "semver": "^6.3.0",
- "string.prototype.matchall": "^4.0.6"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- }
- }
- },
- "resolve": {
- "version": "2.0.0-next.3",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
- "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
- "requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- }
- }
}
},
"@nrwl/storybook": {
@@ -3167,9 +3139,9 @@
}
},
"@types/eslint-scope": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz",
- "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.2.tgz",
+ "integrity": "sha512-TzgYCWoPiTeRg6RQYgtuW7iODtVoKu3RVL72k3WohqhjfaOLK5Mg2T4Tg1o2bSfu0vPkoI48wdQFv5b/Xe04wQ==",
"requires": {
"@types/eslint": "*",
"@types/estree": "*"
@@ -3186,6 +3158,13 @@
"integrity": "sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==",
"requires": {
"@types/node": "*"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ }
}
},
"@types/glob": {
@@ -3195,6 +3174,13 @@
"requires": {
"@types/minimatch": "*",
"@types/node": "*"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ }
}
},
"@types/graceful-fs": {
@@ -3203,14 +3189,28 @@
"integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==",
"requires": {
"@types/node": "*"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ }
}
},
"@types/http-proxy": {
- "version": "1.17.7",
- "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz",
- "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==",
+ "version": "1.17.8",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz",
+ "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==",
"requires": {
"@types/node": "*"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ }
}
},
"@types/istanbul-lib-coverage": {
@@ -3262,7 +3262,8 @@
"@types/node": {
"version": "16.11.12",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz",
- "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw=="
+ "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==",
+ "dev": true
},
"@types/npmlog": {
"version": "4.1.3",
@@ -3325,6 +3326,13 @@
"integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
"requires": {
"@types/node": "*"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ }
}
},
"@types/retry": {
@@ -3376,6 +3384,11 @@
"source-map": "^0.6.1"
},
"dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -4492,9 +4505,9 @@
"dev": true
},
"bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz",
+ "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg=="
},
"bn.js": {
"version": "5.2.0",
@@ -4502,27 +4515,22 @@
"integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw=="
},
"body-parser": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
- "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz",
+ "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==",
"requires": {
- "bytes": "3.1.0",
+ "bytes": "3.1.1",
"content-type": "~1.0.4",
"debug": "2.6.9",
"depd": "~1.1.2",
- "http-errors": "1.7.2",
+ "http-errors": "1.8.1",
"iconv-lite": "0.4.24",
"on-finished": "~2.3.0",
- "qs": "6.7.0",
- "raw-body": "2.4.0",
- "type-is": "~1.6.17"
+ "qs": "6.9.6",
+ "raw-body": "2.4.2",
+ "type-is": "~1.6.18"
},
"dependencies": {
- "bytes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
- },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -4537,9 +4545,9 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"qs": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
- "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
+ "version": "6.9.6",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz",
+ "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ=="
}
}
},
@@ -4663,9 +4671,9 @@
}
},
"browserslist": {
- "version": "4.19.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.0.tgz",
- "integrity": "sha512-JGHzm73ei2OnAcobcQ61GXNnN6vDCg5Oz5MayudL+FyzjoLnCzUWnuLtDLMIYw8aXgQzzdCZMVky+fftD5jbtA==",
+ "version": "4.19.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz",
+ "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==",
"requires": {
"caniuse-lite": "^1.0.30001286",
"electron-to-chromium": "^1.4.17",
@@ -4773,9 +4781,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30001286",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz",
- "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ=="
+ "version": "1.0.30001287",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001287.tgz",
+ "integrity": "sha512-4udbs9bc0hfNrcje++AxBuc6PfLNHwh3PO9kbwnfCQWyqtlzg3py0YgFu8jyRTTo85VAz4U+VLxSlID09vNtWA=="
},
"caseless": {
"version": "0.12.0",
@@ -5036,9 +5044,9 @@
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
},
"colord": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz",
- "integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw=="
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz",
+ "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ=="
},
"colorette": {
"version": "1.4.0",
@@ -5142,9 +5150,9 @@
}
},
"confusing-browser-globals": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz",
- "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==",
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
+ "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
"dev": true
},
"connect-history-api-fallback": {
@@ -5163,11 +5171,18 @@
"integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U="
},
"content-disposition": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
- "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
"requires": {
- "safe-buffer": "5.1.2"
+ "safe-buffer": "5.2.1"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+ }
}
},
"content-type": {
@@ -5184,9 +5199,9 @@
}
},
"cookie": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
- "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
},
"cookie-signature": {
"version": "1.0.6",
@@ -5227,16 +5242,16 @@
}
},
"core-js": {
- "version": "3.19.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.3.tgz",
- "integrity": "sha512-LeLBMgEGSsG7giquSzvgBrTS7V5UL6ks3eQlUSbN8dJStlLFiRzUm5iqsRyzUB8carhfKjkJ2vzKqE6z1Vga9g=="
+ "version": "3.20.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.0.tgz",
+ "integrity": "sha512-KjbKU7UEfg4YPpskMtMXPhUKn7m/1OdTHTVjy09ScR2LVaoUXe8Jh0UdvN2EKUR6iKTJph52SJP95mAB0MnVLQ=="
},
"core-js-compat": {
- "version": "3.19.3",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.3.tgz",
- "integrity": "sha512-59tYzuWgEEVU9r+SRgceIGXSSUn47JknoiXW6Oq7RW8QHjXWz3/vp8pa7dbtuVu40sewz3OP3JmQEcDdztrLhA==",
+ "version": "3.20.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.0.tgz",
+ "integrity": "sha512-relrah5h+sslXssTTOkvqcC/6RURifB0W5yhYBdBkaPYa5/2KBMiog3XiD+s3TwEHWxInWVv4Jx2/Lw0vng+IQ==",
"requires": {
- "browserslist": "^4.18.1",
+ "browserslist": "^4.19.1",
"semver": "7.0.0"
},
"dependencies": {
@@ -5248,9 +5263,9 @@
}
},
"core-js-pure": {
- "version": "3.19.3",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.3.tgz",
- "integrity": "sha512-N3JruInmCyt7EJj5mAq3csCgGYgiSqu7p7TQp2KOztr180/OAIxyIvL1FCjzgmQk/t3Yniua50Fsak7FShI9lA=="
+ "version": "3.20.0",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.0.tgz",
+ "integrity": "sha512-qsrbIwWSEEYOM7z616jAVgwhuDDtPLwZSpUsU3vyUkHYqKTf/uwOJBZg2V7lMurYWkpVlaVOxBrfX0Q3ppvjfg=="
},
"core-util-is": {
"version": "1.0.3",
@@ -5404,9 +5419,9 @@
}
},
"css-minimizer-webpack-plugin": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.2.0.tgz",
- "integrity": "sha512-5q4myvkmm29jRlI73Fl8Mc008i6o6hCEKnV6/fOrzRVDWD6EFGwDRX+SM2qCVeZ7XiztRDKHpTGDUeUMAOOagg==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.3.0.tgz",
+ "integrity": "sha512-+SU5aHgGZkk2kxKsq/BZXnYee2cjHIiFARF2gGaG6gIFtLJ87330GeafqhxAemwi/WgQ40v0OQ7pBVljKAMoXg==",
"requires": {
"@types/cssnano": "^4.0.1",
"cssnano": "^5.0.6",
@@ -5475,15 +5490,15 @@
}
},
"css-select": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
- "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.0.tgz",
+ "integrity": "sha512-6YVG6hsH9yIb/si3Th/is8Pex7qnVHO6t7q7U6TIUnkQASGbS8tnUDBftnPynLNnuUl/r2+PTd0ekiiq7R0zJw==",
"requires": {
"boolbase": "^1.0.0",
- "css-what": "^5.0.0",
- "domhandler": "^4.2.0",
- "domutils": "^2.6.0",
- "nth-check": "^2.0.0"
+ "css-what": "^5.1.0",
+ "domhandler": "^4.3.0",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
}
},
"css-select-base-adapter": {
@@ -5523,25 +5538,25 @@
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
},
"cssnano": {
- "version": "5.0.12",
- "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.12.tgz",
- "integrity": "sha512-U38V4x2iJ3ijPdeWqUrEr4eKBB5PbEKsNP5T8xcik2Au3LeMtiMHX0i2Hu9k51FcKofNZumbrcdC6+a521IUHg==",
+ "version": "5.0.13",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.13.tgz",
+ "integrity": "sha512-cAmLruIF28a7vKIOieXCTrllaLwbouxV1PPi8Z4M+XloXbmeooWAu4KhJgASo4vQUwbs2pqDgAlnZ1ZKJZKtuw==",
"requires": {
- "cssnano-preset-default": "^5.1.8",
+ "cssnano-preset-default": "^5.1.9",
"is-resolvable": "^1.1.0",
"lilconfig": "^2.0.3",
"yaml": "^1.10.2"
}
},
"cssnano-preset-default": {
- "version": "5.1.8",
- "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.8.tgz",
- "integrity": "sha512-zWMlP0+AMPBVE852SqTrP0DnhTcTA2C1wAF92TKZ3Va+aUVqLIhkqKlnJIXXdqXD7RN+S1ujuWmNpvrJBiM/vg==",
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.9.tgz",
+ "integrity": "sha512-RhkEucqlQ+OxEi14K1p8gdXcMQy1mSpo7P1oC44oRls7BYIj8p+cht4IFBFV3W4iOjTP8EUB33XV1fX9KhDzyA==",
"requires": {
"css-declaration-sorter": "^6.0.3",
"cssnano-utils": "^2.0.1",
"postcss-calc": "^8.0.0",
- "postcss-colormin": "^5.2.1",
+ "postcss-colormin": "^5.2.2",
"postcss-convert-values": "^5.0.2",
"postcss-discard-comments": "^5.0.1",
"postcss-discard-duplicates": "^5.0.1",
@@ -5560,7 +5575,7 @@
"postcss-normalize-string": "^5.0.1",
"postcss-normalize-timing-functions": "^5.0.1",
"postcss-normalize-unicode": "^5.0.1",
- "postcss-normalize-url": "^5.0.3",
+ "postcss-normalize-url": "^5.0.4",
"postcss-normalize-whitespace": "^5.0.1",
"postcss-ordered-values": "^5.0.2",
"postcss-reduce-initial": "^5.0.2",
@@ -5675,9 +5690,15 @@
},
"dependencies": {
"@types/node": {
- "version": "14.18.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.0.tgz",
- "integrity": "sha512-0GeIl2kmVMXEnx8tg1SlG6Gg8vkqirrW752KqolYo1PHevhhZN3bhJ67qHj+bQaINhX0Ra3TlWwRvMCd9iEfNQ==",
+ "version": "14.18.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.1.tgz",
+ "integrity": "sha512-fTFWOFrgAkj737w1o0HLTIgisgYHnsZfeiqhG1Ltrf/iJjudEbUwetQAsfrtVE49JGwvpEzQR+EbMkIqG4227g==",
+ "dev": true
+ },
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
"dev": true
},
"commander": {
@@ -6067,9 +6088,9 @@
}
},
"electron-to-chromium": {
- "version": "1.4.17",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.17.tgz",
- "integrity": "sha512-zhk1MravPtq/KBhmGB7TLBILmXTgRG9TFSI3qS3DbgyfHzIl72iiTE37r/BHIbPCJJlWIo5rySyxiH4vWhu2ZA=="
+ "version": "1.4.22",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.22.tgz",
+ "integrity": "sha512-IiW8cV8eyjMhuWqk9wwHRPOVN+5Fa7NHOTjogrwg2H9TNiLVA8ywjOJnVKoywaqUHryDUOpK7Mg6P1FETisi0g=="
},
"elliptic": {
"version": "6.5.4",
@@ -6504,49 +6525,6 @@
"@typescript-eslint/typescript-estree": "5.7.0",
"debug": "^4.3.2"
}
- },
- "doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "eslint-plugin-react": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz",
- "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==",
- "requires": {
- "array-includes": "^3.1.4",
- "array.prototype.flatmap": "^1.2.5",
- "doctrine": "^2.1.0",
- "estraverse": "^5.3.0",
- "jsx-ast-utils": "^2.4.1 || ^3.0.0",
- "minimatch": "^3.0.4",
- "object.entries": "^1.1.5",
- "object.fromentries": "^2.0.5",
- "object.hasown": "^1.1.0",
- "object.values": "^1.1.5",
- "prop-types": "^15.7.2",
- "resolve": "^2.0.0-next.3",
- "semver": "^6.3.0",
- "string.prototype.matchall": "^4.0.6"
- }
- },
- "resolve": {
- "version": "2.0.0-next.3",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
- "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
- "requires": {
- "is-core-module": "^2.2.0",
- "path-parse": "^1.0.6"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
}
}
},
@@ -6737,32 +6715,30 @@
}
},
"eslint-plugin-react": {
- "version": "7.26.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz",
- "integrity": "sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==",
- "dev": true,
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz",
+ "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==",
"requires": {
- "array-includes": "^3.1.3",
- "array.prototype.flatmap": "^1.2.4",
+ "array-includes": "^3.1.4",
+ "array.prototype.flatmap": "^1.2.5",
"doctrine": "^2.1.0",
- "estraverse": "^5.2.0",
+ "estraverse": "^5.3.0",
"jsx-ast-utils": "^2.4.1 || ^3.0.0",
"minimatch": "^3.0.4",
- "object.entries": "^1.1.4",
- "object.fromentries": "^2.0.4",
- "object.hasown": "^1.0.0",
- "object.values": "^1.1.4",
+ "object.entries": "^1.1.5",
+ "object.fromentries": "^2.0.5",
+ "object.hasown": "^1.1.0",
+ "object.values": "^1.1.5",
"prop-types": "^15.7.2",
"resolve": "^2.0.0-next.3",
"semver": "^6.3.0",
- "string.prototype.matchall": "^4.0.5"
+ "string.prototype.matchall": "^4.0.6"
},
"dependencies": {
"doctrine": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
"requires": {
"esutils": "^2.0.2"
}
@@ -6771,7 +6747,6 @@
"version": "2.0.0-next.3",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
"integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
- "dev": true,
"requires": {
"is-core-module": "^2.2.0",
"path-parse": "^1.0.6"
@@ -6780,8 +6755,7 @@
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
}
}
},
@@ -6973,16 +6947,16 @@
}
},
"express": {
- "version": "4.17.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
- "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+ "version": "4.17.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz",
+ "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==",
"requires": {
"accepts": "~1.3.7",
"array-flatten": "1.1.1",
- "body-parser": "1.19.0",
- "content-disposition": "0.5.3",
+ "body-parser": "1.19.1",
+ "content-disposition": "0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.4.0",
+ "cookie": "0.4.1",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "~1.1.2",
@@ -6996,13 +6970,13 @@
"on-finished": "~2.3.0",
"parseurl": "~1.3.3",
"path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.5",
- "qs": "6.7.0",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.9.6",
"range-parser": "~1.2.1",
- "safe-buffer": "5.1.2",
- "send": "0.17.1",
- "serve-static": "1.14.1",
- "setprototypeof": "1.1.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.17.2",
+ "serve-static": "1.14.2",
+ "setprototypeof": "1.2.0",
"statuses": "~1.5.0",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
@@ -7028,9 +7002,14 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"qs": {
- "version": "6.7.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
- "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
+ "version": "6.9.6",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz",
+ "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ=="
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
}
}
},
@@ -7729,22 +7708,15 @@
"integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc="
},
"http-errors": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
- "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
"requires": {
"depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
"statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
- },
- "dependencies": {
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- }
+ "toidentifier": "1.0.1"
}
},
"http-parser-js": {
@@ -7976,11 +7948,6 @@
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz",
"integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng=="
},
- "is-absolute-url": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
- "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q=="
- },
"is-arguments": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
@@ -8618,6 +8585,11 @@
"collect-v8-coverage": "^1.0.0"
}
},
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"jest-util": {
"version": "27.4.2",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz",
@@ -8709,6 +8681,11 @@
"pretty-format": "^27.4.2"
},
"dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"jest-util": {
"version": "27.4.2",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz",
@@ -8738,6 +8715,11 @@
"jsdom": "^16.6.0"
},
"dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"jest-util": {
"version": "27.4.2",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz",
@@ -8766,6 +8748,11 @@
"jest-util": "^27.4.2"
},
"dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"jest-util": {
"version": "27.4.2",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz",
@@ -8806,6 +8793,11 @@
"walker": "^1.0.7"
},
"dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"jest-util": {
"version": "27.4.2",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz",
@@ -8857,6 +8849,11 @@
"collect-v8-coverage": "^1.0.0"
}
},
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"jest-util": {
"version": "27.4.2",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz",
@@ -8915,6 +8912,13 @@
"requires": {
"@jest/types": "^27.4.2",
"@types/node": "*"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ }
}
},
"jest-pnp-resolver": {
@@ -8995,6 +8999,11 @@
"collect-v8-coverage": "^1.0.0"
}
},
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"jest-resolve": {
"version": "27.4.5",
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.5.tgz",
@@ -9071,6 +9080,11 @@
"collect-v8-coverage": "^1.0.0"
}
},
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -9175,6 +9189,13 @@
"requires": {
"@types/node": "*",
"graceful-fs": "^4.2.4"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ }
}
},
"jest-snapshot": {
@@ -9208,6 +9229,11 @@
"semver": "^7.3.2"
},
"dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"jest-resolve": {
"version": "27.4.5",
"resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.5.tgz",
@@ -9251,6 +9277,13 @@
"graceful-fs": "^4.2.4",
"is-ci": "^3.0.0",
"picomatch": "^2.2.3"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ }
}
},
"jest-validate": {
@@ -9326,6 +9359,11 @@
"supports-color": "^8.0.0"
},
"dependencies": {
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -10181,6 +10219,11 @@
"regenerator-runtime": "^0.13.4"
}
},
+ "@types/node": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
+ },
"acorn": {
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
@@ -10340,6 +10383,11 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
},
+ "setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+ },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -10353,6 +10401,11 @@
"safe-buffer": "~5.2.0"
}
},
+ "toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+ },
"watchpack": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.0.tgz",
@@ -10557,11 +10610,11 @@
},
"dependencies": {
"@nrwl/cli": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-13.3.2.tgz",
- "integrity": "sha512-Vcvw8TIMPtY28IiM9wchrM1mxEtNIIrQkvgOrxx4NMfz28HkH4x+kEjyQ3UUZHnPbFDggpYX0KHn5mtFJSG4XA==",
+ "version": "13.3.8",
+ "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-13.3.8.tgz",
+ "integrity": "sha512-6uRXGjqtObTnyzNCMRl51WRAFyREkWPrX5ipt7jMkRHkbyVhThBYfYK9BRdL2BZrofHM41c3tXXCmWCt/j4a6A==",
"requires": {
- "@nrwl/tao": "13.3.2",
+ "@nrwl/tao": "13.3.8",
"chalk": "4.1.0",
"enquirer": "~2.3.6",
"v8-compile-cache": "2.3.0",
@@ -10570,9 +10623,9 @@
}
},
"@nrwl/tao": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-13.3.2.tgz",
- "integrity": "sha512-MZfaWVG4+sjD1yahHEAHOeYph/YOmeuhsVPfkw5iGAMDZnOgMzI7pcxH4JqR50weTpwOIVWQxB/eugp1Icuaqg==",
+ "version": "13.3.8",
+ "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-13.3.8.tgz",
+ "integrity": "sha512-2YTOp1d1oOrzAMHsIMuOXJfbjORwsE/OVBIivcQCkTbrc7wiG+IRZWPgEc4di7bhsergCMxXlSFt1dmR8UZIZw==",
"requires": {
"chalk": "4.1.0",
"enquirer": "~2.3.6",
@@ -10580,7 +10633,7 @@
"fs-extra": "^9.1.0",
"ignore": "^5.0.4",
"jsonc-parser": "3.0.0",
- "nx": "13.3.2",
+ "nx": "13.3.8",
"rxjs": "^6.5.4",
"rxjs-for-await": "0.0.2",
"semver": "7.3.4",
@@ -10590,11 +10643,11 @@
},
"dependencies": {
"nx": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/nx/-/nx-13.3.2.tgz",
- "integrity": "sha512-7zESkiQ5kmzKuT04k5X/osyCNrGYCGjn1KsreQhv2PeClc461U5dGwEHiiPZC80RqAsO6LL4jCx5MLVAE7arJg==",
+ "version": "13.3.8",
+ "resolved": "https://registry.npmjs.org/nx/-/nx-13.3.8.tgz",
+ "integrity": "sha512-cN3KNSpk+5xsRkh3nZoeggoAK2UnUNJr5ges62TggEclsWgdY7XADW5DL3un5+Cfk+DAseu6kTE7tKSpjd+aFA==",
"requires": {
- "@nrwl/cli": "13.3.2"
+ "@nrwl/cli": "13.3.8"
}
}
}
@@ -11026,14 +11079,14 @@
}
},
"postcss-colormin": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz",
- "integrity": "sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.2.tgz",
+ "integrity": "sha512-tSEe3NpqWARUTidDlF0LntPkdlhXqfDFuA1yslqpvvGAfpZ7oBaw+/QXd935NKm2U9p4PED0HDZlzmMk7fVC6g==",
"requires": {
"browserslist": "^4.16.6",
"caniuse-api": "^3.0.0",
"colord": "^2.9.1",
- "postcss-value-parser": "^4.1.0"
+ "postcss-value-parser": "^4.2.0"
}
},
"postcss-convert-values": {
@@ -11294,13 +11347,12 @@
}
},
"postcss-normalize-url": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.3.tgz",
- "integrity": "sha512-qWiUMbvkRx3kc1Dp5opzUwc7MBWZcSDK2yofCmdvFBCpx+zFPkxBC1FASQ59Pt+flYfj/nTZSkmF56+XG5elSg==",
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.4.tgz",
+ "integrity": "sha512-cNj3RzK2pgQQyNp7dzq0dqpUpQ/wYtdDZM3DepPmFjCmYIfceuD9VIAcOdvrNetjIU65g1B4uwdP/Krf6AFdXg==",
"requires": {
- "is-absolute-url": "^3.0.3",
"normalize-url": "^6.0.1",
- "postcss-value-parser": "^4.1.0"
+ "postcss-value-parser": "^4.2.0"
}
},
"postcss-normalize-whitespace": {
@@ -11590,21 +11642,14 @@
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
},
"raw-body": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
- "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz",
+ "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==",
"requires": {
- "bytes": "3.1.0",
- "http-errors": "1.7.2",
+ "bytes": "3.1.1",
+ "http-errors": "1.8.1",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
- },
- "dependencies": {
- "bytes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
- }
}
},
"raw-loader": {
@@ -12248,9 +12293,9 @@
}
},
"send": {
- "version": "0.17.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
- "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+ "version": "0.17.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
+ "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==",
"requires": {
"debug": "2.6.9",
"depd": "~1.1.2",
@@ -12259,9 +12304,9 @@
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
- "http-errors": "~1.7.2",
+ "http-errors": "1.8.1",
"mime": "1.6.0",
- "ms": "2.1.1",
+ "ms": "2.1.3",
"on-finished": "~2.3.0",
"range-parser": "~1.2.1",
"statuses": "~1.5.0"
@@ -12283,9 +12328,9 @@
}
},
"ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
}
}
},
@@ -12348,14 +12393,14 @@
}
},
"serve-static": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
- "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+ "version": "1.14.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz",
+ "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==",
"requires": {
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"parseurl": "~1.3.3",
- "send": "0.17.1"
+ "send": "0.17.2"
}
},
"set-blocking": {
@@ -12369,9 +12414,9 @@
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
},
"setprototypeof": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
- "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"sha.js": {
"version": "2.4.11",
@@ -13106,11 +13151,11 @@
}
},
"terser-webpack-plugin": {
- "version": "5.2.5",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz",
- "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==",
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz",
+ "integrity": "sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ==",
"requires": {
- "jest-worker": "^27.0.6",
+ "jest-worker": "^27.4.1",
"schema-utils": "^3.1.1",
"serialize-javascript": "^6.0.0",
"source-map": "^0.6.1",
@@ -13233,9 +13278,9 @@
}
},
"toidentifier": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
- "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
},
"tough-cookie": {
"version": "4.0.0",
@@ -13761,9 +13806,9 @@
}
},
"webpack-dev-middleware": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.2.tgz",
- "integrity": "sha512-DjZyYrsHhkikAFNvSNKrpnziXukU1EChFAh9j4LAm6ndPLPW8cN0KhM7T+RAiOqsQ6ABfQ8hoKIs9IWMTjov+w==",
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz",
+ "integrity": "sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==",
"requires": {
"colorette": "^2.0.10",
"memfs": "^3.2.2",
diff --git a/demos/nx-next-monorepo-demo/package.json b/demos/nx-next-monorepo-demo/package.json
index 29a9dbb9bc..a976cbc477 100644
--- a/demos/nx-next-monorepo-demo/package.json
+++ b/demos/nx-next-monorepo-demo/package.json
@@ -44,7 +44,7 @@
"eslint-plugin-cypress": "^2.10.3",
"eslint-plugin-import": "2.25.3",
"eslint-plugin-jsx-a11y": "6.5.1",
- "eslint-plugin-react": "7.26.1",
+ "eslint-plugin-react": "7.27.1",
"eslint-plugin-react-hooks": "4.3.0",
"jest": "27.4.4",
"prettier": "^2.3.1",
diff --git a/package-lock.json b/package-lock.json
index ca42a2a105..ede6ea8256 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "@netlify/plugin-nextjs",
- "version": "4.0.0",
+ "version": "4.1.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -413,9 +413,9 @@
}
},
"@babel/parser": {
- "version": "7.16.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.5.tgz",
- "integrity": "sha512-+Ce7T5iPNWzfu9C1aB5tN3Lyafs5xb3Ic7vBWyZL2KXT3QSdD1dD3CvgOzPmQKoNNRt6uauc0XwNJTQtXC2/Mw==",
+ "version": "7.16.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz",
+ "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==",
"dev": true
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
@@ -2437,9 +2437,9 @@
}
},
"@mapbox/node-pre-gyp": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.7.tgz",
- "integrity": "sha512-PplSvl4pJ5N3BkVjAdDzpPhVUPdC73JgttkR+LnBx2OORC1GCQsBjUeEuipf9uOaAM1SbxcdZFfR3KDTKm2S0A==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz",
+ "integrity": "sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg==",
"dev": true,
"requires": {
"detect-libc": "^1.0.3",
@@ -2447,7 +2447,7 @@
"make-dir": "^3.1.0",
"node-fetch": "^2.6.5",
"nopt": "^5.0.0",
- "npmlog": "^6.0.0",
+ "npmlog": "^5.0.1",
"rimraf": "^3.0.2",
"semver": "^7.3.5",
"tar": "^6.1.11"
@@ -2470,16 +2470,16 @@
}
},
"gauge": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz",
- "integrity": "sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
+ "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
"dev": true,
"requires": {
- "ansi-regex": "^5.0.1",
"aproba": "^1.0.3 || ^2.0.0",
"color-support": "^1.1.2",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.1",
+ "object-assign": "^4.1.1",
"signal-exit": "^3.0.0",
"string-width": "^4.2.3",
"strip-ansi": "^6.0.1",
@@ -2493,14 +2493,14 @@
"dev": true
},
"npmlog": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz",
- "integrity": "sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
+ "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
"dev": true,
"requires": {
"are-we-there-yet": "^2.0.0",
"console-control-strings": "^1.1.0",
- "gauge": "^4.0.0",
+ "gauge": "^3.0.0",
"set-blocking": "^2.0.0"
}
},
@@ -2554,19 +2554,19 @@
"dev": true
},
"@netlify/build": {
- "version": "20.3.0",
- "resolved": "https://registry.npmjs.org/@netlify/build/-/build-20.3.0.tgz",
- "integrity": "sha512-uq/WYYZfPTaXnGWwVnjvN6bb1u2PqpYLNbZmde7oIr0Tw6A8jVaGvbktR7frvwSEaP5tqI6pmzPStoDgOKMy5w==",
+ "version": "25.0.1",
+ "resolved": "https://registry.npmjs.org/@netlify/build/-/build-25.0.1.tgz",
+ "integrity": "sha512-3+uNN3zeC3dQd8wlFfogc3dCTPoYlIYH/TycnrcMCnSZ8jhT5FMa9DV0LCcxgwAoEPud8ucpUcvD+GiO3n+q9g==",
"dev": true,
"requires": {
"@bugsnag/js": "^7.0.0",
- "@netlify/cache-utils": "^3.0.0",
- "@netlify/config": "^16.0.0",
- "@netlify/functions-utils": "^3.0.0",
- "@netlify/git-utils": "^3.0.0",
+ "@netlify/cache-utils": "^4.0.0",
+ "@netlify/config": "^17.0.0",
+ "@netlify/functions-utils": "^4.0.0",
+ "@netlify/git-utils": "^4.0.0",
"@netlify/plugin-edge-handlers": "^3.0.0",
- "@netlify/plugins-list": "^6.0.1",
- "@netlify/run-utils": "^3.0.0",
+ "@netlify/plugins-list": "^6.2.0",
+ "@netlify/run-utils": "^4.0.0",
"@netlify/zip-it-and-ship-it": "^5.2.0",
"@sindresorhus/slugify": "^1.1.0",
"ansi-escapes": "^4.3.2",
@@ -2766,9 +2766,9 @@
}
},
"@netlify/cache-utils": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@netlify/cache-utils/-/cache-utils-3.0.1.tgz",
- "integrity": "sha512-AY8brDn2LQEg0Q81Hnun3zNNe/yV4SFHUGriJDuHetxpfEicAlHnuNJuOeuxSxkPjYCIBwhtVBYpR8qP+9Q/4A==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@netlify/cache-utils/-/cache-utils-4.0.0.tgz",
+ "integrity": "sha512-8BNDYMkkrkmlfwNaSeRqOhGu8lETc2ixM6bmvDAXuE5TcNNAActWcWurocwS419HNwyTw1kSEUKLp6Vx5/wiBg==",
"dev": true,
"requires": {
"cpy": "^8.1.0",
@@ -2792,9 +2792,9 @@
}
},
"@netlify/config": {
- "version": "16.0.7",
- "resolved": "https://registry.npmjs.org/@netlify/config/-/config-16.0.7.tgz",
- "integrity": "sha512-/t7/F9WcLqXbOmHynZYZ5iMD8XqDNWyVjAu0XiwNsf4/wLBPN9kfjsOm/fYNi3MncLO03WA70iT7BCUzw2tnYQ==",
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@netlify/config/-/config-17.0.0.tgz",
+ "integrity": "sha512-nm6Xls6Q4CGQlnckBNczdSY6jF/X7lCOZCfULyFE/mRivLqQ46eZOUXDIWYMWMrxNozjMiRfiSrMvlbm8ZV2LA==",
"dev": true,
"requires": {
"chalk": "^4.1.2",
@@ -2912,9 +2912,9 @@
"dev": true
},
"@netlify/eslint-config-node": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@netlify/eslint-config-node/-/eslint-config-node-4.0.0.tgz",
- "integrity": "sha512-KaUcfB4uEoTd+dUY4LvgiE3nMB2G2fE42ps03KdOwM96A8eOzvnQn+e9/c2j6yK1Sb9lxXohoqazl3XRr5PHBw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@netlify/eslint-config-node/-/eslint-config-node-4.0.1.tgz",
+ "integrity": "sha512-0n3HbUbZ62za4PCYrPxnmXwCpHYTAon2jRrsO8HSmphqfydOseqkhM/7IYgUL/kVlMcN2FkJFWXAXnneOqPlaw==",
"dev": true,
"requires": {
"@babel/core": "^7.13.8",
@@ -3054,20 +3054,20 @@
}
},
"@netlify/functions-utils": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@netlify/functions-utils/-/functions-utils-3.0.1.tgz",
- "integrity": "sha512-/DpiPus/i7H3hYHWgj2gLSay9HEXC+bhNKQxUyvfC0WozcpdW3YLpm8VI91hJ1usbsO4QjKkaV+X6SBdUhvXAw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@netlify/functions-utils/-/functions-utils-4.0.0.tgz",
+ "integrity": "sha512-jbIOsZYzPXY2L2SxiRTrgWCaOCUvtgcXVgDIE4RTAP37iurK2F78OB+FPcEnPlQniG/Lq4z5HbQvLfyB8f+wEA==",
"dev": true,
"requires": {
- "@netlify/zip-it-and-ship-it": "^5.0.0",
+ "@netlify/zip-it-and-ship-it": "^5.2.0",
"cpy": "^8.1.0",
"path-exists": "^4.0.0"
}
},
"@netlify/git-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@netlify/git-utils/-/git-utils-3.0.0.tgz",
- "integrity": "sha512-dfK8B3Lt/wHwdo8GL+gqGKesCYoiqZYQu3hIdQA0zPhIgRvm7W3fgfskSwlke8Zt3g11EesiGxrzUNIjsd7HpQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@netlify/git-utils/-/git-utils-4.0.0.tgz",
+ "integrity": "sha512-CZGyItsvmX9dBbzoxS6JUSKJzYKM/RfLQHeq18dombL1sk0jxsWcXdwKfZUGqw98T11uGz6JDPQUp/oUw2rNuA==",
"dev": true,
"requires": {
"execa": "^5.1.1",
@@ -3216,6 +3216,12 @@
"typescript": "^4.1.5"
},
"dependencies": {
+ "@types/node": {
+ "version": "16.11.14",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.14.tgz",
+ "integrity": "sha512-mK6BKLpL0bG6v2CxHbm0ed6RcZrAtTHBTd/ZpnlVPVa3HkumsqLE4BC4u6TQ8D7pnrRbOU0am6epuALs+Ncnzw==",
+ "dev": true
+ },
"del": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz",
@@ -3259,15 +3265,15 @@
}
},
"@netlify/plugins-list": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/@netlify/plugins-list/-/plugins-list-6.1.0.tgz",
- "integrity": "sha512-jzUWb3Xk3FBP/CFnOjVdgpC5LZJtJrh2Z84ZOTaWDmYm40JFkm3KMzVcA9iTIYyT+FfscFpPTiptxsuSljGJpg==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/@netlify/plugins-list/-/plugins-list-6.2.0.tgz",
+ "integrity": "sha512-ZkrNrq1A/pVt32XsSLye9We0v+f0yqnOMD32Yu17KoMsL6AVF0KOyiAqjuJFNOZlusTkLgmZuMAbtmriybP0AQ==",
"dev": true
},
"@netlify/run-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@netlify/run-utils/-/run-utils-3.0.0.tgz",
- "integrity": "sha512-CaHpFDHYe4sYjJ/KnbCKo2qx19PSHktFcRfafJU0de2YrJ3K/J0Q6s7ZIjSzRjKUb0PIEq2ivgMPi3jAHNy9kA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@netlify/run-utils/-/run-utils-4.0.0.tgz",
+ "integrity": "sha512-ZeQFp1VmSMfrKaV2A13HJ2b7UJBHf7DUvzAcNjjJdbugD8wCDs5l00rRZeLhyl48AIZl9ki+RpsATZ/j6qKn+g==",
"dev": true,
"requires": {
"execa": "^5.1.1"
@@ -3355,9 +3361,9 @@
}
},
"@netlify/zip-it-and-ship-it": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.2.0.tgz",
- "integrity": "sha512-YcLj5zcStVYPtPn1SNCjD5dXRpZ1HoAweywCOGNSAcOM6fn489IAaiXpkdmhA8oghBS5ukaP09lOZmJ9LD1m/A==",
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.3.0.tgz",
+ "integrity": "sha512-ZaHjN0wTtsmJr2NIquHr16T6A3wquKB7PFLodcjlinS57DatSr4exb3V02QrxuDbTD36VS2kiYfiZ8ueTXH/3Q==",
"dev": true,
"requires": {
"@babel/parser": "^7.15.7",
@@ -4345,9 +4351,9 @@
"dev": true
},
"@types/node": {
- "version": "16.11.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz",
- "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw=="
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
+ "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
},
"@types/normalize-package-data": {
"version": "2.4.1",
@@ -5844,9 +5850,9 @@
}
},
"browserslist": {
- "version": "4.19.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.0.tgz",
- "integrity": "sha512-JGHzm73ei2OnAcobcQ61GXNnN6vDCg5Oz5MayudL+FyzjoLnCzUWnuLtDLMIYw8aXgQzzdCZMVky+fftD5jbtA==",
+ "version": "4.19.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz",
+ "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==",
"dev": true,
"requires": {
"caniuse-lite": "^1.0.30001286",
@@ -6042,9 +6048,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30001286",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz",
- "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==",
+ "version": "1.0.30001287",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001287.tgz",
+ "integrity": "sha512-4udbs9bc0hfNrcje++AxBuc6PfLNHwh3PO9kbwnfCQWyqtlzg3py0YgFu8jyRTTo85VAz4U+VLxSlID09vNtWA==",
"dev": true
},
"caseless": {
@@ -6785,12 +6791,12 @@
"dev": true
},
"core-js-compat": {
- "version": "3.19.3",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.3.tgz",
- "integrity": "sha512-59tYzuWgEEVU9r+SRgceIGXSSUn47JknoiXW6Oq7RW8QHjXWz3/vp8pa7dbtuVu40sewz3OP3JmQEcDdztrLhA==",
+ "version": "3.20.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.0.tgz",
+ "integrity": "sha512-relrah5h+sslXssTTOkvqcC/6RURifB0W5yhYBdBkaPYa5/2KBMiog3XiD+s3TwEHWxInWVv4Jx2/Lw0vng+IQ==",
"dev": true,
"requires": {
- "browserslist": "^4.18.1",
+ "browserslist": "^4.19.1",
"semver": "7.0.0"
},
"dependencies": {
@@ -6803,9 +6809,9 @@
}
},
"core-js-pure": {
- "version": "3.19.3",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.3.tgz",
- "integrity": "sha512-N3JruInmCyt7EJj5mAq3csCgGYgiSqu7p7TQp2KOztr180/OAIxyIvL1FCjzgmQk/t3Yniua50Fsak7FShI9lA==",
+ "version": "3.20.0",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.0.tgz",
+ "integrity": "sha512-qsrbIwWSEEYOM7z616jAVgwhuDDtPLwZSpUsU3vyUkHYqKTf/uwOJBZg2V7lMurYWkpVlaVOxBrfX0Q3ppvjfg==",
"dev": true
},
"core-util-is": {
@@ -7394,9 +7400,9 @@
},
"dependencies": {
"@types/node": {
- "version": "14.18.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.0.tgz",
- "integrity": "sha512-0GeIl2kmVMXEnx8tg1SlG6Gg8vkqirrW752KqolYo1PHevhhZN3bhJ67qHj+bQaINhX0Ra3TlWwRvMCd9iEfNQ==",
+ "version": "14.18.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.1.tgz",
+ "integrity": "sha512-fTFWOFrgAkj737w1o0HLTIgisgYHnsZfeiqhG1Ltrf/iJjudEbUwetQAsfrtVE49JGwvpEzQR+EbMkIqG4227g==",
"dev": true
},
"ci-info": {
@@ -8123,9 +8129,9 @@
"dev": true
},
"electron-to-chromium": {
- "version": "1.4.17",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.17.tgz",
- "integrity": "sha512-zhk1MravPtq/KBhmGB7TLBILmXTgRG9TFSI3qS3DbgyfHzIl72iiTE37r/BHIbPCJJlWIo5rySyxiH4vWhu2ZA==",
+ "version": "1.4.22",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.22.tgz",
+ "integrity": "sha512-IiW8cV8eyjMhuWqk9wwHRPOVN+5Fa7NHOTjogrwg2H9TNiLVA8ywjOJnVKoywaqUHryDUOpK7Mg6P1FETisi0g==",
"dev": true
},
"elf-cam": {
diff --git a/package.json b/package.json
index 14eb1c5d24..91c794be7d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@netlify/plugin-nextjs",
- "version": "4.0.0",
+ "version": "4.1.0",
"description": "Run Next.js seamlessly on Netlify",
"main": "lib/index.js",
"files": [
@@ -74,8 +74,8 @@
"@babel/core": "^7.15.8",
"@babel/preset-env": "^7.15.8",
"@babel/preset-typescript": "^7.16.0",
- "@netlify/build": "^20.3.0",
- "@netlify/eslint-config-node": "^4.0.0",
+ "@netlify/build": "^25.0.1",
+ "@netlify/eslint-config-node": "^4.0.1",
"@testing-library/cypress": "^8.0.1",
"@types/fs-extra": "^9.0.13",
"@types/jest": "^27.0.2",
diff --git a/src/helpers/files.ts b/src/helpers/files.ts
index d65560c664..3ace97daf5 100644
--- a/src/helpers/files.ts
+++ b/src/helpers/files.ts
@@ -111,7 +111,7 @@ export const moveStaticPages = async ({
Object.entries(prerenderManifest.routes).forEach(([route, { initialRevalidateSeconds }]) => {
if (initialRevalidateSeconds) {
// Find all files used by ISR routes
- const trimmedPath = route.slice(1)
+ const trimmedPath = route === '/' ? 'index' : route.slice(1)
isrFiles.add(`${trimmedPath}.html`)
isrFiles.add(`${trimmedPath}.json`)
if (initialRevalidateSeconds < MINIMUM_REVALIDATE_SECONDS) {
diff --git a/src/helpers/redirects.ts b/src/helpers/redirects.ts
index d261801ed8..70d6585f14 100644
--- a/src/helpers/redirects.ts
+++ b/src/helpers/redirects.ts
@@ -42,6 +42,21 @@ const generateLocaleRedirects = ({
return redirects
}
+export const generateStaticRedirects = ({
+ netlifyConfig,
+ nextConfig: { i18n, basePath },
+}: {
+ netlifyConfig: NetlifyConfig
+ nextConfig: Pick
+}) => {
+ // Static files are in `static`
+ netlifyConfig.redirects.push({ from: `${basePath}/_next/static/*`, to: `/static/:splat`, status: 200 })
+
+ if (i18n) {
+ netlifyConfig.redirects.push({ from: `${basePath}/:locale/_next/static/*`, to: `/static/:splat`, status: 200 })
+ }
+}
+
export const generateRedirects = async ({
netlifyConfig,
nextConfig: { i18n, basePath, trailingSlash, appDir },
@@ -95,16 +110,10 @@ export const generateRedirects = async ({
dataRedirects.push(...netlifyRoutesForNextRoute(dataRoute))
})
- if (i18n) {
- netlifyConfig.redirects.push({ from: `${basePath}/:locale/_next/static/*`, to: `/static/:splat`, status: 200 })
- }
-
const publicFiles = await globby('**/*', { cwd: join(appDir, 'public') })
// This is only used in prod, so dev uses `next dev` directly
netlifyConfig.redirects.push(
- // Static files are in `static`
- { from: `${basePath}/_next/static/*`, to: `/static/:splat`, status: 200 },
// API routes always need to be served from the regular function
{
from: `${basePath}/api`,
diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts
index e50ff9073e..37431c4f8d 100644
--- a/src/helpers/utils.ts
+++ b/src/helpers/utils.ts
@@ -33,3 +33,9 @@ export const netlifyRoutesForNextRoute = (nextRoute: string): Array => {
.replace(DYNAMIC_PARAMETER_REGEX, '/:$1'),
)
}
+
+export const shouldSkip = (): boolean =>
+ process.env.NEXT_PLUGIN_FORCE_RUN === 'false' ||
+ process.env.NEXT_PLUGIN_FORCE_RUN === '0' ||
+ process.env.NETLIFY_NEXT_PLUGIN_SKIP === 'true' ||
+ process.env.NETLIFY_NEXT_PLUGIN_SKIP === '1'
diff --git a/src/helpers/verification.ts b/src/helpers/verification.ts
index f7b87a170e..07d108ed3a 100644
--- a/src/helpers/verification.ts
+++ b/src/helpers/verification.ts
@@ -1,7 +1,8 @@
+/* eslint-disable max-lines */
import { existsSync, promises } from 'fs'
import path, { relative } from 'path'
-import { NetlifyPluginUtils } from '@netlify/build'
+import { NetlifyConfig, NetlifyPluginUtils } from '@netlify/build'
import { yellowBright, greenBright, blueBright, redBright, reset } from 'chalk'
import { async as StreamZip } from 'node-stream-zip'
import { outdent } from 'outdent'
@@ -72,14 +73,13 @@ export const checkNextSiteHasBuilt = ({
publish,
)}" does not contain a Next.js production build. Perhaps the build command was not run, or you specified the wrong publish directory.
${outWarning}
- If you are using "next export" then the Essential Next.js plugin should be removed. See https://ntl.fyi/remove-plugin for details.
+ If you are using "next export" then you should set the environment variable NETLIFY_NEXT_PLUGIN_SKIP to "true".
`)
}
if (existsSync(path.join(publish, 'export-detail.json'))) {
failBuild(outdent`
Detected that "next export" was run, but site is incorrectly publishing the ".next" directory.
- This plugin is not needed for "next export" so should be removed, and publish directory set to "out".
- See https://ntl.fyi/remove-plugin for more details on how to remove this plugin.
+ The publish directory should be set to "out", and you should set the environment variable NETLIFY_NEXT_PLUGIN_SKIP to "true".
`)
}
}
@@ -136,3 +136,55 @@ export const checkZipSize = async (file: string, maxSize: number = LAMBDA_MAX_SI
greenBright`\n\nFor more information on fixing this, see ${blueBright`https://ntl.fyi/large-next-functions`}`,
)
}
+
+export const getProblematicUserRewrites = ({
+ redirects,
+ basePath,
+}: {
+ redirects: NetlifyConfig['redirects']
+ basePath: string
+}) => {
+ const userRewrites: NetlifyConfig['redirects'] = []
+ for (const redirect of redirects) {
+ // This is the first of the plugin-generated redirects so we can stop checking
+ if (redirect.from === `${basePath}/_next/static/*` && redirect.to === `/static/:splat` && redirect.status === 200) {
+ break
+ }
+ if (
+ // Redirects are fine
+ (redirect.status === 200 || redirect.status === 404) &&
+ // Rewriting to a function is also fine
+ !redirect.to.startsWith('/.netlify/') &&
+ // ...so is proxying
+ !redirect.to.startsWith('http')
+ ) {
+ userRewrites.push(redirect)
+ }
+ }
+ return userRewrites
+}
+
+export const warnForProblematicUserRewrites = ({
+ redirects,
+ basePath,
+}: {
+ redirects: NetlifyConfig['redirects']
+ basePath: string
+}) => {
+ const userRewrites = getProblematicUserRewrites({ redirects, basePath })
+ if (userRewrites.length === 0) {
+ return
+ }
+ console.log(
+ yellowBright(outdent`
+ You have the following Netlify rewrite${
+ userRewrites.length === 1 ? '' : 's'
+ } that might cause conflicts with the Next.js plugin:
+
+ ${reset(userRewrites.map(({ from, to, status }) => `- ${from} ${to} ${status}`).join('\n'))}
+
+ For more information, see https://ntl.fyi/next-rewrites
+ `),
+ )
+}
+/* eslint-enable max-lines */
diff --git a/src/index.ts b/src/index.ts
index 616a0b24c3..c14079e1f5 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,19 +1,22 @@
import { join, relative } from 'path'
import { NetlifyPlugin } from '@netlify/build'
+import { existsSync } from 'fs-extra'
-import { ODB_FUNCTION_NAME } from './constants'
+import { HANDLER_FUNCTION_NAME, ODB_FUNCTION_NAME } from './constants'
import { restoreCache, saveCache } from './helpers/cache'
import { getNextConfig, configureHandlerFunctions } from './helpers/config'
import { moveStaticPages, movePublicFiles, patchNextFiles, unpatchNextFiles } from './helpers/files'
import { generateFunctions, setupImageFunction, generatePagesResolver } from './helpers/functions'
-import { generateRedirects } from './helpers/redirects'
+import { generateRedirects, generateStaticRedirects } from './helpers/redirects'
+import { shouldSkip } from './helpers/utils'
import {
verifyNetlifyBuildVersion,
checkNextSiteHasBuilt,
checkForRootPublish,
checkZipSize,
checkForOldFunctions,
+ warnForProblematicUserRewrites,
} from './helpers/verification'
const plugin: NetlifyPlugin = {
@@ -26,6 +29,14 @@ const plugin: NetlifyPlugin = {
},
}) {
const { publish } = netlifyConfig.build
+ if (shouldSkip()) {
+ await restoreCache({ cache, publish })
+ console.log('Not running Essential Next.js plugin')
+ if (existsSync(join(constants.INTERNAL_FUNCTIONS_SRC, HANDLER_FUNCTION_NAME))) {
+ console.log(`Please ensure you remove any generated functions from ${constants.INTERNAL_FUNCTIONS_SRC}`)
+ }
+ return
+ }
checkForRootPublish({ publish, failBuild })
verifyNetlifyBuildVersion({ failBuild, ...constants })
@@ -43,6 +54,9 @@ const plugin: NetlifyPlugin = {
build: { failBuild },
},
}) {
+ if (shouldSkip()) {
+ return
+ }
const { publish } = netlifyConfig.build
checkNextSiteHasBuilt({ publish, failBuild })
@@ -73,6 +87,11 @@ const plugin: NetlifyPlugin = {
await moveStaticPages({ target, netlifyConfig, i18n })
}
+ await generateStaticRedirects({
+ netlifyConfig,
+ nextConfig: { basePath, i18n },
+ })
+
await setupImageFunction({ constants, imageconfig: images, netlifyConfig, basePath })
await generateRedirects({
@@ -82,18 +101,36 @@ const plugin: NetlifyPlugin = {
},
async onPostBuild({
- netlifyConfig,
+ netlifyConfig: {
+ build: { publish },
+ redirects,
+ },
utils: {
+ status,
cache,
functions,
build: { failBuild },
},
constants: { FUNCTIONS_DIST },
}) {
- await saveCache({ cache, publish: netlifyConfig.build.publish })
+ await saveCache({ cache, publish })
+
+ if (shouldSkip()) {
+ status.show({
+ title: 'Essential Next.js plugin did not run',
+ summary: `Next cache was stored, but all other functions were skipped because ${
+ process.env.NETLIFY_NEXT_PLUGIN_SKIP
+ ? `NETLIFY_NEXT_PLUGIN_SKIP is set`
+ : `NEXT_PLUGIN_FORCE_RUN is set to ${process.env.NEXT_PLUGIN_FORCE_RUN}`
+ }`,
+ })
+ return
+ }
+
await checkForOldFunctions({ functions })
await checkZipSize(join(FUNCTIONS_DIST, `${ODB_FUNCTION_NAME}.zip`))
- const { basePath } = await getNextConfig({ publish: netlifyConfig.build.publish, failBuild })
+ const { basePath } = await getNextConfig({ publish, failBuild })
+ warnForProblematicUserRewrites({ basePath, redirects })
await unpatchNextFiles(basePath)
},
}
diff --git a/test/index.js b/test/index.js
index 350690f356..d810daafdb 100644
--- a/test/index.js
+++ b/test/index.js
@@ -1,4 +1,4 @@
-const { writeJSON, unlink, existsSync, readFileSync, copy, ensureDir, readJson } = require('fs-extra')
+const { writeJSON, unlink, existsSync, readFileSync, copy, ensureDir, readJson, writeFile } = require('fs-extra')
const path = require('path')
const process = require('process')
const os = require('os')
@@ -12,6 +12,8 @@ const { HANDLER_FUNCTION_NAME, ODB_FUNCTION_NAME } = require('../src/constants')
const { join } = require('pathe')
const { matchMiddleware, stripLocale, matchesRedirect, matchesRewrite } = require('../src/helpers/files')
const { dirname } = require('path')
+const { getProblematicUserRewrites } = require('../src/helpers/verification')
+const { outdent } = require('outdent')
const FIXTURES_DIR = `${__dirname}/fixtures`
const SAMPLE_PROJECT_DIR = `${__dirname}/../demos/default`
@@ -205,6 +207,24 @@ describe('onBuild()', () => {
expect(onBuildHasRun(netlifyConfig)).toBe(true)
})
+ test('skips if NETLIFY_NEXT_PLUGIN_SKIP is set', async () => {
+ process.env.NETLIFY_NEXT_PLUGIN_SKIP = 'true'
+ await moveNextDist()
+ await plugin.onBuild(defaultArgs)
+
+ expect(onBuildHasRun(netlifyConfig)).toBe(false)
+ delete process.env.NETLIFY_NEXT_PLUGIN_SKIP
+ })
+
+ test('skips if NEXT_PLUGIN_FORCE_RUN is "false"', async () => {
+ process.env.NEXT_PLUGIN_FORCE_RUN = 'false'
+ await moveNextDist()
+ await plugin.onBuild(defaultArgs)
+
+ expect(onBuildHasRun(netlifyConfig)).toBe(false)
+ delete process.env.NEXT_PLUGIN_FORCE_RUN
+ })
+
test("fails if BUILD_ID doesn't exist", async () => {
await moveNextDist()
await unlink(path.join(process.cwd(), '.next/BUILD_ID'))
@@ -442,6 +462,62 @@ describe('onPostBuild', () => {
console.log = oldLog
})
+
+ test('warns if NETLIFY_NEXT_PLUGIN_SKIP is set', async () => {
+ await moveNextDist()
+
+ process.env.NETLIFY_NEXT_PLUGIN_SKIP = 'true'
+ await moveNextDist()
+ const show = jest.fn()
+ await plugin.onPostBuild({ ...defaultArgs, utils: { ...defaultArgs.utils, status: { show } } })
+ expect(show).toHaveBeenCalledWith({
+ summary: 'Next cache was stored, but all other functions were skipped because NETLIFY_NEXT_PLUGIN_SKIP is set',
+ title: 'Essential Next.js plugin did not run',
+ })
+ delete process.env.NETLIFY_NEXT_PLUGIN_SKIP
+ })
+
+ test('warns if NEXT_PLUGIN_FORCE_RUN is "false"', async () => {
+ await moveNextDist()
+
+ process.env.NEXT_PLUGIN_FORCE_RUN = 'false'
+ await moveNextDist()
+ const show = jest.fn()
+ await plugin.onPostBuild({ ...defaultArgs, utils: { ...defaultArgs.utils, status: { show } } })
+ expect(show).toHaveBeenCalledWith({
+ summary:
+ 'Next cache was stored, but all other functions were skipped because NEXT_PLUGIN_FORCE_RUN is set to false',
+ title: 'Essential Next.js plugin did not run',
+ })
+ delete process.env.NEXT_PLUGIN_FORCE_RUN
+ })
+
+ test('finds problematic user rewrites', async () => {
+ await moveNextDist()
+ const rewrites = getProblematicUserRewrites({
+ redirects: [
+ { from: '/previous', to: '/rewrites-are-a-problem', status: 200 },
+ { from: '/api', to: '/.netlify/functions/are-ok', status: 200 },
+ { from: '/remote', to: 'http://example.com/proxying/is/ok', status: 200 },
+ { from: '/old', to: '/redirects-are-fine' },
+ { from: '/*', to: '/404-is-a-problem', status: 404 },
+ ...netlifyConfig.redirects,
+ ],
+ basePath: '',
+ })
+ expect(rewrites).toEqual([
+ {
+ from: '/previous',
+ status: 200,
+ to: '/rewrites-are-a-problem',
+ },
+ {
+ from: '/*',
+ status: 404,
+ to: '/404-is-a-problem',
+ },
+ ])
+ })
})
describe('utility functions', () => {