diff --git a/.github/workflows/issues-from-TODO-comments.yml b/.github/workflows/issues-from-TODO-comments.yml index 26030a3..aece011 100644 --- a/.github/workflows/issues-from-TODO-comments.yml +++ b/.github/workflows/issues-from-TODO-comments.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: inputs: importAll: - default: 'false' + default: false required: false type: boolean description: Enable, if you want to import all TODOs. Runs on checked out branch! Only use if you're sure what you are doing. @@ -27,6 +27,6 @@ jobs: - name: Run Issue Bot uses: derjuulsn/todo-issue@main with: - excludePattern: '^(node_modules/)' + excludePattern: "^(node_modules/)" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..7748066 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,45 @@ +name: Release +on: + push: + branches: + - main +jobs: + release: + name: Release + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: "lts/*" + - uses: pnpm/action-setup@v2.0.1 + name: Install pnpm + id: pnpm-install + with: + version: 7 + run_install: false + + - name: Get pnpm store directory + id: pnpm-cache + run: | + echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" + + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: pnpm install + + - name: Release + env: + GITHUB_TOKEN: ${{ secrets.GH_PAT }} + run: pnpx semantic-release diff --git a/.vscode/launch.json b/.vscode/launch.json index 2162ab4..d7a49f8 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,41 +1,59 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", "configurations": [ { - "name": "Next.js: debug server-side", + "name": "Next.js: app:web", "type": "node-terminal", "request": "launch", - "command": "pnpm dev" + "command": "pnpx turbo run dev --filter '!*docs'", + // "cwd": "${workspaceFolder:✨ @joekarow/netwerkr}", + "sourceMaps": true, }, { - "name": "Next.js: debug client-side", + "type": "firefox", "request": "launch", - "type": "chrome", - "runtimeExecutable": "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser", - // "runtimeArgs": ["--remote-debugging-port=9222"], - "port": 9222, + "reAttach": true, + "name": "Launch Firefox Dev", "url": "http://localhost:3000", - "webRoot": "${workspaceFolder}", - "outFiles": [ - "${workspaceFolder}/**/*.js", - "!**/node_modules/**" + "webRoot": "${workspaceFolder:🚀 @joekarow/netwerkr-web}/", + "enableCRAWorkaround": true, + "skipFiles": [ + "**/node_modules/**", + "/**/*.js" + ], + "showConsoleCallLocation": true, + "suggestPathMappingWizard": true, + "pathMappings": [ + { + "url": "webpack://_n_e/packages", + "path": "${workspaceFolder}/packages" + } ] }, + // { + // "name": "Next.js: debug web", + // "request": "launch", + // "type": "chrome", + // "runtimeExecutable": "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser", + // "port": 9222, + // "url": "http://localhost:3000", + // "cwd": "${workspaceFolder:🚀 @joekarow/netwerkr-web}", + // "webRoot": "${workspaceFolder:🚀 @joekarow/netwerkr-web}/", + // "sourceMaps": true, + // "resolveSourceMapLocations": [ + // "${webRoot}", + // "${workspaceFolder}", + // "!node_modules" + // ] + // }, + ], + "compounds": [ { - "name": "Next.js: debug full stack", - "type": "node-terminal", - "request": "launch", - "command": "pnpm run dev", - "outputCapture": "std", - // "console": "integratedTerminal", - "serverReadyAction": { - "pattern": "started server on .+, url: (https?://.+)", - "action": "startDebugging", - "name": "Next.js: debug client-side", - } + "name": "Debug netwerkr w/ Firefox Dev", + "configurations": [ + "Next.js: app:web", + "Launch Firefox Dev" + ], + "stopAll": true } ] } \ No newline at end of file diff --git a/apps/docs/.eslintrc.js b/apps/docs/.eslintrc.js deleted file mode 100644 index a45ee88..0000000 --- a/apps/docs/.eslintrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - root: true, - extends: [ "@joekarow/eslint-config-netwerkr" ], -}; diff --git a/apps/docs/.lintstagedrc.js b/apps/docs/.lintstagedrc.js deleted file mode 100644 index eedb5b8..0000000 --- a/apps/docs/.lintstagedrc.js +++ /dev/null @@ -1,10 +0,0 @@ -const path = require('path'); - -const buildEslintCommand = (filenames) => - `next lint --fix --file ${filenames - .map((f) => path.relative(process.cwd(), f)) - .join(' --file ')}`; - -module.exports = { - '*.{js,jsx,ts,tsx}': [buildEslintCommand], -}; diff --git a/apps/docs/README.md b/apps/docs/README.md deleted file mode 100644 index 1d67ece..0000000 --- a/apps/docs/README.md +++ /dev/null @@ -1,30 +0,0 @@ -## Getting Started - -First, run the development server: - -```bash -yarn dev -``` - -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file. - -[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`. - -The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_source=github.com&utm_medium=referral&utm_campaign=turborepo-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. diff --git a/apps/docs/next-env.d.ts b/apps/docs/next-env.d.ts deleted file mode 100644 index 4f11a03..0000000 --- a/apps/docs/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/apps/docs/next.config.js b/apps/docs/next.config.js deleted file mode 100644 index 01b3475..0000000 --- a/apps/docs/next.config.js +++ /dev/null @@ -1,5 +0,0 @@ -const withTM = require( "next-transpile-modules" )( [ "@joekarow/netwerkr-ui" ] ); - -module.exports = withTM( { - reactStrictMode: true, -} ); diff --git a/apps/docs/package.json b/apps/docs/package.json deleted file mode 100644 index ca16856..0000000 --- a/apps/docs/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "docs", - "version": "0.0.0", - "private": true, - "scripts": { - "dev": "next dev --port 3001", - "build": "next build", - "start": "next start", - "lint": "next lint" - }, - "lint-staged": { - "*": "next lint" - }, - "dependencies": { - "@joekarow/eslint-config-netwerkr": "workspace:^1.0.0", - "@joekarow/netwerkr-ui": "workspace:*", - "next": "^12.1.6", - "react": "^18.1.0", - "react-dom": "^18.1.0" - }, - "devDependencies": { - "@joekarow/netwerkr-config": "workspace:*", - "@types/node": "^17.0.45", - "@types/react": "18.0.14", - "eslint": "8.18.0", - "next-transpile-modules": "9.0.0", - "typescript": "^4.7.3" - } -} \ No newline at end of file diff --git a/apps/docs/pages/index.tsx b/apps/docs/pages/index.tsx deleted file mode 100644 index ce3ea5c..0000000 --- a/apps/docs/pages/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Button } from "@joekarow/netwerkr-ui/Button"; - -export default function Docs() { - return ( -
-

Docs

-
- ); -} diff --git a/apps/docs/tsconfig.json b/apps/docs/tsconfig.json deleted file mode 100644 index 962ed6b..0000000 --- a/apps/docs/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "@joekarow/netwerkr-config/tsconfig/nextjs.json", - "include": [ - "next-env.d.ts", - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file diff --git a/apps/web/package.json b/apps/web/package.json index e4625a2..8f3ef86 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -7,12 +7,7 @@ "build": "next build", "start": "next start", "lint": "next lint", - "db": "", - "db:push": "prisma db push", - "db:generate": "prisma generate", - "db:studio": "prisma studio", - "test": "jest", - "postinstall": "pnpm db:generate" + "test": "jest" }, "lint-staged": { "*": "next lint" @@ -21,12 +16,9 @@ "@joekarow/eslint-config-netwerkr": "workspace:^1.0.0", "@joekarow/netwerkr-lib": "workspace:^1.0.0", "@joekarow/netwerkr-ui": "workspace:*", - "@next-auth/mongodb-adapter": "^1.0.3", "@next-auth/prisma-adapter": "^1.0.3", - "@prisma/client": "^3.15.2", "axios": "^0.27.2", "dotenv": "^16.0.1", - "mongodb": "^4.7.0", "next": "^12.1.6", "next-auth": "^4.4.0", "react": "^18.1.0", @@ -46,7 +38,6 @@ "jest-environment-jsdom": "^28.1.1", "msw": "^0.42.1", "next-transpile-modules": "9.0.0", - "prisma": "^3.15.2", "typescript": "^4.7.3" } } \ No newline at end of file diff --git a/apps/web/pages/api/auth/[...nextauth].js b/apps/web/pages/api/auth/[...nextauth].js index fda51d8..5bd2b29 100644 --- a/apps/web/pages/api/auth/[...nextauth].js +++ b/apps/web/pages/api/auth/[...nextauth].js @@ -2,14 +2,14 @@ import NextAuth from "next-auth" import TwitterProvider from 'next-auth/providers/twitter' import Auth0Provider from 'next-auth/providers/auth0' import { PrismaAdapter } from "@next-auth/prisma-adapter" -import { PrismaClient } from "@prisma/client" +import prisma from '@joekarow/netwerkr-lib/prisma' // For more information on each option (and a full list of options) go to // https://next-auth.js.org/configuration/options -const prisma = new PrismaClient() + export default NextAuth( { adapter: PrismaAdapter( prisma ), @@ -19,6 +19,11 @@ export default NextAuth( { clientId: process.env.TWITTER_ID, clientSecret: process.env.TWITTER_SECRET, version: "2.0", + authorization: { + params: { + scope: 'tweet.read users.read list.read list.write' + } + }, } ), Auth0Provider( { clientId: process.env.AUTH0_CLIENT_ID, @@ -30,6 +35,19 @@ export default NextAuth( { maxAge: 7 * 24 * 60 * 60, // 7 days updateAge: 24 * 60 * 60 // 24 hours }, + callbacks: { + async session ( { session, user } ) { + session.user.id = user.id + session.user.role = user.role + return session + }, + async signIn ( { user, account, profile } ) { + if ( user.disabled ) return false + return true + + } + }, + debug: true, } ) diff --git a/apps/web/pages/dash/profile/[uid].jsx b/apps/web/pages/dash/profile/[uid].jsx new file mode 100644 index 0000000..b10473c --- /dev/null +++ b/apps/web/pages/dash/profile/[uid].jsx @@ -0,0 +1,38 @@ +import React from "react"; +import { getContact } from '@joekarow/netwerkr-lib/db' +import { DashLayout } from '@joekarow/netwerkr-ui/layout' +import { ProfileGrid } from '@joekarow/netwerkr-ui/section' +import { JsonView } from '@joekarow/netwerkr-ui/devtools' + +const Profile = ( props ) => { + const { data } = props + // console.log( data ) + return ( + <> + + + + ) + + + + +} +Profile.getLayout = ( page ) => { + return ( + + { page } + + ) +} + +export const getServerSideProps = async ( { params } ) => { + const data = await getContact( params.uid ) + + if ( !data ) return { notFound: true } + + return { + props: { data } + } +} +export default Profile diff --git a/apps/web/prisma/schema.prisma b/apps/web/prisma/schema.prisma deleted file mode 100644 index bca6442..0000000 --- a/apps/web/prisma/schema.prisma +++ /dev/null @@ -1,50 +0,0 @@ -generator client { - provider = "prisma-client-js" -} - -datasource db { - provider = "mongodb" - url = env("MONGODB_URI") -} - -model Account { - id String @id @default(auto()) @map("_id") @db.ObjectId - userId String @db.ObjectId - type String - provider String - providerAccountId String - refresh_token String? - access_token String? - expires_at Int? - token_type String? - scope String? - id_token String? - session_state String? - - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - - - @@unique([provider, providerAccountId]) -} - -model netwerkr { - id String @id @default(auto()) @map("_id") @db.ObjectId -} - -model Session { - id String @id @default(auto()) @map("_id") @db.ObjectId - sessionToken String @unique - userId String - expires DateTime - user User @relation(fields: [userId], references: [id], onDelete: Cascade) -} - -model User { - id String @id @default(auto()) @map("_id") @db.ObjectId - name String? - email String? @unique - emailVerified DateTime? - image String? - accounts Account[] - sessions Session[] -} diff --git a/package.json b/package.json index 1e93de2..955d68b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@joekarow/netwerkr", - "version": "0.0.0", + "version": "0.0.0-development", "private": true, "workspaces": [ "apps/*", @@ -17,6 +17,7 @@ "db": "turbo run db", "db:push": "turbo run db:push", "db:generate": "turbo run db:generate", + "db:seed": "turbo run db:seed", "db:studio": "turbo run db:studio", "test": "turbo run test" }, @@ -28,6 +29,9 @@ "@joekarow/netwerkr-config": "workspace:^0.0.0", "commitizen": "^4.2.4", "cz-git": "^1.3.5", + "eslint": "^8.18.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-next": "^0.0.0", "husky": "^8.0.1", "lint-staged": "^13.0.2", "prettier": "latest", @@ -36,7 +40,7 @@ }, "engines": { "pnpm": ">=7.1.7", - "node": ">=14.0.0" + "node": ">=16.0.0" }, "packageManager": "pnpm@7.3.0", "config": { @@ -57,5 +61,9 @@ }, "dependencies": { "@joekarow/eslint-config-netwerkr": "workspace:^1.0.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/JoeKarow/netwerkr.git" } } \ No newline at end of file diff --git a/packages/eslint-config-netwerkr/package.json b/packages/eslint-config-netwerkr/package.json index f40dc41..102bdf5 100644 --- a/packages/eslint-config-netwerkr/package.json +++ b/packages/eslint-config-netwerkr/package.json @@ -11,9 +11,11 @@ "@joekarow/netwerkr-config": "workspace:^0.0.0" }, "devDependencies": { + "@babel/core": "^7.18.5", "@next/eslint-plugin-next": "^12.1.6", "eslint": "^8.17.0", "eslint-config-next": "^12.1.6", + "eslint-plugin-next": "^0.0.0", "next": "^12.1.6", "typescript": "^4.7.3" } diff --git a/packages/lib/db/convertDateTime.js b/packages/lib/db/convertDateTime.js new file mode 100644 index 0000000..a514481 --- /dev/null +++ b/packages/lib/db/convertDateTime.js @@ -0,0 +1,31 @@ +import { DateTime as dt } from 'luxon' + +const convertDateTime = ( data, [ ...keysToReplace ] ) => { + try { + // keys.forEach( key => { + // data[ key ] = data[ key ].toString() + // } ) + + const seeker = ( obj ) => { + Object.keys( obj ).forEach( key => { + if ( keysToReplace.includes( key ) ) { + if ( obj[ key ] ) { + // obj[ key ] = obj[ key ].toString() + obj[ key ] = dt.fromJSDate( obj[ key ] ).toUTC().toISO() + } + } + if ( typeof obj[ key ] === 'object' && obj[ key ] !== null ) { + seeker( obj[ key ] ) + } + } ) + } + seeker( data ) + + } catch ( err ) { + throw new Error( err ) + } + // console.log( data ) + return data +} + +export { convertDateTime } \ No newline at end of file diff --git a/packages/lib/db/getContact.js b/packages/lib/db/getContact.js new file mode 100644 index 0000000..d32b768 --- /dev/null +++ b/packages/lib/db/getContact.js @@ -0,0 +1,30 @@ +import prisma from '../prisma' +import { convertDateTime } from './' + + +const getContact = async ( uid ) => { + const data = await prisma.Contact.findUnique( { + where: { + id: uid + }, + include: { + email: true, + phone: true, + interactions: { + include: { + conversationId: true, + sourceSocial: { + select: { name: true } + } + + + } + } + } + } ) + + // console.log( typeof data.createdAt ) + return convertDateTime( data, [ 'createdAt', 'updatedAt', 'time' ] ) +} + +export { getContact } \ No newline at end of file diff --git a/packages/lib/db/index.js b/packages/lib/db/index.js new file mode 100644 index 0000000..8d8b54a --- /dev/null +++ b/packages/lib/db/index.js @@ -0,0 +1,3 @@ +// @index('./**/*.{js*,(ts* && !d.*)}', f => `export * from '${f.path}'`) +export * from './convertDateTime' +export * from './getContact' diff --git a/packages/lib/package.json b/packages/lib/package.json index 97518b5..02c6497 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -5,7 +5,18 @@ "private": true, "main": "index.js", "scripts": { - "lint": "eslint . --ext .ts --ext .js" + "lint": "eslint . --ext .ts --ext .js", + "db": "", + "db:push": "prisma db push", + "db:generate": "prisma generate", + "db:seed": "prisma db seed", + "db:studio": "prisma studio", + "dev": "vscode-generate-index-standalone ./{**,!node_modules}/*.{js*,ts*} -w ./{**,!node_modules}/", + "test": "jest", + "postinstall": "pnpm db:generate" + }, + "prisma": { + "seed": "node prisma/seed.js" }, "lint-staged": { "*.{ts,js}": "eslint" @@ -14,11 +25,18 @@ "author": "", "license": "ISC", "dependencies": { + "@prisma/client": "^3.15.2", "mongodb": "^4.7.0" }, "devDependencies": { + "@faker-js/faker": "^7.3.0", "@joekarow/eslint-config-netwerkr": "workspace:^1.0.0", "@joekarow/netwerkr-config": "workspace:^0.0.0", - "next": "^12.1.6" + "luxon": "^2.4.0", + "next": "^12.1.6", + "prisma": "^3.15.2", + "vscode-generate-index-standalone": "^1.6.0", + "zod": "^3.17.3", + "zod-prisma": "^0.5.4" } } \ No newline at end of file diff --git a/packages/lib/prisma/index.ts b/packages/lib/prisma/index.ts new file mode 100644 index 0000000..107264a --- /dev/null +++ b/packages/lib/prisma/index.ts @@ -0,0 +1,5 @@ +import { PrismaClient } from '@prisma/client' + +let prisma = new PrismaClient() + +export default prisma \ No newline at end of file diff --git a/packages/lib/prisma/schema.prisma b/packages/lib/prisma/schema.prisma new file mode 100644 index 0000000..a3fdcc8 --- /dev/null +++ b/packages/lib/prisma/schema.prisma @@ -0,0 +1,187 @@ +generator client { + provider = "prisma-client-js" +} + +generator zod { + provider = "zod-prisma" + output = "./zod" + imports = "./zod-prisma" +} + +datasource db { + provider = "mongodb" + url = env("MONGODB_CONN") +} + +model netwerkr { + id String @id @default(auto()) @map("_id") @db.ObjectId +} + +model Account { + id String @id @default(auto()) @map("_id") @db.ObjectId + userId String @db.ObjectId + type String + provider String + providerAccountId String + refresh_token String? + access_token String? + expires_at Int? + token_type String? + scope String? + id_token String? + session_state String? + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + createdAt DateTime? @default(now()) + updatedAt DateTime? @updatedAt + + @@unique([provider, providerAccountId]) +} + +model Session { + id String @id @default(auto()) @map("_id") @db.ObjectId + sessionToken String @unique + userId String + expires DateTime + user User @relation(fields: [userId], references: [id], onDelete: Cascade) +} + +model User { + id String @id @default(auto()) @map("_id") @db.ObjectId + name String? + email String? @unique + emailVerified DateTime? + image String? + twitterList String? + role Role @default(USER) + disabled Boolean? + accounts Account[] + sessions Session[] + contacts Contact[] @relation("contactCollection") + profile Contact? @relation("userProfile", fields: [profileId], references: [id], onDelete: NoAction, onUpdate: NoAction) + profileId String? @unique @db.ObjectId + createdAt DateTime? @default(now()) + updatedAt DateTime? @updatedAt + +} + +enum Role { + USER + ADMIN +} + +model Contact { + id String @id @default(auto()) @map("_id") @db.ObjectId /// @zod.refine(imports.mongoId) + firstName String? + lastName String? + email ContactEmail[] + phone ContactPhone[] + photo String + socialMedia SocialMedia[] + interactions Interactions[] + onTwitterList Boolean + + associatedUser User @relation("contactCollection", fields: [associatedUserId], references: [id], onDelete: Cascade) + associatedUserId String @db.ObjectId + profileForUser User? @relation("userProfile") + createdAt DateTime? @default(now()) + updatedAt DateTime? @updatedAt +} + +model ContactEmail { + id String @id @default(auto()) @map("_id") @db.ObjectId + email String + primary Boolean? + label EmailLabel @default(Home) + contact Contact @relation(fields: [contactId], references: [id], onDelete: Cascade, onUpdate: Cascade) + createdAt DateTime? @default(now()) + updatedAt DateTime? @updatedAt + + contactId String @db.ObjectId + @@unique([email, contactId]) +} + +enum EmailLabel { + Home + Work + Other +} + +model ContactPhone { + id String @id @default(auto()) @map("_id") @db.ObjectId + number String + label PhoneLabel + primary Boolean? + contact Contact @relation(fields: [contactId], references: [id], onDelete: Cascade, onUpdate: Cascade) + contactId String @db.ObjectId + createdAt DateTime? @default(now()) + updatedAt DateTime? @updatedAt +} + +enum PhoneLabel { + Home + Work + Mobile + Other +} + +model SocialMedia { + id String @id @default(auto()) @map("_id") @db.ObjectId + contact Contact @relation(fields: [contactId], references: [id], onDelete: Cascade, onUpdate: Cascade) + service SocialMediaService @relation(fields: [socialMediaServiceId], references: [id]) + userId String + displayName String + username String + protected Boolean + profileImg String? + createdAt DateTime? @default(now()) + updatedAt DateTime? @updatedAt + + + contactId String @db.ObjectId + socialMediaServiceId String @db.ObjectId +} + +model SocialMediaService { + id String @id @default(auto()) @map("_id") @db.ObjectId + name String @unique + urlbase String + + + Interactions Interactions[] + SocialMedia SocialMedia[] +} + +model Interactions { + id String @id @default(auto()) @map("_id") @db.ObjectId + Contact Contact @relation(fields: [contactId], references: [id]) + contactId String @db.ObjectId + source InteractionSource + sourceSocial SocialMediaService? @relation(fields: [socialMediaServiceId], references: [id]) + time DateTime + content String + extPostId String? + conversationId Conversation[] + createdAt DateTime? @default(now()) + updatedAt DateTime? @updatedAt + + socialMediaServiceId String? @db.ObjectId +} + +enum InteractionSource { + Twitter + LinkedIn + PhoneCall + SMS + Email + DM + InPerson +} + +model Conversation { + id String @id @default(auto()) @map("_id") @db.ObjectId + twitterConvoId String? + + + Interactions Interactions? @relation(fields: [interactionsId], references: [id]) + interactionsId String? @db.ObjectId +} diff --git a/packages/lib/prisma/seed.js b/packages/lib/prisma/seed.js new file mode 100644 index 0000000..1629212 --- /dev/null +++ b/packages/lib/prisma/seed.js @@ -0,0 +1,40 @@ + +const prisma = require( './index' ) +const { twitterUrlBase, linkedInUrlBase } = require( './seed/socialMediaSetup' ) +const generateFakeContact = require( './seed/fakedata' ) + +const fakeContacts = 21 + + +const main = async () => { + if ( !fakeContacts ) throw new Error( `variable 'fakeContacts' must be set` ) + + await prisma.SocialMediaService.upsert( twitterUrlBase ) + await prisma.SocialMediaService.upsert( linkedInUrlBase ) + + const socialMediaIds = await prisma.SocialMediaService.findMany( { + select: { + id: true + } + } ) + + for ( let i = 0; i < fakeContacts; i++ ) { + console.info( `Generating fake contact ${ i + 1 } of ${ fakeContacts }` ) + console.log( socialMediaIds ) + await prisma.Contact.create( { + data: generateFakeContact( socialMediaIds ) + } ) + } + + + + +} + + +main().catch( ( e ) => { + console.error( e ) + process.exit( 1 ) +} ).finally( async () => { + await prisma.$disconnect() +} ) \ No newline at end of file diff --git a/packages/lib/prisma/seed/fakedata.js b/packages/lib/prisma/seed/fakedata.js new file mode 100644 index 0000000..d9efad6 --- /dev/null +++ b/packages/lib/prisma/seed/fakedata.js @@ -0,0 +1,88 @@ +const { faker } = require( '@faker-js/faker' ) + +const fakeInteractionCount = 15 + + +const fakeContact = () => { + return { + firstName: faker.name.firstName(), + lastName: faker.name.lastName(), + photo: faker.image.avatar(), + onTwitterList: false + } +} +const fakeEmail = ( max ) => { + const result = [] + for ( let i = 0; i < faker.mersenne.rand( 1, max ); i++ ) { + result.push( { + email: faker.internet.email(), + label: faker.helpers.arrayElement( [ 'Home', 'Work', 'Other' ] ) + } ) + } + return result +} + +const fakePhone = ( max ) => { + const result = [] + for ( let i = 0; i < faker.mersenne.rand( 1, max ); i++ ) { + result.push( { + number: faker.phone.number( '###-###-####' ), + label: faker.helpers.arrayElement( [ 'Home', 'Work', 'Mobile', 'Other' ] ) + } ) + } + return result +} +const fakeSocial = ( first, last, ids ) => { + return { + userId: faker.random.numeric( 7 ), + displayName: `${ first } ${ last }`, + username: faker.internet.userName( first, last ), + // service: { + // connect: [ { SocialMediaServiceId: faker.helpers.arrayElement( ids ).id } ] + // }, + socialMediaServiceId: faker.helpers.arrayElement( ids ).id, + protected: false, + profileImg: faker.internet.avatar() + } +} +const fakeInteraction = ( max ) => { + const result = [] + for ( let i = 0; i < faker.mersenne.rand( 1, max ); i++ ) { + result.push( { + source: faker.helpers.arrayElement( [ 'Twitter', 'LinkedIn', 'PhoneCall', 'SMS', 'Email', 'DM', 'InPerson' ] ), + time: faker.date.past(), + content: faker.lorem.sentences() + } ) + } + + return result +} + + +const generateFakeContact = ( socialMediaIds ) => { + const contact = fakeContact() + const email = fakeEmail( 3 ) + const phone = fakePhone( 3 ) + const interaction = fakeInteraction( 15 ) + + return ( { + ...contact, + socialMedia: { + create: fakeSocial( contact.firstName, contact.lastName, socialMediaIds ) + }, + associatedUserId: "62a5615ce93818b48983ac9b", + email: { + create: email + }, + phone: { + create: phone + }, + interactions: { + create: interaction + } + } ) + // console.log( result[ i ] ) +} + + +module.exports = generateFakeContact \ No newline at end of file diff --git a/packages/lib/prisma/seed/socialMediaSetup.js b/packages/lib/prisma/seed/socialMediaSetup.js new file mode 100644 index 0000000..3ac74e3 --- /dev/null +++ b/packages/lib/prisma/seed/socialMediaSetup.js @@ -0,0 +1,23 @@ +const twitterUrlBase = { + where: { name: 'Twitter' }, + update: { + urlbase: 'https://www.twitter.com/' + }, + create: { + name: 'Twitter', + urlbase: 'https://www.twitter.com/' + } +} + +const linkedInUrlBase = { + where: { name: 'LinkedIn' }, + update: { + urlbase: 'https://www.linkedin.com/in/' + }, + create: { + name: 'LinkedIn', + urlbase: 'https://www.linkedin.com/in/' + } +} + +module.exports = { twitterUrlBase, linkedInUrlBase } diff --git a/packages/lib/prisma/zod-prisma.ts b/packages/lib/prisma/zod-prisma.ts new file mode 100644 index 0000000..3bbb457 --- /dev/null +++ b/packages/lib/prisma/zod-prisma.ts @@ -0,0 +1,7 @@ +import { ObjectId } from "mongodb"; + + + +export const mongoId = ( str: string ): boolean => { + return ObjectId.isValid( str ) +} \ No newline at end of file diff --git a/packages/lib/prisma/zod/account.ts b/packages/lib/prisma/zod/account.ts new file mode 100644 index 0000000..d3cfcc6 --- /dev/null +++ b/packages/lib/prisma/zod/account.ts @@ -0,0 +1,33 @@ +import * as z from "zod" +import * as imports from "../zod-prisma" +import { CompleteUser, RelatedUserModel } from "./index" + +export const AccountModel = z.object({ + id: z.string(), + userId: z.string(), + type: z.string(), + provider: z.string(), + providerAccountId: z.string(), + refresh_token: z.string().nullish(), + access_token: z.string().nullish(), + expires_at: z.number().int().nullish(), + token_type: z.string().nullish(), + scope: z.string().nullish(), + id_token: z.string().nullish(), + session_state: z.string().nullish(), + createdAt: z.date().nullish(), + updatedAt: z.date().nullish(), +}) + +export interface CompleteAccount extends z.infer { + user: CompleteUser +} + +/** + * RelatedAccountModel contains all relations on your model in addition to the scalars + * + * NOTE: Lazy required in case of potential circular dependencies within schema + */ +export const RelatedAccountModel: z.ZodSchema = z.lazy(() => AccountModel.extend({ + user: RelatedUserModel, +})) diff --git a/packages/lib/prisma/zod/contact.ts b/packages/lib/prisma/zod/contact.ts new file mode 100644 index 0000000..03e0626 --- /dev/null +++ b/packages/lib/prisma/zod/contact.ts @@ -0,0 +1,37 @@ +import * as z from "zod" +import * as imports from "../zod-prisma" +import { CompleteContactEmail, RelatedContactEmailModel, CompleteContactPhone, RelatedContactPhoneModel, CompleteSocialMedia, RelatedSocialMediaModel, CompleteInteractions, RelatedInteractionsModel, CompleteUser, RelatedUserModel } from "./index" + +export const ContactModel = z.object({ + id: z.string().refine(imports.mongoId), + firstName: z.string().nullish(), + lastName: z.string().nullish(), + photo: z.string(), + onTwitterList: z.boolean(), + associatedUserId: z.string(), + createdAt: z.date().nullish(), + updatedAt: z.date().nullish(), +}) + +export interface CompleteContact extends z.infer { + email: CompleteContactEmail[] + phone: CompleteContactPhone[] + socialMedia: CompleteSocialMedia[] + interactions: CompleteInteractions[] + associatedUser: CompleteUser + profileForUser?: CompleteUser | null +} + +/** + * RelatedContactModel contains all relations on your model in addition to the scalars + * + * NOTE: Lazy required in case of potential circular dependencies within schema + */ +export const RelatedContactModel: z.ZodSchema = z.lazy(() => ContactModel.extend({ + email: RelatedContactEmailModel.array(), + phone: RelatedContactPhoneModel.array(), + socialMedia: RelatedSocialMediaModel.array(), + interactions: RelatedInteractionsModel.array(), + associatedUser: RelatedUserModel, + profileForUser: RelatedUserModel.nullish(), +})) diff --git a/packages/lib/prisma/zod/contactemail.ts b/packages/lib/prisma/zod/contactemail.ts new file mode 100644 index 0000000..8c227a9 --- /dev/null +++ b/packages/lib/prisma/zod/contactemail.ts @@ -0,0 +1,27 @@ +import * as z from "zod" +import * as imports from "../zod-prisma" +import { EmailLabel } from "@prisma/client" +import { CompleteContact, RelatedContactModel } from "./index" + +export const ContactEmailModel = z.object({ + id: z.string(), + email: z.string(), + primary: z.boolean().nullish(), + label: z.nativeEnum(EmailLabel), + createdAt: z.date().nullish(), + updatedAt: z.date().nullish(), + contactId: z.string(), +}) + +export interface CompleteContactEmail extends z.infer { + contact: CompleteContact +} + +/** + * RelatedContactEmailModel contains all relations on your model in addition to the scalars + * + * NOTE: Lazy required in case of potential circular dependencies within schema + */ +export const RelatedContactEmailModel: z.ZodSchema = z.lazy(() => ContactEmailModel.extend({ + contact: RelatedContactModel, +})) diff --git a/packages/lib/prisma/zod/contactphone.ts b/packages/lib/prisma/zod/contactphone.ts new file mode 100644 index 0000000..d3b584a --- /dev/null +++ b/packages/lib/prisma/zod/contactphone.ts @@ -0,0 +1,27 @@ +import * as z from "zod" +import * as imports from "../zod-prisma" +import { PhoneLabel } from "@prisma/client" +import { CompleteContact, RelatedContactModel } from "./index" + +export const ContactPhoneModel = z.object({ + id: z.string(), + number: z.string(), + label: z.nativeEnum(PhoneLabel), + primary: z.boolean().nullish(), + contactId: z.string(), + createdAt: z.date().nullish(), + updatedAt: z.date().nullish(), +}) + +export interface CompleteContactPhone extends z.infer { + contact: CompleteContact +} + +/** + * RelatedContactPhoneModel contains all relations on your model in addition to the scalars + * + * NOTE: Lazy required in case of potential circular dependencies within schema + */ +export const RelatedContactPhoneModel: z.ZodSchema = z.lazy(() => ContactPhoneModel.extend({ + contact: RelatedContactModel, +})) diff --git a/packages/lib/prisma/zod/conversation.ts b/packages/lib/prisma/zod/conversation.ts new file mode 100644 index 0000000..f72e803 --- /dev/null +++ b/packages/lib/prisma/zod/conversation.ts @@ -0,0 +1,22 @@ +import * as z from "zod" +import * as imports from "../zod-prisma" +import { CompleteInteractions, RelatedInteractionsModel } from "./index" + +export const ConversationModel = z.object({ + id: z.string(), + twitterConvoId: z.string().nullish(), + interactionsId: z.string().nullish(), +}) + +export interface CompleteConversation extends z.infer { + Interactions?: CompleteInteractions | null +} + +/** + * RelatedConversationModel contains all relations on your model in addition to the scalars + * + * NOTE: Lazy required in case of potential circular dependencies within schema + */ +export const RelatedConversationModel: z.ZodSchema = z.lazy(() => ConversationModel.extend({ + Interactions: RelatedInteractionsModel.nullish(), +})) diff --git a/packages/lib/prisma/zod/index.ts b/packages/lib/prisma/zod/index.ts new file mode 100644 index 0000000..3b69224 --- /dev/null +++ b/packages/lib/prisma/zod/index.ts @@ -0,0 +1,11 @@ +export * from "./netwerkr" +export * from "./account" +export * from "./session" +export * from "./user" +export * from "./contact" +export * from "./contactemail" +export * from "./contactphone" +export * from "./socialmedia" +export * from "./socialmediaservice" +export * from "./interactions" +export * from "./conversation" diff --git a/packages/lib/prisma/zod/interactions.ts b/packages/lib/prisma/zod/interactions.ts new file mode 100644 index 0000000..691bee7 --- /dev/null +++ b/packages/lib/prisma/zod/interactions.ts @@ -0,0 +1,33 @@ +import * as z from "zod" +import * as imports from "../zod-prisma" +import { InteractionSource } from "@prisma/client" +import { CompleteContact, RelatedContactModel, CompleteSocialMediaService, RelatedSocialMediaServiceModel, CompleteConversation, RelatedConversationModel } from "./index" + +export const InteractionsModel = z.object({ + id: z.string(), + contactId: z.string(), + source: z.nativeEnum(InteractionSource), + time: z.date(), + content: z.string(), + extPostId: z.string().nullish(), + createdAt: z.date().nullish(), + updatedAt: z.date().nullish(), + socialMediaServiceId: z.string().nullish(), +}) + +export interface CompleteInteractions extends z.infer { + Contact: CompleteContact + sourceSocial?: CompleteSocialMediaService | null + conversationId: CompleteConversation[] +} + +/** + * RelatedInteractionsModel contains all relations on your model in addition to the scalars + * + * NOTE: Lazy required in case of potential circular dependencies within schema + */ +export const RelatedInteractionsModel: z.ZodSchema = z.lazy(() => InteractionsModel.extend({ + Contact: RelatedContactModel, + sourceSocial: RelatedSocialMediaServiceModel.nullish(), + conversationId: RelatedConversationModel.array(), +})) diff --git a/packages/lib/prisma/zod/netwerkr.ts b/packages/lib/prisma/zod/netwerkr.ts new file mode 100644 index 0000000..05a6137 --- /dev/null +++ b/packages/lib/prisma/zod/netwerkr.ts @@ -0,0 +1,6 @@ +import * as z from "zod" +import * as imports from "../zod-prisma" + +export const netwerkrModel = z.object({ + id: z.string(), +}) diff --git a/packages/lib/prisma/zod/session.ts b/packages/lib/prisma/zod/session.ts new file mode 100644 index 0000000..773efdc --- /dev/null +++ b/packages/lib/prisma/zod/session.ts @@ -0,0 +1,23 @@ +import * as z from "zod" +import * as imports from "../zod-prisma" +import { CompleteUser, RelatedUserModel } from "./index" + +export const SessionModel = z.object({ + id: z.string(), + sessionToken: z.string(), + userId: z.string(), + expires: z.date(), +}) + +export interface CompleteSession extends z.infer { + user: CompleteUser +} + +/** + * RelatedSessionModel contains all relations on your model in addition to the scalars + * + * NOTE: Lazy required in case of potential circular dependencies within schema + */ +export const RelatedSessionModel: z.ZodSchema = z.lazy(() => SessionModel.extend({ + user: RelatedUserModel, +})) diff --git a/packages/lib/prisma/zod/socialmedia.ts b/packages/lib/prisma/zod/socialmedia.ts new file mode 100644 index 0000000..2cb5693 --- /dev/null +++ b/packages/lib/prisma/zod/socialmedia.ts @@ -0,0 +1,31 @@ +import * as z from "zod" +import * as imports from "../zod-prisma" +import { CompleteContact, RelatedContactModel, CompleteSocialMediaService, RelatedSocialMediaServiceModel } from "./index" + +export const SocialMediaModel = z.object({ + id: z.string(), + userId: z.string(), + displayName: z.string(), + username: z.string(), + protected: z.boolean(), + profileImg: z.string().nullish(), + createdAt: z.date().nullish(), + updatedAt: z.date().nullish(), + contactId: z.string(), + socialMediaServiceId: z.string(), +}) + +export interface CompleteSocialMedia extends z.infer { + contact: CompleteContact + service: CompleteSocialMediaService +} + +/** + * RelatedSocialMediaModel contains all relations on your model in addition to the scalars + * + * NOTE: Lazy required in case of potential circular dependencies within schema + */ +export const RelatedSocialMediaModel: z.ZodSchema = z.lazy(() => SocialMediaModel.extend({ + contact: RelatedContactModel, + service: RelatedSocialMediaServiceModel, +})) diff --git a/packages/lib/prisma/zod/socialmediaservice.ts b/packages/lib/prisma/zod/socialmediaservice.ts new file mode 100644 index 0000000..7e4e6cf --- /dev/null +++ b/packages/lib/prisma/zod/socialmediaservice.ts @@ -0,0 +1,24 @@ +import * as z from "zod" +import * as imports from "../zod-prisma" +import { CompleteInteractions, RelatedInteractionsModel, CompleteSocialMedia, RelatedSocialMediaModel } from "./index" + +export const SocialMediaServiceModel = z.object({ + id: z.string(), + name: z.string(), + urlbase: z.string(), +}) + +export interface CompleteSocialMediaService extends z.infer { + Interactions: CompleteInteractions[] + SocialMedia: CompleteSocialMedia[] +} + +/** + * RelatedSocialMediaServiceModel contains all relations on your model in addition to the scalars + * + * NOTE: Lazy required in case of potential circular dependencies within schema + */ +export const RelatedSocialMediaServiceModel: z.ZodSchema = z.lazy(() => SocialMediaServiceModel.extend({ + Interactions: RelatedInteractionsModel.array(), + SocialMedia: RelatedSocialMediaModel.array(), +})) diff --git a/packages/lib/prisma/zod/user.ts b/packages/lib/prisma/zod/user.ts new file mode 100644 index 0000000..7e15b7a --- /dev/null +++ b/packages/lib/prisma/zod/user.ts @@ -0,0 +1,37 @@ +import * as z from "zod" +import * as imports from "../zod-prisma" +import { Role } from "@prisma/client" +import { CompleteAccount, RelatedAccountModel, CompleteSession, RelatedSessionModel, CompleteContact, RelatedContactModel } from "./index" + +export const UserModel = z.object({ + id: z.string(), + name: z.string().nullish(), + email: z.string().nullish(), + emailVerified: z.date().nullish(), + image: z.string().nullish(), + twitterList: z.string().nullish(), + role: z.nativeEnum(Role), + disabled: z.boolean().nullish(), + profileId: z.string().nullish(), + createdAt: z.date().nullish(), + updatedAt: z.date().nullish(), +}) + +export interface CompleteUser extends z.infer { + accounts: CompleteAccount[] + sessions: CompleteSession[] + contacts: CompleteContact[] + profile?: CompleteContact | null +} + +/** + * RelatedUserModel contains all relations on your model in addition to the scalars + * + * NOTE: Lazy required in case of potential circular dependencies within schema + */ +export const RelatedUserModel: z.ZodSchema = z.lazy(() => UserModel.extend({ + accounts: RelatedAccountModel.array(), + sessions: RelatedSessionModel.array(), + contacts: RelatedContactModel.array(), + profile: RelatedContactModel.nullish(), +})) diff --git a/packages/netwerkr-config/eslint/index.js b/packages/netwerkr-config/eslint/index.js index 2983bdc..68311e1 100644 --- a/packages/netwerkr-config/eslint/index.js +++ b/packages/netwerkr-config/eslint/index.js @@ -1,5 +1,5 @@ module.exports = { - extends: [ "next", "prettier" ], + extends: [ "prettier", "next" ], rules: { "@next/next/no-html-link-for-pages": "off", "react/jsx-key": "off", diff --git a/packages/ui/babel.config.js b/packages/ui/babel.config.js new file mode 100644 index 0000000..35329bd --- /dev/null +++ b/packages/ui/babel.config.js @@ -0,0 +1,20 @@ +module.exports = function ( api ) { + api.cache( true ); + + const presets = [ + "next/babel" + ]; + const plugins = [ + // [ + // "@simbathesailor/babel-plugin-use-what-changed", + // { + // active: process.env.NODE_ENV === "development", // boolean + // }, + // ], + ]; + + return { + presets, + plugins, + }; +}; \ No newline at end of file diff --git a/packages/ui/components/ContactInfo.tsx b/packages/ui/components/ContactInfo.tsx new file mode 100644 index 0000000..585023b --- /dev/null +++ b/packages/ui/components/ContactInfo.tsx @@ -0,0 +1,28 @@ +import { createStyles, Avatar, Text, Group } from '@mantine/core'; +import {RelatedContactModel} from '@joekarow/netwerkr-lib/prisma/zod' +import * as z from 'zod' + + +type Contact = z.infer + + +const useStyles = createStyles((theme) => ({ + icon: { + color: theme.colorScheme === 'dark' ? theme.colors.dark[3] : theme.colors.gray[5], + }, + + name: { + fontFamily: `Greycliff CF, ${theme.fontFamily}`, + }, +})); + +const ContactInfo = ({firstName,lastName,photo, phone, email, socialMedia,onTwitterList }:Contact) => { + return ( + + + + + ) +} + +export default ContactInfo \ No newline at end of file diff --git a/packages/ui/components/UserButton.tsx b/packages/ui/components/UserButton.tsx index 72430e8..99de9d4 100644 --- a/packages/ui/components/UserButton.tsx +++ b/packages/ui/components/UserButton.tsx @@ -1,50 +1,53 @@ -import React, {useState} from 'react'; +import React, { useState } from 'react'; import { UnstyledButton, Group, Avatar, Text, createStyles, - Menu, - Divider + Menu } from '@mantine/core'; +import { NextLink } from '@mantine/next' import { Logout, Heart, Star, Message, Settings, - PlayerPause, - Trash, SwitchHorizontal, ChevronDown, } from 'tabler-icons-react'; +import { useSession } from 'next-auth/react' +import { useProviders } from '../hooks' +import { signIn, signOut } from 'next-auth/react'; +import { randomId } from '@mantine/hooks'; + //TODO: Change menu items -const useStyles = createStyles( ( theme ) => ( { - userMenu: { +const useStyles = createStyles((theme) => ({ + userMenu: { // [ theme.fn.smallerThan( 'xs' ) ]: { // display: 'none', // }, }, user: { - color: theme.colorScheme === 'dark' ? theme.colors.dark[ 0 ] : theme.black, - padding: `${ theme.spacing.xs }px ${ theme.spacing.sm }px`, + color: theme.colorScheme === 'dark' ? theme.colors.dark[0] : theme.black, + padding: `${theme.spacing.xs}px ${theme.spacing.sm}px`, borderRadius: theme.radius.sm, transition: 'background-color 100ms ease', '&:hover': { - backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[ 8 ] : theme.white, + backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[8] : theme.white, }, }, - userActive: { - backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[ 8 ] : theme.white, + userActive: { + backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[8] : theme.white, }, -} ) ); +})); export interface UserButton { @@ -54,54 +57,86 @@ export interface UserButton { } } -export function UserButton ( { user }: UserButton ) { - const { classes, cx, theme } = useStyles(); - const [ userMenuOpened, setUserMenuOpened ] = useState( false ); +interface LoginProvider { + name: String, + icon: JSX.Element +} - return ( - setUserMenuOpened( false ) } - onOpen={ () => setUserMenuOpened( true ) } - control={ - - - - - { user.name } - - - - - } +export function UserButton() { + const { classes, cx, theme } = useStyles(); + const [userMenuOpened, setUserMenuOpened] = useState(false); + const { data: session, status } = useSession() + const loginCallback = { callbackUrl: '/dash' } + const loginProviders = useProviders().map((provider: LoginProvider) => { + const randId = randomId() + return ( signIn(provider.name.toLowerCase(), loginCallback)}> + {provider.name} + ) + }) + if (status !== 'authenticated') { + return ( + setUserMenuOpened(false)} + onOpen={() => setUserMenuOpened(true)} + control={ + - }> - Liked posts - - }> - Saved posts - - }> - Your comments - + + + Log In + + + + + } + > + {loginProviders} + + ) + } - Settings - }>Account settings - }>Change account - }>Logout + return ( + setUserMenuOpened(false)} + onOpen={() => setUserMenuOpened(true)} + control={ + + + + + {session.user.name} + + + + + } + > + }> + Liked posts + + }> + Saved posts + + }> + Your comments + - + Settings + }>Account settings + }>Change account + } onClick={() => signOut()}>Logout - Danger zone - }>Pause subscription - }> - Delete account - - + ); } \ No newline at end of file diff --git a/packages/ui/components/index.ts b/packages/ui/components/index.ts index c45de81..6876770 100644 --- a/packages/ui/components/index.ts +++ b/packages/ui/components/index.ts @@ -1,5 +1,6 @@ // @index('./**/*.{jsx,tsx}', f => `export * from '${f.path}'`) export * from './AuthSessionStatus' +export * from './ContactInfo' export * from './ContactTable' export * from './LinksGroup' export * from './LoginProvider' diff --git a/packages/ui/devtools.js b/packages/ui/devtools.js new file mode 100644 index 0000000..2c9153c --- /dev/null +++ b/packages/ui/devtools.js @@ -0,0 +1,9 @@ +import { Container, Text } from "@mantine/core" + +export const JsonView = ( data ) => { + return ( + + { JSON.stringify( data, null, 2 ) } + + ) +} \ No newline at end of file diff --git a/packages/ui/hooks/index.js b/packages/ui/hooks/index.js new file mode 100644 index 0000000..94a6edf --- /dev/null +++ b/packages/ui/hooks/index.js @@ -0,0 +1,2 @@ +// @index('./**/*.{js*,(ts* && !d.*)}', f => `export * from '${f.path}'`) +export * from './useProviders' diff --git a/packages/ui/hooks/useProviders.js b/packages/ui/hooks/useProviders.js new file mode 100644 index 0000000..fb9b229 --- /dev/null +++ b/packages/ui/hooks/useProviders.js @@ -0,0 +1,60 @@ +import { useState, useEffect } from 'react' +import { getProviders } from 'next-auth/react' +import { Icon, BrandTwitter, Key } from 'tabler-icons-react' + + +/** + * It's an async function that calls the getProviders() function, which returns a promise. + * + * If the promise resolves, the response is returned. If the promise rejects, the error is logged to + * the console + * @returns The response from the getProviders() function. + */ +async function fetchProviders () { + try { + const response = await getProviders() + return response + } catch ( err ) { + console.error( err ) + } +} + +/* It's an async function that calls the getProviders() function, which returns a promise. */ +const providers = fetchProviders() + +const providerFormatter = ( data ) => { + const Icons = { + twitter: BrandTwitter, + auth0: Key + } + return Object.keys( data ).map( ( item ) => { + const ServiceIcon = Icons[ item ] + const name = data[ item ].name + return ( + { + name, + icon: , + } + ) + } ) +} + + + + +export function useProviders () { + const [ list, setList ] = useState( [] ) + + + + useEffect( () => { + providers.then( data => { + //@ts-ignore + const dataFormatted = providerFormatter( data ) + + setList( dataFormatted ) + } ).catch( err => console.error( err ) ) + }, [] ) + + return list +} \ No newline at end of file diff --git a/packages/ui/layout/dash.jsx b/packages/ui/layout/dash.jsx index 988311e..98a566b 100644 --- a/packages/ui/layout/dash.jsx +++ b/packages/ui/layout/dash.jsx @@ -1,14 +1,12 @@ import React from 'react' import { NavbarNested, HeaderUser } from '../section' -import { links } from './navLinks' import { AppShell, Container } from '@mantine/core' -import { user } from '../mockdata' export const DashLayout = ( { children } ) => { return ( } + header={ } navbar={ } > diff --git a/packages/ui/package.json b/packages/ui/package.json index bc89033..90bc097 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -14,6 +14,7 @@ }, "devDependencies": { "@joekarow/netwerkr-config": "workspace:*", + "@joekarow/netwerkr-lib": "workspace:^1.0.0", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^13.3.0", "@types/jest": "^28.1.1", @@ -22,10 +23,12 @@ "eslint": "^8.17.0", "jest": "^28.1.1", "jest-environment-jsdom": "^28.1.1", + "next": "^12.1.6", "react": "^18.1.0", "react-dom": "^18.1.0", "typescript": "^4.7.3", - "vscode-generate-index-standalone": "^1.6.0" + "vscode-generate-index-standalone": "^1.6.0", + "zod": "^3.17.3" }, "dependencies": { "@joekarow/eslint-config-netwerkr": "workspace:^1.0.0", diff --git a/packages/ui/section/HeaderAction.jsx b/packages/ui/section/HeaderAction.jsx index 04ee6f1..5bef207 100644 --- a/packages/ui/section/HeaderAction.jsx +++ b/packages/ui/section/HeaderAction.jsx @@ -10,8 +10,8 @@ import { Burger, } from '@mantine/core'; import { useBooleanToggle } from '@mantine/hooks'; -import { ChevronDown } from 'tabler-icons-react'; -import { LoginProvider } from '../components' +import { ChevronDown, User } from 'tabler-icons-react'; +import { UserButton } from '../components' const HEADER_HEIGHT = 60; @@ -121,7 +121,7 @@ export function HeaderAction ( { links } ) { { items } - + ); diff --git a/packages/ui/section/HeaderUser.tsx b/packages/ui/section/HeaderUser.tsx index 9034ffb..08149c0 100644 --- a/packages/ui/section/HeaderUser.tsx +++ b/packages/ui/section/HeaderUser.tsx @@ -69,7 +69,7 @@ interface HeaderProps { user: { name: string; image: string }; } -export function HeaderUser ( { user }: HeaderProps ) { +export function HeaderUser () { const { classes, theme, cx } = useStyles(); // const [ opened, toggleOpened ] = useBooleanToggle( false ); const [ userMenuOpened, setUserMenuOpened ] = useState( false ); @@ -80,7 +80,7 @@ export function HeaderUser ( { user }: HeaderProps ) {

netwerkr

- +
diff --git a/packages/ui/section/ProfileGrid.jsx b/packages/ui/section/ProfileGrid.jsx new file mode 100644 index 0000000..82be91a --- /dev/null +++ b/packages/ui/section/ProfileGrid.jsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { Grid, SimpleGrid, Skeleton, useMantineTheme } from '@mantine/core'; + +const PRIMARY_COL_HEIGHT = 600; + +export function ProfileGrid () { + const theme = useMantineTheme(); + const SECONDARY_COL_HEIGHT = PRIMARY_COL_HEIGHT / 2 - theme.spacing.md / 2; + + return ( + + + + + + + + + + + + + + + + + + ); +} \ No newline at end of file diff --git a/packages/ui/section/index.js b/packages/ui/section/index.js index d8e1b09..c3c4b9c 100644 --- a/packages/ui/section/index.js +++ b/packages/ui/section/index.js @@ -4,3 +4,4 @@ export * from './HeaderAction' export * from './HeaderUser' export * from './HeroImageRight' export * from './NavbarNested' +export * from './ProfileGrid' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 27c8e33..73efe97 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,6 +15,9 @@ importers: '@joekarow/netwerkr-config': workspace:^0.0.0 commitizen: ^4.2.4 cz-git: ^1.3.5 + eslint: ^8.18.0 + eslint-plugin-import: ^2.26.0 + eslint-plugin-next: ^0.0.0 husky: ^8.0.1 lint-staged: ^13.0.2 prettier: latest @@ -30,38 +33,14 @@ importers: '@joekarow/netwerkr-config': link:packages/netwerkr-config commitizen: 4.2.4 cz-git: 1.3.5 + eslint: 8.18.0 + eslint-plugin-import: 2.26.0_eslint@8.18.0 + eslint-plugin-next: 0.0.0 husky: 8.0.1 - lint-staged: 13.0.2 + lint-staged: 13.0.3 prettier: 2.7.1 rimraf: 3.0.2 - turbo: 1.2.16 - - apps/docs: - specifiers: - '@joekarow/eslint-config-netwerkr': workspace:^1.0.0 - '@joekarow/netwerkr-config': workspace:* - '@joekarow/netwerkr-ui': workspace:* - '@types/node': ^17.0.45 - '@types/react': 18.0.14 - eslint: 8.18.0 - next: ^12.1.6 - next-transpile-modules: 9.0.0 - react: ^18.1.0 - react-dom: ^18.1.0 - typescript: ^4.7.3 - dependencies: - '@joekarow/eslint-config-netwerkr': link:../../packages/eslint-config-netwerkr - '@joekarow/netwerkr-ui': link:../../packages/ui - next: 12.1.6_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - devDependencies: - '@joekarow/netwerkr-config': link:../../packages/netwerkr-config - '@types/node': 17.0.45 - '@types/react': 18.0.14 - eslint: 8.18.0 - next-transpile-modules: 9.0.0 - typescript: 4.7.3 + turbo: 1.3.1 apps/web: specifiers: @@ -69,9 +48,7 @@ importers: '@joekarow/netwerkr-config': workspace:* '@joekarow/netwerkr-lib': workspace:^1.0.0 '@joekarow/netwerkr-ui': workspace:* - '@next-auth/mongodb-adapter': ^1.0.3 '@next-auth/prisma-adapter': ^1.0.3 - '@prisma/client': ^3.15.2 '@simbathesailor/babel-plugin-use-what-changed': ^2.1.0 '@simbathesailor/use-what-changed': ^2.0.0 '@testing-library/jest-dom': ^5.16.4 @@ -83,12 +60,10 @@ importers: eslint: 8.18.0 jest: ^28.1.1 jest-environment-jsdom: ^28.1.1 - mongodb: ^4.7.0 msw: ^0.42.1 next: ^12.1.6 next-auth: ^4.4.0 next-transpile-modules: 9.0.0 - prisma: ^3.15.2 react: ^18.1.0 react-dom: ^18.1.0 swr: ^1.3.0 @@ -97,14 +72,11 @@ importers: '@joekarow/eslint-config-netwerkr': link:../../packages/eslint-config-netwerkr '@joekarow/netwerkr-lib': link:../../packages/lib '@joekarow/netwerkr-ui': link:../../packages/ui - '@next-auth/mongodb-adapter': 1.0.3_h3jvr4sw33dco7uklkcksh3gvi - '@next-auth/prisma-adapter': 1.0.3_3pq3kxnod62bzywextqtouqueq - '@prisma/client': 3.15.2_prisma@3.15.2 + '@next-auth/prisma-adapter': 1.0.3_vvk7yqe637uongvoquuzkhfrze axios: 0.27.2 dotenv: 16.0.1 - mongodb: 4.7.0 next: 12.1.6_biqbaboplfbrettd7655fr4n2y - next-auth: 4.5.0_biqbaboplfbrettd7655fr4n2y + next-auth: 4.6.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 swr: 1.3.0_react@18.2.0 @@ -119,43 +91,60 @@ importers: eslint: 8.18.0 jest: 28.1.1_@types+node@17.0.45 jest-environment-jsdom: 28.1.1 - msw: 0.42.1_typescript@4.7.3 + msw: 0.42.3_typescript@4.7.4 next-transpile-modules: 9.0.0 - prisma: 3.15.2 - typescript: 4.7.3 + typescript: 4.7.4 design/diagrams: specifiers: {} packages/eslint-config-netwerkr: specifiers: + '@babel/core': ^7.18.5 '@joekarow/netwerkr-config': workspace:^0.0.0 '@next/eslint-plugin-next': ^12.1.6 eslint: ^8.17.0 eslint-config-next: ^12.1.6 + eslint-plugin-next: ^0.0.0 next: ^12.1.6 typescript: ^4.7.3 dependencies: '@joekarow/netwerkr-config': link:../netwerkr-config devDependencies: + '@babel/core': 7.18.5 '@next/eslint-plugin-next': 12.1.6 - eslint: 8.17.0 - eslint-config-next: 12.1.6_qwqcuvhue6diaz4jqbkm5dp3pa - next: 12.1.6_biqbaboplfbrettd7655fr4n2y - typescript: 4.7.3 + eslint: 8.18.0 + eslint-config-next: 12.1.6_ngoqluhis4kr6sqtxgtlos2xtq + eslint-plugin-next: 0.0.0 + next: 12.1.6_4cc5zw5azim2bix77d63le72su + typescript: 4.7.4 packages/lib: specifiers: + '@faker-js/faker': ^7.3.0 '@joekarow/eslint-config-netwerkr': workspace:^1.0.0 '@joekarow/netwerkr-config': workspace:^0.0.0 + '@prisma/client': ^3.15.2 + luxon: ^2.4.0 mongodb: ^4.7.0 next: ^12.1.6 + prisma: ^3.15.2 + vscode-generate-index-standalone: ^1.6.0 + zod: ^3.17.3 + zod-prisma: ^0.5.4 dependencies: + '@prisma/client': 3.15.2_prisma@3.15.2 mongodb: 4.7.0 devDependencies: + '@faker-js/faker': 7.3.0 '@joekarow/eslint-config-netwerkr': link:../eslint-config-netwerkr '@joekarow/netwerkr-config': link:../netwerkr-config + luxon: 2.4.0 next: 12.1.6_biqbaboplfbrettd7655fr4n2y + prisma: 3.15.2 + vscode-generate-index-standalone: 1.6.0 + zod: 3.17.3 + zod-prisma: 0.5.4_prisma@3.15.2+zod@3.17.3 packages/netwerkr-config: specifiers: @@ -169,19 +158,20 @@ importers: typescript: ^4.7.3 dependencies: '@next/eslint-plugin-next': 12.1.6 - eslint-config-next: 12.1.6_qwqcuvhue6diaz4jqbkm5dp3pa - eslint-config-prettier: 8.5.0_eslint@8.17.0 - eslint-plugin-react: 7.30.0_eslint@8.17.0 - eslint-plugin-react-hooks: 4.5.0_eslint@8.17.0 + eslint-config-next: 12.1.6_ngoqluhis4kr6sqtxgtlos2xtq + eslint-config-prettier: 8.5.0_eslint@8.18.0 + eslint-plugin-react: 7.30.1_eslint@8.18.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.18.0 devDependencies: - eslint: 8.17.0 + eslint: 8.18.0 next: 12.1.6_biqbaboplfbrettd7655fr4n2y - typescript: 4.7.3 + typescript: 4.7.4 packages/ui: specifiers: '@joekarow/eslint-config-netwerkr': workspace:^1.0.0 '@joekarow/netwerkr-config': workspace:* + '@joekarow/netwerkr-lib': workspace:^1.0.0 '@mantine/core': ^4.2.8 '@mantine/dates': ^4.2.8 '@mantine/dropzone': ^4.2.8 @@ -202,6 +192,7 @@ importers: eslint: ^8.17.0 jest: ^28.1.1 jest-environment-jsdom: ^28.1.1 + next: ^12.1.6 next-auth: ^4.4.0 react: ^18.1.0 react-dom: ^18.1.0 @@ -209,37 +200,41 @@ importers: tabler-icons-react: ^1.49.0 typescript: ^4.7.3 vscode-generate-index-standalone: ^1.6.0 + zod: ^3.17.3 dependencies: '@joekarow/eslint-config-netwerkr': link:../eslint-config-netwerkr - '@mantine/core': 4.2.9_k5qmd4pret6g27b3vdtxxoxgem - '@mantine/dates': 4.2.9_gtthr2ylh7tj6fw5fvwgfnvydi - '@mantine/dropzone': 4.2.9_d6aiuykcth4kgoni4twbp62wfu - '@mantine/form': 4.2.9_react@18.2.0 - '@mantine/hooks': 4.2.9_react@18.2.0 - '@mantine/modals': 4.2.9_d6aiuykcth4kgoni4twbp62wfu - '@mantine/next': 4.2.9_4tlknlfxkqfornktk743nxrxwq - '@mantine/notifications': 4.2.9_d6aiuykcth4kgoni4twbp62wfu - '@mantine/prism': 4.2.9_d6aiuykcth4kgoni4twbp62wfu - '@mantine/rte': 4.2.9_d6aiuykcth4kgoni4twbp62wfu - '@mantine/spotlight': 4.2.9_d6aiuykcth4kgoni4twbp62wfu + '@mantine/core': 4.2.10_izy4l7cgp6pypywh7yghkjgrsm + '@mantine/dates': 4.2.10_ynoop3a3ti2ggmshxkndm5mmmu + '@mantine/dropzone': 4.2.10_aaeb3fubyphkmgx4v23kfmal6i + '@mantine/form': 4.2.10_react@18.2.0 + '@mantine/hooks': 4.2.10_react@18.2.0 + '@mantine/modals': 4.2.10_aaeb3fubyphkmgx4v23kfmal6i + '@mantine/next': 4.2.10_t6go2qepkhrcujdftz257haqfi + '@mantine/notifications': 4.2.10_aaeb3fubyphkmgx4v23kfmal6i + '@mantine/prism': 4.2.10_aaeb3fubyphkmgx4v23kfmal6i + '@mantine/rte': 4.2.10_aaeb3fubyphkmgx4v23kfmal6i + '@mantine/spotlight': 4.2.10_aaeb3fubyphkmgx4v23kfmal6i dayjs: 1.11.3 - next-auth: 4.5.0_biqbaboplfbrettd7655fr4n2y + next-auth: 4.6.1_biqbaboplfbrettd7655fr4n2y swr: 1.3.0_react@18.2.0 - tabler-icons-react: 1.49.0_react@18.2.0 + tabler-icons-react: 1.51.0_react@18.2.0 devDependencies: '@joekarow/netwerkr-config': link:../netwerkr-config + '@joekarow/netwerkr-lib': link:../lib '@testing-library/jest-dom': 5.16.4 '@testing-library/react': 13.3.0_biqbaboplfbrettd7655fr4n2y - '@types/jest': 28.1.1 - '@types/react': 18.0.13 + '@types/jest': 28.1.3 + '@types/react': 18.0.14 '@types/react-dom': 18.0.5 - eslint: 8.17.0 + eslint: 8.18.0 jest: 28.1.1 jest-environment-jsdom: 28.1.1 + next: 12.1.6_4cc5zw5azim2bix77d63le72su react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - typescript: 4.7.3 + typescript: 4.7.4 vscode-generate-index-standalone: 1.6.0 + zod: 3.17.3 packages: @@ -248,7 +243,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.9 + '@jridgewell/trace-mapping': 0.3.13 /@babel/code-frame/7.16.7: resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} @@ -299,7 +294,7 @@ packages: '@babel/compat-data': 7.18.5 '@babel/core': 7.18.5 '@babel/helper-validator-option': 7.16.7 - browserslist: 4.20.4 + browserslist: 4.21.0 semver: 6.3.0 /@babel/helper-environment-visitor/7.18.2: @@ -513,7 +508,7 @@ packages: resolution: {integrity: sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q==} engines: {node: '>=6.9.0'} dependencies: - core-js-pure: 3.23.1 + core-js-pure: 3.23.2 regenerator-runtime: 0.13.9 /@babel/runtime/7.18.3: @@ -655,7 +650,6 @@ packages: /@commitlint/load/17.0.0: resolution: {integrity: sha512-XaiHF4yWQOPAI0O6wXvk+NYLtJn/Xb7jgZEeKd4C1ZWd7vR7u8z5h0PkWxSr0uLZGQsElGxv3fiZ32C5+q6M8w==} engines: {node: '>=v14'} - requiresBuild: true dependencies: '@commitlint/config-validator': 17.0.0 '@commitlint/execute-rule': 17.0.0 @@ -664,10 +658,10 @@ packages: '@types/node': 18.0.0 chalk: 4.1.2 cosmiconfig: 7.0.1 - cosmiconfig-typescript-loader: 2.0.1_ulc3d5rlymqegdowsm6lrv2bhq + cosmiconfig-typescript-loader: 2.0.2_qiyc72axg2v44xl4yovan2v55u lodash: 4.17.21 resolve-from: 5.0.0 - typescript: 4.7.2 + typescript: 4.7.4 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -764,7 +758,7 @@ packages: resolution: {integrity: sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==} dev: false - /@emotion/react/11.7.1_pzekacn5ukhawg64s4hyluo4iy: + /@emotion/react/11.7.1_7eu627umq2cbnjxmysy5yb5jqq: resolution: {integrity: sha512-DV2Xe3yhkF1yT4uAUoJcYL1AmrnO5SVsdfvu+fBuS7IbByDeTVx9+wFmvx9Idzv7/78+9Mgx2Hcmr7Fex3tIyw==} peerDependencies: '@babel/core': ^7.0.0 @@ -783,7 +777,7 @@ packages: '@emotion/sheet': 1.1.1 '@emotion/utils': 1.0.0 '@emotion/weak-memoize': 0.2.5 - '@types/react': 18.0.13 + '@types/react': 18.0.14 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -844,6 +838,11 @@ packages: transitivePeerDependencies: - supports-color + /@faker-js/faker/7.3.0: + resolution: {integrity: sha512-1W0PZezq2rxlAssoWemi9gFRD8IQxvf0FPL5Km3TOmGHFG7ib0TbFBJ0yC7D/1NsxunjNTK6WjUXV8ao/mKZ5w==} + engines: {node: '>=14.0.0', npm: '>=6.0.0'} + dev: true + /@humanwhocodes/config-array/0.9.5: resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} engines: {node: '>=10.10.0'} @@ -992,7 +991,7 @@ packages: '@jest/test-result': 28.1.1 '@jest/transform': 28.1.1 '@jest/types': 28.1.1 - '@jridgewell/trace-mapping': 0.3.9 + '@jridgewell/trace-mapping': 0.3.13 '@types/node': 18.0.0 chalk: 4.1.2 collect-v8-coverage: 1.0.1 @@ -1011,7 +1010,7 @@ packages: string-length: 4.0.2 strip-ansi: 6.0.1 terminal-link: 2.1.1 - v8-to-istanbul: 9.0.0 + v8-to-istanbul: 9.0.1 transitivePeerDependencies: - supports-color dev: true @@ -1027,7 +1026,7 @@ packages: resolution: {integrity: sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.9 + '@jridgewell/trace-mapping': 0.3.13 callsites: 3.1.0 graceful-fs: 4.2.10 dev: true @@ -1058,7 +1057,7 @@ packages: dependencies: '@babel/core': 7.18.5 '@jest/types': 28.1.1 - '@jridgewell/trace-mapping': 0.3.9 + '@jridgewell/trace-mapping': 0.3.13 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 1.8.0 @@ -1100,7 +1099,7 @@ packages: dependencies: '@jridgewell/set-array': 1.1.1 '@jridgewell/sourcemap-codec': 1.4.13 - '@jridgewell/trace-mapping': 0.3.9 + '@jridgewell/trace-mapping': 0.3.13 /@jridgewell/resolve-uri/3.0.7: resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} @@ -1113,99 +1112,106 @@ packages: /@jridgewell/sourcemap-codec/1.4.13: resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==} + /@jridgewell/trace-mapping/0.3.13: + resolution: {integrity: sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==} + dependencies: + '@jridgewell/resolve-uri': 3.0.7 + '@jridgewell/sourcemap-codec': 1.4.13 + /@jridgewell/trace-mapping/0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.0.7 '@jridgewell/sourcemap-codec': 1.4.13 + dev: true - /@mantine/core/4.2.9_k5qmd4pret6g27b3vdtxxoxgem: - resolution: {integrity: sha512-25krgKF7FUFDsF5IYk+A/7GjgAZFzEcaFmGvscXS/7ccOickBmXzENwY9eJpv+MDo/7Sj5eiS0ZBi+WN27tdcw==} + /@mantine/core/4.2.10_izy4l7cgp6pypywh7yghkjgrsm: + resolution: {integrity: sha512-UCPhDcumygfBvik64VkMnBvqy0ZN9q+1AQ0fPdK8aAUvjRBWSyH0dJPL55vsK1ODboKktSEsyjHtb09DroL7fA==} peerDependencies: - '@mantine/hooks': 4.2.9 + '@mantine/hooks': 4.2.10 react: '>=16.8.0 || 18' react-dom: '>=16.8.0 || 18' dependencies: - '@mantine/hooks': 4.2.9_react@18.2.0 - '@mantine/styles': 4.2.9_ek6wcmahsc5qaoyrmshihzv2ie + '@mantine/hooks': 4.2.10_react@18.2.0 + '@mantine/styles': 4.2.10_sukxovx4mwg6d6626r5e3rv5k4 '@popperjs/core': 2.11.5 '@radix-ui/react-scroll-area': 0.1.4_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-popper: 2.3.0_ili5ylfne7i3hkfpsanzgkfu6m - react-textarea-autosize: 8.3.4_wlff343ihbuq5ksmlrv2tytkq4 + react-textarea-autosize: 8.3.4_luyos4mouogwq6z3wafb3re4ce transitivePeerDependencies: - '@babel/core' - '@types/react' dev: false - /@mantine/dates/4.2.9_gtthr2ylh7tj6fw5fvwgfnvydi: - resolution: {integrity: sha512-9snMNFIbC2PWPCQlfIC7pLQ9yWLImFQeECBPhULZHsmBMvy0OYH/V1jmp2BLIBNLAxzmfG19McX/iJl6Nd5DjA==} + /@mantine/dates/4.2.10_ynoop3a3ti2ggmshxkndm5mmmu: + resolution: {integrity: sha512-O6gaXr3Cj+J+rMxmy6t9PReqUHejpJh5JBK+kC3maNao4MqTFyf7cXftf4yZuePkPlBXVpN7+3oVBYG9JzlEjw==} peerDependencies: - '@mantine/core': 4.2.9 - '@mantine/hooks': 4.2.9 + '@mantine/core': 4.2.10 + '@mantine/hooks': 4.2.10 dayjs: ^1.10.5 react: '>=16.8.0 || 18' dependencies: - '@mantine/core': 4.2.9_k5qmd4pret6g27b3vdtxxoxgem - '@mantine/hooks': 4.2.9_react@18.2.0 + '@mantine/core': 4.2.10_izy4l7cgp6pypywh7yghkjgrsm + '@mantine/hooks': 4.2.10_react@18.2.0 dayjs: 1.11.3 react: 18.2.0 dev: false - /@mantine/dropzone/4.2.9_d6aiuykcth4kgoni4twbp62wfu: - resolution: {integrity: sha512-EJCx5iUHAUajlq3Ne+/z2nQRkPT+rhcJ56Kp8t2KZV42wYC2gAD3BVeZ+1dP8zRvSBo56mRPOxUWS77gBxSKeg==} + /@mantine/dropzone/4.2.10_aaeb3fubyphkmgx4v23kfmal6i: + resolution: {integrity: sha512-I31He0+gl1MDk/L72iGcQ4ekMlad3/n6oMk47PZ2F+aUCnsewldzYZ60/6jWwdYy9+u8CSnMbfwwYnFlXevPMA==} peerDependencies: - '@mantine/core': 4.2.9 - '@mantine/hooks': 4.2.9 + '@mantine/core': 4.2.10 + '@mantine/hooks': 4.2.10 react: '>=16.8.0 || 18' react-dom: '>=16.8.0 || 18' dependencies: - '@mantine/core': 4.2.9_k5qmd4pret6g27b3vdtxxoxgem - '@mantine/hooks': 4.2.9_react@18.2.0 + '@mantine/core': 4.2.10_izy4l7cgp6pypywh7yghkjgrsm + '@mantine/hooks': 4.2.10_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-dropzone: 11.7.1_react@18.2.0 dev: false - /@mantine/form/4.2.9_react@18.2.0: - resolution: {integrity: sha512-tr9DwZBNM404zKNk+5l7RWBxn23K0m6irRmdMeWtruxNRbHmpWncqJ68WExTzvJMk/tWaVchJwXmq7M2DO+RxQ==} + /@mantine/form/4.2.10_react@18.2.0: + resolution: {integrity: sha512-Baguw7ko0Q0arUQEv4mjbbsHVoagAERpvG13FdETfHhDougdzBcp3WuNxehvWMyW3H9Q836/eFaEYdyD5uzelQ==} peerDependencies: react: '>=16.8.0 || 18' dependencies: react: 18.2.0 dev: false - /@mantine/hooks/4.2.9_react@18.2.0: - resolution: {integrity: sha512-oLtlSXkl99vPGBTR9yoVCWoCQ25Bc4WhPci31iERMLMM/0fz85CZayQcAC4etq6un6rDiRNu6jq0YB1S5stmPg==} + /@mantine/hooks/4.2.10_react@18.2.0: + resolution: {integrity: sha512-gVYWeE4Ieu6FBwh9h/3FjcrrNzKx1k6Yw07/LSngJP0uT3fLt1gvY2p4PtPpOh7z2/RpTXBR1x+dOgEUKomYUQ==} peerDependencies: react: '>=16.8.0 || 18' dependencies: react: 18.2.0 dev: false - /@mantine/modals/4.2.9_d6aiuykcth4kgoni4twbp62wfu: - resolution: {integrity: sha512-uf4tW5X2xedKU0ykArFhmcOr1H7voi+s/mBAZ+aE+AxiR+MJVymSVmudK636vkZ3v7Ifpenxk1TzdNEiOjd/OQ==} + /@mantine/modals/4.2.10_aaeb3fubyphkmgx4v23kfmal6i: + resolution: {integrity: sha512-lIHgNkP/dAtJdco/1S1as6hw5QPQS/1Y/h7GuEdUQXXAcEQVPIqu+qwTeEzR9/K+sIciAg5IHazMr66OOf0/mw==} peerDependencies: - '@mantine/core': 4.2.9 - '@mantine/hooks': 4.2.9 + '@mantine/core': 4.2.10 + '@mantine/hooks': 4.2.10 react: '>=16.8.0 || 18' react-dom: '>=16.8.0 || 18' dependencies: - '@mantine/core': 4.2.9_k5qmd4pret6g27b3vdtxxoxgem - '@mantine/hooks': 4.2.9_react@18.2.0 + '@mantine/core': 4.2.10_izy4l7cgp6pypywh7yghkjgrsm + '@mantine/hooks': 4.2.10_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: false - /@mantine/next/4.2.9_4tlknlfxkqfornktk743nxrxwq: - resolution: {integrity: sha512-avbxQeR9EerSHJ3HOg7rPAyBUoJ3/ifvYifyP/Sd6ap3hGzF1a/NN4tSRjoRmz1jTyAdmKIhL0k0alwi1OqA2A==} + /@mantine/next/4.2.10_t6go2qepkhrcujdftz257haqfi: + resolution: {integrity: sha512-Y5eoRyNvO5DlqJGgjbDThXIbJmgPGVPad65CaP/xOS4KDkxomB/PJJhMQ0FGW+FpqPtCcR8QnQ6E6ozION3xkQ==} peerDependencies: next: '*' react: '>=16.8.0 || 18' react-dom: '>=16.8.0 || 18' dependencies: - '@mantine/ssr': 4.2.9_ek6wcmahsc5qaoyrmshihzv2ie + '@mantine/ssr': 4.2.10_sukxovx4mwg6d6626r5e3rv5k4 next: 12.1.6_4cc5zw5azim2bix77d63le72su react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -1215,46 +1221,46 @@ packages: - '@types/react' dev: false - /@mantine/notifications/4.2.9_d6aiuykcth4kgoni4twbp62wfu: - resolution: {integrity: sha512-t19JCCBmJl9/vXlE4vLiz9WqssvNL50MFgJ30MwI+Rc36xO3PnvY3LX3hULKmqOtOlVdTcWz2RwbPkVjM8/c7A==} + /@mantine/notifications/4.2.10_aaeb3fubyphkmgx4v23kfmal6i: + resolution: {integrity: sha512-qGkbPoJqFAxlV5nPMiYPDU/2TqPkk1ifcNqJHZe8Vme407XPEW4dl1ZqHVlBfK2wuj3yIS/yMljjbGEgCD5yig==} peerDependencies: - '@mantine/core': 4.2.9 - '@mantine/hooks': 4.2.9 + '@mantine/core': 4.2.10 + '@mantine/hooks': 4.2.10 react: '>=16.8.0 || 18' react-dom: '>=16.8.0 || 18' dependencies: - '@mantine/core': 4.2.9_k5qmd4pret6g27b3vdtxxoxgem - '@mantine/hooks': 4.2.9_react@18.2.0 + '@mantine/core': 4.2.10_izy4l7cgp6pypywh7yghkjgrsm + '@mantine/hooks': 4.2.10_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-transition-group: 4.4.2_biqbaboplfbrettd7655fr4n2y dev: false - /@mantine/prism/4.2.9_d6aiuykcth4kgoni4twbp62wfu: - resolution: {integrity: sha512-oEiXZb8gQLQYgQC5MIWyAw50tw5jjzDP/vYhe+GQUAUmcNyJ2W5PDhBVzYG8YzZOJNiYzaQsbsegukIxw27YAQ==} + /@mantine/prism/4.2.10_aaeb3fubyphkmgx4v23kfmal6i: + resolution: {integrity: sha512-W0WZmY2A+tMvvR+2tCY+l2bwlqSacz99s3LivvIcy6v5qQCqbI2nwzpndCIt9kqCYEabo3KfYBi/uhQIwXjvCQ==} peerDependencies: - '@mantine/core': 4.2.9 - '@mantine/hooks': 4.2.9 + '@mantine/core': 4.2.10 + '@mantine/hooks': 4.2.10 react: '>=16.8.0 || 18' react-dom: '>=16.8.0 || 18' dependencies: - '@mantine/core': 4.2.9_k5qmd4pret6g27b3vdtxxoxgem - '@mantine/hooks': 4.2.9_react@18.2.0 + '@mantine/core': 4.2.10_izy4l7cgp6pypywh7yghkjgrsm + '@mantine/hooks': 4.2.10_react@18.2.0 prism-react-renderer: 1.3.3_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: false - /@mantine/rte/4.2.9_d6aiuykcth4kgoni4twbp62wfu: - resolution: {integrity: sha512-VNp/Vl215nqpjufj6LbMupTILSQPdK+SxneeDiT+SsW1gw3k6Z7DOcAsfWLGDF5/kLLdIqMpHSCcgfg3AVQf1Q==} + /@mantine/rte/4.2.10_aaeb3fubyphkmgx4v23kfmal6i: + resolution: {integrity: sha512-rzOkfcJ6pZxLdARrBYRx/yCWyDTzAC+C+yMPGlrW9zig9lWng7OEhkAa8QdUQoTHTxgmY1tgbGLAnjdvzuR5lQ==} peerDependencies: - '@mantine/core': 4.2.9 - '@mantine/hooks': 4.2.9 + '@mantine/core': 4.2.10 + '@mantine/hooks': 4.2.10 react: '>=16.8.0 || 18' react-dom: '>=16.8.0 || 18' dependencies: - '@mantine/core': 4.2.9_k5qmd4pret6g27b3vdtxxoxgem - '@mantine/hooks': 4.2.9_react@18.2.0 + '@mantine/core': 4.2.10_izy4l7cgp6pypywh7yghkjgrsm + '@mantine/hooks': 4.2.10_react@18.2.0 '@modulz/radix-icons': 4.0.0_react@18.2.0 quill-mention: 3.1.0 react: 18.2.0 @@ -1262,32 +1268,32 @@ packages: react-quill: 2.0.0-beta.4_biqbaboplfbrettd7655fr4n2y dev: false - /@mantine/spotlight/4.2.9_d6aiuykcth4kgoni4twbp62wfu: - resolution: {integrity: sha512-KO/5KIppaausXzu+ucGNLMnMA5Frh5nw8fgTAL5gRTNQRpurE6QsNoWPPJAyc3YBdUywznqP2ULzSoj5kgsomA==} + /@mantine/spotlight/4.2.10_aaeb3fubyphkmgx4v23kfmal6i: + resolution: {integrity: sha512-RRLzMnj1fln99Y2yv+/n6YEAMp4j5k45R9wqURdXu4iE2DiabEq/Jnx2UoysVHkoAsg9k0uSGEJ2KqWL2RLyGg==} peerDependencies: - '@mantine/core': 4.2.9 - '@mantine/hooks': 4.2.9 + '@mantine/core': 4.2.10 + '@mantine/hooks': 4.2.10 react: '>=16.8.0 || 18' react-dom: '>=16.8.0 || 18' dependencies: - '@mantine/core': 4.2.9_k5qmd4pret6g27b3vdtxxoxgem - '@mantine/hooks': 4.2.9_react@18.2.0 + '@mantine/core': 4.2.10_izy4l7cgp6pypywh7yghkjgrsm + '@mantine/hooks': 4.2.10_react@18.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: false - /@mantine/ssr/4.2.9_ek6wcmahsc5qaoyrmshihzv2ie: - resolution: {integrity: sha512-6B5R8ELRR+GQaXdnUUoSlZXEA5DiG4Pp91EOJTU+UYnieQ+gdLISp2HmYAvKMpETViOciBou6r8j2hH74tls4g==} + /@mantine/ssr/4.2.10_sukxovx4mwg6d6626r5e3rv5k4: + resolution: {integrity: sha512-+nq7BzjrJfMucMsEBANR38UHw62b+uVdxgz+vAM5Ky9JM/ukws2x9cJVdN21Mf5oywsAuZqrJR4twgFUqayHww==} peerDependencies: react: '>=16.8.0 || 18' react-dom: '>=16.8.0 || 18' dependencies: '@emotion/cache': 11.7.1 - '@emotion/react': 11.7.1_pzekacn5ukhawg64s4hyluo4iy + '@emotion/react': 11.7.1_7eu627umq2cbnjxmysy5yb5jqq '@emotion/serialize': 1.0.2 '@emotion/server': 11.4.0 '@emotion/utils': 1.0.0 - '@mantine/styles': 4.2.9_ek6wcmahsc5qaoyrmshihzv2ie + '@mantine/styles': 4.2.10_sukxovx4mwg6d6626r5e3rv5k4 csstype: 3.0.9 html-react-parser: 1.3.0_react@18.2.0 react: 18.2.0 @@ -1298,14 +1304,14 @@ packages: - '@types/react' dev: false - /@mantine/styles/4.2.9_ek6wcmahsc5qaoyrmshihzv2ie: - resolution: {integrity: sha512-UT5m1412N20HPl+Mg2zTN7gP34J1GIa3o7eQ+fHThAQkAMm/vBehzX8nkbdxwyYkwuu6+/4kizcbM/Op4jMI3g==} + /@mantine/styles/4.2.10_sukxovx4mwg6d6626r5e3rv5k4: + resolution: {integrity: sha512-dWwCzBLYE8CwPJSPlV3MyIuR4ET3u6O+T+VmxY0lab6w/bqflseNSh9UBIW2AUoIYtxPVDjbZfzeTw32aV8CxA==} peerDependencies: react: '>=16.8.0 || 18' react-dom: '>=16.8.0 || 18' dependencies: '@emotion/cache': 11.7.1 - '@emotion/react': 11.7.1_pzekacn5ukhawg64s4hyluo4iy + '@emotion/react': 11.7.1_7eu627umq2cbnjxmysy5yb5jqq '@emotion/serialize': 1.0.2 '@emotion/utils': 1.0.0 clsx: 1.1.1 @@ -1333,8 +1339,8 @@ packages: set-cookie-parser: 2.5.0 dev: true - /@mswjs/interceptors/0.16.5: - resolution: {integrity: sha512-YhwcRKB42hdV2QxftYw1l0GMaXEfR7Rsg6yA4Ue+cwht5Z3IEWV8nggOjStDPlsksR8zg1plIeiTx6zHIVNiOg==} + /@mswjs/interceptors/0.16.6: + resolution: {integrity: sha512-7ax1sRx5s4ZWl0KvVhhcPOUoPbCCkVh8M8hYaqOyvoAQOiqLVzy+Z6Mh2ywPhYw4zudr5Mo/E8UT/zJBO/Wxrw==} engines: {node: '>=14'} dependencies: '@open-draft/until': 1.0.3 @@ -1347,24 +1353,14 @@ packages: - supports-color dev: true - /@next-auth/mongodb-adapter/1.0.3_h3jvr4sw33dco7uklkcksh3gvi: - resolution: {integrity: sha512-oO8OYjMhYx8s5qsdWWD+yNCqszCO7ewg6UkDhvfY0KhJRbcoOAwOgYYH5Bo4ZGJDqmIw8g6JeGipP7+xLa2Ynw==} - peerDependencies: - mongodb: ^4.1.1 - next-auth: ^4.0.1 - dependencies: - mongodb: 4.7.0 - next-auth: 4.5.0_biqbaboplfbrettd7655fr4n2y - dev: false - - /@next-auth/prisma-adapter/1.0.3_3pq3kxnod62bzywextqtouqueq: + /@next-auth/prisma-adapter/1.0.3_vvk7yqe637uongvoquuzkhfrze: resolution: {integrity: sha512-3Lq1cD3ytKM3EGKJZ4UZvlqshLtlPvYxLeCrUV9ifYwYlq51kmDaHjsIawlp8EbH5pE1UhlsvtlXMery7RghtA==} peerDependencies: '@prisma/client': '>=2.26.0 || >=3' next-auth: ^4.0.1 dependencies: - '@prisma/client': 3.15.2_prisma@3.15.2 - next-auth: 4.5.0_biqbaboplfbrettd7655fr4n2y + '@prisma/client': 3.15.2 + next-auth: 4.6.1_biqbaboplfbrettd7655fr4n2y dev: false /@next/env/12.1.6: @@ -1501,6 +1497,19 @@ packages: resolution: {integrity: sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==} dev: false + /@prisma/client/3.15.2: + resolution: {integrity: sha512-ErqtwhX12ubPhU4d++30uFY/rPcyvjk+mdifaZO5SeM21zS3t4jQrscy8+6IyB0GIYshl5ldTq6JSBo1d63i8w==} + engines: {node: '>=12.6'} + requiresBuild: true + peerDependencies: + prisma: '*' + peerDependenciesMeta: + prisma: + optional: true + dependencies: + '@prisma/engines-version': 3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e + dev: false + /@prisma/client/3.15.2_prisma@3.15.2: resolution: {integrity: sha512-ErqtwhX12ubPhU4d++30uFY/rPcyvjk+mdifaZO5SeM21zS3t4jQrscy8+6IyB0GIYshl5ldTq6JSBo1d63i8w==} engines: {node: '>=12.6'} @@ -1515,6 +1524,14 @@ packages: prisma: 3.15.2 dev: false + /@prisma/debug/3.8.1: + resolution: {integrity: sha512-ft4VPTYME1UBJ7trfrBuF2w9jX1ipDy786T9fAEskNGb+y26gPDqz5fiEWc2kgHNeVdz/qTI/V3wXILRyEcgxQ==} + dependencies: + '@types/debug': 4.1.7 + ms: 2.1.3 + strip-ansi: 6.0.1 + dev: true + /@prisma/engines-version/3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e: resolution: {integrity: sha512-e3k2Vd606efd1ZYy2NQKkT4C/pn31nehyLhVug6To/q8JT8FpiMrDy7zmm3KLF0L98NOQQcutaVtAPhzKhzn9w==} dev: false @@ -1523,6 +1540,15 @@ packages: resolution: {integrity: sha512-NHlojO1DFTsSi3FtEleL9QWXeSF/UjhCW0fgpi7bumnNZ4wj/eQ+BJJ5n2pgoOliTOGv9nX2qXvmHap7rJMNmg==} requiresBuild: true + /@prisma/generator-helper/3.8.1: + resolution: {integrity: sha512-3zSy+XTEjmjLj6NO+/YPN1Cu7or3xA11TOoOnLRJ9G4pTT67RJXjK0L9Xy5n+3I0Xlb7xrWCgo8MvQQLMWzxPA==} + dependencies: + '@prisma/debug': 3.8.1 + '@types/cross-spawn': 6.0.2 + chalk: 4.1.2 + cross-spawn: 7.0.3 + dev: true + /@radix-ui/number/0.1.0: resolution: {integrity: sha512-rpf6QiOWLHAkM4FEMYu9i+5Jr8cKT893+R4mPpcdsy4LD7omr9JfdOqj/h/xPA5+EcVrpMMlU6rrRYpUB5UI8g==} dependencies: @@ -1676,8 +1702,8 @@ packages: '@sinonjs/commons': 1.8.3 dev: true - /@testing-library/dom/8.13.0: - resolution: {integrity: sha512-9VHgfIatKNXQNaZTtLnalIy0jNZzY35a4S3oi08YAt9Hv1VsfZ/DfA45lM8D/UhtHBGJ4/lGwp0PZkVndRkoOQ==} + /@testing-library/dom/8.14.0: + resolution: {integrity: sha512-m8FOdUo77iMTwVRCyzWcqxlEIk+GnopbrRI15a0EaLbpZSCinIVI4kSQzWhkShK83GogvEFJSsHF3Ws0z1vrqA==} engines: {node: '>=12'} dependencies: '@babel/code-frame': 7.16.7 @@ -1695,7 +1721,7 @@ packages: engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: '@babel/runtime': 7.18.3 - '@types/testing-library__jest-dom': 5.14.3 + '@types/testing-library__jest-dom': 5.14.5 aria-query: 5.0.0 chalk: 3.0.0 css: 3.0.0 @@ -1713,7 +1739,7 @@ packages: react-dom: ^18.0.0 || 18 dependencies: '@babel/runtime': 7.18.3 - '@testing-library/dom': 8.13.0 + '@testing-library/dom': 8.14.0 '@types/react-dom': 18.0.5 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -1724,20 +1750,29 @@ packages: engines: {node: '>= 10'} dev: true - /@tsconfig/node10/1.0.8: - resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} + /@ts-morph/common/0.12.3: + resolution: {integrity: sha512-4tUmeLyXJnJWvTFOKtcNJ1yh0a3SsTLi2MUoyj8iUNznFRN1ZquaNe7Oukqrnki2FzZkm0J9adCNLDZxUzvj+w==} + dependencies: + fast-glob: 3.2.11 + minimatch: 3.1.2 + mkdirp: 1.0.4 + path-browserify: 1.0.1 + dev: true + + /@tsconfig/node10/1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true - /@tsconfig/node12/1.0.9: - resolution: {integrity: sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==} + /@tsconfig/node12/1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} dev: true - /@tsconfig/node14/1.0.1: - resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==} + /@tsconfig/node14/1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} dev: true - /@tsconfig/node16/1.0.2: - resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} + /@tsconfig/node16/1.0.3: + resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: true /@types/aria-query/4.2.2: @@ -1794,6 +1829,18 @@ packages: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} dev: true + /@types/cross-spawn/6.0.2: + resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==} + dependencies: + '@types/node': 18.0.0 + dev: true + + /@types/debug/4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + dependencies: + '@types/ms': 0.7.31 + dev: true + /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: @@ -1816,11 +1863,11 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/28.1.1: - resolution: {integrity: sha512-C2p7yqleUKtCkVjlOur9BWVA4HgUQmEj/HWCt5WzZ5mLXrWnyIfl0wGuArc+kBXsy0ZZfLp+7dywB4HtSVYGVA==} + /@types/jest/28.1.3: + resolution: {integrity: sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw==} dependencies: - jest-matcher-utils: 27.5.1 - pretty-format: 27.5.1 + jest-matcher-utils: 28.1.1 + pretty-format: 28.1.1 dev: true /@types/js-levenshtein/1.1.1: @@ -1842,6 +1889,10 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true + /@types/ms/0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: true + /@types/node/17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} dev: true @@ -1877,23 +1928,15 @@ packages: /@types/react-dom/18.0.5: resolution: {integrity: sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==} dependencies: - '@types/react': 18.0.13 + '@types/react': 18.0.14 dev: true - /@types/react/18.0.13: - resolution: {integrity: sha512-psqptIYQxGUFuGYwP3KCFVtPTkMpIcrqFmtKblWEUQhLuYLpHBwJkXhjp6eHfDM5IbyskY4x7qQpLedEsPkHlA==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.2 - csstype: 3.1.0 - /@types/react/18.0.14: resolution: {integrity: sha512-x4gGuASSiWmo0xjDLpm5mPb52syZHJx02VKbqUKdLmKtAwIh63XClGsiTI1K6DO5q7ox4xAsQrU+Gl3+gGXF9Q==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 csstype: 3.1.0 - dev: true /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} @@ -1908,10 +1951,10 @@ packages: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/testing-library__jest-dom/5.14.3: - resolution: {integrity: sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw==} + /@types/testing-library__jest-dom/5.14.5: + resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: - '@types/jest': 28.1.1 + '@types/jest': 28.1.3 dev: true /@types/tough-cookie/4.0.2: @@ -1922,8 +1965,8 @@ packages: resolution: {integrity: sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==} dev: false - /@types/whatwg-url/8.2.1: - resolution: {integrity: sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==} + /@types/whatwg-url/8.2.2: + resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} dependencies: '@types/node': 18.0.0 '@types/webidl-conversions': 6.1.1 @@ -1939,8 +1982,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/parser/5.28.0_ud6rd4xtew5bv4yhvkvu24pzm4: - resolution: {integrity: sha512-ekqoNRNK1lAcKhZESN/PdpVsWbP9jtiNqzFWkp/yAUdZvJalw2heCYuqRmM5eUJSIYEkgq5sGOjq+ZqsLMjtRA==} + /@typescript-eslint/parser/5.29.0_b5e7v2qnwxfo6hmiq56u52mz3e: + resolution: {integrity: sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1949,28 +1992,28 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.28.0 - '@typescript-eslint/types': 5.28.0 - '@typescript-eslint/typescript-estree': 5.28.0_typescript@4.7.3 + '@typescript-eslint/scope-manager': 5.29.0 + '@typescript-eslint/types': 5.29.0 + '@typescript-eslint/typescript-estree': 5.29.0_typescript@4.7.4 debug: 4.3.4 - eslint: 8.17.0 - typescript: 4.7.3 + eslint: 8.18.0 + typescript: 4.7.4 transitivePeerDependencies: - supports-color - /@typescript-eslint/scope-manager/5.28.0: - resolution: {integrity: sha512-LeBLTqF/he1Z+boRhSqnso6YrzcKMTQ8bO/YKEe+6+O/JGof9M0g3IJlIsqfrK/6K03MlFIlycbf1uQR1IjE+w==} + /@typescript-eslint/scope-manager/5.29.0: + resolution: {integrity: sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.28.0 - '@typescript-eslint/visitor-keys': 5.28.0 + '@typescript-eslint/types': 5.29.0 + '@typescript-eslint/visitor-keys': 5.29.0 - /@typescript-eslint/types/5.28.0: - resolution: {integrity: sha512-2OOm8ZTOQxqkPbf+DAo8oc16sDlVR5owgJfKheBkxBKg1vAfw2JsSofH9+16VPlN9PWtv8Wzhklkqw3k/zCVxA==} + /@typescript-eslint/types/5.29.0: + resolution: {integrity: sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@typescript-eslint/typescript-estree/5.28.0_typescript@4.7.3: - resolution: {integrity: sha512-9GX+GfpV+F4hdTtYc6OV9ZkyYilGXPmQpm6AThInpBmKJEyRSIjORJd1G9+bknb7OTFYL+Vd4FBJAO6T78OVqA==} + /@typescript-eslint/typescript-estree/5.29.0_typescript@4.7.4: + resolution: {integrity: sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1978,22 +2021,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.28.0 - '@typescript-eslint/visitor-keys': 5.28.0 + '@typescript-eslint/types': 5.29.0 + '@typescript-eslint/visitor-keys': 5.29.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.3 - typescript: 4.7.3 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 transitivePeerDependencies: - supports-color - /@typescript-eslint/visitor-keys/5.28.0: - resolution: {integrity: sha512-BtfP1vCor8cWacovzzPFOoeW4kBQxzmhxGoOpt0v1SFvG+nJ0cWaVdJk7cky1ArTcFHHKNIxyo2LLr3oNkSuXA==} + /@typescript-eslint/visitor-keys/5.29.0: + resolution: {integrity: sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.28.0 + '@typescript-eslint/types': 5.29.0 eslint-visitor-keys: 3.3.0 /@xmldom/xmldom/0.7.5: @@ -2418,16 +2461,15 @@ packages: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} dev: true - /browserslist/4.20.4: - resolution: {integrity: sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==} + /browserslist/4.21.0: + resolution: {integrity: sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001352 - electron-to-chromium: 1.4.155 - escalade: 3.1.1 + caniuse-lite: 1.0.30001359 + electron-to-chromium: 1.4.170 node-releases: 2.0.5 - picocolors: 1.0.0 + update-browserslist-db: 1.0.4_browserslist@4.21.0 /bser/2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -2490,8 +2532,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001352: - resolution: {integrity: sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA==} + /caniuse-lite/1.0.30001359: + resolution: {integrity: sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw==} /chalk/1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} @@ -2644,6 +2686,12 @@ packages: engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true + /code-block-writer/11.0.0: + resolution: {integrity: sha512-GEqWvEWWsOvER+g9keO4ohFoD3ymwyCnqY3hoTr7GZipYFwEhMHJw+TtV0rfgRhNImM6QWZGO2XYjlJVyYT62w==} + dependencies: + tslib: 2.3.1 + dev: true + /collect-v8-coverage/1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true @@ -2665,8 +2713,8 @@ packages: /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /colorette/2.0.17: - resolution: {integrity: sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g==} + /colorette/2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: true /combined-stream/1.0.8: @@ -2757,8 +2805,8 @@ packages: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} - /core-js-pure/3.23.1: - resolution: {integrity: sha512-3qNgf6TqI3U1uhuSYRzJZGfFd4T+YlbyVPl+jgRiKjdZopvG4keZQwWZDAWpu1UH9nCgTpUzIV3GFawC7cJsqg==} + /core-js-pure/3.23.2: + resolution: {integrity: sha512-t6u7H4Ff/yZNk+zqTr74UjCcZ3k8ApBryeLLV4rYQd9aF3gqmjjGjjR44ENfeBMH8VVvSynIjAJ0mUuFhzQtrA==} requiresBuild: true /core-js/2.6.12: @@ -2767,12 +2815,12 @@ packages: requiresBuild: true dev: true - /core-util-is/1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + /core-util-is/1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: false - /cosmiconfig-typescript-loader/2.0.1_ulc3d5rlymqegdowsm6lrv2bhq: - resolution: {integrity: sha512-B9s6sX/omXq7I6gC6+YgLmrBFMJhPWew7ty/X5Tuwtd2zOSgWaUdXjkuVwbe3qqcdETo60+1nSVMekq//LIXVA==} + /cosmiconfig-typescript-loader/2.0.2_qiyc72axg2v44xl4yovan2v55u: + resolution: {integrity: sha512-KmE+bMjWMXJbkWCeY4FJX/npHuZPNr9XF9q9CIQ/bpFwi1qHfCmSiKarrCcRa0LO4fWjk93pVoeRtJAkTGcYNw==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@types/node': '*' @@ -2780,8 +2828,8 @@ packages: dependencies: '@types/node': 18.0.0 cosmiconfig: 7.0.1 - ts-node: 10.8.0_ulc3d5rlymqegdowsm6lrv2bhq - typescript: 4.7.2 + ts-node: 10.8.1_qiyc72axg2v44xl4yovan2v55u + typescript: 4.7.4 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -2904,7 +2952,7 @@ packages: supports-color: optional: true dependencies: - ms: 2.1.2 + ms: 2.1.3 /debug/4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -2999,11 +3047,6 @@ packages: engines: {node: '>=8'} dev: true - /diff-sequences/27.5.1: - resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - /diff-sequences/28.1.1: resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -3099,8 +3142,8 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium/1.4.155: - resolution: {integrity: sha512-niPzKBSYPG06gxLKO0c2kEmgdRMTtIbNrBlvD31Ld8Q57b/K0218U4j8u/OOt25XE1eFOn47FcmQVdx9R1qqxA==} + /electron-to-chromium/1.4.170: + resolution: {integrity: sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw==} /emittery/0.10.2: resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} @@ -3203,7 +3246,7 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-next/12.1.6_qwqcuvhue6diaz4jqbkm5dp3pa: + /eslint-config-next/12.1.6_ngoqluhis4kr6sqtxgtlos2xtq: resolution: {integrity: sha512-qoiS3g/EPzfCTkGkaPBSX9W0NGE/B1wNO3oWrd76QszVGrdpLggNqcO8+LR6MB0CNqtp9Q8NoeVrxNVbzM9hqA==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -3215,38 +3258,38 @@ packages: dependencies: '@next/eslint-plugin-next': 12.1.6 '@rushstack/eslint-patch': 1.1.3 - '@typescript-eslint/parser': 5.28.0_ud6rd4xtew5bv4yhvkvu24pzm4 - eslint: 8.17.0 + '@typescript-eslint/parser': 5.29.0_b5e7v2qnwxfo6hmiq56u52mz3e + eslint: 8.18.0 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 2.7.1_3yxiwxzsqipdmy4jwrlv6vgfmy - eslint-plugin-import: 2.26.0_sjsolishy5r5hg73i5w4jemvma - eslint-plugin-jsx-a11y: 6.5.1_eslint@8.17.0 - eslint-plugin-react: 7.30.0_eslint@8.17.0 - eslint-plugin-react-hooks: 4.5.0_eslint@8.17.0 + eslint-import-resolver-typescript: 2.7.1_srrmf5la5dmnsfe2mpg6sboreu + eslint-plugin-import: 2.26.0_tv7mfbbpdai4jfqt22shqpzlh4 + eslint-plugin-jsx-a11y: 6.6.0_eslint@8.18.0 + eslint-plugin-react: 7.30.1_eslint@8.18.0 + eslint-plugin-react-hooks: 4.6.0_eslint@8.18.0 next: 12.1.6_biqbaboplfbrettd7655fr4n2y - typescript: 4.7.3 + typescript: 4.7.4 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color - /eslint-config-prettier/8.5.0_eslint@8.17.0: + /eslint-config-prettier/8.5.0_eslint@8.18.0: resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.17.0 + eslint: 8.18.0 dev: false /eslint-import-resolver-node/0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} dependencies: debug: 3.2.7 - resolve: 1.22.0 + resolve: 1.22.1 transitivePeerDependencies: - supports-color - /eslint-import-resolver-typescript/2.7.1_3yxiwxzsqipdmy4jwrlv6vgfmy: + /eslint-import-resolver-typescript/2.7.1_srrmf5la5dmnsfe2mpg6sboreu: resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} engines: {node: '>=4'} peerDependencies: @@ -3254,16 +3297,42 @@ packages: eslint-plugin-import: '*' dependencies: debug: 4.3.4 - eslint: 8.17.0 - eslint-plugin-import: 2.26.0_sjsolishy5r5hg73i5w4jemvma + eslint: 8.18.0 + eslint-plugin-import: 2.26.0_tv7mfbbpdai4jfqt22shqpzlh4 glob: 7.2.3 is-glob: 4.0.3 - resolve: 1.22.0 + resolve: 1.22.1 tsconfig-paths: 3.14.1 transitivePeerDependencies: - supports-color - /eslint-module-utils/2.7.3_pbmiczca3qpqvnkfcriol7sq7u: + /eslint-module-utils/2.7.3_qqdd6sztsqjscz2z77otnj6nm4: + resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.29.0_b5e7v2qnwxfo6hmiq56u52mz3e + debug: 3.2.7 + eslint-import-resolver-node: 0.3.6 + eslint-import-resolver-typescript: 2.7.1_srrmf5la5dmnsfe2mpg6sboreu + find-up: 2.1.0 + transitivePeerDependencies: + - supports-color + + /eslint-module-utils/2.7.3_ulu2225r2ychl26a37c6o2rfje: resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} engines: {node: '>=4'} peerDependencies: @@ -3281,15 +3350,44 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.28.0_ud6rd4xtew5bv4yhvkvu24pzm4 debug: 3.2.7 eslint-import-resolver-node: 0.3.6 - eslint-import-resolver-typescript: 2.7.1_3yxiwxzsqipdmy4jwrlv6vgfmy find-up: 2.1.0 transitivePeerDependencies: - supports-color + dev: true + + /eslint-plugin-import/2.26.0_eslint@8.18.0: + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + array-includes: 3.1.5 + array.prototype.flat: 1.3.0 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 8.18.0 + eslint-import-resolver-node: 0.3.6 + eslint-module-utils: 2.7.3_ulu2225r2ychl26a37c6o2rfje + has: 1.0.3 + is-core-module: 2.9.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.5 + resolve: 1.22.1 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true - /eslint-plugin-import/2.26.0_sjsolishy5r5hg73i5w4jemvma: + /eslint-plugin-import/2.26.0_tv7mfbbpdai4jfqt22shqpzlh4: resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -3299,28 +3397,28 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.28.0_ud6rd4xtew5bv4yhvkvu24pzm4 + '@typescript-eslint/parser': 5.29.0_b5e7v2qnwxfo6hmiq56u52mz3e array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 doctrine: 2.1.0 - eslint: 8.17.0 + eslint: 8.18.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3_pbmiczca3qpqvnkfcriol7sq7u + eslint-module-utils: 2.7.3_qqdd6sztsqjscz2z77otnj6nm4 has: 1.0.3 is-core-module: 2.9.0 is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.5 - resolve: 1.22.0 + resolve: 1.22.1 tsconfig-paths: 3.14.1 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jsx-a11y/6.5.1_eslint@8.17.0: - resolution: {integrity: sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==} + /eslint-plugin-jsx-a11y/6.6.0_eslint@8.18.0: + resolution: {integrity: sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -3333,22 +3431,27 @@ packages: axobject-query: 2.2.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.17.0 + eslint: 8.18.0 has: 1.0.3 - jsx-ast-utils: 3.3.0 + jsx-ast-utils: 3.3.1 language-tags: 1.0.5 minimatch: 3.1.2 + semver: 6.3.0 + + /eslint-plugin-next/0.0.0: + resolution: {integrity: sha512-IldNDVb6WNduggwRbYzSGZhaskUwVecJ6fhmqwX01+S1aohwAWNzU4me6y47DDzpD/g0fdayNBGxEdt9vKkUtg==} + dev: true - /eslint-plugin-react-hooks/4.5.0_eslint@8.17.0: - resolution: {integrity: sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==} + /eslint-plugin-react-hooks/4.6.0_eslint@8.18.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.17.0 + eslint: 8.18.0 - /eslint-plugin-react/7.30.0_eslint@8.17.0: - resolution: {integrity: sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A==} + /eslint-plugin-react/7.30.1_eslint@8.18.0: + resolution: {integrity: sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -3356,16 +3459,16 @@ packages: array-includes: 3.1.5 array.prototype.flatmap: 1.3.0 doctrine: 2.1.0 - eslint: 8.17.0 + eslint: 8.18.0 estraverse: 5.3.0 - jsx-ast-utils: 3.3.0 + jsx-ast-utils: 3.3.1 minimatch: 3.1.2 object.entries: 1.1.5 object.fromentries: 2.0.5 object.hasown: 1.1.1 object.values: 1.1.5 prop-types: 15.8.1 - resolve: 2.0.0-next.3 + resolve: 2.0.0-next.4 semver: 6.3.0 string.prototype.matchall: 4.0.7 @@ -3376,15 +3479,6 @@ packages: esrecurse: 4.3.0 estraverse: 5.3.0 - /eslint-utils/3.0.0_eslint@8.17.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.17.0 - eslint-visitor-keys: 2.1.0 - /eslint-utils/3.0.0_eslint@8.18.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} @@ -3393,7 +3487,6 @@ packages: dependencies: eslint: 8.18.0 eslint-visitor-keys: 2.1.0 - dev: true /eslint-visitor-keys/2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} @@ -3403,49 +3496,6 @@ packages: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /eslint/8.17.0: - resolution: {integrity: sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint/eslintrc': 1.3.0 - '@humanwhocodes/config-array': 0.9.5 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.17.0 - eslint-visitor-keys: 3.3.0 - espree: 9.3.2 - esquery: 1.4.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 6.0.2 - globals: 13.15.0 - ignore: 5.2.0 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - regexpp: 3.2.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - v8-compile-cache: 2.3.0 - transitivePeerDependencies: - - supports-color - /eslint/8.18.0: resolution: {integrity: sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3488,7 +3538,6 @@ packages: v8-compile-cache: 2.3.0 transitivePeerDependencies: - supports-color - dev: true /espree/9.3.2: resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==} @@ -4180,7 +4229,7 @@ packages: engines: {node: '>=12.0.0'} dependencies: ansi-escapes: 4.3.2 - chalk: 4.1.2 + chalk: 4.1.1 cli-cursor: 3.1.0 cli-width: 3.0.0 external-editor: 3.1.0 @@ -4651,16 +4700,6 @@ packages: - supports-color dev: true - /jest-diff/27.5.1: - resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - dev: true - /jest-diff/28.1.1: resolution: {integrity: sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -4720,11 +4759,6 @@ packages: jest-util: 28.1.1 dev: true - /jest-get-type/27.5.1: - resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - /jest-get-type/28.0.2: resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -4757,16 +4791,6 @@ packages: pretty-format: 28.1.1 dev: true - /jest-matcher-utils/27.5.1: - resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - dev: true - /jest-matcher-utils/28.1.1: resolution: {integrity: sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -4837,7 +4861,7 @@ packages: jest-pnp-resolver: 1.2.2_jest-resolve@28.1.1 jest-util: 28.1.1 jest-validate: 28.1.1 - resolve: 1.22.0 + resolve: 1.22.1 resolve.exports: 1.1.0 slash: 3.0.0 dev: true @@ -5136,8 +5160,8 @@ packages: engines: {'0': node >= 0.2.0} dev: true - /jsx-ast-utils/3.3.0: - resolution: {integrity: sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==} + /jsx-ast-utils/3.3.1: + resolution: {integrity: sha512-pxrjmNpeRw5wwVeWyEAk7QJu2GnBO3uzPFmHCKJJFPKK2Cy0cWL23krGtLdnMmbIi6/FjlrQpPyfQI19ByPOhQ==} engines: {node: '>=4.0'} dependencies: array-includes: 3.1.5 @@ -5190,13 +5214,13 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /lint-staged/13.0.2: - resolution: {integrity: sha512-qQLfLTh9z34eMzfEHENC+QBskZfxjomrf+snF3xJ4BzilORbD989NLqQ00ughsF/A+PT41e87+WsMFabf9++pQ==} + /lint-staged/13.0.3: + resolution: {integrity: sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug==} engines: {node: ^14.13.1 || >=16.0.0} hasBin: true dependencies: cli-truncate: 3.1.0 - colorette: 2.0.17 + colorette: 2.0.19 commander: 9.3.0 debug: 4.3.4 execa: 6.1.0 @@ -5223,7 +5247,7 @@ packages: optional: true dependencies: cli-truncate: 2.1.0 - colorette: 2.0.17 + colorette: 2.0.19 log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 @@ -5267,7 +5291,7 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: - chalk: 4.1.2 + chalk: 4.1.1 is-unicode-supported: 0.1.0 dev: true @@ -5298,6 +5322,11 @@ packages: dependencies: yallist: 4.0.0 + /luxon/2.4.0: + resolution: {integrity: sha512-w+NAwWOUL5hO0SgwOHsMBAmZ15SoknmQXhSO0hIbJCAmPKSsGeK8MlmhYh2w6Iib38IxN2M+/ooXWLbeis7GuA==} + engines: {node: '>=12'} + dev: true + /lz-string/1.4.4: resolution: {integrity: sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==} hasBin: true @@ -5418,10 +5447,16 @@ packages: /minimist/1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + /mkdirp/1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + /mongodb-connection-string-url/2.5.2: resolution: {integrity: sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==} dependencies: - '@types/whatwg-url': 8.2.1 + '@types/whatwg-url': 8.2.2 whatwg-url: 11.0.0 dev: false @@ -5443,8 +5478,11 @@ packages: /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /msw/0.42.1_typescript@4.7.3: - resolution: {integrity: sha512-LZZuz7VddL45gCBgfBWHyXj6a4W7OTJY0mZPoipJ3P/xwbuJwrtwB3IJrWlqBM8aink/eTKlRxwzmtIAwCj5yQ==} + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /msw/0.42.3_typescript@4.7.4: + resolution: {integrity: sha512-zrKBIGCDsNUCZLd3DLSeUtRruZ0riwJgORg9/bSDw3D0PTI8XUGAK3nC0LJA9g0rChGuKaWK/SwObA8wpFrz4g==} engines: {node: '>=14'} hasBin: true requiresBuild: true @@ -5455,7 +5493,7 @@ packages: optional: true dependencies: '@mswjs/cookies': 0.2.1 - '@mswjs/interceptors': 0.16.5 + '@mswjs/interceptors': 0.16.6 '@open-draft/until': 1.0.3 '@types/cookie': 0.4.1 '@types/js-levenshtein': 1.1.1 @@ -5473,7 +5511,7 @@ packages: statuses: 2.0.1 strict-event-emitter: 0.2.4 type-fest: 1.4.0 - typescript: 4.7.3 + typescript: 4.7.4 yargs: 17.5.1 transitivePeerDependencies: - encoding @@ -5488,7 +5526,7 @@ packages: dev: false /mute-stream/0.0.7: - resolution: {integrity: sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=} + resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} dev: true /mute-stream/0.0.8: @@ -5503,8 +5541,8 @@ packages: /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - /next-auth/4.5.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-B6gYRIbqtj8nlDsx3y2Ruwp/mvZnItPs7VUULY43QYw+M9xtDPIM9EBZ3ryd/wNYA3MDteBJlzGm/ivseXcmJA==} + /next-auth/4.6.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-Fq0+NUZ0Kp7LhT0UZzZkSBcRb0W6DYlhgTUZragSqW5HXTJ7ShgFqOhH5aFoGSpXIxsZQmfFBbt9Oun09mf+aA==} engines: {node: ^12.19.0 || ^14.15.0 || ^16.13.0} peerDependencies: nodemailer: ^6.6.5 @@ -5520,8 +5558,8 @@ packages: jose: 4.8.1 oauth: 0.9.15 openid-client: 5.1.6 - preact: 10.8.0 - preact-render-to-string: 5.2.0_preact@10.8.0 + preact: 10.8.2 + preact-render-to-string: 5.2.0_preact@10.8.2 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 uuid: 8.3.2 @@ -5553,7 +5591,7 @@ packages: optional: true dependencies: '@next/env': 12.1.6 - caniuse-lite: 1.0.30001352 + caniuse-lite: 1.0.30001359 postcss: 8.4.5 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -5574,7 +5612,6 @@ packages: transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - dev: false /next/12.1.6_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A==} @@ -5595,7 +5632,7 @@ packages: optional: true dependencies: '@next/env': 12.1.6 - caniuse-lite: 1.0.30001352 + caniuse-lite: 1.0.30001359 postcss: 8.4.5 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -5640,7 +5677,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.0 + resolve: 1.22.1 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -5818,7 +5855,7 @@ packages: engines: {node: '>=10'} dependencies: bl: 4.1.0 - chalk: 4.1.2 + chalk: 4.1.1 cli-cursor: 3.1.0 cli-spinners: 2.6.1 is-interactive: 1.0.0 @@ -5903,6 +5940,10 @@ packages: dependencies: callsites: 3.1.0 + /parenthesis/3.1.8: + resolution: {integrity: sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw==} + dev: true + /parse-json/5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -5922,6 +5963,10 @@ packages: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} dev: true + /path-browserify/1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + /path-exists/3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -5988,17 +6033,17 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact-render-to-string/5.2.0_preact@10.8.0: + /preact-render-to-string/5.2.0_preact@10.8.2: resolution: {integrity: sha512-+RGwSW78Cl+NsZRUbFW1MGB++didsfqRk+IyRVTaqy+3OjtpKK/6HgBtfszUX0YXMfo41k2iaQSseAHGKEwrbg==} peerDependencies: preact: '>=10' dependencies: - preact: 10.8.0 + preact: 10.8.2 pretty-format: 3.8.0 dev: false - /preact/10.8.0: - resolution: {integrity: sha512-2yXIS/h/UP5go0rBKesZqx0LuScqjECtH5pq8SQu3t6X2XNUWjCY4pcViUttDu3qX6NMxGiA/RuxOZd00QLCzg==} + /preact/10.8.2: + resolution: {integrity: sha512-AKGt0BsDSiAYzVS78jZ9qRwuorY2CoSZtf1iOC6gLb/3QyZt+fLT09aYJBjRc/BEcRc4j+j3ggERMdNE43i1LQ==} dev: false /prelude-ls/1.1.2: @@ -6188,7 +6233,7 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /react-textarea-autosize/8.3.4_wlff343ihbuq5ksmlrv2tytkq4: + /react-textarea-autosize/8.3.4_luyos4mouogwq6z3wafb3re4ce: resolution: {integrity: sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==} engines: {node: '>=10'} peerDependencies: @@ -6197,7 +6242,7 @@ packages: '@babel/runtime': 7.18.3 react: 18.2.0 use-composed-ref: 1.3.0_react@18.2.0 - use-latest: 1.2.1_wlff343ihbuq5ksmlrv2tytkq4 + use-latest: 1.2.1_luyos4mouogwq6z3wafb3re4ce transitivePeerDependencies: - '@types/react' dev: false @@ -6244,7 +6289,7 @@ packages: /readable-stream/1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} dependencies: - core-util-is: 1.0.2 + core-util-is: 1.0.3 inherits: 2.0.4 isarray: 0.0.1 string_decoder: 0.10.31 @@ -6253,7 +6298,7 @@ packages: /readable-stream/2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: - core-util-is: 1.0.2 + core-util-is: 1.0.3 inherits: 2.0.4 isarray: 1.0.0 process-nextick-args: 2.0.1 @@ -6318,7 +6363,7 @@ packages: dev: true /resolve-dir/1.0.1: - resolution: {integrity: sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=} + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} engines: {node: '>=0.10.0'} dependencies: expand-tilde: 2.0.2 @@ -6346,19 +6391,21 @@ packages: engines: {node: '>=10'} dev: true - /resolve/1.22.0: - resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: is-core-module: 2.9.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve/2.0.0-next.3: - resolution: {integrity: sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==} + /resolve/2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true dependencies: is-core-module: 2.9.0 path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 /restore-cursor/2.0.0: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} @@ -6791,7 +6838,6 @@ packages: dependencies: '@babel/core': 7.18.5 react: 18.2.0 - dev: false /styled-jsx/5.0.2_react@18.2.0: resolution: {integrity: sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==} @@ -6860,8 +6906,8 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /tabler-icons-react/1.49.0_react@18.2.0: - resolution: {integrity: sha512-e6gWcqN2WNN9MZE04uA1t9/u7+GzEZnIPB2grGOtJnFrU+FkJ0mV5ezcUQx/HIypoePmzlp8c9uEB1Kfg68UgQ==} + /tabler-icons-react/1.51.0_react@18.2.0: + resolution: {integrity: sha512-N6ws6GIa0L9OSylS81DrJECb7+QcW84to09V956QwnsNSBmCsWYuWWiI6FqHg7Gd5TsvfFBgKiw1Iw69Ti12Og==} peerDependencies: react: '>= 16.8.0 || 18' dependencies: @@ -6968,8 +7014,15 @@ packages: engines: {node: '>=8'} dev: true - /ts-node/10.8.0_ulc3d5rlymqegdowsm6lrv2bhq: - resolution: {integrity: sha512-/fNd5Qh+zTt8Vt1KbYZjRHCE9sI5i7nqfD/dzBBRDeVXZXS6kToW6R7tTU6Nd4XavFs0mAVCg29Q//ML7WsZYA==} + /ts-morph/13.0.3: + resolution: {integrity: sha512-pSOfUMx8Ld/WUreoSzvMFQG5i9uEiWIsBYjpU9+TTASOeUa89j5HykomeqVULm1oqWtBdleI3KEFRLrlA3zGIw==} + dependencies: + '@ts-morph/common': 0.12.3 + code-block-writer: 11.0.0 + dev: true + + /ts-node/10.8.1_qiyc72axg2v44xl4yovan2v55u: + resolution: {integrity: sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -6983,10 +7036,10 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.8 - '@tsconfig/node12': 1.0.9 - '@tsconfig/node14': 1.0.1 - '@tsconfig/node16': 1.0.2 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 '@types/node': 18.0.0 acorn: 8.7.1 acorn-walk: 8.2.0 @@ -6994,7 +7047,7 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.7.2 + typescript: 4.7.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -7010,140 +7063,153 @@ packages: /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + /tslib/2.3.1: + resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + dev: true + /tslib/2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - /tsutils/3.21.0_typescript@4.7.3: + /tsutils/3.21.0_typescript@4.7.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.7.3 + typescript: 4.7.4 - /turbo-darwin-64/1.2.16: - resolution: {integrity: sha512-dyitLQJdH3uLVdlH9jAkP4LqEO/K+wOXjUqOzjTciRLjQPzmsNY60/bmFHODADK4eBBl1nxbtn7tmmoT4vS1qA==} + /turbo-android-arm64/1.3.1: + resolution: {integrity: sha512-JcnZh9tLbZDpKaXaao/s/k4qXt3TbNEc1xEYYXurVWnqiMueGeS7QAtThVB85ZSqzj7djk+ngSrZabPy5RG25Q==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /turbo-darwin-64/1.3.1: + resolution: {integrity: sha512-TIGDradVFoGck86VIuM38KaDeNxdKaP2ti93UpQeFw26ZhPIeTAa6wUgnz4DQP6bjIvQmXlYJ16ETZb4tFYygg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-darwin-arm64/1.2.16: - resolution: {integrity: sha512-Ex6uM4HU7rGXdhvJMpzNpp6qxglJ98nWeIi5qR/lBXHLjK3UCvSW8BEALArUJYJTXS9FZBq1a5LowFqXYsfDcA==} + /turbo-darwin-arm64/1.3.1: + resolution: {integrity: sha512-aLBq8KiMMmop7uKBkvDt/y+eER2UzxZyUzh1KWcZ7DZB5tFZnknEUyf2qggY2vd2WcDVfQ1EUjZ0MFxhhVaVzA==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-freebsd-64/1.2.16: - resolution: {integrity: sha512-onRGKMvog8B3XDssSBIAg+FrEq9pcBoAybP7bpi/uYIH1L/WQ7YMmLn88X9JX19ehYuVOVZrjap4jWH2GIkU8A==} + /turbo-freebsd-64/1.3.1: + resolution: {integrity: sha512-BOr/ifmxjlBeuDkDQLUJtzqzXQ2zPHHcI14U9Ys+z4Mza1uzQn/oSJqQvU5RuyRBVai7noMrpPS7QuKtDz0Cyg==} cpu: [x64] os: [freebsd] requiresBuild: true dev: true optional: true - /turbo-freebsd-arm64/1.2.16: - resolution: {integrity: sha512-S0EqPqxwnJuVNNXRgcHB0r8ai8LSrpHdihVJKRM7WYmIR7isccBEf/G9agrt73sCXwjvenxFs4HDR7cSvGt14Q==} + /turbo-freebsd-arm64/1.3.1: + resolution: {integrity: sha512-bHPZjK4xnGLz6/oxl5XmWhdYOdtBMSadrGhptWSZ0wBGNn/gQzDTeZAkQeqhh25AD0eM1hzDe8QUz8GlS43lrA==} cpu: [arm64] os: [freebsd] requiresBuild: true dev: true optional: true - /turbo-linux-32/1.2.16: - resolution: {integrity: sha512-ecbqmGOxgTWePGrowtwyvZGfvwaLxFWmPK21cU0PS+fzoZBaVmzYmniTdd/2EkGCw7TOPhtiT22v96fWcnRycA==} + /turbo-linux-32/1.3.1: + resolution: {integrity: sha512-c5okimusfvivu9wS8MKSr+rXpQAV+M4TyR9JX+spIK8B1I7AjfECAqiK2D5WFWO1bQ33bUAuxXOEpUuLpgEm+g==} cpu: [ia32] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-64/1.2.16: - resolution: {integrity: sha512-q6gtdMWCzM0Sktkd73zcaQjNoeM1MjtrbwQBctWN/Sgj0eiPBPnzpIvokvx98x7RLf4qyI99/mlme0Dn5fx21A==} + /turbo-linux-64/1.3.1: + resolution: {integrity: sha512-O0pNX+N5gbmRcyZT+jsCPUNCN3DpIZHqNN35j7MT5nr0IkZa83CGbZnrEc+7Qws//jFJ26EngqD/JyRB2E8nwQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm/1.2.16: - resolution: {integrity: sha512-du7uvExELNb89V3g7iM0XP21fR1Yl3EoHRcOfQz32oUqnS7idCKvbEowM9LtiluQl1dKcOIJjn1nlvvsqzkhOg==} + /turbo-linux-arm/1.3.1: + resolution: {integrity: sha512-f+r6JIwv/7ylxxJtgVi8cVw+6oNoD/r1IMTU6ejH8bfyMZZko4kkNwH9VYribQ44KDkJEgzdltnzFG5f6Hz10g==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm64/1.2.16: - resolution: {integrity: sha512-gUf67tYJ/N09WAZTTmtUWYrqm381tZxiulnRGAIM+iRsaTrweyUKZaYXwJvlPpI/cQOw25wCG9/IyvxLeagL8A==} + /turbo-linux-arm64/1.3.1: + resolution: {integrity: sha512-D6+1MeS/x+/VCCooHPU4NIpB8qI/eW70eMRA79bqTPaxxluP0g2CaxXgucco05P51YtNsSxeVcH7X76iadON6Q==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-mips64le/1.2.16: - resolution: {integrity: sha512-U5BM+Ql3z13uRtwMmKH/8eL+9DdTgyijC2gaX4xP0RTlcN7WfAstg8Fg/Tn2Vw9vtpVDdxwpw7dvX4kw2ghhpA==} + /turbo-linux-mips64le/1.3.1: + resolution: {integrity: sha512-yL64jgwVCziOpBcdpMxIsczkgwwOvmaqKObFKWyCNlk/LOl5NKODLwXEaryLaALtpwUAoS4ltMSI64gKqmLrOA==} cpu: [mips64el] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-ppc64le/1.2.16: - resolution: {integrity: sha512-HQWSCmVZyc5chw7Ie2ZcfZPfmM06mbEEu0Wl11Y5QWh1ZzhPNQHs/TsF4I9r146wHi62XgcrKFjkw4ARZiWsLA==} + /turbo-linux-ppc64le/1.3.1: + resolution: {integrity: sha512-tjnM+8RosykS1lBpOPLDXGOz/Po2h796ty17uBd7IFslWPOI16a/akFOFoLH8PCiGGJMe3CYgRhEKn4sPWNxFA==} cpu: [ppc64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-windows-32/1.2.16: - resolution: {integrity: sha512-0ZtPz5FK2qZjznMG4vvRyaabrhO8BgbN+tBx1wjXSuoICTAjYi5TwRVVRh59c3x7qQmR21Cv33CrhLBPRfeAlg==} + /turbo-windows-32/1.3.1: + resolution: {integrity: sha512-Snnv+TVigulqwK6guHKndMlrLw88NXj8BtHRGrEksPR0QkyuHlwLf+tHYB4HmvpUl4W9lnXQf4hsljWP64BEdw==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-64/1.2.16: - resolution: {integrity: sha512-j8iAIixq/rGfBpHNbYOosxMasZrGuMzLILEuQGDxZgKNpYgobJ15QFHQlGR9sit1b8qPU5zZX4CtByRtkgH1Bw==} + /turbo-windows-64/1.3.1: + resolution: {integrity: sha512-gLeohHG07yIhON1Pp0YNE00i/yzip2GFhkA6HdJaK95uE5bKULpqxuO414hOS/WzGwrGVXBKCImfe24XXh5T+Q==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-arm64/1.2.16: - resolution: {integrity: sha512-4GpcJG3B8R9WDhwfT8fu6ZmOOfseCg6Q1cy/G8/zpJQk769yYcSnD8MgQhYgHB58aVFxZcMxBvLL6UA0UrpgWA==} + /turbo-windows-arm64/1.3.1: + resolution: {integrity: sha512-0MWcHLvYgs/qdcoTFZ55nu8HhrpeiwXEMw9cbNfgqTlzy3OsrAsovYEJFyQ8KSxeploiD+QJlCdvhxx+5C0tlA==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /turbo/1.2.16: - resolution: {integrity: sha512-PPUa2COKgFkyb6N3uF9AnIY3l9FZkF15QQ3U1K2wpI01D3gyGKQO0Q3DUQ4ipmciP0teBfL7H+l/QTrUA9IVvQ==} + /turbo/1.3.1: + resolution: {integrity: sha512-DXckoGKlZgvTn/PrHpBI/57aeXR7tfyPf2dK+4LmBczt24ELA3o6eYHeA7KzfpSYhB2LE9qveYFQ6mJ1OzGjjg==} hasBin: true requiresBuild: true optionalDependencies: - turbo-darwin-64: 1.2.16 - turbo-darwin-arm64: 1.2.16 - turbo-freebsd-64: 1.2.16 - turbo-freebsd-arm64: 1.2.16 - turbo-linux-32: 1.2.16 - turbo-linux-64: 1.2.16 - turbo-linux-arm: 1.2.16 - turbo-linux-arm64: 1.2.16 - turbo-linux-mips64le: 1.2.16 - turbo-linux-ppc64le: 1.2.16 - turbo-windows-32: 1.2.16 - turbo-windows-64: 1.2.16 - turbo-windows-arm64: 1.2.16 + turbo-android-arm64: 1.3.1 + turbo-darwin-64: 1.3.1 + turbo-darwin-arm64: 1.3.1 + turbo-freebsd-64: 1.3.1 + turbo-freebsd-arm64: 1.3.1 + turbo-linux-32: 1.3.1 + turbo-linux-64: 1.3.1 + turbo-linux-arm: 1.3.1 + turbo-linux-arm64: 1.3.1 + turbo-linux-mips64le: 1.3.1 + turbo-linux-ppc64le: 1.3.1 + turbo-windows-32: 1.3.1 + turbo-windows-64: 1.3.1 + turbo-windows-arm64: 1.3.1 dev: true /type-check/0.3.2: @@ -7193,14 +7259,8 @@ packages: engines: {node: '>=10'} dev: true - /typescript/4.7.2: - resolution: {integrity: sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /typescript/4.7.3: - resolution: {integrity: sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==} + /typescript/4.7.4: + resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} engines: {node: '>=4.2.0'} hasBin: true @@ -7222,6 +7282,16 @@ packages: engines: {node: '>= 10.0.0'} dev: true + /update-browserslist-db/1.0.4_browserslist@4.21.0: + resolution: {integrity: sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.0 + escalade: 3.1.1 + picocolors: 1.0.0 + /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -7235,7 +7305,7 @@ packages: react: 18.2.0 dev: false - /use-isomorphic-layout-effect/1.1.2_wlff343ihbuq5ksmlrv2tytkq4: + /use-isomorphic-layout-effect/1.1.2_luyos4mouogwq6z3wafb3re4ce: resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' @@ -7244,11 +7314,11 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.13 + '@types/react': 18.0.14 react: 18.2.0 dev: false - /use-latest/1.2.1_wlff343ihbuq5ksmlrv2tytkq4: + /use-latest/1.2.1_luyos4mouogwq6z3wafb3re4ce: resolution: {integrity: sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==} peerDependencies: '@types/react': '*' @@ -7257,9 +7327,9 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.13 + '@types/react': 18.0.14 react: 18.2.0 - use-isomorphic-layout-effect: 1.1.2_wlff343ihbuq5ksmlrv2tytkq4 + use-isomorphic-layout-effect: 1.1.2_luyos4mouogwq6z3wafb3re4ce dev: false /util-deprecate/1.0.2: @@ -7277,11 +7347,11 @@ packages: /v8-compile-cache/2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} - /v8-to-istanbul/9.0.0: - resolution: {integrity: sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==} + /v8-to-istanbul/9.0.1: + resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.9 + '@jridgewell/trace-mapping': 0.3.13 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 dev: true @@ -7508,3 +7578,26 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true + + /zod-prisma/0.5.4_prisma@3.15.2+zod@3.17.3: + resolution: {integrity: sha512-5Ca4Qd1a1jy1T/NqCEpbr0c+EsbjJfJ/7euEHob3zDvtUK2rTuD1Rc/vfzH8q8PtaR2TZbysD88NHmrLwpv3Xg==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + decimal.js: ^10.0.0 + prisma: ^3.0.0 + zod: ^3.0.0 + peerDependenciesMeta: + decimal.js: + optional: true + dependencies: + '@prisma/generator-helper': 3.8.1 + parenthesis: 3.1.8 + prisma: 3.15.2 + ts-morph: 13.0.3 + zod: 3.17.3 + dev: true + + /zod/3.17.3: + resolution: {integrity: sha512-4oKP5zvG6GGbMlqBkI5FESOAweldEhSOZ6LI6cG+JzUT7ofj1ZOC0PJudpQOpT1iqOFpYYtX5Pw0+o403y4bcg==} + dev: true diff --git a/stackhawk.yml~build(global): :package: kakaaw! stackhawk isnt a workflow! b/stackhawk.yml~build(global): :package: kakaaw! stackhawk isnt a workflow! deleted file mode 100644 index f9582e9..0000000 --- a/stackhawk.yml~build(global): :package: kakaaw! stackhawk isnt a workflow! +++ /dev/null @@ -1,20 +0,0 @@ -# -- stackhawk configuration for netwerkr -- -app: - # -- An applicationId obtained from the StackHawk platform. -- - applicationId: fe4bdb94-5f1c-4de0-8dab-ff4ba2cd3540 # (required) - # -- The environment for the applicationId defined in the StackHawk platform. -- - env: Development # (required) - # -- The url of your application to scan -- - host: http://localhost:3000 # (required) - - -# -- Customized Configuration for GraphQL/SOAP/OpenAPI, add here -- - # Configuration Docs: https://docs.stackhawk.com/hawkscan/configuration/ - -# -- If Authenticated Scanning is needed, add here -- - # Authenticated Scanning Docs: https://docs.stackhawk.com/hawkscan/authenticated-scanning.html - # Authenticated Scanning Repo: https://github.com/kaakaww/scan-configuration/tree/main/Authentication - -# -- Help Section -- - # Docs: https://docs.stackhawk.com/ - # Contact Support: support@stackhawk.com \ No newline at end of file diff --git a/stackhawk.yml~develop b/stackhawk.yml~develop deleted file mode 100644 index f9582e9..0000000 --- a/stackhawk.yml~develop +++ /dev/null @@ -1,20 +0,0 @@ -# -- stackhawk configuration for netwerkr -- -app: - # -- An applicationId obtained from the StackHawk platform. -- - applicationId: fe4bdb94-5f1c-4de0-8dab-ff4ba2cd3540 # (required) - # -- The environment for the applicationId defined in the StackHawk platform. -- - env: Development # (required) - # -- The url of your application to scan -- - host: http://localhost:3000 # (required) - - -# -- Customized Configuration for GraphQL/SOAP/OpenAPI, add here -- - # Configuration Docs: https://docs.stackhawk.com/hawkscan/configuration/ - -# -- If Authenticated Scanning is needed, add here -- - # Authenticated Scanning Docs: https://docs.stackhawk.com/hawkscan/authenticated-scanning.html - # Authenticated Scanning Repo: https://github.com/kaakaww/scan-configuration/tree/main/Authentication - -# -- Help Section -- - # Docs: https://docs.stackhawk.com/ - # Contact Support: support@stackhawk.com \ No newline at end of file diff --git a/turbo.json b/turbo.json index 7c2c3c3..8e8042c 100644 --- a/turbo.json +++ b/turbo.json @@ -23,6 +23,15 @@ "db:generate": { "outputs": [] }, + "db:push": { + "outputs": [] + }, + "db:seed": { + "outputs": [] + }, + "db:studio": { + "outputs": [] + }, "test": { "outputs": [] }