diff --git a/exercises/01.form-validation/01.problem.form-validation/package.json b/exercises/01.form-validation/01.problem.form-validation/package.json index 457f5b5e..815306ff 100644 --- a/exercises/01.form-validation/01.problem.form-validation/package.json +++ b/exercises/01.form-validation/01.problem.form-validation/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/01.form-validation/01.solution.form-validation/package.json b/exercises/01.form-validation/01.solution.form-validation/package.json index 7205178a..549c3963 100644 --- a/exercises/01.form-validation/01.solution.form-validation/package.json +++ b/exercises/01.form-validation/01.solution.form-validation/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/01.form-validation/02.problem.server-validation/package.json b/exercises/01.form-validation/02.problem.server-validation/package.json index f012ac0d..8bdabc90 100644 --- a/exercises/01.form-validation/02.problem.server-validation/package.json +++ b/exercises/01.form-validation/02.problem.server-validation/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/01.form-validation/02.solution.server-validation/package.json b/exercises/01.form-validation/02.solution.server-validation/package.json index f729d4d5..c08a688d 100644 --- a/exercises/01.form-validation/02.solution.server-validation/package.json +++ b/exercises/01.form-validation/02.solution.server-validation/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/01.form-validation/03.problem.no-validate/package.json b/exercises/01.form-validation/03.problem.no-validate/package.json index 5872872b..152e3dcc 100644 --- a/exercises/01.form-validation/03.problem.no-validate/package.json +++ b/exercises/01.form-validation/03.problem.no-validate/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/01.form-validation/03.solution.no-validate/package.json b/exercises/01.form-validation/03.solution.no-validate/package.json index a395a53c..aa3cd77c 100644 --- a/exercises/01.form-validation/03.solution.no-validate/package.json +++ b/exercises/01.form-validation/03.solution.no-validate/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/02.accessibility/01.problem.labels/package.json b/exercises/02.accessibility/01.problem.labels/package.json index c24b81eb..a986eeee 100644 --- a/exercises/02.accessibility/01.problem.labels/package.json +++ b/exercises/02.accessibility/01.problem.labels/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/02.accessibility/01.solution.labels/package.json b/exercises/02.accessibility/01.solution.labels/package.json index 55e4c1f1..08712160 100644 --- a/exercises/02.accessibility/01.solution.labels/package.json +++ b/exercises/02.accessibility/01.solution.labels/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/02.accessibility/02.problem.aria/package.json b/exercises/02.accessibility/02.problem.aria/package.json index b2144578..b800941f 100644 --- a/exercises/02.accessibility/02.problem.aria/package.json +++ b/exercises/02.accessibility/02.problem.aria/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/02.accessibility/02.solution.aria/package.json b/exercises/02.accessibility/02.solution.aria/package.json index a2e928e4..da62dd98 100644 --- a/exercises/02.accessibility/02.solution.aria/package.json +++ b/exercises/02.accessibility/02.solution.aria/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/02.accessibility/03.problem.focus/package.json b/exercises/02.accessibility/03.problem.focus/package.json index aa6078e1..6d57b03b 100644 --- a/exercises/02.accessibility/03.problem.focus/package.json +++ b/exercises/02.accessibility/03.problem.focus/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/02.accessibility/03.solution.focus/package.json b/exercises/02.accessibility/03.solution.focus/package.json index 483e3afe..635fd3d3 100644 --- a/exercises/02.accessibility/03.solution.focus/package.json +++ b/exercises/02.accessibility/03.solution.focus/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/03.schema-validation/01.problem.zod/package.json b/exercises/03.schema-validation/01.problem.zod/package.json index 0e425709..32aabc38 100644 --- a/exercises/03.schema-validation/01.problem.zod/package.json +++ b/exercises/03.schema-validation/01.problem.zod/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/03.schema-validation/01.solution.zod/package.json b/exercises/03.schema-validation/01.solution.zod/package.json index ffc3478a..b4a84401 100644 --- a/exercises/03.schema-validation/01.solution.zod/package.json +++ b/exercises/03.schema-validation/01.solution.zod/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/03.schema-validation/02.problem.conform-action/package.json b/exercises/03.schema-validation/02.problem.conform-action/package.json index d893e0ed..b356ea13 100644 --- a/exercises/03.schema-validation/02.problem.conform-action/package.json +++ b/exercises/03.schema-validation/02.problem.conform-action/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/03.schema-validation/02.solution.conform-action/package.json b/exercises/03.schema-validation/02.solution.conform-action/package.json index b746011f..d3373456 100644 --- a/exercises/03.schema-validation/02.solution.conform-action/package.json +++ b/exercises/03.schema-validation/02.solution.conform-action/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/03.schema-validation/03.problem.conform-form/package.json b/exercises/03.schema-validation/03.problem.conform-form/package.json index b1103941..8da76a98 100644 --- a/exercises/03.schema-validation/03.problem.conform-form/package.json +++ b/exercises/03.schema-validation/03.problem.conform-form/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/03.schema-validation/03.solution.conform-form/package.json b/exercises/03.schema-validation/03.solution.conform-form/package.json index 7b434b13..7b483c92 100644 --- a/exercises/03.schema-validation/03.solution.conform-form/package.json +++ b/exercises/03.schema-validation/03.solution.conform-form/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/04.file-upload/01.problem.multi-part/package.json b/exercises/04.file-upload/01.problem.multi-part/package.json index 111f7c15..144c7a22 100644 --- a/exercises/04.file-upload/01.problem.multi-part/package.json +++ b/exercises/04.file-upload/01.problem.multi-part/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/04.file-upload/01.solution.multi-part/package.json b/exercises/04.file-upload/01.solution.multi-part/package.json index 9cdde7ce..03aac892 100644 --- a/exercises/04.file-upload/01.solution.multi-part/package.json +++ b/exercises/04.file-upload/01.solution.multi-part/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/04.file-upload/02.problem.file-validation/package.json b/exercises/04.file-upload/02.problem.file-validation/package.json index 6f8d55b6..8d48b692 100644 --- a/exercises/04.file-upload/02.problem.file-validation/package.json +++ b/exercises/04.file-upload/02.problem.file-validation/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/04.file-upload/02.solution.file-validation/package.json b/exercises/04.file-upload/02.solution.file-validation/package.json index 0b419894..6522a42c 100644 --- a/exercises/04.file-upload/02.solution.file-validation/package.json +++ b/exercises/04.file-upload/02.solution.file-validation/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/05.complex-structures/01.problem.nested/package.json b/exercises/05.complex-structures/01.problem.nested/package.json index 296df510..07161d38 100644 --- a/exercises/05.complex-structures/01.problem.nested/package.json +++ b/exercises/05.complex-structures/01.problem.nested/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/05.complex-structures/01.solution.nested/package.json b/exercises/05.complex-structures/01.solution.nested/package.json index 138609f8..ea029655 100644 --- a/exercises/05.complex-structures/01.solution.nested/package.json +++ b/exercises/05.complex-structures/01.solution.nested/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/05.complex-structures/02.problem.lists/package.json b/exercises/05.complex-structures/02.problem.lists/package.json index 5b4a4be5..320fc0f9 100644 --- a/exercises/05.complex-structures/02.problem.lists/package.json +++ b/exercises/05.complex-structures/02.problem.lists/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/05.complex-structures/02.solution.lists/package.json b/exercises/05.complex-structures/02.solution.lists/package.json index 49a94a0c..762eaf54 100644 --- a/exercises/05.complex-structures/02.solution.lists/package.json +++ b/exercises/05.complex-structures/02.solution.lists/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/05.complex-structures/03.problem.add-remove/package.json b/exercises/05.complex-structures/03.problem.add-remove/package.json index 87bb3707..810a0b2a 100644 --- a/exercises/05.complex-structures/03.problem.add-remove/package.json +++ b/exercises/05.complex-structures/03.problem.add-remove/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/05.complex-structures/03.solution.add-remove/package.json b/exercises/05.complex-structures/03.solution.add-remove/package.json index ac9428e8..141606c7 100644 --- a/exercises/05.complex-structures/03.solution.add-remove/package.json +++ b/exercises/05.complex-structures/03.solution.add-remove/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/06.honeypot/01.problem.basic/package.json b/exercises/06.honeypot/01.problem.basic/package.json index c4a84d61..3e07bc2e 100644 --- a/exercises/06.honeypot/01.problem.basic/package.json +++ b/exercises/06.honeypot/01.problem.basic/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/06.honeypot/01.solution.basic/package.json b/exercises/06.honeypot/01.solution.basic/package.json index 133ca055..15d41d32 100644 --- a/exercises/06.honeypot/01.solution.basic/package.json +++ b/exercises/06.honeypot/01.solution.basic/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/06.honeypot/02.problem.util/package.json b/exercises/06.honeypot/02.problem.util/package.json index e0f1990a..c2bf4b1b 100644 --- a/exercises/06.honeypot/02.problem.util/package.json +++ b/exercises/06.honeypot/02.problem.util/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/06.honeypot/02.solution.util/package.json b/exercises/06.honeypot/02.solution.util/package.json index e0347163..3014ebc4 100644 --- a/exercises/06.honeypot/02.solution.util/package.json +++ b/exercises/06.honeypot/02.solution.util/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/06.honeypot/03.problem.provider/package.json b/exercises/06.honeypot/03.problem.provider/package.json index e5b55e95..a31459f9 100644 --- a/exercises/06.honeypot/03.problem.provider/package.json +++ b/exercises/06.honeypot/03.problem.provider/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/06.honeypot/03.solution.provider/package.json b/exercises/06.honeypot/03.solution.provider/package.json index 617aea52..a16e1174 100644 --- a/exercises/06.honeypot/03.solution.provider/package.json +++ b/exercises/06.honeypot/03.solution.provider/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/06.honeypot/04.problem.seed/package.json b/exercises/06.honeypot/04.problem.seed/package.json index 96e4dd4e..c02cc0e3 100644 --- a/exercises/06.honeypot/04.problem.seed/package.json +++ b/exercises/06.honeypot/04.problem.seed/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/06.honeypot/04.solution.seed/package.json b/exercises/06.honeypot/04.solution.seed/package.json index 25544a84..45418aed 100644 --- a/exercises/06.honeypot/04.solution.seed/package.json +++ b/exercises/06.honeypot/04.solution.seed/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/07.csrf/01.problem.setup/package.json b/exercises/07.csrf/01.problem.setup/package.json index 6eb282ed..53c3dadd 100644 --- a/exercises/07.csrf/01.problem.setup/package.json +++ b/exercises/07.csrf/01.problem.setup/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/07.csrf/01.solution.setup/package.json b/exercises/07.csrf/01.solution.setup/package.json index 2bca2d55..d2049939 100644 --- a/exercises/07.csrf/01.solution.setup/package.json +++ b/exercises/07.csrf/01.solution.setup/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/07.csrf/02.problem.verification/package.json b/exercises/07.csrf/02.problem.verification/package.json index a611eb88..f7e434f2 100644 --- a/exercises/07.csrf/02.problem.verification/package.json +++ b/exercises/07.csrf/02.problem.verification/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/07.csrf/02.solution.verification/package.json b/exercises/07.csrf/02.solution.verification/package.json index a7057742..abec939c 100644 --- a/exercises/07.csrf/02.solution.verification/package.json +++ b/exercises/07.csrf/02.solution.verification/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/08.rate-limiting/01.problem.basic/package.json b/exercises/08.rate-limiting/01.problem.basic/package.json index f635d076..51132316 100644 --- a/exercises/08.rate-limiting/01.problem.basic/package.json +++ b/exercises/08.rate-limiting/01.problem.basic/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/08.rate-limiting/01.solution.basic/package.json b/exercises/08.rate-limiting/01.solution.basic/package.json index 1d50f805..2f1d3b4f 100644 --- a/exercises/08.rate-limiting/01.solution.basic/package.json +++ b/exercises/08.rate-limiting/01.solution.basic/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/08.rate-limiting/02.problem.tuned/package.json b/exercises/08.rate-limiting/02.problem.tuned/package.json index bfd29c2d..ad052c27 100644 --- a/exercises/08.rate-limiting/02.problem.tuned/package.json +++ b/exercises/08.rate-limiting/02.problem.tuned/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/exercises/08.rate-limiting/02.solution.tuned/package.json b/exercises/08.rate-limiting/02.solution.tuned/package.json index a72b3e6b..6f1b3cff 100644 --- a/exercises/08.rate-limiting/02.solution.tuned/package.json +++ b/exercises/08.rate-limiting/02.solution.tuned/package.json @@ -34,7 +34,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -43,7 +43,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -62,6 +62,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", diff --git a/package-lock.json b/package-lock.json index 65749ada..a271778a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -51,7 +51,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -70,6 +70,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -93,6 +94,61 @@ "node": ">= 16.0.0" } }, + "exercises/01.form-validation/01.problem.form-validation/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/01.form-validation/01.solution.form-validation": { "name": "exercises__sep__01.form-validation__sep__01.solution.form-validation", "dependencies": { @@ -113,7 +169,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -122,7 +178,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -141,6 +197,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -164,6 +221,61 @@ "node": ">= 16.0.0" } }, + "exercises/01.form-validation/01.solution.form-validation/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/01.form-validation/02.problem.server-validation": { "name": "exercises__sep__01.form-validation__sep__02.problem.server-validation", "dependencies": { @@ -184,7 +296,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -193,7 +305,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -212,6 +324,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -235,6 +348,61 @@ "node": ">= 16.0.0" } }, + "exercises/01.form-validation/02.problem.server-validation/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/01.form-validation/02.solution.server-validation": { "name": "exercises__sep__01.form-validation__sep__02.solution.server-validation", "dependencies": { @@ -255,7 +423,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -264,7 +432,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -283,6 +451,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -306,6 +475,61 @@ "node": ">= 16.0.0" } }, + "exercises/01.form-validation/02.solution.server-validation/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/01.form-validation/03.problem.no-validate": { "name": "exercises__sep__01.form-validation__sep__03.problem.no-validate", "dependencies": { @@ -326,7 +550,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -335,7 +559,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -354,6 +578,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -377,6 +602,61 @@ "node": ">= 16.0.0" } }, + "exercises/01.form-validation/03.problem.no-validate/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/01.form-validation/03.solution.no-validate": { "name": "exercises__sep__01.form-validation__sep__03.solution.no-validate", "dependencies": { @@ -397,7 +677,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -406,7 +686,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -425,6 +705,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -448,6 +729,61 @@ "node": ">= 16.0.0" } }, + "exercises/01.form-validation/03.solution.no-validate/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/02.accessibility/01.problem.labels": { "name": "exercises__sep__02.accessibility__sep__01.problem.labels", "dependencies": { @@ -468,7 +804,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -477,7 +813,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -496,6 +832,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -519,27 +856,82 @@ "node": ">= 16.0.0" } }, - "exercises/02.accessibility/01.solution.labels": { - "name": "exercises__sep__02.accessibility__sep__01.solution.labels", + "exercises/02.accessibility/01.problem.labels/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", "dependencies": { - "@conform-to/react": "^0.9.0", - "@conform-to/zod": "^0.9.0", - "@kentcdodds/workshop-app": "^2.38.0", - "@mswjs/data": "^0.13.0", - "@radix-ui/react-label": "^2.0.2", - "@radix-ui/react-slot": "^1.0.2", - "@remix-run/css-bundle": "2.0.1", - "@remix-run/express": "2.0.1", - "@remix-run/node": "2.0.1", - "@remix-run/react": "2.0.1", - "@remix-run/serve": "2.0.1", + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "exercises/02.accessibility/01.solution.labels": { + "name": "exercises__sep__02.accessibility__sep__01.solution.labels", + "dependencies": { + "@conform-to/react": "^0.9.0", + "@conform-to/zod": "^0.9.0", + "@kentcdodds/workshop-app": "^2.38.0", + "@mswjs/data": "^0.13.0", + "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-slot": "^1.0.2", + "@remix-run/css-bundle": "2.0.1", + "@remix-run/express": "2.0.1", + "@remix-run/node": "2.0.1", + "@remix-run/react": "2.0.1", + "@remix-run/serve": "2.0.1", "address": "^2.0.1", "chalk": "^5.3.0", "class-variance-authority": "^0.7.0", "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -548,7 +940,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -567,6 +959,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -590,6 +983,61 @@ "node": ">= 16.0.0" } }, + "exercises/02.accessibility/01.solution.labels/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/02.accessibility/02.problem.aria": { "name": "exercises__sep__02.accessibility__sep__02.problem.aria", "dependencies": { @@ -610,7 +1058,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -619,7 +1067,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -638,6 +1086,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -661,6 +1110,61 @@ "node": ">= 16.0.0" } }, + "exercises/02.accessibility/02.problem.aria/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/02.accessibility/02.solution.aria": { "name": "exercises__sep__02.accessibility__sep__02.solution.aria", "dependencies": { @@ -681,7 +1185,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -690,7 +1194,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -709,6 +1213,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -732,6 +1237,61 @@ "node": ">= 16.0.0" } }, + "exercises/02.accessibility/02.solution.aria/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/02.accessibility/03.problem.focus": { "name": "exercises__sep__02.accessibility__sep__03.problem.focus", "dependencies": { @@ -752,7 +1312,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -761,7 +1321,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -780,6 +1340,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -803,6 +1364,61 @@ "node": ">= 16.0.0" } }, + "exercises/02.accessibility/03.problem.focus/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/02.accessibility/03.solution.focus": { "name": "exercises__sep__02.accessibility__sep__03.solution.focus", "dependencies": { @@ -823,7 +1439,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -832,7 +1448,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -851,6 +1467,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -874,6 +1491,61 @@ "node": ">= 16.0.0" } }, + "exercises/02.accessibility/03.solution.focus/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/03.schema-validation/01.problem.zod": { "name": "exercises__sep__03.schema-validation__sep__01.problem.zod", "dependencies": { @@ -894,7 +1566,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -903,7 +1575,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -922,6 +1594,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -945,6 +1618,61 @@ "node": ">= 16.0.0" } }, + "exercises/03.schema-validation/01.problem.zod/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/03.schema-validation/01.solution.zod": { "name": "exercises__sep__03.schema-validation__sep__01.solution.zod", "dependencies": { @@ -965,7 +1693,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -974,7 +1702,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -993,6 +1721,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1016,6 +1745,61 @@ "node": ">= 16.0.0" } }, + "exercises/03.schema-validation/01.solution.zod/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/03.schema-validation/02.problem.conform-action": { "name": "exercises__sep__03.schema-validation__sep__02.problem.conform-action", "dependencies": { @@ -1036,7 +1820,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1045,7 +1829,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1064,6 +1848,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1087,6 +1872,61 @@ "node": ">= 16.0.0" } }, + "exercises/03.schema-validation/02.problem.conform-action/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/03.schema-validation/02.solution.conform-action": { "name": "exercises__sep__03.schema-validation__sep__02.solution.conform-action", "dependencies": { @@ -1107,7 +1947,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1116,7 +1956,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1135,6 +1975,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1158,6 +1999,61 @@ "node": ">= 16.0.0" } }, + "exercises/03.schema-validation/02.solution.conform-action/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/03.schema-validation/03.problem.conform-form": { "name": "exercises__sep__03.schema-validation__sep__03.problem.conform-form", "dependencies": { @@ -1178,7 +2074,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1187,7 +2083,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1206,6 +2102,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1229,6 +2126,61 @@ "node": ">= 16.0.0" } }, + "exercises/03.schema-validation/03.problem.conform-form/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/03.schema-validation/03.solution.conform-form": { "name": "exercises__sep__03.schema-validation__sep__03.solution.conform-form", "dependencies": { @@ -1249,7 +2201,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1258,7 +2210,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1277,6 +2229,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1300,6 +2253,61 @@ "node": ">= 16.0.0" } }, + "exercises/03.schema-validation/03.solution.conform-form/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/04.file-upload/01.problem.multi-part": { "name": "exercises__sep__04.file-upload__sep__01.problem.multi-part", "dependencies": { @@ -1320,7 +2328,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1329,7 +2337,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1348,6 +2356,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1371,6 +2380,61 @@ "node": ">= 16.0.0" } }, + "exercises/04.file-upload/01.problem.multi-part/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/04.file-upload/01.solution.multi-part": { "name": "exercises__sep__04.file-upload__sep__01.solution.multi-part", "dependencies": { @@ -1391,7 +2455,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1400,7 +2464,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1419,6 +2483,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1442,6 +2507,61 @@ "node": ">= 16.0.0" } }, + "exercises/04.file-upload/01.solution.multi-part/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/04.file-upload/02.problem.file-validation": { "name": "exercises__sep__04.file-upload__sep__02.problem.file-validation", "dependencies": { @@ -1462,7 +2582,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1471,7 +2591,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1490,6 +2610,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1513,6 +2634,61 @@ "node": ">= 16.0.0" } }, + "exercises/04.file-upload/02.problem.file-validation/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/04.file-upload/02.solution.file-validation": { "name": "exercises__sep__04.file-upload__sep__02.solution.file-validation", "dependencies": { @@ -1533,7 +2709,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1542,7 +2718,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1561,6 +2737,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1584,6 +2761,61 @@ "node": ">= 16.0.0" } }, + "exercises/04.file-upload/02.solution.file-validation/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/05.complex-structures/01.problem.nested": { "name": "exercises__sep__05.complex-structures__sep__01.problem.nested", "dependencies": { @@ -1604,7 +2836,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1613,7 +2845,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1632,6 +2864,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1655,6 +2888,61 @@ "node": ">= 16.0.0" } }, + "exercises/05.complex-structures/01.problem.nested/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/05.complex-structures/01.solution.nested": { "name": "exercises__sep__05.complex-structures__sep__01.solution.nested", "dependencies": { @@ -1675,7 +2963,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1684,7 +2972,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1703,6 +2991,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1726,6 +3015,61 @@ "node": ">= 16.0.0" } }, + "exercises/05.complex-structures/01.solution.nested/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/05.complex-structures/02.problem.lists": { "name": "exercises__sep__05.complex-structures__sep__02.problem.lists", "dependencies": { @@ -1746,7 +3090,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1755,7 +3099,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1774,6 +3118,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1797,6 +3142,61 @@ "node": ">= 16.0.0" } }, + "exercises/05.complex-structures/02.problem.lists/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/05.complex-structures/02.solution.lists": { "name": "exercises__sep__05.complex-structures__sep__02.solution.lists", "dependencies": { @@ -1817,7 +3217,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1826,7 +3226,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1845,6 +3245,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1868,6 +3269,61 @@ "node": ">= 16.0.0" } }, + "exercises/05.complex-structures/02.solution.lists/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/05.complex-structures/03.problem.add-remove": { "name": "exercises__sep__05.complex-structures__sep__03.problem.add-remove", "dependencies": { @@ -1888,7 +3344,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1897,7 +3353,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1916,6 +3372,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -1936,7 +3393,62 @@ "resolved": "https://registry.npmjs.org/address/-/address-2.0.1.tgz", "integrity": "sha512-Fd3nPUe+kPZ0P70sGkV8dAUchT3pQCyTPQO5xW9580oqVBPJe2PtWtK7KGnQBvgTrloWAOvOoX8DksyuIWssvQ==", "engines": { - "node": ">= 16.0.0" + "node": ">= 16.0.0" + } + }, + "exercises/05.complex-structures/03.problem.add-remove/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } } }, "exercises/05.complex-structures/03.solution.add-remove": { @@ -1959,7 +3471,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -1968,7 +3480,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -1987,6 +3499,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2010,6 +3523,61 @@ "node": ">= 16.0.0" } }, + "exercises/05.complex-structures/03.solution.add-remove/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/06.honeypot/01.problem.basic": { "name": "exercises__sep__06.honeypot__sep__01.problem.basic", "dependencies": { @@ -2030,7 +3598,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2039,7 +3607,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2058,6 +3626,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2081,6 +3650,61 @@ "node": ">= 16.0.0" } }, + "exercises/06.honeypot/01.problem.basic/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/06.honeypot/01.solution.basic": { "name": "exercises__sep__06.honeypot__sep__01.solution.basic", "dependencies": { @@ -2101,7 +3725,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2110,7 +3734,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2129,6 +3753,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2152,6 +3777,61 @@ "node": ">= 16.0.0" } }, + "exercises/06.honeypot/01.solution.basic/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/06.honeypot/02.problem.util": { "name": "exercises__sep__06.honeypot__sep__02.problem.util", "dependencies": { @@ -2172,7 +3852,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2181,7 +3861,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2200,6 +3880,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2223,6 +3904,61 @@ "node": ">= 16.0.0" } }, + "exercises/06.honeypot/02.problem.util/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/06.honeypot/02.solution.util": { "name": "exercises__sep__06.honeypot__sep__02.solution.util", "dependencies": { @@ -2243,7 +3979,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2252,7 +3988,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2271,6 +4007,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2294,6 +4031,61 @@ "node": ">= 16.0.0" } }, + "exercises/06.honeypot/02.solution.util/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/06.honeypot/03.problem.provider": { "name": "exercises__sep__06.honeypot__sep__03.problem.provider", "dependencies": { @@ -2314,7 +4106,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2323,7 +4115,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2342,6 +4134,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2365,6 +4158,61 @@ "node": ">= 16.0.0" } }, + "exercises/06.honeypot/03.problem.provider/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/06.honeypot/03.solution.provider": { "name": "exercises__sep__06.honeypot__sep__03.solution.provider", "dependencies": { @@ -2385,7 +4233,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2394,7 +4242,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2413,6 +4261,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2436,6 +4285,61 @@ "node": ">= 16.0.0" } }, + "exercises/06.honeypot/03.solution.provider/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/06.honeypot/04.problem.seed": { "name": "exercises__sep__06.honeypot__sep__04.problem.seed", "dependencies": { @@ -2456,7 +4360,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2465,7 +4369,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2484,6 +4388,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2507,6 +4412,61 @@ "node": ">= 16.0.0" } }, + "exercises/06.honeypot/04.problem.seed/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/06.honeypot/04.solution.seed": { "name": "exercises__sep__06.honeypot__sep__04.solution.seed", "dependencies": { @@ -2527,7 +4487,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2536,7 +4496,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2555,6 +4515,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2578,6 +4539,61 @@ "node": ">= 16.0.0" } }, + "exercises/06.honeypot/04.solution.seed/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/07.csrf/01.problem.setup": { "name": "exercises__sep__07.csrf__sep__01.problem.setup", "dependencies": { @@ -2598,7 +4614,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2607,7 +4623,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2626,6 +4642,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2649,6 +4666,61 @@ "node": ">= 16.0.0" } }, + "exercises/07.csrf/01.problem.setup/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/07.csrf/01.solution.setup": { "name": "exercises__sep__07.csrf__sep__01.solution.setup", "dependencies": { @@ -2669,7 +4741,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2678,7 +4750,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2697,6 +4769,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2720,6 +4793,61 @@ "node": ">= 16.0.0" } }, + "exercises/07.csrf/01.solution.setup/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/07.csrf/02.problem.verification": { "name": "exercises__sep__07.csrf__sep__02.problem.verification", "dependencies": { @@ -2740,7 +4868,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2749,7 +4877,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2768,6 +4896,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2791,6 +4920,61 @@ "node": ">= 16.0.0" } }, + "exercises/07.csrf/02.problem.verification/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/07.csrf/02.solution.verification": { "name": "exercises__sep__07.csrf__sep__02.solution.verification", "dependencies": { @@ -2811,7 +4995,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2820,7 +5004,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2839,6 +5023,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2862,6 +5047,61 @@ "node": ">= 16.0.0" } }, + "exercises/07.csrf/02.solution.verification/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/08.rate-limiting/01.problem.basic": { "name": "exercises__sep__08.rate-limiting__sep__01.problem.basic", "dependencies": { @@ -2882,7 +5122,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2891,7 +5131,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2910,6 +5150,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -2933,6 +5174,61 @@ "node": ">= 16.0.0" } }, + "exercises/08.rate-limiting/01.problem.basic/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/08.rate-limiting/01.solution.basic": { "name": "exercises__sep__08.rate-limiting__sep__01.solution.basic", "dependencies": { @@ -2953,7 +5249,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -2962,7 +5258,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -2981,6 +5277,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -3004,6 +5301,61 @@ "node": ">= 16.0.0" } }, + "exercises/08.rate-limiting/01.solution.basic/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/08.rate-limiting/02.problem.tuned": { "name": "exercises__sep__08.rate-limiting__sep__02.problem.tuned", "dependencies": { @@ -3024,7 +5376,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -3033,7 +5385,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -3052,6 +5404,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -3075,6 +5428,61 @@ "node": ">= 16.0.0" } }, + "exercises/08.rate-limiting/02.problem.tuned/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "exercises/08.rate-limiting/02.solution.tuned": { "name": "exercises__sep__08.rate-limiting__sep__02.solution.tuned", "dependencies": { @@ -3095,7 +5503,7 @@ "close-with-grace": "^1.2.0", "clsx": "^2.0.0", "compression": "^1.7.4", - "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", "express": "^4.18.2", "express-rate-limit": "^7.1.0", "get-port": "^7.0.0", @@ -3104,7 +5512,7 @@ "morgan": "^1.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "remix-utils": "npm:@kentcdodds/tmp-remix-utils@7.0.0-pre.8", + "remix-utils": "^7.0.2", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", "tailwindcss-animate": "^1.0.7", @@ -3123,6 +5531,7 @@ "@types/react-dom": "^18.2.10", "autoprefixer": "^10.4.16", "chokidar": "^3.5.3", + "cross-env": "^7.0.3", "esbuild": "^0.19.4", "eslint": "^8.50.0", "eslint-config-prettier": "^9.0.0", @@ -3146,6 +5555,61 @@ "node": ">= 16.0.0" } }, + "exercises/08.rate-limiting/02.solution.tuned/node_modules/remix-utils": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/remix-utils/-/remix-utils-7.0.2.tgz", + "integrity": "sha512-BsGmOgUzbT+Ui0hlWe5XR37N/MAbOSRyKBkxs8yckU+VOCzIuSRiOPk6qK+Hch4F18QSMRm/5IlrsROtrM1l2A==", + "dependencies": { + "type-fest": "^4.3.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@remix-run/cloudflare": "^2.0.0", + "@remix-run/deno": "^2.0.0", + "@remix-run/node": "^2.0.0", + "@remix-run/react": "^2.0.0", + "@remix-run/router": "^1.7.2", + "crypto-js": "^4.1.1", + "intl-parse-accept-language": "^1.0.0", + "is-ip": "^5.0.1", + "react": "^18.0.0", + "zod": "^3.22.4" + }, + "peerDependenciesMeta": { + "@remix-run/cloudflare": { + "optional": true + }, + "@remix-run/deno": { + "optional": true + }, + "@remix-run/node": { + "optional": true + }, + "@remix-run/react": { + "optional": true + }, + "@remix-run/router": { + "optional": true + }, + "crypto-js": { + "optional": true + }, + "intl-parse-accept-language": { + "optional": true + }, + "is-ip": { + "optional": true + }, + "react": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -13505,22 +15969,6 @@ "node": ">= 0.4" } }, - "node_modules/intl-parse-accept-language": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/intl-parse-accept-language/-/intl-parse-accept-language-1.0.0.tgz", - "integrity": "sha512-YFMSV91JNBOSjw1cOfw2tup6hDP7mkz+2AUV7W1L1AM6ntgI75qC1ZeFpjPGMrWp+upmBRTX2fJWQ8c7jsUWpA==", - "engines": { - "node": ">=14" - } - }, - "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "engines": { - "node": ">=8" - } - }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -13801,17 +16249,6 @@ "node": ">=8" } }, - "node_modules/is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "dependencies": { - "ip-regex": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", @@ -18524,41 +20961,6 @@ "node": ">=10" } }, - "node_modules/remix-utils": { - "name": "@kentcdodds/tmp-remix-utils", - "version": "7.0.0-pre.8", - "resolved": "https://registry.npmjs.org/@kentcdodds/tmp-remix-utils/-/tmp-remix-utils-7.0.0-pre.8.tgz", - "integrity": "sha512-1ZSiRfrAtz9O49350jTscMMq1etJKbQzScQpbqd/8s3dLT/7QtXneXNuEftkM2o5ATe+mUiGO6m+uVPyvFKrJw==", - "dependencies": { - "crypto-js": "^4.1.1", - "intl-parse-accept-language": "^1.0.0", - "is-ip": "^3.1.0", - "schema-dts": "^1.1.0", - "type-fest": "^2.5.2", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@remix-run/react": "^1.19.1", - "@remix-run/router": "^1.7.2", - "@remix-run/server-runtime": "^1.19.1", - "react": "^18.0.0", - "zod": "^3.19.1" - } - }, - "node_modules/remix-utils/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -18857,14 +21259,6 @@ "loose-envify": "^1.1.0" } }, - "node_modules/schema-dts": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.2.tgz", - "integrity": "sha512-MpNwH0dZJHinVxk9bT8XUdjKTxMYrA5bLtrrGmFA6PTLwlOKnhi67XoRd6/ty+Djt6ZC0slR57qFhZDNMI6DhQ==", - "peerDependencies": { - "typescript": ">=4.1.0" - } - }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",