From 5587867598247b6ecd1102e5692f2da3b9331199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Omar=20L=C3=B3pez?= Date: Mon, 11 Jul 2022 17:35:50 -0600 Subject: [PATCH] RFC: Custom eslint plugin (#3272) * WIP * Renamed pacakge * Update yarn.lock * Lint fixes * Moved afterBufferTime to busyTimes & heavily simplify busy check (#3258) * New Crowdin translations by Github Action (#3312) Co-authored-by: Crowdin Bot * Fix shell flicker (#3314) Co-authored-by: Peer Richelsen * Add recommended config to plugin * Linting Co-authored-by: Peer Richelsen Co-authored-by: Alex van Andel Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot Co-authored-by: Hariom Balhara --- apps/web/playwright/change-username.test.ts | 2 +- apps/web/server/routers/viewer/slots.tsx | 2 +- apps/website | 2 +- packages/config/eslint-preset.js | 4 +- packages/config/package.json | 1 + packages/dayjs/index.ts | 1 + packages/eslint-plugin/package.json | 15 + packages/eslint-plugin/src/configs/index.ts | 4 + .../eslint-plugin/src/configs/recommended.ts | 9 + packages/eslint-plugin/src/index.js | 11 + .../src/rules/deprecated-imports.ts | 41 +++ packages/eslint-plugin/src/rules/index.ts | 7 + .../eslint-plugin/src/rules/my-first-rule.ts | 23 ++ yarn.lock | 289 +++++++++++++++++- 14 files changed, 404 insertions(+), 7 deletions(-) create mode 100644 packages/eslint-plugin/package.json create mode 100644 packages/eslint-plugin/src/configs/index.ts create mode 100644 packages/eslint-plugin/src/configs/recommended.ts create mode 100644 packages/eslint-plugin/src/index.js create mode 100644 packages/eslint-plugin/src/rules/deprecated-imports.ts create mode 100644 packages/eslint-plugin/src/rules/index.ts create mode 100644 packages/eslint-plugin/src/rules/my-first-rule.ts diff --git a/apps/web/playwright/change-username.test.ts b/apps/web/playwright/change-username.test.ts index 02a251b34e..79fc35a1a2 100644 --- a/apps/web/playwright/change-username.test.ts +++ b/apps/web/playwright/change-username.test.ts @@ -1,7 +1,7 @@ import { expect } from "@playwright/test"; import { UserPlan } from "@prisma/client"; -import dayjs from "dayjs"; +import dayjs from "@calcom/dayjs"; import { WEBAPP_URL } from "@calcom/lib/constants"; import stripe from "@calcom/stripe/server"; import { getFreePlanPrice, getProPlanPrice } from "@calcom/stripe/utils"; diff --git a/apps/web/server/routers/viewer/slots.tsx b/apps/web/server/routers/viewer/slots.tsx index f59804da26..58fcef5064 100644 --- a/apps/web/server/routers/viewer/slots.tsx +++ b/apps/web/server/routers/viewer/slots.tsx @@ -1,9 +1,9 @@ import { SchedulingType } from "@prisma/client"; -import dayjs, { Dayjs } from "dayjs"; import { z } from "zod"; import type { CurrentSeats } from "@calcom/core/getUserAvailability"; import { getUserAvailability } from "@calcom/core/getUserAvailability"; +import dayjs, { Dayjs } from "@calcom/dayjs"; import logger from "@calcom/lib/logger"; import { availabilityUserSelect } from "@calcom/prisma"; import { TimeRange } from "@calcom/types/schedule"; diff --git a/apps/website b/apps/website index a0ee6642d8..7c117caf74 160000 --- a/apps/website +++ b/apps/website @@ -1 +1 @@ -Subproject commit a0ee6642d82fa5b97eb4df14f01b3d955a7a703a +Subproject commit 7c117caf74dd2b49e6edc06c39b48a8fa69b39aa diff --git a/packages/config/eslint-preset.js b/packages/config/eslint-preset.js index 97e749e56f..72950a9848 100644 --- a/packages/config/eslint-preset.js +++ b/packages/config/eslint-preset.js @@ -20,8 +20,8 @@ module.exports = { overrides: [ { files: ["*.ts", "*.tsx"], - extends: ["plugin:@typescript-eslint/recommended"], - plugins: ["@typescript-eslint"], + extends: ["plugin:@typescript-eslint/recommended", "plugin:@calcom/eslint/recommended"], + plugins: ["@typescript-eslint", "@calcom/eslint"], parser: "@typescript-eslint/parser", overrides: [ { diff --git a/packages/config/package.json b/packages/config/package.json index cf2cfd614d..4679bf9547 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -8,6 +8,7 @@ "prettier-preset.js" ], "dependencies": { + "@calcom/eslint-plugin-eslint": "*", "eslint-config-next": "^12.1.6", "eslint-config-prettier": "^8.5.0", "eslint-plugin-playwright": "^0.9.0", diff --git a/packages/dayjs/index.ts b/packages/dayjs/index.ts index 3ccfd77dea..62e049f3a0 100644 --- a/packages/dayjs/index.ts +++ b/packages/dayjs/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable @calcom/eslint/deprecated-imports */ import dayjs from "dayjs"; import dayjsBusinessTime from "dayjs-business-days2"; import customParseFormat from "dayjs/plugin/customParseFormat"; diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json new file mode 100644 index 0000000000..618188989d --- /dev/null +++ b/packages/eslint-plugin/package.json @@ -0,0 +1,15 @@ +{ + "name": "@calcom/eslint-plugin-eslint", + "version": "0.1.0", + "main": "./src/index.js", + "dependencies": { + "@typescript-eslint/parser": "^5.25.0", + "@typescript-eslint/utils": "^5.30.5", + "eslint": "^8.15.0", + "ts-node": "^10.6.0", + "typescript": "^4.6.4" + }, + "devDependencies": { + "@types/eslint": "^8.4.5" + } +} diff --git a/packages/eslint-plugin/src/configs/index.ts b/packages/eslint-plugin/src/configs/index.ts new file mode 100644 index 0000000000..5caa0264d8 --- /dev/null +++ b/packages/eslint-plugin/src/configs/index.ts @@ -0,0 +1,4 @@ +/* eslint-disable @typescript-eslint/no-var-requires, import/no-anonymous-default-export */ +export default { + recommended: require("./recommended").default, +}; diff --git a/packages/eslint-plugin/src/configs/recommended.ts b/packages/eslint-plugin/src/configs/recommended.ts new file mode 100644 index 0000000000..22b5ae8ce6 --- /dev/null +++ b/packages/eslint-plugin/src/configs/recommended.ts @@ -0,0 +1,9 @@ +const recommended = { + parser: "@typescript-eslint/parser", + parserOptions: { sourceType: "module" }, + rules: { + "@calcom/eslint/deprecated-imports": "error", + }, +}; + +export default recommended; diff --git a/packages/eslint-plugin/src/index.js b/packages/eslint-plugin/src/index.js new file mode 100644 index 0000000000..312b019ed0 --- /dev/null +++ b/packages/eslint-plugin/src/index.js @@ -0,0 +1,11 @@ +// This registers Typescript compiler instance onto node.js. +// Now it is possible to just require typescript files without any compilation steps in the environment run by node +require("ts-node").register(); + +// re-export our rules so that eslint run by node can understand them +module.exports = { + // import our rules from the typescript file + rules: require("./rules/index.ts").default, + // import our config from the typescript file + configs: require("./configs/index.ts").default, +}; diff --git a/packages/eslint-plugin/src/rules/deprecated-imports.ts b/packages/eslint-plugin/src/rules/deprecated-imports.ts new file mode 100644 index 0000000000..6814d5bbc2 --- /dev/null +++ b/packages/eslint-plugin/src/rules/deprecated-imports.ts @@ -0,0 +1,41 @@ +import { ESLintUtils } from "@typescript-eslint/utils"; + +const createRule = ESLintUtils.RuleCreator((name) => `https://developer.cal.com/eslint/rule/${name}`); + +const rule = createRule({ + create(context) { + return { + ImportDeclaration(node) { + node.specifiers.length && + node.source.value === "dayjs" && + node.specifiers.forEach((item) => { + if (item.local.name === "dayjs") { + return context.report({ + node: item, + loc: node.loc, + messageId: "dayjs-moved", + fix: (fixer) => fixer.replaceText(node, "import dayjs from '@calcom/dayjs'"), + }); + } + return null; + }); + }, + }; + }, + name: "deprecated-imports", + meta: { + fixable: "code", + docs: { + description: "Avoid deprecated imports", + recommended: "warn", + }, + messages: { + "dayjs-moved": `Import dayjs from '@calcom/daysjs' to avoid plugin conflicts.`, + }, + type: "suggestion", + schema: [], + }, + defaultOptions: [], +}); + +export default rule; diff --git a/packages/eslint-plugin/src/rules/index.ts b/packages/eslint-plugin/src/rules/index.ts new file mode 100644 index 0000000000..2ed38d161b --- /dev/null +++ b/packages/eslint-plugin/src/rules/index.ts @@ -0,0 +1,7 @@ +/* eslint-disable @typescript-eslint/no-var-requires*/ +import type { ESLint } from "eslint"; + +export default { + "my-first-rule": require("./my-first-rule").default, + "deprecated-imports": require("./deprecated-imports").default, +} as ESLint.Plugin["rules"]; diff --git a/packages/eslint-plugin/src/rules/my-first-rule.ts b/packages/eslint-plugin/src/rules/my-first-rule.ts new file mode 100644 index 0000000000..965216f601 --- /dev/null +++ b/packages/eslint-plugin/src/rules/my-first-rule.ts @@ -0,0 +1,23 @@ +import type { Rule } from "eslint"; + +const rule: Rule.RuleModule = { + meta: { + docs: { + description: "This rule is run on typescript!", + }, + }, + create: (context) => { + return { + VariableDeclarator: (node) => { + if (node.id.type === "Identifier" && node.id.name !== "bla") { + context.report({ + node, + message: 'All variabled should be named "bla"!', + }); + } + }, + }; + }, +}; + +export default rule; diff --git a/yarn.lock b/yarn.lock index 154d36293a..a26e89f6ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2157,6 +2157,16 @@ resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.6.tgz#5f44823a78335355f00f1687cfc4f1dafa3eca08" integrity sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA== +"@next/env@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.2.0.tgz#17ce2d9f5532b677829840037e06f208b7eed66b" + integrity sha512-/FCkDpL/8SodJEXvx/DYNlOD5ijTtkozf4PPulYPtkPOJaMPpBSOkzmsta4fnrnbdH6eZjbwbiXFdr6gSQCV4w== + +"@next/env@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.2.1.tgz#083cc88469931fc3dc32bb633623321c29971a09" + integrity sha512-lz3TJKIvbdGRUsUr/+h3vy7XvBNGTGzHwhurk5AtqrABj4Zyo70xbshcI7YQTNUK4x9OA/E+SOcXvVx0DHmFRw== + "@next/eslint-plugin-next@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.1.6.tgz#dde3f98831f15923b25244588d924c716956292e" @@ -2169,61 +2179,191 @@ resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.6.tgz#79a35349b98f2f8c038ab6261aa9cd0d121c03f9" integrity sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ== +"@next/swc-android-arm-eabi@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.0.tgz#f116756e668b267de84b76f068d267a12f18eb22" + integrity sha512-hbneH8DNRB2x0Nf5fPCYoL8a0osvdTCe4pvOc9Rv5CpDsoOlf8BWBs2OWpeP0U2BktGvIsuUhmISmdYYGyrvTw== + +"@next/swc-android-arm-eabi@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.2.1.tgz#26a4363bd3857b934e7ad63aa1647d83b380ce1f" + integrity sha512-Gk7fvo1McA9gues9hixoeoxKnvvUusW0P+fya4ZAU3us+bQm1EqSoDrnOrUsdsgwIPQ3HobOJPY5C3xvKOl/tA== + "@next/swc-android-arm64@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.6.tgz#ec08ea61794f8752c8ebcacbed0aafc5b9407456" integrity sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew== +"@next/swc-android-arm64@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.2.0.tgz#cbd9e329cef386271d4e746c08416b5d69342c24" + integrity sha512-1eEk91JHjczcJomxJ8X0XaUeNcp5Lx1U2Ic7j15ouJ83oRX+3GIslOuabW2oPkSgXbHkThMClhirKpvG98kwZg== + +"@next/swc-android-arm64@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.2.1.tgz#28c7e964208e80d4b3ff791f323fbe425eae26fe" + integrity sha512-J+QwWRm2+bOtacZFahoplX3dCYGDpou86VjfcE+M5/E0UCtBmZ6JvItyV4scK8wSKHQQUWq8DmOEm/C0lhsSRQ== + "@next/swc-darwin-arm64@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.6.tgz#d1053805615fd0706e9b1667893a72271cd87119" integrity sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw== +"@next/swc-darwin-arm64@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.0.tgz#3473889157ba70b30ccdd4f59c46232d841744e2" + integrity sha512-x5U5gJd7ZvrEtTFnBld9O2bUlX8opu7mIQUqRzj7KeWzBwPhrIzTTsQXAiNqsaMuaRPvyHBVW/5d/6g6+89Y8g== + +"@next/swc-darwin-arm64@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.2.1.tgz#ae68b105956c985214219d4f676b2e57c882d5ae" + integrity sha512-teSfpKHdHQER4FVVCdvS0fHff35Gh4LB2DZ2eNAateIluP2Gnl+tT881MeM4Knvl2Mvm3Z3vtSJNthVoveJnMA== + "@next/swc-darwin-x64@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.6.tgz#2d1b926a22f4c5230d5b311f9c56cfdcc406afec" integrity sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg== +"@next/swc-darwin-x64@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.0.tgz#b25198c3ef4c906000af49e4787a757965f760bb" + integrity sha512-iwMNFsrAPjfedjKDv9AXPAV16PWIomP3qw/FfPaxkDVRbUls7BNdofBLzkQmqxqWh93WrawLwaqyXpJuAaiwJA== + +"@next/swc-darwin-x64@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.2.1.tgz#27da7988d01847b642b8d5c274f14bd82439fbb0" + integrity sha512-flA1H+9krrINtdWoXBzeESkdIV34OKX0+Lnqd90J1nsERTXntYy6CNOMxMtv1otAcnFy7EHYJQIL8URuu/2XXg== + +"@next/swc-freebsd-x64@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.0.tgz#78e2213f8b703be0fef23a49507779b4a9842929" + integrity sha512-gRiAw8g3Akf6niTDLEm1Emfa7jXDjvaAj/crDO8hKASKA4Y1fS4kbi/tyWw5VtoFI4mUzRmCPmZ8eL0tBSG58A== + +"@next/swc-freebsd-x64@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.2.1.tgz#0b4cd5c1707218cac86a7a58e116c74998da6286" + integrity sha512-SkAjp7B7aBxAsRVMZGiAp/qMkh65PLzYuLBTsBSu+4fxFuKF7MAEgaIUhvC8zzD58A+Y9yrY/3813bhtrwkcuA== + "@next/swc-linux-arm-gnueabihf@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.6.tgz#c021918d2a94a17f823106a5e069335b8a19724f" integrity sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw== +"@next/swc-linux-arm-gnueabihf@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.0.tgz#80a4baf0ba699357e7420e2dea998908dcef5055" + integrity sha512-/TJZkxaIpeEwnXh6A40trgwd40C5+LJroLUOEQwMOJdavLl62PjCA6dGl1pgooWLCIb5YdBQ0EG4ylzvLwS2+Q== + +"@next/swc-linux-arm-gnueabihf@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.2.1.tgz#3b93a18f1264a88985bc3a01e0067aa1afe0ab72" + integrity sha512-V7ov2LXrLWuYVH/syzrzpmwWumg5rCh0siwOPNCRzVkrpgP8WoIRNdeZ/NQIj0ng+kq7gDF1jib583Lk0wbDeQ== + "@next/swc-linux-arm64-gnu@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.6.tgz#ac55c07bfabde378dfa0ce2b8fc1c3b2897e81ae" integrity sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ== +"@next/swc-linux-arm64-gnu@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.0.tgz#134a42ddea804d6bf04761607f774432c3126de6" + integrity sha512-++WAB4ElXCSOKG9H8r4ENF8EaV+w0QkrpjehmryFkQXmt5juVXz+nKDVlCRMwJU7A1O0Mie82XyEoOrf6Np1pA== + +"@next/swc-linux-arm64-gnu@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.2.1.tgz#9887a772f96680afa440ac3e6f716fd20d7f4178" + integrity sha512-HlnDQD3r4YqCj2gu6uo86oEM0ixBsyKLaPcZcGwWAD5mFG5R4zzTZG7BO2wJkGWmkzijHluE14dlTmfzc8jdEQ== + "@next/swc-linux-arm64-musl@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.6.tgz#e429f826279894be9096be6bec13e75e3d6bd671" integrity sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ== +"@next/swc-linux-arm64-musl@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.0.tgz#c781ac642ad35e0578d8a8d19c638b0f31c1a334" + integrity sha512-XrqkHi/VglEn5zs2CYK6ofJGQySrd+Lr4YdmfJ7IhsCnMKkQY1ma9Hv5THwhZVof3e+6oFHrQ9bWrw9K4WTjFA== + +"@next/swc-linux-arm64-musl@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.2.1.tgz#7ed5981b7afd3d9c4678ff36e1dd7f06a5f0c3d6" + integrity sha512-P8AkWd4RHbuF24ol3jk2akXpntcDI0gv5uD7eMpAOXb8W2A6y/sv0tKNSGUV3efSutOyu23jNn2EiTNxHgU4NQ== + "@next/swc-linux-x64-gnu@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.6.tgz#1f276c0784a5ca599bfa34b2fcc0b38f3a738e08" integrity sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ== +"@next/swc-linux-x64-gnu@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.0.tgz#0e2235a59429eadd40ac8880aec18acdbc172a31" + integrity sha512-MyhHbAKVjpn065WzRbqpLu2krj4kHLi6RITQdD1ee+uxq9r2yg5Qe02l24NxKW+1/lkmpusl4Y5Lks7rBiJn4w== + +"@next/swc-linux-x64-gnu@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.2.1.tgz#0bb3e5162b189cb4d88761ff1781896781c7bd65" + integrity sha512-ZbsM+rIMqK6xi3lovspzPJoIPre3LglKrCXKLkln7rD0uiymzfLhS2VCj8u4qRynz22iAzuI4mJNpZa3AsJFrA== + "@next/swc-linux-x64-musl@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.6.tgz#1d9933dd6ba303dcfd8a2acd6ac7c27ed41e2eea" integrity sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag== +"@next/swc-linux-x64-musl@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.0.tgz#b0a10db0d9e16f079429588a58f71fa3c3d46178" + integrity sha512-Tz1tJZ5egE0S/UqCd5V6ZPJsdSzv/8aa7FkwFmIJ9neLS8/00za+OY5pq470iZQbPrkTwpKzmfTTIPRVD5iqDg== + +"@next/swc-linux-x64-musl@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.2.1.tgz#64e983e38a5e86bc613bfc46e0b92a1787ba5392" + integrity sha512-JeATguMe37bviPwkIUjO7T3kcefMBQwJFLhkFTaJYGmPm12EsW1FtKcg87AI87xdGvfrHQKlM3phNaG/dkneTQ== + "@next/swc-win32-arm64-msvc@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.6.tgz#2ef9837f12ca652b1783d72ecb86208906042f02" integrity sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g== +"@next/swc-win32-arm64-msvc@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.0.tgz#3063f850c9db7b774c69e9be74ad59986cf6fc34" + integrity sha512-0iRO/CPMCdCYUzuH6wXLnsfJX1ykBX4emOOvH0qIgtiZM0nVYbF8lkEyY2ph4XcsurpinS+ziWuYCXVqrOSqiw== + +"@next/swc-win32-arm64-msvc@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.2.1.tgz#2394b05230f0011a01010524e25d8f4ec71e27e1" + integrity sha512-8dal/MdrVshDKYBtloJw/RhJx140KUoRRYoRfpJ9oAdP8UXBdR0haKfg5EdOy98t8Q76apArxPsK7DfwoR1f3w== + "@next/swc-win32-ia32-msvc@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.6.tgz#74003d0aa1c59dfa56cb15481a5c607cbc0027b9" integrity sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA== +"@next/swc-win32-ia32-msvc@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.0.tgz#001bbadf3d2cf006c4991f728d1d23e4d5c0e7cc" + integrity sha512-8A26RJVcJHwIKm8xo/qk2ePRquJ6WCI2keV2qOW/Qm+ZXrPXHMIWPYABae/nKN243YFBNyPiHytjX37VrcpUhg== + +"@next/swc-win32-ia32-msvc@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.2.1.tgz#90acd18e63e7620992ee3f7d3dec80ccc7120f9e" + integrity sha512-uSAoOBpCp4oxVD9gTY1f27hr9xNLEOCglxZPH1+FonHpM5n9Sp4H01uQHWE/Y26iHmJeUJAWxtRxEYylnO4U9A== + "@next/swc-win32-x64-msvc@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz#a350caf42975e7197b24b495b8d764eec7e6a36e" integrity sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA== +"@next/swc-win32-x64-msvc@12.2.0": + version "12.2.0" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.0.tgz#9f66664f9122ca555b96a5f2fc6e2af677bf801b" + integrity sha512-OI14ozFLThEV3ey6jE47zrzSTV/6eIMsvbwozo+XfdWqOPwQ7X00YkRx4GVMKMC0rM44oGS2gmwMKYpe4EblnA== + +"@next/swc-win32-x64-msvc@12.2.1": + version "12.2.1" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.1.tgz#f3b186c8f7278656c7690a64f362d0d5b1d738af" + integrity sha512-gx4aLMAZAVjtShiCrUSszoxnzBWJWf09Lkey6mcc0jFZjbz4xkyDbp53V229DtOYTUL4t0IZJ0I7+ftQ5CYIjg== + "@node-redis/client@^1.0.1": version "1.0.6" resolved "https://registry.yarnpkg.com/@node-redis/client/-/client-1.0.6.tgz#de8bfe6cfdc5781f0021ce9d18a11c821c948d9d" @@ -3209,6 +3349,13 @@ resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-1.29.0.tgz#f41e46aee711d1eabcb3bbc77376016a250ec962" integrity sha512-OsUxk0VLlum8E2d6onlEdKuQcvLMs7qTrOXCnl/BGV3fAm65qr6h3e1IZ5AX4lgUlPRrzRcddSOA5DvkKKYLvg== +"@swc/helpers@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.2.tgz#ed1f6997ffbc22396665d9ba74e2a5c0a2d782f8" + integrity sha512-556Az0VX7WR6UdoTn4htt/l3zPQ7bsQWK+HqdG4swV7beUCxo/BqmvbOpUkTIm/9ih86LIf1qsUnywNL3obGHw== + dependencies: + tslib "^2.4.0" + "@szmarczak/http-timer@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" @@ -3461,6 +3608,14 @@ dependencies: "@types/node" "*" +"@types/eslint@^8.4.5": + version "8.4.5" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.5.tgz#acdfb7dd36b91cc5d812d7c093811a8f3d9b31e4" + integrity sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + "@types/estree-jsx@^0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-0.0.1.tgz#c36d7a1afeb47a95a8ee0b7bc8bc705db38f919d" @@ -3605,7 +3760,7 @@ resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== -"@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -3987,6 +4142,14 @@ "@typescript-eslint/types" "5.25.0" "@typescript-eslint/visitor-keys" "5.25.0" +"@typescript-eslint/scope-manager@5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.5.tgz#7f90b9d6800552c856a5f3644f5e55dd1469d964" + integrity sha512-NJ6F+YHHFT/30isRe2UTmIGGAiXKckCyMnIV58cE3JkHmaD6e5zyEYm5hBDv0Wbin+IC0T1FWJpD3YqHUG/Ydg== + dependencies: + "@typescript-eslint/types" "5.30.5" + "@typescript-eslint/visitor-keys" "5.30.5" + "@typescript-eslint/type-utils@5.25.0": version "5.25.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.25.0.tgz#5750d26a5db4c4d68d511611e0ada04e56f613bc" @@ -4006,6 +4169,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.25.0.tgz#dee51b1855788b24a2eceeae54e4adb89b088dd8" integrity sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA== +"@typescript-eslint/types@5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.5.tgz#36a0c05a72af3623cdf9ee8b81ea743b7de75a98" + integrity sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw== + "@typescript-eslint/typescript-estree@5.24.0": version "5.24.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.24.0.tgz#30b9cbc1af475b9e02aca34cfe9ba9e1bb820143" @@ -4032,6 +4200,19 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.5.tgz#c520e4eba20551c4ec76af8d344a42eb6c9767bb" + integrity sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ== + dependencies: + "@typescript-eslint/types" "5.30.5" + "@typescript-eslint/visitor-keys" "5.30.5" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/utils@5.25.0": version "5.25.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.25.0.tgz#272751fd737733294b4ab95e16c7f2d4a75c2049" @@ -4044,6 +4225,18 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" +"@typescript-eslint/utils@^5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.5.tgz#3999cbd06baad31b9e60d084f20714d1b2776765" + integrity sha512-o4SSUH9IkuA7AYIfAvatldovurqTAHrfzPApOZvdUq01hHojZojCFXx06D/aFpKCgWbMPRdJBWAC3sWp3itwTA== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.30.5" + "@typescript-eslint/types" "5.30.5" + "@typescript-eslint/typescript-estree" "5.30.5" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + "@typescript-eslint/visitor-keys@5.24.0": version "5.24.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.24.0.tgz#bb3e9a788ccd50c53e03557e4e203599880c3123" @@ -4060,6 +4253,14 @@ "@typescript-eslint/types" "5.25.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.5.tgz#d4bb969202019d5d5d849a0aaedc7370cc044b14" + integrity sha512-D+xtGo9HUMELzWIUqcQc0p2PO4NyvTrgIOK/VnSH083+8sq0tiLozNRKuLarwHYGRuA6TVBQSuuLwJUDWd3aaA== + dependencies: + "@typescript-eslint/types" "5.30.5" + eslint-visitor-keys "^3.3.0" + "@vercel/edge-functions-ui@^0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@vercel/edge-functions-ui/-/edge-functions-ui-0.2.1.tgz#8af0a5d8d4d544364fa79c4d075564e3a5bd972e" @@ -12365,6 +12566,28 @@ next-auth@^4.5.0: preact-render-to-string "^5.1.19" uuid "^8.3.2" +next-auth@^4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/next-auth/-/next-auth-4.9.0.tgz#0d8cabcb22a976744131a2e68d5f08756f322593" + integrity sha512-/4S5dFeyNg2nXlD7g/Sh5A4WZWnUMDpEf8x/x+gzmAf5cAY2SjDM6sLk9u4XRmsndsxQpIMWDw03sUTAD+Yzog== + dependencies: + "@babel/runtime" "^7.16.3" + "@panva/hkdf" "^1.0.1" + cookie "^0.4.1" + jose "^4.3.7" + oauth "^0.9.15" + openid-client "^5.1.0" + preact "^10.6.3" + preact-render-to-string "^5.1.19" + uuid "^8.3.2" + +next-axiom@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/next-axiom/-/next-axiom-0.10.0.tgz#7cd2f52d9691cf9f7984ed325d58a6f93912eed3" + integrity sha512-QrOUqNmJ20StiR0b+/HMiW0o0w442DjfaOg4yH3hNJmAX0c9Afy6hiZ/j9D67XmqlpXeg83ESx89rt83u4/giA== + dependencies: + whatwg-fetch "^3.6.2" + next-collect@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/next-collect/-/next-collect-0.1.0.tgz#54a52e07ee083050690df9400a280d99ca975c80" @@ -12468,6 +12691,58 @@ next@12.1.6, next@^12.1.6: "@next/swc-win32-ia32-msvc" "12.1.6" "@next/swc-win32-x64-msvc" "12.1.6" +next@12.2.0: + version "12.2.0" + resolved "https://registry.yarnpkg.com/next/-/next-12.2.0.tgz#aef47cd96b602bc1307d1dcf9a1ee3e753845544" + integrity sha512-B4j7D3SHYopLYx6/Ark0fenwIar9tEaZZFAaxmKjgcMMexhVJzB3jt7X+6wcdXPPMeUD6r09weUtnDpjox/vIA== + dependencies: + "@next/env" "12.2.0" + "@swc/helpers" "0.4.2" + caniuse-lite "^1.0.30001332" + postcss "8.4.5" + styled-jsx "5.0.2" + use-sync-external-store "1.1.0" + optionalDependencies: + "@next/swc-android-arm-eabi" "12.2.0" + "@next/swc-android-arm64" "12.2.0" + "@next/swc-darwin-arm64" "12.2.0" + "@next/swc-darwin-x64" "12.2.0" + "@next/swc-freebsd-x64" "12.2.0" + "@next/swc-linux-arm-gnueabihf" "12.2.0" + "@next/swc-linux-arm64-gnu" "12.2.0" + "@next/swc-linux-arm64-musl" "12.2.0" + "@next/swc-linux-x64-gnu" "12.2.0" + "@next/swc-linux-x64-musl" "12.2.0" + "@next/swc-win32-arm64-msvc" "12.2.0" + "@next/swc-win32-ia32-msvc" "12.2.0" + "@next/swc-win32-x64-msvc" "12.2.0" + +next@^12.2.0: + version "12.2.1" + resolved "https://registry.yarnpkg.com/next/-/next-12.2.1.tgz#b487dc598ef1373a1b1275d68531a7088fe5653d" + integrity sha512-090KB5CZRlLG/GWxb8tA1ZFwqL8OfpUtH4mXA7POuisa6NL5ihiAZhfk5nRBdPHvkXuSt0n7zQaVym6SrT3Wiw== + dependencies: + "@next/env" "12.2.1" + "@swc/helpers" "0.4.2" + caniuse-lite "^1.0.30001332" + postcss "8.4.5" + styled-jsx "5.0.2" + use-sync-external-store "1.1.0" + optionalDependencies: + "@next/swc-android-arm-eabi" "12.2.1" + "@next/swc-android-arm64" "12.2.1" + "@next/swc-darwin-arm64" "12.2.1" + "@next/swc-darwin-x64" "12.2.1" + "@next/swc-freebsd-x64" "12.2.1" + "@next/swc-linux-arm-gnueabihf" "12.2.1" + "@next/swc-linux-arm64-gnu" "12.2.1" + "@next/swc-linux-arm64-musl" "12.2.1" + "@next/swc-linux-x64-gnu" "12.2.1" + "@next/swc-linux-x64-musl" "12.2.1" + "@next/swc-win32-arm64-msvc" "12.2.1" + "@next/swc-win32-ia32-msvc" "12.2.1" + "@next/swc-win32-x64-msvc" "12.2.1" + nextra-theme-docs@^1.2.2: version "1.2.6" resolved "https://registry.yarnpkg.com/nextra-theme-docs/-/nextra-theme-docs-1.2.6.tgz#e6d5d8788534ae62d589db96df65f1a6e8b60bcc" @@ -16282,6 +16557,11 @@ tslib@^1.0.0, tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tslog@^3.2.1: version "3.3.3" resolved "https://registry.yarnpkg.com/tslog/-/tslog-3.3.3.tgz#751a469e0d36841bd7e03676c27e53e7ffe9bc3d" @@ -16827,6 +17107,11 @@ use-sidecar@^1.0.1: detect-node-es "^1.1.0" tslib "^1.9.3" +use-sync-external-store@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.1.0.tgz#3343c3fe7f7e404db70f8c687adf5c1652d34e82" + integrity sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ== + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -17372,7 +17657,7 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@^3.4.1: +whatwg-fetch@^3.4.1, whatwg-fetch@^3.6.2: version "3.6.2" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==