From f614b064a0be6fd892b9fcdfa7398bd9e8772787 Mon Sep 17 00:00:00 2001 From: Don Strawsburg Date: Mon, 3 Feb 2025 12:57:15 -0500 Subject: [PATCH] fixed package.json and a rfew othr things --- package-lock.json | 231 ++++++++++++++----------- package.json | 4 +- src/actions/userActions.ts | 10 ++ src/components/ButtonProduct/index.tsx | 8 + src/components/Filter/index.tsx | 17 +- src/components/Footer/index.tsx | 61 ++++--- src/components/SortTable/index.tsx | 2 +- src/lib/auth/validate-request.ts | 2 +- 8 files changed, 205 insertions(+), 130 deletions(-) create mode 100644 src/components/ButtonProduct/index.tsx diff --git a/package-lock.json b/package-lock.json index a3673ac..6d046fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "balistics-builder", "version": "0.2.0", "dependencies": { - "@clerk/nextjs": "^6.10.0", + "@clerk/nextjs": "^6.10.6", "@emotion/react": "^11.13.5", "@emotion/styled": "^11.13.5", "@headlessui/react": "^2.2.0", @@ -79,6 +79,8 @@ "@types/react": "^18", "@types/react-dom": "^18", "@types/uuid": "^10.0.0", + "@typescript-eslint/eslint-plugin": "^8.22.0", + "@typescript-eslint/parser": "^8.22.0", "autoprefixer": "^10.4.20", "csv-parse": "^5.6.0", "csv-parser": "^3.0.0", @@ -86,6 +88,7 @@ "drizzle-orm": "^0.38.4", "eslint": "^8", "eslint-config-next": "15.0.3", + "eslint-plugin-drizzle": "^0.2.3", "fs": "0.0.1-security", "next-auth": "^5.0.0-beta.25", "postcss": "^8.5.1", @@ -332,13 +335,13 @@ } }, "node_modules/@clerk/backend": { - "version": "1.23.5", - "resolved": "https://registry.npmjs.org/@clerk/backend/-/backend-1.23.5.tgz", - "integrity": "sha512-3HVYa1qiOIny+45V5UBwVfMRZDXl4deVfjFMPvmAYbAiNqY39TgtHdMnDsGZF09eOUnnpTu/6jV4doPLdmWHWg==", + "version": "1.23.11", + "resolved": "https://registry.npmjs.org/@clerk/backend/-/backend-1.23.11.tgz", + "integrity": "sha512-N5CYCnVbSVXUkQg9oAAAf9r/kfPmBGxMqjzslDC9Tl3rkXFTkWjkBNnToB6We2ySdrmqiQGR/+/c4mS9XRbaOQ==", "license": "MIT", "dependencies": { - "@clerk/shared": "^2.20.12", - "@clerk/types": "^4.42.0", + "@clerk/shared": "^2.20.18", + "@clerk/types": "^4.45.0", "cookie": "1.0.2", "snakecase-keys": "8.0.1", "tslib": "2.4.1" @@ -363,13 +366,13 @@ "license": "0BSD" }, "node_modules/@clerk/clerk-react": { - "version": "5.22.4", - "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-5.22.4.tgz", - "integrity": "sha512-uDUczpvP4PgTp3mDEd+ITka4yVdQUrU3pVxWBb4Q81XGHDF9GCPb5XbDjV0iR8gB0txI9xopXwUez5/T4VZRVA==", + "version": "5.22.10", + "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-5.22.10.tgz", + "integrity": "sha512-3tTUt+3w5E+4ePl+6q6ugNTgjyjQw000nouXRngCEorDC2545Lc2HTZ37n1W8WuTx2BN32Rerjf2UJDmpRqrYg==", "license": "MIT", "dependencies": { - "@clerk/shared": "^2.20.12", - "@clerk/types": "^4.42.0", + "@clerk/shared": "^2.20.18", + "@clerk/types": "^4.45.0", "tslib": "2.4.1" }, "engines": { @@ -387,15 +390,15 @@ "license": "0BSD" }, "node_modules/@clerk/nextjs": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@clerk/nextjs/-/nextjs-6.10.0.tgz", - "integrity": "sha512-s6srzAxMStgP2UBsgSNyWECt+c7s/Zq+/qLAk05O17HXTjb1ydmK/cGxJI5JS9MYv49Z88Ct3AL9CiUbGv/0bA==", + "version": "6.10.6", + "resolved": "https://registry.npmjs.org/@clerk/nextjs/-/nextjs-6.10.6.tgz", + "integrity": "sha512-/Pn/DxwGRJF4RM/yVOjZv7ogwE9z5MjUmzcQxZhnbf/wiEj/lP/kTEFEgjo77qBPVAGjm7tHzvsecYyCx0iExA==", "license": "MIT", "dependencies": { - "@clerk/backend": "^1.23.5", - "@clerk/clerk-react": "^5.22.4", - "@clerk/shared": "^2.20.12", - "@clerk/types": "^4.42.0", + "@clerk/backend": "^1.23.11", + "@clerk/clerk-react": "^5.22.10", + "@clerk/shared": "^2.20.18", + "@clerk/types": "^4.45.0", "crypto-js": "4.2.0", "server-only": "0.0.1", "tslib": "2.4.1" @@ -416,13 +419,13 @@ "license": "0BSD" }, "node_modules/@clerk/shared": { - "version": "2.20.12", - "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-2.20.12.tgz", - "integrity": "sha512-uy9Z2h0VXbQ4xwjj8mKuQSwm8MEFTAec+3gu4MSTyc1WboaPfX3MnO3qjqJEwu/oQkakocVI0P3nViYbXokZtQ==", + "version": "2.20.18", + "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-2.20.18.tgz", + "integrity": "sha512-vSQLZSRFr62+YeE1KE/Xu/eWCrwYJRNA2KRyQYmb2VPleFNmOjtTNlO4xkMZ0eN6BLKxrBo9b0NVwu3L28FhKg==", "hasInstallScript": true, "license": "MIT", "dependencies": { - "@clerk/types": "^4.42.0", + "@clerk/types": "^4.45.0", "dequal": "2.0.3", "glob-to-regexp": "0.4.1", "js-cookie": "3.0.5", @@ -446,9 +449,9 @@ } }, "node_modules/@clerk/types": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.42.0.tgz", - "integrity": "sha512-SPBRHdP+ZggeudncbSj8KLOZ5PdVmtgZhL+tXremVJrETi9WHpf1UOYgnIHl+clp6GZC2IQM4tq57RSrHf0Oew==", + "version": "4.45.0", + "resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.45.0.tgz", + "integrity": "sha512-DSXPWq1xD01tzyHv7CugX2T/XfVUZX2xxQ92cs+JPTrGoqIYm+yjRWqOz1CVJ/76TbYMOrB0efCGOxEcNV/PQw==", "license": "MIT", "dependencies": { "csstype": "3.1.1" @@ -4875,20 +4878,21 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz", - "integrity": "sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.23.0.tgz", + "integrity": "sha512-vBz65tJgRrA1Q5gWlRfvoH+w943dq9K1p1yDBY2pc+a1nbBLZp7fB9+Hk8DaALUbzjqlMfgaqlVPT1REJdkt/w==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.14.0", - "@typescript-eslint/type-utils": "8.14.0", - "@typescript-eslint/utils": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0", + "@typescript-eslint/scope-manager": "8.23.0", + "@typescript-eslint/type-utils": "8.23.0", + "@typescript-eslint/utils": "8.23.0", + "@typescript-eslint/visitor-keys": "8.23.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4899,24 +4903,21 @@ }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.14.0.tgz", - "integrity": "sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.23.0.tgz", + "integrity": "sha512-h2lUByouOXFAlMec2mILeELUbME5SZRN/7R9Cw2RD2lRQQY08MWMM+PmVVKKJNK1aIwqTo9t/0CvOxwPbRIE2Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.14.0", - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/typescript-estree": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0", + "@typescript-eslint/scope-manager": "8.23.0", + "@typescript-eslint/types": "8.23.0", + "@typescript-eslint/typescript-estree": "8.23.0", + "@typescript-eslint/visitor-keys": "8.23.0", "debug": "^4.3.4" }, "engines": { @@ -4927,22 +4928,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz", - "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.23.0.tgz", + "integrity": "sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0" + "@typescript-eslint/types": "8.23.0", + "@typescript-eslint/visitor-keys": "8.23.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4953,15 +4951,16 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz", - "integrity": "sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.23.0.tgz", + "integrity": "sha512-iIuLdYpQWZKbiH+RkCGc6iu+VwscP5rCtQ1lyQ7TYuKLrcZoeJVpcLiG8DliXVkUxirW/PWlmS+d6yD51L9jvA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.14.0", - "@typescript-eslint/utils": "8.14.0", + "@typescript-eslint/typescript-estree": "8.23.0", + "@typescript-eslint/utils": "8.23.0", "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4970,17 +4969,17 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz", - "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.23.0.tgz", + "integrity": "sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -4990,19 +4989,20 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz", - "integrity": "sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.23.0.tgz", + "integrity": "sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0", + "@typescript-eslint/types": "8.23.0", + "@typescript-eslint/visitor-keys": "8.23.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5011,10 +5011,8 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { @@ -5022,21 +5020,23 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -5047,6 +5047,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -5059,6 +5060,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -5070,15 +5072,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz", - "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.23.0.tgz", + "integrity": "sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.14.0", - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/typescript-estree": "8.14.0" + "@typescript-eslint/scope-manager": "8.23.0", + "@typescript-eslint/types": "8.23.0", + "@typescript-eslint/typescript-estree": "8.23.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5088,17 +5091,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz", - "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.23.0.tgz", + "integrity": "sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.14.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.23.0", + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5108,6 +5113,19 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -7217,6 +7235,16 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-plugin-drizzle": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-drizzle/-/eslint-plugin-drizzle-0.2.3.tgz", + "integrity": "sha512-BO+ymHo33IUNoJlC0rbd7HP9EwwpW4VIp49R/tWQF/d2E1K2kgTf0tCXT0v9MSiBr6gGR1LtPwMLapTKEWSg9A==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "eslint": ">=8.0.0" + } + }, "node_modules/eslint-plugin-import": { "version": "2.31.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", @@ -11127,15 +11155,16 @@ } }, "node_modules/ts-api-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", - "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=4.8.4" } }, "node_modules/ts-interface-checker": { diff --git a/package.json b/package.json index b8354c4..9b2080a 100644 --- a/package.json +++ b/package.json @@ -3,13 +3,13 @@ "version": "0.2.0", "private": "true", "scripts": { - "dev": "next dev --turbopack", + "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { - "@clerk/nextjs": "^6.10.0", + "@clerk/nextjs": "^6.10.6", "@emotion/react": "^11.13.5", "@emotion/styled": "^11.13.5", "@headlessui/react": "^2.2.0", diff --git a/src/actions/userActions.ts b/src/actions/userActions.ts index 0966fe5..b99bb92 100644 --- a/src/actions/userActions.ts +++ b/src/actions/userActions.ts @@ -68,6 +68,16 @@ export const editUser = async (id: string, first_name: string, last_name: string revalidatePath("/"); }; +export const isAdmin = async (userId: string): Promise => { + const data = await db.select().from(users).where(eq(users.id, userId)); + if(!data[0] == null){ + return false; + } else { + return data[0].isAdmin; + } + +} + export const makeAdmin = async ( email : string) => { await db .update(users) diff --git a/src/components/ButtonProduct/index.tsx b/src/components/ButtonProduct/index.tsx new file mode 100644 index 0000000..fbfa1b9 --- /dev/null +++ b/src/components/ButtonProduct/index.tsx @@ -0,0 +1,8 @@ +"use client"; +const ButtonProducts = ( props:any ) => { + const category = props.category; + return ( + + ) +} +export default ButtonProducts; \ No newline at end of file diff --git a/src/components/Filter/index.tsx b/src/components/Filter/index.tsx index 89f425a..810ef9b 100644 --- a/src/components/Filter/index.tsx +++ b/src/components/Filter/index.tsx @@ -1,19 +1,26 @@ import React from "react"; import { getBBProductsCategories } from "@/db/queries/Products"; -import Link from "next/link"; +// import Link from "next/link"; +import ButtonProducts from "../ButtonProduct"; -const Filter: React.FC<{ [key: string]: any }> = async (props: unknown) => { +interface FilterProps { + heading: string; + [key: string]: unknown; +} + +const Filter: React.FC = async (props) => { const bbCats = getBBProductsCategories(); return (

{props.heading}

+ {(await bbCats).map((cat) => (
- alert("Coming")}> - {cat.category} - + {/* */} + + {/* */}
)) } diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx index 0ed1301..c7bbdb4 100644 --- a/src/components/Footer/index.tsx +++ b/src/components/Footer/index.tsx @@ -1,40 +1,43 @@ import Link from "next/link"; import constants from "@/lib/constants"; +import { validateRequest } from "@/lib/auth/validate-request"; +import { isAdmin } from "@/actions/userActions"; const navigation = { armory: [ - { name: 'Builder', href: '/Builder' }, - { name: 'Lowers', href: '/Products/lowers' }, - { name: 'Uppers', href: '/Products/uppers' }, - { name: 'Optics', href: '/Products/optics' }, - { name: 'Accessories', href: '/Products/accessories' }, - { name: 'Suppressors', href: '/Products/suppressors' }, + { name: 'Builder', href: '/Builder', role: null }, + { name: 'Lowers', href: '/Products/lowers', role: null }, + { name: 'Uppers', href: '/Products/uppers', role: null }, + { name: 'Optics', href: '/Products/optics', role: null }, + { name: 'Accessories', href: '/Products/accessories', role: null }, + { name: 'Suppressors', href: '/Products/suppressors', role: null }, ], admin: [ - { name: 'Users', href: '/Admin/Users' }, + { name: 'Users', href: '/Admin/Users', role: "Admin" }, ], account: [ - { name: 'Accounts', href: '/Admin/Accounts' }, - { name: 'My Account', href: '/MyAccount' }, - { name: 'Register', href: '/login' }, - { name: 'Guides', href: '/Guides' }, + { name: 'Accounts', href: '/Admin/Accounts', role: null }, + { name: 'My Account', href: '/MyAccount', role: null }, + { name: 'Register', href: '/login', role: null }, + { name: 'Guides', href: '/Guides', role: null }, ], about: [ - { name: 'About', href: '/About' }, - { name: 'Blog', href: '/Blog' }, - { name: 'Jobs', href: '/Jobs' }, - { name: 'Press', href: '/Press' }, - { name: 'Contact', href: '/Contact' }, + { name: 'About', href: '/About', role: null }, + { name: 'Blog', href: '/Blog', role: null }, + { name: 'Jobs', href: '/Jobs', role: null }, + { name: 'Press', href: '/Press', role: null }, + { name: 'Contact', href: '/Contact', role: null }, ], legal: [ - { name: 'Terms of service', href: '/TOS' }, - { name: 'Privacy policy', href: '/PP' }, - { name: 'Affiliate Disclosure', href: '/Disclosure' }, + { name: 'Terms of service', href: '/TOS', role: null }, + { name: 'Privacy policy', href: '/PP', role: null }, + { name: 'Affiliate Disclosure', href: '/Disclosure', role: null }, ], social: [ { name: 'Facebook', href: '#', + role: null, icon: (props: any) => ( ( ( @@ -70,6 +75,7 @@ const navigation = { { name: 'YouTube', href: '#', + role: null, icon: (props: any) => ( +
{message}should be something here
@@ -117,6 +136,7 @@ export default function Footer() { ))}
+ {(isAdminFlag) ?

Administration

    @@ -130,6 +150,7 @@ export default function Footer() { ))}
+ :""}
diff --git a/src/components/SortTable/index.tsx b/src/components/SortTable/index.tsx index 7e46262..00bc6c7 100644 --- a/src/components/SortTable/index.tsx +++ b/src/components/SortTable/index.tsx @@ -120,7 +120,7 @@ export default async function SortTable(props: any) { type="button" className="inline-flex items-center gap-x-1.5 rounded-xl bg-lime-800 px-2.5 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-lime-900 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-lime-900" > - Add + Add to Build